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 PPCFrameLowering;
14
15extern const MCRegisterClassStorage<56, 1270, 610, 356, 76, 54> PPCMCRegisterClassStorage;
16
17struct PPCGenRegisterInfo : public TargetRegisterInfo {
18 explicit PPCGenRegisterInfo(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 TargetRegisterClass *getLargestRegClassForRegPressureSet(unsigned Idx) const override;
32 const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
33 const int *getRegUnitPressureSets(MCRegUnit RegUnit) const override;
34 ArrayRef<const char *> getRegMaskNames() const override;
35 ArrayRef<const uint32_t *> getRegMasks() const override;
36 bool isGeneralPurposeRegister(const MachineFunction &, MCRegister) const override;
37 bool isGeneralPurposeRegisterClass(const TargetRegisterClass *RC) const override;
38 bool isFixedRegister(const MachineFunction &, MCRegister) const override;
39 bool isArgumentRegister(const MachineFunction &, MCRegister) const override;
40 bool isConstantPhysReg(MCRegister PhysReg) const override final;
41 /// Devirtualized TargetFrameLowering.
42 static const PPCFrameLowering *getFrameLowering(
43 const MachineFunction &MF);
44 ArrayRef<MCPhysReg> getRawAllocationOrder(const TargetRegisterClass &RC, const MachineFunction &MF, bool Rev) const override;
45 const TargetRegisterClass *getMinimalPhysRegClass(MCRegister Reg) const override;
46};
47
48namespace PPC {
49
50// Register classes
51static constexpr const TargetRegisterClass &VSSRCRegClass = PPCMCRegisterClassStorage.Classes[0];
52static constexpr const TargetRegisterClass &GPRCRegClass = PPCMCRegisterClassStorage.Classes[1];
53static constexpr const TargetRegisterClass &GPRC_NOR0RegClass = PPCMCRegisterClassStorage.Classes[2];
54static constexpr const TargetRegisterClass &GPRC_and_GPRC_NOR0RegClass = PPCMCRegisterClassStorage.Classes[3];
55static constexpr const TargetRegisterClass &CRBITRCRegClass = PPCMCRegisterClassStorage.Classes[4];
56static constexpr const TargetRegisterClass &F4RCRegClass = PPCMCRegisterClassStorage.Classes[5];
57static constexpr const TargetRegisterClass &GPRC32RegClass = PPCMCRegisterClassStorage.Classes[6];
58static constexpr const TargetRegisterClass &CRRCRegClass = PPCMCRegisterClassStorage.Classes[7];
59static constexpr const TargetRegisterClass &CARRYRCRegClass = PPCMCRegisterClassStorage.Classes[8];
60static constexpr const TargetRegisterClass &CTRRCRegClass = PPCMCRegisterClassStorage.Classes[9];
61static constexpr const TargetRegisterClass &LRRCRegClass = PPCMCRegisterClassStorage.Classes[10];
62static constexpr const TargetRegisterClass &VRSAVERCRegClass = PPCMCRegisterClassStorage.Classes[11];
63static constexpr const TargetRegisterClass &SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[12];
64static constexpr const TargetRegisterClass &VSFRCRegClass = PPCMCRegisterClassStorage.Classes[13];
65static constexpr const TargetRegisterClass &G8RCRegClass = PPCMCRegisterClassStorage.Classes[14];
66static constexpr const TargetRegisterClass &G8RC_NOX0RegClass = PPCMCRegisterClassStorage.Classes[15];
67static constexpr const TargetRegisterClass &SPILLTOVSRRC_and_VSFRCRegClass = PPCMCRegisterClassStorage.Classes[16];
68static constexpr const TargetRegisterClass &G8RC_and_G8RC_NOX0RegClass = PPCMCRegisterClassStorage.Classes[17];
69static constexpr const TargetRegisterClass &F8RCRegClass = PPCMCRegisterClassStorage.Classes[18];
70static constexpr const TargetRegisterClass &FHRCRegClass = PPCMCRegisterClassStorage.Classes[19];
71static constexpr const TargetRegisterClass &SPERCRegClass = PPCMCRegisterClassStorage.Classes[20];
72static constexpr const TargetRegisterClass &VFHRCRegClass = PPCMCRegisterClassStorage.Classes[21];
73static constexpr const TargetRegisterClass &VFRCRegClass = PPCMCRegisterClassStorage.Classes[22];
74static constexpr const TargetRegisterClass &SPERC_with_sub_32_in_GPRC_NOR0RegClass = PPCMCRegisterClassStorage.Classes[23];
75static constexpr const TargetRegisterClass &SPILLTOVSRRC_and_VFRCRegClass = PPCMCRegisterClassStorage.Classes[24];
76static constexpr const TargetRegisterClass &SPILLTOVSRRC_and_F4RCRegClass = PPCMCRegisterClassStorage.Classes[25];
77static constexpr const TargetRegisterClass &CTRRC8RegClass = PPCMCRegisterClassStorage.Classes[26];
78static constexpr const TargetRegisterClass &LR8RCRegClass = PPCMCRegisterClassStorage.Classes[27];
79static constexpr const TargetRegisterClass &DMRROWRCRegClass = PPCMCRegisterClassStorage.Classes[28];
80static constexpr const TargetRegisterClass &VSRCRegClass = PPCMCRegisterClassStorage.Classes[29];
81static constexpr const TargetRegisterClass &VSRC_with_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[30];
82static constexpr const TargetRegisterClass &VRRCRegClass = PPCMCRegisterClassStorage.Classes[31];
83static constexpr const TargetRegisterClass &VSLRCRegClass = PPCMCRegisterClassStorage.Classes[32];
84static constexpr const TargetRegisterClass &VRRC_with_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[33];
85static constexpr const TargetRegisterClass &FpRCRegClass = PPCMCRegisterClassStorage.Classes[34];
86static constexpr const TargetRegisterClass &G8pRCRegClass = PPCMCRegisterClassStorage.Classes[35];
87static constexpr const TargetRegisterClass &G8pRC_with_sub_32_in_GPRC_NOR0RegClass = PPCMCRegisterClassStorage.Classes[36];
88static constexpr const TargetRegisterClass &VSLRC_with_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[37];
89static constexpr const TargetRegisterClass &FpRC_with_sub_fp0_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[38];
90static constexpr const TargetRegisterClass &DMRROWpRCRegClass = PPCMCRegisterClassStorage.Classes[39];
91static constexpr const TargetRegisterClass &VSRpRCRegClass = PPCMCRegisterClassStorage.Classes[40];
92static constexpr const TargetRegisterClass &VSRpRC_with_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[41];
93static constexpr const TargetRegisterClass &VSRpRC_with_sub_64_in_F4RCRegClass = PPCMCRegisterClassStorage.Classes[42];
94static constexpr const TargetRegisterClass &VSRpRC_with_sub_64_in_VFRCRegClass = PPCMCRegisterClassStorage.Classes[43];
95static constexpr const TargetRegisterClass &VSRpRC_with_sub_64_in_SPILLTOVSRRC_and_VFRCRegClass = PPCMCRegisterClassStorage.Classes[44];
96static constexpr const TargetRegisterClass &VSRpRC_with_sub_64_in_SPILLTOVSRRC_and_F4RCRegClass = PPCMCRegisterClassStorage.Classes[45];
97static constexpr const TargetRegisterClass &ACCRCRegClass = PPCMCRegisterClassStorage.Classes[46];
98static constexpr const TargetRegisterClass &UACCRCRegClass = PPCMCRegisterClassStorage.Classes[47];
99static constexpr const TargetRegisterClass &WACCRCRegClass = PPCMCRegisterClassStorage.Classes[48];
100static constexpr const TargetRegisterClass &WACC_HIRCRegClass = PPCMCRegisterClassStorage.Classes[49];
101static constexpr const TargetRegisterClass &ACCRC_with_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[50];
102static constexpr const TargetRegisterClass &UACCRC_with_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[51];
103static constexpr const TargetRegisterClass &ACCRC_with_sub_pair1_then_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[52];
104static constexpr const TargetRegisterClass &UACCRC_with_sub_pair1_then_sub_64_in_SPILLTOVSRRCRegClass = PPCMCRegisterClassStorage.Classes[53];
105static constexpr const TargetRegisterClass &DMRRCRegClass = PPCMCRegisterClassStorage.Classes[54];
106static constexpr const TargetRegisterClass &DMRpRCRegClass = PPCMCRegisterClassStorage.Classes[55];
107
108} // namespace PPC
109
110} // namespace llvm
111