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