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