xref: /aosp_15_r20/external/llvm/lib/Target/Lanai/MCTargetDesc/LanaiBaseInfo.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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 Worker static 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