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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 | 167 |
168 Variable *copyToReg(Operand *Src, int32_t RegNum = Variable::NoRegister); | 168 Variable *copyToReg(Operand *Src, int32_t RegNum = Variable::NoRegister); |
169 | 169 |
170 // Returns a vector in a register with the given constant entries. | 170 // Returns a vector in a register with the given constant entries. |
171 Variable *makeVectorOfZeros(Type Ty, int32_t RegNum = Variable::NoRegister); | 171 Variable *makeVectorOfZeros(Type Ty, int32_t RegNum = Variable::NoRegister); |
172 Variable *makeVectorOfOnes(Type Ty, int32_t RegNum = Variable::NoRegister); | 172 Variable *makeVectorOfOnes(Type Ty, int32_t RegNum = Variable::NoRegister); |
173 Variable *makeVectorOfMinusOnes(Type Ty, | 173 Variable *makeVectorOfMinusOnes(Type Ty, |
174 int32_t RegNum = Variable::NoRegister); | 174 int32_t RegNum = Variable::NoRegister); |
175 Variable *makeVectorOfHighOrderBits(Type Ty, | 175 Variable *makeVectorOfHighOrderBits(Type Ty, |
176 int32_t RegNum = Variable::NoRegister); | 176 int32_t RegNum = Variable::NoRegister); |
| 177 Variable *makeVectorOfFabsMask(Type Ty, |
| 178 int32_t RegNum = Variable::NoRegister); |
177 | 179 |
178 // Return a memory operand corresponding to a stack allocated Variable. | 180 // Return a memory operand corresponding to a stack allocated Variable. |
179 OperandX8632Mem *getMemoryOperandForStackSlot(Type Ty, Variable *Slot, | 181 OperandX8632Mem *getMemoryOperandForStackSlot(Type Ty, Variable *Slot, |
180 uint32_t Offset = 0); | 182 uint32_t Offset = 0); |
181 | 183 |
182 void makeRandomRegisterPermutation( | 184 void makeRandomRegisterPermutation( |
183 llvm::SmallVectorImpl<int32_t> &Permutation, | 185 llvm::SmallVectorImpl<int32_t> &Permutation, |
184 const llvm::SmallBitVector &ExcludeRegisters) const override; | 186 const llvm::SmallBitVector &ExcludeRegisters) const override; |
185 | 187 |
186 // The following are helpers that insert lowered x86 instructions | 188 // The following are helpers that insert lowered x86 instructions |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 } | 389 } |
388 void _pshufd(Variable *Dest, Operand *Src0, Operand *Src1) { | 390 void _pshufd(Variable *Dest, Operand *Src0, Operand *Src1) { |
389 Context.insert(InstX8632Pshufd::create(Func, Dest, Src0, Src1)); | 391 Context.insert(InstX8632Pshufd::create(Func, Dest, Src0, Src1)); |
390 } | 392 } |
391 void _psll(Variable *Dest, Operand *Src0) { | 393 void _psll(Variable *Dest, Operand *Src0) { |
392 Context.insert(InstX8632Psll::create(Func, Dest, Src0)); | 394 Context.insert(InstX8632Psll::create(Func, Dest, Src0)); |
393 } | 395 } |
394 void _psra(Variable *Dest, Operand *Src0) { | 396 void _psra(Variable *Dest, Operand *Src0) { |
395 Context.insert(InstX8632Psra::create(Func, Dest, Src0)); | 397 Context.insert(InstX8632Psra::create(Func, Dest, Src0)); |
396 } | 398 } |
| 399 void _psrl(Variable *Dest, Operand *Src0) { |
| 400 Context.insert(InstX8632Psrl::create(Func, Dest, Src0)); |
| 401 } |
397 void _psub(Variable *Dest, Operand *Src0) { | 402 void _psub(Variable *Dest, Operand *Src0) { |
398 Context.insert(InstX8632Psub::create(Func, Dest, Src0)); | 403 Context.insert(InstX8632Psub::create(Func, Dest, Src0)); |
399 } | 404 } |
400 void _push(Variable *Src0) { | 405 void _push(Variable *Src0) { |
401 Context.insert(InstX8632Push::create(Func, Src0)); | 406 Context.insert(InstX8632Push::create(Func, Src0)); |
402 } | 407 } |
403 void _pxor(Variable *Dest, Operand *Src0) { | 408 void _pxor(Variable *Dest, Operand *Src0) { |
404 Context.insert(InstX8632Pxor::create(Func, Dest, Src0)); | 409 Context.insert(InstX8632Pxor::create(Func, Dest, Src0)); |
405 } | 410 } |
406 void _ret(Variable *Src0 = nullptr) { | 411 void _ret(Variable *Src0 = nullptr) { |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 }; | 524 }; |
520 | 525 |
521 template <> void ConstantInteger32::emit(GlobalContext *Ctx) const; | 526 template <> void ConstantInteger32::emit(GlobalContext *Ctx) const; |
522 template <> void ConstantInteger64::emit(GlobalContext *Ctx) const; | 527 template <> void ConstantInteger64::emit(GlobalContext *Ctx) const; |
523 template <> void ConstantFloat::emit(GlobalContext *Ctx) const; | 528 template <> void ConstantFloat::emit(GlobalContext *Ctx) const; |
524 template <> void ConstantDouble::emit(GlobalContext *Ctx) const; | 529 template <> void ConstantDouble::emit(GlobalContext *Ctx) const; |
525 | 530 |
526 } // end of namespace Ice | 531 } // end of namespace Ice |
527 | 532 |
528 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H | 533 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_H |
OLD | NEW |