OLD | NEW |
1 //===- subzero/src/IceTargetLoweringX8632.h - x86-32 lowering ---*- C++ -*-===// | 1 //===- subzero/src/IceTargetLoweringX8632.h - x86-32 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 // This file declares the TargetLoweringX8632 class, which | 10 // This file declares the TargetLoweringX8632 class, which |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 } | 223 } |
224 void _bsf(Variable *Dest, Operand *Src0) { | 224 void _bsf(Variable *Dest, Operand *Src0) { |
225 Context.insert(InstX8632Bsf::create(Func, Dest, Src0)); | 225 Context.insert(InstX8632Bsf::create(Func, Dest, Src0)); |
226 } | 226 } |
227 void _bsr(Variable *Dest, Operand *Src0) { | 227 void _bsr(Variable *Dest, Operand *Src0) { |
228 Context.insert(InstX8632Bsr::create(Func, Dest, Src0)); | 228 Context.insert(InstX8632Bsr::create(Func, Dest, Src0)); |
229 } | 229 } |
230 void _bswap(Variable *SrcDest) { | 230 void _bswap(Variable *SrcDest) { |
231 Context.insert(InstX8632Bswap::create(Func, SrcDest)); | 231 Context.insert(InstX8632Bswap::create(Func, SrcDest)); |
232 } | 232 } |
| 233 void |
| 234 _bundle_lock(InstBundleLock::Option BundleOption = InstBundleLock::Opt_None) { |
| 235 Context.insert(InstBundleLock::create(Func, BundleOption)); |
| 236 } |
| 237 void _bundle_unlock() { Context.insert(InstBundleUnlock::create(Func)); } |
233 void _cbwdq(Variable *Dest, Operand *Src0) { | 238 void _cbwdq(Variable *Dest, Operand *Src0) { |
234 Context.insert(InstX8632Cbwdq::create(Func, Dest, Src0)); | 239 Context.insert(InstX8632Cbwdq::create(Func, Dest, Src0)); |
235 } | 240 } |
236 void _cmov(Variable *Dest, Operand *Src0, CondX86::BrCond Condition) { | 241 void _cmov(Variable *Dest, Operand *Src0, CondX86::BrCond Condition) { |
237 Context.insert(InstX8632Cmov::create(Func, Dest, Src0, Condition)); | 242 Context.insert(InstX8632Cmov::create(Func, Dest, Src0, Condition)); |
238 } | 243 } |
239 void _cmp(Operand *Src0, Operand *Src1) { | 244 void _cmp(Operand *Src0, Operand *Src1) { |
240 Context.insert(InstX8632Icmp::create(Func, Src0, Src1)); | 245 Context.insert(InstX8632Icmp::create(Func, Src0, Src1)); |
241 } | 246 } |
242 void _cmpps(Variable *Dest, Operand *Src0, CondX86::CmppsCond Condition) { | 247 void _cmpps(Variable *Dest, Operand *Src0, CondX86::CmppsCond Condition) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 } | 284 } |
280 void _idiv(Variable *Dest, Operand *Src0, Operand *Src1) { | 285 void _idiv(Variable *Dest, Operand *Src0, Operand *Src1) { |
281 Context.insert(InstX8632Idiv::create(Func, Dest, Src0, Src1)); | 286 Context.insert(InstX8632Idiv::create(Func, Dest, Src0, Src1)); |
282 } | 287 } |
283 void _imul(Variable *Dest, Operand *Src0) { | 288 void _imul(Variable *Dest, Operand *Src0) { |
284 Context.insert(InstX8632Imul::create(Func, Dest, Src0)); | 289 Context.insert(InstX8632Imul::create(Func, Dest, Src0)); |
285 } | 290 } |
286 void _insertps(Variable *Dest, Operand *Src0, Operand *Src1) { | 291 void _insertps(Variable *Dest, Operand *Src0, Operand *Src1) { |
287 Context.insert(InstX8632Insertps::create(Func, Dest, Src0, Src1)); | 292 Context.insert(InstX8632Insertps::create(Func, Dest, Src0, Src1)); |
288 } | 293 } |
| 294 void _jmp(Operand *Target) { |
| 295 Context.insert(InstX8632Jmp::create(Func, Target)); |
| 296 } |
289 void _lea(Variable *Dest, Operand *Src0) { | 297 void _lea(Variable *Dest, Operand *Src0) { |
290 Context.insert(InstX8632Lea::create(Func, Dest, Src0)); | 298 Context.insert(InstX8632Lea::create(Func, Dest, Src0)); |
291 } | 299 } |
292 void _mfence() { Context.insert(InstX8632Mfence::create(Func)); } | 300 void _mfence() { Context.insert(InstX8632Mfence::create(Func)); } |
293 // If Dest=nullptr is passed in, then a new variable is created, | 301 // If Dest=nullptr is passed in, then a new variable is created, |
294 // marked as infinite register allocation weight, and returned | 302 // marked as infinite register allocation weight, and returned |
295 // through the in/out Dest argument. | 303 // through the in/out Dest argument. |
296 void _mov(Variable *&Dest, Operand *Src0, | 304 void _mov(Variable *&Dest, Operand *Src0, |
297 int32_t RegNum = Variable::NoRegister) { | 305 int32_t RegNum = Variable::NoRegister) { |
298 if (Dest == nullptr) | 306 if (Dest == nullptr) |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 }; | 518 }; |
511 | 519 |
512 template <> void ConstantInteger32::emit(GlobalContext *Ctx) const; | 520 template <> void ConstantInteger32::emit(GlobalContext *Ctx) const; |
513 template <> void ConstantInteger64::emit(GlobalContext *Ctx) const; | 521 template <> void ConstantInteger64::emit(GlobalContext *Ctx) const; |
514 template <> void ConstantFloat::emit(GlobalContext *Ctx) const; | 522 template <> void ConstantFloat::emit(GlobalContext *Ctx) const; |
515 template <> void ConstantDouble::emit(GlobalContext *Ctx) const; | 523 template <> void ConstantDouble::emit(GlobalContext *Ctx) const; |
516 | 524 |
517 } // end of namespace Ice | 525 } // end of namespace Ice |
518 | 526 |
519 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H | 527 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H |
OLD | NEW |