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 RISCVFrameLowering;
14
15struct RISCVGenRegisterInfo : public TargetRegisterInfo {
16 explicit RISCVGenRegisterInfo(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 RISCVFrameLowering *getFrameLowering(
40 const MachineFunction &MF);
41};
42
43namespace RISCV {
44
45// Register classes
46 extern const TargetRegisterClass MRRegClass;
47 extern const TargetRegisterClass MR0RegClass;
48 extern const TargetRegisterClass FPR16RegClass;
49 extern const TargetRegisterClass GPRF16RegClass;
50 extern const TargetRegisterClass GPRF16NoX0RegClass;
51 extern const TargetRegisterClass FPR16CRegClass;
52 extern const TargetRegisterClass GPRF16CRegClass;
53 extern const TargetRegisterClass GPRAllRegClass;
54 extern const TargetRegisterClass FPR32RegClass;
55 extern const TargetRegisterClass GPRRegClass;
56 extern const TargetRegisterClass GPRF32RegClass;
57 extern const TargetRegisterClass GPRF32NoX0RegClass;
58 extern const TargetRegisterClass GPRNoX0RegClass;
59 extern const TargetRegisterClass GPRNoX2RegClass;
60 extern const TargetRegisterClass GPRNoX31RegClass;
61 extern const TargetRegisterClass GPRNoX0X2RegClass;
62 extern const TargetRegisterClass GPRNoX0_and_GPRNoX31RegClass;
63 extern const TargetRegisterClass GPRNoX2_and_GPRNoX31RegClass;
64 extern const TargetRegisterClass GPRNoX0X2_and_GPRNoX31RegClass;
65 extern const TargetRegisterClass GPRJALRRegClass;
66 extern const TargetRegisterClass GPRJALRNonX7RegClass;
67 extern const TargetRegisterClass GPRJALR_and_GPRNoX31RegClass;
68 extern const TargetRegisterClass GPRJALRNonX7_and_GPRNoX31RegClass;
69 extern const TargetRegisterClass TRRegClass;
70 extern const TargetRegisterClass GPRTCRegClass;
71 extern const TargetRegisterClass GPRNoX31_and_GPRTCRegClass;
72 extern const TargetRegisterClass GPRTCNonX7RegClass;
73 extern const TargetRegisterClass GPRNoX31_and_GPRTCNonX7RegClass;
74 extern const TargetRegisterClass FPR32CRegClass;
75 extern const TargetRegisterClass GPRCRegClass;
76 extern const TargetRegisterClass GPRF32CRegClass;
77 extern const TargetRegisterClass SR07RegClass;
78 extern const TargetRegisterClass TRM2RegClass;
79 extern const TargetRegisterClass GPRC_and_GPRTCRegClass;
80 extern const TargetRegisterClass TRM4RegClass;
81 extern const TargetRegisterClass VCSRRegClass;
82 extern const TargetRegisterClass GPRC_and_SR07RegClass;
83 extern const TargetRegisterClass GPRX1X5RegClass;
84 extern const TargetRegisterClass GPRX0RegClass;
85 extern const TargetRegisterClass GPRX1RegClass;
86 extern const TargetRegisterClass GPRX5RegClass;
87 extern const TargetRegisterClass GPRX7RegClass;
88 extern const TargetRegisterClass SPRegClass;
89 extern const TargetRegisterClass anonymous_15402RegClass;
90 extern const TargetRegisterClass GPRPairRegClass;
91 extern const TargetRegisterClass GPRPairNoX0RegClass;
92 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRNoX2RegClass;
93 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRNoX0X2RegClass;
94 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRNoX31RegClass;
95 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRJALRRegClass;
96 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRNoX0X2_and_GPRPair_with_sub_gpr_odd_in_GPRNoX31RegClass;
97 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRJALRNonX7RegClass;
98 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRJALR_and_GPRNoX31RegClass;
99 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRJALRNonX7_and_GPRNoX31RegClass;
100 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRTCRegClass;
101 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRNoX31_and_GPRTCRegClass;
102 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRTCNonX7RegClass;
103 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRNoX31_and_GPRTCNonX7RegClass;
104 extern const TargetRegisterClass GPRPairCRegClass;
105 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_SR07RegClass;
106 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRC_and_GPRTCRegClass;
107 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRC_and_SR07RegClass;
108 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_GPRX0RegClass;
109 extern const TargetRegisterClass GPRPair_with_sub_gpr_even_in_SPRegClass;
110 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRX1X5RegClass;
111 extern const TargetRegisterClass GPRPair_with_sub_gpr_odd_in_GPRX7RegClass;
112 extern const TargetRegisterClass FPR64RegClass;
113 extern const TargetRegisterClass VRRegClass;
114 extern const TargetRegisterClass YGPRRegClass;
115 extern const TargetRegisterClass ZZZ_VMRegClass;
116 extern const TargetRegisterClass ZZZ_VRMF2RegClass;
117 extern const TargetRegisterClass ZZZ_VRMF4RegClass;
118 extern const TargetRegisterClass ZZZ_VRMF8RegClass;
119 extern const TargetRegisterClass VRNoV0RegClass;
120 extern const TargetRegisterClass YGPR_with_sub_16_in_GPRF16NoX0RegClass;
121 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX2RegClass;
122 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX31RegClass;
123 extern const TargetRegisterClass ZZZ_VMNoV0RegClass;
124 extern const TargetRegisterClass ZZZ_VRMF2NoV0RegClass;
125 extern const TargetRegisterClass ZZZ_VRMF4NoV0RegClass;
126 extern const TargetRegisterClass ZZZ_VRMF8NoV0RegClass;
127 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX0X2RegClass;
128 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX0_and_GPRNoX31RegClass;
129 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX2_and_GPRNoX31RegClass;
130 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX0X2_and_GPRNoX31RegClass;
131 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRJALRRegClass;
132 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRJALRNonX7RegClass;
133 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRJALR_and_GPRNoX31RegClass;
134 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRJALRNonX7_and_GPRNoX31RegClass;
135 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRTCRegClass;
136 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX31_and_GPRTCRegClass;
137 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRTCNonX7RegClass;
138 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRNoX31_and_GPRTCNonX7RegClass;
139 extern const TargetRegisterClass FPR64CRegClass;
140 extern const TargetRegisterClass YGPR_with_sub_16_in_GPRF16CRegClass;
141 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_SR07RegClass;
142 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRC_and_GPRTCRegClass;
143 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRC_and_SR07RegClass;
144 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRX1X5RegClass;
145 extern const TargetRegisterClass VMV0RegClass;
146 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRX0RegClass;
147 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRX1RegClass;
148 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRX5RegClass;
149 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_GPRX7RegClass;
150 extern const TargetRegisterClass YGPR_with_sub_cap_addr_in_SPRegClass;
151 extern const TargetRegisterClass VRN2M1RegClass;
152 extern const TargetRegisterClass VRN2M1NoV0RegClass;
153 extern const TargetRegisterClass VRM2RegClass;
154 extern const TargetRegisterClass VRM2NoV0RegClass;
155 extern const TargetRegisterClass VRM2_with_sub_vrm1_0_in_VMV0RegClass;
156 extern const TargetRegisterClass VRN2M1_with_sub_vrm1_0_in_VMV0RegClass;
157 extern const TargetRegisterClass FPR128RegClass;
158 extern const TargetRegisterClass FPR128_with_sub_16_in_FPR16CRegClass;
159 extern const TargetRegisterClass VRN3M1RegClass;
160 extern const TargetRegisterClass VRN3M1NoV0RegClass;
161 extern const TargetRegisterClass VRN3M1_with_sub_vrm1_0_in_VMV0RegClass;
162 extern const TargetRegisterClass VRN4M1RegClass;
163 extern const TargetRegisterClass VRN4M1NoV0RegClass;
164 extern const TargetRegisterClass VRN2M2RegClass;
165 extern const TargetRegisterClass VRN2M2NoV0RegClass;
166 extern const TargetRegisterClass VRM4RegClass;
167 extern const TargetRegisterClass VRM4NoV0RegClass;
168 extern const TargetRegisterClass VRM4_with_sub_vrm1_0_in_VMV0RegClass;
169 extern const TargetRegisterClass VRN2M2_with_sub_vrm2_0_in_VRM2_with_sub_vrm1_0_in_VMV0RegClass;
170 extern const TargetRegisterClass VRN4M1_with_sub_vrm1_0_in_VMV0RegClass;
171 extern const TargetRegisterClass FPR256RegClass;
172 extern const TargetRegisterClass FPR256_with_sub_16_in_FPR16CRegClass;
173 extern const TargetRegisterClass VRN5M1RegClass;
174 extern const TargetRegisterClass VRN5M1NoV0RegClass;
175 extern const TargetRegisterClass VRN5M1_with_sub_vrm1_0_in_VMV0RegClass;
176 extern const TargetRegisterClass VRN6M1RegClass;
177 extern const TargetRegisterClass VRN6M1NoV0RegClass;
178 extern const TargetRegisterClass VRN3M2RegClass;
179 extern const TargetRegisterClass VRN3M2NoV0RegClass;
180 extern const TargetRegisterClass VRN3M2_with_sub_vrm2_0_in_VRM2_with_sub_vrm1_0_in_VMV0RegClass;
181 extern const TargetRegisterClass VRN6M1_with_sub_vrm1_0_in_VMV0RegClass;
182 extern const TargetRegisterClass VRN7M1RegClass;
183 extern const TargetRegisterClass VRN7M1NoV0RegClass;
184 extern const TargetRegisterClass VRN7M1_with_sub_vrm1_0_in_VMV0RegClass;
185 extern const TargetRegisterClass VRN8M1RegClass;
186 extern const TargetRegisterClass VRN8M1NoV0RegClass;
187 extern const TargetRegisterClass VRN4M2RegClass;
188 extern const TargetRegisterClass VRN4M2NoV0RegClass;
189 extern const TargetRegisterClass VRN2M4RegClass;
190 extern const TargetRegisterClass VRN2M4NoV0RegClass;
191 extern const TargetRegisterClass VRM8RegClass;
192 extern const TargetRegisterClass VRM8NoV0RegClass;
193 extern const TargetRegisterClass VRM8_with_sub_vrm4_0_in_VRM4_with_sub_vrm1_0_in_VMV0RegClass;
194 extern const TargetRegisterClass VRN2M4_with_sub_vrm4_0_in_VRM4_with_sub_vrm1_0_in_VMV0RegClass;
195 extern const TargetRegisterClass VRN4M2_with_sub_vrm2_0_in_VRM2_with_sub_vrm1_0_in_VMV0RegClass;
196 extern const TargetRegisterClass VRN8M1_with_sub_vrm1_0_in_VMV0RegClass;
197
198} // namespace RISCV
199
200} // namespace llvm
201