LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/NVPTX - NVPTXGenRegisterInfo.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 14 26 53.8 %
Date: 2018-10-20 13:21:21 Functions: 6 12 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Target Register Enum Values                                                *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : 
      10             : #ifdef GET_REGINFO_ENUM
      11             : #undef GET_REGINFO_ENUM
      12             : 
      13             : namespace llvm {
      14             : 
      15             : class MCRegisterClass;
      16             : extern const MCRegisterClass NVPTXMCRegisterClasses[];
      17             : 
      18             : namespace NVPTX {
      19             : enum {
      20             :   NoRegister,
      21             :   VRDepot = 1,
      22             :   VRFrame = 2,
      23             :   VRFrameLocal = 3,
      24             :   ENVREG0 = 4,
      25             :   ENVREG1 = 5,
      26             :   ENVREG2 = 6,
      27             :   ENVREG3 = 7,
      28             :   ENVREG4 = 8,
      29             :   ENVREG5 = 9,
      30             :   ENVREG6 = 10,
      31             :   ENVREG7 = 11,
      32             :   ENVREG8 = 12,
      33             :   ENVREG9 = 13,
      34             :   ENVREG10 = 14,
      35             :   ENVREG11 = 15,
      36             :   ENVREG12 = 16,
      37             :   ENVREG13 = 17,
      38             :   ENVREG14 = 18,
      39             :   ENVREG15 = 19,
      40             :   ENVREG16 = 20,
      41             :   ENVREG17 = 21,
      42             :   ENVREG18 = 22,
      43             :   ENVREG19 = 23,
      44             :   ENVREG20 = 24,
      45             :   ENVREG21 = 25,
      46             :   ENVREG22 = 26,
      47             :   ENVREG23 = 27,
      48             :   ENVREG24 = 28,
      49             :   ENVREG25 = 29,
      50             :   ENVREG26 = 30,
      51             :   ENVREG27 = 31,
      52             :   ENVREG28 = 32,
      53             :   ENVREG29 = 33,
      54             :   ENVREG30 = 34,
      55             :   ENVREG31 = 35,
      56             :   F0 = 36,
      57             :   F1 = 37,
      58             :   F2 = 38,
      59             :   F3 = 39,
      60             :   F4 = 40,
      61             :   FL0 = 41,
      62             :   FL1 = 42,
      63             :   FL2 = 43,
      64             :   FL3 = 44,
      65             :   FL4 = 45,
      66             :   H0 = 46,
      67             :   H1 = 47,
      68             :   H2 = 48,
      69             :   H3 = 49,
      70             :   H4 = 50,
      71             :   HH0 = 51,
      72             :   HH1 = 52,
      73             :   HH2 = 53,
      74             :   HH3 = 54,
      75             :   HH4 = 55,
      76             :   P0 = 56,
      77             :   P1 = 57,
      78             :   P2 = 58,
      79             :   P3 = 59,
      80             :   P4 = 60,
      81             :   R0 = 61,
      82             :   R1 = 62,
      83             :   R2 = 63,
      84             :   R3 = 64,
      85             :   R4 = 65,
      86             :   RL0 = 66,
      87             :   RL1 = 67,
      88             :   RL2 = 68,
      89             :   RL3 = 69,
      90             :   RL4 = 70,
      91             :   RS0 = 71,
      92             :   RS1 = 72,
      93             :   RS2 = 73,
      94             :   RS3 = 74,
      95             :   RS4 = 75,
      96             :   da0 = 76,
      97             :   da1 = 77,
      98             :   da2 = 78,
      99             :   da3 = 79,
     100             :   da4 = 80,
     101             :   fa0 = 81,
     102             :   fa1 = 82,
     103             :   fa2 = 83,
     104             :   fa3 = 84,
     105             :   fa4 = 85,
     106             :   ia0 = 86,
     107             :   ia1 = 87,
     108             :   ia2 = 88,
     109             :   ia3 = 89,
     110             :   ia4 = 90,
     111             :   la0 = 91,
     112             :   la1 = 92,
     113             :   la2 = 93,
     114             :   la3 = 94,
     115             :   la4 = 95,
     116             :   NUM_TARGET_REGS       // 96
     117             : };
     118             : } // end namespace NVPTX
     119             : 
     120             : // Register classes
     121             : 
     122             : namespace NVPTX {
     123             : enum {
     124             :   Int1RegsRegClassID = 0,
     125             :   Float16RegsRegClassID = 1,
     126             :   Int16RegsRegClassID = 2,
     127             :   SpecialRegsRegClassID = 3,
     128             :   Float16x2RegsRegClassID = 4,
     129             :   Float32ArgRegsRegClassID = 5,
     130             :   Float32RegsRegClassID = 6,
     131             :   Int32ArgRegsRegClassID = 7,
     132             :   Int32RegsRegClassID = 8,
     133             :   Float64ArgRegsRegClassID = 9,
     134             :   Float64RegsRegClassID = 10,
     135             :   Int64ArgRegsRegClassID = 11,
     136             :   Int64RegsRegClassID = 12,
     137             : 
     138             :   };
     139             : } // end namespace NVPTX
     140             : 
     141             : } // end namespace llvm
     142             : 
     143             : #endif // GET_REGINFO_ENUM
     144             : 
     145             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
     146             : |*                                                                            *|
     147             : |* MC Register Information                                                    *|
     148             : |*                                                                            *|
     149             : |* Automatically generated file, do not edit!                                 *|
     150             : |*                                                                            *|
     151             : \*===----------------------------------------------------------------------===*/
     152             : 
     153             : 
     154             : #ifdef GET_REGINFO_MC_DESC
     155             : #undef GET_REGINFO_MC_DESC
     156             : 
     157             : namespace llvm {
     158             : 
     159             : extern const MCPhysReg NVPTXRegDiffLists[] = {
     160             :   /* 0 */ 65535, 0,
     161             : };
     162             : 
     163             : extern const LaneBitmask NVPTXLaneMaskLists[] = {
     164             :   /* 0 */ LaneBitmask(0x00000000), LaneBitmask::getAll(),
     165             : };
     166             : 
     167             : extern const uint16_t NVPTXSubRegIdxLists[] = {
     168             :   /* 0 */ 0,
     169             : };
     170             : 
     171             : extern const MCRegisterInfo::SubRegCoveredBits NVPTXSubRegIdxRanges[] = {
     172             :   { 65535, 65535 },
     173             : };
     174             : 
     175             : extern const char NVPTXRegStrings[] = {
     176             :   /* 0 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '0', 0,
     177             :   /* 9 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '0', 0,
     178             :   /* 18 */ 'E', 'N', 'V', 'R', 'E', 'G', '3', '0', 0,
     179             :   /* 27 */ 'F', '0', 0,
     180             :   /* 30 */ 'E', 'N', 'V', 'R', 'E', 'G', '0', 0,
     181             :   /* 38 */ 'H', 'H', '0', 0,
     182             :   /* 42 */ 'F', 'L', '0', 0,
     183             :   /* 46 */ 'R', 'L', '0', 0,
     184             :   /* 50 */ 'P', '0', 0,
     185             :   /* 53 */ 'R', '0', 0,
     186             :   /* 56 */ 'R', 'S', '0', 0,
     187             :   /* 60 */ 'd', 'a', '0', 0,
     188             :   /* 64 */ 'f', 'a', '0', 0,
     189             :   /* 68 */ 'i', 'a', '0', 0,
     190             :   /* 72 */ 'l', 'a', '0', 0,
     191             :   /* 76 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '1', 0,
     192             :   /* 85 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '1', 0,
     193             :   /* 94 */ 'E', 'N', 'V', 'R', 'E', 'G', '3', '1', 0,
     194             :   /* 103 */ 'F', '1', 0,
     195             :   /* 106 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', 0,
     196             :   /* 114 */ 'H', 'H', '1', 0,
     197             :   /* 118 */ 'F', 'L', '1', 0,
     198             :   /* 122 */ 'R', 'L', '1', 0,
     199             :   /* 126 */ 'P', '1', 0,
     200             :   /* 129 */ 'R', '1', 0,
     201             :   /* 132 */ 'R', 'S', '1', 0,
     202             :   /* 136 */ 'd', 'a', '1', 0,
     203             :   /* 140 */ 'f', 'a', '1', 0,
     204             :   /* 144 */ 'i', 'a', '1', 0,
     205             :   /* 148 */ 'l', 'a', '1', 0,
     206             :   /* 152 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '2', 0,
     207             :   /* 161 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '2', 0,
     208             :   /* 170 */ 'F', '2', 0,
     209             :   /* 173 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', 0,
     210             :   /* 181 */ 'H', 'H', '2', 0,
     211             :   /* 185 */ 'F', 'L', '2', 0,
     212             :   /* 189 */ 'R', 'L', '2', 0,
     213             :   /* 193 */ 'P', '2', 0,
     214             :   /* 196 */ 'R', '2', 0,
     215             :   /* 199 */ 'R', 'S', '2', 0,
     216             :   /* 203 */ 'd', 'a', '2', 0,
     217             :   /* 207 */ 'f', 'a', '2', 0,
     218             :   /* 211 */ 'i', 'a', '2', 0,
     219             :   /* 215 */ 'l', 'a', '2', 0,
     220             :   /* 219 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '3', 0,
     221             :   /* 228 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '3', 0,
     222             :   /* 237 */ 'F', '3', 0,
     223             :   /* 240 */ 'E', 'N', 'V', 'R', 'E', 'G', '3', 0,
     224             :   /* 248 */ 'H', 'H', '3', 0,
     225             :   /* 252 */ 'F', 'L', '3', 0,
     226             :   /* 256 */ 'R', 'L', '3', 0,
     227             :   /* 260 */ 'P', '3', 0,
     228             :   /* 263 */ 'R', '3', 0,
     229             :   /* 266 */ 'R', 'S', '3', 0,
     230             :   /* 270 */ 'd', 'a', '3', 0,
     231             :   /* 274 */ 'f', 'a', '3', 0,
     232             :   /* 278 */ 'i', 'a', '3', 0,
     233             :   /* 282 */ 'l', 'a', '3', 0,
     234             :   /* 286 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '4', 0,
     235             :   /* 295 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '4', 0,
     236             :   /* 304 */ 'F', '4', 0,
     237             :   /* 307 */ 'E', 'N', 'V', 'R', 'E', 'G', '4', 0,
     238             :   /* 315 */ 'H', 'H', '4', 0,
     239             :   /* 319 */ 'F', 'L', '4', 0,
     240             :   /* 323 */ 'R', 'L', '4', 0,
     241             :   /* 327 */ 'P', '4', 0,
     242             :   /* 330 */ 'R', '4', 0,
     243             :   /* 333 */ 'R', 'S', '4', 0,
     244             :   /* 337 */ 'd', 'a', '4', 0,
     245             :   /* 341 */ 'f', 'a', '4', 0,
     246             :   /* 345 */ 'i', 'a', '4', 0,
     247             :   /* 349 */ 'l', 'a', '4', 0,
     248             :   /* 353 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '5', 0,
     249             :   /* 362 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '5', 0,
     250             :   /* 371 */ 'E', 'N', 'V', 'R', 'E', 'G', '5', 0,
     251             :   /* 379 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '6', 0,
     252             :   /* 388 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '6', 0,
     253             :   /* 397 */ 'E', 'N', 'V', 'R', 'E', 'G', '6', 0,
     254             :   /* 405 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '7', 0,
     255             :   /* 414 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '7', 0,
     256             :   /* 423 */ 'E', 'N', 'V', 'R', 'E', 'G', '7', 0,
     257             :   /* 431 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '8', 0,
     258             :   /* 440 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '8', 0,
     259             :   /* 449 */ 'E', 'N', 'V', 'R', 'E', 'G', '8', 0,
     260             :   /* 457 */ 'E', 'N', 'V', 'R', 'E', 'G', '1', '9', 0,
     261             :   /* 466 */ 'E', 'N', 'V', 'R', 'E', 'G', '2', '9', 0,
     262             :   /* 475 */ 'E', 'N', 'V', 'R', 'E', 'G', '9', 0,
     263             :   /* 483 */ 'V', 'R', 'F', 'r', 'a', 'm', 'e', 0,
     264             :   /* 491 */ 'V', 'R', 'F', 'r', 'a', 'm', 'e', 'L', 'o', 'c', 'a', 'l', 0,
     265             :   /* 504 */ 'V', 'R', 'D', 'e', 'p', 'o', 't', 0,
     266             : };
     267             : 
     268             : extern const MCRegisterDesc NVPTXRegDesc[] = { // Descriptors
     269             :   { 8, 0, 0, 0, 0, 0 },
     270             :   { 504, 1, 1, 0, 1, 0 },
     271             :   { 483, 1, 1, 0, 1, 0 },
     272             :   { 491, 1, 1, 0, 1, 0 },
     273             :   { 30, 1, 1, 0, 1, 0 },
     274             :   { 106, 1, 1, 0, 1, 0 },
     275             :   { 173, 1, 1, 0, 1, 0 },
     276             :   { 240, 1, 1, 0, 1, 0 },
     277             :   { 307, 1, 1, 0, 1, 0 },
     278             :   { 371, 1, 1, 0, 1, 0 },
     279             :   { 397, 1, 1, 0, 1, 0 },
     280             :   { 423, 1, 1, 0, 1, 0 },
     281             :   { 449, 1, 1, 0, 1, 0 },
     282             :   { 475, 1, 1, 0, 1, 0 },
     283             :   { 0, 1, 1, 0, 1, 0 },
     284             :   { 76, 1, 1, 0, 1, 0 },
     285             :   { 152, 1, 1, 0, 1, 0 },
     286             :   { 219, 1, 1, 0, 1, 0 },
     287             :   { 286, 1, 1, 0, 1, 0 },
     288             :   { 353, 1, 1, 0, 1, 0 },
     289             :   { 379, 1, 1, 0, 1, 0 },
     290             :   { 405, 1, 1, 0, 1, 0 },
     291             :   { 431, 1, 1, 0, 1, 0 },
     292             :   { 457, 1, 1, 0, 1, 0 },
     293             :   { 9, 1, 1, 0, 1, 0 },
     294             :   { 85, 1, 1, 0, 1, 0 },
     295             :   { 161, 1, 1, 0, 1, 0 },
     296             :   { 228, 1, 1, 0, 1, 0 },
     297             :   { 295, 1, 1, 0, 1, 0 },
     298             :   { 362, 1, 1, 0, 1, 0 },
     299             :   { 388, 1, 1, 0, 1, 0 },
     300             :   { 414, 1, 1, 0, 1, 0 },
     301             :   { 440, 1, 1, 0, 1, 0 },
     302             :   { 466, 1, 1, 0, 1, 0 },
     303             :   { 18, 1, 1, 0, 1, 0 },
     304             :   { 94, 1, 1, 0, 1, 0 },
     305             :   { 27, 1, 1, 0, 1, 0 },
     306             :   { 103, 1, 1, 0, 1, 0 },
     307             :   { 170, 1, 1, 0, 1, 0 },
     308             :   { 237, 1, 1, 0, 1, 0 },
     309             :   { 304, 1, 1, 0, 1, 0 },
     310             :   { 42, 1, 1, 0, 1, 0 },
     311             :   { 118, 1, 1, 0, 1, 0 },
     312             :   { 185, 1, 1, 0, 1, 0 },
     313             :   { 252, 1, 1, 0, 1, 0 },
     314             :   { 319, 1, 1, 0, 1, 0 },
     315             :   { 39, 1, 1, 0, 1, 0 },
     316             :   { 115, 1, 1, 0, 1, 0 },
     317             :   { 182, 1, 1, 0, 1, 0 },
     318             :   { 249, 1, 1, 0, 1, 0 },
     319             :   { 316, 1, 1, 0, 1, 0 },
     320             :   { 38, 1, 1, 0, 1, 0 },
     321             :   { 114, 1, 1, 0, 1, 0 },
     322             :   { 181, 1, 1, 0, 1, 0 },
     323             :   { 248, 1, 1, 0, 1, 0 },
     324             :   { 315, 1, 1, 0, 1, 0 },
     325             :   { 50, 1, 1, 0, 1, 0 },
     326             :   { 126, 1, 1, 0, 1, 0 },
     327             :   { 193, 1, 1, 0, 1, 0 },
     328             :   { 260, 1, 1, 0, 1, 0 },
     329             :   { 327, 1, 1, 0, 1, 0 },
     330             :   { 53, 1, 1, 0, 1, 0 },
     331             :   { 129, 1, 1, 0, 1, 0 },
     332             :   { 196, 1, 1, 0, 1, 0 },
     333             :   { 263, 1, 1, 0, 1, 0 },
     334             :   { 330, 1, 1, 0, 1, 0 },
     335             :   { 46, 1, 1, 0, 1, 0 },
     336             :   { 122, 1, 1, 0, 1, 0 },
     337             :   { 189, 1, 1, 0, 1, 0 },
     338             :   { 256, 1, 1, 0, 1, 0 },
     339             :   { 323, 1, 1, 0, 1, 0 },
     340             :   { 56, 1, 1, 0, 1, 0 },
     341             :   { 132, 1, 1, 0, 1, 0 },
     342             :   { 199, 1, 1, 0, 1, 0 },
     343             :   { 266, 1, 1, 0, 1, 0 },
     344             :   { 333, 1, 1, 0, 1, 0 },
     345             :   { 60, 1, 1, 0, 1, 0 },
     346             :   { 136, 1, 1, 0, 1, 0 },
     347             :   { 203, 1, 1, 0, 1, 0 },
     348             :   { 270, 1, 1, 0, 1, 0 },
     349             :   { 337, 1, 1, 0, 1, 0 },
     350             :   { 64, 1, 1, 0, 1, 0 },
     351             :   { 140, 1, 1, 0, 1, 0 },
     352             :   { 207, 1, 1, 0, 1, 0 },
     353             :   { 274, 1, 1, 0, 1, 0 },
     354             :   { 341, 1, 1, 0, 1, 0 },
     355             :   { 68, 1, 1, 0, 1, 0 },
     356             :   { 144, 1, 1, 0, 1, 0 },
     357             :   { 211, 1, 1, 0, 1, 0 },
     358             :   { 278, 1, 1, 0, 1, 0 },
     359             :   { 345, 1, 1, 0, 1, 0 },
     360             :   { 72, 1, 1, 0, 1, 0 },
     361             :   { 148, 1, 1, 0, 1, 0 },
     362             :   { 215, 1, 1, 0, 1, 0 },
     363             :   { 282, 1, 1, 0, 1, 0 },
     364             :   { 349, 1, 1, 0, 1, 0 },
     365             : };
     366             : 
     367             : extern const MCPhysReg NVPTXRegUnitRoots[][2] = {
     368             :   { NVPTX::VRDepot },
     369             :   { NVPTX::VRFrame },
     370             :   { NVPTX::VRFrameLocal },
     371             :   { NVPTX::ENVREG0 },
     372             :   { NVPTX::ENVREG1 },
     373             :   { NVPTX::ENVREG2 },
     374             :   { NVPTX::ENVREG3 },
     375             :   { NVPTX::ENVREG4 },
     376             :   { NVPTX::ENVREG5 },
     377             :   { NVPTX::ENVREG6 },
     378             :   { NVPTX::ENVREG7 },
     379             :   { NVPTX::ENVREG8 },
     380             :   { NVPTX::ENVREG9 },
     381             :   { NVPTX::ENVREG10 },
     382             :   { NVPTX::ENVREG11 },
     383             :   { NVPTX::ENVREG12 },
     384             :   { NVPTX::ENVREG13 },
     385             :   { NVPTX::ENVREG14 },
     386             :   { NVPTX::ENVREG15 },
     387             :   { NVPTX::ENVREG16 },
     388             :   { NVPTX::ENVREG17 },
     389             :   { NVPTX::ENVREG18 },
     390             :   { NVPTX::ENVREG19 },
     391             :   { NVPTX::ENVREG20 },
     392             :   { NVPTX::ENVREG21 },
     393             :   { NVPTX::ENVREG22 },
     394             :   { NVPTX::ENVREG23 },
     395             :   { NVPTX::ENVREG24 },
     396             :   { NVPTX::ENVREG25 },
     397             :   { NVPTX::ENVREG26 },
     398             :   { NVPTX::ENVREG27 },
     399             :   { NVPTX::ENVREG28 },
     400             :   { NVPTX::ENVREG29 },
     401             :   { NVPTX::ENVREG30 },
     402             :   { NVPTX::ENVREG31 },
     403             :   { NVPTX::F0 },
     404             :   { NVPTX::F1 },
     405             :   { NVPTX::F2 },
     406             :   { NVPTX::F3 },
     407             :   { NVPTX::F4 },
     408             :   { NVPTX::FL0 },
     409             :   { NVPTX::FL1 },
     410             :   { NVPTX::FL2 },
     411             :   { NVPTX::FL3 },
     412             :   { NVPTX::FL4 },
     413             :   { NVPTX::H0 },
     414             :   { NVPTX::H1 },
     415             :   { NVPTX::H2 },
     416             :   { NVPTX::H3 },
     417             :   { NVPTX::H4 },
     418             :   { NVPTX::HH0 },
     419             :   { NVPTX::HH1 },
     420             :   { NVPTX::HH2 },
     421             :   { NVPTX::HH3 },
     422             :   { NVPTX::HH4 },
     423             :   { NVPTX::P0 },
     424             :   { NVPTX::P1 },
     425             :   { NVPTX::P2 },
     426             :   { NVPTX::P3 },
     427             :   { NVPTX::P4 },
     428             :   { NVPTX::R0 },
     429             :   { NVPTX::R1 },
     430             :   { NVPTX::R2 },
     431             :   { NVPTX::R3 },
     432             :   { NVPTX::R4 },
     433             :   { NVPTX::RL0 },
     434             :   { NVPTX::RL1 },
     435             :   { NVPTX::RL2 },
     436             :   { NVPTX::RL3 },
     437             :   { NVPTX::RL4 },
     438             :   { NVPTX::RS0 },
     439             :   { NVPTX::RS1 },
     440             :   { NVPTX::RS2 },
     441             :   { NVPTX::RS3 },
     442             :   { NVPTX::RS4 },
     443             :   { NVPTX::da0 },
     444             :   { NVPTX::da1 },
     445             :   { NVPTX::da2 },
     446             :   { NVPTX::da3 },
     447             :   { NVPTX::da4 },
     448             :   { NVPTX::fa0 },
     449             :   { NVPTX::fa1 },
     450             :   { NVPTX::fa2 },
     451             :   { NVPTX::fa3 },
     452             :   { NVPTX::fa4 },
     453             :   { NVPTX::ia0 },
     454             :   { NVPTX::ia1 },
     455             :   { NVPTX::ia2 },
     456             :   { NVPTX::ia3 },
     457             :   { NVPTX::ia4 },
     458             :   { NVPTX::la0 },
     459             :   { NVPTX::la1 },
     460             :   { NVPTX::la2 },
     461             :   { NVPTX::la3 },
     462             :   { NVPTX::la4 },
     463             : };
     464             : 
     465             : namespace {     // Register classes...
     466             :   // Int1Regs Register Class...
     467             :   const MCPhysReg Int1Regs[] = {
     468             :     NVPTX::P0, NVPTX::P1, NVPTX::P2, NVPTX::P3, NVPTX::P4, 
     469             :   };
     470             : 
     471             :   // Int1Regs Bit set.
     472             :   const uint8_t Int1RegsBits[] = {
     473             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 
     474             :   };
     475             : 
     476             :   // Float16Regs Register Class...
     477             :   const MCPhysReg Float16Regs[] = {
     478             :     NVPTX::H0, NVPTX::H1, NVPTX::H2, NVPTX::H3, NVPTX::H4, 
     479             :   };
     480             : 
     481             :   // Float16Regs Bit set.
     482             :   const uint8_t Float16RegsBits[] = {
     483             :     0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 
     484             :   };
     485             : 
     486             :   // Int16Regs Register Class...
     487             :   const MCPhysReg Int16Regs[] = {
     488             :     NVPTX::RS0, NVPTX::RS1, NVPTX::RS2, NVPTX::RS3, NVPTX::RS4, 
     489             :   };
     490             : 
     491             :   // Int16Regs Bit set.
     492             :   const uint8_t Int16RegsBits[] = {
     493             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 
     494             :   };
     495             : 
     496             :   // SpecialRegs Register Class...
     497             :   const MCPhysReg SpecialRegs[] = {
     498             :     NVPTX::VRFrame, NVPTX::VRFrameLocal, NVPTX::VRDepot, NVPTX::ENVREG0, NVPTX::ENVREG1, NVPTX::ENVREG2, NVPTX::ENVREG3, NVPTX::ENVREG4, NVPTX::ENVREG5, NVPTX::ENVREG6, NVPTX::ENVREG7, NVPTX::ENVREG8, NVPTX::ENVREG9, NVPTX::ENVREG10, NVPTX::ENVREG11, NVPTX::ENVREG12, NVPTX::ENVREG13, NVPTX::ENVREG14, NVPTX::ENVREG15, NVPTX::ENVREG16, NVPTX::ENVREG17, NVPTX::ENVREG18, NVPTX::ENVREG19, NVPTX::ENVREG20, NVPTX::ENVREG21, NVPTX::ENVREG22, NVPTX::ENVREG23, NVPTX::ENVREG24, NVPTX::ENVREG25, NVPTX::ENVREG26, NVPTX::ENVREG27, NVPTX::ENVREG28, NVPTX::ENVREG29, NVPTX::ENVREG30, NVPTX::ENVREG31, 
     499             :   };
     500             : 
     501             :   // SpecialRegs Bit set.
     502             :   const uint8_t SpecialRegsBits[] = {
     503             :     0xfe, 0xff, 0xff, 0xff, 0x0f, 
     504             :   };
     505             : 
     506             :   // Float16x2Regs Register Class...
     507             :   const MCPhysReg Float16x2Regs[] = {
     508             :     NVPTX::HH0, NVPTX::HH1, NVPTX::HH2, NVPTX::HH3, NVPTX::HH4, 
     509             :   };
     510             : 
     511             :   // Float16x2Regs Bit set.
     512             :   const uint8_t Float16x2RegsBits[] = {
     513             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 
     514             :   };
     515             : 
     516             :   // Float32ArgRegs Register Class...
     517             :   const MCPhysReg Float32ArgRegs[] = {
     518             :     NVPTX::fa0, NVPTX::fa1, NVPTX::fa2, NVPTX::fa3, NVPTX::fa4, 
     519             :   };
     520             : 
     521             :   // Float32ArgRegs Bit set.
     522             :   const uint8_t Float32ArgRegsBits[] = {
     523             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 
     524             :   };
     525             : 
     526             :   // Float32Regs Register Class...
     527             :   const MCPhysReg Float32Regs[] = {
     528             :     NVPTX::F0, NVPTX::F1, NVPTX::F2, NVPTX::F3, NVPTX::F4, 
     529             :   };
     530             : 
     531             :   // Float32Regs Bit set.
     532             :   const uint8_t Float32RegsBits[] = {
     533             :     0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 
     534             :   };
     535             : 
     536             :   // Int32ArgRegs Register Class...
     537             :   const MCPhysReg Int32ArgRegs[] = {
     538             :     NVPTX::ia0, NVPTX::ia1, NVPTX::ia2, NVPTX::ia3, NVPTX::ia4, 
     539             :   };
     540             : 
     541             :   // Int32ArgRegs Bit set.
     542             :   const uint8_t Int32ArgRegsBits[] = {
     543             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 
     544             :   };
     545             : 
     546             :   // Int32Regs Register Class...
     547             :   const MCPhysReg Int32Regs[] = {
     548             :     NVPTX::R0, NVPTX::R1, NVPTX::R2, NVPTX::R3, NVPTX::R4, 
     549             :   };
     550             : 
     551             :   // Int32Regs Bit set.
     552             :   const uint8_t Int32RegsBits[] = {
     553             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 
     554             :   };
     555             : 
     556             :   // Float64ArgRegs Register Class...
     557             :   const MCPhysReg Float64ArgRegs[] = {
     558             :     NVPTX::da0, NVPTX::da1, NVPTX::da2, NVPTX::da3, NVPTX::da4, 
     559             :   };
     560             : 
     561             :   // Float64ArgRegs Bit set.
     562             :   const uint8_t Float64ArgRegsBits[] = {
     563             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 
     564             :   };
     565             : 
     566             :   // Float64Regs Register Class...
     567             :   const MCPhysReg Float64Regs[] = {
     568             :     NVPTX::FL0, NVPTX::FL1, NVPTX::FL2, NVPTX::FL3, NVPTX::FL4, 
     569             :   };
     570             : 
     571             :   // Float64Regs Bit set.
     572             :   const uint8_t Float64RegsBits[] = {
     573             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 
     574             :   };
     575             : 
     576             :   // Int64ArgRegs Register Class...
     577             :   const MCPhysReg Int64ArgRegs[] = {
     578             :     NVPTX::la0, NVPTX::la1, NVPTX::la2, NVPTX::la3, NVPTX::la4, 
     579             :   };
     580             : 
     581             :   // Int64ArgRegs Bit set.
     582             :   const uint8_t Int64ArgRegsBits[] = {
     583             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 
     584             :   };
     585             : 
     586             :   // Int64Regs Register Class...
     587             :   const MCPhysReg Int64Regs[] = {
     588             :     NVPTX::RL0, NVPTX::RL1, NVPTX::RL2, NVPTX::RL3, NVPTX::RL4, 
     589             :   };
     590             : 
     591             :   // Int64Regs Bit set.
     592             :   const uint8_t Int64RegsBits[] = {
     593             :     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 
     594             :   };
     595             : 
     596             : } // end anonymous namespace
     597             : 
     598             : extern const char NVPTXRegClassStrings[] = {
     599             :   /* 0 */ 'I', 'n', 't', '1', 'R', 'e', 'g', 's', 0,
     600             :   /* 9 */ 'F', 'l', 'o', 'a', 't', '3', '2', 'R', 'e', 'g', 's', 0,
     601             :   /* 21 */ 'I', 'n', 't', '3', '2', 'R', 'e', 'g', 's', 0,
     602             :   /* 31 */ 'F', 'l', 'o', 'a', 't', '1', '6', 'x', '2', 'R', 'e', 'g', 's', 0,
     603             :   /* 45 */ 'F', 'l', 'o', 'a', 't', '6', '4', 'R', 'e', 'g', 's', 0,
     604             :   /* 57 */ 'I', 'n', 't', '6', '4', 'R', 'e', 'g', 's', 0,
     605             :   /* 67 */ 'F', 'l', 'o', 'a', 't', '1', '6', 'R', 'e', 'g', 's', 0,
     606             :   /* 79 */ 'I', 'n', 't', '1', '6', 'R', 'e', 'g', 's', 0,
     607             :   /* 89 */ 'F', 'l', 'o', 'a', 't', '3', '2', 'A', 'r', 'g', 'R', 'e', 'g', 's', 0,
     608             :   /* 104 */ 'I', 'n', 't', '3', '2', 'A', 'r', 'g', 'R', 'e', 'g', 's', 0,
     609             :   /* 117 */ 'F', 'l', 'o', 'a', 't', '6', '4', 'A', 'r', 'g', 'R', 'e', 'g', 's', 0,
     610             :   /* 132 */ 'I', 'n', 't', '6', '4', 'A', 'r', 'g', 'R', 'e', 'g', 's', 0,
     611             :   /* 145 */ 'S', 'p', 'e', 'c', 'i', 'a', 'l', 'R', 'e', 'g', 's', 0,
     612             : };
     613             : 
     614             : extern const MCRegisterClass NVPTXMCRegisterClasses[] = {
     615             :   { Int1Regs, Int1RegsBits, 0, 5, sizeof(Int1RegsBits), NVPTX::Int1RegsRegClassID, 1, true },
     616             :   { Float16Regs, Float16RegsBits, 67, 5, sizeof(Float16RegsBits), NVPTX::Float16RegsRegClassID, 1, true },
     617             :   { Int16Regs, Int16RegsBits, 79, 5, sizeof(Int16RegsBits), NVPTX::Int16RegsRegClassID, 1, true },
     618             :   { SpecialRegs, SpecialRegsBits, 145, 35, sizeof(SpecialRegsBits), NVPTX::SpecialRegsRegClassID, 1, true },
     619             :   { Float16x2Regs, Float16x2RegsBits, 31, 5, sizeof(Float16x2RegsBits), NVPTX::Float16x2RegsRegClassID, 1, true },
     620             :   { Float32ArgRegs, Float32ArgRegsBits, 89, 5, sizeof(Float32ArgRegsBits), NVPTX::Float32ArgRegsRegClassID, 1, true },
     621             :   { Float32Regs, Float32RegsBits, 9, 5, sizeof(Float32RegsBits), NVPTX::Float32RegsRegClassID, 1, true },
     622             :   { Int32ArgRegs, Int32ArgRegsBits, 104, 5, sizeof(Int32ArgRegsBits), NVPTX::Int32ArgRegsRegClassID, 1, true },
     623             :   { Int32Regs, Int32RegsBits, 21, 5, sizeof(Int32RegsBits), NVPTX::Int32RegsRegClassID, 1, true },
     624             :   { Float64ArgRegs, Float64ArgRegsBits, 117, 5, sizeof(Float64ArgRegsBits), NVPTX::Float64ArgRegsRegClassID, 1, true },
     625             :   { Float64Regs, Float64RegsBits, 45, 5, sizeof(Float64RegsBits), NVPTX::Float64RegsRegClassID, 1, true },
     626             :   { Int64ArgRegs, Int64ArgRegsBits, 132, 5, sizeof(Int64ArgRegsBits), NVPTX::Int64ArgRegsRegClassID, 1, true },
     627             :   { Int64Regs, Int64RegsBits, 57, 5, sizeof(Int64RegsBits), NVPTX::Int64RegsRegClassID, 1, true },
     628             : };
     629             : 
     630             : extern const uint16_t NVPTXRegEncodingTable[] = {
     631             :   0,
     632             :   0,
     633             :   0,
     634             :   0,
     635             :   0,
     636             :   0,
     637             :   0,
     638             :   0,
     639             :   0,
     640             :   0,
     641             :   0,
     642             :   0,
     643             :   0,
     644             :   0,
     645             :   0,
     646             :   0,
     647             :   0,
     648             :   0,
     649             :   0,
     650             :   0,
     651             :   0,
     652             :   0,
     653             :   0,
     654             :   0,
     655             :   0,
     656             :   0,
     657             :   0,
     658             :   0,
     659             :   0,
     660             :   0,
     661             :   0,
     662             :   0,
     663             :   0,
     664             :   0,
     665             :   0,
     666             :   0,
     667             :   0,
     668             :   0,
     669             :   0,
     670             :   0,
     671             :   0,
     672             :   0,
     673             :   0,
     674             :   0,
     675             :   0,
     676             :   0,
     677             :   0,
     678             :   0,
     679             :   0,
     680             :   0,
     681             :   0,
     682             :   0,
     683             :   0,
     684             :   0,
     685             :   0,
     686             :   0,
     687             :   0,
     688             :   0,
     689             :   0,
     690             :   0,
     691             :   0,
     692             :   0,
     693             :   0,
     694             :   0,
     695             :   0,
     696             :   0,
     697             :   0,
     698             :   0,
     699             :   0,
     700             :   0,
     701             :   0,
     702             :   0,
     703             :   0,
     704             :   0,
     705             :   0,
     706             :   0,
     707             :   0,
     708             :   0,
     709             :   0,
     710             :   0,
     711             :   0,
     712             :   0,
     713             :   0,
     714             :   0,
     715             :   0,
     716             :   0,
     717             :   0,
     718             :   0,
     719             :   0,
     720             :   0,
     721             :   0,
     722             :   0,
     723             :   0,
     724             :   0,
     725             :   0,
     726             :   0,
     727             : };
     728           0 : static inline void InitNVPTXMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
     729             :   RI->InitMCRegisterInfo(NVPTXRegDesc, 96, RA, PC, NVPTXMCRegisterClasses, 13, NVPTXRegUnitRoots, 95, NVPTXRegDiffLists, NVPTXLaneMaskLists, NVPTXRegStrings, NVPTXRegClassStrings, NVPTXSubRegIdxLists, 1,
     730             : NVPTXSubRegIdxRanges, NVPTXRegEncodingTable);
     731             : 
     732           0 : }
     733             : 
     734             : } // end namespace llvm
     735             : 
     736             : #endif // GET_REGINFO_MC_DESC
     737             : 
     738             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
     739             : |*                                                                            *|
     740             : |* Register Information Header Fragment                                       *|
     741             : |*                                                                            *|
     742             : |* Automatically generated file, do not edit!                                 *|
     743             : |*                                                                            *|
     744             : \*===----------------------------------------------------------------------===*/
     745             : 
     746             : 
     747             : #ifdef GET_REGINFO_HEADER
     748             : #undef GET_REGINFO_HEADER
     749             : 
     750             : #include "llvm/CodeGen/TargetRegisterInfo.h"
     751             : 
     752             : namespace llvm {
     753             : 
     754             : class NVPTXFrameLowering;
     755             : 
     756             : struct NVPTXGenRegisterInfo : public TargetRegisterInfo {
     757             :   explicit NVPTXGenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
     758             :       unsigned PC = 0, unsigned HwMode = 0);
     759             :   const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
     760             :   unsigned getRegUnitWeight(unsigned RegUnit) const override;
     761             :   unsigned getNumRegPressureSets() const override;
     762             :   const char *getRegPressureSetName(unsigned Idx) const override;
     763             :   unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
     764             :   const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
     765             :   const int *getRegUnitPressureSets(unsigned RegUnit) const override;
     766             :   ArrayRef<const char *> getRegMaskNames() const override;
     767             :   ArrayRef<const uint32_t *> getRegMasks() const override;
     768             :   /// Devirtualized TargetFrameLowering.
     769             :   static const NVPTXFrameLowering *getFrameLowering(
     770             :       const MachineFunction &MF);
     771             : };
     772             : 
     773             : namespace NVPTX { // Register classes
     774             :   extern const TargetRegisterClass Int1RegsRegClass;
     775             :   extern const TargetRegisterClass Float16RegsRegClass;
     776             :   extern const TargetRegisterClass Int16RegsRegClass;
     777             :   extern const TargetRegisterClass SpecialRegsRegClass;
     778             :   extern const TargetRegisterClass Float16x2RegsRegClass;
     779             :   extern const TargetRegisterClass Float32ArgRegsRegClass;
     780             :   extern const TargetRegisterClass Float32RegsRegClass;
     781             :   extern const TargetRegisterClass Int32ArgRegsRegClass;
     782             :   extern const TargetRegisterClass Int32RegsRegClass;
     783             :   extern const TargetRegisterClass Float64ArgRegsRegClass;
     784             :   extern const TargetRegisterClass Float64RegsRegClass;
     785             :   extern const TargetRegisterClass Int64ArgRegsRegClass;
     786             :   extern const TargetRegisterClass Int64RegsRegClass;
     787             : } // end namespace NVPTX
     788             : 
     789             : } // end namespace llvm
     790             : 
     791             : #endif // GET_REGINFO_HEADER
     792             : 
     793             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
     794             : |*                                                                            *|
     795             : |* Target Register and Register Classes Information                           *|
     796             : |*                                                                            *|
     797             : |* Automatically generated file, do not edit!                                 *|
     798             : |*                                                                            *|
     799             : \*===----------------------------------------------------------------------===*/
     800             : 
     801             : 
     802             : #ifdef GET_REGINFO_TARGET_DESC
     803             : #undef GET_REGINFO_TARGET_DESC
     804             : 
     805             : namespace llvm {
     806             : 
     807             : extern const MCRegisterClass NVPTXMCRegisterClasses[];
     808             : 
     809             : static const MVT::SimpleValueType VTLists[] = {
     810             :   /* 0 */ MVT::i1, MVT::Other,
     811             :   /* 2 */ MVT::i16, MVT::Other,
     812             :   /* 4 */ MVT::i32, MVT::Other,
     813             :   /* 6 */ MVT::i64, MVT::Other,
     814             :   /* 8 */ MVT::f16, MVT::Other,
     815             :   /* 10 */ MVT::f32, MVT::Other,
     816             :   /* 12 */ MVT::f64, MVT::Other,
     817             :   /* 14 */ MVT::v2f16, MVT::Other,
     818             : };
     819             : 
     820             : static const char *const SubRegIndexNameTable[] = { "" };
     821             : 
     822             : 
     823             : static const LaneBitmask SubRegIndexLaneMaskTable[] = {
     824             :   LaneBitmask::getAll(),
     825             :  };
     826             : 
     827             : 
     828             : 
     829             : static const TargetRegisterInfo::RegClassInfo RegClassInfos[] = {
     830             :   // Mode = 0 (Default)
     831             :   { 1, 1, 8, VTLists+0 },    // Int1Regs
     832             :   { 16, 16, 16, VTLists+8 },    // Float16Regs
     833             :   { 16, 16, 16, VTLists+2 },    // Int16Regs
     834             :   { 32, 32, 32, VTLists+4 },    // SpecialRegs
     835             :   { 32, 32, 32, VTLists+14 },    // Float16x2Regs
     836             :   { 32, 32, 32, VTLists+10 },    // Float32ArgRegs
     837             :   { 32, 32, 32, VTLists+10 },    // Float32Regs
     838             :   { 32, 32, 32, VTLists+4 },    // Int32ArgRegs
     839             :   { 32, 32, 32, VTLists+4 },    // Int32Regs
     840             :   { 64, 64, 64, VTLists+12 },    // Float64ArgRegs
     841             :   { 64, 64, 64, VTLists+12 },    // Float64Regs
     842             :   { 64, 64, 64, VTLists+6 },    // Int64ArgRegs
     843             :   { 64, 64, 64, VTLists+6 },    // Int64Regs
     844             : };
     845             : 
     846             : static const TargetRegisterClass *const NullRegClasses[] = { nullptr };
     847             : 
     848             : static const uint32_t Int1RegsSubClassMask[] = {
     849             :   0x00000001, 
     850             : };
     851             : 
     852             : static const uint32_t Float16RegsSubClassMask[] = {
     853             :   0x00000002, 
     854             : };
     855             : 
     856             : static const uint32_t Int16RegsSubClassMask[] = {
     857             :   0x00000004, 
     858             : };
     859             : 
     860             : static const uint32_t SpecialRegsSubClassMask[] = {
     861             :   0x00000008, 
     862             : };
     863             : 
     864             : static const uint32_t Float16x2RegsSubClassMask[] = {
     865             :   0x00000010, 
     866             : };
     867             : 
     868             : static const uint32_t Float32ArgRegsSubClassMask[] = {
     869             :   0x00000020, 
     870             : };
     871             : 
     872             : static const uint32_t Float32RegsSubClassMask[] = {
     873             :   0x00000040, 
     874             : };
     875             : 
     876             : static const uint32_t Int32ArgRegsSubClassMask[] = {
     877             :   0x00000080, 
     878             : };
     879             : 
     880             : static const uint32_t Int32RegsSubClassMask[] = {
     881             :   0x00000100, 
     882             : };
     883             : 
     884             : static const uint32_t Float64ArgRegsSubClassMask[] = {
     885             :   0x00000200, 
     886             : };
     887             : 
     888             : static const uint32_t Float64RegsSubClassMask[] = {
     889             :   0x00000400, 
     890             : };
     891             : 
     892             : static const uint32_t Int64ArgRegsSubClassMask[] = {
     893             :   0x00000800, 
     894             : };
     895             : 
     896             : static const uint32_t Int64RegsSubClassMask[] = {
     897             :   0x00001000, 
     898             : };
     899             : 
     900             : static const uint16_t SuperRegIdxSeqs[] = {
     901             :   /* 0 */ 0,
     902             : };
     903             : 
     904             : 
     905             : namespace NVPTX {   // Register class instances
     906             :   extern const TargetRegisterClass Int1RegsRegClass = {
     907             :     &NVPTXMCRegisterClasses[Int1RegsRegClassID],
     908             :     Int1RegsSubClassMask,
     909             :     SuperRegIdxSeqs + 0,
     910             :     LaneBitmask(0x00000001),
     911             :     0,
     912             :     false, /* HasDisjunctSubRegs */
     913             :     false, /* CoveredBySubRegs */
     914             :     NullRegClasses,
     915             :     nullptr
     916             :   };
     917             : 
     918             :   extern const TargetRegisterClass Float16RegsRegClass = {
     919             :     &NVPTXMCRegisterClasses[Float16RegsRegClassID],
     920             :     Float16RegsSubClassMask,
     921             :     SuperRegIdxSeqs + 0,
     922             :     LaneBitmask(0x00000001),
     923             :     0,
     924             :     false, /* HasDisjunctSubRegs */
     925             :     false, /* CoveredBySubRegs */
     926             :     NullRegClasses,
     927             :     nullptr
     928             :   };
     929             : 
     930             :   extern const TargetRegisterClass Int16RegsRegClass = {
     931             :     &NVPTXMCRegisterClasses[Int16RegsRegClassID],
     932             :     Int16RegsSubClassMask,
     933             :     SuperRegIdxSeqs + 0,
     934             :     LaneBitmask(0x00000001),
     935             :     0,
     936             :     false, /* HasDisjunctSubRegs */
     937             :     false, /* CoveredBySubRegs */
     938             :     NullRegClasses,
     939             :     nullptr
     940             :   };
     941             : 
     942             :   extern const TargetRegisterClass SpecialRegsRegClass = {
     943             :     &NVPTXMCRegisterClasses[SpecialRegsRegClassID],
     944             :     SpecialRegsSubClassMask,
     945             :     SuperRegIdxSeqs + 0,
     946             :     LaneBitmask(0x00000001),
     947             :     0,
     948             :     false, /* HasDisjunctSubRegs */
     949             :     false, /* CoveredBySubRegs */
     950             :     NullRegClasses,
     951             :     nullptr
     952             :   };
     953             : 
     954             :   extern const TargetRegisterClass Float16x2RegsRegClass = {
     955             :     &NVPTXMCRegisterClasses[Float16x2RegsRegClassID],
     956             :     Float16x2RegsSubClassMask,
     957             :     SuperRegIdxSeqs + 0,
     958             :     LaneBitmask(0x00000001),
     959             :     0,
     960             :     false, /* HasDisjunctSubRegs */
     961             :     false, /* CoveredBySubRegs */
     962             :     NullRegClasses,
     963             :     nullptr
     964             :   };
     965             : 
     966             :   extern const TargetRegisterClass Float32ArgRegsRegClass = {
     967             :     &NVPTXMCRegisterClasses[Float32ArgRegsRegClassID],
     968             :     Float32ArgRegsSubClassMask,
     969             :     SuperRegIdxSeqs + 0,
     970             :     LaneBitmask(0x00000001),
     971             :     0,
     972             :     false, /* HasDisjunctSubRegs */
     973             :     false, /* CoveredBySubRegs */
     974             :     NullRegClasses,
     975             :     nullptr
     976             :   };
     977             : 
     978             :   extern const TargetRegisterClass Float32RegsRegClass = {
     979             :     &NVPTXMCRegisterClasses[Float32RegsRegClassID],
     980             :     Float32RegsSubClassMask,
     981             :     SuperRegIdxSeqs + 0,
     982             :     LaneBitmask(0x00000001),
     983             :     0,
     984             :     false, /* HasDisjunctSubRegs */
     985             :     false, /* CoveredBySubRegs */
     986             :     NullRegClasses,
     987             :     nullptr
     988             :   };
     989             : 
     990             :   extern const TargetRegisterClass Int32ArgRegsRegClass = {
     991             :     &NVPTXMCRegisterClasses[Int32ArgRegsRegClassID],
     992             :     Int32ArgRegsSubClassMask,
     993             :     SuperRegIdxSeqs + 0,
     994             :     LaneBitmask(0x00000001),
     995             :     0,
     996             :     false, /* HasDisjunctSubRegs */
     997             :     false, /* CoveredBySubRegs */
     998             :     NullRegClasses,
     999             :     nullptr
    1000             :   };
    1001             : 
    1002             :   extern const TargetRegisterClass Int32RegsRegClass = {
    1003             :     &NVPTXMCRegisterClasses[Int32RegsRegClassID],
    1004             :     Int32RegsSubClassMask,
    1005             :     SuperRegIdxSeqs + 0,
    1006             :     LaneBitmask(0x00000001),
    1007             :     0,
    1008             :     false, /* HasDisjunctSubRegs */
    1009             :     false, /* CoveredBySubRegs */
    1010             :     NullRegClasses,
    1011             :     nullptr
    1012             :   };
    1013             : 
    1014             :   extern const TargetRegisterClass Float64ArgRegsRegClass = {
    1015             :     &NVPTXMCRegisterClasses[Float64ArgRegsRegClassID],
    1016             :     Float64ArgRegsSubClassMask,
    1017             :     SuperRegIdxSeqs + 0,
    1018             :     LaneBitmask(0x00000001),
    1019             :     0,
    1020             :     false, /* HasDisjunctSubRegs */
    1021             :     false, /* CoveredBySubRegs */
    1022             :     NullRegClasses,
    1023             :     nullptr
    1024             :   };
    1025             : 
    1026             :   extern const TargetRegisterClass Float64RegsRegClass = {
    1027             :     &NVPTXMCRegisterClasses[Float64RegsRegClassID],
    1028             :     Float64RegsSubClassMask,
    1029             :     SuperRegIdxSeqs + 0,
    1030             :     LaneBitmask(0x00000001),
    1031             :     0,
    1032             :     false, /* HasDisjunctSubRegs */
    1033             :     false, /* CoveredBySubRegs */
    1034             :     NullRegClasses,
    1035             :     nullptr
    1036             :   };
    1037             : 
    1038             :   extern const TargetRegisterClass Int64ArgRegsRegClass = {
    1039             :     &NVPTXMCRegisterClasses[Int64ArgRegsRegClassID],
    1040             :     Int64ArgRegsSubClassMask,
    1041             :     SuperRegIdxSeqs + 0,
    1042             :     LaneBitmask(0x00000001),
    1043             :     0,
    1044             :     false, /* HasDisjunctSubRegs */
    1045             :     false, /* CoveredBySubRegs */
    1046             :     NullRegClasses,
    1047             :     nullptr
    1048             :   };
    1049             : 
    1050             :   extern const TargetRegisterClass Int64RegsRegClass = {
    1051             :     &NVPTXMCRegisterClasses[Int64RegsRegClassID],
    1052             :     Int64RegsSubClassMask,
    1053             :     SuperRegIdxSeqs + 0,
    1054             :     LaneBitmask(0x00000001),
    1055             :     0,
    1056             :     false, /* HasDisjunctSubRegs */
    1057             :     false, /* CoveredBySubRegs */
    1058             :     NullRegClasses,
    1059             :     nullptr
    1060             :   };
    1061             : 
    1062             : } // end namespace NVPTX
    1063             : 
    1064             : namespace {
    1065             :   const TargetRegisterClass* const RegisterClasses[] = {
    1066             :     &NVPTX::Int1RegsRegClass,
    1067             :     &NVPTX::Float16RegsRegClass,
    1068             :     &NVPTX::Int16RegsRegClass,
    1069             :     &NVPTX::SpecialRegsRegClass,
    1070             :     &NVPTX::Float16x2RegsRegClass,
    1071             :     &NVPTX::Float32ArgRegsRegClass,
    1072             :     &NVPTX::Float32RegsRegClass,
    1073             :     &NVPTX::Int32ArgRegsRegClass,
    1074             :     &NVPTX::Int32RegsRegClass,
    1075             :     &NVPTX::Float64ArgRegsRegClass,
    1076             :     &NVPTX::Float64RegsRegClass,
    1077             :     &NVPTX::Int64ArgRegsRegClass,
    1078             :     &NVPTX::Int64RegsRegClass,
    1079             :   };
    1080             : } // end anonymous namespace
    1081             : 
    1082             : static const TargetRegisterInfoDesc NVPTXRegInfoDesc[] = { // Extra Descriptors
    1083             :   { 0, false },
    1084             :   { 0, true },
    1085             :   { 0, true },
    1086             :   { 0, true },
    1087             :   { 0, true },
    1088             :   { 0, true },
    1089             :   { 0, true },
    1090             :   { 0, true },
    1091             :   { 0, true },
    1092             :   { 0, true },
    1093             :   { 0, true },
    1094             :   { 0, true },
    1095             :   { 0, true },
    1096             :   { 0, true },
    1097             :   { 0, true },
    1098             :   { 0, true },
    1099             :   { 0, true },
    1100             :   { 0, true },
    1101             :   { 0, true },
    1102             :   { 0, true },
    1103             :   { 0, true },
    1104             :   { 0, true },
    1105             :   { 0, true },
    1106             :   { 0, true },
    1107             :   { 0, true },
    1108             :   { 0, true },
    1109             :   { 0, true },
    1110             :   { 0, true },
    1111             :   { 0, true },
    1112             :   { 0, true },
    1113             :   { 0, true },
    1114             :   { 0, true },
    1115             :   { 0, true },
    1116             :   { 0, true },
    1117             :   { 0, true },
    1118             :   { 0, true },
    1119             :   { 0, true },
    1120             :   { 0, true },
    1121             :   { 0, true },
    1122             :   { 0, true },
    1123             :   { 0, true },
    1124             :   { 0, true },
    1125             :   { 0, true },
    1126             :   { 0, true },
    1127             :   { 0, true },
    1128             :   { 0, true },
    1129             :   { 0, true },
    1130             :   { 0, true },
    1131             :   { 0, true },
    1132             :   { 0, true },
    1133             :   { 0, true },
    1134             :   { 0, true },
    1135             :   { 0, true },
    1136             :   { 0, true },
    1137             :   { 0, true },
    1138             :   { 0, true },
    1139             :   { 0, true },
    1140             :   { 0, true },
    1141             :   { 0, true },
    1142             :   { 0, true },
    1143             :   { 0, true },
    1144             :   { 0, true },
    1145             :   { 0, true },
    1146             :   { 0, true },
    1147             :   { 0, true },
    1148             :   { 0, true },
    1149             :   { 0, true },
    1150             :   { 0, true },
    1151             :   { 0, true },
    1152             :   { 0, true },
    1153             :   { 0, true },
    1154             :   { 0, true },
    1155             :   { 0, true },
    1156             :   { 0, true },
    1157             :   { 0, true },
    1158             :   { 0, true },
    1159             :   { 0, true },
    1160             :   { 0, true },
    1161             :   { 0, true },
    1162             :   { 0, true },
    1163             :   { 0, true },
    1164             :   { 0, true },
    1165             :   { 0, true },
    1166             :   { 0, true },
    1167             :   { 0, true },
    1168             :   { 0, true },
    1169             :   { 0, true },
    1170             :   { 0, true },
    1171             :   { 0, true },
    1172             :   { 0, true },
    1173             :   { 0, true },
    1174             :   { 0, true },
    1175             :   { 0, true },
    1176             :   { 0, true },
    1177             :   { 0, true },
    1178             :   { 0, true },
    1179             : };
    1180             : /// Get the weight in units of pressure for this register class.
    1181         140 : const RegClassWeight &NVPTXGenRegisterInfo::
    1182             : getRegClassWeight(const TargetRegisterClass *RC) const {
    1183             :   static const RegClassWeight RCWeightTable[] = {
    1184             :     {1, 5},     // Int1Regs
    1185             :     {1, 5},     // Float16Regs
    1186             :     {1, 5},     // Int16Regs
    1187             :     {1, 35},    // SpecialRegs
    1188             :     {1, 5},     // Float16x2Regs
    1189             :     {1, 5},     // Float32ArgRegs
    1190             :     {1, 5},     // Float32Regs
    1191             :     {1, 5},     // Int32ArgRegs
    1192             :     {1, 5},     // Int32Regs
    1193             :     {1, 5},     // Float64ArgRegs
    1194             :     {1, 5},     // Float64Regs
    1195             :     {1, 5},     // Int64ArgRegs
    1196             :     {1, 5},     // Int64Regs
    1197             :   };
    1198         280 :   return RCWeightTable[RC->getID()];
    1199             : }
    1200             : 
    1201             : /// Get the weight in units of pressure for this register unit.
    1202           0 : unsigned NVPTXGenRegisterInfo::
    1203             : getRegUnitWeight(unsigned RegUnit) const {
    1204             :   assert(RegUnit < 95 && "invalid register unit");
    1205             :   // All register units have unit weight.
    1206           0 :   return 1;
    1207             : }
    1208             : 
    1209             : 
    1210             : // Get the number of dimensions of register pressure.
    1211        1210 : unsigned NVPTXGenRegisterInfo::getNumRegPressureSets() const {
    1212        1210 :   return 13;
    1213             : }
    1214             : 
    1215             : // Get the name of this register unit pressure set.
    1216           0 : const char *NVPTXGenRegisterInfo::
    1217             : getRegPressureSetName(unsigned Idx) const {
    1218             :   static const char *const PressureNameTable[] = {
    1219             :     "Int1Regs",
    1220             :     "Float16Regs",
    1221             :     "Int16Regs",
    1222             :     "Float16x2Regs",
    1223             :     "Float32ArgRegs",
    1224             :     "Float32Regs",
    1225             :     "Int32ArgRegs",
    1226             :     "Int32Regs",
    1227             :     "Float64ArgRegs",
    1228             :     "Float64Regs",
    1229             :     "Int64ArgRegs",
    1230             :     "Int64Regs",
    1231             :     "SpecialRegs",
    1232             :   };
    1233           0 :   return PressureNameTable[Idx];
    1234             : }
    1235             : 
    1236             : // Get the register unit pressure limit for this dimension.
    1237             : // This limit must be adjusted dynamically for reserved registers.
    1238       13468 : unsigned NVPTXGenRegisterInfo::
    1239             : getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const {
    1240             :   static const uint8_t PressureLimitTable[] = {
    1241             :     5,          // 0: Int1Regs
    1242             :     5,          // 1: Float16Regs
    1243             :     5,          // 2: Int16Regs
    1244             :     5,          // 3: Float16x2Regs
    1245             :     5,          // 4: Float32ArgRegs
    1246             :     5,          // 5: Float32Regs
    1247             :     5,          // 6: Int32ArgRegs
    1248             :     5,          // 7: Int32Regs
    1249             :     5,          // 8: Float64ArgRegs
    1250             :     5,          // 9: Float64Regs
    1251             :     5,          // 10: Int64ArgRegs
    1252             :     5,          // 11: Int64Regs
    1253             :     35,         // 12: SpecialRegs
    1254             :   };
    1255       13468 :   return PressureLimitTable[Idx];
    1256             : }
    1257             : 
    1258             : /// Table of pressure sets per register class or unit.
    1259             : static const int RCSetsTable[] = {
    1260             :   /* 0 */ 0, -1,
    1261             :   /* 2 */ 1, -1,
    1262             :   /* 4 */ 2, -1,
    1263             :   /* 6 */ 3, -1,
    1264             :   /* 8 */ 4, -1,
    1265             :   /* 10 */ 5, -1,
    1266             :   /* 12 */ 6, -1,
    1267             :   /* 14 */ 7, -1,
    1268             :   /* 16 */ 8, -1,
    1269             :   /* 18 */ 9, -1,
    1270             :   /* 20 */ 10, -1,
    1271             :   /* 22 */ 11, -1,
    1272             :   /* 24 */ 12, -1,
    1273             : };
    1274             : 
    1275             : /// Get the dimensions of register pressure impacted by this register class.
    1276             : /// Returns a -1 terminated array of pressure set IDs
    1277         113 : const int* NVPTXGenRegisterInfo::
    1278             : getRegClassPressureSets(const TargetRegisterClass *RC) const {
    1279             :   static const uint8_t RCSetStartTable[] = {
    1280             :     0,2,4,24,6,8,10,12,14,16,18,20,22,};
    1281         226 :   return &RCSetsTable[RCSetStartTable[RC->getID()]];
    1282             : }
    1283             : 
    1284             : /// Get the dimensions of register pressure impacted by this register unit.
    1285             : /// Returns a -1 terminated array of pressure set IDs
    1286           0 : const int* NVPTXGenRegisterInfo::
    1287             : getRegUnitPressureSets(unsigned RegUnit) const {
    1288             :   assert(RegUnit < 95 && "invalid register unit");
    1289             :   static const uint8_t RUSetStartTable[] = {
    1290             :     24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,10,10,10,10,10,18,18,18,18,18,2,2,2,2,2,6,6,6,6,6,0,0,0,0,0,14,14,14,14,14,22,22,22,22,22,4,4,4,4,4,16,16,16,16,16,8,8,8,8,8,12,12,12,12,12,20,20,20,20,20,};
    1291           0 :   return &RCSetsTable[RUSetStartTable[RegUnit]];
    1292             : }
    1293             : 
    1294             : extern const MCRegisterDesc NVPTXRegDesc[];
    1295             : extern const MCPhysReg NVPTXRegDiffLists[];
    1296             : extern const LaneBitmask NVPTXLaneMaskLists[];
    1297             : extern const char NVPTXRegStrings[];
    1298             : extern const char NVPTXRegClassStrings[];
    1299             : extern const MCPhysReg NVPTXRegUnitRoots[][2];
    1300             : extern const uint16_t NVPTXSubRegIdxLists[];
    1301             : extern const MCRegisterInfo::SubRegCoveredBits NVPTXSubRegIdxRanges[];
    1302             : extern const uint16_t NVPTXRegEncodingTable[];
    1303         655 : NVPTXGenRegisterInfo::
    1304             : NVPTXGenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour,
    1305         655 :       unsigned PC, unsigned HwMode)
    1306             :   : TargetRegisterInfo(NVPTXRegInfoDesc, RegisterClasses, RegisterClasses+13,
    1307             :              SubRegIndexNameTable, SubRegIndexLaneMaskTable,
    1308        1310 :              LaneBitmask(0xFFFFFFFF), RegClassInfos, HwMode) {
    1309             :   InitMCRegisterInfo(NVPTXRegDesc, 96, RA, PC,
    1310             :                      NVPTXMCRegisterClasses, 13,
    1311             :                      NVPTXRegUnitRoots,
    1312             :                      95,
    1313             :                      NVPTXRegDiffLists,
    1314             :                      NVPTXLaneMaskLists,
    1315             :                      NVPTXRegStrings,
    1316             :                      NVPTXRegClassStrings,
    1317             :                      NVPTXSubRegIdxLists,
    1318             :                      1,
    1319             :                      NVPTXSubRegIdxRanges,
    1320             :                      NVPTXRegEncodingTable);
    1321             : 
    1322         655 : }
    1323             : 
    1324             : 
    1325             : 
    1326           3 : ArrayRef<const uint32_t *> NVPTXGenRegisterInfo::getRegMasks() const {
    1327           3 :   return None;
    1328             : }
    1329             : 
    1330           0 : ArrayRef<const char *> NVPTXGenRegisterInfo::getRegMaskNames() const {
    1331           0 :   return None;
    1332             : }
    1333             : 
    1334             : const NVPTXFrameLowering *
    1335           0 : NVPTXGenRegisterInfo::getFrameLowering(const MachineFunction &MF) {
    1336             :   return static_cast<const NVPTXFrameLowering *>(
    1337           0 :       MF.getSubtarget().getFrameLowering());
    1338             : }
    1339             : 
    1340             : } // end namespace llvm
    1341             : 
    1342             : #endif // GET_REGINFO_TARGET_DESC
    1343             : 

Generated by: LCOV version 1.13