OLD | NEW |
1 //===- subzero/src/IceTargetLoweringMIPS32.h - MIPS32 lowering ---*- C++-*-===// | 1 //===- subzero/src/IceTargetLoweringMIPS32.h - MIPS32 lowering ---*- C++-*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 | 170 |
171 void _br(CfgNode *TargetTrue, CfgNode *TargetFalse, Operand *Src0, | 171 void _br(CfgNode *TargetTrue, CfgNode *TargetFalse, Operand *Src0, |
172 CondMIPS32::Cond Condition) { | 172 CondMIPS32::Cond Condition) { |
173 Context.insert<InstMIPS32Br>(TargetTrue, TargetFalse, Src0, Condition); | 173 Context.insert<InstMIPS32Br>(TargetTrue, TargetFalse, Src0, Condition); |
174 } | 174 } |
175 | 175 |
176 void _ret(Variable *RA, Variable *Src0 = nullptr) { | 176 void _ret(Variable *RA, Variable *Src0 = nullptr) { |
177 Context.insert<InstMIPS32Ret>(RA, Src0); | 177 Context.insert<InstMIPS32Ret>(RA, Src0); |
178 } | 178 } |
179 | 179 |
| 180 void _add_d(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 181 Context.insert<InstMIPS32Add_d>(Dest, Src0, Src1); |
| 182 } |
| 183 |
| 184 void _add_s(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 185 Context.insert<InstMIPS32Add_s>(Dest, Src0, Src1); |
| 186 } |
| 187 |
180 void _addiu(Variable *Dest, Variable *Src, uint32_t Imm) { | 188 void _addiu(Variable *Dest, Variable *Src, uint32_t Imm) { |
181 Context.insert<InstMIPS32Addiu>(Dest, Src, Imm); | 189 Context.insert<InstMIPS32Addiu>(Dest, Src, Imm); |
182 } | 190 } |
183 | 191 |
184 void _div(Variable *Dest, Variable *Src0, Variable *Src1) { | 192 void _div(Variable *Dest, Variable *Src0, Variable *Src1) { |
185 Context.insert<InstMIPS32Div>(Dest, Src0, Src1); | 193 Context.insert<InstMIPS32Div>(Dest, Src0, Src1); |
186 } | 194 } |
187 | 195 |
| 196 void _div_d(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 197 Context.insert<InstMIPS32Div_d>(Dest, Src0, Src1); |
| 198 } |
| 199 |
| 200 void _div_s(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 201 Context.insert<InstMIPS32Div_s>(Dest, Src0, Src1); |
| 202 } |
| 203 |
188 void _divu(Variable *Dest, Variable *Src0, Variable *Src1) { | 204 void _divu(Variable *Dest, Variable *Src0, Variable *Src1) { |
189 Context.insert<InstMIPS32Divu>(Dest, Src0, Src1); | 205 Context.insert<InstMIPS32Divu>(Dest, Src0, Src1); |
190 } | 206 } |
191 | 207 |
192 void _lui(Variable *Dest, uint32_t Imm) { | 208 void _lui(Variable *Dest, uint32_t Imm) { |
193 Context.insert<InstMIPS32Lui>(Dest, Imm); | 209 Context.insert<InstMIPS32Lui>(Dest, Imm); |
194 } | 210 } |
195 | 211 |
196 void _mov(Variable *Dest, Operand *Src0) { | 212 void _mov(Variable *Dest, Operand *Src0) { |
197 assert(Dest != nullptr); | 213 assert(Dest != nullptr); |
198 // Variable* Src0_ = llvm::dyn_cast<Variable>(Src0); | 214 // Variable* Src0_ = llvm::dyn_cast<Variable>(Src0); |
199 if (llvm::isa<ConstantRelocatable>(Src0)) { | 215 if (llvm::isa<ConstantRelocatable>(Src0)) { |
200 Context.insert<InstMIPS32La>(Dest, Src0); | 216 Context.insert<InstMIPS32La>(Dest, Src0); |
201 } else { | 217 } else { |
202 auto *Instr = Context.insert<InstMIPS32Mov>(Dest, Src0); | 218 auto *Instr = Context.insert<InstMIPS32Mov>(Dest, Src0); |
203 if (Instr->isMultiDest()) { | 219 if (Instr->isMultiDest()) { |
204 // If Instr is multi-dest, then Dest must be a Variable64On32. We add a | 220 // If Instr is multi-dest, then Dest must be a Variable64On32. We add a |
205 // fake-def for Instr.DestHi here. | 221 // fake-def for Instr.DestHi here. |
206 assert(llvm::isa<Variable64On32>(Dest)); | 222 assert(llvm::isa<Variable64On32>(Dest)); |
207 Context.insert<InstFakeDef>(Instr->getDestHi()); | 223 Context.insert<InstFakeDef>(Instr->getDestHi()); |
208 } | 224 } |
209 } | 225 } |
210 } | 226 } |
211 | 227 |
| 228 void _mov_d(Variable *Dest, Variable *Src) { |
| 229 Context.insert<InstMIPS32Mov_d>(Dest, Src); |
| 230 } |
| 231 |
| 232 void _mov_s(Variable *Dest, Variable *Src) { |
| 233 Context.insert<InstMIPS32Mov_s>(Dest, Src); |
| 234 } |
| 235 |
| 236 void _mfc1(Variable *Dest, Variable *Src) { |
| 237 Context.insert<InstMIPS32Mfc1>(Dest, Src); |
| 238 } |
| 239 |
212 void _mfhi(Variable *Dest, Operand *Src) { | 240 void _mfhi(Variable *Dest, Operand *Src) { |
213 Context.insert<InstMIPS32Mfhi>(Dest, Src); | 241 Context.insert<InstMIPS32Mfhi>(Dest, Src); |
214 } | 242 } |
215 | 243 |
216 void _mflo(Variable *Dest, Operand *Src) { | 244 void _mflo(Variable *Dest, Operand *Src) { |
217 Context.insert<InstMIPS32Mflo>(Dest, Src); | 245 Context.insert<InstMIPS32Mflo>(Dest, Src); |
218 } | 246 } |
219 | 247 |
| 248 void _mtc1(Variable *Dest, Variable *Src) { |
| 249 Context.insert<InstMIPS32Mtc1>(Dest, Src); |
| 250 } |
| 251 |
220 void _mthi(Variable *Dest, Operand *Src) { | 252 void _mthi(Variable *Dest, Operand *Src) { |
221 Context.insert<InstMIPS32Mthi>(Dest, Src); | 253 Context.insert<InstMIPS32Mthi>(Dest, Src); |
222 } | 254 } |
223 | 255 |
224 void _mtlo(Variable *Dest, Operand *Src) { | 256 void _mtlo(Variable *Dest, Operand *Src) { |
225 Context.insert<InstMIPS32Mtlo>(Dest, Src); | 257 Context.insert<InstMIPS32Mtlo>(Dest, Src); |
226 } | 258 } |
227 | 259 |
228 void _mul(Variable *Dest, Variable *Src0, Variable *Src1) { | 260 void _mul(Variable *Dest, Variable *Src0, Variable *Src1) { |
229 Context.insert<InstMIPS32Mul>(Dest, Src0, Src1); | 261 Context.insert<InstMIPS32Mul>(Dest, Src0, Src1); |
230 } | 262 } |
231 | 263 |
| 264 void _mul_d(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 265 Context.insert<InstMIPS32Mul_d>(Dest, Src0, Src1); |
| 266 } |
| 267 |
| 268 void _mul_s(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 269 Context.insert<InstMIPS32Mul_s>(Dest, Src0, Src1); |
| 270 } |
| 271 |
232 void _mult(Variable *Dest, Variable *Src0, Variable *Src1) { | 272 void _mult(Variable *Dest, Variable *Src0, Variable *Src1) { |
233 Context.insert<InstMIPS32Mult>(Dest, Src0, Src1); | 273 Context.insert<InstMIPS32Mult>(Dest, Src0, Src1); |
234 } | 274 } |
235 | 275 |
236 void _multu(Variable *Dest, Variable *Src0, Variable *Src1) { | 276 void _multu(Variable *Dest, Variable *Src0, Variable *Src1) { |
237 Context.insert<InstMIPS32Multu>(Dest, Src0, Src1); | 277 Context.insert<InstMIPS32Multu>(Dest, Src0, Src1); |
238 } | 278 } |
239 | 279 |
240 void _or(Variable *Dest, Variable *Src0, Variable *Src1) { | 280 void _or(Variable *Dest, Variable *Src0, Variable *Src1) { |
241 Context.insert<InstMIPS32Or>(Dest, Src0, Src1); | 281 Context.insert<InstMIPS32Or>(Dest, Src0, Src1); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 } | 322 } |
283 | 323 |
284 void _srlv(Variable *Dest, Variable *Src0, Variable *Src1) { | 324 void _srlv(Variable *Dest, Variable *Src0, Variable *Src1) { |
285 Context.insert<InstMIPS32Srlv>(Dest, Src0, Src1); | 325 Context.insert<InstMIPS32Srlv>(Dest, Src0, Src1); |
286 } | 326 } |
287 | 327 |
288 void _sub(Variable *Dest, Variable *Src0, Variable *Src1) { | 328 void _sub(Variable *Dest, Variable *Src0, Variable *Src1) { |
289 Context.insert<InstMIPS32Sub>(Dest, Src0, Src1); | 329 Context.insert<InstMIPS32Sub>(Dest, Src0, Src1); |
290 } | 330 } |
291 | 331 |
| 332 void _sub_d(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 333 Context.insert<InstMIPS32Sub_d>(Dest, Src0, Src1); |
| 334 } |
| 335 |
| 336 void _sub_s(Variable *Dest, Variable *Src0, Variable *Src1) { |
| 337 Context.insert<InstMIPS32Sub_s>(Dest, Src0, Src1); |
| 338 } |
| 339 |
292 void _subu(Variable *Dest, Variable *Src0, Variable *Src1) { | 340 void _subu(Variable *Dest, Variable *Src0, Variable *Src1) { |
293 Context.insert<InstMIPS32Subu>(Dest, Src0, Src1); | 341 Context.insert<InstMIPS32Subu>(Dest, Src0, Src1); |
294 } | 342 } |
295 | 343 |
296 void _xor(Variable *Dest, Variable *Src0, Variable *Src1) { | 344 void _xor(Variable *Dest, Variable *Src0, Variable *Src1) { |
297 Context.insert<InstMIPS32Xor>(Dest, Src0, Src1); | 345 Context.insert<InstMIPS32Xor>(Dest, Src0, Src1); |
298 } | 346 } |
299 | 347 |
300 void _xori(Variable *Dest, Variable *Src, uint32_t Imm) { | 348 void _xori(Variable *Dest, Variable *Src, uint32_t Imm) { |
301 Context.insert<InstMIPS32Xori>(Dest, Src, Imm); | 349 Context.insert<InstMIPS32Xori>(Dest, Src, Imm); |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 explicit TargetHeaderMIPS32(GlobalContext *Ctx); | 553 explicit TargetHeaderMIPS32(GlobalContext *Ctx); |
506 | 554 |
507 private: | 555 private: |
508 ~TargetHeaderMIPS32() = default; | 556 ~TargetHeaderMIPS32() = default; |
509 }; | 557 }; |
510 | 558 |
511 } // end of namespace MIPS32 | 559 } // end of namespace MIPS32 |
512 } // end of namespace Ice | 560 } // end of namespace Ice |
513 | 561 |
514 #endif // SUBZERO_SRC_ICETARGETLOWERINGMIPS32_H | 562 #endif // SUBZERO_SRC_ICETARGETLOWERINGMIPS32_H |
OLD | NEW |