f6161419fec111489b6ee9aba977edc848e79266
[oota-llvm.git] / PTXRegisterInfo.td
1 //===- PTXRegisterInfo.td - PTX Register defs ----------------*- tblgen -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 //===----------------------------------------------------------------------===//
11 //  Declarations that describe the PTX register file
12 //===----------------------------------------------------------------------===//
13
14 class PTXReg<string n> : Register<n> {
15   let Namespace = "PTX";
16 }
17
18 //===----------------------------------------------------------------------===//
19 //  Registers
20 //===----------------------------------------------------------------------===//
21
22 ///===- Predicate Registers -----------------------------------------------===//
23
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">;
88
89 ///===- 16-bit Integer Registers ------------------------------------------===//
90
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">;
155
156
157 ///===- 32-bit Integer Registers ------------------------------------------===//
158
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">;
223
224
225 ///===- 64-bit Integer Registers ------------------------------------------===//
226
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">;
291
292
293 ///===- 32-bit Floating-Point Registers -----------------------------------===//
294
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">;
359
360
361 ///===- 64-bit Floating-Point Registers -----------------------------------===//
362
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">;
427
428
429 //===----------------------------------------------------------------------===//
430 //  Register classes
431 //===----------------------------------------------------------------------===//
432
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]>;
442
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]>;
452
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]>;
462
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]>;
472
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]>;
482
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]>;