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