| 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 /// \file | 10 /// \file |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 ARM32InstructionSet InstructionSet = ARM32InstructionSet::Begin; | 48 ARM32InstructionSet InstructionSet = ARM32InstructionSet::Begin; |
| 49 }; | 49 }; |
| 50 | 50 |
| 51 // The target lowering logic for ARM32. | 51 // The target lowering logic for ARM32. |
| 52 class TargetARM32 : public TargetLowering { | 52 class TargetARM32 : public TargetLowering { |
| 53 TargetARM32() = delete; | 53 TargetARM32() = delete; |
| 54 TargetARM32(const TargetARM32 &) = delete; | 54 TargetARM32(const TargetARM32 &) = delete; |
| 55 TargetARM32 &operator=(const TargetARM32 &) = delete; | 55 TargetARM32 &operator=(const TargetARM32 &) = delete; |
| 56 | 56 |
| 57 public: | 57 public: |
| 58 static void staticInit(); |
| 58 // TODO(jvoung): return a unique_ptr. | 59 // TODO(jvoung): return a unique_ptr. |
| 59 static TargetARM32 *create(Cfg *Func) { return new TargetARM32(Func); } | 60 static TargetARM32 *create(Cfg *Func) { return new TargetARM32(Func); } |
| 60 | 61 |
| 61 void initNodeForLowering(CfgNode *Node) override { | 62 void initNodeForLowering(CfgNode *Node) override { |
| 62 BoolComputations.forgetProducers(); | 63 BoolComputations.forgetProducers(); |
| 63 BoolComputations.recordProducers(Node); | 64 BoolComputations.recordProducers(Node); |
| 64 BoolComputations.dump(Func); | 65 BoolComputations.dump(Func); |
| 65 } | 66 } |
| 66 | 67 |
| 67 void translateOm1() override; | 68 void translateOm1() override; |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 /// centered on the given Var's offset plus StackAdjust, and use it. | 545 /// centered on the given Var's offset plus StackAdjust, and use it. |
| 545 StackVariable *legalizeVariableSlot(Variable *Var, int32_t StackAdjust, | 546 StackVariable *legalizeVariableSlot(Variable *Var, int32_t StackAdjust, |
| 546 Variable *OrigBaseReg); | 547 Variable *OrigBaseReg); |
| 547 | 548 |
| 548 TargetARM32Features CPUFeatures; | 549 TargetARM32Features CPUFeatures; |
| 549 bool UsesFramePointer = false; | 550 bool UsesFramePointer = false; |
| 550 bool NeedsStackAlignment = false; | 551 bool NeedsStackAlignment = false; |
| 551 bool MaybeLeafFunc = true; | 552 bool MaybeLeafFunc = true; |
| 552 size_t SpillAreaSizeBytes = 0; | 553 size_t SpillAreaSizeBytes = 0; |
| 553 // TODO(jpp): std::array instead of array. | 554 // TODO(jpp): std::array instead of array. |
| 554 llvm::SmallBitVector TypeToRegisterSet[IceType_NUM]; | 555 static llvm::SmallBitVector TypeToRegisterSet[IceType_NUM]; |
| 555 llvm::SmallBitVector RegisterAliases[RegARM32::Reg_NUM]; | 556 static llvm::SmallBitVector RegisterAliases[RegARM32::Reg_NUM]; |
| 556 llvm::SmallBitVector ScratchRegs; | 557 static llvm::SmallBitVector ScratchRegs; |
| 557 llvm::SmallBitVector RegsUsed; | 558 llvm::SmallBitVector RegsUsed; |
| 558 VarList PhysicalRegisters[IceType_NUM]; | 559 VarList PhysicalRegisters[IceType_NUM]; |
| 559 | 560 |
| 560 /// Helper class that understands the Calling Convention and register | 561 /// Helper class that understands the Calling Convention and register |
| 561 /// assignments. The first few integer type parameters can use r0-r3, | 562 /// assignments. The first few integer type parameters can use r0-r3, |
| 562 /// regardless of their position relative to the floating-point/vector | 563 /// regardless of their position relative to the floating-point/vector |
| 563 /// arguments in the argument list. Floating-point and vector arguments | 564 /// arguments in the argument list. Floating-point and vector arguments |
| 564 /// can use q0-q3 (aka d0-d7, s0-s15). For more information on the topic, | 565 /// can use q0-q3 (aka d0-d7, s0-s15). For more information on the topic, |
| 565 /// see the ARM Architecture Procedure Calling Standards (AAPCS). | 566 /// see the ARM Architecture Procedure Calling Standards (AAPCS). |
| 566 /// | 567 /// |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 | 707 |
| 707 private: | 708 private: |
| 708 ~TargetHeaderARM32() = default; | 709 ~TargetHeaderARM32() = default; |
| 709 | 710 |
| 710 TargetARM32Features CPUFeatures; | 711 TargetARM32Features CPUFeatures; |
| 711 }; | 712 }; |
| 712 | 713 |
| 713 } // end of namespace Ice | 714 } // end of namespace Ice |
| 714 | 715 |
| 715 #endif // SUBZERO_SRC_ICETARGETLOWERINGARM32_H | 716 #endif // SUBZERO_SRC_ICETARGETLOWERINGARM32_H |
| OLD | NEW |