@@ -17367,36 +17367,25 @@ SDValue PPCTargetLowering::LowerFRAMEADDR(SDValue Op,
1736717367 return FrameAddr;
1736817368}
1736917369
17370- #define GET_REGISTER_MATCHER
17371- #include "PPCGenAsmMatcher.inc"
17372-
17373- Register PPCTargetLowering::getRegisterByName(const char *RegName, LLT VT,
17370+ // FIXME? Maybe this could be a TableGen attribute on some registers and
17371+ // this table could be generated automatically from RegInfo.
17372+ Register PPCTargetLowering::getRegisterByName(const char* RegName, LLT VT,
1737417373 const MachineFunction &MF) const {
17375- bool IsPPC64 = Subtarget.isPPC64();
17374+ bool isPPC64 = Subtarget.isPPC64();
1737617375
17377- bool Is64Bit = IsPPC64 && VT == LLT::scalar(64);
17378- if (!Is64Bit && VT != LLT::scalar(32))
17376+ bool is64Bit = isPPC64 && VT == LLT::scalar(64);
17377+ if (!is64Bit && VT != LLT::scalar(32))
1737917378 report_fatal_error("Invalid register global variable type");
1738017379
17381- Register Reg = MatchRegisterName(RegName);
17382- if (!Reg)
17383- report_fatal_error(
17384- Twine("Invalid global name register \"" + StringRef(RegName) + "\"."));
17385-
17386- // FIXME: These registers are not flagged as reserved and we can generate
17387- // code for `-O0` but not for `-O2`. Need followup investigation as to why.
17388- if ((IsPPC64 && Reg == PPC::R2) || Reg == PPC::R0)
17389- report_fatal_error(Twine("Trying to reserve an invalid register \"" +
17390- StringRef(RegName) + "\"."));
17391-
17392- // Convert GPR to GP8R register for 64bit.
17393- if (Is64Bit && StringRef(RegName).starts_with_insensitive("r"))
17394- Reg = Reg.id() - PPC::R0 + PPC::X0;
17395-
17396- if (Subtarget.getRegisterInfo()->getReservedRegs(MF).test(Reg))
17397- report_fatal_error(Twine("Trying to obtain a reserved register \"" +
17398- StringRef(RegName) + "\"."));
17399- return Reg;
17380+ Register Reg = StringSwitch<Register>(RegName)
17381+ .Case("r1", is64Bit ? PPC::X1 : PPC::R1)
17382+ .Case("r2", isPPC64 ? Register() : PPC::R2)
17383+ .Case("r13", (is64Bit ? PPC::X13 : PPC::R13))
17384+ .Default(Register());
17385+
17386+ if (Reg)
17387+ return Reg;
17388+ report_fatal_error("Invalid register name global variable");
1740017389}
1740117390
1740217391bool PPCTargetLowering::isAccessedAsGotIndirect(SDValue GA) const {
0 commit comments