| 1 | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
| 2 | |* *| |
| 3 | |* Register Information Header Fragment *| |
| 4 | |* *| |
| 5 | |* Automatically generated file, do not edit! *| |
| 6 | |* *| |
| 7 | \*===----------------------------------------------------------------------===*/ |
| 8 | |
| 9 | #include "llvm/CodeGen/TargetRegisterInfo.h" |
| 10 | |
| 11 | namespace llvm { |
| 12 | |
| 13 | class X86FrameLowering; |
| 14 | |
| 15 | extern const MCRegisterClassStorage<135, 1296, 2329, 1070, 16, 979> X86MCRegisterClassStorage; |
| 16 | |
| 17 | struct X86GenRegisterInfo : public TargetRegisterInfo { |
| 18 | explicit X86GenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0, |
| 19 | unsigned PC = 0, unsigned HwMode = 0); |
| 20 | unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override; |
| 21 | unsigned reverseComposeSubRegIndicesImpl(unsigned, unsigned) const override; |
| 22 | LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override; |
| 23 | LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override; |
| 24 | const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass *, unsigned) const override; |
| 25 | const TargetRegisterClass *getSubRegisterClass(const TargetRegisterClass *, unsigned) const override; |
| 26 | const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override; |
| 27 | unsigned getRegUnitWeight(MCRegUnit RegUnit) const override; |
| 28 | unsigned getNumRegPressureSets() const override; |
| 29 | const char *getRegPressureSetName(unsigned Idx) const override; |
| 30 | unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override; |
| 31 | const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override; |
| 32 | const int *getRegUnitPressureSets(MCRegUnit RegUnit) const override; |
| 33 | ArrayRef<const char *> getRegMaskNames() const override; |
| 34 | ArrayRef<const uint32_t *> getRegMasks() const override; |
| 35 | bool isGeneralPurposeRegister(const MachineFunction &, MCRegister) const override; |
| 36 | bool isGeneralPurposeRegisterClass(const TargetRegisterClass *RC) const override; |
| 37 | bool isFixedRegister(const MachineFunction &, MCRegister) const override; |
| 38 | bool isArgumentRegister(const MachineFunction &, MCRegister) const override; |
| 39 | bool isConstantPhysReg(MCRegister PhysReg) const override final; |
| 40 | /// Devirtualized TargetFrameLowering. |
| 41 | static const X86FrameLowering *getFrameLowering( |
| 42 | const MachineFunction &MF); |
| 43 | ArrayRef<MCPhysReg> getRawAllocationOrder(const TargetRegisterClass &RC, const MachineFunction &MF, bool Rev) const override; |
| 44 | const TargetRegisterClass *getMinimalPhysRegClass(MCRegister Reg) const override; |
| 45 | }; |
| 46 | |
| 47 | namespace X86 { |
| 48 | |
| 49 | // Register classes |
| 50 | static constexpr const TargetRegisterClass &GR8RegClass = X86MCRegisterClassStorage.Classes[0]; |
| 51 | static constexpr const TargetRegisterClass &GRH8RegClass = X86MCRegisterClassStorage.Classes[1]; |
| 52 | static constexpr const TargetRegisterClass &GR8_NOREX2RegClass = X86MCRegisterClassStorage.Classes[2]; |
| 53 | static constexpr const TargetRegisterClass &GR8_NOREXRegClass = X86MCRegisterClassStorage.Classes[3]; |
| 54 | static constexpr const TargetRegisterClass &GR8_ABCD_HRegClass = X86MCRegisterClassStorage.Classes[4]; |
| 55 | static constexpr const TargetRegisterClass &GR8_ABCD_LRegClass = X86MCRegisterClassStorage.Classes[5]; |
| 56 | static constexpr const TargetRegisterClass &GRH16RegClass = X86MCRegisterClassStorage.Classes[6]; |
| 57 | static constexpr const TargetRegisterClass &GR16RegClass = X86MCRegisterClassStorage.Classes[7]; |
| 58 | static constexpr const TargetRegisterClass &GR16_NOREX2RegClass = X86MCRegisterClassStorage.Classes[8]; |
| 59 | static constexpr const TargetRegisterClass &GR16_NOREXRegClass = X86MCRegisterClassStorage.Classes[9]; |
| 60 | static constexpr const TargetRegisterClass &VK1RegClass = X86MCRegisterClassStorage.Classes[10]; |
| 61 | static constexpr const TargetRegisterClass &VK16RegClass = X86MCRegisterClassStorage.Classes[11]; |
| 62 | static constexpr const TargetRegisterClass &VK2RegClass = X86MCRegisterClassStorage.Classes[12]; |
| 63 | static constexpr const TargetRegisterClass &VK4RegClass = X86MCRegisterClassStorage.Classes[13]; |
| 64 | static constexpr const TargetRegisterClass &VK8RegClass = X86MCRegisterClassStorage.Classes[14]; |
| 65 | static constexpr const TargetRegisterClass &VK16WMRegClass = X86MCRegisterClassStorage.Classes[15]; |
| 66 | static constexpr const TargetRegisterClass &VK1WMRegClass = X86MCRegisterClassStorage.Classes[16]; |
| 67 | static constexpr const TargetRegisterClass &VK2WMRegClass = X86MCRegisterClassStorage.Classes[17]; |
| 68 | static constexpr const TargetRegisterClass &VK4WMRegClass = X86MCRegisterClassStorage.Classes[18]; |
| 69 | static constexpr const TargetRegisterClass &VK8WMRegClass = X86MCRegisterClassStorage.Classes[19]; |
| 70 | static constexpr const TargetRegisterClass &SEGMENT_REGRegClass = X86MCRegisterClassStorage.Classes[20]; |
| 71 | static constexpr const TargetRegisterClass &GR16_ABCDRegClass = X86MCRegisterClassStorage.Classes[21]; |
| 72 | static constexpr const TargetRegisterClass &FPCCRRegClass = X86MCRegisterClassStorage.Classes[22]; |
| 73 | static constexpr const TargetRegisterClass &FR16XRegClass = X86MCRegisterClassStorage.Classes[23]; |
| 74 | static constexpr const TargetRegisterClass &FR16RegClass = X86MCRegisterClassStorage.Classes[24]; |
| 75 | static constexpr const TargetRegisterClass &VK16PAIRRegClass = X86MCRegisterClassStorage.Classes[25]; |
| 76 | static constexpr const TargetRegisterClass &VK1PAIRRegClass = X86MCRegisterClassStorage.Classes[26]; |
| 77 | static constexpr const TargetRegisterClass &VK2PAIRRegClass = X86MCRegisterClassStorage.Classes[27]; |
| 78 | static constexpr const TargetRegisterClass &VK4PAIRRegClass = X86MCRegisterClassStorage.Classes[28]; |
| 79 | static constexpr const TargetRegisterClass &VK8PAIRRegClass = X86MCRegisterClassStorage.Classes[29]; |
| 80 | static constexpr const TargetRegisterClass &VK1PAIR_with_sub_mask_0_in_VK1WMRegClass = X86MCRegisterClassStorage.Classes[30]; |
| 81 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESS_RBPRegClass = X86MCRegisterClassStorage.Classes[31]; |
| 82 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESSRegClass = X86MCRegisterClassStorage.Classes[32]; |
| 83 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass = X86MCRegisterClassStorage.Classes[33]; |
| 84 | static constexpr const TargetRegisterClass &FR32XRegClass = X86MCRegisterClassStorage.Classes[34]; |
| 85 | static constexpr const TargetRegisterClass &GR32RegClass = X86MCRegisterClassStorage.Classes[35]; |
| 86 | static constexpr const TargetRegisterClass &GR32_NOSPRegClass = X86MCRegisterClassStorage.Classes[36]; |
| 87 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX2RegClass = X86MCRegisterClassStorage.Classes[37]; |
| 88 | static constexpr const TargetRegisterClass &DEBUG_REGRegClass = X86MCRegisterClassStorage.Classes[38]; |
| 89 | static constexpr const TargetRegisterClass &FR32RegClass = X86MCRegisterClassStorage.Classes[39]; |
| 90 | static constexpr const TargetRegisterClass &GR32_NOREX2RegClass = X86MCRegisterClassStorage.Classes[40]; |
| 91 | static constexpr const TargetRegisterClass &GR32_NOREX2_NOSPRegClass = X86MCRegisterClassStorage.Classes[41]; |
| 92 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass = X86MCRegisterClassStorage.Classes[42]; |
| 93 | static constexpr const TargetRegisterClass &GR32_NOREXRegClass = X86MCRegisterClassStorage.Classes[43]; |
| 94 | static constexpr const TargetRegisterClass &VK32RegClass = X86MCRegisterClassStorage.Classes[44]; |
| 95 | static constexpr const TargetRegisterClass &GR32_NOREX_NOSPRegClass = X86MCRegisterClassStorage.Classes[45]; |
| 96 | static constexpr const TargetRegisterClass &RFP32RegClass = X86MCRegisterClassStorage.Classes[46]; |
| 97 | static constexpr const TargetRegisterClass &VK32WMRegClass = X86MCRegisterClassStorage.Classes[47]; |
| 98 | static constexpr const TargetRegisterClass &GR32_ABCDRegClass = X86MCRegisterClassStorage.Classes[48]; |
| 99 | static constexpr const TargetRegisterClass &GR32_TCRegClass = X86MCRegisterClassStorage.Classes[49]; |
| 100 | static constexpr const TargetRegisterClass &GR32_ABCD_and_GR32_TCRegClass = X86MCRegisterClassStorage.Classes[50]; |
| 101 | static constexpr const TargetRegisterClass &GR32_ADRegClass = X86MCRegisterClassStorage.Classes[51]; |
| 102 | static constexpr const TargetRegisterClass &GR32_ArgRefRegClass = X86MCRegisterClassStorage.Classes[52]; |
| 103 | static constexpr const TargetRegisterClass &GR32_BPSPRegClass = X86MCRegisterClassStorage.Classes[53]; |
| 104 | static constexpr const TargetRegisterClass &GR32_BSIRegClass = X86MCRegisterClassStorage.Classes[54]; |
| 105 | static constexpr const TargetRegisterClass &GR32_CBRegClass = X86MCRegisterClassStorage.Classes[55]; |
| 106 | static constexpr const TargetRegisterClass &GR32_DCRegClass = X86MCRegisterClassStorage.Classes[56]; |
| 107 | static constexpr const TargetRegisterClass &GR32_DIBPRegClass = X86MCRegisterClassStorage.Classes[57]; |
| 108 | static constexpr const TargetRegisterClass &GR32_SIDIRegClass = X86MCRegisterClassStorage.Classes[58]; |
| 109 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass = X86MCRegisterClassStorage.Classes[59]; |
| 110 | static constexpr const TargetRegisterClass &CCRRegClass = X86MCRegisterClassStorage.Classes[60]; |
| 111 | static constexpr const TargetRegisterClass &DFCCRRegClass = X86MCRegisterClassStorage.Classes[61]; |
| 112 | static constexpr const TargetRegisterClass &GR32_ABCD_and_GR32_BSIRegClass = X86MCRegisterClassStorage.Classes[62]; |
| 113 | static constexpr const TargetRegisterClass &GR32_AD_and_GR32_ArgRefRegClass = X86MCRegisterClassStorage.Classes[63]; |
| 114 | static constexpr const TargetRegisterClass &GR32_ArgRef_and_GR32_CBRegClass = X86MCRegisterClassStorage.Classes[64]; |
| 115 | static constexpr const TargetRegisterClass &GR32_BPSP_and_GR32_DIBPRegClass = X86MCRegisterClassStorage.Classes[65]; |
| 116 | static constexpr const TargetRegisterClass &GR32_BPSP_and_GR32_TCRegClass = X86MCRegisterClassStorage.Classes[66]; |
| 117 | static constexpr const TargetRegisterClass &GR32_BSI_and_GR32_SIDIRegClass = X86MCRegisterClassStorage.Classes[67]; |
| 118 | static constexpr const TargetRegisterClass &GR32_DIBP_and_GR32_SIDIRegClass = X86MCRegisterClassStorage.Classes[68]; |
| 119 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass = X86MCRegisterClassStorage.Classes[69]; |
| 120 | static constexpr const TargetRegisterClass &LOW32_ADDR_ACCESS_with_sub_32bitRegClass = X86MCRegisterClassStorage.Classes[70]; |
| 121 | static constexpr const TargetRegisterClass &RFP64RegClass = X86MCRegisterClassStorage.Classes[71]; |
| 122 | static constexpr const TargetRegisterClass &GR64RegClass = X86MCRegisterClassStorage.Classes[72]; |
| 123 | static constexpr const TargetRegisterClass &FR64XRegClass = X86MCRegisterClassStorage.Classes[73]; |
| 124 | static constexpr const TargetRegisterClass &GR64_with_sub_8bitRegClass = X86MCRegisterClassStorage.Classes[74]; |
| 125 | static constexpr const TargetRegisterClass &GR64_NOSPRegClass = X86MCRegisterClassStorage.Classes[75]; |
| 126 | static constexpr const TargetRegisterClass &GR64_NOREX2RegClass = X86MCRegisterClassStorage.Classes[76]; |
| 127 | static constexpr const TargetRegisterClass &CONTROL_REGRegClass = X86MCRegisterClassStorage.Classes[77]; |
| 128 | static constexpr const TargetRegisterClass &FR64RegClass = X86MCRegisterClassStorage.Classes[78]; |
| 129 | static constexpr const TargetRegisterClass &GR64_with_sub_16bit_in_GR16_NOREX2RegClass = X86MCRegisterClassStorage.Classes[79]; |
| 130 | static constexpr const TargetRegisterClass &GR64_NOREX2_NOSPRegClass = X86MCRegisterClassStorage.Classes[80]; |
| 131 | static constexpr const TargetRegisterClass &GR64PLTSafeRegClass = X86MCRegisterClassStorage.Classes[81]; |
| 132 | static constexpr const TargetRegisterClass &GR64_TCRegClass = X86MCRegisterClassStorage.Classes[82]; |
| 133 | static constexpr const TargetRegisterClass &GR64_NOREXRegClass = X86MCRegisterClassStorage.Classes[83]; |
| 134 | static constexpr const TargetRegisterClass &GR64_TCW64RegClass = X86MCRegisterClassStorage.Classes[84]; |
| 135 | static constexpr const TargetRegisterClass &GR64_TC_with_sub_8bitRegClass = X86MCRegisterClassStorage.Classes[85]; |
| 136 | static constexpr const TargetRegisterClass &GR64_NOREX2_NOSP_and_GR64_TCRegClass = X86MCRegisterClassStorage.Classes[86]; |
| 137 | static constexpr const TargetRegisterClass &GR64_TCW64_with_sub_8bitRegClass = X86MCRegisterClassStorage.Classes[87]; |
| 138 | static constexpr const TargetRegisterClass &GR64_TC_and_GR64_TCW64RegClass = X86MCRegisterClassStorage.Classes[88]; |
| 139 | static constexpr const TargetRegisterClass &GR64_with_sub_16bit_in_GR16_NOREXRegClass = X86MCRegisterClassStorage.Classes[89]; |
| 140 | static constexpr const TargetRegisterClass &VK64RegClass = X86MCRegisterClassStorage.Classes[90]; |
| 141 | static constexpr const TargetRegisterClass &VR64RegClass = X86MCRegisterClassStorage.Classes[91]; |
| 142 | static constexpr const TargetRegisterClass &GR64PLTSafe_and_GR64_TCRegClass = X86MCRegisterClassStorage.Classes[92]; |
| 143 | static constexpr const TargetRegisterClass &GR64_NOREX2_NOSP_and_GR64_TCW64RegClass = X86MCRegisterClassStorage.Classes[93]; |
| 144 | static constexpr const TargetRegisterClass &GR64_NOREX_NOSPRegClass = X86MCRegisterClassStorage.Classes[94]; |
| 145 | static constexpr const TargetRegisterClass &GR64_NOREX_and_GR64_TCRegClass = X86MCRegisterClassStorage.Classes[95]; |
| 146 | static constexpr const TargetRegisterClass &GR64_TCW64_and_GR64_TC_with_sub_8bitRegClass = X86MCRegisterClassStorage.Classes[96]; |
| 147 | static constexpr const TargetRegisterClass &VK64WMRegClass = X86MCRegisterClassStorage.Classes[97]; |
| 148 | static constexpr const TargetRegisterClass &GR64_TC_and_GR64_NOREX2_NOSP_and_GR64_TCW64RegClass = X86MCRegisterClassStorage.Classes[98]; |
| 149 | static constexpr const TargetRegisterClass &GR64_TC_and_GR64_with_sub_16bit_in_GR16_NOREXRegClass = X86MCRegisterClassStorage.Classes[99]; |
| 150 | static constexpr const TargetRegisterClass &GR64PLTSafe_and_GR64_TCW64RegClass = X86MCRegisterClassStorage.Classes[100]; |
| 151 | static constexpr const TargetRegisterClass &GR64_NOREX_and_GR64PLTSafe_and_GR64_TCRegClass = X86MCRegisterClassStorage.Classes[101]; |
| 152 | static constexpr const TargetRegisterClass &GR64_NOREX_and_GR64_TCW64RegClass = X86MCRegisterClassStorage.Classes[102]; |
| 153 | static constexpr const TargetRegisterClass &GR64_ABCDRegClass = X86MCRegisterClassStorage.Classes[103]; |
| 154 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_TCRegClass = X86MCRegisterClassStorage.Classes[104]; |
| 155 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_TCRegClass = X86MCRegisterClassStorage.Classes[105]; |
| 156 | static constexpr const TargetRegisterClass &GR64_ADRegClass = X86MCRegisterClassStorage.Classes[106]; |
| 157 | static constexpr const TargetRegisterClass &GR64_ArgRefRegClass = X86MCRegisterClassStorage.Classes[107]; |
| 158 | static constexpr const TargetRegisterClass &GR64_and_LOW32_ADDR_ACCESS_RBPRegClass = X86MCRegisterClassStorage.Classes[108]; |
| 159 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_ArgRefRegClass = X86MCRegisterClassStorage.Classes[109]; |
| 160 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_BPSPRegClass = X86MCRegisterClassStorage.Classes[110]; |
| 161 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_BSIRegClass = X86MCRegisterClassStorage.Classes[111]; |
| 162 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_CBRegClass = X86MCRegisterClassStorage.Classes[112]; |
| 163 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_DIBPRegClass = X86MCRegisterClassStorage.Classes[113]; |
| 164 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_SIDIRegClass = X86MCRegisterClassStorage.Classes[114]; |
| 165 | static constexpr const TargetRegisterClass &GR64_ARegClass = X86MCRegisterClassStorage.Classes[115]; |
| 166 | static constexpr const TargetRegisterClass &GR64_ArgRef_and_GR64_TCRegClass = X86MCRegisterClassStorage.Classes[116]; |
| 167 | static constexpr const TargetRegisterClass &GR64_and_LOW32_ADDR_ACCESSRegClass = X86MCRegisterClassStorage.Classes[117]; |
| 168 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClass = X86MCRegisterClassStorage.Classes[118]; |
| 169 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_AD_and_GR32_ArgRefRegClass = X86MCRegisterClassStorage.Classes[119]; |
| 170 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_ArgRef_and_GR32_CBRegClass = X86MCRegisterClassStorage.Classes[120]; |
| 171 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClass = X86MCRegisterClassStorage.Classes[121]; |
| 172 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_TCRegClass = X86MCRegisterClassStorage.Classes[122]; |
| 173 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClass = X86MCRegisterClassStorage.Classes[123]; |
| 174 | static constexpr const TargetRegisterClass &GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClass = X86MCRegisterClassStorage.Classes[124]; |
| 175 | static constexpr const TargetRegisterClass &RSTRegClass = X86MCRegisterClassStorage.Classes[125]; |
| 176 | static constexpr const TargetRegisterClass &RFP80RegClass = X86MCRegisterClassStorage.Classes[126]; |
| 177 | static constexpr const TargetRegisterClass &RFP80_7RegClass = X86MCRegisterClassStorage.Classes[127]; |
| 178 | static constexpr const TargetRegisterClass &VR128XRegClass = X86MCRegisterClassStorage.Classes[128]; |
| 179 | static constexpr const TargetRegisterClass &VR128RegClass = X86MCRegisterClassStorage.Classes[129]; |
| 180 | static constexpr const TargetRegisterClass &VR256XRegClass = X86MCRegisterClassStorage.Classes[130]; |
| 181 | static constexpr const TargetRegisterClass &VR256RegClass = X86MCRegisterClassStorage.Classes[131]; |
| 182 | static constexpr const TargetRegisterClass &VR512RegClass = X86MCRegisterClassStorage.Classes[132]; |
| 183 | static constexpr const TargetRegisterClass &VR512_0_15RegClass = X86MCRegisterClassStorage.Classes[133]; |
| 184 | static constexpr const TargetRegisterClass &TILERegClass = X86MCRegisterClassStorage.Classes[134]; |
| 185 | |
| 186 | } // namespace X86 |
| 187 | |
| 188 | } // namespace llvm |
| 189 | |