[X86][BMI] Pull out schedule classes from bmi_andn<> and bmi_bls<>
[llvm-core.git] / lib / Target / Lanai / MCTargetDesc / LanaiBaseInfo.h
blob1bc84014e7367f521aafac9a3058fb10a612ff93
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.
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H
15 #define LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H
17 #include "LanaiMCTargetDesc.h"
18 #include "llvm/MC/MCExpr.h"
19 #include "llvm/Support/DataTypes.h"
20 #include "llvm/Support/ErrorHandling.h"
22 namespace llvm {
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.
31 MO_NO_FLAG,
33 // MO_ABS_HI/LO - Represents the hi or low part of an absolute symbol
34 // address.
35 MO_ABS_HI,
36 MO_ABS_LO,
38 } // namespace LanaiII
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!");
117 } // namespace llvm
118 #endif // LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H