Home | History | Annotate | Download | only in AArch64
      1 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
      2 |*                                                                            *|
      3 |* Register Bank Source Fragments                                             *|
      4 |*                                                                            *|
      5 |* Automatically generated file, do not edit!                                 *|
      6 |*                                                                            *|
      7 \*===----------------------------------------------------------------------===*/
      8 
      9 #ifdef GET_REGBANK_DECLARATIONS
     10 #undef GET_REGBANK_DECLARATIONS
     11 namespace llvm {
     12 namespace AArch64 {
     13 enum {
     14   CCRegBankID,
     15   FPRRegBankID,
     16   GPRRegBankID,
     17   NumRegisterBanks,
     18 };
     19 } // end namespace AArch64
     20 } // end namespace llvm
     21 #endif // GET_REGBANK_DECLARATIONS
     22 
     23 #ifdef GET_TARGET_REGBANK_CLASS
     24 #undef GET_TARGET_REGBANK_CLASS
     25 private:
     26   static RegisterBank *RegBanks[];
     27 
     28 protected:
     29   AArch64GenRegisterBankInfo();
     30 
     31 #endif // GET_TARGET_REGBANK_CLASS
     32 
     33 #ifdef GET_TARGET_REGBANK_IMPL
     34 #undef GET_TARGET_REGBANK_IMPL
     35 namespace llvm {
     36 namespace AArch64 {
     37 const uint32_t CCRegBankCoverageData[] = {
     38     // 0-31
     39     (1u << (AArch64::CCRRegClassID - 0)) |
     40     0,
     41     // 32-63
     42     0,
     43     // 64-95
     44     0,
     45     // 96-127
     46     0,
     47 };
     48 const uint32_t FPRRegBankCoverageData[] = {
     49     // 0-31
     50     (1u << (AArch64::FPR8RegClassID - 0)) |
     51     (1u << (AArch64::FPR16RegClassID - 0)) |
     52     (1u << (AArch64::FPR32RegClassID - 0)) |
     53     (1u << (AArch64::FPR64RegClassID - 0)) |
     54     (1u << (AArch64::DDRegClassID - 0)) |
     55     (1u << (AArch64::FPR128RegClassID - 0)) |
     56     0,
     57     // 32-63
     58     (1u << (AArch64::DDDRegClassID - 32)) |
     59     (1u << (AArch64::DDDDRegClassID - 32)) |
     60     (1u << (AArch64::QQRegClassID - 32)) |
     61     (1u << (AArch64::QQQRegClassID - 32)) |
     62     (1u << (AArch64::FPR128_loRegClassID - 32)) |
     63     (1u << (AArch64::QQ_with_qsub0_in_FPR128_loRegClassID - 32)) |
     64     (1u << (AArch64::QQQ_with_qsub0_in_FPR128_loRegClassID - 32)) |
     65     (1u << (AArch64::QQ_with_qsub1_in_FPR128_loRegClassID - 32)) |
     66     (1u << (AArch64::QQ_with_qsub0_in_FPR128_lo_and_QQ_with_qsub1_in_FPR128_loRegClassID - 32)) |
     67     (1u << (AArch64::QQQ_with_qsub1_in_FPR128_loRegClassID - 32)) |
     68     (1u << (AArch64::QQQ_with_qsub0_in_FPR128_lo_and_QQQ_with_qsub1_in_FPR128_loRegClassID - 32)) |
     69     (1u << (AArch64::QQQ_with_qsub2_in_FPR128_loRegClassID - 32)) |
     70     (1u << (AArch64::QQQ_with_qsub1_in_FPR128_lo_and_QQQ_with_qsub2_in_FPR128_loRegClassID - 32)) |
     71     (1u << (AArch64::QQQ_with_qsub0_in_FPR128_lo_and_QQQ_with_qsub2_in_FPR128_loRegClassID - 32)) |
     72     0,
     73     // 64-95
     74     (1u << (AArch64::QQQQRegClassID - 64)) |
     75     (1u << (AArch64::QQQQ_with_qsub0_in_FPR128_loRegClassID - 64)) |
     76     (1u << (AArch64::QQQQ_with_qsub0_in_FPR128_lo_and_QQQQ_with_qsub1_in_FPR128_loRegClassID - 64)) |
     77     (1u << (AArch64::QQQQ_with_qsub0_in_FPR128_lo_and_QQQQ_with_qsub2_in_FPR128_loRegClassID - 64)) |
     78     (1u << (AArch64::QQQQ_with_qsub0_in_FPR128_lo_and_QQQQ_with_qsub3_in_FPR128_loRegClassID - 64)) |
     79     (1u << (AArch64::QQQQ_with_qsub1_in_FPR128_loRegClassID - 64)) |
     80     (1u << (AArch64::QQQQ_with_qsub1_in_FPR128_lo_and_QQQQ_with_qsub2_in_FPR128_loRegClassID - 64)) |
     81     (1u << (AArch64::QQQQ_with_qsub1_in_FPR128_lo_and_QQQQ_with_qsub3_in_FPR128_loRegClassID - 64)) |
     82     (1u << (AArch64::QQQQ_with_qsub2_in_FPR128_loRegClassID - 64)) |
     83     (1u << (AArch64::QQQQ_with_qsub2_in_FPR128_lo_and_QQQQ_with_qsub3_in_FPR128_loRegClassID - 64)) |
     84     (1u << (AArch64::QQQQ_with_qsub3_in_FPR128_loRegClassID - 64)) |
     85     0,
     86     // 96-127
     87     0,
     88 };
     89 const uint32_t GPRRegBankCoverageData[] = {
     90     // 0-31
     91     (1u << (AArch64::GPR64allRegClassID - 0)) |
     92     (1u << (AArch64::GPR32allRegClassID - 0)) |
     93     (1u << (AArch64::GPR64RegClassID - 0)) |
     94     (1u << (AArch64::GPR32RegClassID - 0)) |
     95     (1u << (AArch64::GPR64commonRegClassID - 0)) |
     96     (1u << (AArch64::GPR32spRegClassID - 0)) |
     97     (1u << (AArch64::GPR32commonRegClassID - 0)) |
     98     (1u << (AArch64::tcGPR64RegClassID - 0)) |
     99     (1u << (AArch64::GPR64spRegClassID - 0)) |
    100     (1u << (AArch64::GPR64sponlyRegClassID - 0)) |
    101     (1u << (AArch64::GPR32sponlyRegClassID - 0)) |
    102     0,
    103     // 32-63
    104     0,
    105     // 64-95
    106     0,
    107     // 96-127
    108     0,
    109 };
    110 
    111 RegisterBank CCRegBank(/* ID */ AArch64::CCRegBankID, /* Name */ "CC", /* Size */ 32, /* CoveredRegClasses */ CCRegBankCoverageData, /* NumRegClasses */ 100);
    112 RegisterBank FPRRegBank(/* ID */ AArch64::FPRRegBankID, /* Name */ "FPR", /* Size */ 512, /* CoveredRegClasses */ FPRRegBankCoverageData, /* NumRegClasses */ 100);
    113 RegisterBank GPRRegBank(/* ID */ AArch64::GPRRegBankID, /* Name */ "GPR", /* Size */ 64, /* CoveredRegClasses */ GPRRegBankCoverageData, /* NumRegClasses */ 100);
    114 } // end namespace AArch64
    115 
    116 RegisterBank *AArch64GenRegisterBankInfo::RegBanks[] = {
    117     &AArch64::CCRegBank,
    118     &AArch64::FPRRegBank,
    119     &AArch64::GPRRegBank,
    120 };
    121 
    122 AArch64GenRegisterBankInfo::AArch64GenRegisterBankInfo()
    123     : RegisterBankInfo(RegBanks, AArch64::NumRegisterBanks) {
    124   // Assert that RegBank indices match their ID's
    125 #ifndef NDEBUG
    126   unsigned Index = 0;
    127   for (const auto &RB : RegBanks)
    128     assert(Index++ == RB->getID() && "Index != ID");
    129 #endif // NDEBUG
    130 }
    131 } // end namespace llvm
    132 #endif // GET_TARGET_REGBANK_IMPL
    133