1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Target Register and Register Classes Information *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9namespace llvm {
10
11extern const MCRegisterClass R600MCRegisterClasses[];
12
13static const MVT::SimpleValueType R600VTLists[] = {
14 /* 0 */ MVT::f32, MVT::i32, MVT::Other,
15 /* 3 */ MVT::v2f32, MVT::v2i32, MVT::i64, MVT::f64, MVT::Other,
16 /* 8 */ MVT::v2f32, MVT::v2i32, MVT::Other,
17 /* 11 */ MVT::v4f32, MVT::v4i32, MVT::Other,
18};
19
20#ifdef __GNUC__
21#pragma GCC diagnostic push
22#pragma GCC diagnostic ignored "-Woverlength-strings"
23#endif
24static constexpr char R600SubRegIndexStrings[] = {
25 /* 0 */ "sub10\000"
26 /* 6 */ "sub0\000"
27 /* 11 */ "sub11\000"
28 /* 17 */ "sub1\000"
29 /* 22 */ "sub12\000"
30 /* 28 */ "sub2\000"
31 /* 33 */ "sub13\000"
32 /* 39 */ "sub3\000"
33 /* 44 */ "sub14\000"
34 /* 50 */ "sub4\000"
35 /* 55 */ "sub15\000"
36 /* 61 */ "sub5\000"
37 /* 66 */ "sub6\000"
38 /* 71 */ "sub7\000"
39 /* 76 */ "sub8\000"
40 /* 81 */ "sub9\000"
41};
42#ifdef __GNUC__
43#pragma GCC diagnostic pop
44#endif
45
46
47static constexpr uint32_t R600SubRegIndexNameOffsets[] = {
48 6,
49 17,
50 28,
51 39,
52 50,
53 61,
54 66,
55 71,
56 76,
57 81,
58 0,
59 11,
60 22,
61 33,
62 44,
63 55,
64};
65
66static const TargetRegisterInfo::SubRegCoveredBits R600SubRegIdxRangeTable[] = {
67 { .Offset: 4294967295, .Size: 4294967295 },
68 { .Offset: 0, .Size: 32 }, // sub0
69 { .Offset: 32, .Size: 32 }, // sub1
70 { .Offset: 64, .Size: 32 }, // sub2
71 { .Offset: 96, .Size: 32 }, // sub3
72 { .Offset: 128, .Size: 32 }, // sub4
73 { .Offset: 160, .Size: 32 }, // sub5
74 { .Offset: 192, .Size: 32 }, // sub6
75 { .Offset: 224, .Size: 32 }, // sub7
76 { .Offset: 256, .Size: 32 }, // sub8
77 { .Offset: 288, .Size: 32 }, // sub9
78 { .Offset: 320, .Size: 32 }, // sub10
79 { .Offset: 352, .Size: 32 }, // sub11
80 { .Offset: 384, .Size: 32 }, // sub12
81 { .Offset: 416, .Size: 32 }, // sub13
82 { .Offset: 448, .Size: 32 }, // sub14
83 { .Offset: 480, .Size: 32 }, // sub15
84};
85
86
87static const LaneBitmask R600SubRegIndexLaneMaskTable[] = {
88 LaneBitmask::getAll(),
89 LaneBitmask(0x0000000000000001), // sub0
90 LaneBitmask(0x0000000000000002), // sub1
91 LaneBitmask(0x0000000000000004), // sub2
92 LaneBitmask(0x0000000000000008), // sub3
93 LaneBitmask(0x0000000000000010), // sub4
94 LaneBitmask(0x0000000000000020), // sub5
95 LaneBitmask(0x0000000000000040), // sub6
96 LaneBitmask(0x0000000000000080), // sub7
97 LaneBitmask(0x0000000000000100), // sub8
98 LaneBitmask(0x0000000000000200), // sub9
99 LaneBitmask(0x0000000000000400), // sub10
100 LaneBitmask(0x0000000000000800), // sub11
101 LaneBitmask(0x0000000000001000), // sub12
102 LaneBitmask(0x0000000000002000), // sub13
103 LaneBitmask(0x0000000000004000), // sub14
104 LaneBitmask(0x0000000000008000), // sub15
105 };
106
107
108
109static const TargetRegisterInfo::RegClassInfo R600RegClassInfos[] = {
110 // Mode = 0 (DefaultMode)
111 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_Reg32
112 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_TReg32
113 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_TReg32_X
114 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 1 }, // R600_Addr
115 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC0
116 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC1
117 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_TReg32_W
118 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_TReg32_Y
119 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_TReg32_Z
120 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_ArrayBase
121 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC0_W
122 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC0_X
123 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC0_Y
124 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC0_Z
125 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC1_W
126 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC1_X
127 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC1_Y
128 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_KC1_Z
129 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 1 }, // R600_LDS_SRC_REG
130 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 1 }, // R600_Predicate
131 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 1 }, // R600_Addr_W
132 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 1 }, // R600_Addr_Y
133 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 1 }, // R600_Addr_Z
134 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 0 }, // R600_LDS_SRC_REG_and_R600_Reg32
135 { .RegSize: 32, .SpillSize: 32, .SpillAlignment: 32, /*R600VTLists+*/.VTListOffset: 1 }, // R600_Predicate_Bit
136 { .RegSize: 64, .SpillSize: 64, .SpillAlignment: 64, /*R600VTLists+*/.VTListOffset: 3 }, // R600_Reg64
137 { .RegSize: 64, .SpillSize: 64, .SpillAlignment: 64, /*R600VTLists+*/.VTListOffset: 8 }, // R600_Reg64Vertical
138 { .RegSize: 64, .SpillSize: 64, .SpillAlignment: 64, /*R600VTLists+*/.VTListOffset: 8 }, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W
139 { .RegSize: 64, .SpillSize: 64, .SpillAlignment: 64, /*R600VTLists+*/.VTListOffset: 8 }, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X
140 { .RegSize: 64, .SpillSize: 64, .SpillAlignment: 64, /*R600VTLists+*/.VTListOffset: 8 }, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y
141 { .RegSize: 64, .SpillSize: 64, .SpillAlignment: 64, /*R600VTLists+*/.VTListOffset: 8 }, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z
142 { .RegSize: 128, .SpillSize: 128, .SpillAlignment: 128, /*R600VTLists+*/.VTListOffset: 11 }, // R600_Reg128
143 { .RegSize: 128, .SpillSize: 128, .SpillAlignment: 128, /*R600VTLists+*/.VTListOffset: 11 }, // R600_Reg128Vertical
144 { .RegSize: 128, .SpillSize: 128, .SpillAlignment: 128, /*R600VTLists+*/.VTListOffset: 11 }, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
145 { .RegSize: 128, .SpillSize: 128, .SpillAlignment: 128, /*R600VTLists+*/.VTListOffset: 11 }, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
146 { .RegSize: 128, .SpillSize: 128, .SpillAlignment: 128, /*R600VTLists+*/.VTListOffset: 11 }, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
147 { .RegSize: 128, .SpillSize: 128, .SpillAlignment: 128, /*R600VTLists+*/.VTListOffset: 11 }, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
148};
149static const uint32_t R600_Reg32SubClassMask[] = {
150 0x0083ffff, 0x00000000,
151 0xfe000000, 0x0000001f, // sub0
152 0xfe000000, 0x0000001f, // sub1
153 0x80000000, 0x0000001f, // sub2
154 0x80000000, 0x0000001f, // sub3
155};
156
157static const uint32_t R600_TReg32SubClassMask[] = {
158 0x000001c6, 0x00000000,
159 0xfe000000, 0x0000001f, // sub0
160 0xfe000000, 0x0000001f, // sub1
161 0x80000000, 0x0000001f, // sub2
162 0x80000000, 0x0000001f, // sub3
163};
164
165static const uint32_t R600_TReg32_XSubClassMask[] = {
166 0x00000004, 0x00000000,
167 0x92000000, 0x00000004, // sub0
168 0x10000000, 0x00000004, // sub1
169 0x00000000, 0x00000004, // sub2
170 0x00000000, 0x00000004, // sub3
171};
172
173static const uint32_t R600_AddrSubClassMask[] = {
174 0x00000008, 0x00000000,
175};
176
177static const uint32_t R600_KC0SubClassMask[] = {
178 0x00003c10, 0x00000000,
179};
180
181static const uint32_t R600_KC1SubClassMask[] = {
182 0x0003c020, 0x00000000,
183};
184
185static const uint32_t R600_TReg32_WSubClassMask[] = {
186 0x00000040, 0x00000000,
187 0x08000000, 0x00000002, // sub0
188 0x08000000, 0x00000002, // sub1
189 0x00000000, 0x00000002, // sub2
190 0x80000000, 0x00000002, // sub3
191};
192
193static const uint32_t R600_TReg32_YSubClassMask[] = {
194 0x00000080, 0x00000000,
195 0x20000000, 0x00000008, // sub0
196 0xa2000000, 0x00000008, // sub1
197 0x00000000, 0x00000008, // sub2
198 0x00000000, 0x00000008, // sub3
199};
200
201static const uint32_t R600_TReg32_ZSubClassMask[] = {
202 0x00000100, 0x00000000,
203 0x40000000, 0x00000010, // sub0
204 0x40000000, 0x00000010, // sub1
205 0x80000000, 0x00000010, // sub2
206 0x00000000, 0x00000010, // sub3
207};
208
209static const uint32_t R600_ArrayBaseSubClassMask[] = {
210 0x00000200, 0x00000000,
211};
212
213static const uint32_t R600_KC0_WSubClassMask[] = {
214 0x00000400, 0x00000000,
215};
216
217static const uint32_t R600_KC0_XSubClassMask[] = {
218 0x00000800, 0x00000000,
219};
220
221static const uint32_t R600_KC0_YSubClassMask[] = {
222 0x00001000, 0x00000000,
223};
224
225static const uint32_t R600_KC0_ZSubClassMask[] = {
226 0x00002000, 0x00000000,
227};
228
229static const uint32_t R600_KC1_WSubClassMask[] = {
230 0x00004000, 0x00000000,
231};
232
233static const uint32_t R600_KC1_XSubClassMask[] = {
234 0x00008000, 0x00000000,
235};
236
237static const uint32_t R600_KC1_YSubClassMask[] = {
238 0x00010000, 0x00000000,
239};
240
241static const uint32_t R600_KC1_ZSubClassMask[] = {
242 0x00020000, 0x00000000,
243};
244
245static const uint32_t R600_LDS_SRC_REGSubClassMask[] = {
246 0x00840000, 0x00000000,
247};
248
249static const uint32_t R600_PredicateSubClassMask[] = {
250 0x00080000, 0x00000000,
251};
252
253static const uint32_t R600_Addr_WSubClassMask[] = {
254 0x00100000, 0x00000000,
255};
256
257static const uint32_t R600_Addr_YSubClassMask[] = {
258 0x00200000, 0x00000000,
259};
260
261static const uint32_t R600_Addr_ZSubClassMask[] = {
262 0x00400000, 0x00000000,
263};
264
265static const uint32_t R600_LDS_SRC_REG_and_R600_Reg32SubClassMask[] = {
266 0x00800000, 0x00000000,
267};
268
269static const uint32_t R600_Predicate_BitSubClassMask[] = {
270 0x01000000, 0x00000000,
271};
272
273static const uint32_t R600_Reg64SubClassMask[] = {
274 0x02000000, 0x00000000,
275};
276
277static const uint32_t R600_Reg64VerticalSubClassMask[] = {
278 0x7c000000, 0x00000000,
279};
280
281static const uint32_t R600_Reg64Vertical_with_sub0_in_R600_TReg32_WSubClassMask[] = {
282 0x08000000, 0x00000000,
283};
284
285static const uint32_t R600_Reg64Vertical_with_sub0_in_R600_TReg32_XSubClassMask[] = {
286 0x10000000, 0x00000000,
287};
288
289static const uint32_t R600_Reg64Vertical_with_sub0_in_R600_TReg32_YSubClassMask[] = {
290 0x20000000, 0x00000000,
291};
292
293static const uint32_t R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZSubClassMask[] = {
294 0x40000000, 0x00000000,
295};
296
297static const uint32_t R600_Reg128SubClassMask[] = {
298 0x80000000, 0x00000000,
299};
300
301static const uint32_t R600_Reg128VerticalSubClassMask[] = {
302 0x00000000, 0x0000001f,
303};
304
305static const uint32_t R600_Reg128Vertical_with_sub0_in_R600_TReg32_WSubClassMask[] = {
306 0x00000000, 0x00000002,
307};
308
309static const uint32_t R600_Reg128Vertical_with_sub0_in_R600_TReg32_XSubClassMask[] = {
310 0x00000000, 0x00000004,
311};
312
313static const uint32_t R600_Reg128Vertical_with_sub0_in_R600_TReg32_YSubClassMask[] = {
314 0x00000000, 0x00000008,
315};
316
317static const uint32_t R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZSubClassMask[] = {
318 0x00000000, 0x00000010,
319};
320
321static const uint16_t SuperRegIdxSeqs[] = {
322 /* 0 */ 1, 2, 3, 4, 0,
323};
324
325static unsigned const R600_TReg32Superclasses[] = {
326 R600::R600_Reg32RegClassID,
327};
328
329static unsigned const R600_TReg32_XSuperclasses[] = {
330 R600::R600_Reg32RegClassID,
331 R600::R600_TReg32RegClassID,
332};
333
334static unsigned const R600_AddrSuperclasses[] = {
335 R600::R600_Reg32RegClassID,
336};
337
338static unsigned const R600_KC0Superclasses[] = {
339 R600::R600_Reg32RegClassID,
340};
341
342static unsigned const R600_KC1Superclasses[] = {
343 R600::R600_Reg32RegClassID,
344};
345
346static unsigned const R600_TReg32_WSuperclasses[] = {
347 R600::R600_Reg32RegClassID,
348 R600::R600_TReg32RegClassID,
349};
350
351static unsigned const R600_TReg32_YSuperclasses[] = {
352 R600::R600_Reg32RegClassID,
353 R600::R600_TReg32RegClassID,
354};
355
356static unsigned const R600_TReg32_ZSuperclasses[] = {
357 R600::R600_Reg32RegClassID,
358 R600::R600_TReg32RegClassID,
359};
360
361static unsigned const R600_ArrayBaseSuperclasses[] = {
362 R600::R600_Reg32RegClassID,
363};
364
365static unsigned const R600_KC0_WSuperclasses[] = {
366 R600::R600_Reg32RegClassID,
367 R600::R600_KC0RegClassID,
368};
369
370static unsigned const R600_KC0_XSuperclasses[] = {
371 R600::R600_Reg32RegClassID,
372 R600::R600_KC0RegClassID,
373};
374
375static unsigned const R600_KC0_YSuperclasses[] = {
376 R600::R600_Reg32RegClassID,
377 R600::R600_KC0RegClassID,
378};
379
380static unsigned const R600_KC0_ZSuperclasses[] = {
381 R600::R600_Reg32RegClassID,
382 R600::R600_KC0RegClassID,
383};
384
385static unsigned const R600_KC1_WSuperclasses[] = {
386 R600::R600_Reg32RegClassID,
387 R600::R600_KC1RegClassID,
388};
389
390static unsigned const R600_KC1_XSuperclasses[] = {
391 R600::R600_Reg32RegClassID,
392 R600::R600_KC1RegClassID,
393};
394
395static unsigned const R600_KC1_YSuperclasses[] = {
396 R600::R600_Reg32RegClassID,
397 R600::R600_KC1RegClassID,
398};
399
400static unsigned const R600_KC1_ZSuperclasses[] = {
401 R600::R600_Reg32RegClassID,
402 R600::R600_KC1RegClassID,
403};
404
405static unsigned const R600_LDS_SRC_REG_and_R600_Reg32Superclasses[] = {
406 R600::R600_Reg32RegClassID,
407 R600::R600_LDS_SRC_REGRegClassID,
408};
409
410static unsigned const R600_Reg64Vertical_with_sub0_in_R600_TReg32_WSuperclasses[] = {
411 R600::R600_Reg64VerticalRegClassID,
412};
413
414static unsigned const R600_Reg64Vertical_with_sub0_in_R600_TReg32_XSuperclasses[] = {
415 R600::R600_Reg64VerticalRegClassID,
416};
417
418static unsigned const R600_Reg64Vertical_with_sub0_in_R600_TReg32_YSuperclasses[] = {
419 R600::R600_Reg64VerticalRegClassID,
420};
421
422static unsigned const R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZSuperclasses[] = {
423 R600::R600_Reg64VerticalRegClassID,
424};
425
426static unsigned const R600_Reg128Vertical_with_sub0_in_R600_TReg32_WSuperclasses[] = {
427 R600::R600_Reg128VerticalRegClassID,
428};
429
430static unsigned const R600_Reg128Vertical_with_sub0_in_R600_TReg32_XSuperclasses[] = {
431 R600::R600_Reg128VerticalRegClassID,
432};
433
434static unsigned const R600_Reg128Vertical_with_sub0_in_R600_TReg32_YSuperclasses[] = {
435 R600::R600_Reg128VerticalRegClassID,
436};
437
438static unsigned const R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZSuperclasses[] = {
439 R600::R600_Reg128VerticalRegClassID,
440};
441
442namespace R600 {
443
444// Register class instances.
445 extern const TargetRegisterClass R600_Reg32RegClass = {
446 .MC: &R600MCRegisterClasses[R600_Reg32RegClassID],
447 .SubClassMask: R600_Reg32SubClassMask,
448 .SuperRegIndices: SuperRegIdxSeqs + 0,
449 .LaneMask: LaneBitmask(0x0000000000000001),
450 .AllocationPriority: 0,
451 .GlobalPriority: false,
452 .TSFlags: 0x00, /* TSFlags */
453 .SpillStackID: 0, /* SpillStackID */
454 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
455 .CoveredBySubRegs: false, /* CoveredBySubRegs */
456 .SuperClasses: nullptr, .SuperClassesSize: 0,
457 .OrderFunc: nullptr
458 };
459
460 extern const TargetRegisterClass R600_TReg32RegClass = {
461 .MC: &R600MCRegisterClasses[R600_TReg32RegClassID],
462 .SubClassMask: R600_TReg32SubClassMask,
463 .SuperRegIndices: SuperRegIdxSeqs + 0,
464 .LaneMask: LaneBitmask(0x0000000000000001),
465 .AllocationPriority: 0,
466 .GlobalPriority: false,
467 .TSFlags: 0x00, /* TSFlags */
468 .SpillStackID: 0, /* SpillStackID */
469 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
470 .CoveredBySubRegs: false, /* CoveredBySubRegs */
471 .SuperClasses: R600_TReg32Superclasses, .SuperClassesSize: 1,
472 .OrderFunc: nullptr
473 };
474
475 extern const TargetRegisterClass R600_TReg32_XRegClass = {
476 .MC: &R600MCRegisterClasses[R600_TReg32_XRegClassID],
477 .SubClassMask: R600_TReg32_XSubClassMask,
478 .SuperRegIndices: SuperRegIdxSeqs + 0,
479 .LaneMask: LaneBitmask(0x0000000000000001),
480 .AllocationPriority: 0,
481 .GlobalPriority: false,
482 .TSFlags: 0x00, /* TSFlags */
483 .SpillStackID: 0, /* SpillStackID */
484 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
485 .CoveredBySubRegs: false, /* CoveredBySubRegs */
486 .SuperClasses: R600_TReg32_XSuperclasses, .SuperClassesSize: 2,
487 .OrderFunc: nullptr
488 };
489
490 extern const TargetRegisterClass R600_AddrRegClass = {
491 .MC: &R600MCRegisterClasses[R600_AddrRegClassID],
492 .SubClassMask: R600_AddrSubClassMask,
493 .SuperRegIndices: SuperRegIdxSeqs + 4,
494 .LaneMask: LaneBitmask(0x0000000000000001),
495 .AllocationPriority: 0,
496 .GlobalPriority: false,
497 .TSFlags: 0x00, /* TSFlags */
498 .SpillStackID: 0, /* SpillStackID */
499 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
500 .CoveredBySubRegs: false, /* CoveredBySubRegs */
501 .SuperClasses: R600_AddrSuperclasses, .SuperClassesSize: 1,
502 .OrderFunc: nullptr
503 };
504
505 extern const TargetRegisterClass R600_KC0RegClass = {
506 .MC: &R600MCRegisterClasses[R600_KC0RegClassID],
507 .SubClassMask: R600_KC0SubClassMask,
508 .SuperRegIndices: SuperRegIdxSeqs + 4,
509 .LaneMask: LaneBitmask(0x0000000000000001),
510 .AllocationPriority: 0,
511 .GlobalPriority: false,
512 .TSFlags: 0x00, /* TSFlags */
513 .SpillStackID: 0, /* SpillStackID */
514 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
515 .CoveredBySubRegs: false, /* CoveredBySubRegs */
516 .SuperClasses: R600_KC0Superclasses, .SuperClassesSize: 1,
517 .OrderFunc: nullptr
518 };
519
520 extern const TargetRegisterClass R600_KC1RegClass = {
521 .MC: &R600MCRegisterClasses[R600_KC1RegClassID],
522 .SubClassMask: R600_KC1SubClassMask,
523 .SuperRegIndices: SuperRegIdxSeqs + 4,
524 .LaneMask: LaneBitmask(0x0000000000000001),
525 .AllocationPriority: 0,
526 .GlobalPriority: false,
527 .TSFlags: 0x00, /* TSFlags */
528 .SpillStackID: 0, /* SpillStackID */
529 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
530 .CoveredBySubRegs: false, /* CoveredBySubRegs */
531 .SuperClasses: R600_KC1Superclasses, .SuperClassesSize: 1,
532 .OrderFunc: nullptr
533 };
534
535 extern const TargetRegisterClass R600_TReg32_WRegClass = {
536 .MC: &R600MCRegisterClasses[R600_TReg32_WRegClassID],
537 .SubClassMask: R600_TReg32_WSubClassMask,
538 .SuperRegIndices: SuperRegIdxSeqs + 0,
539 .LaneMask: LaneBitmask(0x0000000000000001),
540 .AllocationPriority: 0,
541 .GlobalPriority: false,
542 .TSFlags: 0x00, /* TSFlags */
543 .SpillStackID: 0, /* SpillStackID */
544 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
545 .CoveredBySubRegs: false, /* CoveredBySubRegs */
546 .SuperClasses: R600_TReg32_WSuperclasses, .SuperClassesSize: 2,
547 .OrderFunc: nullptr
548 };
549
550 extern const TargetRegisterClass R600_TReg32_YRegClass = {
551 .MC: &R600MCRegisterClasses[R600_TReg32_YRegClassID],
552 .SubClassMask: R600_TReg32_YSubClassMask,
553 .SuperRegIndices: SuperRegIdxSeqs + 0,
554 .LaneMask: LaneBitmask(0x0000000000000001),
555 .AllocationPriority: 0,
556 .GlobalPriority: false,
557 .TSFlags: 0x00, /* TSFlags */
558 .SpillStackID: 0, /* SpillStackID */
559 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
560 .CoveredBySubRegs: false, /* CoveredBySubRegs */
561 .SuperClasses: R600_TReg32_YSuperclasses, .SuperClassesSize: 2,
562 .OrderFunc: nullptr
563 };
564
565 extern const TargetRegisterClass R600_TReg32_ZRegClass = {
566 .MC: &R600MCRegisterClasses[R600_TReg32_ZRegClassID],
567 .SubClassMask: R600_TReg32_ZSubClassMask,
568 .SuperRegIndices: SuperRegIdxSeqs + 0,
569 .LaneMask: LaneBitmask(0x0000000000000001),
570 .AllocationPriority: 0,
571 .GlobalPriority: false,
572 .TSFlags: 0x00, /* TSFlags */
573 .SpillStackID: 0, /* SpillStackID */
574 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
575 .CoveredBySubRegs: false, /* CoveredBySubRegs */
576 .SuperClasses: R600_TReg32_ZSuperclasses, .SuperClassesSize: 2,
577 .OrderFunc: nullptr
578 };
579
580 extern const TargetRegisterClass R600_ArrayBaseRegClass = {
581 .MC: &R600MCRegisterClasses[R600_ArrayBaseRegClassID],
582 .SubClassMask: R600_ArrayBaseSubClassMask,
583 .SuperRegIndices: SuperRegIdxSeqs + 4,
584 .LaneMask: LaneBitmask(0x0000000000000001),
585 .AllocationPriority: 0,
586 .GlobalPriority: false,
587 .TSFlags: 0x00, /* TSFlags */
588 .SpillStackID: 0, /* SpillStackID */
589 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
590 .CoveredBySubRegs: false, /* CoveredBySubRegs */
591 .SuperClasses: R600_ArrayBaseSuperclasses, .SuperClassesSize: 1,
592 .OrderFunc: nullptr
593 };
594
595 extern const TargetRegisterClass R600_KC0_WRegClass = {
596 .MC: &R600MCRegisterClasses[R600_KC0_WRegClassID],
597 .SubClassMask: R600_KC0_WSubClassMask,
598 .SuperRegIndices: SuperRegIdxSeqs + 4,
599 .LaneMask: LaneBitmask(0x0000000000000001),
600 .AllocationPriority: 0,
601 .GlobalPriority: false,
602 .TSFlags: 0x00, /* TSFlags */
603 .SpillStackID: 0, /* SpillStackID */
604 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
605 .CoveredBySubRegs: false, /* CoveredBySubRegs */
606 .SuperClasses: R600_KC0_WSuperclasses, .SuperClassesSize: 2,
607 .OrderFunc: nullptr
608 };
609
610 extern const TargetRegisterClass R600_KC0_XRegClass = {
611 .MC: &R600MCRegisterClasses[R600_KC0_XRegClassID],
612 .SubClassMask: R600_KC0_XSubClassMask,
613 .SuperRegIndices: SuperRegIdxSeqs + 4,
614 .LaneMask: LaneBitmask(0x0000000000000001),
615 .AllocationPriority: 0,
616 .GlobalPriority: false,
617 .TSFlags: 0x00, /* TSFlags */
618 .SpillStackID: 0, /* SpillStackID */
619 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
620 .CoveredBySubRegs: false, /* CoveredBySubRegs */
621 .SuperClasses: R600_KC0_XSuperclasses, .SuperClassesSize: 2,
622 .OrderFunc: nullptr
623 };
624
625 extern const TargetRegisterClass R600_KC0_YRegClass = {
626 .MC: &R600MCRegisterClasses[R600_KC0_YRegClassID],
627 .SubClassMask: R600_KC0_YSubClassMask,
628 .SuperRegIndices: SuperRegIdxSeqs + 4,
629 .LaneMask: LaneBitmask(0x0000000000000001),
630 .AllocationPriority: 0,
631 .GlobalPriority: false,
632 .TSFlags: 0x00, /* TSFlags */
633 .SpillStackID: 0, /* SpillStackID */
634 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
635 .CoveredBySubRegs: false, /* CoveredBySubRegs */
636 .SuperClasses: R600_KC0_YSuperclasses, .SuperClassesSize: 2,
637 .OrderFunc: nullptr
638 };
639
640 extern const TargetRegisterClass R600_KC0_ZRegClass = {
641 .MC: &R600MCRegisterClasses[R600_KC0_ZRegClassID],
642 .SubClassMask: R600_KC0_ZSubClassMask,
643 .SuperRegIndices: SuperRegIdxSeqs + 4,
644 .LaneMask: LaneBitmask(0x0000000000000001),
645 .AllocationPriority: 0,
646 .GlobalPriority: false,
647 .TSFlags: 0x00, /* TSFlags */
648 .SpillStackID: 0, /* SpillStackID */
649 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
650 .CoveredBySubRegs: false, /* CoveredBySubRegs */
651 .SuperClasses: R600_KC0_ZSuperclasses, .SuperClassesSize: 2,
652 .OrderFunc: nullptr
653 };
654
655 extern const TargetRegisterClass R600_KC1_WRegClass = {
656 .MC: &R600MCRegisterClasses[R600_KC1_WRegClassID],
657 .SubClassMask: R600_KC1_WSubClassMask,
658 .SuperRegIndices: SuperRegIdxSeqs + 4,
659 .LaneMask: LaneBitmask(0x0000000000000001),
660 .AllocationPriority: 0,
661 .GlobalPriority: false,
662 .TSFlags: 0x00, /* TSFlags */
663 .SpillStackID: 0, /* SpillStackID */
664 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
665 .CoveredBySubRegs: false, /* CoveredBySubRegs */
666 .SuperClasses: R600_KC1_WSuperclasses, .SuperClassesSize: 2,
667 .OrderFunc: nullptr
668 };
669
670 extern const TargetRegisterClass R600_KC1_XRegClass = {
671 .MC: &R600MCRegisterClasses[R600_KC1_XRegClassID],
672 .SubClassMask: R600_KC1_XSubClassMask,
673 .SuperRegIndices: SuperRegIdxSeqs + 4,
674 .LaneMask: LaneBitmask(0x0000000000000001),
675 .AllocationPriority: 0,
676 .GlobalPriority: false,
677 .TSFlags: 0x00, /* TSFlags */
678 .SpillStackID: 0, /* SpillStackID */
679 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
680 .CoveredBySubRegs: false, /* CoveredBySubRegs */
681 .SuperClasses: R600_KC1_XSuperclasses, .SuperClassesSize: 2,
682 .OrderFunc: nullptr
683 };
684
685 extern const TargetRegisterClass R600_KC1_YRegClass = {
686 .MC: &R600MCRegisterClasses[R600_KC1_YRegClassID],
687 .SubClassMask: R600_KC1_YSubClassMask,
688 .SuperRegIndices: SuperRegIdxSeqs + 4,
689 .LaneMask: LaneBitmask(0x0000000000000001),
690 .AllocationPriority: 0,
691 .GlobalPriority: false,
692 .TSFlags: 0x00, /* TSFlags */
693 .SpillStackID: 0, /* SpillStackID */
694 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
695 .CoveredBySubRegs: false, /* CoveredBySubRegs */
696 .SuperClasses: R600_KC1_YSuperclasses, .SuperClassesSize: 2,
697 .OrderFunc: nullptr
698 };
699
700 extern const TargetRegisterClass R600_KC1_ZRegClass = {
701 .MC: &R600MCRegisterClasses[R600_KC1_ZRegClassID],
702 .SubClassMask: R600_KC1_ZSubClassMask,
703 .SuperRegIndices: SuperRegIdxSeqs + 4,
704 .LaneMask: LaneBitmask(0x0000000000000001),
705 .AllocationPriority: 0,
706 .GlobalPriority: false,
707 .TSFlags: 0x00, /* TSFlags */
708 .SpillStackID: 0, /* SpillStackID */
709 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
710 .CoveredBySubRegs: false, /* CoveredBySubRegs */
711 .SuperClasses: R600_KC1_ZSuperclasses, .SuperClassesSize: 2,
712 .OrderFunc: nullptr
713 };
714
715 extern const TargetRegisterClass R600_LDS_SRC_REGRegClass = {
716 .MC: &R600MCRegisterClasses[R600_LDS_SRC_REGRegClassID],
717 .SubClassMask: R600_LDS_SRC_REGSubClassMask,
718 .SuperRegIndices: SuperRegIdxSeqs + 4,
719 .LaneMask: LaneBitmask(0x0000000000000001),
720 .AllocationPriority: 0,
721 .GlobalPriority: false,
722 .TSFlags: 0x00, /* TSFlags */
723 .SpillStackID: 0, /* SpillStackID */
724 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
725 .CoveredBySubRegs: false, /* CoveredBySubRegs */
726 .SuperClasses: nullptr, .SuperClassesSize: 0,
727 .OrderFunc: nullptr
728 };
729
730 extern const TargetRegisterClass R600_PredicateRegClass = {
731 .MC: &R600MCRegisterClasses[R600_PredicateRegClassID],
732 .SubClassMask: R600_PredicateSubClassMask,
733 .SuperRegIndices: SuperRegIdxSeqs + 4,
734 .LaneMask: LaneBitmask(0x0000000000000001),
735 .AllocationPriority: 0,
736 .GlobalPriority: false,
737 .TSFlags: 0x00, /* TSFlags */
738 .SpillStackID: 0, /* SpillStackID */
739 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
740 .CoveredBySubRegs: false, /* CoveredBySubRegs */
741 .SuperClasses: nullptr, .SuperClassesSize: 0,
742 .OrderFunc: nullptr
743 };
744
745 extern const TargetRegisterClass R600_Addr_WRegClass = {
746 .MC: &R600MCRegisterClasses[R600_Addr_WRegClassID],
747 .SubClassMask: R600_Addr_WSubClassMask,
748 .SuperRegIndices: SuperRegIdxSeqs + 4,
749 .LaneMask: LaneBitmask(0x0000000000000001),
750 .AllocationPriority: 0,
751 .GlobalPriority: false,
752 .TSFlags: 0x00, /* TSFlags */
753 .SpillStackID: 0, /* SpillStackID */
754 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
755 .CoveredBySubRegs: false, /* CoveredBySubRegs */
756 .SuperClasses: nullptr, .SuperClassesSize: 0,
757 .OrderFunc: nullptr
758 };
759
760 extern const TargetRegisterClass R600_Addr_YRegClass = {
761 .MC: &R600MCRegisterClasses[R600_Addr_YRegClassID],
762 .SubClassMask: R600_Addr_YSubClassMask,
763 .SuperRegIndices: SuperRegIdxSeqs + 4,
764 .LaneMask: LaneBitmask(0x0000000000000001),
765 .AllocationPriority: 0,
766 .GlobalPriority: false,
767 .TSFlags: 0x00, /* TSFlags */
768 .SpillStackID: 0, /* SpillStackID */
769 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
770 .CoveredBySubRegs: false, /* CoveredBySubRegs */
771 .SuperClasses: nullptr, .SuperClassesSize: 0,
772 .OrderFunc: nullptr
773 };
774
775 extern const TargetRegisterClass R600_Addr_ZRegClass = {
776 .MC: &R600MCRegisterClasses[R600_Addr_ZRegClassID],
777 .SubClassMask: R600_Addr_ZSubClassMask,
778 .SuperRegIndices: SuperRegIdxSeqs + 4,
779 .LaneMask: LaneBitmask(0x0000000000000001),
780 .AllocationPriority: 0,
781 .GlobalPriority: false,
782 .TSFlags: 0x00, /* TSFlags */
783 .SpillStackID: 0, /* SpillStackID */
784 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
785 .CoveredBySubRegs: false, /* CoveredBySubRegs */
786 .SuperClasses: nullptr, .SuperClassesSize: 0,
787 .OrderFunc: nullptr
788 };
789
790 extern const TargetRegisterClass R600_LDS_SRC_REG_and_R600_Reg32RegClass = {
791 .MC: &R600MCRegisterClasses[R600_LDS_SRC_REG_and_R600_Reg32RegClassID],
792 .SubClassMask: R600_LDS_SRC_REG_and_R600_Reg32SubClassMask,
793 .SuperRegIndices: SuperRegIdxSeqs + 4,
794 .LaneMask: LaneBitmask(0x0000000000000001),
795 .AllocationPriority: 0,
796 .GlobalPriority: false,
797 .TSFlags: 0x00, /* TSFlags */
798 .SpillStackID: 0, /* SpillStackID */
799 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
800 .CoveredBySubRegs: false, /* CoveredBySubRegs */
801 .SuperClasses: R600_LDS_SRC_REG_and_R600_Reg32Superclasses, .SuperClassesSize: 2,
802 .OrderFunc: nullptr
803 };
804
805 extern const TargetRegisterClass R600_Predicate_BitRegClass = {
806 .MC: &R600MCRegisterClasses[R600_Predicate_BitRegClassID],
807 .SubClassMask: R600_Predicate_BitSubClassMask,
808 .SuperRegIndices: SuperRegIdxSeqs + 4,
809 .LaneMask: LaneBitmask(0x0000000000000001),
810 .AllocationPriority: 0,
811 .GlobalPriority: false,
812 .TSFlags: 0x00, /* TSFlags */
813 .SpillStackID: 0, /* SpillStackID */
814 .HasDisjunctSubRegs: false, /* HasDisjunctSubRegs */
815 .CoveredBySubRegs: false, /* CoveredBySubRegs */
816 .SuperClasses: nullptr, .SuperClassesSize: 0,
817 .OrderFunc: nullptr
818 };
819
820 extern const TargetRegisterClass R600_Reg64RegClass = {
821 .MC: &R600MCRegisterClasses[R600_Reg64RegClassID],
822 .SubClassMask: R600_Reg64SubClassMask,
823 .SuperRegIndices: SuperRegIdxSeqs + 4,
824 .LaneMask: LaneBitmask(0x0000000000000003),
825 .AllocationPriority: 0,
826 .GlobalPriority: false,
827 .TSFlags: 0x00, /* TSFlags */
828 .SpillStackID: 0, /* SpillStackID */
829 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
830 .CoveredBySubRegs: false, /* CoveredBySubRegs */
831 .SuperClasses: nullptr, .SuperClassesSize: 0,
832 .OrderFunc: nullptr
833 };
834
835 extern const TargetRegisterClass R600_Reg64VerticalRegClass = {
836 .MC: &R600MCRegisterClasses[R600_Reg64VerticalRegClassID],
837 .SubClassMask: R600_Reg64VerticalSubClassMask,
838 .SuperRegIndices: SuperRegIdxSeqs + 4,
839 .LaneMask: LaneBitmask(0x0000000000000003),
840 .AllocationPriority: 0,
841 .GlobalPriority: false,
842 .TSFlags: 0x00, /* TSFlags */
843 .SpillStackID: 0, /* SpillStackID */
844 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
845 .CoveredBySubRegs: false, /* CoveredBySubRegs */
846 .SuperClasses: nullptr, .SuperClassesSize: 0,
847 .OrderFunc: nullptr
848 };
849
850 extern const TargetRegisterClass R600_Reg64Vertical_with_sub0_in_R600_TReg32_WRegClass = {
851 .MC: &R600MCRegisterClasses[R600_Reg64Vertical_with_sub0_in_R600_TReg32_WRegClassID],
852 .SubClassMask: R600_Reg64Vertical_with_sub0_in_R600_TReg32_WSubClassMask,
853 .SuperRegIndices: SuperRegIdxSeqs + 4,
854 .LaneMask: LaneBitmask(0x0000000000000003),
855 .AllocationPriority: 0,
856 .GlobalPriority: false,
857 .TSFlags: 0x00, /* TSFlags */
858 .SpillStackID: 0, /* SpillStackID */
859 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
860 .CoveredBySubRegs: false, /* CoveredBySubRegs */
861 .SuperClasses: R600_Reg64Vertical_with_sub0_in_R600_TReg32_WSuperclasses, .SuperClassesSize: 1,
862 .OrderFunc: nullptr
863 };
864
865 extern const TargetRegisterClass R600_Reg64Vertical_with_sub0_in_R600_TReg32_XRegClass = {
866 .MC: &R600MCRegisterClasses[R600_Reg64Vertical_with_sub0_in_R600_TReg32_XRegClassID],
867 .SubClassMask: R600_Reg64Vertical_with_sub0_in_R600_TReg32_XSubClassMask,
868 .SuperRegIndices: SuperRegIdxSeqs + 4,
869 .LaneMask: LaneBitmask(0x0000000000000003),
870 .AllocationPriority: 0,
871 .GlobalPriority: false,
872 .TSFlags: 0x00, /* TSFlags */
873 .SpillStackID: 0, /* SpillStackID */
874 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
875 .CoveredBySubRegs: false, /* CoveredBySubRegs */
876 .SuperClasses: R600_Reg64Vertical_with_sub0_in_R600_TReg32_XSuperclasses, .SuperClassesSize: 1,
877 .OrderFunc: nullptr
878 };
879
880 extern const TargetRegisterClass R600_Reg64Vertical_with_sub0_in_R600_TReg32_YRegClass = {
881 .MC: &R600MCRegisterClasses[R600_Reg64Vertical_with_sub0_in_R600_TReg32_YRegClassID],
882 .SubClassMask: R600_Reg64Vertical_with_sub0_in_R600_TReg32_YSubClassMask,
883 .SuperRegIndices: SuperRegIdxSeqs + 4,
884 .LaneMask: LaneBitmask(0x0000000000000003),
885 .AllocationPriority: 0,
886 .GlobalPriority: false,
887 .TSFlags: 0x00, /* TSFlags */
888 .SpillStackID: 0, /* SpillStackID */
889 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
890 .CoveredBySubRegs: false, /* CoveredBySubRegs */
891 .SuperClasses: R600_Reg64Vertical_with_sub0_in_R600_TReg32_YSuperclasses, .SuperClassesSize: 1,
892 .OrderFunc: nullptr
893 };
894
895 extern const TargetRegisterClass R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZRegClass = {
896 .MC: &R600MCRegisterClasses[R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZRegClassID],
897 .SubClassMask: R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZSubClassMask,
898 .SuperRegIndices: SuperRegIdxSeqs + 4,
899 .LaneMask: LaneBitmask(0x0000000000000003),
900 .AllocationPriority: 0,
901 .GlobalPriority: false,
902 .TSFlags: 0x00, /* TSFlags */
903 .SpillStackID: 0, /* SpillStackID */
904 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
905 .CoveredBySubRegs: false, /* CoveredBySubRegs */
906 .SuperClasses: R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZSuperclasses, .SuperClassesSize: 1,
907 .OrderFunc: nullptr
908 };
909
910 extern const TargetRegisterClass R600_Reg128RegClass = {
911 .MC: &R600MCRegisterClasses[R600_Reg128RegClassID],
912 .SubClassMask: R600_Reg128SubClassMask,
913 .SuperRegIndices: SuperRegIdxSeqs + 4,
914 .LaneMask: LaneBitmask(0x000000000000000F),
915 .AllocationPriority: 0,
916 .GlobalPriority: false,
917 .TSFlags: 0x00, /* TSFlags */
918 .SpillStackID: 0, /* SpillStackID */
919 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
920 .CoveredBySubRegs: false, /* CoveredBySubRegs */
921 .SuperClasses: nullptr, .SuperClassesSize: 0,
922 .OrderFunc: nullptr
923 };
924
925 extern const TargetRegisterClass R600_Reg128VerticalRegClass = {
926 .MC: &R600MCRegisterClasses[R600_Reg128VerticalRegClassID],
927 .SubClassMask: R600_Reg128VerticalSubClassMask,
928 .SuperRegIndices: SuperRegIdxSeqs + 4,
929 .LaneMask: LaneBitmask(0x000000000000000F),
930 .AllocationPriority: 0,
931 .GlobalPriority: false,
932 .TSFlags: 0x00, /* TSFlags */
933 .SpillStackID: 0, /* SpillStackID */
934 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
935 .CoveredBySubRegs: false, /* CoveredBySubRegs */
936 .SuperClasses: nullptr, .SuperClassesSize: 0,
937 .OrderFunc: nullptr
938 };
939
940 extern const TargetRegisterClass R600_Reg128Vertical_with_sub0_in_R600_TReg32_WRegClass = {
941 .MC: &R600MCRegisterClasses[R600_Reg128Vertical_with_sub0_in_R600_TReg32_WRegClassID],
942 .SubClassMask: R600_Reg128Vertical_with_sub0_in_R600_TReg32_WSubClassMask,
943 .SuperRegIndices: SuperRegIdxSeqs + 4,
944 .LaneMask: LaneBitmask(0x000000000000000F),
945 .AllocationPriority: 0,
946 .GlobalPriority: false,
947 .TSFlags: 0x00, /* TSFlags */
948 .SpillStackID: 0, /* SpillStackID */
949 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
950 .CoveredBySubRegs: false, /* CoveredBySubRegs */
951 .SuperClasses: R600_Reg128Vertical_with_sub0_in_R600_TReg32_WSuperclasses, .SuperClassesSize: 1,
952 .OrderFunc: nullptr
953 };
954
955 extern const TargetRegisterClass R600_Reg128Vertical_with_sub0_in_R600_TReg32_XRegClass = {
956 .MC: &R600MCRegisterClasses[R600_Reg128Vertical_with_sub0_in_R600_TReg32_XRegClassID],
957 .SubClassMask: R600_Reg128Vertical_with_sub0_in_R600_TReg32_XSubClassMask,
958 .SuperRegIndices: SuperRegIdxSeqs + 4,
959 .LaneMask: LaneBitmask(0x000000000000000F),
960 .AllocationPriority: 0,
961 .GlobalPriority: false,
962 .TSFlags: 0x00, /* TSFlags */
963 .SpillStackID: 0, /* SpillStackID */
964 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
965 .CoveredBySubRegs: false, /* CoveredBySubRegs */
966 .SuperClasses: R600_Reg128Vertical_with_sub0_in_R600_TReg32_XSuperclasses, .SuperClassesSize: 1,
967 .OrderFunc: nullptr
968 };
969
970 extern const TargetRegisterClass R600_Reg128Vertical_with_sub0_in_R600_TReg32_YRegClass = {
971 .MC: &R600MCRegisterClasses[R600_Reg128Vertical_with_sub0_in_R600_TReg32_YRegClassID],
972 .SubClassMask: R600_Reg128Vertical_with_sub0_in_R600_TReg32_YSubClassMask,
973 .SuperRegIndices: SuperRegIdxSeqs + 4,
974 .LaneMask: LaneBitmask(0x000000000000000F),
975 .AllocationPriority: 0,
976 .GlobalPriority: false,
977 .TSFlags: 0x00, /* TSFlags */
978 .SpillStackID: 0, /* SpillStackID */
979 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
980 .CoveredBySubRegs: false, /* CoveredBySubRegs */
981 .SuperClasses: R600_Reg128Vertical_with_sub0_in_R600_TReg32_YSuperclasses, .SuperClassesSize: 1,
982 .OrderFunc: nullptr
983 };
984
985 extern const TargetRegisterClass R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZRegClass = {
986 .MC: &R600MCRegisterClasses[R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZRegClassID],
987 .SubClassMask: R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZSubClassMask,
988 .SuperRegIndices: SuperRegIdxSeqs + 4,
989 .LaneMask: LaneBitmask(0x000000000000000F),
990 .AllocationPriority: 0,
991 .GlobalPriority: false,
992 .TSFlags: 0x00, /* TSFlags */
993 .SpillStackID: 0, /* SpillStackID */
994 .HasDisjunctSubRegs: true, /* HasDisjunctSubRegs */
995 .CoveredBySubRegs: false, /* CoveredBySubRegs */
996 .SuperClasses: R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZSuperclasses, .SuperClassesSize: 1,
997 .OrderFunc: nullptr
998 };
999
1000
1001} // namespace R600
1002static const TargetRegisterClass *const R600RegisterClasses[] = {
1003 &R600::R600_Reg32RegClass,
1004 &R600::R600_TReg32RegClass,
1005 &R600::R600_TReg32_XRegClass,
1006 &R600::R600_AddrRegClass,
1007 &R600::R600_KC0RegClass,
1008 &R600::R600_KC1RegClass,
1009 &R600::R600_TReg32_WRegClass,
1010 &R600::R600_TReg32_YRegClass,
1011 &R600::R600_TReg32_ZRegClass,
1012 &R600::R600_ArrayBaseRegClass,
1013 &R600::R600_KC0_WRegClass,
1014 &R600::R600_KC0_XRegClass,
1015 &R600::R600_KC0_YRegClass,
1016 &R600::R600_KC0_ZRegClass,
1017 &R600::R600_KC1_WRegClass,
1018 &R600::R600_KC1_XRegClass,
1019 &R600::R600_KC1_YRegClass,
1020 &R600::R600_KC1_ZRegClass,
1021 &R600::R600_LDS_SRC_REGRegClass,
1022 &R600::R600_PredicateRegClass,
1023 &R600::R600_Addr_WRegClass,
1024 &R600::R600_Addr_YRegClass,
1025 &R600::R600_Addr_ZRegClass,
1026 &R600::R600_LDS_SRC_REG_and_R600_Reg32RegClass,
1027 &R600::R600_Predicate_BitRegClass,
1028 &R600::R600_Reg64RegClass,
1029 &R600::R600_Reg64VerticalRegClass,
1030 &R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_WRegClass,
1031 &R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_XRegClass,
1032 &R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_YRegClass,
1033 &R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZRegClass,
1034 &R600::R600_Reg128RegClass,
1035 &R600::R600_Reg128VerticalRegClass,
1036 &R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_WRegClass,
1037 &R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_XRegClass,
1038 &R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_YRegClass,
1039 &R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZRegClass,
1040 };
1041
1042static const uint8_t R600CostPerUseTable[] = {
10430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
1044
1045
1046static const bool R600InAllocatableClassTable[] = {
1047false, true, false, true, false, false, true, true, true, true, false, false, true, true, true, true, false, true, false, false, true, true, true, true, false, false, true, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, };
1048
1049
1050static const TargetRegisterInfoDesc R600RegInfoDesc = { // Extra Descriptors
1051.CostPerUse: R600CostPerUseTable, .NumCosts: 1, .InAllocatableClass: R600InAllocatableClassTable};
1052
1053unsigned R600GenRegisterInfo::composeSubRegIndicesImpl(unsigned IdxA, unsigned IdxB) const {
1054 static const uint8_t Rows[1][16] = {
1055 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1056 };
1057
1058 --IdxA; assert(IdxA < 16); (void) IdxA;
1059 --IdxB; assert(IdxB < 16);
1060 return Rows[0][IdxB];
1061}
1062
1063unsigned R600GenRegisterInfo::reverseComposeSubRegIndicesImpl(unsigned IdxA, unsigned IdxB) const {
1064 static const uint8_t Table[16][16] = {
1065 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1066 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1067 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1068 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1069 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1070 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1071 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1072 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1073 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1074 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1075 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1076 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1077 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1078 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1079 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1080 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
1081 };
1082
1083 --IdxA; assert(IdxA < 16);
1084 --IdxB; assert(IdxB < 16);
1085 return Table[IdxA][IdxB];
1086 }
1087
1088 struct MaskRolOp {
1089 LaneBitmask Mask;
1090 uint8_t RotateLeft;
1091 };
1092 static const MaskRolOp LaneMaskComposeSequences[] = {
1093 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 0 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 0
1094 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 1 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 2
1095 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 2 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 4
1096 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 3 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 6
1097 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 4 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 8
1098 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 5 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 10
1099 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 6 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 12
1100 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 7 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 14
1101 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 8 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 16
1102 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 9 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 18
1103 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 10 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 20
1104 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 11 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 22
1105 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 12 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 24
1106 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 13 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 26
1107 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 14 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 }, // Sequence 28
1108 { .Mask: LaneBitmask(0xFFFFFFFFFFFFFFFF), .RotateLeft: 15 }, { .Mask: LaneBitmask::getNone(), .RotateLeft: 0 } // Sequence 30
1109 };
1110 static const uint8_t CompositeSequences[] = {
1111 0, // to sub0
1112 2, // to sub1
1113 4, // to sub2
1114 6, // to sub3
1115 8, // to sub4
1116 10, // to sub5
1117 12, // to sub6
1118 14, // to sub7
1119 16, // to sub8
1120 18, // to sub9
1121 20, // to sub10
1122 22, // to sub11
1123 24, // to sub12
1124 26, // to sub13
1125 28, // to sub14
1126 30 // to sub15
1127 };
1128
1129LaneBitmask R600GenRegisterInfo::composeSubRegIndexLaneMaskImpl(unsigned IdxA, LaneBitmask LaneMask) const {
1130 --IdxA; assert(IdxA < 16 && "Subregister index out of bounds");
1131 LaneBitmask Result;
1132 for (const MaskRolOp *Ops =
1133 &LaneMaskComposeSequences[CompositeSequences[IdxA]];
1134 Ops->Mask.any(); ++Ops) {
1135 LaneBitmask::Type M = LaneMask.getAsInteger() & Ops->Mask.getAsInteger();
1136 if (unsigned S = Ops->RotateLeft)
1137 Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));
1138 else
1139 Result |= LaneBitmask(M);
1140 }
1141 return Result;
1142}
1143
1144LaneBitmask R600GenRegisterInfo::reverseComposeSubRegIndexLaneMaskImpl(unsigned IdxA, LaneBitmask LaneMask) const {
1145 LaneMask &= getSubRegIndexLaneMask(SubIdx: IdxA);
1146 --IdxA; assert(IdxA < 16 && "Subregister index out of bounds");
1147 LaneBitmask Result;
1148 for (const MaskRolOp *Ops =
1149 &LaneMaskComposeSequences[CompositeSequences[IdxA]];
1150 Ops->Mask.any(); ++Ops) {
1151 LaneBitmask::Type M = LaneMask.getAsInteger();
1152 if (unsigned S = Ops->RotateLeft)
1153 Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));
1154 else
1155 Result |= LaneBitmask(M);
1156 }
1157 return Result;
1158}
1159
1160const TargetRegisterClass *R600GenRegisterInfo::getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const {
1161 static constexpr uint8_t Table[37][16] = {
1162 { // R600_Reg32
1163 0, // sub0
1164 0, // sub1
1165 0, // sub2
1166 0, // sub3
1167 0, // sub4
1168 0, // sub5
1169 0, // sub6
1170 0, // sub7
1171 0, // sub8
1172 0, // sub9
1173 0, // sub10
1174 0, // sub11
1175 0, // sub12
1176 0, // sub13
1177 0, // sub14
1178 0, // sub15
1179 },
1180 { // R600_TReg32
1181 0, // sub0
1182 0, // sub1
1183 0, // sub2
1184 0, // sub3
1185 0, // sub4
1186 0, // sub5
1187 0, // sub6
1188 0, // sub7
1189 0, // sub8
1190 0, // sub9
1191 0, // sub10
1192 0, // sub11
1193 0, // sub12
1194 0, // sub13
1195 0, // sub14
1196 0, // sub15
1197 },
1198 { // R600_TReg32_X
1199 0, // sub0
1200 0, // sub1
1201 0, // sub2
1202 0, // sub3
1203 0, // sub4
1204 0, // sub5
1205 0, // sub6
1206 0, // sub7
1207 0, // sub8
1208 0, // sub9
1209 0, // sub10
1210 0, // sub11
1211 0, // sub12
1212 0, // sub13
1213 0, // sub14
1214 0, // sub15
1215 },
1216 { // R600_Addr
1217 0, // sub0
1218 0, // sub1
1219 0, // sub2
1220 0, // sub3
1221 0, // sub4
1222 0, // sub5
1223 0, // sub6
1224 0, // sub7
1225 0, // sub8
1226 0, // sub9
1227 0, // sub10
1228 0, // sub11
1229 0, // sub12
1230 0, // sub13
1231 0, // sub14
1232 0, // sub15
1233 },
1234 { // R600_KC0
1235 0, // sub0
1236 0, // sub1
1237 0, // sub2
1238 0, // sub3
1239 0, // sub4
1240 0, // sub5
1241 0, // sub6
1242 0, // sub7
1243 0, // sub8
1244 0, // sub9
1245 0, // sub10
1246 0, // sub11
1247 0, // sub12
1248 0, // sub13
1249 0, // sub14
1250 0, // sub15
1251 },
1252 { // R600_KC1
1253 0, // sub0
1254 0, // sub1
1255 0, // sub2
1256 0, // sub3
1257 0, // sub4
1258 0, // sub5
1259 0, // sub6
1260 0, // sub7
1261 0, // sub8
1262 0, // sub9
1263 0, // sub10
1264 0, // sub11
1265 0, // sub12
1266 0, // sub13
1267 0, // sub14
1268 0, // sub15
1269 },
1270 { // R600_TReg32_W
1271 0, // sub0
1272 0, // sub1
1273 0, // sub2
1274 0, // sub3
1275 0, // sub4
1276 0, // sub5
1277 0, // sub6
1278 0, // sub7
1279 0, // sub8
1280 0, // sub9
1281 0, // sub10
1282 0, // sub11
1283 0, // sub12
1284 0, // sub13
1285 0, // sub14
1286 0, // sub15
1287 },
1288 { // R600_TReg32_Y
1289 0, // sub0
1290 0, // sub1
1291 0, // sub2
1292 0, // sub3
1293 0, // sub4
1294 0, // sub5
1295 0, // sub6
1296 0, // sub7
1297 0, // sub8
1298 0, // sub9
1299 0, // sub10
1300 0, // sub11
1301 0, // sub12
1302 0, // sub13
1303 0, // sub14
1304 0, // sub15
1305 },
1306 { // R600_TReg32_Z
1307 0, // sub0
1308 0, // sub1
1309 0, // sub2
1310 0, // sub3
1311 0, // sub4
1312 0, // sub5
1313 0, // sub6
1314 0, // sub7
1315 0, // sub8
1316 0, // sub9
1317 0, // sub10
1318 0, // sub11
1319 0, // sub12
1320 0, // sub13
1321 0, // sub14
1322 0, // sub15
1323 },
1324 { // R600_ArrayBase
1325 0, // sub0
1326 0, // sub1
1327 0, // sub2
1328 0, // sub3
1329 0, // sub4
1330 0, // sub5
1331 0, // sub6
1332 0, // sub7
1333 0, // sub8
1334 0, // sub9
1335 0, // sub10
1336 0, // sub11
1337 0, // sub12
1338 0, // sub13
1339 0, // sub14
1340 0, // sub15
1341 },
1342 { // R600_KC0_W
1343 0, // sub0
1344 0, // sub1
1345 0, // sub2
1346 0, // sub3
1347 0, // sub4
1348 0, // sub5
1349 0, // sub6
1350 0, // sub7
1351 0, // sub8
1352 0, // sub9
1353 0, // sub10
1354 0, // sub11
1355 0, // sub12
1356 0, // sub13
1357 0, // sub14
1358 0, // sub15
1359 },
1360 { // R600_KC0_X
1361 0, // sub0
1362 0, // sub1
1363 0, // sub2
1364 0, // sub3
1365 0, // sub4
1366 0, // sub5
1367 0, // sub6
1368 0, // sub7
1369 0, // sub8
1370 0, // sub9
1371 0, // sub10
1372 0, // sub11
1373 0, // sub12
1374 0, // sub13
1375 0, // sub14
1376 0, // sub15
1377 },
1378 { // R600_KC0_Y
1379 0, // sub0
1380 0, // sub1
1381 0, // sub2
1382 0, // sub3
1383 0, // sub4
1384 0, // sub5
1385 0, // sub6
1386 0, // sub7
1387 0, // sub8
1388 0, // sub9
1389 0, // sub10
1390 0, // sub11
1391 0, // sub12
1392 0, // sub13
1393 0, // sub14
1394 0, // sub15
1395 },
1396 { // R600_KC0_Z
1397 0, // sub0
1398 0, // sub1
1399 0, // sub2
1400 0, // sub3
1401 0, // sub4
1402 0, // sub5
1403 0, // sub6
1404 0, // sub7
1405 0, // sub8
1406 0, // sub9
1407 0, // sub10
1408 0, // sub11
1409 0, // sub12
1410 0, // sub13
1411 0, // sub14
1412 0, // sub15
1413 },
1414 { // R600_KC1_W
1415 0, // sub0
1416 0, // sub1
1417 0, // sub2
1418 0, // sub3
1419 0, // sub4
1420 0, // sub5
1421 0, // sub6
1422 0, // sub7
1423 0, // sub8
1424 0, // sub9
1425 0, // sub10
1426 0, // sub11
1427 0, // sub12
1428 0, // sub13
1429 0, // sub14
1430 0, // sub15
1431 },
1432 { // R600_KC1_X
1433 0, // sub0
1434 0, // sub1
1435 0, // sub2
1436 0, // sub3
1437 0, // sub4
1438 0, // sub5
1439 0, // sub6
1440 0, // sub7
1441 0, // sub8
1442 0, // sub9
1443 0, // sub10
1444 0, // sub11
1445 0, // sub12
1446 0, // sub13
1447 0, // sub14
1448 0, // sub15
1449 },
1450 { // R600_KC1_Y
1451 0, // sub0
1452 0, // sub1
1453 0, // sub2
1454 0, // sub3
1455 0, // sub4
1456 0, // sub5
1457 0, // sub6
1458 0, // sub7
1459 0, // sub8
1460 0, // sub9
1461 0, // sub10
1462 0, // sub11
1463 0, // sub12
1464 0, // sub13
1465 0, // sub14
1466 0, // sub15
1467 },
1468 { // R600_KC1_Z
1469 0, // sub0
1470 0, // sub1
1471 0, // sub2
1472 0, // sub3
1473 0, // sub4
1474 0, // sub5
1475 0, // sub6
1476 0, // sub7
1477 0, // sub8
1478 0, // sub9
1479 0, // sub10
1480 0, // sub11
1481 0, // sub12
1482 0, // sub13
1483 0, // sub14
1484 0, // sub15
1485 },
1486 { // R600_LDS_SRC_REG
1487 0, // sub0
1488 0, // sub1
1489 0, // sub2
1490 0, // sub3
1491 0, // sub4
1492 0, // sub5
1493 0, // sub6
1494 0, // sub7
1495 0, // sub8
1496 0, // sub9
1497 0, // sub10
1498 0, // sub11
1499 0, // sub12
1500 0, // sub13
1501 0, // sub14
1502 0, // sub15
1503 },
1504 { // R600_Predicate
1505 0, // sub0
1506 0, // sub1
1507 0, // sub2
1508 0, // sub3
1509 0, // sub4
1510 0, // sub5
1511 0, // sub6
1512 0, // sub7
1513 0, // sub8
1514 0, // sub9
1515 0, // sub10
1516 0, // sub11
1517 0, // sub12
1518 0, // sub13
1519 0, // sub14
1520 0, // sub15
1521 },
1522 { // R600_Addr_W
1523 0, // sub0
1524 0, // sub1
1525 0, // sub2
1526 0, // sub3
1527 0, // sub4
1528 0, // sub5
1529 0, // sub6
1530 0, // sub7
1531 0, // sub8
1532 0, // sub9
1533 0, // sub10
1534 0, // sub11
1535 0, // sub12
1536 0, // sub13
1537 0, // sub14
1538 0, // sub15
1539 },
1540 { // R600_Addr_Y
1541 0, // sub0
1542 0, // sub1
1543 0, // sub2
1544 0, // sub3
1545 0, // sub4
1546 0, // sub5
1547 0, // sub6
1548 0, // sub7
1549 0, // sub8
1550 0, // sub9
1551 0, // sub10
1552 0, // sub11
1553 0, // sub12
1554 0, // sub13
1555 0, // sub14
1556 0, // sub15
1557 },
1558 { // R600_Addr_Z
1559 0, // sub0
1560 0, // sub1
1561 0, // sub2
1562 0, // sub3
1563 0, // sub4
1564 0, // sub5
1565 0, // sub6
1566 0, // sub7
1567 0, // sub8
1568 0, // sub9
1569 0, // sub10
1570 0, // sub11
1571 0, // sub12
1572 0, // sub13
1573 0, // sub14
1574 0, // sub15
1575 },
1576 { // R600_LDS_SRC_REG_and_R600_Reg32
1577 0, // sub0
1578 0, // sub1
1579 0, // sub2
1580 0, // sub3
1581 0, // sub4
1582 0, // sub5
1583 0, // sub6
1584 0, // sub7
1585 0, // sub8
1586 0, // sub9
1587 0, // sub10
1588 0, // sub11
1589 0, // sub12
1590 0, // sub13
1591 0, // sub14
1592 0, // sub15
1593 },
1594 { // R600_Predicate_Bit
1595 0, // sub0
1596 0, // sub1
1597 0, // sub2
1598 0, // sub3
1599 0, // sub4
1600 0, // sub5
1601 0, // sub6
1602 0, // sub7
1603 0, // sub8
1604 0, // sub9
1605 0, // sub10
1606 0, // sub11
1607 0, // sub12
1608 0, // sub13
1609 0, // sub14
1610 0, // sub15
1611 },
1612 { // R600_Reg64
1613 26, // sub0 -> R600_Reg64
1614 26, // sub1 -> R600_Reg64
1615 0, // sub2
1616 0, // sub3
1617 0, // sub4
1618 0, // sub5
1619 0, // sub6
1620 0, // sub7
1621 0, // sub8
1622 0, // sub9
1623 0, // sub10
1624 0, // sub11
1625 0, // sub12
1626 0, // sub13
1627 0, // sub14
1628 0, // sub15
1629 },
1630 { // R600_Reg64Vertical
1631 27, // sub0 -> R600_Reg64Vertical
1632 27, // sub1 -> R600_Reg64Vertical
1633 0, // sub2
1634 0, // sub3
1635 0, // sub4
1636 0, // sub5
1637 0, // sub6
1638 0, // sub7
1639 0, // sub8
1640 0, // sub9
1641 0, // sub10
1642 0, // sub11
1643 0, // sub12
1644 0, // sub13
1645 0, // sub14
1646 0, // sub15
1647 },
1648 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W
1649 28, // sub0 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_W
1650 28, // sub1 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_W
1651 0, // sub2
1652 0, // sub3
1653 0, // sub4
1654 0, // sub5
1655 0, // sub6
1656 0, // sub7
1657 0, // sub8
1658 0, // sub9
1659 0, // sub10
1660 0, // sub11
1661 0, // sub12
1662 0, // sub13
1663 0, // sub14
1664 0, // sub15
1665 },
1666 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X
1667 29, // sub0 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_X
1668 29, // sub1 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_X
1669 0, // sub2
1670 0, // sub3
1671 0, // sub4
1672 0, // sub5
1673 0, // sub6
1674 0, // sub7
1675 0, // sub8
1676 0, // sub9
1677 0, // sub10
1678 0, // sub11
1679 0, // sub12
1680 0, // sub13
1681 0, // sub14
1682 0, // sub15
1683 },
1684 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y
1685 30, // sub0 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y
1686 30, // sub1 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y
1687 0, // sub2
1688 0, // sub3
1689 0, // sub4
1690 0, // sub5
1691 0, // sub6
1692 0, // sub7
1693 0, // sub8
1694 0, // sub9
1695 0, // sub10
1696 0, // sub11
1697 0, // sub12
1698 0, // sub13
1699 0, // sub14
1700 0, // sub15
1701 },
1702 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z
1703 31, // sub0 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z
1704 31, // sub1 -> R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z
1705 0, // sub2
1706 0, // sub3
1707 0, // sub4
1708 0, // sub5
1709 0, // sub6
1710 0, // sub7
1711 0, // sub8
1712 0, // sub9
1713 0, // sub10
1714 0, // sub11
1715 0, // sub12
1716 0, // sub13
1717 0, // sub14
1718 0, // sub15
1719 },
1720 { // R600_Reg128
1721 32, // sub0 -> R600_Reg128
1722 32, // sub1 -> R600_Reg128
1723 32, // sub2 -> R600_Reg128
1724 32, // sub3 -> R600_Reg128
1725 0, // sub4
1726 0, // sub5
1727 0, // sub6
1728 0, // sub7
1729 0, // sub8
1730 0, // sub9
1731 0, // sub10
1732 0, // sub11
1733 0, // sub12
1734 0, // sub13
1735 0, // sub14
1736 0, // sub15
1737 },
1738 { // R600_Reg128Vertical
1739 33, // sub0 -> R600_Reg128Vertical
1740 33, // sub1 -> R600_Reg128Vertical
1741 33, // sub2 -> R600_Reg128Vertical
1742 33, // sub3 -> R600_Reg128Vertical
1743 0, // sub4
1744 0, // sub5
1745 0, // sub6
1746 0, // sub7
1747 0, // sub8
1748 0, // sub9
1749 0, // sub10
1750 0, // sub11
1751 0, // sub12
1752 0, // sub13
1753 0, // sub14
1754 0, // sub15
1755 },
1756 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
1757 34, // sub0 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
1758 34, // sub1 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
1759 34, // sub2 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
1760 34, // sub3 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
1761 0, // sub4
1762 0, // sub5
1763 0, // sub6
1764 0, // sub7
1765 0, // sub8
1766 0, // sub9
1767 0, // sub10
1768 0, // sub11
1769 0, // sub12
1770 0, // sub13
1771 0, // sub14
1772 0, // sub15
1773 },
1774 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
1775 35, // sub0 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
1776 35, // sub1 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
1777 35, // sub2 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
1778 35, // sub3 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
1779 0, // sub4
1780 0, // sub5
1781 0, // sub6
1782 0, // sub7
1783 0, // sub8
1784 0, // sub9
1785 0, // sub10
1786 0, // sub11
1787 0, // sub12
1788 0, // sub13
1789 0, // sub14
1790 0, // sub15
1791 },
1792 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
1793 36, // sub0 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
1794 36, // sub1 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
1795 36, // sub2 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
1796 36, // sub3 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
1797 0, // sub4
1798 0, // sub5
1799 0, // sub6
1800 0, // sub7
1801 0, // sub8
1802 0, // sub9
1803 0, // sub10
1804 0, // sub11
1805 0, // sub12
1806 0, // sub13
1807 0, // sub14
1808 0, // sub15
1809 },
1810 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
1811 37, // sub0 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
1812 37, // sub1 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
1813 37, // sub2 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
1814 37, // sub3 -> R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
1815 0, // sub4
1816 0, // sub5
1817 0, // sub6
1818 0, // sub7
1819 0, // sub8
1820 0, // sub9
1821 0, // sub10
1822 0, // sub11
1823 0, // sub12
1824 0, // sub13
1825 0, // sub14
1826 0, // sub15
1827 },
1828
1829 };
1830 assert(RC && "Missing regclass");
1831 if (!Idx) return RC;
1832 --Idx;
1833 assert(Idx < 16 && "Bad subreg");
1834 unsigned TV = Table[RC->getID()][Idx];
1835 return TV ? getRegClass(i: TV - 1) : nullptr;
1836}const TargetRegisterClass *R600GenRegisterInfo::getSubRegisterClass(const TargetRegisterClass *RC, unsigned Idx) const {
1837 static constexpr uint8_t Table[37][16] = {
1838 { // R600_Reg32
1839 0, // R600_Reg32:sub0
1840 0, // R600_Reg32:sub1
1841 0, // R600_Reg32:sub2
1842 0, // R600_Reg32:sub3
1843 0, // R600_Reg32:sub4
1844 0, // R600_Reg32:sub5
1845 0, // R600_Reg32:sub6
1846 0, // R600_Reg32:sub7
1847 0, // R600_Reg32:sub8
1848 0, // R600_Reg32:sub9
1849 0, // R600_Reg32:sub10
1850 0, // R600_Reg32:sub11
1851 0, // R600_Reg32:sub12
1852 0, // R600_Reg32:sub13
1853 0, // R600_Reg32:sub14
1854 0, // R600_Reg32:sub15
1855 },
1856 { // R600_TReg32
1857 0, // R600_TReg32:sub0
1858 0, // R600_TReg32:sub1
1859 0, // R600_TReg32:sub2
1860 0, // R600_TReg32:sub3
1861 0, // R600_TReg32:sub4
1862 0, // R600_TReg32:sub5
1863 0, // R600_TReg32:sub6
1864 0, // R600_TReg32:sub7
1865 0, // R600_TReg32:sub8
1866 0, // R600_TReg32:sub9
1867 0, // R600_TReg32:sub10
1868 0, // R600_TReg32:sub11
1869 0, // R600_TReg32:sub12
1870 0, // R600_TReg32:sub13
1871 0, // R600_TReg32:sub14
1872 0, // R600_TReg32:sub15
1873 },
1874 { // R600_TReg32_X
1875 0, // R600_TReg32_X:sub0
1876 0, // R600_TReg32_X:sub1
1877 0, // R600_TReg32_X:sub2
1878 0, // R600_TReg32_X:sub3
1879 0, // R600_TReg32_X:sub4
1880 0, // R600_TReg32_X:sub5
1881 0, // R600_TReg32_X:sub6
1882 0, // R600_TReg32_X:sub7
1883 0, // R600_TReg32_X:sub8
1884 0, // R600_TReg32_X:sub9
1885 0, // R600_TReg32_X:sub10
1886 0, // R600_TReg32_X:sub11
1887 0, // R600_TReg32_X:sub12
1888 0, // R600_TReg32_X:sub13
1889 0, // R600_TReg32_X:sub14
1890 0, // R600_TReg32_X:sub15
1891 },
1892 { // R600_Addr
1893 0, // R600_Addr:sub0
1894 0, // R600_Addr:sub1
1895 0, // R600_Addr:sub2
1896 0, // R600_Addr:sub3
1897 0, // R600_Addr:sub4
1898 0, // R600_Addr:sub5
1899 0, // R600_Addr:sub6
1900 0, // R600_Addr:sub7
1901 0, // R600_Addr:sub8
1902 0, // R600_Addr:sub9
1903 0, // R600_Addr:sub10
1904 0, // R600_Addr:sub11
1905 0, // R600_Addr:sub12
1906 0, // R600_Addr:sub13
1907 0, // R600_Addr:sub14
1908 0, // R600_Addr:sub15
1909 },
1910 { // R600_KC0
1911 0, // R600_KC0:sub0
1912 0, // R600_KC0:sub1
1913 0, // R600_KC0:sub2
1914 0, // R600_KC0:sub3
1915 0, // R600_KC0:sub4
1916 0, // R600_KC0:sub5
1917 0, // R600_KC0:sub6
1918 0, // R600_KC0:sub7
1919 0, // R600_KC0:sub8
1920 0, // R600_KC0:sub9
1921 0, // R600_KC0:sub10
1922 0, // R600_KC0:sub11
1923 0, // R600_KC0:sub12
1924 0, // R600_KC0:sub13
1925 0, // R600_KC0:sub14
1926 0, // R600_KC0:sub15
1927 },
1928 { // R600_KC1
1929 0, // R600_KC1:sub0
1930 0, // R600_KC1:sub1
1931 0, // R600_KC1:sub2
1932 0, // R600_KC1:sub3
1933 0, // R600_KC1:sub4
1934 0, // R600_KC1:sub5
1935 0, // R600_KC1:sub6
1936 0, // R600_KC1:sub7
1937 0, // R600_KC1:sub8
1938 0, // R600_KC1:sub9
1939 0, // R600_KC1:sub10
1940 0, // R600_KC1:sub11
1941 0, // R600_KC1:sub12
1942 0, // R600_KC1:sub13
1943 0, // R600_KC1:sub14
1944 0, // R600_KC1:sub15
1945 },
1946 { // R600_TReg32_W
1947 0, // R600_TReg32_W:sub0
1948 0, // R600_TReg32_W:sub1
1949 0, // R600_TReg32_W:sub2
1950 0, // R600_TReg32_W:sub3
1951 0, // R600_TReg32_W:sub4
1952 0, // R600_TReg32_W:sub5
1953 0, // R600_TReg32_W:sub6
1954 0, // R600_TReg32_W:sub7
1955 0, // R600_TReg32_W:sub8
1956 0, // R600_TReg32_W:sub9
1957 0, // R600_TReg32_W:sub10
1958 0, // R600_TReg32_W:sub11
1959 0, // R600_TReg32_W:sub12
1960 0, // R600_TReg32_W:sub13
1961 0, // R600_TReg32_W:sub14
1962 0, // R600_TReg32_W:sub15
1963 },
1964 { // R600_TReg32_Y
1965 0, // R600_TReg32_Y:sub0
1966 0, // R600_TReg32_Y:sub1
1967 0, // R600_TReg32_Y:sub2
1968 0, // R600_TReg32_Y:sub3
1969 0, // R600_TReg32_Y:sub4
1970 0, // R600_TReg32_Y:sub5
1971 0, // R600_TReg32_Y:sub6
1972 0, // R600_TReg32_Y:sub7
1973 0, // R600_TReg32_Y:sub8
1974 0, // R600_TReg32_Y:sub9
1975 0, // R600_TReg32_Y:sub10
1976 0, // R600_TReg32_Y:sub11
1977 0, // R600_TReg32_Y:sub12
1978 0, // R600_TReg32_Y:sub13
1979 0, // R600_TReg32_Y:sub14
1980 0, // R600_TReg32_Y:sub15
1981 },
1982 { // R600_TReg32_Z
1983 0, // R600_TReg32_Z:sub0
1984 0, // R600_TReg32_Z:sub1
1985 0, // R600_TReg32_Z:sub2
1986 0, // R600_TReg32_Z:sub3
1987 0, // R600_TReg32_Z:sub4
1988 0, // R600_TReg32_Z:sub5
1989 0, // R600_TReg32_Z:sub6
1990 0, // R600_TReg32_Z:sub7
1991 0, // R600_TReg32_Z:sub8
1992 0, // R600_TReg32_Z:sub9
1993 0, // R600_TReg32_Z:sub10
1994 0, // R600_TReg32_Z:sub11
1995 0, // R600_TReg32_Z:sub12
1996 0, // R600_TReg32_Z:sub13
1997 0, // R600_TReg32_Z:sub14
1998 0, // R600_TReg32_Z:sub15
1999 },
2000 { // R600_ArrayBase
2001 0, // R600_ArrayBase:sub0
2002 0, // R600_ArrayBase:sub1
2003 0, // R600_ArrayBase:sub2
2004 0, // R600_ArrayBase:sub3
2005 0, // R600_ArrayBase:sub4
2006 0, // R600_ArrayBase:sub5
2007 0, // R600_ArrayBase:sub6
2008 0, // R600_ArrayBase:sub7
2009 0, // R600_ArrayBase:sub8
2010 0, // R600_ArrayBase:sub9
2011 0, // R600_ArrayBase:sub10
2012 0, // R600_ArrayBase:sub11
2013 0, // R600_ArrayBase:sub12
2014 0, // R600_ArrayBase:sub13
2015 0, // R600_ArrayBase:sub14
2016 0, // R600_ArrayBase:sub15
2017 },
2018 { // R600_KC0_W
2019 0, // R600_KC0_W:sub0
2020 0, // R600_KC0_W:sub1
2021 0, // R600_KC0_W:sub2
2022 0, // R600_KC0_W:sub3
2023 0, // R600_KC0_W:sub4
2024 0, // R600_KC0_W:sub5
2025 0, // R600_KC0_W:sub6
2026 0, // R600_KC0_W:sub7
2027 0, // R600_KC0_W:sub8
2028 0, // R600_KC0_W:sub9
2029 0, // R600_KC0_W:sub10
2030 0, // R600_KC0_W:sub11
2031 0, // R600_KC0_W:sub12
2032 0, // R600_KC0_W:sub13
2033 0, // R600_KC0_W:sub14
2034 0, // R600_KC0_W:sub15
2035 },
2036 { // R600_KC0_X
2037 0, // R600_KC0_X:sub0
2038 0, // R600_KC0_X:sub1
2039 0, // R600_KC0_X:sub2
2040 0, // R600_KC0_X:sub3
2041 0, // R600_KC0_X:sub4
2042 0, // R600_KC0_X:sub5
2043 0, // R600_KC0_X:sub6
2044 0, // R600_KC0_X:sub7
2045 0, // R600_KC0_X:sub8
2046 0, // R600_KC0_X:sub9
2047 0, // R600_KC0_X:sub10
2048 0, // R600_KC0_X:sub11
2049 0, // R600_KC0_X:sub12
2050 0, // R600_KC0_X:sub13
2051 0, // R600_KC0_X:sub14
2052 0, // R600_KC0_X:sub15
2053 },
2054 { // R600_KC0_Y
2055 0, // R600_KC0_Y:sub0
2056 0, // R600_KC0_Y:sub1
2057 0, // R600_KC0_Y:sub2
2058 0, // R600_KC0_Y:sub3
2059 0, // R600_KC0_Y:sub4
2060 0, // R600_KC0_Y:sub5
2061 0, // R600_KC0_Y:sub6
2062 0, // R600_KC0_Y:sub7
2063 0, // R600_KC0_Y:sub8
2064 0, // R600_KC0_Y:sub9
2065 0, // R600_KC0_Y:sub10
2066 0, // R600_KC0_Y:sub11
2067 0, // R600_KC0_Y:sub12
2068 0, // R600_KC0_Y:sub13
2069 0, // R600_KC0_Y:sub14
2070 0, // R600_KC0_Y:sub15
2071 },
2072 { // R600_KC0_Z
2073 0, // R600_KC0_Z:sub0
2074 0, // R600_KC0_Z:sub1
2075 0, // R600_KC0_Z:sub2
2076 0, // R600_KC0_Z:sub3
2077 0, // R600_KC0_Z:sub4
2078 0, // R600_KC0_Z:sub5
2079 0, // R600_KC0_Z:sub6
2080 0, // R600_KC0_Z:sub7
2081 0, // R600_KC0_Z:sub8
2082 0, // R600_KC0_Z:sub9
2083 0, // R600_KC0_Z:sub10
2084 0, // R600_KC0_Z:sub11
2085 0, // R600_KC0_Z:sub12
2086 0, // R600_KC0_Z:sub13
2087 0, // R600_KC0_Z:sub14
2088 0, // R600_KC0_Z:sub15
2089 },
2090 { // R600_KC1_W
2091 0, // R600_KC1_W:sub0
2092 0, // R600_KC1_W:sub1
2093 0, // R600_KC1_W:sub2
2094 0, // R600_KC1_W:sub3
2095 0, // R600_KC1_W:sub4
2096 0, // R600_KC1_W:sub5
2097 0, // R600_KC1_W:sub6
2098 0, // R600_KC1_W:sub7
2099 0, // R600_KC1_W:sub8
2100 0, // R600_KC1_W:sub9
2101 0, // R600_KC1_W:sub10
2102 0, // R600_KC1_W:sub11
2103 0, // R600_KC1_W:sub12
2104 0, // R600_KC1_W:sub13
2105 0, // R600_KC1_W:sub14
2106 0, // R600_KC1_W:sub15
2107 },
2108 { // R600_KC1_X
2109 0, // R600_KC1_X:sub0
2110 0, // R600_KC1_X:sub1
2111 0, // R600_KC1_X:sub2
2112 0, // R600_KC1_X:sub3
2113 0, // R600_KC1_X:sub4
2114 0, // R600_KC1_X:sub5
2115 0, // R600_KC1_X:sub6
2116 0, // R600_KC1_X:sub7
2117 0, // R600_KC1_X:sub8
2118 0, // R600_KC1_X:sub9
2119 0, // R600_KC1_X:sub10
2120 0, // R600_KC1_X:sub11
2121 0, // R600_KC1_X:sub12
2122 0, // R600_KC1_X:sub13
2123 0, // R600_KC1_X:sub14
2124 0, // R600_KC1_X:sub15
2125 },
2126 { // R600_KC1_Y
2127 0, // R600_KC1_Y:sub0
2128 0, // R600_KC1_Y:sub1
2129 0, // R600_KC1_Y:sub2
2130 0, // R600_KC1_Y:sub3
2131 0, // R600_KC1_Y:sub4
2132 0, // R600_KC1_Y:sub5
2133 0, // R600_KC1_Y:sub6
2134 0, // R600_KC1_Y:sub7
2135 0, // R600_KC1_Y:sub8
2136 0, // R600_KC1_Y:sub9
2137 0, // R600_KC1_Y:sub10
2138 0, // R600_KC1_Y:sub11
2139 0, // R600_KC1_Y:sub12
2140 0, // R600_KC1_Y:sub13
2141 0, // R600_KC1_Y:sub14
2142 0, // R600_KC1_Y:sub15
2143 },
2144 { // R600_KC1_Z
2145 0, // R600_KC1_Z:sub0
2146 0, // R600_KC1_Z:sub1
2147 0, // R600_KC1_Z:sub2
2148 0, // R600_KC1_Z:sub3
2149 0, // R600_KC1_Z:sub4
2150 0, // R600_KC1_Z:sub5
2151 0, // R600_KC1_Z:sub6
2152 0, // R600_KC1_Z:sub7
2153 0, // R600_KC1_Z:sub8
2154 0, // R600_KC1_Z:sub9
2155 0, // R600_KC1_Z:sub10
2156 0, // R600_KC1_Z:sub11
2157 0, // R600_KC1_Z:sub12
2158 0, // R600_KC1_Z:sub13
2159 0, // R600_KC1_Z:sub14
2160 0, // R600_KC1_Z:sub15
2161 },
2162 { // R600_LDS_SRC_REG
2163 0, // R600_LDS_SRC_REG:sub0
2164 0, // R600_LDS_SRC_REG:sub1
2165 0, // R600_LDS_SRC_REG:sub2
2166 0, // R600_LDS_SRC_REG:sub3
2167 0, // R600_LDS_SRC_REG:sub4
2168 0, // R600_LDS_SRC_REG:sub5
2169 0, // R600_LDS_SRC_REG:sub6
2170 0, // R600_LDS_SRC_REG:sub7
2171 0, // R600_LDS_SRC_REG:sub8
2172 0, // R600_LDS_SRC_REG:sub9
2173 0, // R600_LDS_SRC_REG:sub10
2174 0, // R600_LDS_SRC_REG:sub11
2175 0, // R600_LDS_SRC_REG:sub12
2176 0, // R600_LDS_SRC_REG:sub13
2177 0, // R600_LDS_SRC_REG:sub14
2178 0, // R600_LDS_SRC_REG:sub15
2179 },
2180 { // R600_Predicate
2181 0, // R600_Predicate:sub0
2182 0, // R600_Predicate:sub1
2183 0, // R600_Predicate:sub2
2184 0, // R600_Predicate:sub3
2185 0, // R600_Predicate:sub4
2186 0, // R600_Predicate:sub5
2187 0, // R600_Predicate:sub6
2188 0, // R600_Predicate:sub7
2189 0, // R600_Predicate:sub8
2190 0, // R600_Predicate:sub9
2191 0, // R600_Predicate:sub10
2192 0, // R600_Predicate:sub11
2193 0, // R600_Predicate:sub12
2194 0, // R600_Predicate:sub13
2195 0, // R600_Predicate:sub14
2196 0, // R600_Predicate:sub15
2197 },
2198 { // R600_Addr_W
2199 0, // R600_Addr_W:sub0
2200 0, // R600_Addr_W:sub1
2201 0, // R600_Addr_W:sub2
2202 0, // R600_Addr_W:sub3
2203 0, // R600_Addr_W:sub4
2204 0, // R600_Addr_W:sub5
2205 0, // R600_Addr_W:sub6
2206 0, // R600_Addr_W:sub7
2207 0, // R600_Addr_W:sub8
2208 0, // R600_Addr_W:sub9
2209 0, // R600_Addr_W:sub10
2210 0, // R600_Addr_W:sub11
2211 0, // R600_Addr_W:sub12
2212 0, // R600_Addr_W:sub13
2213 0, // R600_Addr_W:sub14
2214 0, // R600_Addr_W:sub15
2215 },
2216 { // R600_Addr_Y
2217 0, // R600_Addr_Y:sub0
2218 0, // R600_Addr_Y:sub1
2219 0, // R600_Addr_Y:sub2
2220 0, // R600_Addr_Y:sub3
2221 0, // R600_Addr_Y:sub4
2222 0, // R600_Addr_Y:sub5
2223 0, // R600_Addr_Y:sub6
2224 0, // R600_Addr_Y:sub7
2225 0, // R600_Addr_Y:sub8
2226 0, // R600_Addr_Y:sub9
2227 0, // R600_Addr_Y:sub10
2228 0, // R600_Addr_Y:sub11
2229 0, // R600_Addr_Y:sub12
2230 0, // R600_Addr_Y:sub13
2231 0, // R600_Addr_Y:sub14
2232 0, // R600_Addr_Y:sub15
2233 },
2234 { // R600_Addr_Z
2235 0, // R600_Addr_Z:sub0
2236 0, // R600_Addr_Z:sub1
2237 0, // R600_Addr_Z:sub2
2238 0, // R600_Addr_Z:sub3
2239 0, // R600_Addr_Z:sub4
2240 0, // R600_Addr_Z:sub5
2241 0, // R600_Addr_Z:sub6
2242 0, // R600_Addr_Z:sub7
2243 0, // R600_Addr_Z:sub8
2244 0, // R600_Addr_Z:sub9
2245 0, // R600_Addr_Z:sub10
2246 0, // R600_Addr_Z:sub11
2247 0, // R600_Addr_Z:sub12
2248 0, // R600_Addr_Z:sub13
2249 0, // R600_Addr_Z:sub14
2250 0, // R600_Addr_Z:sub15
2251 },
2252 { // R600_LDS_SRC_REG_and_R600_Reg32
2253 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub0
2254 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub1
2255 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub2
2256 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub3
2257 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub4
2258 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub5
2259 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub6
2260 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub7
2261 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub8
2262 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub9
2263 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub10
2264 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub11
2265 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub12
2266 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub13
2267 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub14
2268 0, // R600_LDS_SRC_REG_and_R600_Reg32:sub15
2269 },
2270 { // R600_Predicate_Bit
2271 0, // R600_Predicate_Bit:sub0
2272 0, // R600_Predicate_Bit:sub1
2273 0, // R600_Predicate_Bit:sub2
2274 0, // R600_Predicate_Bit:sub3
2275 0, // R600_Predicate_Bit:sub4
2276 0, // R600_Predicate_Bit:sub5
2277 0, // R600_Predicate_Bit:sub6
2278 0, // R600_Predicate_Bit:sub7
2279 0, // R600_Predicate_Bit:sub8
2280 0, // R600_Predicate_Bit:sub9
2281 0, // R600_Predicate_Bit:sub10
2282 0, // R600_Predicate_Bit:sub11
2283 0, // R600_Predicate_Bit:sub12
2284 0, // R600_Predicate_Bit:sub13
2285 0, // R600_Predicate_Bit:sub14
2286 0, // R600_Predicate_Bit:sub15
2287 },
2288 { // R600_Reg64
2289 3, // R600_Reg64:sub0 -> R600_TReg32_X
2290 8, // R600_Reg64:sub1 -> R600_TReg32_Y
2291 0, // R600_Reg64:sub2
2292 0, // R600_Reg64:sub3
2293 0, // R600_Reg64:sub4
2294 0, // R600_Reg64:sub5
2295 0, // R600_Reg64:sub6
2296 0, // R600_Reg64:sub7
2297 0, // R600_Reg64:sub8
2298 0, // R600_Reg64:sub9
2299 0, // R600_Reg64:sub10
2300 0, // R600_Reg64:sub11
2301 0, // R600_Reg64:sub12
2302 0, // R600_Reg64:sub13
2303 0, // R600_Reg64:sub14
2304 0, // R600_Reg64:sub15
2305 },
2306 { // R600_Reg64Vertical
2307 2, // R600_Reg64Vertical:sub0 -> R600_TReg32
2308 2, // R600_Reg64Vertical:sub1 -> R600_TReg32
2309 0, // R600_Reg64Vertical:sub2
2310 0, // R600_Reg64Vertical:sub3
2311 0, // R600_Reg64Vertical:sub4
2312 0, // R600_Reg64Vertical:sub5
2313 0, // R600_Reg64Vertical:sub6
2314 0, // R600_Reg64Vertical:sub7
2315 0, // R600_Reg64Vertical:sub8
2316 0, // R600_Reg64Vertical:sub9
2317 0, // R600_Reg64Vertical:sub10
2318 0, // R600_Reg64Vertical:sub11
2319 0, // R600_Reg64Vertical:sub12
2320 0, // R600_Reg64Vertical:sub13
2321 0, // R600_Reg64Vertical:sub14
2322 0, // R600_Reg64Vertical:sub15
2323 },
2324 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W
2325 7, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub0 -> R600_TReg32_W
2326 7, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub1 -> R600_TReg32_W
2327 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub2
2328 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub3
2329 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub4
2330 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub5
2331 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub6
2332 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub7
2333 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub8
2334 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub9
2335 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub10
2336 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub11
2337 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub12
2338 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub13
2339 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub14
2340 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W:sub15
2341 },
2342 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X
2343 3, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub0 -> R600_TReg32_X
2344 3, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub1 -> R600_TReg32_X
2345 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub2
2346 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub3
2347 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub4
2348 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub5
2349 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub6
2350 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub7
2351 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub8
2352 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub9
2353 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub10
2354 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub11
2355 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub12
2356 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub13
2357 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub14
2358 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X:sub15
2359 },
2360 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y
2361 8, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub0 -> R600_TReg32_Y
2362 8, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub1 -> R600_TReg32_Y
2363 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub2
2364 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub3
2365 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub4
2366 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub5
2367 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub6
2368 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub7
2369 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub8
2370 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub9
2371 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub10
2372 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub11
2373 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub12
2374 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub13
2375 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub14
2376 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y:sub15
2377 },
2378 { // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z
2379 9, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub0 -> R600_TReg32_Z
2380 9, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub1 -> R600_TReg32_Z
2381 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub2
2382 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub3
2383 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub4
2384 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub5
2385 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub6
2386 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub7
2387 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub8
2388 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub9
2389 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub10
2390 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub11
2391 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub12
2392 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub13
2393 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub14
2394 0, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z:sub15
2395 },
2396 { // R600_Reg128
2397 3, // R600_Reg128:sub0 -> R600_TReg32_X
2398 8, // R600_Reg128:sub1 -> R600_TReg32_Y
2399 9, // R600_Reg128:sub2 -> R600_TReg32_Z
2400 7, // R600_Reg128:sub3 -> R600_TReg32_W
2401 0, // R600_Reg128:sub4
2402 0, // R600_Reg128:sub5
2403 0, // R600_Reg128:sub6
2404 0, // R600_Reg128:sub7
2405 0, // R600_Reg128:sub8
2406 0, // R600_Reg128:sub9
2407 0, // R600_Reg128:sub10
2408 0, // R600_Reg128:sub11
2409 0, // R600_Reg128:sub12
2410 0, // R600_Reg128:sub13
2411 0, // R600_Reg128:sub14
2412 0, // R600_Reg128:sub15
2413 },
2414 { // R600_Reg128Vertical
2415 2, // R600_Reg128Vertical:sub0 -> R600_TReg32
2416 2, // R600_Reg128Vertical:sub1 -> R600_TReg32
2417 2, // R600_Reg128Vertical:sub2 -> R600_TReg32
2418 2, // R600_Reg128Vertical:sub3 -> R600_TReg32
2419 0, // R600_Reg128Vertical:sub4
2420 0, // R600_Reg128Vertical:sub5
2421 0, // R600_Reg128Vertical:sub6
2422 0, // R600_Reg128Vertical:sub7
2423 0, // R600_Reg128Vertical:sub8
2424 0, // R600_Reg128Vertical:sub9
2425 0, // R600_Reg128Vertical:sub10
2426 0, // R600_Reg128Vertical:sub11
2427 0, // R600_Reg128Vertical:sub12
2428 0, // R600_Reg128Vertical:sub13
2429 0, // R600_Reg128Vertical:sub14
2430 0, // R600_Reg128Vertical:sub15
2431 },
2432 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
2433 7, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub0 -> R600_TReg32_W
2434 7, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub1 -> R600_TReg32_W
2435 7, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub2 -> R600_TReg32_W
2436 7, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub3 -> R600_TReg32_W
2437 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub4
2438 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub5
2439 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub6
2440 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub7
2441 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub8
2442 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub9
2443 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub10
2444 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub11
2445 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub12
2446 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub13
2447 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub14
2448 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W:sub15
2449 },
2450 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
2451 3, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub0 -> R600_TReg32_X
2452 3, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub1 -> R600_TReg32_X
2453 3, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub2 -> R600_TReg32_X
2454 3, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub3 -> R600_TReg32_X
2455 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub4
2456 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub5
2457 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub6
2458 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub7
2459 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub8
2460 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub9
2461 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub10
2462 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub11
2463 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub12
2464 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub13
2465 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub14
2466 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X:sub15
2467 },
2468 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
2469 8, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub0 -> R600_TReg32_Y
2470 8, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub1 -> R600_TReg32_Y
2471 8, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub2 -> R600_TReg32_Y
2472 8, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub3 -> R600_TReg32_Y
2473 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub4
2474 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub5
2475 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub6
2476 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub7
2477 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub8
2478 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub9
2479 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub10
2480 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub11
2481 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub12
2482 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub13
2483 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub14
2484 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y:sub15
2485 },
2486 { // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
2487 9, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub0 -> R600_TReg32_Z
2488 9, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub1 -> R600_TReg32_Z
2489 9, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub2 -> R600_TReg32_Z
2490 9, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub3 -> R600_TReg32_Z
2491 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub4
2492 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub5
2493 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub6
2494 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub7
2495 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub8
2496 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub9
2497 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub10
2498 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub11
2499 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub12
2500 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub13
2501 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub14
2502 0, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z:sub15
2503 },
2504
2505 };
2506 assert(RC && "Missing regclass");
2507 if (!Idx) return RC;
2508 --Idx;
2509 assert(Idx < 16 && "Bad subreg");
2510 unsigned TV = Table[RC->getID()][Idx];
2511 return TV ? getRegClass(i: TV - 1) : nullptr;
2512}/// Get the weight in units of pressure for this register class.
2513const RegClassWeight &R600GenRegisterInfo::
2514getRegClassWeight(const TargetRegisterClass *RC) const {
2515 static const RegClassWeight RCWeightTable[] = {
2516 {.RegWeight: 0, .WeightLimit: 942}, // R600_Reg32
2517 {.RegWeight: 0, .WeightLimit: 513}, // R600_TReg32
2518 {.RegWeight: 0, .WeightLimit: 129}, // R600_TReg32_X
2519 {.RegWeight: 0, .WeightLimit: 128}, // R600_Addr
2520 {.RegWeight: 0, .WeightLimit: 128}, // R600_KC0
2521 {.RegWeight: 0, .WeightLimit: 128}, // R600_KC1
2522 {.RegWeight: 0, .WeightLimit: 128}, // R600_TReg32_W
2523 {.RegWeight: 0, .WeightLimit: 128}, // R600_TReg32_Y
2524 {.RegWeight: 0, .WeightLimit: 128}, // R600_TReg32_Z
2525 {.RegWeight: 0, .WeightLimit: 33}, // R600_ArrayBase
2526 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC0_W
2527 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC0_X
2528 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC0_Y
2529 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC0_Z
2530 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC1_W
2531 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC1_X
2532 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC1_Y
2533 {.RegWeight: 0, .WeightLimit: 32}, // R600_KC1_Z
2534 {.RegWeight: 0, .WeightLimit: 1}, // R600_LDS_SRC_REG
2535 {.RegWeight: 0, .WeightLimit: 3}, // R600_Predicate
2536 {.RegWeight: 0, .WeightLimit: 0}, // R600_Addr_W
2537 {.RegWeight: 0, .WeightLimit: 0}, // R600_Addr_Y
2538 {.RegWeight: 0, .WeightLimit: 0}, // R600_Addr_Z
2539 {.RegWeight: 1, .WeightLimit: 1}, // R600_LDS_SRC_REG_and_R600_Reg32
2540 {.RegWeight: 0, .WeightLimit: 1}, // R600_Predicate_Bit
2541 {.RegWeight: 0, .WeightLimit: 128}, // R600_Reg64
2542 {.RegWeight: 0, .WeightLimit: 16}, // R600_Reg64Vertical
2543 {.RegWeight: 2, .WeightLimit: 4}, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_W
2544 {.RegWeight: 2, .WeightLimit: 4}, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_X
2545 {.RegWeight: 2, .WeightLimit: 4}, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y
2546 {.RegWeight: 2, .WeightLimit: 4}, // R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z
2547 {.RegWeight: 0, .WeightLimit: 512}, // R600_Reg128
2548 {.RegWeight: 0, .WeightLimit: 16}, // R600_Reg128Vertical
2549 {.RegWeight: 4, .WeightLimit: 4}, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_W
2550 {.RegWeight: 4, .WeightLimit: 4}, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_X
2551 {.RegWeight: 4, .WeightLimit: 4}, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Y
2552 {.RegWeight: 4, .WeightLimit: 4}, // R600_Reg128Vertical_with_sub0_in_R600_TReg32_Z
2553 };
2554 return RCWeightTable[RC->getID()];
2555}
2556
2557/// Get the weight in units of pressure for this register unit.
2558unsigned R600GenRegisterInfo::
2559getRegUnitWeight(MCRegUnit RegUnit) const {
2560 assert(static_cast<unsigned>(RegUnit) < 1342 && "invalid register unit");
2561 // All register units have unit weight.
2562 return 1;
2563}
2564
2565
2566// Get the number of dimensions of register pressure.
2567unsigned R600GenRegisterInfo::getNumRegPressureSets() const {
2568 return 23;
2569}
2570
2571// Get the name of this register unit pressure set.
2572const char *R600GenRegisterInfo::
2573getRegPressureSetName(unsigned Idx) const {
2574 static const char *PressureNameTable[] = {
2575 "R600_LDS_SRC_REG_and_R600_Reg32",
2576 "R600_Predicate_Bit",
2577 "R600_Predicate",
2578 "R600_Reg64Vertical_with_sub0_in_R600_TReg32_W",
2579 "R600_Reg64Vertical_with_sub0_in_R600_TReg32_X",
2580 "R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y",
2581 "R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z",
2582 "R600_Reg64Vertical",
2583 "R600_ArrayBase",
2584 "R600_TReg32_W",
2585 "R600_TReg32_Y",
2586 "R600_TReg32_Z",
2587 "R600_Reg64",
2588 "R600_TReg32_X",
2589 "R600_Reg64_with_R600_Reg64Vertical",
2590 "R600_TReg32_W_with_R600_Reg64Vertical",
2591 "R600_TReg32_Y_with_R600_Reg64Vertical",
2592 "R600_TReg32_Z_with_R600_Reg64Vertical",
2593 "R600_TReg32_X_with_R600_Reg64Vertical",
2594 "R600_TReg32_Y_with_R600_Reg64",
2595 "R600_TReg32_X_with_R600_Reg64",
2596 "R600_TReg32",
2597 "R600_Reg32",
2598 };
2599 return PressureNameTable[Idx];
2600}
2601
2602// Get the register unit pressure limit for this dimension.
2603// This limit must be adjusted dynamically for reserved registers.
2604unsigned R600GenRegisterInfo::
2605getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const {
2606 static const uint16_t PressureLimitTable[] = {
2607 1, // 0: R600_LDS_SRC_REG_and_R600_Reg32
2608 1, // 1: R600_Predicate_Bit
2609 3, // 2: R600_Predicate
2610 4, // 3: R600_Reg64Vertical_with_sub0_in_R600_TReg32_W
2611 4, // 4: R600_Reg64Vertical_with_sub0_in_R600_TReg32_X
2612 4, // 5: R600_Reg64Vertical_with_sub0_in_R600_TReg32_Y
2613 4, // 6: R600_Reg64Vertical_with_sub0_in_R600_TReg32_Z
2614 16, // 7: R600_Reg64Vertical
2615 33, // 8: R600_ArrayBase
2616 128, // 9: R600_TReg32_W
2617 128, // 10: R600_TReg32_Y
2618 128, // 11: R600_TReg32_Z
2619 128, // 12: R600_Reg64
2620 129, // 13: R600_TReg32_X
2621 136, // 14: R600_Reg64_with_R600_Reg64Vertical
2622 140, // 15: R600_TReg32_W_with_R600_Reg64Vertical
2623 140, // 16: R600_TReg32_Y_with_R600_Reg64Vertical
2624 140, // 17: R600_TReg32_Z_with_R600_Reg64Vertical
2625 141, // 18: R600_TReg32_X_with_R600_Reg64Vertical
2626 192, // 19: R600_TReg32_Y_with_R600_Reg64
2627 193, // 20: R600_TReg32_X_with_R600_Reg64
2628 513, // 21: R600_TReg32
2629 942, // 22: R600_Reg32
2630 };
2631 return PressureLimitTable[Idx];
2632}
2633
2634/// Table of pressure sets per register class or unit.
2635static const int RCSetsTable[] = {
2636 /* 0 */ 1, -1,
2637 /* 2 */ 2, -1,
2638 /* 4 */ 0, 22, -1,
2639 /* 7 */ 8, 22, -1,
2640 /* 10 */ 9, 15, 21, 22, -1,
2641 /* 15 */ 11, 17, 21, 22, -1,
2642 /* 20 */ 7, 14, 15, 16, 17, 18, 21, 22, -1,
2643 /* 29 */ 3, 7, 9, 14, 15, 16, 17, 18, 21, 22, -1,
2644 /* 40 */ 6, 7, 11, 14, 15, 16, 17, 18, 21, 22, -1,
2645 /* 51 */ 10, 16, 19, 21, 22, -1,
2646 /* 57 */ 13, 18, 20, 21, 22, -1,
2647 /* 63 */ 12, 14, 19, 20, 21, 22, -1,
2648 /* 70 */ 10, 12, 14, 16, 19, 20, 21, 22, -1,
2649 /* 79 */ 12, 13, 14, 18, 19, 20, 21, 22, -1,
2650 /* 88 */ 5, 7, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
2651 /* 102 */ 4, 7, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
2652};
2653
2654/// Get the dimensions of register pressure impacted by this register class.
2655/// Returns a -1 terminated array of pressure set IDs
2656const int *R600GenRegisterInfo::
2657getRegClassPressureSets(const TargetRegisterClass *RC) const {
2658 static const uint8_t RCSetStartTable[] = {
2659 5,12,57,1,1,1,10,51,15,7,1,1,1,1,1,1,1,1,1,2,1,1,1,4,0,63,20,29,102,88,40,12,20,29,102,88,40,};
2660 return &RCSetsTable[RCSetStartTable[RC->getID()]];
2661}
2662
2663/// Get the dimensions of register pressure impacted by this register unit.
2664/// Returns a -1 terminated array of pressure set IDs
2665const int *R600GenRegisterInfo::
2666getRegUnitPressureSets(MCRegUnit RegUnit) const {
2667 assert(static_cast<unsigned>(RegUnit) < 1342 && "invalid register unit");
2668 static const uint8_t RUSetStartTable[] = {
2669 5,1,5,1,1,5,57,5,5,1,1,5,5,5,5,1,4,1,1,0,2,2,2,1,1,5,1,1,5,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,29,29,29,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,102,102,102,102,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,88,88,88,88,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,40,40,40,40,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,};
2670 return &RCSetsTable[RUSetStartTable[static_cast<unsigned>(RegUnit)]];
2671}
2672
2673
2674// Register to minimal register class mapping
2675
2676const TargetRegisterClass *R600GenRegisterInfo::getMinimalPhysRegClass(MCRegister Reg) const {
2677 static const uint16_t InvalidRegClassID = UINT16_MAX;
2678
2679 static const uint16_t Mapping[1675] = {
2680 InvalidRegClassID, // NoRegister
2681 R600::R600_Reg32RegClassID, // ALU_CONST
2682 InvalidRegClassID, // ALU_LITERAL_W
2683 R600::R600_Reg32RegClassID, // ALU_LITERAL_X
2684 InvalidRegClassID, // ALU_LITERAL_Y
2685 InvalidRegClassID, // ALU_LITERAL_Z
2686 R600::R600_Reg32RegClassID, // ALU_PARAM
2687 R600::R600_TReg32_XRegClassID, // AR_X
2688 R600::R600_Reg32RegClassID, // HALF
2689 R600::R600_Reg32RegClassID, // INDIRECT_BASE_ADDR
2690 R600::R600_LDS_SRC_REGRegClassID, // LDS_DIRECT_A
2691 R600::R600_LDS_SRC_REGRegClassID, // LDS_DIRECT_B
2692 R600::R600_Reg32RegClassID, // NEG_HALF
2693 R600::R600_Reg32RegClassID, // NEG_ONE
2694 R600::R600_Reg32RegClassID, // ONE
2695 R600::R600_Reg32RegClassID, // ONE_INT
2696 R600::R600_LDS_SRC_REGRegClassID, // OQA
2697 R600::R600_LDS_SRC_REG_and_R600_Reg32RegClassID, // OQAP
2698 R600::R600_LDS_SRC_REGRegClassID, // OQB
2699 R600::R600_LDS_SRC_REGRegClassID, // OQBP
2700 R600::R600_Predicate_BitRegClassID, // PREDICATE_BIT
2701 R600::R600_PredicateRegClassID, // PRED_SEL_OFF
2702 R600::R600_PredicateRegClassID, // PRED_SEL_ONE
2703 R600::R600_PredicateRegClassID, // PRED_SEL_ZERO
2704 InvalidRegClassID, // PS
2705 InvalidRegClassID, // PV_W
2706 R600::R600_Reg32RegClassID, // PV_X
2707 InvalidRegClassID, // PV_Y
2708 InvalidRegClassID, // PV_Z
2709 R600::R600_Reg32RegClassID, // ZERO
2710 R600::R600_ArrayBaseRegClassID, // ArrayBase448
2711 R600::R600_ArrayBaseRegClassID, // ArrayBase449
2712 R600::R600_ArrayBaseRegClassID, // ArrayBase450
2713 R600::R600_ArrayBaseRegClassID, // ArrayBase451
2714 R600::R600_ArrayBaseRegClassID, // ArrayBase452
2715 R600::R600_ArrayBaseRegClassID, // ArrayBase453
2716 R600::R600_ArrayBaseRegClassID, // ArrayBase454
2717 R600::R600_ArrayBaseRegClassID, // ArrayBase455
2718 R600::R600_ArrayBaseRegClassID, // ArrayBase456
2719 R600::R600_ArrayBaseRegClassID, // ArrayBase457
2720 R600::R600_ArrayBaseRegClassID, // ArrayBase458
2721 R600::R600_ArrayBaseRegClassID, // ArrayBase459
2722 R600::R600_ArrayBaseRegClassID, // ArrayBase460
2723 R600::R600_ArrayBaseRegClassID, // ArrayBase461
2724 R600::R600_ArrayBaseRegClassID, // ArrayBase462
2725 R600::R600_ArrayBaseRegClassID, // ArrayBase463
2726 R600::R600_ArrayBaseRegClassID, // ArrayBase464
2727 R600::R600_ArrayBaseRegClassID, // ArrayBase465
2728 R600::R600_ArrayBaseRegClassID, // ArrayBase466
2729 R600::R600_ArrayBaseRegClassID, // ArrayBase467
2730 R600::R600_ArrayBaseRegClassID, // ArrayBase468
2731 R600::R600_ArrayBaseRegClassID, // ArrayBase469
2732 R600::R600_ArrayBaseRegClassID, // ArrayBase470
2733 R600::R600_ArrayBaseRegClassID, // ArrayBase471
2734 R600::R600_ArrayBaseRegClassID, // ArrayBase472
2735 R600::R600_ArrayBaseRegClassID, // ArrayBase473
2736 R600::R600_ArrayBaseRegClassID, // ArrayBase474
2737 R600::R600_ArrayBaseRegClassID, // ArrayBase475
2738 R600::R600_ArrayBaseRegClassID, // ArrayBase476
2739 R600::R600_ArrayBaseRegClassID, // ArrayBase477
2740 R600::R600_ArrayBaseRegClassID, // ArrayBase478
2741 R600::R600_ArrayBaseRegClassID, // ArrayBase479
2742 R600::R600_ArrayBaseRegClassID, // ArrayBase480
2743 R600::R600_Addr_WRegClassID, // Addr0_W
2744 InvalidRegClassID, // Addr1_W
2745 InvalidRegClassID, // Addr2_W
2746 InvalidRegClassID, // Addr3_W
2747 InvalidRegClassID, // Addr4_W
2748 InvalidRegClassID, // Addr5_W
2749 InvalidRegClassID, // Addr6_W
2750 InvalidRegClassID, // Addr7_W
2751 InvalidRegClassID, // Addr8_W
2752 InvalidRegClassID, // Addr9_W
2753 InvalidRegClassID, // Addr10_W
2754 InvalidRegClassID, // Addr11_W
2755 InvalidRegClassID, // Addr12_W
2756 InvalidRegClassID, // Addr13_W
2757 InvalidRegClassID, // Addr14_W
2758 InvalidRegClassID, // Addr15_W
2759 InvalidRegClassID, // Addr16_W
2760 InvalidRegClassID, // Addr17_W
2761 InvalidRegClassID, // Addr18_W
2762 InvalidRegClassID, // Addr19_W
2763 InvalidRegClassID, // Addr20_W
2764 InvalidRegClassID, // Addr21_W
2765 InvalidRegClassID, // Addr22_W
2766 InvalidRegClassID, // Addr23_W
2767 InvalidRegClassID, // Addr24_W
2768 InvalidRegClassID, // Addr25_W
2769 InvalidRegClassID, // Addr26_W
2770 InvalidRegClassID, // Addr27_W
2771 InvalidRegClassID, // Addr28_W
2772 InvalidRegClassID, // Addr29_W
2773 InvalidRegClassID, // Addr30_W
2774 InvalidRegClassID, // Addr31_W
2775 InvalidRegClassID, // Addr32_W
2776 InvalidRegClassID, // Addr33_W
2777 InvalidRegClassID, // Addr34_W
2778 InvalidRegClassID, // Addr35_W
2779 InvalidRegClassID, // Addr36_W
2780 InvalidRegClassID, // Addr37_W
2781 InvalidRegClassID, // Addr38_W
2782 InvalidRegClassID, // Addr39_W
2783 InvalidRegClassID, // Addr40_W
2784 InvalidRegClassID, // Addr41_W
2785 InvalidRegClassID, // Addr42_W
2786 InvalidRegClassID, // Addr43_W
2787 InvalidRegClassID, // Addr44_W
2788 InvalidRegClassID, // Addr45_W
2789 InvalidRegClassID, // Addr46_W
2790 InvalidRegClassID, // Addr47_W
2791 InvalidRegClassID, // Addr48_W
2792 InvalidRegClassID, // Addr49_W
2793 InvalidRegClassID, // Addr50_W
2794 InvalidRegClassID, // Addr51_W
2795 InvalidRegClassID, // Addr52_W
2796 InvalidRegClassID, // Addr53_W
2797 InvalidRegClassID, // Addr54_W
2798 InvalidRegClassID, // Addr55_W
2799 InvalidRegClassID, // Addr56_W
2800 InvalidRegClassID, // Addr57_W
2801 InvalidRegClassID, // Addr58_W
2802 InvalidRegClassID, // Addr59_W
2803 InvalidRegClassID, // Addr60_W
2804 InvalidRegClassID, // Addr61_W
2805 InvalidRegClassID, // Addr62_W
2806 InvalidRegClassID, // Addr63_W
2807 InvalidRegClassID, // Addr64_W
2808 InvalidRegClassID, // Addr65_W
2809 InvalidRegClassID, // Addr66_W
2810 InvalidRegClassID, // Addr67_W
2811 InvalidRegClassID, // Addr68_W
2812 InvalidRegClassID, // Addr69_W
2813 InvalidRegClassID, // Addr70_W
2814 InvalidRegClassID, // Addr71_W
2815 InvalidRegClassID, // Addr72_W
2816 InvalidRegClassID, // Addr73_W
2817 InvalidRegClassID, // Addr74_W
2818 InvalidRegClassID, // Addr75_W
2819 InvalidRegClassID, // Addr76_W
2820 InvalidRegClassID, // Addr77_W
2821 InvalidRegClassID, // Addr78_W
2822 InvalidRegClassID, // Addr79_W
2823 InvalidRegClassID, // Addr80_W
2824 InvalidRegClassID, // Addr81_W
2825 InvalidRegClassID, // Addr82_W
2826 InvalidRegClassID, // Addr83_W
2827 InvalidRegClassID, // Addr84_W
2828 InvalidRegClassID, // Addr85_W
2829 InvalidRegClassID, // Addr86_W
2830 InvalidRegClassID, // Addr87_W
2831 InvalidRegClassID, // Addr88_W
2832 InvalidRegClassID, // Addr89_W
2833 InvalidRegClassID, // Addr90_W
2834 InvalidRegClassID, // Addr91_W
2835 InvalidRegClassID, // Addr92_W
2836 InvalidRegClassID, // Addr93_W
2837 InvalidRegClassID, // Addr94_W
2838 InvalidRegClassID, // Addr95_W
2839 InvalidRegClassID, // Addr96_W
2840 InvalidRegClassID, // Addr97_W
2841 InvalidRegClassID, // Addr98_W
2842 InvalidRegClassID, // Addr99_W
2843 InvalidRegClassID, // Addr100_W
2844 InvalidRegClassID, // Addr101_W
2845 InvalidRegClassID, // Addr102_W
2846 InvalidRegClassID, // Addr103_W
2847 InvalidRegClassID, // Addr104_W
2848 InvalidRegClassID, // Addr105_W
2849 InvalidRegClassID, // Addr106_W
2850 InvalidRegClassID, // Addr107_W
2851 InvalidRegClassID, // Addr108_W
2852 InvalidRegClassID, // Addr109_W
2853 InvalidRegClassID, // Addr110_W
2854 InvalidRegClassID, // Addr111_W
2855 InvalidRegClassID, // Addr112_W
2856 InvalidRegClassID, // Addr113_W
2857 InvalidRegClassID, // Addr114_W
2858 InvalidRegClassID, // Addr115_W
2859 InvalidRegClassID, // Addr116_W
2860 InvalidRegClassID, // Addr117_W
2861 InvalidRegClassID, // Addr118_W
2862 InvalidRegClassID, // Addr119_W
2863 InvalidRegClassID, // Addr120_W
2864 InvalidRegClassID, // Addr121_W
2865 InvalidRegClassID, // Addr122_W
2866 InvalidRegClassID, // Addr123_W
2867 InvalidRegClassID, // Addr124_W
2868 InvalidRegClassID, // Addr125_W
2869 InvalidRegClassID, // Addr126_W
2870 InvalidRegClassID, // Addr127_W
2871 R600::R600_AddrRegClassID, // Addr0_X
2872 R600::R600_AddrRegClassID, // Addr1_X
2873 R600::R600_AddrRegClassID, // Addr2_X
2874 R600::R600_AddrRegClassID, // Addr3_X
2875 R600::R600_AddrRegClassID, // Addr4_X
2876 R600::R600_AddrRegClassID, // Addr5_X
2877 R600::R600_AddrRegClassID, // Addr6_X
2878 R600::R600_AddrRegClassID, // Addr7_X
2879 R600::R600_AddrRegClassID, // Addr8_X
2880 R600::R600_AddrRegClassID, // Addr9_X
2881 R600::R600_AddrRegClassID, // Addr10_X
2882 R600::R600_AddrRegClassID, // Addr11_X
2883 R600::R600_AddrRegClassID, // Addr12_X
2884 R600::R600_AddrRegClassID, // Addr13_X
2885 R600::R600_AddrRegClassID, // Addr14_X
2886 R600::R600_AddrRegClassID, // Addr15_X
2887 R600::R600_AddrRegClassID, // Addr16_X
2888 R600::R600_AddrRegClassID, // Addr17_X
2889 R600::R600_AddrRegClassID, // Addr18_X
2890 R600::R600_AddrRegClassID, // Addr19_X
2891 R600::R600_AddrRegClassID, // Addr20_X
2892 R600::R600_AddrRegClassID, // Addr21_X
2893 R600::R600_AddrRegClassID, // Addr22_X
2894 R600::R600_AddrRegClassID, // Addr23_X
2895 R600::R600_AddrRegClassID, // Addr24_X
2896 R600::R600_AddrRegClassID, // Addr25_X
2897 R600::R600_AddrRegClassID, // Addr26_X
2898 R600::R600_AddrRegClassID, // Addr27_X
2899 R600::R600_AddrRegClassID, // Addr28_X
2900 R600::R600_AddrRegClassID, // Addr29_X
2901 R600::R600_AddrRegClassID, // Addr30_X
2902 R600::R600_AddrRegClassID, // Addr31_X
2903 R600::R600_AddrRegClassID, // Addr32_X
2904 R600::R600_AddrRegClassID, // Addr33_X
2905 R600::R600_AddrRegClassID, // Addr34_X
2906 R600::R600_AddrRegClassID, // Addr35_X
2907 R600::R600_AddrRegClassID, // Addr36_X
2908 R600::R600_AddrRegClassID, // Addr37_X
2909 R600::R600_AddrRegClassID, // Addr38_X
2910 R600::R600_AddrRegClassID, // Addr39_X
2911 R600::R600_AddrRegClassID, // Addr40_X
2912 R600::R600_AddrRegClassID, // Addr41_X
2913 R600::R600_AddrRegClassID, // Addr42_X
2914 R600::R600_AddrRegClassID, // Addr43_X
2915 R600::R600_AddrRegClassID, // Addr44_X
2916 R600::R600_AddrRegClassID, // Addr45_X
2917 R600::R600_AddrRegClassID, // Addr46_X
2918 R600::R600_AddrRegClassID, // Addr47_X
2919 R600::R600_AddrRegClassID, // Addr48_X
2920 R600::R600_AddrRegClassID, // Addr49_X
2921 R600::R600_AddrRegClassID, // Addr50_X
2922 R600::R600_AddrRegClassID, // Addr51_X
2923 R600::R600_AddrRegClassID, // Addr52_X
2924 R600::R600_AddrRegClassID, // Addr53_X
2925 R600::R600_AddrRegClassID, // Addr54_X
2926 R600::R600_AddrRegClassID, // Addr55_X
2927 R600::R600_AddrRegClassID, // Addr56_X
2928 R600::R600_AddrRegClassID, // Addr57_X
2929 R600::R600_AddrRegClassID, // Addr58_X
2930 R600::R600_AddrRegClassID, // Addr59_X
2931 R600::R600_AddrRegClassID, // Addr60_X
2932 R600::R600_AddrRegClassID, // Addr61_X
2933 R600::R600_AddrRegClassID, // Addr62_X
2934 R600::R600_AddrRegClassID, // Addr63_X
2935 R600::R600_AddrRegClassID, // Addr64_X
2936 R600::R600_AddrRegClassID, // Addr65_X
2937 R600::R600_AddrRegClassID, // Addr66_X
2938 R600::R600_AddrRegClassID, // Addr67_X
2939 R600::R600_AddrRegClassID, // Addr68_X
2940 R600::R600_AddrRegClassID, // Addr69_X
2941 R600::R600_AddrRegClassID, // Addr70_X
2942 R600::R600_AddrRegClassID, // Addr71_X
2943 R600::R600_AddrRegClassID, // Addr72_X
2944 R600::R600_AddrRegClassID, // Addr73_X
2945 R600::R600_AddrRegClassID, // Addr74_X
2946 R600::R600_AddrRegClassID, // Addr75_X
2947 R600::R600_AddrRegClassID, // Addr76_X
2948 R600::R600_AddrRegClassID, // Addr77_X
2949 R600::R600_AddrRegClassID, // Addr78_X
2950 R600::R600_AddrRegClassID, // Addr79_X
2951 R600::R600_AddrRegClassID, // Addr80_X
2952 R600::R600_AddrRegClassID, // Addr81_X
2953 R600::R600_AddrRegClassID, // Addr82_X
2954 R600::R600_AddrRegClassID, // Addr83_X
2955 R600::R600_AddrRegClassID, // Addr84_X
2956 R600::R600_AddrRegClassID, // Addr85_X
2957 R600::R600_AddrRegClassID, // Addr86_X
2958 R600::R600_AddrRegClassID, // Addr87_X
2959 R600::R600_AddrRegClassID, // Addr88_X
2960 R600::R600_AddrRegClassID, // Addr89_X
2961 R600::R600_AddrRegClassID, // Addr90_X
2962 R600::R600_AddrRegClassID, // Addr91_X
2963 R600::R600_AddrRegClassID, // Addr92_X
2964 R600::R600_AddrRegClassID, // Addr93_X
2965 R600::R600_AddrRegClassID, // Addr94_X
2966 R600::R600_AddrRegClassID, // Addr95_X
2967 R600::R600_AddrRegClassID, // Addr96_X
2968 R600::R600_AddrRegClassID, // Addr97_X
2969 R600::R600_AddrRegClassID, // Addr98_X
2970 R600::R600_AddrRegClassID, // Addr99_X
2971 R600::R600_AddrRegClassID, // Addr100_X
2972 R600::R600_AddrRegClassID, // Addr101_X
2973 R600::R600_AddrRegClassID, // Addr102_X
2974 R600::R600_AddrRegClassID, // Addr103_X
2975 R600::R600_AddrRegClassID, // Addr104_X
2976 R600::R600_AddrRegClassID, // Addr105_X
2977 R600::R600_AddrRegClassID, // Addr106_X
2978 R600::R600_AddrRegClassID, // Addr107_X
2979 R600::R600_AddrRegClassID, // Addr108_X
2980 R600::R600_AddrRegClassID, // Addr109_X
2981 R600::R600_AddrRegClassID, // Addr110_X
2982 R600::R600_AddrRegClassID, // Addr111_X
2983 R600::R600_AddrRegClassID, // Addr112_X
2984 R600::R600_AddrRegClassID, // Addr113_X
2985 R600::R600_AddrRegClassID, // Addr114_X
2986 R600::R600_AddrRegClassID, // Addr115_X
2987 R600::R600_AddrRegClassID, // Addr116_X
2988 R600::R600_AddrRegClassID, // Addr117_X
2989 R600::R600_AddrRegClassID, // Addr118_X
2990 R600::R600_AddrRegClassID, // Addr119_X
2991 R600::R600_AddrRegClassID, // Addr120_X
2992 R600::R600_AddrRegClassID, // Addr121_X
2993 R600::R600_AddrRegClassID, // Addr122_X
2994 R600::R600_AddrRegClassID, // Addr123_X
2995 R600::R600_AddrRegClassID, // Addr124_X
2996 R600::R600_AddrRegClassID, // Addr125_X
2997 R600::R600_AddrRegClassID, // Addr126_X
2998 R600::R600_AddrRegClassID, // Addr127_X
2999 R600::R600_Addr_YRegClassID, // Addr0_Y
3000 InvalidRegClassID, // Addr1_Y
3001 InvalidRegClassID, // Addr2_Y
3002 InvalidRegClassID, // Addr3_Y
3003 InvalidRegClassID, // Addr4_Y
3004 InvalidRegClassID, // Addr5_Y
3005 InvalidRegClassID, // Addr6_Y
3006 InvalidRegClassID, // Addr7_Y
3007 InvalidRegClassID, // Addr8_Y
3008 InvalidRegClassID, // Addr9_Y
3009 InvalidRegClassID, // Addr10_Y
3010 InvalidRegClassID, // Addr11_Y
3011 InvalidRegClassID, // Addr12_Y
3012 InvalidRegClassID, // Addr13_Y
3013 InvalidRegClassID, // Addr14_Y
3014 InvalidRegClassID, // Addr15_Y
3015 InvalidRegClassID, // Addr16_Y
3016 InvalidRegClassID, // Addr17_Y
3017 InvalidRegClassID, // Addr18_Y
3018 InvalidRegClassID, // Addr19_Y
3019 InvalidRegClassID, // Addr20_Y
3020 InvalidRegClassID, // Addr21_Y
3021 InvalidRegClassID, // Addr22_Y
3022 InvalidRegClassID, // Addr23_Y
3023 InvalidRegClassID, // Addr24_Y
3024 InvalidRegClassID, // Addr25_Y
3025 InvalidRegClassID, // Addr26_Y
3026 InvalidRegClassID, // Addr27_Y
3027 InvalidRegClassID, // Addr28_Y
3028 InvalidRegClassID, // Addr29_Y
3029 InvalidRegClassID, // Addr30_Y
3030 InvalidRegClassID, // Addr31_Y
3031 InvalidRegClassID, // Addr32_Y
3032 InvalidRegClassID, // Addr33_Y
3033 InvalidRegClassID, // Addr34_Y
3034 InvalidRegClassID, // Addr35_Y
3035 InvalidRegClassID, // Addr36_Y
3036 InvalidRegClassID, // Addr37_Y
3037 InvalidRegClassID, // Addr38_Y
3038 InvalidRegClassID, // Addr39_Y
3039 InvalidRegClassID, // Addr40_Y
3040 InvalidRegClassID, // Addr41_Y
3041 InvalidRegClassID, // Addr42_Y
3042 InvalidRegClassID, // Addr43_Y
3043 InvalidRegClassID, // Addr44_Y
3044 InvalidRegClassID, // Addr45_Y
3045 InvalidRegClassID, // Addr46_Y
3046 InvalidRegClassID, // Addr47_Y
3047 InvalidRegClassID, // Addr48_Y
3048 InvalidRegClassID, // Addr49_Y
3049 InvalidRegClassID, // Addr50_Y
3050 InvalidRegClassID, // Addr51_Y
3051 InvalidRegClassID, // Addr52_Y
3052 InvalidRegClassID, // Addr53_Y
3053 InvalidRegClassID, // Addr54_Y
3054 InvalidRegClassID, // Addr55_Y
3055 InvalidRegClassID, // Addr56_Y
3056 InvalidRegClassID, // Addr57_Y
3057 InvalidRegClassID, // Addr58_Y
3058 InvalidRegClassID, // Addr59_Y
3059 InvalidRegClassID, // Addr60_Y
3060 InvalidRegClassID, // Addr61_Y
3061 InvalidRegClassID, // Addr62_Y
3062 InvalidRegClassID, // Addr63_Y
3063 InvalidRegClassID, // Addr64_Y
3064 InvalidRegClassID, // Addr65_Y
3065 InvalidRegClassID, // Addr66_Y
3066 InvalidRegClassID, // Addr67_Y
3067 InvalidRegClassID, // Addr68_Y
3068 InvalidRegClassID, // Addr69_Y
3069 InvalidRegClassID, // Addr70_Y
3070 InvalidRegClassID, // Addr71_Y
3071 InvalidRegClassID, // Addr72_Y
3072 InvalidRegClassID, // Addr73_Y
3073 InvalidRegClassID, // Addr74_Y
3074 InvalidRegClassID, // Addr75_Y
3075 InvalidRegClassID, // Addr76_Y
3076 InvalidRegClassID, // Addr77_Y
3077 InvalidRegClassID, // Addr78_Y
3078 InvalidRegClassID, // Addr79_Y
3079 InvalidRegClassID, // Addr80_Y
3080 InvalidRegClassID, // Addr81_Y
3081 InvalidRegClassID, // Addr82_Y
3082 InvalidRegClassID, // Addr83_Y
3083 InvalidRegClassID, // Addr84_Y
3084 InvalidRegClassID, // Addr85_Y
3085 InvalidRegClassID, // Addr86_Y
3086 InvalidRegClassID, // Addr87_Y
3087 InvalidRegClassID, // Addr88_Y
3088 InvalidRegClassID, // Addr89_Y
3089 InvalidRegClassID, // Addr90_Y
3090 InvalidRegClassID, // Addr91_Y
3091 InvalidRegClassID, // Addr92_Y
3092 InvalidRegClassID, // Addr93_Y
3093 InvalidRegClassID, // Addr94_Y
3094 InvalidRegClassID, // Addr95_Y
3095 InvalidRegClassID, // Addr96_Y
3096 InvalidRegClassID, // Addr97_Y
3097 InvalidRegClassID, // Addr98_Y
3098 InvalidRegClassID, // Addr99_Y
3099 InvalidRegClassID, // Addr100_Y
3100 InvalidRegClassID, // Addr101_Y
3101 InvalidRegClassID, // Addr102_Y
3102 InvalidRegClassID, // Addr103_Y
3103 InvalidRegClassID, // Addr104_Y
3104 InvalidRegClassID, // Addr105_Y
3105 InvalidRegClassID, // Addr106_Y
3106 InvalidRegClassID, // Addr107_Y
3107 InvalidRegClassID, // Addr108_Y
3108 InvalidRegClassID, // Addr109_Y
3109 InvalidRegClassID, // Addr110_Y
3110 InvalidRegClassID, // Addr111_Y
3111 InvalidRegClassID, // Addr112_Y
3112 InvalidRegClassID, // Addr113_Y
3113 InvalidRegClassID, // Addr114_Y
3114 InvalidRegClassID, // Addr115_Y
3115 InvalidRegClassID, // Addr116_Y
3116 InvalidRegClassID, // Addr117_Y
3117 InvalidRegClassID, // Addr118_Y
3118 InvalidRegClassID, // Addr119_Y
3119 InvalidRegClassID, // Addr120_Y
3120 InvalidRegClassID, // Addr121_Y
3121 InvalidRegClassID, // Addr122_Y
3122 InvalidRegClassID, // Addr123_Y
3123 InvalidRegClassID, // Addr124_Y
3124 InvalidRegClassID, // Addr125_Y
3125 InvalidRegClassID, // Addr126_Y
3126 InvalidRegClassID, // Addr127_Y
3127 R600::R600_Addr_ZRegClassID, // Addr0_Z
3128 InvalidRegClassID, // Addr1_Z
3129 InvalidRegClassID, // Addr2_Z
3130 InvalidRegClassID, // Addr3_Z
3131 InvalidRegClassID, // Addr4_Z
3132 InvalidRegClassID, // Addr5_Z
3133 InvalidRegClassID, // Addr6_Z
3134 InvalidRegClassID, // Addr7_Z
3135 InvalidRegClassID, // Addr8_Z
3136 InvalidRegClassID, // Addr9_Z
3137 InvalidRegClassID, // Addr10_Z
3138 InvalidRegClassID, // Addr11_Z
3139 InvalidRegClassID, // Addr12_Z
3140 InvalidRegClassID, // Addr13_Z
3141 InvalidRegClassID, // Addr14_Z
3142 InvalidRegClassID, // Addr15_Z
3143 InvalidRegClassID, // Addr16_Z
3144 InvalidRegClassID, // Addr17_Z
3145 InvalidRegClassID, // Addr18_Z
3146 InvalidRegClassID, // Addr19_Z
3147 InvalidRegClassID, // Addr20_Z
3148 InvalidRegClassID, // Addr21_Z
3149 InvalidRegClassID, // Addr22_Z
3150 InvalidRegClassID, // Addr23_Z
3151 InvalidRegClassID, // Addr24_Z
3152 InvalidRegClassID, // Addr25_Z
3153 InvalidRegClassID, // Addr26_Z
3154 InvalidRegClassID, // Addr27_Z
3155 InvalidRegClassID, // Addr28_Z
3156 InvalidRegClassID, // Addr29_Z
3157 InvalidRegClassID, // Addr30_Z
3158 InvalidRegClassID, // Addr31_Z
3159 InvalidRegClassID, // Addr32_Z
3160 InvalidRegClassID, // Addr33_Z
3161 InvalidRegClassID, // Addr34_Z
3162 InvalidRegClassID, // Addr35_Z
3163 InvalidRegClassID, // Addr36_Z
3164 InvalidRegClassID, // Addr37_Z
3165 InvalidRegClassID, // Addr38_Z
3166 InvalidRegClassID, // Addr39_Z
3167 InvalidRegClassID, // Addr40_Z
3168 InvalidRegClassID, // Addr41_Z
3169 InvalidRegClassID, // Addr42_Z
3170 InvalidRegClassID, // Addr43_Z
3171 InvalidRegClassID, // Addr44_Z
3172 InvalidRegClassID, // Addr45_Z
3173 InvalidRegClassID, // Addr46_Z
3174 InvalidRegClassID, // Addr47_Z
3175 InvalidRegClassID, // Addr48_Z
3176 InvalidRegClassID, // Addr49_Z
3177 InvalidRegClassID, // Addr50_Z
3178 InvalidRegClassID, // Addr51_Z
3179 InvalidRegClassID, // Addr52_Z
3180 InvalidRegClassID, // Addr53_Z
3181 InvalidRegClassID, // Addr54_Z
3182 InvalidRegClassID, // Addr55_Z
3183 InvalidRegClassID, // Addr56_Z
3184 InvalidRegClassID, // Addr57_Z
3185 InvalidRegClassID, // Addr58_Z
3186 InvalidRegClassID, // Addr59_Z
3187 InvalidRegClassID, // Addr60_Z
3188 InvalidRegClassID, // Addr61_Z
3189 InvalidRegClassID, // Addr62_Z
3190 InvalidRegClassID, // Addr63_Z
3191 InvalidRegClassID, // Addr64_Z
3192 InvalidRegClassID, // Addr65_Z
3193 InvalidRegClassID, // Addr66_Z
3194 InvalidRegClassID, // Addr67_Z
3195 InvalidRegClassID, // Addr68_Z
3196 InvalidRegClassID, // Addr69_Z
3197 InvalidRegClassID, // Addr70_Z
3198 InvalidRegClassID, // Addr71_Z
3199 InvalidRegClassID, // Addr72_Z
3200 InvalidRegClassID, // Addr73_Z
3201 InvalidRegClassID, // Addr74_Z
3202 InvalidRegClassID, // Addr75_Z
3203 InvalidRegClassID, // Addr76_Z
3204 InvalidRegClassID, // Addr77_Z
3205 InvalidRegClassID, // Addr78_Z
3206 InvalidRegClassID, // Addr79_Z
3207 InvalidRegClassID, // Addr80_Z
3208 InvalidRegClassID, // Addr81_Z
3209 InvalidRegClassID, // Addr82_Z
3210 InvalidRegClassID, // Addr83_Z
3211 InvalidRegClassID, // Addr84_Z
3212 InvalidRegClassID, // Addr85_Z
3213 InvalidRegClassID, // Addr86_Z
3214 InvalidRegClassID, // Addr87_Z
3215 InvalidRegClassID, // Addr88_Z
3216 InvalidRegClassID, // Addr89_Z
3217 InvalidRegClassID, // Addr90_Z
3218 InvalidRegClassID, // Addr91_Z
3219 InvalidRegClassID, // Addr92_Z
3220 InvalidRegClassID, // Addr93_Z
3221 InvalidRegClassID, // Addr94_Z
3222 InvalidRegClassID, // Addr95_Z
3223 InvalidRegClassID, // Addr96_Z
3224 InvalidRegClassID, // Addr97_Z
3225 InvalidRegClassID, // Addr98_Z
3226 InvalidRegClassID, // Addr99_Z
3227 InvalidRegClassID, // Addr100_Z
3228 InvalidRegClassID, // Addr101_Z
3229 InvalidRegClassID, // Addr102_Z
3230 InvalidRegClassID, // Addr103_Z
3231 InvalidRegClassID, // Addr104_Z
3232 InvalidRegClassID, // Addr105_Z
3233 InvalidRegClassID, // Addr106_Z
3234 InvalidRegClassID, // Addr107_Z
3235 InvalidRegClassID, // Addr108_Z
3236 InvalidRegClassID, // Addr109_Z
3237 InvalidRegClassID, // Addr110_Z
3238 InvalidRegClassID, // Addr111_Z
3239 InvalidRegClassID, // Addr112_Z
3240 InvalidRegClassID, // Addr113_Z
3241 InvalidRegClassID, // Addr114_Z
3242 InvalidRegClassID, // Addr115_Z
3243 InvalidRegClassID, // Addr116_Z
3244 InvalidRegClassID, // Addr117_Z
3245 InvalidRegClassID, // Addr118_Z
3246 InvalidRegClassID, // Addr119_Z
3247 InvalidRegClassID, // Addr120_Z
3248 InvalidRegClassID, // Addr121_Z
3249 InvalidRegClassID, // Addr122_Z
3250 InvalidRegClassID, // Addr123_Z
3251 InvalidRegClassID, // Addr124_Z
3252 InvalidRegClassID, // Addr125_Z
3253 InvalidRegClassID, // Addr126_Z
3254 InvalidRegClassID, // Addr127_Z
3255 R600::R600_TReg32_WRegClassID, // T0_W
3256 R600::R600_TReg32_WRegClassID, // T1_W
3257 R600::R600_TReg32_WRegClassID, // T2_W
3258 R600::R600_TReg32_WRegClassID, // T3_W
3259 R600::R600_TReg32_WRegClassID, // T4_W
3260 R600::R600_TReg32_WRegClassID, // T5_W
3261 R600::R600_TReg32_WRegClassID, // T6_W
3262 R600::R600_TReg32_WRegClassID, // T7_W
3263 R600::R600_TReg32_WRegClassID, // T8_W
3264 R600::R600_TReg32_WRegClassID, // T9_W
3265 R600::R600_TReg32_WRegClassID, // T10_W
3266 R600::R600_TReg32_WRegClassID, // T11_W
3267 R600::R600_TReg32_WRegClassID, // T12_W
3268 R600::R600_TReg32_WRegClassID, // T13_W
3269 R600::R600_TReg32_WRegClassID, // T14_W
3270 R600::R600_TReg32_WRegClassID, // T15_W
3271 R600::R600_TReg32_WRegClassID, // T16_W
3272 R600::R600_TReg32_WRegClassID, // T17_W
3273 R600::R600_TReg32_WRegClassID, // T18_W
3274 R600::R600_TReg32_WRegClassID, // T19_W
3275 R600::R600_TReg32_WRegClassID, // T20_W
3276 R600::R600_TReg32_WRegClassID, // T21_W
3277 R600::R600_TReg32_WRegClassID, // T22_W
3278 R600::R600_TReg32_WRegClassID, // T23_W
3279 R600::R600_TReg32_WRegClassID, // T24_W
3280 R600::R600_TReg32_WRegClassID, // T25_W
3281 R600::R600_TReg32_WRegClassID, // T26_W
3282 R600::R600_TReg32_WRegClassID, // T27_W
3283 R600::R600_TReg32_WRegClassID, // T28_W
3284 R600::R600_TReg32_WRegClassID, // T29_W
3285 R600::R600_TReg32_WRegClassID, // T30_W
3286 R600::R600_TReg32_WRegClassID, // T31_W
3287 R600::R600_TReg32_WRegClassID, // T32_W
3288 R600::R600_TReg32_WRegClassID, // T33_W
3289 R600::R600_TReg32_WRegClassID, // T34_W
3290 R600::R600_TReg32_WRegClassID, // T35_W
3291 R600::R600_TReg32_WRegClassID, // T36_W
3292 R600::R600_TReg32_WRegClassID, // T37_W
3293 R600::R600_TReg32_WRegClassID, // T38_W
3294 R600::R600_TReg32_WRegClassID, // T39_W
3295 R600::R600_TReg32_WRegClassID, // T40_W
3296 R600::R600_TReg32_WRegClassID, // T41_W
3297 R600::R600_TReg32_WRegClassID, // T42_W
3298 R600::R600_TReg32_WRegClassID, // T43_W
3299 R600::R600_TReg32_WRegClassID, // T44_W
3300 R600::R600_TReg32_WRegClassID, // T45_W
3301 R600::R600_TReg32_WRegClassID, // T46_W
3302 R600::R600_TReg32_WRegClassID, // T47_W
3303 R600::R600_TReg32_WRegClassID, // T48_W
3304 R600::R600_TReg32_WRegClassID, // T49_W
3305 R600::R600_TReg32_WRegClassID, // T50_W
3306 R600::R600_TReg32_WRegClassID, // T51_W
3307 R600::R600_TReg32_WRegClassID, // T52_W
3308 R600::R600_TReg32_WRegClassID, // T53_W
3309 R600::R600_TReg32_WRegClassID, // T54_W
3310 R600::R600_TReg32_WRegClassID, // T55_W
3311 R600::R600_TReg32_WRegClassID, // T56_W
3312 R600::R600_TReg32_WRegClassID, // T57_W
3313 R600::R600_TReg32_WRegClassID, // T58_W
3314 R600::R600_TReg32_WRegClassID, // T59_W
3315 R600::R600_TReg32_WRegClassID, // T60_W
3316 R600::R600_TReg32_WRegClassID, // T61_W
3317 R600::R600_TReg32_WRegClassID, // T62_W
3318 R600::R600_TReg32_WRegClassID, // T63_W
3319 R600::R600_TReg32_WRegClassID, // T64_W
3320 R600::R600_TReg32_WRegClassID, // T65_W
3321 R600::R600_TReg32_WRegClassID, // T66_W
3322 R600::R600_TReg32_WRegClassID, // T67_W
3323 R600::R600_TReg32_WRegClassID, // T68_W
3324 R600::R600_TReg32_WRegClassID, // T69_W
3325 R600::R600_TReg32_WRegClassID, // T70_W
3326 R600::R600_TReg32_WRegClassID, // T71_W
3327 R600::R600_TReg32_WRegClassID, // T72_W
3328 R600::R600_TReg32_WRegClassID, // T73_W
3329 R600::R600_TReg32_WRegClassID, // T74_W
3330 R600::R600_TReg32_WRegClassID, // T75_W
3331 R600::R600_TReg32_WRegClassID, // T76_W
3332 R600::R600_TReg32_WRegClassID, // T77_W
3333 R600::R600_TReg32_WRegClassID, // T78_W
3334 R600::R600_TReg32_WRegClassID, // T79_W
3335 R600::R600_TReg32_WRegClassID, // T80_W
3336 R600::R600_TReg32_WRegClassID, // T81_W
3337 R600::R600_TReg32_WRegClassID, // T82_W
3338 R600::R600_TReg32_WRegClassID, // T83_W
3339 R600::R600_TReg32_WRegClassID, // T84_W
3340 R600::R600_TReg32_WRegClassID, // T85_W
3341 R600::R600_TReg32_WRegClassID, // T86_W
3342 R600::R600_TReg32_WRegClassID, // T87_W
3343 R600::R600_TReg32_WRegClassID, // T88_W
3344 R600::R600_TReg32_WRegClassID, // T89_W
3345 R600::R600_TReg32_WRegClassID, // T90_W
3346 R600::R600_TReg32_WRegClassID, // T91_W
3347 R600::R600_TReg32_WRegClassID, // T92_W
3348 R600::R600_TReg32_WRegClassID, // T93_W
3349 R600::R600_TReg32_WRegClassID, // T94_W
3350 R600::R600_TReg32_WRegClassID, // T95_W
3351 R600::R600_TReg32_WRegClassID, // T96_W
3352 R600::R600_TReg32_WRegClassID, // T97_W
3353 R600::R600_TReg32_WRegClassID, // T98_W
3354 R600::R600_TReg32_WRegClassID, // T99_W
3355 R600::R600_TReg32_WRegClassID, // T100_W
3356 R600::R600_TReg32_WRegClassID, // T101_W
3357 R600::R600_TReg32_WRegClassID, // T102_W
3358 R600::R600_TReg32_WRegClassID, // T103_W
3359 R600::R600_TReg32_WRegClassID, // T104_W
3360 R600::R600_TReg32_WRegClassID, // T105_W
3361 R600::R600_TReg32_WRegClassID, // T106_W
3362 R600::R600_TReg32_WRegClassID, // T107_W
3363 R600::R600_TReg32_WRegClassID, // T108_W
3364 R600::R600_TReg32_WRegClassID, // T109_W
3365 R600::R600_TReg32_WRegClassID, // T110_W
3366 R600::R600_TReg32_WRegClassID, // T111_W
3367 R600::R600_TReg32_WRegClassID, // T112_W
3368 R600::R600_TReg32_WRegClassID, // T113_W
3369 R600::R600_TReg32_WRegClassID, // T114_W
3370 R600::R600_TReg32_WRegClassID, // T115_W
3371 R600::R600_TReg32_WRegClassID, // T116_W
3372 R600::R600_TReg32_WRegClassID, // T117_W
3373 R600::R600_TReg32_WRegClassID, // T118_W
3374 R600::R600_TReg32_WRegClassID, // T119_W
3375 R600::R600_TReg32_WRegClassID, // T120_W
3376 R600::R600_TReg32_WRegClassID, // T121_W
3377 R600::R600_TReg32_WRegClassID, // T122_W
3378 R600::R600_TReg32_WRegClassID, // T123_W
3379 R600::R600_TReg32_WRegClassID, // T124_W
3380 R600::R600_TReg32_WRegClassID, // T125_W
3381 R600::R600_TReg32_WRegClassID, // T126_W
3382 R600::R600_TReg32_WRegClassID, // T127_W
3383 R600::R600_TReg32_XRegClassID, // T0_X
3384 R600::R600_TReg32_XRegClassID, // T1_X
3385 R600::R600_TReg32_XRegClassID, // T2_X
3386 R600::R600_TReg32_XRegClassID, // T3_X
3387 R600::R600_TReg32_XRegClassID, // T4_X
3388 R600::R600_TReg32_XRegClassID, // T5_X
3389 R600::R600_TReg32_XRegClassID, // T6_X
3390 R600::R600_TReg32_XRegClassID, // T7_X
3391 R600::R600_TReg32_XRegClassID, // T8_X
3392 R600::R600_TReg32_XRegClassID, // T9_X
3393 R600::R600_TReg32_XRegClassID, // T10_X
3394 R600::R600_TReg32_XRegClassID, // T11_X
3395 R600::R600_TReg32_XRegClassID, // T12_X
3396 R600::R600_TReg32_XRegClassID, // T13_X
3397 R600::R600_TReg32_XRegClassID, // T14_X
3398 R600::R600_TReg32_XRegClassID, // T15_X
3399 R600::R600_TReg32_XRegClassID, // T16_X
3400 R600::R600_TReg32_XRegClassID, // T17_X
3401 R600::R600_TReg32_XRegClassID, // T18_X
3402 R600::R600_TReg32_XRegClassID, // T19_X
3403 R600::R600_TReg32_XRegClassID, // T20_X
3404 R600::R600_TReg32_XRegClassID, // T21_X
3405 R600::R600_TReg32_XRegClassID, // T22_X
3406 R600::R600_TReg32_XRegClassID, // T23_X
3407 R600::R600_TReg32_XRegClassID, // T24_X
3408 R600::R600_TReg32_XRegClassID, // T25_X
3409 R600::R600_TReg32_XRegClassID, // T26_X
3410 R600::R600_TReg32_XRegClassID, // T27_X
3411 R600::R600_TReg32_XRegClassID, // T28_X
3412 R600::R600_TReg32_XRegClassID, // T29_X
3413 R600::R600_TReg32_XRegClassID, // T30_X
3414 R600::R600_TReg32_XRegClassID, // T31_X
3415 R600::R600_TReg32_XRegClassID, // T32_X
3416 R600::R600_TReg32_XRegClassID, // T33_X
3417 R600::R600_TReg32_XRegClassID, // T34_X
3418 R600::R600_TReg32_XRegClassID, // T35_X
3419 R600::R600_TReg32_XRegClassID, // T36_X
3420 R600::R600_TReg32_XRegClassID, // T37_X
3421 R600::R600_TReg32_XRegClassID, // T38_X
3422 R600::R600_TReg32_XRegClassID, // T39_X
3423 R600::R600_TReg32_XRegClassID, // T40_X
3424 R600::R600_TReg32_XRegClassID, // T41_X
3425 R600::R600_TReg32_XRegClassID, // T42_X
3426 R600::R600_TReg32_XRegClassID, // T43_X
3427 R600::R600_TReg32_XRegClassID, // T44_X
3428 R600::R600_TReg32_XRegClassID, // T45_X
3429 R600::R600_TReg32_XRegClassID, // T46_X
3430 R600::R600_TReg32_XRegClassID, // T47_X
3431 R600::R600_TReg32_XRegClassID, // T48_X
3432 R600::R600_TReg32_XRegClassID, // T49_X
3433 R600::R600_TReg32_XRegClassID, // T50_X
3434 R600::R600_TReg32_XRegClassID, // T51_X
3435 R600::R600_TReg32_XRegClassID, // T52_X
3436 R600::R600_TReg32_XRegClassID, // T53_X
3437 R600::R600_TReg32_XRegClassID, // T54_X
3438 R600::R600_TReg32_XRegClassID, // T55_X
3439 R600::R600_TReg32_XRegClassID, // T56_X
3440 R600::R600_TReg32_XRegClassID, // T57_X
3441 R600::R600_TReg32_XRegClassID, // T58_X
3442 R600::R600_TReg32_XRegClassID, // T59_X
3443 R600::R600_TReg32_XRegClassID, // T60_X
3444 R600::R600_TReg32_XRegClassID, // T61_X
3445 R600::R600_TReg32_XRegClassID, // T62_X
3446 R600::R600_TReg32_XRegClassID, // T63_X
3447 R600::R600_TReg32_XRegClassID, // T64_X
3448 R600::R600_TReg32_XRegClassID, // T65_X
3449 R600::R600_TReg32_XRegClassID, // T66_X
3450 R600::R600_TReg32_XRegClassID, // T67_X
3451 R600::R600_TReg32_XRegClassID, // T68_X
3452 R600::R600_TReg32_XRegClassID, // T69_X
3453 R600::R600_TReg32_XRegClassID, // T70_X
3454 R600::R600_TReg32_XRegClassID, // T71_X
3455 R600::R600_TReg32_XRegClassID, // T72_X
3456 R600::R600_TReg32_XRegClassID, // T73_X
3457 R600::R600_TReg32_XRegClassID, // T74_X
3458 R600::R600_TReg32_XRegClassID, // T75_X
3459 R600::R600_TReg32_XRegClassID, // T76_X
3460 R600::R600_TReg32_XRegClassID, // T77_X
3461 R600::R600_TReg32_XRegClassID, // T78_X
3462 R600::R600_TReg32_XRegClassID, // T79_X
3463 R600::R600_TReg32_XRegClassID, // T80_X
3464 R600::R600_TReg32_XRegClassID, // T81_X
3465 R600::R600_TReg32_XRegClassID, // T82_X
3466 R600::R600_TReg32_XRegClassID, // T83_X
3467 R600::R600_TReg32_XRegClassID, // T84_X
3468 R600::R600_TReg32_XRegClassID, // T85_X
3469 R600::R600_TReg32_XRegClassID, // T86_X
3470 R600::R600_TReg32_XRegClassID, // T87_X
3471 R600::R600_TReg32_XRegClassID, // T88_X
3472 R600::R600_TReg32_XRegClassID, // T89_X
3473 R600::R600_TReg32_XRegClassID, // T90_X
3474 R600::R600_TReg32_XRegClassID, // T91_X
3475 R600::R600_TReg32_XRegClassID, // T92_X
3476 R600::R600_TReg32_XRegClassID, // T93_X
3477 R600::R600_TReg32_XRegClassID, // T94_X
3478 R600::R600_TReg32_XRegClassID, // T95_X
3479 R600::R600_TReg32_XRegClassID, // T96_X
3480 R600::R600_TReg32_XRegClassID, // T97_X
3481 R600::R600_TReg32_XRegClassID, // T98_X
3482 R600::R600_TReg32_XRegClassID, // T99_X
3483 R600::R600_TReg32_XRegClassID, // T100_X
3484 R600::R600_TReg32_XRegClassID, // T101_X
3485 R600::R600_TReg32_XRegClassID, // T102_X
3486 R600::R600_TReg32_XRegClassID, // T103_X
3487 R600::R600_TReg32_XRegClassID, // T104_X
3488 R600::R600_TReg32_XRegClassID, // T105_X
3489 R600::R600_TReg32_XRegClassID, // T106_X
3490 R600::R600_TReg32_XRegClassID, // T107_X
3491 R600::R600_TReg32_XRegClassID, // T108_X
3492 R600::R600_TReg32_XRegClassID, // T109_X
3493 R600::R600_TReg32_XRegClassID, // T110_X
3494 R600::R600_TReg32_XRegClassID, // T111_X
3495 R600::R600_TReg32_XRegClassID, // T112_X
3496 R600::R600_TReg32_XRegClassID, // T113_X
3497 R600::R600_TReg32_XRegClassID, // T114_X
3498 R600::R600_TReg32_XRegClassID, // T115_X
3499 R600::R600_TReg32_XRegClassID, // T116_X
3500 R600::R600_TReg32_XRegClassID, // T117_X
3501 R600::R600_TReg32_XRegClassID, // T118_X
3502 R600::R600_TReg32_XRegClassID, // T119_X
3503 R600::R600_TReg32_XRegClassID, // T120_X
3504 R600::R600_TReg32_XRegClassID, // T121_X
3505 R600::R600_TReg32_XRegClassID, // T122_X
3506 R600::R600_TReg32_XRegClassID, // T123_X
3507 R600::R600_TReg32_XRegClassID, // T124_X
3508 R600::R600_TReg32_XRegClassID, // T125_X
3509 R600::R600_TReg32_XRegClassID, // T126_X
3510 R600::R600_TReg32_XRegClassID, // T127_X
3511 R600::R600_Reg64RegClassID, // T0_XY
3512 R600::R600_Reg64RegClassID, // T1_XY
3513 R600::R600_Reg64RegClassID, // T2_XY
3514 R600::R600_Reg64RegClassID, // T3_XY
3515 R600::R600_Reg64RegClassID, // T4_XY
3516 R600::R600_Reg64RegClassID, // T5_XY
3517 R600::R600_Reg64RegClassID, // T6_XY
3518 R600::R600_Reg64RegClassID, // T7_XY
3519 R600::R600_Reg64RegClassID, // T8_XY
3520 R600::R600_Reg64RegClassID, // T9_XY
3521 R600::R600_Reg64RegClassID, // T10_XY
3522 R600::R600_Reg64RegClassID, // T11_XY
3523 R600::R600_Reg64RegClassID, // T12_XY
3524 R600::R600_Reg64RegClassID, // T13_XY
3525 R600::R600_Reg64RegClassID, // T14_XY
3526 R600::R600_Reg64RegClassID, // T15_XY
3527 R600::R600_Reg64RegClassID, // T16_XY
3528 R600::R600_Reg64RegClassID, // T17_XY
3529 R600::R600_Reg64RegClassID, // T18_XY
3530 R600::R600_Reg64RegClassID, // T19_XY
3531 R600::R600_Reg64RegClassID, // T20_XY
3532 R600::R600_Reg64RegClassID, // T21_XY
3533 R600::R600_Reg64RegClassID, // T22_XY
3534 R600::R600_Reg64RegClassID, // T23_XY
3535 R600::R600_Reg64RegClassID, // T24_XY
3536 R600::R600_Reg64RegClassID, // T25_XY
3537 R600::R600_Reg64RegClassID, // T26_XY
3538 R600::R600_Reg64RegClassID, // T27_XY
3539 R600::R600_Reg64RegClassID, // T28_XY
3540 R600::R600_Reg64RegClassID, // T29_XY
3541 R600::R600_Reg64RegClassID, // T30_XY
3542 R600::R600_Reg64RegClassID, // T31_XY
3543 R600::R600_Reg64RegClassID, // T32_XY
3544 R600::R600_Reg64RegClassID, // T33_XY
3545 R600::R600_Reg64RegClassID, // T34_XY
3546 R600::R600_Reg64RegClassID, // T35_XY
3547 R600::R600_Reg64RegClassID, // T36_XY
3548 R600::R600_Reg64RegClassID, // T37_XY
3549 R600::R600_Reg64RegClassID, // T38_XY
3550 R600::R600_Reg64RegClassID, // T39_XY
3551 R600::R600_Reg64RegClassID, // T40_XY
3552 R600::R600_Reg64RegClassID, // T41_XY
3553 R600::R600_Reg64RegClassID, // T42_XY
3554 R600::R600_Reg64RegClassID, // T43_XY
3555 R600::R600_Reg64RegClassID, // T44_XY
3556 R600::R600_Reg64RegClassID, // T45_XY
3557 R600::R600_Reg64RegClassID, // T46_XY
3558 R600::R600_Reg64RegClassID, // T47_XY
3559 R600::R600_Reg64RegClassID, // T48_XY
3560 R600::R600_Reg64RegClassID, // T49_XY
3561 R600::R600_Reg64RegClassID, // T50_XY
3562 R600::R600_Reg64RegClassID, // T51_XY
3563 R600::R600_Reg64RegClassID, // T52_XY
3564 R600::R600_Reg64RegClassID, // T53_XY
3565 R600::R600_Reg64RegClassID, // T54_XY
3566 R600::R600_Reg64RegClassID, // T55_XY
3567 R600::R600_Reg64RegClassID, // T56_XY
3568 R600::R600_Reg64RegClassID, // T57_XY
3569 R600::R600_Reg64RegClassID, // T58_XY
3570 R600::R600_Reg64RegClassID, // T59_XY
3571 R600::R600_Reg64RegClassID, // T60_XY
3572 R600::R600_Reg64RegClassID, // T61_XY
3573 R600::R600_Reg64RegClassID, // T62_XY
3574 R600::R600_Reg64RegClassID, // T63_XY
3575 InvalidRegClassID, // T64_XY
3576 InvalidRegClassID, // T65_XY
3577 InvalidRegClassID, // T66_XY
3578 InvalidRegClassID, // T67_XY
3579 InvalidRegClassID, // T68_XY
3580 InvalidRegClassID, // T69_XY
3581 InvalidRegClassID, // T70_XY
3582 InvalidRegClassID, // T71_XY
3583 InvalidRegClassID, // T72_XY
3584 InvalidRegClassID, // T73_XY
3585 InvalidRegClassID, // T74_XY
3586 InvalidRegClassID, // T75_XY
3587 InvalidRegClassID, // T76_XY
3588 InvalidRegClassID, // T77_XY
3589 InvalidRegClassID, // T78_XY
3590 InvalidRegClassID, // T79_XY
3591 InvalidRegClassID, // T80_XY
3592 InvalidRegClassID, // T81_XY
3593 InvalidRegClassID, // T82_XY
3594 InvalidRegClassID, // T83_XY
3595 InvalidRegClassID, // T84_XY
3596 InvalidRegClassID, // T85_XY
3597 InvalidRegClassID, // T86_XY
3598 InvalidRegClassID, // T87_XY
3599 InvalidRegClassID, // T88_XY
3600 InvalidRegClassID, // T89_XY
3601 InvalidRegClassID, // T90_XY
3602 InvalidRegClassID, // T91_XY
3603 InvalidRegClassID, // T92_XY
3604 InvalidRegClassID, // T93_XY
3605 InvalidRegClassID, // T94_XY
3606 InvalidRegClassID, // T95_XY
3607 InvalidRegClassID, // T96_XY
3608 InvalidRegClassID, // T97_XY
3609 InvalidRegClassID, // T98_XY
3610 InvalidRegClassID, // T99_XY
3611 InvalidRegClassID, // T100_XY
3612 InvalidRegClassID, // T101_XY
3613 InvalidRegClassID, // T102_XY
3614 InvalidRegClassID, // T103_XY
3615 InvalidRegClassID, // T104_XY
3616 InvalidRegClassID, // T105_XY
3617 InvalidRegClassID, // T106_XY
3618 InvalidRegClassID, // T107_XY
3619 InvalidRegClassID, // T108_XY
3620 InvalidRegClassID, // T109_XY
3621 InvalidRegClassID, // T110_XY
3622 InvalidRegClassID, // T111_XY
3623 InvalidRegClassID, // T112_XY
3624 InvalidRegClassID, // T113_XY
3625 InvalidRegClassID, // T114_XY
3626 InvalidRegClassID, // T115_XY
3627 InvalidRegClassID, // T116_XY
3628 InvalidRegClassID, // T117_XY
3629 InvalidRegClassID, // T118_XY
3630 InvalidRegClassID, // T119_XY
3631 InvalidRegClassID, // T120_XY
3632 InvalidRegClassID, // T121_XY
3633 InvalidRegClassID, // T122_XY
3634 InvalidRegClassID, // T123_XY
3635 InvalidRegClassID, // T124_XY
3636 InvalidRegClassID, // T125_XY
3637 InvalidRegClassID, // T126_XY
3638 InvalidRegClassID, // T127_XY
3639 R600::R600_Reg128RegClassID, // T0_XYZW
3640 R600::R600_Reg128RegClassID, // T1_XYZW
3641 R600::R600_Reg128RegClassID, // T2_XYZW
3642 R600::R600_Reg128RegClassID, // T3_XYZW
3643 R600::R600_Reg128RegClassID, // T4_XYZW
3644 R600::R600_Reg128RegClassID, // T5_XYZW
3645 R600::R600_Reg128RegClassID, // T6_XYZW
3646 R600::R600_Reg128RegClassID, // T7_XYZW
3647 R600::R600_Reg128RegClassID, // T8_XYZW
3648 R600::R600_Reg128RegClassID, // T9_XYZW
3649 R600::R600_Reg128RegClassID, // T10_XYZW
3650 R600::R600_Reg128RegClassID, // T11_XYZW
3651 R600::R600_Reg128RegClassID, // T12_XYZW
3652 R600::R600_Reg128RegClassID, // T13_XYZW
3653 R600::R600_Reg128RegClassID, // T14_XYZW
3654 R600::R600_Reg128RegClassID, // T15_XYZW
3655 R600::R600_Reg128RegClassID, // T16_XYZW
3656 R600::R600_Reg128RegClassID, // T17_XYZW
3657 R600::R600_Reg128RegClassID, // T18_XYZW
3658 R600::R600_Reg128RegClassID, // T19_XYZW
3659 R600::R600_Reg128RegClassID, // T20_XYZW
3660 R600::R600_Reg128RegClassID, // T21_XYZW
3661 R600::R600_Reg128RegClassID, // T22_XYZW
3662 R600::R600_Reg128RegClassID, // T23_XYZW
3663 R600::R600_Reg128RegClassID, // T24_XYZW
3664 R600::R600_Reg128RegClassID, // T25_XYZW
3665 R600::R600_Reg128RegClassID, // T26_XYZW
3666 R600::R600_Reg128RegClassID, // T27_XYZW
3667 R600::R600_Reg128RegClassID, // T28_XYZW
3668 R600::R600_Reg128RegClassID, // T29_XYZW
3669 R600::R600_Reg128RegClassID, // T30_XYZW
3670 R600::R600_Reg128RegClassID, // T31_XYZW
3671 R600::R600_Reg128RegClassID, // T32_XYZW
3672 R600::R600_Reg128RegClassID, // T33_XYZW
3673 R600::R600_Reg128RegClassID, // T34_XYZW
3674 R600::R600_Reg128RegClassID, // T35_XYZW
3675 R600::R600_Reg128RegClassID, // T36_XYZW
3676 R600::R600_Reg128RegClassID, // T37_XYZW
3677 R600::R600_Reg128RegClassID, // T38_XYZW
3678 R600::R600_Reg128RegClassID, // T39_XYZW
3679 R600::R600_Reg128RegClassID, // T40_XYZW
3680 R600::R600_Reg128RegClassID, // T41_XYZW
3681 R600::R600_Reg128RegClassID, // T42_XYZW
3682 R600::R600_Reg128RegClassID, // T43_XYZW
3683 R600::R600_Reg128RegClassID, // T44_XYZW
3684 R600::R600_Reg128RegClassID, // T45_XYZW
3685 R600::R600_Reg128RegClassID, // T46_XYZW
3686 R600::R600_Reg128RegClassID, // T47_XYZW
3687 R600::R600_Reg128RegClassID, // T48_XYZW
3688 R600::R600_Reg128RegClassID, // T49_XYZW
3689 R600::R600_Reg128RegClassID, // T50_XYZW
3690 R600::R600_Reg128RegClassID, // T51_XYZW
3691 R600::R600_Reg128RegClassID, // T52_XYZW
3692 R600::R600_Reg128RegClassID, // T53_XYZW
3693 R600::R600_Reg128RegClassID, // T54_XYZW
3694 R600::R600_Reg128RegClassID, // T55_XYZW
3695 R600::R600_Reg128RegClassID, // T56_XYZW
3696 R600::R600_Reg128RegClassID, // T57_XYZW
3697 R600::R600_Reg128RegClassID, // T58_XYZW
3698 R600::R600_Reg128RegClassID, // T59_XYZW
3699 R600::R600_Reg128RegClassID, // T60_XYZW
3700 R600::R600_Reg128RegClassID, // T61_XYZW
3701 R600::R600_Reg128RegClassID, // T62_XYZW
3702 R600::R600_Reg128RegClassID, // T63_XYZW
3703 R600::R600_Reg128RegClassID, // T64_XYZW
3704 R600::R600_Reg128RegClassID, // T65_XYZW
3705 R600::R600_Reg128RegClassID, // T66_XYZW
3706 R600::R600_Reg128RegClassID, // T67_XYZW
3707 R600::R600_Reg128RegClassID, // T68_XYZW
3708 R600::R600_Reg128RegClassID, // T69_XYZW
3709 R600::R600_Reg128RegClassID, // T70_XYZW
3710 R600::R600_Reg128RegClassID, // T71_XYZW
3711 R600::R600_Reg128RegClassID, // T72_XYZW
3712 R600::R600_Reg128RegClassID, // T73_XYZW
3713 R600::R600_Reg128RegClassID, // T74_XYZW
3714 R600::R600_Reg128RegClassID, // T75_XYZW
3715 R600::R600_Reg128RegClassID, // T76_XYZW
3716 R600::R600_Reg128RegClassID, // T77_XYZW
3717 R600::R600_Reg128RegClassID, // T78_XYZW
3718 R600::R600_Reg128RegClassID, // T79_XYZW
3719 R600::R600_Reg128RegClassID, // T80_XYZW
3720 R600::R600_Reg128RegClassID, // T81_XYZW
3721 R600::R600_Reg128RegClassID, // T82_XYZW
3722 R600::R600_Reg128RegClassID, // T83_XYZW
3723 R600::R600_Reg128RegClassID, // T84_XYZW
3724 R600::R600_Reg128RegClassID, // T85_XYZW
3725 R600::R600_Reg128RegClassID, // T86_XYZW
3726 R600::R600_Reg128RegClassID, // T87_XYZW
3727 R600::R600_Reg128RegClassID, // T88_XYZW
3728 R600::R600_Reg128RegClassID, // T89_XYZW
3729 R600::R600_Reg128RegClassID, // T90_XYZW
3730 R600::R600_Reg128RegClassID, // T91_XYZW
3731 R600::R600_Reg128RegClassID, // T92_XYZW
3732 R600::R600_Reg128RegClassID, // T93_XYZW
3733 R600::R600_Reg128RegClassID, // T94_XYZW
3734 R600::R600_Reg128RegClassID, // T95_XYZW
3735 R600::R600_Reg128RegClassID, // T96_XYZW
3736 R600::R600_Reg128RegClassID, // T97_XYZW
3737 R600::R600_Reg128RegClassID, // T98_XYZW
3738 R600::R600_Reg128RegClassID, // T99_XYZW
3739 R600::R600_Reg128RegClassID, // T100_XYZW
3740 R600::R600_Reg128RegClassID, // T101_XYZW
3741 R600::R600_Reg128RegClassID, // T102_XYZW
3742 R600::R600_Reg128RegClassID, // T103_XYZW
3743 R600::R600_Reg128RegClassID, // T104_XYZW
3744 R600::R600_Reg128RegClassID, // T105_XYZW
3745 R600::R600_Reg128RegClassID, // T106_XYZW
3746 R600::R600_Reg128RegClassID, // T107_XYZW
3747 R600::R600_Reg128RegClassID, // T108_XYZW
3748 R600::R600_Reg128RegClassID, // T109_XYZW
3749 R600::R600_Reg128RegClassID, // T110_XYZW
3750 R600::R600_Reg128RegClassID, // T111_XYZW
3751 R600::R600_Reg128RegClassID, // T112_XYZW
3752 R600::R600_Reg128RegClassID, // T113_XYZW
3753 R600::R600_Reg128RegClassID, // T114_XYZW
3754 R600::R600_Reg128RegClassID, // T115_XYZW
3755 R600::R600_Reg128RegClassID, // T116_XYZW
3756 R600::R600_Reg128RegClassID, // T117_XYZW
3757 R600::R600_Reg128RegClassID, // T118_XYZW
3758 R600::R600_Reg128RegClassID, // T119_XYZW
3759 R600::R600_Reg128RegClassID, // T120_XYZW
3760 R600::R600_Reg128RegClassID, // T121_XYZW
3761 R600::R600_Reg128RegClassID, // T122_XYZW
3762 R600::R600_Reg128RegClassID, // T123_XYZW
3763 R600::R600_Reg128RegClassID, // T124_XYZW
3764 R600::R600_Reg128RegClassID, // T125_XYZW
3765 R600::R600_Reg128RegClassID, // T126_XYZW
3766 R600::R600_Reg128RegClassID, // T127_XYZW
3767 R600::R600_TReg32_YRegClassID, // T0_Y
3768 R600::R600_TReg32_YRegClassID, // T1_Y
3769 R600::R600_TReg32_YRegClassID, // T2_Y
3770 R600::R600_TReg32_YRegClassID, // T3_Y
3771 R600::R600_TReg32_YRegClassID, // T4_Y
3772 R600::R600_TReg32_YRegClassID, // T5_Y
3773 R600::R600_TReg32_YRegClassID, // T6_Y
3774 R600::R600_TReg32_YRegClassID, // T7_Y
3775 R600::R600_TReg32_YRegClassID, // T8_Y
3776 R600::R600_TReg32_YRegClassID, // T9_Y
3777 R600::R600_TReg32_YRegClassID, // T10_Y
3778 R600::R600_TReg32_YRegClassID, // T11_Y
3779 R600::R600_TReg32_YRegClassID, // T12_Y
3780 R600::R600_TReg32_YRegClassID, // T13_Y
3781 R600::R600_TReg32_YRegClassID, // T14_Y
3782 R600::R600_TReg32_YRegClassID, // T15_Y
3783 R600::R600_TReg32_YRegClassID, // T16_Y
3784 R600::R600_TReg32_YRegClassID, // T17_Y
3785 R600::R600_TReg32_YRegClassID, // T18_Y
3786 R600::R600_TReg32_YRegClassID, // T19_Y
3787 R600::R600_TReg32_YRegClassID, // T20_Y
3788 R600::R600_TReg32_YRegClassID, // T21_Y
3789 R600::R600_TReg32_YRegClassID, // T22_Y
3790 R600::R600_TReg32_YRegClassID, // T23_Y
3791 R600::R600_TReg32_YRegClassID, // T24_Y
3792 R600::R600_TReg32_YRegClassID, // T25_Y
3793 R600::R600_TReg32_YRegClassID, // T26_Y
3794 R600::R600_TReg32_YRegClassID, // T27_Y
3795 R600::R600_TReg32_YRegClassID, // T28_Y
3796 R600::R600_TReg32_YRegClassID, // T29_Y
3797 R600::R600_TReg32_YRegClassID, // T30_Y
3798 R600::R600_TReg32_YRegClassID, // T31_Y
3799 R600::R600_TReg32_YRegClassID, // T32_Y
3800 R600::R600_TReg32_YRegClassID, // T33_Y
3801 R600::R600_TReg32_YRegClassID, // T34_Y
3802 R600::R600_TReg32_YRegClassID, // T35_Y
3803 R600::R600_TReg32_YRegClassID, // T36_Y
3804 R600::R600_TReg32_YRegClassID, // T37_Y
3805 R600::R600_TReg32_YRegClassID, // T38_Y
3806 R600::R600_TReg32_YRegClassID, // T39_Y
3807 R600::R600_TReg32_YRegClassID, // T40_Y
3808 R600::R600_TReg32_YRegClassID, // T41_Y
3809 R600::R600_TReg32_YRegClassID, // T42_Y
3810 R600::R600_TReg32_YRegClassID, // T43_Y
3811 R600::R600_TReg32_YRegClassID, // T44_Y
3812 R600::R600_TReg32_YRegClassID, // T45_Y
3813 R600::R600_TReg32_YRegClassID, // T46_Y
3814 R600::R600_TReg32_YRegClassID, // T47_Y
3815 R600::R600_TReg32_YRegClassID, // T48_Y
3816 R600::R600_TReg32_YRegClassID, // T49_Y
3817 R600::R600_TReg32_YRegClassID, // T50_Y
3818 R600::R600_TReg32_YRegClassID, // T51_Y
3819 R600::R600_TReg32_YRegClassID, // T52_Y
3820 R600::R600_TReg32_YRegClassID, // T53_Y
3821 R600::R600_TReg32_YRegClassID, // T54_Y
3822 R600::R600_TReg32_YRegClassID, // T55_Y
3823 R600::R600_TReg32_YRegClassID, // T56_Y
3824 R600::R600_TReg32_YRegClassID, // T57_Y
3825 R600::R600_TReg32_YRegClassID, // T58_Y
3826 R600::R600_TReg32_YRegClassID, // T59_Y
3827 R600::R600_TReg32_YRegClassID, // T60_Y
3828 R600::R600_TReg32_YRegClassID, // T61_Y
3829 R600::R600_TReg32_YRegClassID, // T62_Y
3830 R600::R600_TReg32_YRegClassID, // T63_Y
3831 R600::R600_TReg32_YRegClassID, // T64_Y
3832 R600::R600_TReg32_YRegClassID, // T65_Y
3833 R600::R600_TReg32_YRegClassID, // T66_Y
3834 R600::R600_TReg32_YRegClassID, // T67_Y
3835 R600::R600_TReg32_YRegClassID, // T68_Y
3836 R600::R600_TReg32_YRegClassID, // T69_Y
3837 R600::R600_TReg32_YRegClassID, // T70_Y
3838 R600::R600_TReg32_YRegClassID, // T71_Y
3839 R600::R600_TReg32_YRegClassID, // T72_Y
3840 R600::R600_TReg32_YRegClassID, // T73_Y
3841 R600::R600_TReg32_YRegClassID, // T74_Y
3842 R600::R600_TReg32_YRegClassID, // T75_Y
3843 R600::R600_TReg32_YRegClassID, // T76_Y
3844 R600::R600_TReg32_YRegClassID, // T77_Y
3845 R600::R600_TReg32_YRegClassID, // T78_Y
3846 R600::R600_TReg32_YRegClassID, // T79_Y
3847 R600::R600_TReg32_YRegClassID, // T80_Y
3848 R600::R600_TReg32_YRegClassID, // T81_Y
3849 R600::R600_TReg32_YRegClassID, // T82_Y
3850 R600::R600_TReg32_YRegClassID, // T83_Y
3851 R600::R600_TReg32_YRegClassID, // T84_Y
3852 R600::R600_TReg32_YRegClassID, // T85_Y
3853 R600::R600_TReg32_YRegClassID, // T86_Y
3854 R600::R600_TReg32_YRegClassID, // T87_Y
3855 R600::R600_TReg32_YRegClassID, // T88_Y
3856 R600::R600_TReg32_YRegClassID, // T89_Y
3857 R600::R600_TReg32_YRegClassID, // T90_Y
3858 R600::R600_TReg32_YRegClassID, // T91_Y
3859 R600::R600_TReg32_YRegClassID, // T92_Y
3860 R600::R600_TReg32_YRegClassID, // T93_Y
3861 R600::R600_TReg32_YRegClassID, // T94_Y
3862 R600::R600_TReg32_YRegClassID, // T95_Y
3863 R600::R600_TReg32_YRegClassID, // T96_Y
3864 R600::R600_TReg32_YRegClassID, // T97_Y
3865 R600::R600_TReg32_YRegClassID, // T98_Y
3866 R600::R600_TReg32_YRegClassID, // T99_Y
3867 R600::R600_TReg32_YRegClassID, // T100_Y
3868 R600::R600_TReg32_YRegClassID, // T101_Y
3869 R600::R600_TReg32_YRegClassID, // T102_Y
3870 R600::R600_TReg32_YRegClassID, // T103_Y
3871 R600::R600_TReg32_YRegClassID, // T104_Y
3872 R600::R600_TReg32_YRegClassID, // T105_Y
3873 R600::R600_TReg32_YRegClassID, // T106_Y
3874 R600::R600_TReg32_YRegClassID, // T107_Y
3875 R600::R600_TReg32_YRegClassID, // T108_Y
3876 R600::R600_TReg32_YRegClassID, // T109_Y
3877 R600::R600_TReg32_YRegClassID, // T110_Y
3878 R600::R600_TReg32_YRegClassID, // T111_Y
3879 R600::R600_TReg32_YRegClassID, // T112_Y
3880 R600::R600_TReg32_YRegClassID, // T113_Y
3881 R600::R600_TReg32_YRegClassID, // T114_Y
3882 R600::R600_TReg32_YRegClassID, // T115_Y
3883 R600::R600_TReg32_YRegClassID, // T116_Y
3884 R600::R600_TReg32_YRegClassID, // T117_Y
3885 R600::R600_TReg32_YRegClassID, // T118_Y
3886 R600::R600_TReg32_YRegClassID, // T119_Y
3887 R600::R600_TReg32_YRegClassID, // T120_Y
3888 R600::R600_TReg32_YRegClassID, // T121_Y
3889 R600::R600_TReg32_YRegClassID, // T122_Y
3890 R600::R600_TReg32_YRegClassID, // T123_Y
3891 R600::R600_TReg32_YRegClassID, // T124_Y
3892 R600::R600_TReg32_YRegClassID, // T125_Y
3893 R600::R600_TReg32_YRegClassID, // T126_Y
3894 R600::R600_TReg32_YRegClassID, // T127_Y
3895 R600::R600_TReg32_ZRegClassID, // T0_Z
3896 R600::R600_TReg32_ZRegClassID, // T1_Z
3897 R600::R600_TReg32_ZRegClassID, // T2_Z
3898 R600::R600_TReg32_ZRegClassID, // T3_Z
3899 R600::R600_TReg32_ZRegClassID, // T4_Z
3900 R600::R600_TReg32_ZRegClassID, // T5_Z
3901 R600::R600_TReg32_ZRegClassID, // T6_Z
3902 R600::R600_TReg32_ZRegClassID, // T7_Z
3903 R600::R600_TReg32_ZRegClassID, // T8_Z
3904 R600::R600_TReg32_ZRegClassID, // T9_Z
3905 R600::R600_TReg32_ZRegClassID, // T10_Z
3906 R600::R600_TReg32_ZRegClassID, // T11_Z
3907 R600::R600_TReg32_ZRegClassID, // T12_Z
3908 R600::R600_TReg32_ZRegClassID, // T13_Z
3909 R600::R600_TReg32_ZRegClassID, // T14_Z
3910 R600::R600_TReg32_ZRegClassID, // T15_Z
3911 R600::R600_TReg32_ZRegClassID, // T16_Z
3912 R600::R600_TReg32_ZRegClassID, // T17_Z
3913 R600::R600_TReg32_ZRegClassID, // T18_Z
3914 R600::R600_TReg32_ZRegClassID, // T19_Z
3915 R600::R600_TReg32_ZRegClassID, // T20_Z
3916 R600::R600_TReg32_ZRegClassID, // T21_Z
3917 R600::R600_TReg32_ZRegClassID, // T22_Z
3918 R600::R600_TReg32_ZRegClassID, // T23_Z
3919 R600::R600_TReg32_ZRegClassID, // T24_Z
3920 R600::R600_TReg32_ZRegClassID, // T25_Z
3921 R600::R600_TReg32_ZRegClassID, // T26_Z
3922 R600::R600_TReg32_ZRegClassID, // T27_Z
3923 R600::R600_TReg32_ZRegClassID, // T28_Z
3924 R600::R600_TReg32_ZRegClassID, // T29_Z
3925 R600::R600_TReg32_ZRegClassID, // T30_Z
3926 R600::R600_TReg32_ZRegClassID, // T31_Z
3927 R600::R600_TReg32_ZRegClassID, // T32_Z
3928 R600::R600_TReg32_ZRegClassID, // T33_Z
3929 R600::R600_TReg32_ZRegClassID, // T34_Z
3930 R600::R600_TReg32_ZRegClassID, // T35_Z
3931 R600::R600_TReg32_ZRegClassID, // T36_Z
3932 R600::R600_TReg32_ZRegClassID, // T37_Z
3933 R600::R600_TReg32_ZRegClassID, // T38_Z
3934 R600::R600_TReg32_ZRegClassID, // T39_Z
3935 R600::R600_TReg32_ZRegClassID, // T40_Z
3936 R600::R600_TReg32_ZRegClassID, // T41_Z
3937 R600::R600_TReg32_ZRegClassID, // T42_Z
3938 R600::R600_TReg32_ZRegClassID, // T43_Z
3939 R600::R600_TReg32_ZRegClassID, // T44_Z
3940 R600::R600_TReg32_ZRegClassID, // T45_Z
3941 R600::R600_TReg32_ZRegClassID, // T46_Z
3942 R600::R600_TReg32_ZRegClassID, // T47_Z
3943 R600::R600_TReg32_ZRegClassID, // T48_Z
3944 R600::R600_TReg32_ZRegClassID, // T49_Z
3945 R600::R600_TReg32_ZRegClassID, // T50_Z
3946 R600::R600_TReg32_ZRegClassID, // T51_Z
3947 R600::R600_TReg32_ZRegClassID, // T52_Z
3948 R600::R600_TReg32_ZRegClassID, // T53_Z
3949 R600::R600_TReg32_ZRegClassID, // T54_Z
3950 R600::R600_TReg32_ZRegClassID, // T55_Z
3951 R600::R600_TReg32_ZRegClassID, // T56_Z
3952 R600::R600_TReg32_ZRegClassID, // T57_Z
3953 R600::R600_TReg32_ZRegClassID, // T58_Z
3954 R600::R600_TReg32_ZRegClassID, // T59_Z
3955 R600::R600_TReg32_ZRegClassID, // T60_Z
3956 R600::R600_TReg32_ZRegClassID, // T61_Z
3957 R600::R600_TReg32_ZRegClassID, // T62_Z
3958 R600::R600_TReg32_ZRegClassID, // T63_Z
3959 R600::R600_TReg32_ZRegClassID, // T64_Z
3960 R600::R600_TReg32_ZRegClassID, // T65_Z
3961 R600::R600_TReg32_ZRegClassID, // T66_Z
3962 R600::R600_TReg32_ZRegClassID, // T67_Z
3963 R600::R600_TReg32_ZRegClassID, // T68_Z
3964 R600::R600_TReg32_ZRegClassID, // T69_Z
3965 R600::R600_TReg32_ZRegClassID, // T70_Z
3966 R600::R600_TReg32_ZRegClassID, // T71_Z
3967 R600::R600_TReg32_ZRegClassID, // T72_Z
3968 R600::R600_TReg32_ZRegClassID, // T73_Z
3969 R600::R600_TReg32_ZRegClassID, // T74_Z
3970 R600::R600_TReg32_ZRegClassID, // T75_Z
3971 R600::R600_TReg32_ZRegClassID, // T76_Z
3972 R600::R600_TReg32_ZRegClassID, // T77_Z
3973 R600::R600_TReg32_ZRegClassID, // T78_Z
3974 R600::R600_TReg32_ZRegClassID, // T79_Z
3975 R600::R600_TReg32_ZRegClassID, // T80_Z
3976 R600::R600_TReg32_ZRegClassID, // T81_Z
3977 R600::R600_TReg32_ZRegClassID, // T82_Z
3978 R600::R600_TReg32_ZRegClassID, // T83_Z
3979 R600::R600_TReg32_ZRegClassID, // T84_Z
3980 R600::R600_TReg32_ZRegClassID, // T85_Z
3981 R600::R600_TReg32_ZRegClassID, // T86_Z
3982 R600::R600_TReg32_ZRegClassID, // T87_Z
3983 R600::R600_TReg32_ZRegClassID, // T88_Z
3984 R600::R600_TReg32_ZRegClassID, // T89_Z
3985 R600::R600_TReg32_ZRegClassID, // T90_Z
3986 R600::R600_TReg32_ZRegClassID, // T91_Z
3987 R600::R600_TReg32_ZRegClassID, // T92_Z
3988 R600::R600_TReg32_ZRegClassID, // T93_Z
3989 R600::R600_TReg32_ZRegClassID, // T94_Z
3990 R600::R600_TReg32_ZRegClassID, // T95_Z
3991 R600::R600_TReg32_ZRegClassID, // T96_Z
3992 R600::R600_TReg32_ZRegClassID, // T97_Z
3993 R600::R600_TReg32_ZRegClassID, // T98_Z
3994 R600::R600_TReg32_ZRegClassID, // T99_Z
3995 R600::R600_TReg32_ZRegClassID, // T100_Z
3996 R600::R600_TReg32_ZRegClassID, // T101_Z
3997 R600::R600_TReg32_ZRegClassID, // T102_Z
3998 R600::R600_TReg32_ZRegClassID, // T103_Z
3999 R600::R600_TReg32_ZRegClassID, // T104_Z
4000 R600::R600_TReg32_ZRegClassID, // T105_Z
4001 R600::R600_TReg32_ZRegClassID, // T106_Z
4002 R600::R600_TReg32_ZRegClassID, // T107_Z
4003 R600::R600_TReg32_ZRegClassID, // T108_Z
4004 R600::R600_TReg32_ZRegClassID, // T109_Z
4005 R600::R600_TReg32_ZRegClassID, // T110_Z
4006 R600::R600_TReg32_ZRegClassID, // T111_Z
4007 R600::R600_TReg32_ZRegClassID, // T112_Z
4008 R600::R600_TReg32_ZRegClassID, // T113_Z
4009 R600::R600_TReg32_ZRegClassID, // T114_Z
4010 R600::R600_TReg32_ZRegClassID, // T115_Z
4011 R600::R600_TReg32_ZRegClassID, // T116_Z
4012 R600::R600_TReg32_ZRegClassID, // T117_Z
4013 R600::R600_TReg32_ZRegClassID, // T118_Z
4014 R600::R600_TReg32_ZRegClassID, // T119_Z
4015 R600::R600_TReg32_ZRegClassID, // T120_Z
4016 R600::R600_TReg32_ZRegClassID, // T121_Z
4017 R600::R600_TReg32_ZRegClassID, // T122_Z
4018 R600::R600_TReg32_ZRegClassID, // T123_Z
4019 R600::R600_TReg32_ZRegClassID, // T124_Z
4020 R600::R600_TReg32_ZRegClassID, // T125_Z
4021 R600::R600_TReg32_ZRegClassID, // T126_Z
4022 R600::R600_TReg32_ZRegClassID, // T127_Z
4023 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_WRegClassID, // V01_W
4024 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_WRegClassID, // V23_W
4025 R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_WRegClassID, // V0123_W
4026 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_XRegClassID, // V01_X
4027 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_XRegClassID, // V23_X
4028 R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_XRegClassID, // V0123_X
4029 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_YRegClassID, // V01_Y
4030 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_YRegClassID, // V23_Y
4031 R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_YRegClassID, // V0123_Y
4032 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZRegClassID, // V01_Z
4033 R600::R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZRegClassID, // V23_Z
4034 R600::R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZRegClassID, // V0123_Z
4035 R600::R600_KC0_WRegClassID, // KC0_128_W
4036 R600::R600_KC0_WRegClassID, // KC0_129_W
4037 R600::R600_KC0_WRegClassID, // KC0_130_W
4038 R600::R600_KC0_WRegClassID, // KC0_131_W
4039 R600::R600_KC0_WRegClassID, // KC0_132_W
4040 R600::R600_KC0_WRegClassID, // KC0_133_W
4041 R600::R600_KC0_WRegClassID, // KC0_134_W
4042 R600::R600_KC0_WRegClassID, // KC0_135_W
4043 R600::R600_KC0_WRegClassID, // KC0_136_W
4044 R600::R600_KC0_WRegClassID, // KC0_137_W
4045 R600::R600_KC0_WRegClassID, // KC0_138_W
4046 R600::R600_KC0_WRegClassID, // KC0_139_W
4047 R600::R600_KC0_WRegClassID, // KC0_140_W
4048 R600::R600_KC0_WRegClassID, // KC0_141_W
4049 R600::R600_KC0_WRegClassID, // KC0_142_W
4050 R600::R600_KC0_WRegClassID, // KC0_143_W
4051 R600::R600_KC0_WRegClassID, // KC0_144_W
4052 R600::R600_KC0_WRegClassID, // KC0_145_W
4053 R600::R600_KC0_WRegClassID, // KC0_146_W
4054 R600::R600_KC0_WRegClassID, // KC0_147_W
4055 R600::R600_KC0_WRegClassID, // KC0_148_W
4056 R600::R600_KC0_WRegClassID, // KC0_149_W
4057 R600::R600_KC0_WRegClassID, // KC0_150_W
4058 R600::R600_KC0_WRegClassID, // KC0_151_W
4059 R600::R600_KC0_WRegClassID, // KC0_152_W
4060 R600::R600_KC0_WRegClassID, // KC0_153_W
4061 R600::R600_KC0_WRegClassID, // KC0_154_W
4062 R600::R600_KC0_WRegClassID, // KC0_155_W
4063 R600::R600_KC0_WRegClassID, // KC0_156_W
4064 R600::R600_KC0_WRegClassID, // KC0_157_W
4065 R600::R600_KC0_WRegClassID, // KC0_158_W
4066 R600::R600_KC0_WRegClassID, // KC0_159_W
4067 R600::R600_KC1_WRegClassID, // KC1_160_W
4068 R600::R600_KC1_WRegClassID, // KC1_161_W
4069 R600::R600_KC1_WRegClassID, // KC1_162_W
4070 R600::R600_KC1_WRegClassID, // KC1_163_W
4071 R600::R600_KC1_WRegClassID, // KC1_164_W
4072 R600::R600_KC1_WRegClassID, // KC1_165_W
4073 R600::R600_KC1_WRegClassID, // KC1_166_W
4074 R600::R600_KC1_WRegClassID, // KC1_167_W
4075 R600::R600_KC1_WRegClassID, // KC1_168_W
4076 R600::R600_KC1_WRegClassID, // KC1_169_W
4077 R600::R600_KC1_WRegClassID, // KC1_170_W
4078 R600::R600_KC1_WRegClassID, // KC1_171_W
4079 R600::R600_KC1_WRegClassID, // KC1_172_W
4080 R600::R600_KC1_WRegClassID, // KC1_173_W
4081 R600::R600_KC1_WRegClassID, // KC1_174_W
4082 R600::R600_KC1_WRegClassID, // KC1_175_W
4083 R600::R600_KC1_WRegClassID, // KC1_176_W
4084 R600::R600_KC1_WRegClassID, // KC1_177_W
4085 R600::R600_KC1_WRegClassID, // KC1_178_W
4086 R600::R600_KC1_WRegClassID, // KC1_179_W
4087 R600::R600_KC1_WRegClassID, // KC1_180_W
4088 R600::R600_KC1_WRegClassID, // KC1_181_W
4089 R600::R600_KC1_WRegClassID, // KC1_182_W
4090 R600::R600_KC1_WRegClassID, // KC1_183_W
4091 R600::R600_KC1_WRegClassID, // KC1_184_W
4092 R600::R600_KC1_WRegClassID, // KC1_185_W
4093 R600::R600_KC1_WRegClassID, // KC1_186_W
4094 R600::R600_KC1_WRegClassID, // KC1_187_W
4095 R600::R600_KC1_WRegClassID, // KC1_188_W
4096 R600::R600_KC1_WRegClassID, // KC1_189_W
4097 R600::R600_KC1_WRegClassID, // KC1_190_W
4098 R600::R600_KC1_WRegClassID, // KC1_191_W
4099 R600::R600_KC0_XRegClassID, // KC0_128_X
4100 R600::R600_KC0_XRegClassID, // KC0_129_X
4101 R600::R600_KC0_XRegClassID, // KC0_130_X
4102 R600::R600_KC0_XRegClassID, // KC0_131_X
4103 R600::R600_KC0_XRegClassID, // KC0_132_X
4104 R600::R600_KC0_XRegClassID, // KC0_133_X
4105 R600::R600_KC0_XRegClassID, // KC0_134_X
4106 R600::R600_KC0_XRegClassID, // KC0_135_X
4107 R600::R600_KC0_XRegClassID, // KC0_136_X
4108 R600::R600_KC0_XRegClassID, // KC0_137_X
4109 R600::R600_KC0_XRegClassID, // KC0_138_X
4110 R600::R600_KC0_XRegClassID, // KC0_139_X
4111 R600::R600_KC0_XRegClassID, // KC0_140_X
4112 R600::R600_KC0_XRegClassID, // KC0_141_X
4113 R600::R600_KC0_XRegClassID, // KC0_142_X
4114 R600::R600_KC0_XRegClassID, // KC0_143_X
4115 R600::R600_KC0_XRegClassID, // KC0_144_X
4116 R600::R600_KC0_XRegClassID, // KC0_145_X
4117 R600::R600_KC0_XRegClassID, // KC0_146_X
4118 R600::R600_KC0_XRegClassID, // KC0_147_X
4119 R600::R600_KC0_XRegClassID, // KC0_148_X
4120 R600::R600_KC0_XRegClassID, // KC0_149_X
4121 R600::R600_KC0_XRegClassID, // KC0_150_X
4122 R600::R600_KC0_XRegClassID, // KC0_151_X
4123 R600::R600_KC0_XRegClassID, // KC0_152_X
4124 R600::R600_KC0_XRegClassID, // KC0_153_X
4125 R600::R600_KC0_XRegClassID, // KC0_154_X
4126 R600::R600_KC0_XRegClassID, // KC0_155_X
4127 R600::R600_KC0_XRegClassID, // KC0_156_X
4128 R600::R600_KC0_XRegClassID, // KC0_157_X
4129 R600::R600_KC0_XRegClassID, // KC0_158_X
4130 R600::R600_KC0_XRegClassID, // KC0_159_X
4131 R600::R600_KC1_XRegClassID, // KC1_160_X
4132 R600::R600_KC1_XRegClassID, // KC1_161_X
4133 R600::R600_KC1_XRegClassID, // KC1_162_X
4134 R600::R600_KC1_XRegClassID, // KC1_163_X
4135 R600::R600_KC1_XRegClassID, // KC1_164_X
4136 R600::R600_KC1_XRegClassID, // KC1_165_X
4137 R600::R600_KC1_XRegClassID, // KC1_166_X
4138 R600::R600_KC1_XRegClassID, // KC1_167_X
4139 R600::R600_KC1_XRegClassID, // KC1_168_X
4140 R600::R600_KC1_XRegClassID, // KC1_169_X
4141 R600::R600_KC1_XRegClassID, // KC1_170_X
4142 R600::R600_KC1_XRegClassID, // KC1_171_X
4143 R600::R600_KC1_XRegClassID, // KC1_172_X
4144 R600::R600_KC1_XRegClassID, // KC1_173_X
4145 R600::R600_KC1_XRegClassID, // KC1_174_X
4146 R600::R600_KC1_XRegClassID, // KC1_175_X
4147 R600::R600_KC1_XRegClassID, // KC1_176_X
4148 R600::R600_KC1_XRegClassID, // KC1_177_X
4149 R600::R600_KC1_XRegClassID, // KC1_178_X
4150 R600::R600_KC1_XRegClassID, // KC1_179_X
4151 R600::R600_KC1_XRegClassID, // KC1_180_X
4152 R600::R600_KC1_XRegClassID, // KC1_181_X
4153 R600::R600_KC1_XRegClassID, // KC1_182_X
4154 R600::R600_KC1_XRegClassID, // KC1_183_X
4155 R600::R600_KC1_XRegClassID, // KC1_184_X
4156 R600::R600_KC1_XRegClassID, // KC1_185_X
4157 R600::R600_KC1_XRegClassID, // KC1_186_X
4158 R600::R600_KC1_XRegClassID, // KC1_187_X
4159 R600::R600_KC1_XRegClassID, // KC1_188_X
4160 R600::R600_KC1_XRegClassID, // KC1_189_X
4161 R600::R600_KC1_XRegClassID, // KC1_190_X
4162 R600::R600_KC1_XRegClassID, // KC1_191_X
4163 InvalidRegClassID, // KC0_128_XYZW
4164 InvalidRegClassID, // KC0_129_XYZW
4165 InvalidRegClassID, // KC0_130_XYZW
4166 InvalidRegClassID, // KC0_131_XYZW
4167 InvalidRegClassID, // KC0_132_XYZW
4168 InvalidRegClassID, // KC0_133_XYZW
4169 InvalidRegClassID, // KC0_134_XYZW
4170 InvalidRegClassID, // KC0_135_XYZW
4171 InvalidRegClassID, // KC0_136_XYZW
4172 InvalidRegClassID, // KC0_137_XYZW
4173 InvalidRegClassID, // KC0_138_XYZW
4174 InvalidRegClassID, // KC0_139_XYZW
4175 InvalidRegClassID, // KC0_140_XYZW
4176 InvalidRegClassID, // KC0_141_XYZW
4177 InvalidRegClassID, // KC0_142_XYZW
4178 InvalidRegClassID, // KC0_143_XYZW
4179 InvalidRegClassID, // KC0_144_XYZW
4180 InvalidRegClassID, // KC0_145_XYZW
4181 InvalidRegClassID, // KC0_146_XYZW
4182 InvalidRegClassID, // KC0_147_XYZW
4183 InvalidRegClassID, // KC0_148_XYZW
4184 InvalidRegClassID, // KC0_149_XYZW
4185 InvalidRegClassID, // KC0_150_XYZW
4186 InvalidRegClassID, // KC0_151_XYZW
4187 InvalidRegClassID, // KC0_152_XYZW
4188 InvalidRegClassID, // KC0_153_XYZW
4189 InvalidRegClassID, // KC0_154_XYZW
4190 InvalidRegClassID, // KC0_155_XYZW
4191 InvalidRegClassID, // KC0_156_XYZW
4192 InvalidRegClassID, // KC0_157_XYZW
4193 InvalidRegClassID, // KC0_158_XYZW
4194 InvalidRegClassID, // KC0_159_XYZW
4195 InvalidRegClassID, // KC1_160_XYZW
4196 InvalidRegClassID, // KC1_161_XYZW
4197 InvalidRegClassID, // KC1_162_XYZW
4198 InvalidRegClassID, // KC1_163_XYZW
4199 InvalidRegClassID, // KC1_164_XYZW
4200 InvalidRegClassID, // KC1_165_XYZW
4201 InvalidRegClassID, // KC1_166_XYZW
4202 InvalidRegClassID, // KC1_167_XYZW
4203 InvalidRegClassID, // KC1_168_XYZW
4204 InvalidRegClassID, // KC1_169_XYZW
4205 InvalidRegClassID, // KC1_170_XYZW
4206 InvalidRegClassID, // KC1_171_XYZW
4207 InvalidRegClassID, // KC1_172_XYZW
4208 InvalidRegClassID, // KC1_173_XYZW
4209 InvalidRegClassID, // KC1_174_XYZW
4210 InvalidRegClassID, // KC1_175_XYZW
4211 InvalidRegClassID, // KC1_176_XYZW
4212 InvalidRegClassID, // KC1_177_XYZW
4213 InvalidRegClassID, // KC1_178_XYZW
4214 InvalidRegClassID, // KC1_179_XYZW
4215 InvalidRegClassID, // KC1_180_XYZW
4216 InvalidRegClassID, // KC1_181_XYZW
4217 InvalidRegClassID, // KC1_182_XYZW
4218 InvalidRegClassID, // KC1_183_XYZW
4219 InvalidRegClassID, // KC1_184_XYZW
4220 InvalidRegClassID, // KC1_185_XYZW
4221 InvalidRegClassID, // KC1_186_XYZW
4222 InvalidRegClassID, // KC1_187_XYZW
4223 InvalidRegClassID, // KC1_188_XYZW
4224 InvalidRegClassID, // KC1_189_XYZW
4225 InvalidRegClassID, // KC1_190_XYZW
4226 InvalidRegClassID, // KC1_191_XYZW
4227 R600::R600_KC0_YRegClassID, // KC0_128_Y
4228 R600::R600_KC0_YRegClassID, // KC0_129_Y
4229 R600::R600_KC0_YRegClassID, // KC0_130_Y
4230 R600::R600_KC0_YRegClassID, // KC0_131_Y
4231 R600::R600_KC0_YRegClassID, // KC0_132_Y
4232 R600::R600_KC0_YRegClassID, // KC0_133_Y
4233 R600::R600_KC0_YRegClassID, // KC0_134_Y
4234 R600::R600_KC0_YRegClassID, // KC0_135_Y
4235 R600::R600_KC0_YRegClassID, // KC0_136_Y
4236 R600::R600_KC0_YRegClassID, // KC0_137_Y
4237 R600::R600_KC0_YRegClassID, // KC0_138_Y
4238 R600::R600_KC0_YRegClassID, // KC0_139_Y
4239 R600::R600_KC0_YRegClassID, // KC0_140_Y
4240 R600::R600_KC0_YRegClassID, // KC0_141_Y
4241 R600::R600_KC0_YRegClassID, // KC0_142_Y
4242 R600::R600_KC0_YRegClassID, // KC0_143_Y
4243 R600::R600_KC0_YRegClassID, // KC0_144_Y
4244 R600::R600_KC0_YRegClassID, // KC0_145_Y
4245 R600::R600_KC0_YRegClassID, // KC0_146_Y
4246 R600::R600_KC0_YRegClassID, // KC0_147_Y
4247 R600::R600_KC0_YRegClassID, // KC0_148_Y
4248 R600::R600_KC0_YRegClassID, // KC0_149_Y
4249 R600::R600_KC0_YRegClassID, // KC0_150_Y
4250 R600::R600_KC0_YRegClassID, // KC0_151_Y
4251 R600::R600_KC0_YRegClassID, // KC0_152_Y
4252 R600::R600_KC0_YRegClassID, // KC0_153_Y
4253 R600::R600_KC0_YRegClassID, // KC0_154_Y
4254 R600::R600_KC0_YRegClassID, // KC0_155_Y
4255 R600::R600_KC0_YRegClassID, // KC0_156_Y
4256 R600::R600_KC0_YRegClassID, // KC0_157_Y
4257 R600::R600_KC0_YRegClassID, // KC0_158_Y
4258 R600::R600_KC0_YRegClassID, // KC0_159_Y
4259 R600::R600_KC1_YRegClassID, // KC1_160_Y
4260 R600::R600_KC1_YRegClassID, // KC1_161_Y
4261 R600::R600_KC1_YRegClassID, // KC1_162_Y
4262 R600::R600_KC1_YRegClassID, // KC1_163_Y
4263 R600::R600_KC1_YRegClassID, // KC1_164_Y
4264 R600::R600_KC1_YRegClassID, // KC1_165_Y
4265 R600::R600_KC1_YRegClassID, // KC1_166_Y
4266 R600::R600_KC1_YRegClassID, // KC1_167_Y
4267 R600::R600_KC1_YRegClassID, // KC1_168_Y
4268 R600::R600_KC1_YRegClassID, // KC1_169_Y
4269 R600::R600_KC1_YRegClassID, // KC1_170_Y
4270 R600::R600_KC1_YRegClassID, // KC1_171_Y
4271 R600::R600_KC1_YRegClassID, // KC1_172_Y
4272 R600::R600_KC1_YRegClassID, // KC1_173_Y
4273 R600::R600_KC1_YRegClassID, // KC1_174_Y
4274 R600::R600_KC1_YRegClassID, // KC1_175_Y
4275 R600::R600_KC1_YRegClassID, // KC1_176_Y
4276 R600::R600_KC1_YRegClassID, // KC1_177_Y
4277 R600::R600_KC1_YRegClassID, // KC1_178_Y
4278 R600::R600_KC1_YRegClassID, // KC1_179_Y
4279 R600::R600_KC1_YRegClassID, // KC1_180_Y
4280 R600::R600_KC1_YRegClassID, // KC1_181_Y
4281 R600::R600_KC1_YRegClassID, // KC1_182_Y
4282 R600::R600_KC1_YRegClassID, // KC1_183_Y
4283 R600::R600_KC1_YRegClassID, // KC1_184_Y
4284 R600::R600_KC1_YRegClassID, // KC1_185_Y
4285 R600::R600_KC1_YRegClassID, // KC1_186_Y
4286 R600::R600_KC1_YRegClassID, // KC1_187_Y
4287 R600::R600_KC1_YRegClassID, // KC1_188_Y
4288 R600::R600_KC1_YRegClassID, // KC1_189_Y
4289 R600::R600_KC1_YRegClassID, // KC1_190_Y
4290 R600::R600_KC1_YRegClassID, // KC1_191_Y
4291 R600::R600_KC0_ZRegClassID, // KC0_128_Z
4292 R600::R600_KC0_ZRegClassID, // KC0_129_Z
4293 R600::R600_KC0_ZRegClassID, // KC0_130_Z
4294 R600::R600_KC0_ZRegClassID, // KC0_131_Z
4295 R600::R600_KC0_ZRegClassID, // KC0_132_Z
4296 R600::R600_KC0_ZRegClassID, // KC0_133_Z
4297 R600::R600_KC0_ZRegClassID, // KC0_134_Z
4298 R600::R600_KC0_ZRegClassID, // KC0_135_Z
4299 R600::R600_KC0_ZRegClassID, // KC0_136_Z
4300 R600::R600_KC0_ZRegClassID, // KC0_137_Z
4301 R600::R600_KC0_ZRegClassID, // KC0_138_Z
4302 R600::R600_KC0_ZRegClassID, // KC0_139_Z
4303 R600::R600_KC0_ZRegClassID, // KC0_140_Z
4304 R600::R600_KC0_ZRegClassID, // KC0_141_Z
4305 R600::R600_KC0_ZRegClassID, // KC0_142_Z
4306 R600::R600_KC0_ZRegClassID, // KC0_143_Z
4307 R600::R600_KC0_ZRegClassID, // KC0_144_Z
4308 R600::R600_KC0_ZRegClassID, // KC0_145_Z
4309 R600::R600_KC0_ZRegClassID, // KC0_146_Z
4310 R600::R600_KC0_ZRegClassID, // KC0_147_Z
4311 R600::R600_KC0_ZRegClassID, // KC0_148_Z
4312 R600::R600_KC0_ZRegClassID, // KC0_149_Z
4313 R600::R600_KC0_ZRegClassID, // KC0_150_Z
4314 R600::R600_KC0_ZRegClassID, // KC0_151_Z
4315 R600::R600_KC0_ZRegClassID, // KC0_152_Z
4316 R600::R600_KC0_ZRegClassID, // KC0_153_Z
4317 R600::R600_KC0_ZRegClassID, // KC0_154_Z
4318 R600::R600_KC0_ZRegClassID, // KC0_155_Z
4319 R600::R600_KC0_ZRegClassID, // KC0_156_Z
4320 R600::R600_KC0_ZRegClassID, // KC0_157_Z
4321 R600::R600_KC0_ZRegClassID, // KC0_158_Z
4322 R600::R600_KC0_ZRegClassID, // KC0_159_Z
4323 R600::R600_KC1_ZRegClassID, // KC1_160_Z
4324 R600::R600_KC1_ZRegClassID, // KC1_161_Z
4325 R600::R600_KC1_ZRegClassID, // KC1_162_Z
4326 R600::R600_KC1_ZRegClassID, // KC1_163_Z
4327 R600::R600_KC1_ZRegClassID, // KC1_164_Z
4328 R600::R600_KC1_ZRegClassID, // KC1_165_Z
4329 R600::R600_KC1_ZRegClassID, // KC1_166_Z
4330 R600::R600_KC1_ZRegClassID, // KC1_167_Z
4331 R600::R600_KC1_ZRegClassID, // KC1_168_Z
4332 R600::R600_KC1_ZRegClassID, // KC1_169_Z
4333 R600::R600_KC1_ZRegClassID, // KC1_170_Z
4334 R600::R600_KC1_ZRegClassID, // KC1_171_Z
4335 R600::R600_KC1_ZRegClassID, // KC1_172_Z
4336 R600::R600_KC1_ZRegClassID, // KC1_173_Z
4337 R600::R600_KC1_ZRegClassID, // KC1_174_Z
4338 R600::R600_KC1_ZRegClassID, // KC1_175_Z
4339 R600::R600_KC1_ZRegClassID, // KC1_176_Z
4340 R600::R600_KC1_ZRegClassID, // KC1_177_Z
4341 R600::R600_KC1_ZRegClassID, // KC1_178_Z
4342 R600::R600_KC1_ZRegClassID, // KC1_179_Z
4343 R600::R600_KC1_ZRegClassID, // KC1_180_Z
4344 R600::R600_KC1_ZRegClassID, // KC1_181_Z
4345 R600::R600_KC1_ZRegClassID, // KC1_182_Z
4346 R600::R600_KC1_ZRegClassID, // KC1_183_Z
4347 R600::R600_KC1_ZRegClassID, // KC1_184_Z
4348 R600::R600_KC1_ZRegClassID, // KC1_185_Z
4349 R600::R600_KC1_ZRegClassID, // KC1_186_Z
4350 R600::R600_KC1_ZRegClassID, // KC1_187_Z
4351 R600::R600_KC1_ZRegClassID, // KC1_188_Z
4352 R600::R600_KC1_ZRegClassID, // KC1_189_Z
4353 R600::R600_KC1_ZRegClassID, // KC1_190_Z
4354 R600::R600_KC1_ZRegClassID, // KC1_191_Z
4355 };
4356
4357 assert(Reg < ArrayRef(Mapping).size());
4358 unsigned RCID = Mapping[Reg.id()];
4359 if (RCID == InvalidRegClassID)
4360 return nullptr;
4361 return R600RegisterClasses[RCID];
4362}
4363extern const MCRegisterDesc R600RegDesc[];
4364extern const int16_t R600RegDiffLists[];
4365extern const LaneBitmask R600LaneMaskLists[];
4366extern const char R600RegStrings[];
4367extern const char R600RegClassStrings[];
4368extern const MCPhysReg R600RegUnitRoots[][2];
4369extern const uint16_t R600SubRegIdxLists[];
4370extern const uint16_t R600RegEncodingTable[];
4371
4372R600GenRegisterInfo::
4373R600GenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour,
4374 unsigned PC, unsigned HwMode)
4375 : TargetRegisterInfo(&R600RegInfoDesc, R600RegisterClasses,
4376 R600SubRegIndexStrings, R600SubRegIndexNameOffsets,
4377 R600SubRegIdxRangeTable, R600SubRegIndexLaneMaskTable,
4378
4379 LaneBitmask(0xFFFFFFFFFFFFFFF0), R600RegClassInfos, R600VTLists, HwMode) {
4380 InitMCRegisterInfo(D: R600RegDesc, NR: 1675, RA, PC,
4381 C: R600MCRegisterClasses, NC: 37, RURoots: R600RegUnitRoots, NRU: 1342, DL: R600RegDiffLists,
4382 RUMS: R600LaneMaskLists, Strings: R600RegStrings, ClassStrings: R600RegClassStrings, SubIndices: R600SubRegIdxLists, NumIndices: 17,
4383 RET: R600RegEncodingTable, RUI: nullptr);
4384
4385}
4386
4387
4388
4389ArrayRef<const uint32_t *> R600GenRegisterInfo::getRegMasks() const {
4390 return {};
4391}
4392
4393bool R600GenRegisterInfo::
4394isGeneralPurposeRegister(const MachineFunction &MF, MCRegister PhysReg) const {
4395 return
4396 false;
4397}
4398
4399bool R600GenRegisterInfo::
4400isGeneralPurposeRegisterClass(const TargetRegisterClass *RC) const {
4401 return
4402 false;
4403}
4404
4405bool R600GenRegisterInfo::
4406isFixedRegister(const MachineFunction &MF, MCRegister PhysReg) const {
4407 return
4408 false;
4409}
4410
4411bool R600GenRegisterInfo::
4412isArgumentRegister(const MachineFunction &MF, MCRegister PhysReg) const {
4413 return
4414 false;
4415}
4416
4417bool R600GenRegisterInfo::
4418isConstantPhysReg(MCRegister PhysReg) const {
4419 return
4420 false;
4421}
4422
4423ArrayRef<const char *> R600GenRegisterInfo::getRegMaskNames() const {
4424 return {};
4425}
4426
4427const R600FrameLowering *
4428R600GenRegisterInfo::getFrameLowering(const MachineFunction &MF) {
4429 return static_cast<const R600FrameLowering *>(
4430 MF.getSubtarget().getFrameLowering());
4431}
4432
4433
4434} // namespace llvm
4435