1 //===- PTXRegisterInfo.td - PTX Register defs ----------------*- tblgen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
11 // Declarations that describe the PTX register file
12 //===----------------------------------------------------------------------===//
14 class PTXReg<string n> : Register<n> {
15 let Namespace = "PTX";
18 //===----------------------------------------------------------------------===//
20 //===----------------------------------------------------------------------===//
22 ///===- Predicate Registers -----------------------------------------------===//
24 def P0 : PTXReg<"p0">;
25 def P1 : PTXReg<"p1">;
26 def P2 : PTXReg<"p2">;
27 def P3 : PTXReg<"p3">;
28 def P4 : PTXReg<"p4">;
29 def P5 : PTXReg<"p5">;
30 def P6 : PTXReg<"p6">;
31 def P7 : PTXReg<"p7">;
32 def P8 : PTXReg<"p8">;
33 def P9 : PTXReg<"p9">;
34 def P10 : PTXReg<"p10">;
35 def P11 : PTXReg<"p11">;
36 def P12 : PTXReg<"p12">;
37 def P13 : PTXReg<"p13">;
38 def P14 : PTXReg<"p14">;
39 def P15 : PTXReg<"p15">;
40 def P16 : PTXReg<"p16">;
41 def P17 : PTXReg<"p17">;
42 def P18 : PTXReg<"p18">;
43 def P19 : PTXReg<"p19">;
44 def P20 : PTXReg<"p20">;
45 def P21 : PTXReg<"p21">;
46 def P22 : PTXReg<"p22">;
47 def P23 : PTXReg<"p23">;
48 def P24 : PTXReg<"p24">;
49 def P25 : PTXReg<"p25">;
50 def P26 : PTXReg<"p26">;
51 def P27 : PTXReg<"p27">;
52 def P28 : PTXReg<"p28">;
53 def P29 : PTXReg<"p29">;
54 def P30 : PTXReg<"p30">;
55 def P31 : PTXReg<"p31">;
56 def P32 : PTXReg<"p32">;
57 def P33 : PTXReg<"p33">;
58 def P34 : PTXReg<"p34">;
59 def P35 : PTXReg<"p35">;
60 def P36 : PTXReg<"p36">;
61 def P37 : PTXReg<"p37">;
62 def P38 : PTXReg<"p38">;
63 def P39 : PTXReg<"p39">;
64 def P40 : PTXReg<"p40">;
65 def P41 : PTXReg<"p41">;
66 def P42 : PTXReg<"p42">;
67 def P43 : PTXReg<"p43">;
68 def P44 : PTXReg<"p44">;
69 def P45 : PTXReg<"p45">;
70 def P46 : PTXReg<"p46">;
71 def P47 : PTXReg<"p47">;
72 def P48 : PTXReg<"p48">;
73 def P49 : PTXReg<"p49">;
74 def P50 : PTXReg<"p50">;
75 def P51 : PTXReg<"p51">;
76 def P52 : PTXReg<"p52">;
77 def P53 : PTXReg<"p53">;
78 def P54 : PTXReg<"p54">;
79 def P55 : PTXReg<"p55">;
80 def P56 : PTXReg<"p56">;
81 def P57 : PTXReg<"p57">;
82 def P58 : PTXReg<"p58">;
83 def P59 : PTXReg<"p59">;
84 def P60 : PTXReg<"p60">;
85 def P61 : PTXReg<"p61">;
86 def P62 : PTXReg<"p62">;
87 def P63 : PTXReg<"p63">;
89 ///===- 16-bit Integer Registers ------------------------------------------===//
91 def RH0 : PTXReg<"rh0">;
92 def RH1 : PTXReg<"rh1">;
93 def RH2 : PTXReg<"rh2">;
94 def RH3 : PTXReg<"rh3">;
95 def RH4 : PTXReg<"rh4">;
96 def RH5 : PTXReg<"rh5">;
97 def RH6 : PTXReg<"rh6">;
98 def RH7 : PTXReg<"rh7">;
99 def RH8 : PTXReg<"rh8">;
100 def RH9 : PTXReg<"rh9">;
101 def RH10 : PTXReg<"rh10">;
102 def RH11 : PTXReg<"rh11">;
103 def RH12 : PTXReg<"rh12">;
104 def RH13 : PTXReg<"rh13">;
105 def RH14 : PTXReg<"rh14">;
106 def RH15 : PTXReg<"rh15">;
107 def RH16 : PTXReg<"rh16">;
108 def RH17 : PTXReg<"rh17">;
109 def RH18 : PTXReg<"rh18">;
110 def RH19 : PTXReg<"rh19">;
111 def RH20 : PTXReg<"rh20">;
112 def RH21 : PTXReg<"rh21">;
113 def RH22 : PTXReg<"rh22">;
114 def RH23 : PTXReg<"rh23">;
115 def RH24 : PTXReg<"rh24">;
116 def RH25 : PTXReg<"rh25">;
117 def RH26 : PTXReg<"rh26">;
118 def RH27 : PTXReg<"rh27">;
119 def RH28 : PTXReg<"rh28">;
120 def RH29 : PTXReg<"rh29">;
121 def RH30 : PTXReg<"rh30">;
122 def RH31 : PTXReg<"rh31">;
123 def RH32 : PTXReg<"rh32">;
124 def RH33 : PTXReg<"rh33">;
125 def RH34 : PTXReg<"rh34">;
126 def RH35 : PTXReg<"rh35">;
127 def RH36 : PTXReg<"rh36">;
128 def RH37 : PTXReg<"rh37">;
129 def RH38 : PTXReg<"rh38">;
130 def RH39 : PTXReg<"rh39">;
131 def RH40 : PTXReg<"rh40">;
132 def RH41 : PTXReg<"rh41">;
133 def RH42 : PTXReg<"rh42">;
134 def RH43 : PTXReg<"rh43">;
135 def RH44 : PTXReg<"rh44">;
136 def RH45 : PTXReg<"rh45">;
137 def RH46 : PTXReg<"rh46">;
138 def RH47 : PTXReg<"rh47">;
139 def RH48 : PTXReg<"rh48">;
140 def RH49 : PTXReg<"rh49">;
141 def RH50 : PTXReg<"rh50">;
142 def RH51 : PTXReg<"rh51">;
143 def RH52 : PTXReg<"rh52">;
144 def RH53 : PTXReg<"rh53">;
145 def RH54 : PTXReg<"rh54">;
146 def RH55 : PTXReg<"rh55">;
147 def RH56 : PTXReg<"rh56">;
148 def RH57 : PTXReg<"rh57">;
149 def RH58 : PTXReg<"rh58">;
150 def RH59 : PTXReg<"rh59">;
151 def RH60 : PTXReg<"rh60">;
152 def RH61 : PTXReg<"rh61">;
153 def RH62 : PTXReg<"rh62">;
154 def RH63 : PTXReg<"rh63">;
157 ///===- 32-bit Integer Registers ------------------------------------------===//
159 def R0 : PTXReg<"r0">;
160 def R1 : PTXReg<"r1">;
161 def R2 : PTXReg<"r2">;
162 def R3 : PTXReg<"r3">;
163 def R4 : PTXReg<"r4">;
164 def R5 : PTXReg<"r5">;
165 def R6 : PTXReg<"r6">;
166 def R7 : PTXReg<"r7">;
167 def R8 : PTXReg<"r8">;
168 def R9 : PTXReg<"r9">;
169 def R10 : PTXReg<"r10">;
170 def R11 : PTXReg<"r11">;
171 def R12 : PTXReg<"r12">;
172 def R13 : PTXReg<"r13">;
173 def R14 : PTXReg<"r14">;
174 def R15 : PTXReg<"r15">;
175 def R16 : PTXReg<"r16">;
176 def R17 : PTXReg<"r17">;
177 def R18 : PTXReg<"r18">;
178 def R19 : PTXReg<"r19">;
179 def R20 : PTXReg<"r20">;
180 def R21 : PTXReg<"r21">;
181 def R22 : PTXReg<"r22">;
182 def R23 : PTXReg<"r23">;
183 def R24 : PTXReg<"r24">;
184 def R25 : PTXReg<"r25">;
185 def R26 : PTXReg<"r26">;
186 def R27 : PTXReg<"r27">;
187 def R28 : PTXReg<"r28">;
188 def R29 : PTXReg<"r29">;
189 def R30 : PTXReg<"r30">;
190 def R31 : PTXReg<"r31">;
191 def R32 : PTXReg<"r32">;
192 def R33 : PTXReg<"r33">;
193 def R34 : PTXReg<"r34">;
194 def R35 : PTXReg<"r35">;
195 def R36 : PTXReg<"r36">;
196 def R37 : PTXReg<"r37">;
197 def R38 : PTXReg<"r38">;
198 def R39 : PTXReg<"r39">;
199 def R40 : PTXReg<"r40">;
200 def R41 : PTXReg<"r41">;
201 def R42 : PTXReg<"r42">;
202 def R43 : PTXReg<"r43">;
203 def R44 : PTXReg<"r44">;
204 def R45 : PTXReg<"r45">;
205 def R46 : PTXReg<"r46">;
206 def R47 : PTXReg<"r47">;
207 def R48 : PTXReg<"r48">;
208 def R49 : PTXReg<"r49">;
209 def R50 : PTXReg<"r50">;
210 def R51 : PTXReg<"r51">;
211 def R52 : PTXReg<"r52">;
212 def R53 : PTXReg<"r53">;
213 def R54 : PTXReg<"r54">;
214 def R55 : PTXReg<"r55">;
215 def R56 : PTXReg<"r56">;
216 def R57 : PTXReg<"r57">;
217 def R58 : PTXReg<"r58">;
218 def R59 : PTXReg<"r59">;
219 def R60 : PTXReg<"r60">;
220 def R61 : PTXReg<"r61">;
221 def R62 : PTXReg<"r62">;
222 def R63 : PTXReg<"r63">;
225 ///===- 64-bit Integer Registers ------------------------------------------===//
227 def RD0 : PTXReg<"rd0">;
228 def RD1 : PTXReg<"rd1">;
229 def RD2 : PTXReg<"rd2">;
230 def RD3 : PTXReg<"rd3">;
231 def RD4 : PTXReg<"rd4">;
232 def RD5 : PTXReg<"rd5">;
233 def RD6 : PTXReg<"rd6">;
234 def RD7 : PTXReg<"rd7">;
235 def RD8 : PTXReg<"rd8">;
236 def RD9 : PTXReg<"rd9">;
237 def RD10 : PTXReg<"rd10">;
238 def RD11 : PTXReg<"rd11">;
239 def RD12 : PTXReg<"rd12">;
240 def RD13 : PTXReg<"rd13">;
241 def RD14 : PTXReg<"rd14">;
242 def RD15 : PTXReg<"rd15">;
243 def RD16 : PTXReg<"rd16">;
244 def RD17 : PTXReg<"rd17">;
245 def RD18 : PTXReg<"rd18">;
246 def RD19 : PTXReg<"rd19">;
247 def RD20 : PTXReg<"rd20">;
248 def RD21 : PTXReg<"rd21">;
249 def RD22 : PTXReg<"rd22">;
250 def RD23 : PTXReg<"rd23">;
251 def RD24 : PTXReg<"rd24">;
252 def RD25 : PTXReg<"rd25">;
253 def RD26 : PTXReg<"rd26">;
254 def RD27 : PTXReg<"rd27">;
255 def RD28 : PTXReg<"rd28">;
256 def RD29 : PTXReg<"rd29">;
257 def RD30 : PTXReg<"rd30">;
258 def RD31 : PTXReg<"rd31">;
259 def RD32 : PTXReg<"rd32">;
260 def RD33 : PTXReg<"rd33">;
261 def RD34 : PTXReg<"rd34">;
262 def RD35 : PTXReg<"rd35">;
263 def RD36 : PTXReg<"rd36">;
264 def RD37 : PTXReg<"rd37">;
265 def RD38 : PTXReg<"rd38">;
266 def RD39 : PTXReg<"rd39">;
267 def RD40 : PTXReg<"rd40">;
268 def RD41 : PTXReg<"rd41">;
269 def RD42 : PTXReg<"rd42">;
270 def RD43 : PTXReg<"rd43">;
271 def RD44 : PTXReg<"rd44">;
272 def RD45 : PTXReg<"rd45">;
273 def RD46 : PTXReg<"rd46">;
274 def RD47 : PTXReg<"rd47">;
275 def RD48 : PTXReg<"rd48">;
276 def RD49 : PTXReg<"rd49">;
277 def RD50 : PTXReg<"rd50">;
278 def RD51 : PTXReg<"rd51">;
279 def RD52 : PTXReg<"rd52">;
280 def RD53 : PTXReg<"rd53">;
281 def RD54 : PTXReg<"rd54">;
282 def RD55 : PTXReg<"rd55">;
283 def RD56 : PTXReg<"rd56">;
284 def RD57 : PTXReg<"rd57">;
285 def RD58 : PTXReg<"rd58">;
286 def RD59 : PTXReg<"rd59">;
287 def RD60 : PTXReg<"rd60">;
288 def RD61 : PTXReg<"rd61">;
289 def RD62 : PTXReg<"rd62">;
290 def RD63 : PTXReg<"rd63">;
293 ///===- 32-bit Floating-Point Registers -----------------------------------===//
295 def F0 : PTXReg<"f0">;
296 def F1 : PTXReg<"f1">;
297 def F2 : PTXReg<"f2">;
298 def F3 : PTXReg<"f3">;
299 def F4 : PTXReg<"f4">;
300 def F5 : PTXReg<"f5">;
301 def F6 : PTXReg<"f6">;
302 def F7 : PTXReg<"f7">;
303 def F8 : PTXReg<"f8">;
304 def F9 : PTXReg<"f9">;
305 def F10 : PTXReg<"f10">;
306 def F11 : PTXReg<"f11">;
307 def F12 : PTXReg<"f12">;
308 def F13 : PTXReg<"f13">;
309 def F14 : PTXReg<"f14">;
310 def F15 : PTXReg<"f15">;
311 def F16 : PTXReg<"f16">;
312 def F17 : PTXReg<"f17">;
313 def F18 : PTXReg<"f18">;
314 def F19 : PTXReg<"f19">;
315 def F20 : PTXReg<"f20">;
316 def F21 : PTXReg<"f21">;
317 def F22 : PTXReg<"f22">;
318 def F23 : PTXReg<"f23">;
319 def F24 : PTXReg<"f24">;
320 def F25 : PTXReg<"f25">;
321 def F26 : PTXReg<"f26">;
322 def F27 : PTXReg<"f27">;
323 def F28 : PTXReg<"f28">;
324 def F29 : PTXReg<"f29">;
325 def F30 : PTXReg<"f30">;
326 def F31 : PTXReg<"f31">;
327 def F32 : PTXReg<"f32">;
328 def F33 : PTXReg<"f33">;
329 def F34 : PTXReg<"f34">;
330 def F35 : PTXReg<"f35">;
331 def F36 : PTXReg<"f36">;
332 def F37 : PTXReg<"f37">;
333 def F38 : PTXReg<"f38">;
334 def F39 : PTXReg<"f39">;
335 def F40 : PTXReg<"f40">;
336 def F41 : PTXReg<"f41">;
337 def F42 : PTXReg<"f42">;
338 def F43 : PTXReg<"f43">;
339 def F44 : PTXReg<"f44">;
340 def F45 : PTXReg<"f45">;
341 def F46 : PTXReg<"f46">;
342 def F47 : PTXReg<"f47">;
343 def F48 : PTXReg<"f48">;
344 def F49 : PTXReg<"f49">;
345 def F50 : PTXReg<"f50">;
346 def F51 : PTXReg<"f51">;
347 def F52 : PTXReg<"f52">;
348 def F53 : PTXReg<"f53">;
349 def F54 : PTXReg<"f54">;
350 def F55 : PTXReg<"f55">;
351 def F56 : PTXReg<"f56">;
352 def F57 : PTXReg<"f57">;
353 def F58 : PTXReg<"f58">;
354 def F59 : PTXReg<"f59">;
355 def F60 : PTXReg<"f60">;
356 def F61 : PTXReg<"f61">;
357 def F62 : PTXReg<"f62">;
358 def F63 : PTXReg<"f63">;
361 ///===- 64-bit Floating-Point Registers -----------------------------------===//
363 def FD0 : PTXReg<"fd0">;
364 def FD1 : PTXReg<"fd1">;
365 def FD2 : PTXReg<"fd2">;
366 def FD3 : PTXReg<"fd3">;
367 def FD4 : PTXReg<"fd4">;
368 def FD5 : PTXReg<"fd5">;
369 def FD6 : PTXReg<"fd6">;
370 def FD7 : PTXReg<"fd7">;
371 def FD8 : PTXReg<"fd8">;
372 def FD9 : PTXReg<"fd9">;
373 def FD10 : PTXReg<"fd10">;
374 def FD11 : PTXReg<"fd11">;
375 def FD12 : PTXReg<"fd12">;
376 def FD13 : PTXReg<"fd13">;
377 def FD14 : PTXReg<"fd14">;
378 def FD15 : PTXReg<"fd15">;
379 def FD16 : PTXReg<"fd16">;
380 def FD17 : PTXReg<"fd17">;
381 def FD18 : PTXReg<"fd18">;
382 def FD19 : PTXReg<"fd19">;
383 def FD20 : PTXReg<"fd20">;
384 def FD21 : PTXReg<"fd21">;
385 def FD22 : PTXReg<"fd22">;
386 def FD23 : PTXReg<"fd23">;
387 def FD24 : PTXReg<"fd24">;
388 def FD25 : PTXReg<"fd25">;
389 def FD26 : PTXReg<"fd26">;
390 def FD27 : PTXReg<"fd27">;
391 def FD28 : PTXReg<"fd28">;
392 def FD29 : PTXReg<"fd29">;
393 def FD30 : PTXReg<"fd30">;
394 def FD31 : PTXReg<"fd31">;
395 def FD32 : PTXReg<"fd32">;
396 def FD33 : PTXReg<"fd33">;
397 def FD34 : PTXReg<"fd34">;
398 def FD35 : PTXReg<"fd35">;
399 def FD36 : PTXReg<"fd36">;
400 def FD37 : PTXReg<"fd37">;
401 def FD38 : PTXReg<"fd38">;
402 def FD39 : PTXReg<"fd39">;
403 def FD40 : PTXReg<"fd40">;
404 def FD41 : PTXReg<"fd41">;
405 def FD42 : PTXReg<"fd42">;
406 def FD43 : PTXReg<"fd43">;
407 def FD44 : PTXReg<"fd44">;
408 def FD45 : PTXReg<"fd45">;
409 def FD46 : PTXReg<"f4d6">;
410 def FD47 : PTXReg<"fd47">;
411 def FD48 : PTXReg<"fd48">;
412 def FD49 : PTXReg<"fd49">;
413 def FD50 : PTXReg<"fd50">;
414 def FD51 : PTXReg<"fd51">;
415 def FD52 : PTXReg<"fd52">;
416 def FD53 : PTXReg<"fd53">;
417 def FD54 : PTXReg<"fd54">;
418 def FD55 : PTXReg<"fd55">;
419 def FD56 : PTXReg<"fd56">;
420 def FD57 : PTXReg<"fd57">;
421 def FD58 : PTXReg<"fd58">;
422 def FD59 : PTXReg<"fd59">;
423 def FD60 : PTXReg<"fd60">;
424 def FD61 : PTXReg<"fd61">;
425 def FD62 : PTXReg<"fd62">;
426 def FD63 : PTXReg<"fd63">;
429 //===----------------------------------------------------------------------===//
431 //===----------------------------------------------------------------------===//
433 def Preds : RegisterClass<"PTX", [i1], 8,
434 [P0, P1, P2, P3, P4, P5, P6, P7,
435 P8, P9, P10, P11, P12, P13, P14, P15,
436 P16, P17, P18, P19, P20, P21, P22, P23,
437 P24, P25, P26, P27, P28, P29, P30, P31,
438 P32, P33, P34, P35, P36, P37, P38, P39,
439 P40, P41, P42, P43, P44, P45, P46, P47,
440 P48, P49, P50, P51, P52, P53, P54, P55,
441 P56, P57, P58, P59, P60, P61, P62, P63]>;
443 def RRegu16 : RegisterClass<"PTX", [i16], 16,
444 [RH0, RH1, RH2, RH3, RH4, RH5, RH6, RH7,
445 RH8, RH9, RH10, RH11, RH12, RH13, RH14, RH15,
446 RH16, RH17, RH18, RH19, RH20, RH21, RH22, RH23,
447 RH24, RH25, RH26, RH27, RH28, RH29, RH30, RH31,
448 RH32, RH33, RH34, RH35, RH36, RH37, RH38, RH39,
449 RH40, RH41, RH42, RH43, RH44, RH45, RH46, RH47,
450 RH48, RH49, RH50, RH51, RH52, RH53, RH54, RH55,
451 RH56, RH57, RH58, RH59, RH60, RH61, RH62, RH63]>;
453 def RRegu32 : RegisterClass<"PTX", [i32], 32,
454 [R0, R1, R2, R3, R4, R5, R6, R7,
455 R8, R9, R10, R11, R12, R13, R14, R15,
456 R16, R17, R18, R19, R20, R21, R22, R23,
457 R24, R25, R26, R27, R28, R29, R30, R31,
458 R32, R33, R34, R35, R36, R37, R38, R39,
459 R40, R41, R42, R43, R44, R45, R46, R47,
460 R48, R49, R50, R51, R52, R53, R54, R55,
461 R56, R57, R58, R59, R60, R61, R62, R63]>;
463 def RRegu64 : RegisterClass<"PTX", [i64], 64,
464 [RD0, RD1, RD2, RD3, RD4, RD5, RD6, RD7,
465 RD8, RD9, RD10, RD11, RD12, RD13, RD14, RD15,
466 RD16, RD17, RD18, RD19, RD20, RD21, RD22, RD23,
467 RD24, RD25, RD26, RD27, RD28, RD29, RD30, RD31,
468 RD32, RD33, RD34, RD35, RD36, RD37, RD38, RD39,
469 RD40, RD41, RD42, RD43, RD44, RD45, RD46, RD47,
470 RD48, RD49, RD50, RD51, RD52, RD53, RD54, RD55,
471 RD56, RD57, RD58, RD59, RD60, RD61, RD62, RD63]>;
473 def RRegf32 : RegisterClass<"PTX", [f32], 32,
474 [F0, F1, F2, F3, F4, F5, F6, F7,
475 F8, F9, F10, F11, F12, F13, F14, F15,
476 F16, F17, F18, F19, F20, F21, F22, F23,
477 F24, F25, F26, F27, F28, F29, F30, F31,
478 F32, F33, F34, F35, F36, F37, F38, F39,
479 F40, F41, F42, F43, F44, F45, F46, F47,
480 F48, F49, F50, F51, F52, F53, F54, F55,
481 F56, F57, F58, F59, F60, F61, F62, F63]>;
483 def RRegf64 : RegisterClass<"PTX", [f64], 64,
484 [FD0, FD1, FD2, FD3, FD4, FD5, FD6, FD7,
485 FD8, FD9, FD10, FD11, FD12, FD13, FD14, FD15,
486 FD16, FD17, FD18, FD19, FD20, FD21, FD22, FD23,
487 FD24, FD25, FD26, FD27, FD28, FD29, FD30, FD31,
488 FD32, FD33, FD34, FD35, FD36, FD37, FD38, FD39,
489 FD40, FD41, FD42, FD43, FD44, FD45, FD46, FD47,
490 FD48, FD49, FD50, FD51, FD52, FD53, FD54, FD55,
491 FD56, FD57, FD58, FD59, FD60, FD61, FD62, FD63]>;