| OLD | NEW |
| 1 //===- subzero/src/IceTargetLoweringX86Base.h - x86 lowering ----*- C++ -*-===// | 1 //===- subzero/src/IceTargetLoweringX86Base.h - x86 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 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 | 219 |
| 220 using LowerBinOp = void (TargetX86Base::*)(Variable *, Operand *); | 220 using LowerBinOp = void (TargetX86Base::*)(Variable *, Operand *); |
| 221 void expandAtomicRMWAsCmpxchg(LowerBinOp op_lo, LowerBinOp op_hi, | 221 void expandAtomicRMWAsCmpxchg(LowerBinOp op_lo, LowerBinOp op_hi, |
| 222 Variable *Dest, Operand *Ptr, Operand *Val); | 222 Variable *Dest, Operand *Ptr, Operand *Val); |
| 223 | 223 |
| 224 void eliminateNextVectorSextInstruction(Variable *SignExtendedResult); | 224 void eliminateNextVectorSextInstruction(Variable *SignExtendedResult); |
| 225 | 225 |
| 226 void scalarizeArithmetic(InstArithmetic::OpKind K, Variable *Dest, | 226 void scalarizeArithmetic(InstArithmetic::OpKind K, Variable *Dest, |
| 227 Operand *Src0, Operand *Src1); | 227 Operand *Src0, Operand *Src1); |
| 228 | 228 |
| 229 /// Emit a fake use of esp to make sure esp stays alive for the entire |
| 230 /// function. Otherwise some esp adjustments get dead-code eliminated. |
| 231 void keepEspLiveAtExit() { |
| 232 Variable *esp = Func->getTarget()->getPhysicalRegister(getStackReg()); |
| 233 Context.insert(InstFakeUse::create(Func, esp)); |
| 234 } |
| 235 |
| 229 /// Operand legalization helpers. To deal with address mode constraints, the | 236 /// Operand legalization helpers. To deal with address mode constraints, the |
| 230 /// helpers will create a new Operand and emit instructions that guarantee | 237 /// helpers will create a new Operand and emit instructions that guarantee |
| 231 /// that the Operand kind is one of those indicated by the LegalMask (a | 238 /// that the Operand kind is one of those indicated by the LegalMask (a |
| 232 /// bitmask of allowed kinds). If the input Operand is known to already meet | 239 /// bitmask of allowed kinds). If the input Operand is known to already meet |
| 233 /// the constraints, it may be simply returned as the result, without creating | 240 /// the constraints, it may be simply returned as the result, without creating |
| 234 /// any new instructions or operands. | 241 /// any new instructions or operands. |
| 235 enum OperandLegalization { | 242 enum OperandLegalization { |
| 236 Legal_None = 0, | 243 Legal_None = 0, |
| 237 Legal_Reg = 1 << 0, // physical register, not stack location | 244 Legal_Reg = 1 << 0, // physical register, not stack location |
| 238 Legal_Imm = 1 << 1, | 245 Legal_Imm = 1 << 1, |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 lowerIcmp64(const InstIcmp *Icmp, const InstBr *Br); | 759 lowerIcmp64(const InstIcmp *Icmp, const InstBr *Br); |
| 753 | 760 |
| 754 BoolFolding FoldingInfo; | 761 BoolFolding FoldingInfo; |
| 755 }; | 762 }; |
| 756 } // end of namespace X86Internal | 763 } // end of namespace X86Internal |
| 757 } // end of namespace Ice | 764 } // end of namespace Ice |
| 758 | 765 |
| 759 #include "IceTargetLoweringX86BaseImpl.h" | 766 #include "IceTargetLoweringX86BaseImpl.h" |
| 760 | 767 |
| 761 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASE_H | 768 #endif // SUBZERO_SRC_ICETARGETLOWERINGX86BASE_H |
| OLD | NEW |