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