1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Register Information Header Fragment *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#include "llvm/CodeGen/TargetRegisterInfo.h"
10
11namespace llvm {
12
13class X86FrameLowering;
14
15struct X86GenRegisterInfo : public TargetRegisterInfo {
16 explicit X86GenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
17 unsigned PC = 0, unsigned HwMode = 0);
18 unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override;
19 unsigned reverseComposeSubRegIndicesImpl(unsigned, unsigned) const override;
20 LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
21 LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
22 const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass *, unsigned) const override;
23 const TargetRegisterClass *getSubRegisterClass(const TargetRegisterClass *, unsigned) const override;
24 const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
25 unsigned getRegUnitWeight(MCRegUnit RegUnit) const override;
26 unsigned getNumRegPressureSets() const override;
27 const char *getRegPressureSetName(unsigned Idx) const override;
28 unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
29 const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
30 const int *getRegUnitPressureSets(MCRegUnit RegUnit) const override;
31 ArrayRef<const char *> getRegMaskNames() const override;
32 ArrayRef<const uint32_t *> getRegMasks() const override;
33 bool isGeneralPurposeRegister(const MachineFunction &, MCRegister) const override;
34 bool isGeneralPurposeRegisterClass(const TargetRegisterClass *RC) const override;
35 bool isFixedRegister(const MachineFunction &, MCRegister) const override;
36 bool isArgumentRegister(const MachineFunction &, MCRegister) const override;
37 bool isConstantPhysReg(MCRegister PhysReg) const override final;
38 /// Devirtualized TargetFrameLowering.
39 static const X86FrameLowering *getFrameLowering(
40 const MachineFunction &MF);
41 const TargetRegisterClass *getMinimalPhysRegClass(MCRegister Reg) const override;
42};
43
44namespace X86 {
45
46// Register classes
47 extern const TargetRegisterClass GR8RegClass;
48 extern const TargetRegisterClass GRH8RegClass;
49 extern const TargetRegisterClass GR8_NOREX2RegClass;
50 extern const TargetRegisterClass GR8_NOREXRegClass;
51 extern const TargetRegisterClass GR8_ABCD_HRegClass;
52 extern const TargetRegisterClass GR8_ABCD_LRegClass;
53 extern const TargetRegisterClass GRH16RegClass;
54 extern const TargetRegisterClass GR16RegClass;
55 extern const TargetRegisterClass GR16_NOREX2RegClass;
56 extern const TargetRegisterClass GR16_NOREXRegClass;
57 extern const TargetRegisterClass VK1RegClass;
58 extern const TargetRegisterClass VK16RegClass;
59 extern const TargetRegisterClass VK2RegClass;
60 extern const TargetRegisterClass VK4RegClass;
61 extern const TargetRegisterClass VK8RegClass;
62 extern const TargetRegisterClass VK16WMRegClass;
63 extern const TargetRegisterClass VK1WMRegClass;
64 extern const TargetRegisterClass VK2WMRegClass;
65 extern const TargetRegisterClass VK4WMRegClass;
66 extern const TargetRegisterClass VK8WMRegClass;
67 extern const TargetRegisterClass SEGMENT_REGRegClass;
68 extern const TargetRegisterClass GR16_ABCDRegClass;
69 extern const TargetRegisterClass FPCCRRegClass;
70 extern const TargetRegisterClass FR16XRegClass;
71 extern const TargetRegisterClass FR16RegClass;
72 extern const TargetRegisterClass VK16PAIRRegClass;
73 extern const TargetRegisterClass VK1PAIRRegClass;
74 extern const TargetRegisterClass VK2PAIRRegClass;
75 extern const TargetRegisterClass VK4PAIRRegClass;
76 extern const TargetRegisterClass VK8PAIRRegClass;
77 extern const TargetRegisterClass VK1PAIR_with_sub_mask_0_in_VK1WMRegClass;
78 extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBPRegClass;
79 extern const TargetRegisterClass LOW32_ADDR_ACCESSRegClass;
80 extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bitRegClass;
81 extern const TargetRegisterClass FR32XRegClass;
82 extern const TargetRegisterClass GR32RegClass;
83 extern const TargetRegisterClass GR32_NOSPRegClass;
84 extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREX2RegClass;
85 extern const TargetRegisterClass DEBUG_REGRegClass;
86 extern const TargetRegisterClass FR32RegClass;
87 extern const TargetRegisterClass GR32_NOREX2RegClass;
88 extern const TargetRegisterClass GR32_NOREX2_NOSPRegClass;
89 extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_16bit_in_GR16_NOREXRegClass;
90 extern const TargetRegisterClass GR32_NOREXRegClass;
91 extern const TargetRegisterClass VK32RegClass;
92 extern const TargetRegisterClass GR32_NOREX_NOSPRegClass;
93 extern const TargetRegisterClass RFP32RegClass;
94 extern const TargetRegisterClass VK32WMRegClass;
95 extern const TargetRegisterClass GR32_ABCDRegClass;
96 extern const TargetRegisterClass GR32_TCRegClass;
97 extern const TargetRegisterClass GR32_ABCD_and_GR32_TCRegClass;
98 extern const TargetRegisterClass GR32_ADRegClass;
99 extern const TargetRegisterClass GR32_ArgRefRegClass;
100 extern const TargetRegisterClass GR32_BPSPRegClass;
101 extern const TargetRegisterClass GR32_BSIRegClass;
102 extern const TargetRegisterClass GR32_CBRegClass;
103 extern const TargetRegisterClass GR32_DCRegClass;
104 extern const TargetRegisterClass GR32_DIBPRegClass;
105 extern const TargetRegisterClass GR32_SIDIRegClass;
106 extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_32bitRegClass;
107 extern const TargetRegisterClass CCRRegClass;
108 extern const TargetRegisterClass DFCCRRegClass;
109 extern const TargetRegisterClass GR32_ABCD_and_GR32_BSIRegClass;
110 extern const TargetRegisterClass GR32_AD_and_GR32_ArgRefRegClass;
111 extern const TargetRegisterClass GR32_ArgRef_and_GR32_CBRegClass;
112 extern const TargetRegisterClass GR32_BPSP_and_GR32_DIBPRegClass;
113 extern const TargetRegisterClass GR32_BPSP_and_GR32_TCRegClass;
114 extern const TargetRegisterClass GR32_BSI_and_GR32_SIDIRegClass;
115 extern const TargetRegisterClass GR32_DIBP_and_GR32_SIDIRegClass;
116 extern const TargetRegisterClass LOW32_ADDR_ACCESS_RBP_with_sub_8bit_with_sub_32bitRegClass;
117 extern const TargetRegisterClass LOW32_ADDR_ACCESS_with_sub_32bitRegClass;
118 extern const TargetRegisterClass RFP64RegClass;
119 extern const TargetRegisterClass GR64RegClass;
120 extern const TargetRegisterClass FR64XRegClass;
121 extern const TargetRegisterClass GR64_with_sub_8bitRegClass;
122 extern const TargetRegisterClass GR64_NOSPRegClass;
123 extern const TargetRegisterClass GR64_NOREX2RegClass;
124 extern const TargetRegisterClass CONTROL_REGRegClass;
125 extern const TargetRegisterClass FR64RegClass;
126 extern const TargetRegisterClass GR64_with_sub_16bit_in_GR16_NOREX2RegClass;
127 extern const TargetRegisterClass GR64_NOREX2_NOSPRegClass;
128 extern const TargetRegisterClass GR64PLTSafeRegClass;
129 extern const TargetRegisterClass GR64_TCRegClass;
130 extern const TargetRegisterClass GR64_NOREXRegClass;
131 extern const TargetRegisterClass GR64_TCW64RegClass;
132 extern const TargetRegisterClass GR64_TC_with_sub_8bitRegClass;
133 extern const TargetRegisterClass GR64_NOREX2_NOSP_and_GR64_TCRegClass;
134 extern const TargetRegisterClass GR64_TCW64_with_sub_8bitRegClass;
135 extern const TargetRegisterClass GR64_TC_and_GR64_TCW64RegClass;
136 extern const TargetRegisterClass GR64_with_sub_16bit_in_GR16_NOREXRegClass;
137 extern const TargetRegisterClass VK64RegClass;
138 extern const TargetRegisterClass VR64RegClass;
139 extern const TargetRegisterClass GR64PLTSafe_and_GR64_TCRegClass;
140 extern const TargetRegisterClass GR64_NOREX2_NOSP_and_GR64_TCW64RegClass;
141 extern const TargetRegisterClass GR64_NOREX_NOSPRegClass;
142 extern const TargetRegisterClass GR64_NOREX_and_GR64_TCRegClass;
143 extern const TargetRegisterClass GR64_TCW64_and_GR64_TC_with_sub_8bitRegClass;
144 extern const TargetRegisterClass VK64WMRegClass;
145 extern const TargetRegisterClass GR64_TC_and_GR64_NOREX2_NOSP_and_GR64_TCW64RegClass;
146 extern const TargetRegisterClass GR64_TC_and_GR64_with_sub_16bit_in_GR16_NOREXRegClass;
147 extern const TargetRegisterClass GR64PLTSafe_and_GR64_TCW64RegClass;
148 extern const TargetRegisterClass GR64_NOREX_and_GR64PLTSafe_and_GR64_TCRegClass;
149 extern const TargetRegisterClass GR64_NOREX_and_GR64_TCW64RegClass;
150 extern const TargetRegisterClass GR64_ABCDRegClass;
151 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_TCRegClass;
152 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_TCRegClass;
153 extern const TargetRegisterClass GR64_ADRegClass;
154 extern const TargetRegisterClass GR64_ArgRefRegClass;
155 extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESS_RBPRegClass;
156 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_ArgRefRegClass;
157 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BPSPRegClass;
158 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BSIRegClass;
159 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_CBRegClass;
160 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DIBPRegClass;
161 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_SIDIRegClass;
162 extern const TargetRegisterClass GR64_ARegClass;
163 extern const TargetRegisterClass GR64_ArgRef_and_GR64_TCRegClass;
164 extern const TargetRegisterClass GR64_and_LOW32_ADDR_ACCESSRegClass;
165 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_ABCD_and_GR32_BSIRegClass;
166 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_AD_and_GR32_ArgRefRegClass;
167 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_ArgRef_and_GR32_CBRegClass;
168 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_DIBPRegClass;
169 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BPSP_and_GR32_TCRegClass;
170 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_BSI_and_GR32_SIDIRegClass;
171 extern const TargetRegisterClass GR64_with_sub_32bit_in_GR32_DIBP_and_GR32_SIDIRegClass;
172 extern const TargetRegisterClass RSTRegClass;
173 extern const TargetRegisterClass RFP80RegClass;
174 extern const TargetRegisterClass RFP80_7RegClass;
175 extern const TargetRegisterClass VR128XRegClass;
176 extern const TargetRegisterClass VR128RegClass;
177 extern const TargetRegisterClass VR256XRegClass;
178 extern const TargetRegisterClass VR256RegClass;
179 extern const TargetRegisterClass VR512RegClass;
180 extern const TargetRegisterClass VR512_0_15RegClass;
181 extern const TargetRegisterClass TILERegClass;
182
183} // namespace X86
184
185} // namespace llvm
186