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 R600FrameLowering;
14
15extern const MCRegisterClassStorage<37, 2871, 4948, 122, 5, 39> R600MCRegisterClassStorage;
16
17struct R600GenRegisterInfo : public TargetRegisterInfo {
18 explicit R600GenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
19 unsigned PC = 0, unsigned HwMode = 0);
20 unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override;
21 unsigned reverseComposeSubRegIndicesImpl(unsigned, unsigned) const override;
22 LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
23 LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
24 const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass *, unsigned) const override;
25 const TargetRegisterClass *getSubRegisterClass(const TargetRegisterClass *, unsigned) const override;
26 const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
27 unsigned getRegUnitWeight(MCRegUnit RegUnit) const override;
28 unsigned getNumRegPressureSets() const override;
29 const char *getRegPressureSetName(unsigned Idx) const override;
30 unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
31 const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
32 const int *getRegUnitPressureSets(MCRegUnit RegUnit) const override;
33 ArrayRef<const char *> getRegMaskNames() const override;
34 ArrayRef<const uint32_t *> getRegMasks() const override;
35 bool isGeneralPurposeRegister(const MachineFunction &, MCRegister) const override;
36 bool isGeneralPurposeRegisterClass(const TargetRegisterClass *RC) const override;
37 bool isFixedRegister(const MachineFunction &, MCRegister) const override;
38 bool isArgumentRegister(const MachineFunction &, MCRegister) const override;
39 bool isConstantPhysReg(MCRegister PhysReg) const override final;
40 /// Devirtualized TargetFrameLowering.
41 static const R600FrameLowering *getFrameLowering(
42 const MachineFunction &MF);
43 const TargetRegisterClass *getMinimalPhysRegClass(MCRegister Reg) const override;
44};
45
46namespace R600 {
47
48// Register classes
49static constexpr const TargetRegisterClass &R600_Reg32RegClass = R600MCRegisterClassStorage.Classes[0];
50static constexpr const TargetRegisterClass &R600_TReg32RegClass = R600MCRegisterClassStorage.Classes[1];
51static constexpr const TargetRegisterClass &R600_TReg32_XRegClass = R600MCRegisterClassStorage.Classes[2];
52static constexpr const TargetRegisterClass &R600_AddrRegClass = R600MCRegisterClassStorage.Classes[3];
53static constexpr const TargetRegisterClass &R600_KC0RegClass = R600MCRegisterClassStorage.Classes[4];
54static constexpr const TargetRegisterClass &R600_KC1RegClass = R600MCRegisterClassStorage.Classes[5];
55static constexpr const TargetRegisterClass &R600_TReg32_WRegClass = R600MCRegisterClassStorage.Classes[6];
56static constexpr const TargetRegisterClass &R600_TReg32_YRegClass = R600MCRegisterClassStorage.Classes[7];
57static constexpr const TargetRegisterClass &R600_TReg32_ZRegClass = R600MCRegisterClassStorage.Classes[8];
58static constexpr const TargetRegisterClass &R600_ArrayBaseRegClass = R600MCRegisterClassStorage.Classes[9];
59static constexpr const TargetRegisterClass &R600_KC0_WRegClass = R600MCRegisterClassStorage.Classes[10];
60static constexpr const TargetRegisterClass &R600_KC0_XRegClass = R600MCRegisterClassStorage.Classes[11];
61static constexpr const TargetRegisterClass &R600_KC0_YRegClass = R600MCRegisterClassStorage.Classes[12];
62static constexpr const TargetRegisterClass &R600_KC0_ZRegClass = R600MCRegisterClassStorage.Classes[13];
63static constexpr const TargetRegisterClass &R600_KC1_WRegClass = R600MCRegisterClassStorage.Classes[14];
64static constexpr const TargetRegisterClass &R600_KC1_XRegClass = R600MCRegisterClassStorage.Classes[15];
65static constexpr const TargetRegisterClass &R600_KC1_YRegClass = R600MCRegisterClassStorage.Classes[16];
66static constexpr const TargetRegisterClass &R600_KC1_ZRegClass = R600MCRegisterClassStorage.Classes[17];
67static constexpr const TargetRegisterClass &R600_LDS_SRC_REGRegClass = R600MCRegisterClassStorage.Classes[18];
68static constexpr const TargetRegisterClass &R600_PredicateRegClass = R600MCRegisterClassStorage.Classes[19];
69static constexpr const TargetRegisterClass &R600_Addr_WRegClass = R600MCRegisterClassStorage.Classes[20];
70static constexpr const TargetRegisterClass &R600_Addr_YRegClass = R600MCRegisterClassStorage.Classes[21];
71static constexpr const TargetRegisterClass &R600_Addr_ZRegClass = R600MCRegisterClassStorage.Classes[22];
72static constexpr const TargetRegisterClass &R600_LDS_SRC_REG_and_R600_Reg32RegClass = R600MCRegisterClassStorage.Classes[23];
73static constexpr const TargetRegisterClass &R600_Predicate_BitRegClass = R600MCRegisterClassStorage.Classes[24];
74static constexpr const TargetRegisterClass &R600_Reg64RegClass = R600MCRegisterClassStorage.Classes[25];
75static constexpr const TargetRegisterClass &R600_Reg64VerticalRegClass = R600MCRegisterClassStorage.Classes[26];
76static constexpr const TargetRegisterClass &R600_Reg64Vertical_with_sub0_in_R600_TReg32_WRegClass = R600MCRegisterClassStorage.Classes[27];
77static constexpr const TargetRegisterClass &R600_Reg64Vertical_with_sub0_in_R600_TReg32_XRegClass = R600MCRegisterClassStorage.Classes[28];
78static constexpr const TargetRegisterClass &R600_Reg64Vertical_with_sub0_in_R600_TReg32_YRegClass = R600MCRegisterClassStorage.Classes[29];
79static constexpr const TargetRegisterClass &R600_Reg64Vertical_with_sub0_in_R600_TReg32_ZRegClass = R600MCRegisterClassStorage.Classes[30];
80static constexpr const TargetRegisterClass &R600_Reg128RegClass = R600MCRegisterClassStorage.Classes[31];
81static constexpr const TargetRegisterClass &R600_Reg128VerticalRegClass = R600MCRegisterClassStorage.Classes[32];
82static constexpr const TargetRegisterClass &R600_Reg128Vertical_with_sub0_in_R600_TReg32_WRegClass = R600MCRegisterClassStorage.Classes[33];
83static constexpr const TargetRegisterClass &R600_Reg128Vertical_with_sub0_in_R600_TReg32_XRegClass = R600MCRegisterClassStorage.Classes[34];
84static constexpr const TargetRegisterClass &R600_Reg128Vertical_with_sub0_in_R600_TReg32_YRegClass = R600MCRegisterClassStorage.Classes[35];
85static constexpr const TargetRegisterClass &R600_Reg128Vertical_with_sub0_in_R600_TReg32_ZRegClass = R600MCRegisterClassStorage.Classes[36];
86
87} // namespace R600
88
89} // namespace llvm
90