| OLD | NEW |
| 1 //===- subzero/src/IceTargetLoweringARM32.h - ARM32 lowering ----*- C++ -*-===// | 1 //===- subzero/src/IceTargetLoweringARM32.h - ARM32 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 TargetLoweringARM32 class, which implements the | 10 // This file declares the TargetLoweringARM32 class, which implements the |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 Legal_Reg = 1 << 0, // physical register, not stack location | 110 Legal_Reg = 1 << 0, // physical register, not stack location |
| 111 Legal_Flex = 1 << 1, // A flexible operand2, which can hold rotated | 111 Legal_Flex = 1 << 1, // A flexible operand2, which can hold rotated |
| 112 // small immediates, or shifted registers. | 112 // small immediates, or shifted registers. |
| 113 Legal_Mem = 1 << 2, // includes [r0, r1 lsl #2] as well as [sp, #12] | 113 Legal_Mem = 1 << 2, // includes [r0, r1 lsl #2] as well as [sp, #12] |
| 114 Legal_All = ~Legal_None | 114 Legal_All = ~Legal_None |
| 115 }; | 115 }; |
| 116 typedef uint32_t LegalMask; | 116 typedef uint32_t LegalMask; |
| 117 Operand *legalize(Operand *From, LegalMask Allowed = Legal_All, | 117 Operand *legalize(Operand *From, LegalMask Allowed = Legal_All, |
| 118 int32_t RegNum = Variable::NoRegister); | 118 int32_t RegNum = Variable::NoRegister); |
| 119 Variable *legalizeToVar(Operand *From, int32_t RegNum = Variable::NoRegister); | 119 Variable *legalizeToVar(Operand *From, int32_t RegNum = Variable::NoRegister); |
| 120 OperandARM32Mem *formMemoryOperand(Operand *Ptr, Type Ty); |
| 120 | 121 |
| 121 Variable *makeReg(Type Ty, int32_t RegNum = Variable::NoRegister); | 122 Variable *makeReg(Type Ty, int32_t RegNum = Variable::NoRegister); |
| 122 static Type stackSlotType(); | 123 static Type stackSlotType(); |
| 123 Variable *copyToReg(Operand *Src, int32_t RegNum = Variable::NoRegister); | 124 Variable *copyToReg(Operand *Src, int32_t RegNum = Variable::NoRegister); |
| 124 void alignRegisterPow2(Variable *Reg, uint32_t Align); | 125 void alignRegisterPow2(Variable *Reg, uint32_t Align); |
| 125 | 126 |
| 126 // Returns a vector in a register with the given constant entries. | 127 // Returns a vector in a register with the given constant entries. |
| 127 Variable *makeVectorOfZeros(Type Ty, int32_t RegNum = Variable::NoRegister); | 128 Variable *makeVectorOfZeros(Type Ty, int32_t RegNum = Variable::NoRegister); |
| 128 | 129 |
| 129 void makeRandomRegisterPermutation( | 130 void makeRandomRegisterPermutation( |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 void _sbc(Variable *Dest, Variable *Src0, Operand *Src1, | 235 void _sbc(Variable *Dest, Variable *Src0, Operand *Src1, |
| 235 CondARM32::Cond Pred = CondARM32::AL) { | 236 CondARM32::Cond Pred = CondARM32::AL) { |
| 236 Context.insert(InstARM32Sbc::create(Func, Dest, Src0, Src1, Pred)); | 237 Context.insert(InstARM32Sbc::create(Func, Dest, Src0, Src1, Pred)); |
| 237 } | 238 } |
| 238 void _sbcs(Variable *Dest, Variable *Src0, Operand *Src1, | 239 void _sbcs(Variable *Dest, Variable *Src0, Operand *Src1, |
| 239 CondARM32::Cond Pred = CondARM32::AL) { | 240 CondARM32::Cond Pred = CondARM32::AL) { |
| 240 const bool SetFlags = true; | 241 const bool SetFlags = true; |
| 241 Context.insert( | 242 Context.insert( |
| 242 InstARM32Sbc::create(Func, Dest, Src0, Src1, Pred, SetFlags)); | 243 InstARM32Sbc::create(Func, Dest, Src0, Src1, Pred, SetFlags)); |
| 243 } | 244 } |
| 245 void _str(Variable *Value, OperandARM32Mem *Addr, |
| 246 CondARM32::Cond Pred = CondARM32::AL) { |
| 247 Context.insert(InstARM32Str::create(Func, Value, Addr, Pred)); |
| 248 } |
| 244 void _sub(Variable *Dest, Variable *Src0, Operand *Src1, | 249 void _sub(Variable *Dest, Variable *Src0, Operand *Src1, |
| 245 CondARM32::Cond Pred = CondARM32::AL) { | 250 CondARM32::Cond Pred = CondARM32::AL) { |
| 246 Context.insert(InstARM32Sub::create(Func, Dest, Src0, Src1, Pred)); | 251 Context.insert(InstARM32Sub::create(Func, Dest, Src0, Src1, Pred)); |
| 247 } | 252 } |
| 248 void _subs(Variable *Dest, Variable *Src0, Operand *Src1, | 253 void _subs(Variable *Dest, Variable *Src0, Operand *Src1, |
| 249 CondARM32::Cond Pred = CondARM32::AL) { | 254 CondARM32::Cond Pred = CondARM32::AL) { |
| 250 const bool SetFlags = true; | 255 const bool SetFlags = true; |
| 251 Context.insert( | 256 Context.insert( |
| 252 InstARM32Sub::create(Func, Dest, Src0, Src1, Pred, SetFlags)); | 257 InstARM32Sub::create(Func, Dest, Src0, Src1, Pred, SetFlags)); |
| 253 } | 258 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 | 300 |
| 296 private: | 301 private: |
| 297 void lowerGlobal(const VariableDeclaration &Var) const; | 302 void lowerGlobal(const VariableDeclaration &Var) const; |
| 298 ~TargetDataARM32() override {} | 303 ~TargetDataARM32() override {} |
| 299 template <typename T> static void emitConstantPool(GlobalContext *Ctx); | 304 template <typename T> static void emitConstantPool(GlobalContext *Ctx); |
| 300 }; | 305 }; |
| 301 | 306 |
| 302 } // end of namespace Ice | 307 } // end of namespace Ice |
| 303 | 308 |
| 304 #endif // SUBZERO_SRC_ICETARGETLOWERINGARM32_H | 309 #endif // SUBZERO_SRC_ICETARGETLOWERINGARM32_H |
| OLD | NEW |