//===- PTXRegisterInfo.td - PTX Register defs ----------------*- tblgen -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

//===----------------------------------------------------------------------===//
//  Declarations that describe the PTX register file
//===----------------------------------------------------------------------===//

class PTXReg<string n> : Register<n> {
  let Namespace = "PTX";
}

//===----------------------------------------------------------------------===//
//  Registers
//===----------------------------------------------------------------------===//

///===- Predicate Registers -----------------------------------------------===//

def P0 : PTXReg<"p0">;
def P1 : PTXReg<"p1">;
def P2 : PTXReg<"p2">;
def P3 : PTXReg<"p3">;
def P4 : PTXReg<"p4">;
def P5 : PTXReg<"p5">;
def P6 : PTXReg<"p6">;
def P7 : PTXReg<"p7">;
def P8 : PTXReg<"p8">;
def P9 : PTXReg<"p9">;
def P10 : PTXReg<"p10">;
def P11 : PTXReg<"p11">;
def P12 : PTXReg<"p12">;
def P13 : PTXReg<"p13">;
def P14 : PTXReg<"p14">;
def P15 : PTXReg<"p15">;
def P16 : PTXReg<"p16">;
def P17 : PTXReg<"p17">;
def P18 : PTXReg<"p18">;
def P19 : PTXReg<"p19">;
def P20 : PTXReg<"p20">;
def P21 : PTXReg<"p21">;
def P22 : PTXReg<"p22">;
def P23 : PTXReg<"p23">;
def P24 : PTXReg<"p24">;
def P25 : PTXReg<"p25">;
def P26 : PTXReg<"p26">;
def P27 : PTXReg<"p27">;
def P28 : PTXReg<"p28">;
def P29 : PTXReg<"p29">;
def P30 : PTXReg<"p30">;
def P31 : PTXReg<"p31">;
def P32 : PTXReg<"p32">;
def P33 : PTXReg<"p33">;
def P34 : PTXReg<"p34">;
def P35 : PTXReg<"p35">;
def P36 : PTXReg<"p36">;
def P37 : PTXReg<"p37">;
def P38 : PTXReg<"p38">;
def P39 : PTXReg<"p39">;
def P40 : PTXReg<"p40">;
def P41 : PTXReg<"p41">;
def P42 : PTXReg<"p42">;
def P43 : PTXReg<"p43">;
def P44 : PTXReg<"p44">;
def P45 : PTXReg<"p45">;
def P46 : PTXReg<"p46">;
def P47 : PTXReg<"p47">;
def P48 : PTXReg<"p48">;
def P49 : PTXReg<"p49">;
def P50 : PTXReg<"p50">;
def P51 : PTXReg<"p51">;
def P52 : PTXReg<"p52">;
def P53 : PTXReg<"p53">;
def P54 : PTXReg<"p54">;
def P55 : PTXReg<"p55">;
def P56 : PTXReg<"p56">;
def P57 : PTXReg<"p57">;
def P58 : PTXReg<"p58">;
def P59 : PTXReg<"p59">;
def P60 : PTXReg<"p60">;
def P61 : PTXReg<"p61">;
def P62 : PTXReg<"p62">;
def P63 : PTXReg<"p63">;
def P64 : PTXReg<"p64">;
def P65 : PTXReg<"p65">;
def P66 : PTXReg<"p66">;
def P67 : PTXReg<"p67">;
def P68 : PTXReg<"p68">;
def P69 : PTXReg<"p69">;
def P70 : PTXReg<"p70">;
def P71 : PTXReg<"p71">;
def P72 : PTXReg<"p72">;
def P73 : PTXReg<"p73">;
def P74 : PTXReg<"p74">;
def P75 : PTXReg<"p75">;
def P76 : PTXReg<"p76">;
def P77 : PTXReg<"p77">;
def P78 : PTXReg<"p78">;
def P79 : PTXReg<"p79">;
def P80 : PTXReg<"p80">;
def P81 : PTXReg<"p81">;
def P82 : PTXReg<"p82">;
def P83 : PTXReg<"p83">;
def P84 : PTXReg<"p84">;
def P85 : PTXReg<"p85">;
def P86 : PTXReg<"p86">;
def P87 : PTXReg<"p87">;
def P88 : PTXReg<"p88">;
def P89 : PTXReg<"p89">;
def P90 : PTXReg<"p90">;
def P91 : PTXReg<"p91">;
def P92 : PTXReg<"p92">;
def P93 : PTXReg<"p93">;
def P94 : PTXReg<"p94">;
def P95 : PTXReg<"p95">;
def P96 : PTXReg<"p96">;
def P97 : PTXReg<"p97">;
def P98 : PTXReg<"p98">;
def P99 : PTXReg<"p99">;
def P100 : PTXReg<"p100">;
def P101 : PTXReg<"p101">;
def P102 : PTXReg<"p102">;
def P103 : PTXReg<"p103">;
def P104 : PTXReg<"p104">;
def P105 : PTXReg<"p105">;
def P106 : PTXReg<"p106">;
def P107 : PTXReg<"p107">;
def P108 : PTXReg<"p108">;
def P109 : PTXReg<"p109">;
def P110 : PTXReg<"p110">;
def P111 : PTXReg<"p111">;
def P112 : PTXReg<"p112">;
def P113 : PTXReg<"p113">;
def P114 : PTXReg<"p114">;
def P115 : PTXReg<"p115">;
def P116 : PTXReg<"p116">;
def P117 : PTXReg<"p117">;
def P118 : PTXReg<"p118">;
def P119 : PTXReg<"p119">;
def P120 : PTXReg<"p120">;
def P121 : PTXReg<"p121">;
def P122 : PTXReg<"p122">;
def P123 : PTXReg<"p123">;
def P124 : PTXReg<"p124">;
def P125 : PTXReg<"p125">;
def P126 : PTXReg<"p126">;
def P127 : PTXReg<"p127">;

///===- 16-Bit Registers --------------------------------------------------===//

def RH0 : PTXReg<"rh0">;
def RH1 : PTXReg<"rh1">;
def RH2 : PTXReg<"rh2">;
def RH3 : PTXReg<"rh3">;
def RH4 : PTXReg<"rh4">;
def RH5 : PTXReg<"rh5">;
def RH6 : PTXReg<"rh6">;
def RH7 : PTXReg<"rh7">;
def RH8 : PTXReg<"rh8">;
def RH9 : PTXReg<"rh9">;
def RH10 : PTXReg<"rh10">;
def RH11 : PTXReg<"rh11">;
def RH12 : PTXReg<"rh12">;
def RH13 : PTXReg<"rh13">;
def RH14 : PTXReg<"rh14">;
def RH15 : PTXReg<"rh15">;
def RH16 : PTXReg<"rh16">;
def RH17 : PTXReg<"rh17">;
def RH18 : PTXReg<"rh18">;
def RH19 : PTXReg<"rh19">;
def RH20 : PTXReg<"rh20">;
def RH21 : PTXReg<"rh21">;
def RH22 : PTXReg<"rh22">;
def RH23 : PTXReg<"rh23">;
def RH24 : PTXReg<"rh24">;
def RH25 : PTXReg<"rh25">;
def RH26 : PTXReg<"rh26">;
def RH27 : PTXReg<"rh27">;
def RH28 : PTXReg<"rh28">;
def RH29 : PTXReg<"rh29">;
def RH30 : PTXReg<"rh30">;
def RH31 : PTXReg<"rh31">;
def RH32 : PTXReg<"rh32">;
def RH33 : PTXReg<"rh33">;
def RH34 : PTXReg<"rh34">;
def RH35 : PTXReg<"rh35">;
def RH36 : PTXReg<"rh36">;
def RH37 : PTXReg<"rh37">;
def RH38 : PTXReg<"rh38">;
def RH39 : PTXReg<"rh39">;
def RH40 : PTXReg<"rh40">;
def RH41 : PTXReg<"rh41">;
def RH42 : PTXReg<"rh42">;
def RH43 : PTXReg<"rh43">;
def RH44 : PTXReg<"rh44">;
def RH45 : PTXReg<"rh45">;
def RH46 : PTXReg<"rh46">;
def RH47 : PTXReg<"rh47">;
def RH48 : PTXReg<"rh48">;
def RH49 : PTXReg<"rh49">;
def RH50 : PTXReg<"rh50">;
def RH51 : PTXReg<"rh51">;
def RH52 : PTXReg<"rh52">;
def RH53 : PTXReg<"rh53">;
def RH54 : PTXReg<"rh54">;
def RH55 : PTXReg<"rh55">;
def RH56 : PTXReg<"rh56">;
def RH57 : PTXReg<"rh57">;
def RH58 : PTXReg<"rh58">;
def RH59 : PTXReg<"rh59">;
def RH60 : PTXReg<"rh60">;
def RH61 : PTXReg<"rh61">;
def RH62 : PTXReg<"rh62">;
def RH63 : PTXReg<"rh63">;
def RH64 : PTXReg<"rh64">;
def RH65 : PTXReg<"rh65">;
def RH66 : PTXReg<"rh66">;
def RH67 : PTXReg<"rh67">;
def RH68 : PTXReg<"rh68">;
def RH69 : PTXReg<"rh69">;
def RH70 : PTXReg<"rh70">;
def RH71 : PTXReg<"rh71">;
def RH72 : PTXReg<"rh72">;
def RH73 : PTXReg<"rh73">;
def RH74 : PTXReg<"rh74">;
def RH75 : PTXReg<"rh75">;
def RH76 : PTXReg<"rh76">;
def RH77 : PTXReg<"rh77">;
def RH78 : PTXReg<"rh78">;
def RH79 : PTXReg<"rh79">;
def RH80 : PTXReg<"rh80">;
def RH81 : PTXReg<"rh81">;
def RH82 : PTXReg<"rh82">;
def RH83 : PTXReg<"rh83">;
def RH84 : PTXReg<"rh84">;
def RH85 : PTXReg<"rh85">;
def RH86 : PTXReg<"rh86">;
def RH87 : PTXReg<"rh87">;
def RH88 : PTXReg<"rh88">;
def RH89 : PTXReg<"rh89">;
def RH90 : PTXReg<"rh90">;
def RH91 : PTXReg<"rh91">;
def RH92 : PTXReg<"rh92">;
def RH93 : PTXReg<"rh93">;
def RH94 : PTXReg<"rh94">;
def RH95 : PTXReg<"rh95">;
def RH96 : PTXReg<"rh96">;
def RH97 : PTXReg<"rh97">;
def RH98 : PTXReg<"rh98">;
def RH99 : PTXReg<"rh99">;
def RH100 : PTXReg<"rh100">;
def RH101 : PTXReg<"rh101">;
def RH102 : PTXReg<"rh102">;
def RH103 : PTXReg<"rh103">;
def RH104 : PTXReg<"rh104">;
def RH105 : PTXReg<"rh105">;
def RH106 : PTXReg<"rh106">;
def RH107 : PTXReg<"rh107">;
def RH108 : PTXReg<"rh108">;
def RH109 : PTXReg<"rh109">;
def RH110 : PTXReg<"rh110">;
def RH111 : PTXReg<"rh111">;
def RH112 : PTXReg<"rh112">;
def RH113 : PTXReg<"rh113">;
def RH114 : PTXReg<"rh114">;
def RH115 : PTXReg<"rh115">;
def RH116 : PTXReg<"rh116">;
def RH117 : PTXReg<"rh117">;
def RH118 : PTXReg<"rh118">;
def RH119 : PTXReg<"rh119">;
def RH120 : PTXReg<"rh120">;
def RH121 : PTXReg<"rh121">;
def RH122 : PTXReg<"rh122">;
def RH123 : PTXReg<"rh123">;
def RH124 : PTXReg<"rh124">;
def RH125 : PTXReg<"rh125">;
def RH126 : PTXReg<"rh126">;
def RH127 : PTXReg<"rh127">;

///===- 32-Bit Registers --------------------------------------------------===//

def R0 : PTXReg<"r0">;
def R1 : PTXReg<"r1">;
def R2 : PTXReg<"r2">;
def R3 : PTXReg<"r3">;
def R4 : PTXReg<"r4">;
def R5 : PTXReg<"r5">;
def R6 : PTXReg<"r6">;
def R7 : PTXReg<"r7">;
def R8 : PTXReg<"r8">;
def R9 : PTXReg<"r9">;
def R10 : PTXReg<"r10">;
def R11 : PTXReg<"r11">;
def R12 : PTXReg<"r12">;
def R13 : PTXReg<"r13">;
def R14 : PTXReg<"r14">;
def R15 : PTXReg<"r15">;
def R16 : PTXReg<"r16">;
def R17 : PTXReg<"r17">;
def R18 : PTXReg<"r18">;
def R19 : PTXReg<"r19">;
def R20 : PTXReg<"r20">;
def R21 : PTXReg<"r21">;
def R22 : PTXReg<"r22">;
def R23 : PTXReg<"r23">;
def R24 : PTXReg<"r24">;
def R25 : PTXReg<"r25">;
def R26 : PTXReg<"r26">;
def R27 : PTXReg<"r27">;
def R28 : PTXReg<"r28">;
def R29 : PTXReg<"r29">;
def R30 : PTXReg<"r30">;
def R31 : PTXReg<"r31">;
def R32 : PTXReg<"r32">;
def R33 : PTXReg<"r33">;
def R34 : PTXReg<"r34">;
def R35 : PTXReg<"r35">;
def R36 : PTXReg<"r36">;
def R37 : PTXReg<"r37">;
def R38 : PTXReg<"r38">;
def R39 : PTXReg<"r39">;
def R40 : PTXReg<"r40">;
def R41 : PTXReg<"r41">;
def R42 : PTXReg<"r42">;
def R43 : PTXReg<"r43">;
def R44 : PTXReg<"r44">;
def R45 : PTXReg<"r45">;
def R46 : PTXReg<"r46">;
def R47 : PTXReg<"r47">;
def R48 : PTXReg<"r48">;
def R49 : PTXReg<"r49">;
def R50 : PTXReg<"r50">;
def R51 : PTXReg<"r51">;
def R52 : PTXReg<"r52">;
def R53 : PTXReg<"r53">;
def R54 : PTXReg<"r54">;
def R55 : PTXReg<"r55">;
def R56 : PTXReg<"r56">;
def R57 : PTXReg<"r57">;
def R58 : PTXReg<"r58">;
def R59 : PTXReg<"r59">;
def R60 : PTXReg<"r60">;
def R61 : PTXReg<"r61">;
def R62 : PTXReg<"r62">;
def R63 : PTXReg<"r63">;
def R64 : PTXReg<"r64">;
def R65 : PTXReg<"r65">;
def R66 : PTXReg<"r66">;
def R67 : PTXReg<"r67">;
def R68 : PTXReg<"r68">;
def R69 : PTXReg<"r69">;
def R70 : PTXReg<"r70">;
def R71 : PTXReg<"r71">;
def R72 : PTXReg<"r72">;
def R73 : PTXReg<"r73">;
def R74 : PTXReg<"r74">;
def R75 : PTXReg<"r75">;
def R76 : PTXReg<"r76">;
def R77 : PTXReg<"r77">;
def R78 : PTXReg<"r78">;
def R79 : PTXReg<"r79">;
def R80 : PTXReg<"r80">;
def R81 : PTXReg<"r81">;
def R82 : PTXReg<"r82">;
def R83 : PTXReg<"r83">;
def R84 : PTXReg<"r84">;
def R85 : PTXReg<"r85">;
def R86 : PTXReg<"r86">;
def R87 : PTXReg<"r87">;
def R88 : PTXReg<"r88">;
def R89 : PTXReg<"r89">;
def R90 : PTXReg<"r90">;
def R91 : PTXReg<"r91">;
def R92 : PTXReg<"r92">;
def R93 : PTXReg<"r93">;
def R94 : PTXReg<"r94">;
def R95 : PTXReg<"r95">;
def R96 : PTXReg<"r96">;
def R97 : PTXReg<"r97">;
def R98 : PTXReg<"r98">;
def R99 : PTXReg<"r99">;
def R100 : PTXReg<"r100">;
def R101 : PTXReg<"r101">;
def R102 : PTXReg<"r102">;
def R103 : PTXReg<"r103">;
def R104 : PTXReg<"r104">;
def R105 : PTXReg<"r105">;
def R106 : PTXReg<"r106">;
def R107 : PTXReg<"r107">;
def R108 : PTXReg<"r108">;
def R109 : PTXReg<"r109">;
def R110 : PTXReg<"r110">;
def R111 : PTXReg<"r111">;
def R112 : PTXReg<"r112">;
def R113 : PTXReg<"r113">;
def R114 : PTXReg<"r114">;
def R115 : PTXReg<"r115">;
def R116 : PTXReg<"r116">;
def R117 : PTXReg<"r117">;
def R118 : PTXReg<"r118">;
def R119 : PTXReg<"r119">;
def R120 : PTXReg<"r120">;
def R121 : PTXReg<"r121">;
def R122 : PTXReg<"r122">;
def R123 : PTXReg<"r123">;
def R124 : PTXReg<"r124">;
def R125 : PTXReg<"r125">;
def R126 : PTXReg<"r126">;
def R127 : PTXReg<"r127">;

///===- 64-Bit Registers --------------------------------------------------===//

def RD0 : PTXReg<"rd0">;
def RD1 : PTXReg<"rd1">;
def RD2 : PTXReg<"rd2">;
def RD3 : PTXReg<"rd3">;
def RD4 : PTXReg<"rd4">;
def RD5 : PTXReg<"rd5">;
def RD6 : PTXReg<"rd6">;
def RD7 : PTXReg<"rd7">;
def RD8 : PTXReg<"rd8">;
def RD9 : PTXReg<"rd9">;
def RD10 : PTXReg<"rd10">;
def RD11 : PTXReg<"rd11">;
def RD12 : PTXReg<"rd12">;
def RD13 : PTXReg<"rd13">;
def RD14 : PTXReg<"rd14">;
def RD15 : PTXReg<"rd15">;
def RD16 : PTXReg<"rd16">;
def RD17 : PTXReg<"rd17">;
def RD18 : PTXReg<"rd18">;
def RD19 : PTXReg<"rd19">;
def RD20 : PTXReg<"rd20">;
def RD21 : PTXReg<"rd21">;
def RD22 : PTXReg<"rd22">;
def RD23 : PTXReg<"rd23">;
def RD24 : PTXReg<"rd24">;
def RD25 : PTXReg<"rd25">;
def RD26 : PTXReg<"rd26">;
def RD27 : PTXReg<"rd27">;
def RD28 : PTXReg<"rd28">;
def RD29 : PTXReg<"rd29">;
def RD30 : PTXReg<"rd30">;
def RD31 : PTXReg<"rd31">;
def RD32 : PTXReg<"rd32">;
def RD33 : PTXReg<"rd33">;
def RD34 : PTXReg<"rd34">;
def RD35 : PTXReg<"rd35">;
def RD36 : PTXReg<"rd36">;
def RD37 : PTXReg<"rd37">;
def RD38 : PTXReg<"rd38">;
def RD39 : PTXReg<"rd39">;
def RD40 : PTXReg<"rd40">;
def RD41 : PTXReg<"rd41">;
def RD42 : PTXReg<"rd42">;
def RD43 : PTXReg<"rd43">;
def RD44 : PTXReg<"rd44">;
def RD45 : PTXReg<"rd45">;
def RD46 : PTXReg<"rd46">;
def RD47 : PTXReg<"rd47">;
def RD48 : PTXReg<"rd48">;
def RD49 : PTXReg<"rd49">;
def RD50 : PTXReg<"rd50">;
def RD51 : PTXReg<"rd51">;
def RD52 : PTXReg<"rd52">;
def RD53 : PTXReg<"rd53">;
def RD54 : PTXReg<"rd54">;
def RD55 : PTXReg<"rd55">;
def RD56 : PTXReg<"rd56">;
def RD57 : PTXReg<"rd57">;
def RD58 : PTXReg<"rd58">;
def RD59 : PTXReg<"rd59">;
def RD60 : PTXReg<"rd60">;
def RD61 : PTXReg<"rd61">;
def RD62 : PTXReg<"rd62">;
def RD63 : PTXReg<"rd63">;
def RD64 : PTXReg<"rd64">;
def RD65 : PTXReg<"rd65">;
def RD66 : PTXReg<"rd66">;
def RD67 : PTXReg<"rd67">;
def RD68 : PTXReg<"rd68">;
def RD69 : PTXReg<"rd69">;
def RD70 : PTXReg<"rd70">;
def RD71 : PTXReg<"rd71">;
def RD72 : PTXReg<"rd72">;
def RD73 : PTXReg<"rd73">;
def RD74 : PTXReg<"rd74">;
def RD75 : PTXReg<"rd75">;
def RD76 : PTXReg<"rd76">;
def RD77 : PTXReg<"rd77">;
def RD78 : PTXReg<"rd78">;
def RD79 : PTXReg<"rd79">;
def RD80 : PTXReg<"rd80">;
def RD81 : PTXReg<"rd81">;
def RD82 : PTXReg<"rd82">;
def RD83 : PTXReg<"rd83">;
def RD84 : PTXReg<"rd84">;
def RD85 : PTXReg<"rd85">;
def RD86 : PTXReg<"rd86">;
def RD87 : PTXReg<"rd87">;
def RD88 : PTXReg<"rd88">;
def RD89 : PTXReg<"rd89">;
def RD90 : PTXReg<"rd90">;
def RD91 : PTXReg<"rd91">;
def RD92 : PTXReg<"rd92">;
def RD93 : PTXReg<"rd93">;
def RD94 : PTXReg<"rd94">;
def RD95 : PTXReg<"rd95">;
def RD96 : PTXReg<"rd96">;
def RD97 : PTXReg<"rd97">;
def RD98 : PTXReg<"rd98">;
def RD99 : PTXReg<"rd99">;
def RD100 : PTXReg<"rd100">;
def RD101 : PTXReg<"rd101">;
def RD102 : PTXReg<"rd102">;
def RD103 : PTXReg<"rd103">;
def RD104 : PTXReg<"rd104">;
def RD105 : PTXReg<"rd105">;
def RD106 : PTXReg<"rd106">;
def RD107 : PTXReg<"rd107">;
def RD108 : PTXReg<"rd108">;
def RD109 : PTXReg<"rd109">;
def RD110 : PTXReg<"rd110">;
def RD111 : PTXReg<"rd111">;
def RD112 : PTXReg<"rd112">;
def RD113 : PTXReg<"rd113">;
def RD114 : PTXReg<"rd114">;
def RD115 : PTXReg<"rd115">;
def RD116 : PTXReg<"rd116">;
def RD117 : PTXReg<"rd117">;
def RD118 : PTXReg<"rd118">;
def RD119 : PTXReg<"rd119">;
def RD120 : PTXReg<"rd120">;
def RD121 : PTXReg<"rd121">;
def RD122 : PTXReg<"rd122">;
def RD123 : PTXReg<"rd123">;
def RD124 : PTXReg<"rd124">;
def RD125 : PTXReg<"rd125">;
def RD126 : PTXReg<"rd126">;
def RD127 : PTXReg<"rd127">;

//===----------------------------------------------------------------------===//
//  Register classes
//===----------------------------------------------------------------------===//
def RegPred : RegisterClass<"PTX", [i1], 8, (sequence "P%u", 0, 127)>;
def RegI16 : RegisterClass<"PTX", [i16], 16, (sequence "RH%u", 0, 127)>;
def RegI32 : RegisterClass<"PTX", [i32], 32, (sequence "R%u", 0, 127)>;
def RegI64 : RegisterClass<"PTX", [i64], 64, (sequence "RD%u", 0, 127)>;
def RegF32 : RegisterClass<"PTX", [f32], 32, (sequence "R%u", 0, 127)>;
def RegF64 : RegisterClass<"PTX", [f64], 64, (sequence "RD%u", 0, 127)>;