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 ARMFrameLowering;
14
15extern const MCRegisterClassStorage<137, 1345, 2692, 3020, 94, 755> ARMMCRegisterClassStorage;
16
17struct ARMGenRegisterInfo : public TargetRegisterInfo {
18 explicit ARMGenRegisterInfo(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 ARMFrameLowering *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 ARM {
48
49// Register classes
50static constexpr const TargetRegisterClass &HPRRegClass = ARMMCRegisterClassStorage.Classes[0];
51static constexpr const TargetRegisterClass &FPWithVPRRegClass = ARMMCRegisterClassStorage.Classes[1];
52static constexpr const TargetRegisterClass &SPRRegClass = ARMMCRegisterClassStorage.Classes[2];
53static constexpr const TargetRegisterClass &FPWithVPR_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[3];
54static constexpr const TargetRegisterClass &GPRRegClass = ARMMCRegisterClassStorage.Classes[4];
55static constexpr const TargetRegisterClass &GPRwithAPSRRegClass = ARMMCRegisterClassStorage.Classes[5];
56static constexpr const TargetRegisterClass &GPRwithZRRegClass = ARMMCRegisterClassStorage.Classes[6];
57static constexpr const TargetRegisterClass &SPR_8RegClass = ARMMCRegisterClassStorage.Classes[7];
58static constexpr const TargetRegisterClass &GPRnopcRegClass = ARMMCRegisterClassStorage.Classes[8];
59static constexpr const TargetRegisterClass &GPRnospRegClass = ARMMCRegisterClassStorage.Classes[9];
60static constexpr const TargetRegisterClass &GPRwithAPSR_NZCVnospRegClass = ARMMCRegisterClassStorage.Classes[10];
61static constexpr const TargetRegisterClass &GPRwithAPSRnospRegClass = ARMMCRegisterClassStorage.Classes[11];
62static constexpr const TargetRegisterClass &GPRwithZRnospRegClass = ARMMCRegisterClassStorage.Classes[12];
63static constexpr const TargetRegisterClass &GPRnoipRegClass = ARMMCRegisterClassStorage.Classes[13];
64static constexpr const TargetRegisterClass &rGPRRegClass = ARMMCRegisterClassStorage.Classes[14];
65static constexpr const TargetRegisterClass &GPRnoip_and_GPRnopcRegClass = ARMMCRegisterClassStorage.Classes[15];
66static constexpr const TargetRegisterClass &GPRnoip_and_GPRnospRegClass = ARMMCRegisterClassStorage.Classes[16];
67static constexpr const TargetRegisterClass &GPRnoip_and_GPRwithAPSR_NZCVnospRegClass = ARMMCRegisterClassStorage.Classes[17];
68static constexpr const TargetRegisterClass &tGPRwithpcRegClass = ARMMCRegisterClassStorage.Classes[18];
69static constexpr const TargetRegisterClass &FPWithVPR_with_ssub_0_with_ssub_0_in_SPR_8RegClass = ARMMCRegisterClassStorage.Classes[19];
70static constexpr const TargetRegisterClass &hGPRRegClass = ARMMCRegisterClassStorage.Classes[20];
71static constexpr const TargetRegisterClass &tGPRRegClass = ARMMCRegisterClassStorage.Classes[21];
72static constexpr const TargetRegisterClass &tGPREvenRegClass = ARMMCRegisterClassStorage.Classes[22];
73static constexpr const TargetRegisterClass &GPRnopc_and_hGPRRegClass = ARMMCRegisterClassStorage.Classes[23];
74static constexpr const TargetRegisterClass &GPRnosp_and_hGPRRegClass = ARMMCRegisterClassStorage.Classes[24];
75static constexpr const TargetRegisterClass &GPRnoip_and_hGPRRegClass = ARMMCRegisterClassStorage.Classes[25];
76static constexpr const TargetRegisterClass &GPRnoip_and_tGPREvenRegClass = ARMMCRegisterClassStorage.Classes[26];
77static constexpr const TargetRegisterClass &GPRnosp_and_GPRnopc_and_hGPRRegClass = ARMMCRegisterClassStorage.Classes[27];
78static constexpr const TargetRegisterClass &tGPROddRegClass = ARMMCRegisterClassStorage.Classes[28];
79static constexpr const TargetRegisterClass &GPRnopc_and_GPRnoip_and_hGPRRegClass = ARMMCRegisterClassStorage.Classes[29];
80static constexpr const TargetRegisterClass &GPRnosp_and_GPRnoip_and_hGPRRegClass = ARMMCRegisterClassStorage.Classes[30];
81static constexpr const TargetRegisterClass &tcGPRRegClass = ARMMCRegisterClassStorage.Classes[31];
82static constexpr const TargetRegisterClass &GPRnosp_and_GPRnopc_and_GPRnoip_and_hGPRRegClass = ARMMCRegisterClassStorage.Classes[32];
83static constexpr const TargetRegisterClass &hGPR_and_tGPREvenRegClass = ARMMCRegisterClassStorage.Classes[33];
84static constexpr const TargetRegisterClass &tGPR_and_tGPREvenRegClass = ARMMCRegisterClassStorage.Classes[34];
85static constexpr const TargetRegisterClass &tGPR_and_tGPROddRegClass = ARMMCRegisterClassStorage.Classes[35];
86static constexpr const TargetRegisterClass &tcGPRnotr12RegClass = ARMMCRegisterClassStorage.Classes[36];
87static constexpr const TargetRegisterClass &tGPREven_and_tcGPRRegClass = ARMMCRegisterClassStorage.Classes[37];
88static constexpr const TargetRegisterClass &FP_STATUS_REGSRegClass = ARMMCRegisterClassStorage.Classes[38];
89static constexpr const TargetRegisterClass &hGPR_and_GPRnoip_and_tGPREvenRegClass = ARMMCRegisterClassStorage.Classes[39];
90static constexpr const TargetRegisterClass &hGPR_and_tGPROddRegClass = ARMMCRegisterClassStorage.Classes[40];
91static constexpr const TargetRegisterClass &tGPREven_and_tcGPRnotr12RegClass = ARMMCRegisterClassStorage.Classes[41];
92static constexpr const TargetRegisterClass &tGPROdd_and_tcGPRRegClass = ARMMCRegisterClassStorage.Classes[42];
93static constexpr const TargetRegisterClass &CCRRegClass = ARMMCRegisterClassStorage.Classes[43];
94static constexpr const TargetRegisterClass &FPCXTRegsRegClass = ARMMCRegisterClassStorage.Classes[44];
95static constexpr const TargetRegisterClass &GPRlrRegClass = ARMMCRegisterClassStorage.Classes[45];
96static constexpr const TargetRegisterClass &GPRspRegClass = ARMMCRegisterClassStorage.Classes[46];
97static constexpr const TargetRegisterClass &VCCRRegClass = ARMMCRegisterClassStorage.Classes[47];
98static constexpr const TargetRegisterClass &cl_FPSCR_NZCVRegClass = ARMMCRegisterClassStorage.Classes[48];
99static constexpr const TargetRegisterClass &hGPR_and_tGPRwithpcRegClass = ARMMCRegisterClassStorage.Classes[49];
100static constexpr const TargetRegisterClass &hGPR_and_tcGPRRegClass = ARMMCRegisterClassStorage.Classes[50];
101static constexpr const TargetRegisterClass &DPRRegClass = ARMMCRegisterClassStorage.Classes[51];
102static constexpr const TargetRegisterClass &DPR_VFP2RegClass = ARMMCRegisterClassStorage.Classes[52];
103static constexpr const TargetRegisterClass &DPR_8RegClass = ARMMCRegisterClassStorage.Classes[53];
104static constexpr const TargetRegisterClass &GPRPairRegClass = ARMMCRegisterClassStorage.Classes[54];
105static constexpr const TargetRegisterClass &GPRPairnospRegClass = ARMMCRegisterClassStorage.Classes[55];
106static constexpr const TargetRegisterClass &GPRPair_with_gsub_0_in_tGPRRegClass = ARMMCRegisterClassStorage.Classes[56];
107static constexpr const TargetRegisterClass &GPRPair_with_gsub_0_in_hGPRRegClass = ARMMCRegisterClassStorage.Classes[57];
108static constexpr const TargetRegisterClass &GPRPair_with_gsub_0_in_tcGPRRegClass = ARMMCRegisterClassStorage.Classes[58];
109static constexpr const TargetRegisterClass &GPRPair_with_gsub_0_in_tcGPRnotr12RegClass = ARMMCRegisterClassStorage.Classes[59];
110static constexpr const TargetRegisterClass &GPRPairnosp_and_GPRPair_with_gsub_0_in_hGPRRegClass = ARMMCRegisterClassStorage.Classes[60];
111static constexpr const TargetRegisterClass &GPRPair_with_gsub_1_in_GPRspRegClass = ARMMCRegisterClassStorage.Classes[61];
112static constexpr const TargetRegisterClass &DPairSpcRegClass = ARMMCRegisterClassStorage.Classes[62];
113static constexpr const TargetRegisterClass &DPairSpc_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[63];
114static constexpr const TargetRegisterClass &DPairSpc_with_ssub_4RegClass = ARMMCRegisterClassStorage.Classes[64];
115static constexpr const TargetRegisterClass &DPairSpc_with_dsub_0_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[65];
116static constexpr const TargetRegisterClass &DPairSpc_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[66];
117static constexpr const TargetRegisterClass &DPairRegClass = ARMMCRegisterClassStorage.Classes[67];
118static constexpr const TargetRegisterClass &DPair_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[68];
119static constexpr const TargetRegisterClass &QPRRegClass = ARMMCRegisterClassStorage.Classes[69];
120static constexpr const TargetRegisterClass &DPair_with_ssub_2RegClass = ARMMCRegisterClassStorage.Classes[70];
121static constexpr const TargetRegisterClass &DPair_with_dsub_0_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[71];
122static constexpr const TargetRegisterClass &MQPRRegClass = ARMMCRegisterClassStorage.Classes[72];
123static constexpr const TargetRegisterClass &QPR_VFP2RegClass = ARMMCRegisterClassStorage.Classes[73];
124static constexpr const TargetRegisterClass &DPair_with_dsub_1_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[74];
125static constexpr const TargetRegisterClass &QPR_8RegClass = ARMMCRegisterClassStorage.Classes[75];
126static constexpr const TargetRegisterClass &DTripleRegClass = ARMMCRegisterClassStorage.Classes[76];
127static constexpr const TargetRegisterClass &DTripleSpcRegClass = ARMMCRegisterClassStorage.Classes[77];
128static constexpr const TargetRegisterClass &DTripleSpc_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[78];
129static constexpr const TargetRegisterClass &DTriple_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[79];
130static constexpr const TargetRegisterClass &DTriple_with_qsub_0_in_QPRRegClass = ARMMCRegisterClassStorage.Classes[80];
131static constexpr const TargetRegisterClass &DTriple_with_ssub_2RegClass = ARMMCRegisterClassStorage.Classes[81];
132static constexpr const TargetRegisterClass &DTriple_with_ssub_2_ssub_3_ssub_4_ssub_5_in_QPRRegClass = ARMMCRegisterClassStorage.Classes[82];
133static constexpr const TargetRegisterClass &DTripleSpc_with_ssub_4RegClass = ARMMCRegisterClassStorage.Classes[83];
134static constexpr const TargetRegisterClass &DTriple_with_ssub_4RegClass = ARMMCRegisterClassStorage.Classes[84];
135static constexpr const TargetRegisterClass &DTripleSpc_with_ssub_8RegClass = ARMMCRegisterClassStorage.Classes[85];
136static constexpr const TargetRegisterClass &DTripleSpc_with_dsub_0_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[86];
137static constexpr const TargetRegisterClass &DTriple_with_dsub_0_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[87];
138static constexpr const TargetRegisterClass &DTriple_with_qsub_0_in_MQPRRegClass = ARMMCRegisterClassStorage.Classes[88];
139static constexpr const TargetRegisterClass &DTriple_with_ssub_0_and_DTriple_with_ssub_2_ssub_3_ssub_4_ssub_5_in_QPRRegClass = ARMMCRegisterClassStorage.Classes[89];
140static constexpr const TargetRegisterClass &DTriple_with_dsub_1_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[90];
141static constexpr const TargetRegisterClass &DTriple_with_ssub_2_ssub_3_ssub_4_ssub_5_in_MQPRRegClass = ARMMCRegisterClassStorage.Classes[91];
142static constexpr const TargetRegisterClass &DTriple_with_ssub_4_and_DTriple_with_qsub_0_in_MQPRRegClass = ARMMCRegisterClassStorage.Classes[92];
143static constexpr const TargetRegisterClass &DTripleSpc_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[93];
144static constexpr const TargetRegisterClass &DTriple_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[94];
145static constexpr const TargetRegisterClass &DTripleSpc_with_dsub_4_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[95];
146static constexpr const TargetRegisterClass &DTriple_with_dsub_0_in_DPR_8_and_DTriple_with_ssub_2_ssub_3_ssub_4_ssub_5_in_MQPRRegClass = ARMMCRegisterClassStorage.Classes[96];
147static constexpr const TargetRegisterClass &DTriple_with_qsub_0_in_QPR_8RegClass = ARMMCRegisterClassStorage.Classes[97];
148static constexpr const TargetRegisterClass &DTriple_with_qsub_0_in_MQPR_and_DTriple_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[98];
149static constexpr const TargetRegisterClass &DTriple_with_ssub_2_ssub_3_ssub_4_ssub_5_in_QPR_8RegClass = ARMMCRegisterClassStorage.Classes[99];
150static constexpr const TargetRegisterClass &DQuadSpcRegClass = ARMMCRegisterClassStorage.Classes[100];
151static constexpr const TargetRegisterClass &DQuadSpc_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[101];
152static constexpr const TargetRegisterClass &DQuadSpc_with_ssub_4RegClass = ARMMCRegisterClassStorage.Classes[102];
153static constexpr const TargetRegisterClass &DQuadSpc_with_ssub_8RegClass = ARMMCRegisterClassStorage.Classes[103];
154static constexpr const TargetRegisterClass &DQuadSpc_with_dsub_0_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[104];
155static constexpr const TargetRegisterClass &DQuadSpc_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[105];
156static constexpr const TargetRegisterClass &DQuadSpc_with_dsub_4_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[106];
157static constexpr const TargetRegisterClass &DQuadRegClass = ARMMCRegisterClassStorage.Classes[107];
158static constexpr const TargetRegisterClass &DQuad_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[108];
159static constexpr const TargetRegisterClass &DQuad_with_ssub_2RegClass = ARMMCRegisterClassStorage.Classes[109];
160static constexpr const TargetRegisterClass &QQPRRegClass = ARMMCRegisterClassStorage.Classes[110];
161static constexpr const TargetRegisterClass &DQuad_with_ssub_2_ssub_3_ssub_4_ssub_5_in_QPRRegClass = ARMMCRegisterClassStorage.Classes[111];
162static constexpr const TargetRegisterClass &DQuad_with_ssub_4RegClass = ARMMCRegisterClassStorage.Classes[112];
163static constexpr const TargetRegisterClass &DQuad_with_ssub_6RegClass = ARMMCRegisterClassStorage.Classes[113];
164static constexpr const TargetRegisterClass &DQuad_with_dsub_0_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[114];
165static constexpr const TargetRegisterClass &DQuad_with_ssub_0_and_DQuad_with_ssub_2_ssub_3_ssub_4_ssub_5_in_QPRRegClass = ARMMCRegisterClassStorage.Classes[115];
166static constexpr const TargetRegisterClass &QQPR_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[116];
167static constexpr const TargetRegisterClass &DQuad_with_dsub_1_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[117];
168static constexpr const TargetRegisterClass &DQuad_with_ssub_2_ssub_3_ssub_4_ssub_5_in_MQPRRegClass = ARMMCRegisterClassStorage.Classes[118];
169static constexpr const TargetRegisterClass &MQQPRRegClass = ARMMCRegisterClassStorage.Classes[119];
170static constexpr const TargetRegisterClass &DQuad_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[120];
171static constexpr const TargetRegisterClass &DQuad_with_ssub_6_and_DQuad_with_ssub_2_ssub_3_ssub_4_ssub_5_in_MQPRRegClass = ARMMCRegisterClassStorage.Classes[121];
172static constexpr const TargetRegisterClass &DQuad_with_dsub_3_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[122];
173static constexpr const TargetRegisterClass &DQuad_with_ssub_0_ssub_1_ssub_2_ssub_3_ssub_4_ssub_5_in_DTriple_with_dsub_0_in_DPR_8_and_DTriple_with_ssub_2_ssub_3_ssub_4_ssub_5_in_MQPRRegClass = ARMMCRegisterClassStorage.Classes[123];
174static constexpr const TargetRegisterClass &MQQPR_with_qsub_0_in_QPR_8RegClass = ARMMCRegisterClassStorage.Classes[124];
175static constexpr const TargetRegisterClass &DQuad_with_ssub_2_ssub_3_ssub_4_ssub_5_in_QPR_8RegClass = ARMMCRegisterClassStorage.Classes[125];
176static constexpr const TargetRegisterClass &MQQPR_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[126];
177static constexpr const TargetRegisterClass &DQuad_with_ssub_2_ssub_3_ssub_4_ssub_5_ssub_6_ssub_7_in_DTriple_with_qsub_0_in_MQPR_and_DTriple_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[127];
178static constexpr const TargetRegisterClass &QQQQPRRegClass = ARMMCRegisterClassStorage.Classes[128];
179static constexpr const TargetRegisterClass &QQQQPR_with_ssub_0RegClass = ARMMCRegisterClassStorage.Classes[129];
180static constexpr const TargetRegisterClass &QQQQPR_with_ssub_4RegClass = ARMMCRegisterClassStorage.Classes[130];
181static constexpr const TargetRegisterClass &QQQQPR_with_ssub_8RegClass = ARMMCRegisterClassStorage.Classes[131];
182static constexpr const TargetRegisterClass &MQQQQPRRegClass = ARMMCRegisterClassStorage.Classes[132];
183static constexpr const TargetRegisterClass &MQQQQPR_with_qqsub_0_in_MQQPR_with_qsub_0_in_QPR_8RegClass = ARMMCRegisterClassStorage.Classes[133];
184static constexpr const TargetRegisterClass &MQQQQPR_with_qqsub_0_in_MQQPR_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[134];
185static constexpr const TargetRegisterClass &MQQQQPR_with_qsub_2_in_QPR_8RegClass = ARMMCRegisterClassStorage.Classes[135];
186static constexpr const TargetRegisterClass &MQQQQPR_with_qqsub_1_in_MQQPR_with_dsub_2_in_DPR_8RegClass = ARMMCRegisterClassStorage.Classes[136];
187
188} // namespace ARM
189
190} // namespace llvm
191