Home | History | Annotate | Download | only in MCTargetDesc
      1 //===-- LanaiBaseInfo.h - Top level definitions for Lanai MC ----*- C++ -*-===//
      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 // This file contains small standalone helper functions and enum definitions for
     11 // the Lanai target useful for the compiler back-end and the MC libraries.
     12 //
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H
     16 #define LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H
     17 
     18 #include "LanaiMCTargetDesc.h"
     19 #include "llvm/MC/MCExpr.h"
     20 #include "llvm/Support/DataTypes.h"
     21 #include "llvm/Support/ErrorHandling.h"
     22 
     23 namespace llvm {
     24 
     25 // LanaiII - This namespace holds all of the target specific flags that
     26 // instruction info tracks.
     27 namespace LanaiII {
     28 // Target Operand Flag enum.
     29 enum TOF {
     30   //===------------------------------------------------------------------===//
     31   // Lanai Specific MachineOperand flags.
     32   MO_NO_FLAG,
     33 
     34   // MO_ABS_HI/LO - Represents the hi or low part of an absolute symbol
     35   // address.
     36   MO_ABS_HI,
     37   MO_ABS_LO,
     38 };
     39 } // namespace LanaiII
     40 
     41 static inline unsigned getLanaiRegisterNumbering(unsigned Reg) {
     42   switch (Reg) {
     43   case Lanai::R0:
     44     return 0;
     45   case Lanai::R1:
     46     return 1;
     47   case Lanai::R2:
     48   case Lanai::PC:
     49     return 2;
     50   case Lanai::R3:
     51     return 3;
     52   case Lanai::R4:
     53   case Lanai::SP:
     54     return 4;
     55   case Lanai::R5:
     56   case Lanai::FP:
     57     return 5;
     58   case Lanai::R6:
     59     return 6;
     60   case Lanai::R7:
     61     return 7;
     62   case Lanai::R8:
     63   case Lanai::RV:
     64     return 8;
     65   case Lanai::R9:
     66     return 9;
     67   case Lanai::R10:
     68   case Lanai::RR1:
     69     return 10;
     70   case Lanai::R11:
     71   case Lanai::RR2:
     72     return 11;
     73   case Lanai::R12:
     74     return 12;
     75   case Lanai::R13:
     76     return 13;
     77   case Lanai::R14:
     78     return 14;
     79   case Lanai::R15:
     80   case Lanai::RCA:
     81     return 15;
     82   case Lanai::R16:
     83     return 16;
     84   case Lanai::R17:
     85     return 17;
     86   case Lanai::R18:
     87     return 18;
     88   case Lanai::R19:
     89     return 19;
     90   case Lanai::R20:
     91     return 20;
     92   case Lanai::R21:
     93     return 21;
     94   case Lanai::R22:
     95     return 22;
     96   case Lanai::R23:
     97     return 23;
     98   case Lanai::R24:
     99     return 24;
    100   case Lanai::R25:
    101     return 25;
    102   case Lanai::R26:
    103     return 26;
    104   case Lanai::R27:
    105     return 27;
    106   case Lanai::R28:
    107     return 28;
    108   case Lanai::R29:
    109     return 29;
    110   case Lanai::R30:
    111     return 30;
    112   case Lanai::R31:
    113     return 31;
    114   default:
    115     llvm_unreachable("Unknown register number!");
    116   }
    117 }
    118 } // namespace llvm
    119 #endif // LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H
    120