1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Register Bank Source Fragments *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_REGBANK_DECLARATIONS
10#undef GET_REGBANK_DECLARATIONS
11
12namespace llvm::RISCV {
13
14enum : unsigned {
15 InvalidRegBankID = ~0u,
16 FPRBRegBankID = 0,
17 GPRBRegBankID = 1,
18 VRBRegBankID = 2,
19 NumRegisterBanks,
20};
21
22} // namespace llvm::RISCV
23
24#endif // GET_REGBANK_DECLARATIONS
25
26#ifdef GET_TARGET_REGBANK_CLASS
27#undef GET_TARGET_REGBANK_CLASS
28
29private:
30 static const RegisterBank *RegBanks[];
31 static const unsigned Sizes[];
32
33public:
34 const RegisterBank &getRegBankFromRegClass(const TargetRegisterClass &RC, LLT Ty) const override;
35protected:
36 RISCVGenRegisterBankInfo(unsigned HwMode = 0);
37
38
39#endif // GET_TARGET_REGBANK_CLASS
40
41#ifdef GET_TARGET_REGBANK_IMPL
42#undef GET_TARGET_REGBANK_IMPL
43
44namespace llvm {
45
46namespace RISCV {
47
48const uint32_t FPRBRegBankCoverageData[] = {
49 // 0-31
50 (1u << (RISCV::FPR16RegClassID - 0)) |
51 (1u << (RISCV::FPR32RegClassID - 0)) |
52 (1u << (RISCV::FPR16CRegClassID - 0)) |
53 (1u << (RISCV::FPR32CRegClassID - 0)) |
54 0,
55 // 32-63
56 0,
57 // 64-95
58 (1u << (RISCV::FPR64RegClassID - 64)) |
59 (1u << (RISCV::FPR64CRegClassID - 64)) |
60 0,
61 // 96-127
62 0,
63 // 128-159
64 0,
65};
66const uint32_t GPRBRegBankCoverageData[] = {
67 // 0-31
68 (1u << (RISCV::GPRRegClassID - 0)) |
69 (1u << (RISCV::GPRF16RegClassID - 0)) |
70 (1u << (RISCV::GPRF32RegClassID - 0)) |
71 (1u << (RISCV::GPRNoX0RegClassID - 0)) |
72 (1u << (RISCV::GPRF16NoX0RegClassID - 0)) |
73 (1u << (RISCV::GPRF32NoX0RegClassID - 0)) |
74 (1u << (RISCV::GPRNoX0X2RegClassID - 0)) |
75 (1u << (RISCV::GPRNoX0X2_and_GPRNoX31RegClassID - 0)) |
76 (1u << (RISCV::GPRJALR_and_GPRNoX31RegClassID - 0)) |
77 (1u << (RISCV::GPRJALRNonX7_and_GPRNoX31RegClassID - 0)) |
78 (1u << (RISCV::GPRNoX31_and_GPRTCNonX7RegClassID - 0)) |
79 (1u << (RISCV::GPRF16CRegClassID - 0)) |
80 (1u << (RISCV::GPRF32CRegClassID - 0)) |
81 (1u << (RISCV::GPRCRegClassID - 0)) |
82 (1u << (RISCV::SR07RegClassID - 0)) |
83 (1u << (RISCV::GPRNoX31_and_GPRTCRegClassID - 0)) |
84 (1u << (RISCV::GPRJALRRegClassID - 0)) |
85 (1u << (RISCV::GPRJALRNonX7RegClassID - 0)) |
86 (1u << (RISCV::GPRTCNonX7RegClassID - 0)) |
87 (1u << (RISCV::GPRTCRegClassID - 0)) |
88 (1u << (RISCV::GPRNoX0_and_GPRNoX31RegClassID - 0)) |
89 (1u << (RISCV::GPRNoX2RegClassID - 0)) |
90 (1u << (RISCV::GPRNoX2_and_GPRNoX31RegClassID - 0)) |
91 (1u << (RISCV::GPRNoX31RegClassID - 0)) |
92 (1u << (RISCV::GPRAllRegClassID - 0)) |
93 0,
94 // 32-63
95 (1u << (RISCV::GPRC_and_GPRTCRegClassID - 32)) |
96 (1u << (RISCV::GPRC_and_SR07RegClassID - 32)) |
97 (1u << (RISCV::GPRX7RegClassID - 32)) |
98 (1u << (RISCV::GPRX1X5RegClassID - 32)) |
99 (1u << (RISCV::GPRX1RegClassID - 32)) |
100 (1u << (RISCV::GPRX5RegClassID - 32)) |
101 (1u << (RISCV::SPRegClassID - 32)) |
102 (1u << (RISCV::GPRX0RegClassID - 32)) |
103 (1u << (RISCV::GPRPairRegClassID - 32)) |
104 (1u << (RISCV::GPRPairNoX0RegClassID - 32)) |
105 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRNoX0X2RegClassID - 32)) |
106 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRJALRRegClassID - 32)) |
107 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRJALRNonX7RegClassID - 32)) |
108 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRJALRNonX7_and_GPRNoX31RegClassID - 32)) |
109 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRNoX31_and_GPRTCNonX7RegClassID - 32)) |
110 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRC_and_GPRTCRegClassID - 32)) |
111 (1u << (RISCV::GPRPairCRegClassID - 32)) |
112 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRC_and_SR07RegClassID - 32)) |
113 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_SR07RegClassID - 32)) |
114 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRTCNonX7RegClassID - 32)) |
115 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRJALR_and_GPRNoX31RegClassID - 32)) |
116 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRNoX31_and_GPRTCRegClassID - 32)) |
117 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRTCRegClassID - 32)) |
118 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRNoX0X2_and_GPRPair_with_sub_gpr_odd_in_GPRNoX31RegClassID - 32)) |
119 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRNoX31RegClassID - 32)) |
120 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_SPRegClassID - 32)) |
121 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRNoX2RegClassID - 32)) |
122 (1u << (RISCV::GPRPair_with_sub_gpr_even_in_GPRX0RegClassID - 32)) |
123 0,
124 // 64-95
125 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRX7RegClassID - 64)) |
126 (1u << (RISCV::GPRPair_with_sub_gpr_odd_in_GPRX1X5RegClassID - 64)) |
127 0,
128 // 96-127
129 0,
130 // 128-159
131 0,
132};
133const uint32_t VRBRegBankCoverageData[] = {
134 // 0-31
135 0,
136 // 32-63
137 0,
138 // 64-95
139 (1u << (RISCV::VRRegClassID - 64)) |
140 (1u << (RISCV::ZZZ_VMRegClassID - 64)) |
141 (1u << (RISCV::ZZZ_VRMF2RegClassID - 64)) |
142 (1u << (RISCV::ZZZ_VRMF4RegClassID - 64)) |
143 (1u << (RISCV::ZZZ_VRMF8RegClassID - 64)) |
144 (1u << (RISCV::VRNoV0RegClassID - 64)) |
145 (1u << (RISCV::ZZZ_VMNoV0RegClassID - 64)) |
146 (1u << (RISCV::ZZZ_VRMF2NoV0RegClassID - 64)) |
147 (1u << (RISCV::ZZZ_VRMF4NoV0RegClassID - 64)) |
148 (1u << (RISCV::ZZZ_VRMF8NoV0RegClassID - 64)) |
149 0,
150 // 96-127
151 (1u << (RISCV::VRM2RegClassID - 96)) |
152 (1u << (RISCV::VRM2NoV0RegClassID - 96)) |
153 (1u << (RISCV::VRM4RegClassID - 96)) |
154 (1u << (RISCV::VRM4NoV0RegClassID - 96)) |
155 (1u << (RISCV::VMV0RegClassID - 96)) |
156 (1u << (RISCV::VRM2_with_sub_vrm1_0_in_VMV0RegClassID - 96)) |
157 (1u << (RISCV::VRM4_with_sub_vrm1_0_in_VMV0RegClassID - 96)) |
158 0,
159 // 128-159
160 (1u << (RISCV::VRM8RegClassID - 128)) |
161 (1u << (RISCV::VRM8NoV0RegClassID - 128)) |
162 (1u << (RISCV::VRM8_with_sub_vrm4_0_in_VRM4_with_sub_vrm1_0_in_VMV0RegClassID - 128)) |
163 0,
164};
165
166constexpr RegisterBank FPRBRegBank(/* ID */ RISCV::FPRBRegBankID, /* Name */ "FPRB", /* CoveredRegClasses */ FPRBRegBankCoverageData, /* NumRegClasses */ 151);
167constexpr RegisterBank GPRBRegBank(/* ID */ RISCV::GPRBRegBankID, /* Name */ "GPRB", /* CoveredRegClasses */ GPRBRegBankCoverageData, /* NumRegClasses */ 151);
168constexpr RegisterBank VRBRegBank(/* ID */ RISCV::VRBRegBankID, /* Name */ "VRB", /* CoveredRegClasses */ VRBRegBankCoverageData, /* NumRegClasses */ 151);
169
170} // namespace RISCV
171
172const RegisterBank *RISCVGenRegisterBankInfo::RegBanks[] = {
173 &RISCV::FPRBRegBank,
174 &RISCV::GPRBRegBank,
175 &RISCV::VRBRegBank,
176};
177
178const unsigned RISCVGenRegisterBankInfo::Sizes[] = {
179 // Mode = 0 (DefaultMode)
180 64,
181 64,
182 512,
183 // Mode = 1 (RV64)
184 64,
185 128,
186 512,
187};
188
189RISCVGenRegisterBankInfo::RISCVGenRegisterBankInfo(unsigned HwMode)
190 : RegisterBankInfo(RegBanks, RISCV::NumRegisterBanks, Sizes, HwMode) {
191 // Assert that RegBank indices match their ID's
192#ifndef NDEBUG
193 for (auto RB : enumerate(RegBanks))
194 assert(RB.index() == RB.value()->getID() && "Index != ID");
195#endif // NDEBUG
196}
197
198const RegisterBank &
199RISCVGenRegisterBankInfo::getRegBankFromRegClass(const TargetRegisterClass &RC, LLT) const {
200 constexpr uint32_t InvalidRegBankID = uint32_t(RISCV::InvalidRegBankID) & 3;
201 static const uint32_t RegClass2RegBank[10] = {
202 (uint32_t(InvalidRegBankID) << 0) |
203 (uint32_t(InvalidRegBankID) << 2) |
204 (uint32_t(RISCV::FPRBRegBankID) << 4) | // FPR16RegClassID
205 (uint32_t(RISCV::GPRBRegBankID) << 6) | // GPRF16RegClassID
206 (uint32_t(RISCV::GPRBRegBankID) << 8) | // GPRF16NoX0RegClassID
207 (uint32_t(RISCV::FPRBRegBankID) << 10) | // FPR16CRegClassID
208 (uint32_t(RISCV::GPRBRegBankID) << 12) | // GPRF16CRegClassID
209 (uint32_t(RISCV::GPRBRegBankID) << 14) | // GPRAllRegClassID
210 (uint32_t(RISCV::FPRBRegBankID) << 16) | // FPR32RegClassID
211 (uint32_t(RISCV::GPRBRegBankID) << 18) | // GPRRegClassID
212 (uint32_t(RISCV::GPRBRegBankID) << 20) | // GPRF32RegClassID
213 (uint32_t(RISCV::GPRBRegBankID) << 22) | // GPRF32NoX0RegClassID
214 (uint32_t(RISCV::GPRBRegBankID) << 24) | // GPRNoX0RegClassID
215 (uint32_t(RISCV::GPRBRegBankID) << 26) | // GPRNoX2RegClassID
216 (uint32_t(RISCV::GPRBRegBankID) << 28) | // GPRNoX31RegClassID
217 (uint32_t(RISCV::GPRBRegBankID) << 30), // GPRNoX0X2RegClassID
218 (uint32_t(RISCV::GPRBRegBankID) << 0) | // GPRNoX0_and_GPRNoX31RegClassID
219 (uint32_t(RISCV::GPRBRegBankID) << 2) | // GPRNoX2_and_GPRNoX31RegClassID
220 (uint32_t(RISCV::GPRBRegBankID) << 4) | // GPRNoX0X2_and_GPRNoX31RegClassID
221 (uint32_t(RISCV::GPRBRegBankID) << 6) | // GPRJALRRegClassID
222 (uint32_t(RISCV::GPRBRegBankID) << 8) | // GPRJALRNonX7RegClassID
223 (uint32_t(RISCV::GPRBRegBankID) << 10) | // GPRJALR_and_GPRNoX31RegClassID
224 (uint32_t(RISCV::GPRBRegBankID) << 12) | // GPRJALRNonX7_and_GPRNoX31RegClassID
225 (uint32_t(InvalidRegBankID) << 14) |
226 (uint32_t(RISCV::GPRBRegBankID) << 16) | // GPRTCRegClassID
227 (uint32_t(RISCV::GPRBRegBankID) << 18) | // GPRNoX31_and_GPRTCRegClassID
228 (uint32_t(RISCV::GPRBRegBankID) << 20) | // GPRTCNonX7RegClassID
229 (uint32_t(RISCV::GPRBRegBankID) << 22) | // GPRNoX31_and_GPRTCNonX7RegClassID
230 (uint32_t(RISCV::FPRBRegBankID) << 24) | // FPR32CRegClassID
231 (uint32_t(RISCV::GPRBRegBankID) << 26) | // GPRCRegClassID
232 (uint32_t(RISCV::GPRBRegBankID) << 28) | // GPRF32CRegClassID
233 (uint32_t(RISCV::GPRBRegBankID) << 30), // SR07RegClassID
234 (uint32_t(InvalidRegBankID) << 0) |
235 (uint32_t(RISCV::GPRBRegBankID) << 2) | // GPRC_and_GPRTCRegClassID
236 (uint32_t(InvalidRegBankID) << 4) |
237 (uint32_t(InvalidRegBankID) << 6) |
238 (uint32_t(RISCV::GPRBRegBankID) << 8) | // GPRC_and_SR07RegClassID
239 (uint32_t(RISCV::GPRBRegBankID) << 10) | // GPRX1X5RegClassID
240 (uint32_t(RISCV::GPRBRegBankID) << 12) | // GPRX0RegClassID
241 (uint32_t(RISCV::GPRBRegBankID) << 14) | // GPRX1RegClassID
242 (uint32_t(RISCV::GPRBRegBankID) << 16) | // GPRX5RegClassID
243 (uint32_t(RISCV::GPRBRegBankID) << 18) | // GPRX7RegClassID
244 (uint32_t(RISCV::GPRBRegBankID) << 20) | // SPRegClassID
245 (uint32_t(InvalidRegBankID) << 22) |
246 (uint32_t(RISCV::GPRBRegBankID) << 24) | // GPRPairRegClassID
247 (uint32_t(RISCV::GPRBRegBankID) << 26) | // GPRPairNoX0RegClassID
248 (uint32_t(RISCV::GPRBRegBankID) << 28) | // GPRPair_with_sub_gpr_even_in_GPRNoX2RegClassID
249 (uint32_t(RISCV::GPRBRegBankID) << 30), // GPRPair_with_sub_gpr_even_in_GPRNoX0X2RegClassID
250 (uint32_t(RISCV::GPRBRegBankID) << 0) | // GPRPair_with_sub_gpr_odd_in_GPRNoX31RegClassID
251 (uint32_t(RISCV::GPRBRegBankID) << 2) | // GPRPair_with_sub_gpr_even_in_GPRJALRRegClassID
252 (uint32_t(RISCV::GPRBRegBankID) << 4) | // GPRPair_with_sub_gpr_even_in_GPRNoX0X2_and_GPRPair_with_sub_gpr_odd_in_GPRNoX31RegClassID
253 (uint32_t(RISCV::GPRBRegBankID) << 6) | // GPRPair_with_sub_gpr_odd_in_GPRJALRNonX7RegClassID
254 (uint32_t(RISCV::GPRBRegBankID) << 8) | // GPRPair_with_sub_gpr_odd_in_GPRJALR_and_GPRNoX31RegClassID
255 (uint32_t(RISCV::GPRBRegBankID) << 10) | // GPRPair_with_sub_gpr_odd_in_GPRJALRNonX7_and_GPRNoX31RegClassID
256 (uint32_t(RISCV::GPRBRegBankID) << 12) | // GPRPair_with_sub_gpr_even_in_GPRTCRegClassID
257 (uint32_t(RISCV::GPRBRegBankID) << 14) | // GPRPair_with_sub_gpr_odd_in_GPRNoX31_and_GPRTCRegClassID
258 (uint32_t(RISCV::GPRBRegBankID) << 16) | // GPRPair_with_sub_gpr_odd_in_GPRTCNonX7RegClassID
259 (uint32_t(RISCV::GPRBRegBankID) << 18) | // GPRPair_with_sub_gpr_odd_in_GPRNoX31_and_GPRTCNonX7RegClassID
260 (uint32_t(RISCV::GPRBRegBankID) << 20) | // GPRPairCRegClassID
261 (uint32_t(RISCV::GPRBRegBankID) << 22) | // GPRPair_with_sub_gpr_even_in_SR07RegClassID
262 (uint32_t(RISCV::GPRBRegBankID) << 24) | // GPRPair_with_sub_gpr_even_in_GPRC_and_GPRTCRegClassID
263 (uint32_t(RISCV::GPRBRegBankID) << 26) | // GPRPair_with_sub_gpr_even_in_GPRC_and_SR07RegClassID
264 (uint32_t(RISCV::GPRBRegBankID) << 28) | // GPRPair_with_sub_gpr_even_in_GPRX0RegClassID
265 (uint32_t(RISCV::GPRBRegBankID) << 30), // GPRPair_with_sub_gpr_even_in_SPRegClassID
266 (uint32_t(RISCV::GPRBRegBankID) << 0) | // GPRPair_with_sub_gpr_odd_in_GPRX1X5RegClassID
267 (uint32_t(RISCV::GPRBRegBankID) << 2) | // GPRPair_with_sub_gpr_odd_in_GPRX7RegClassID
268 (uint32_t(RISCV::FPRBRegBankID) << 4) | // FPR64RegClassID
269 (uint32_t(RISCV::VRBRegBankID) << 6) | // VRRegClassID
270 (uint32_t(InvalidRegBankID) << 8) |
271 (uint32_t(RISCV::VRBRegBankID) << 10) | // ZZZ_VMRegClassID
272 (uint32_t(RISCV::VRBRegBankID) << 12) | // ZZZ_VRMF2RegClassID
273 (uint32_t(RISCV::VRBRegBankID) << 14) | // ZZZ_VRMF4RegClassID
274 (uint32_t(RISCV::VRBRegBankID) << 16) | // ZZZ_VRMF8RegClassID
275 (uint32_t(RISCV::VRBRegBankID) << 18) | // VRNoV0RegClassID
276 (uint32_t(InvalidRegBankID) << 20) |
277 (uint32_t(InvalidRegBankID) << 22) |
278 (uint32_t(InvalidRegBankID) << 24) |
279 (uint32_t(RISCV::VRBRegBankID) << 26) | // ZZZ_VMNoV0RegClassID
280 (uint32_t(RISCV::VRBRegBankID) << 28) | // ZZZ_VRMF2NoV0RegClassID
281 (uint32_t(RISCV::VRBRegBankID) << 30), // ZZZ_VRMF4NoV0RegClassID
282 (uint32_t(RISCV::VRBRegBankID) << 0) | // ZZZ_VRMF8NoV0RegClassID
283 (uint32_t(InvalidRegBankID) << 2) |
284 (uint32_t(InvalidRegBankID) << 4) |
285 (uint32_t(InvalidRegBankID) << 6) |
286 (uint32_t(InvalidRegBankID) << 8) |
287 (uint32_t(InvalidRegBankID) << 10) |
288 (uint32_t(InvalidRegBankID) << 12) |
289 (uint32_t(InvalidRegBankID) << 14) |
290 (uint32_t(InvalidRegBankID) << 16) |
291 (uint32_t(InvalidRegBankID) << 18) |
292 (uint32_t(InvalidRegBankID) << 20) |
293 (uint32_t(InvalidRegBankID) << 22) |
294 (uint32_t(InvalidRegBankID) << 24) |
295 (uint32_t(RISCV::FPRBRegBankID) << 26) | // FPR64CRegClassID
296 (uint32_t(InvalidRegBankID) << 28) |
297 (uint32_t(InvalidRegBankID) << 30),
298 (uint32_t(InvalidRegBankID) << 0) |
299 (uint32_t(InvalidRegBankID) << 2) |
300 (uint32_t(InvalidRegBankID) << 4) |
301 (uint32_t(RISCV::VRBRegBankID) << 6) | // VMV0RegClassID
302 (uint32_t(InvalidRegBankID) << 8) |
303 (uint32_t(InvalidRegBankID) << 10) |
304 (uint32_t(InvalidRegBankID) << 12) |
305 (uint32_t(InvalidRegBankID) << 14) |
306 (uint32_t(InvalidRegBankID) << 16) |
307 (uint32_t(InvalidRegBankID) << 18) |
308 (uint32_t(InvalidRegBankID) << 20) |
309 (uint32_t(RISCV::VRBRegBankID) << 22) | // VRM2RegClassID
310 (uint32_t(RISCV::VRBRegBankID) << 24) | // VRM2NoV0RegClassID
311 (uint32_t(RISCV::VRBRegBankID) << 26) | // VRM2_with_sub_vrm1_0_in_VMV0RegClassID
312 (uint32_t(InvalidRegBankID) << 28) |
313 (uint32_t(InvalidRegBankID) << 30),
314 (uint32_t(InvalidRegBankID) << 0) |
315 (uint32_t(InvalidRegBankID) << 2) |
316 (uint32_t(InvalidRegBankID) << 4) |
317 (uint32_t(InvalidRegBankID) << 6) |
318 (uint32_t(InvalidRegBankID) << 8) |
319 (uint32_t(InvalidRegBankID) << 10) |
320 (uint32_t(InvalidRegBankID) << 12) |
321 (uint32_t(InvalidRegBankID) << 14) |
322 (uint32_t(RISCV::VRBRegBankID) << 16) | // VRM4RegClassID
323 (uint32_t(RISCV::VRBRegBankID) << 18) | // VRM4NoV0RegClassID
324 (uint32_t(RISCV::VRBRegBankID) << 20) | // VRM4_with_sub_vrm1_0_in_VMV0RegClassID
325 (uint32_t(InvalidRegBankID) << 22) |
326 (uint32_t(InvalidRegBankID) << 24) |
327 (uint32_t(InvalidRegBankID) << 26) |
328 (uint32_t(InvalidRegBankID) << 28) |
329 (uint32_t(InvalidRegBankID) << 30),
330 (uint32_t(InvalidRegBankID) << 0) |
331 (uint32_t(InvalidRegBankID) << 2) |
332 (uint32_t(InvalidRegBankID) << 4) |
333 (uint32_t(InvalidRegBankID) << 6) |
334 (uint32_t(InvalidRegBankID) << 8) |
335 (uint32_t(InvalidRegBankID) << 10) |
336 (uint32_t(InvalidRegBankID) << 12) |
337 (uint32_t(InvalidRegBankID) << 14) |
338 (uint32_t(InvalidRegBankID) << 16) |
339 (uint32_t(InvalidRegBankID) << 18) |
340 (uint32_t(InvalidRegBankID) << 20) |
341 (uint32_t(InvalidRegBankID) << 22) |
342 (uint32_t(InvalidRegBankID) << 24) |
343 (uint32_t(InvalidRegBankID) << 26) |
344 (uint32_t(InvalidRegBankID) << 28) |
345 (uint32_t(InvalidRegBankID) << 30),
346 (uint32_t(InvalidRegBankID) << 0) |
347 (uint32_t(RISCV::VRBRegBankID) << 2) | // VRM8RegClassID
348 (uint32_t(RISCV::VRBRegBankID) << 4) | // VRM8NoV0RegClassID
349 (uint32_t(RISCV::VRBRegBankID) << 6) // VRM8_with_sub_vrm4_0_in_VRM4_with_sub_vrm1_0_in_VMV0RegClassID
350 };
351 const unsigned RegClassID = RC.getID();
352 if (LLVM_LIKELY(RegClassID < 148)) {
353 unsigned RegBankID = (RegClass2RegBank[RegClassID / 16] >> ((RegClassID % 16) * 2)) & 3;
354 if (RegBankID != InvalidRegBankID)
355 return getRegBank(RegBankID);
356 }
357 llvm_unreachable(llvm::Twine("Target needs to handle register class ID 0x").concat(llvm::Twine::utohexstr(RegClassID)).str().c_str());
358}
359
360} // namespace llvm
361
362#endif // GET_TARGET_REGBANK_IMPL
363
364