Skip to content

Commit 4990b25

Browse files
committed
fixup: constrain reg class instead of convert
1 parent f0df48a commit 4990b25

File tree

5 files changed

+4
-60
lines changed

5 files changed

+4
-60
lines changed

llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,23 +1112,6 @@ bool AArch64ExpandPseudo::expandMI(MachineBasicBlock &MBB,
11121112
default:
11131113
break;
11141114

1115-
case AArch64::ConvertPNRtoPPR: {
1116-
auto TRI = MBB.getParent()->getSubtarget().getRegisterInfo();
1117-
MachineOperand DstMO = MI.getOperand(0);
1118-
MachineOperand SrcMO = MI.getOperand(1);
1119-
unsigned SrcReg = SrcMO.getReg();
1120-
if (!TRI->isSubRegister(DstMO.getReg(), SrcReg)) {
1121-
unsigned SrcSuperReg = TRI->getMatchingSuperReg(SrcReg, AArch64::psub,
1122-
&AArch64::PPRRegClass);
1123-
BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(AArch64::ORR_PPzPP))
1124-
.add(DstMO)
1125-
.addReg(SrcSuperReg)
1126-
.addReg(SrcSuperReg)
1127-
.addReg(SrcSuperReg);
1128-
}
1129-
MI.eraseFromParent();
1130-
return true;
1131-
}
11321115
case AArch64::BSPv8i8:
11331116
case AArch64::BSPv16i8: {
11341117
Register DstReg = MI.getOperand(0).getReg();

llvm/lib/Target/AArch64/AArch64InstrInfo.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4805,7 +4805,6 @@ void AArch64InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
48054805
bool Offset = true;
48064806
MCRegister PNRReg = MCRegister::NoRegister;
48074807
unsigned StackID = TargetStackID::Default;
4808-
const TargetInstrInfo *TII = MBB.getParent()->getSubtarget().getInstrInfo();
48094808
switch (TRI->getSpillSize(*RC)) {
48104809
case 1:
48114810
if (AArch64::FPR8RegClass.hasSubClassEq(RC))
@@ -4823,12 +4822,7 @@ void AArch64InstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
48234822
assert((Subtarget.hasSVE2p1() || Subtarget.hasSME2()) &&
48244823
"Unexpected register store without SVE2p1 or SME2");
48254824
if (SrcReg.isVirtual()) {
4826-
auto NewSrcReg =
4827-
MF.getRegInfo().createVirtualRegister(&AArch64::PPR_p8to15RegClass);
4828-
BuildMI(MBB, MBBI, DebugLoc(), TII->get(AArch64::ConvertPNRtoPPR),
4829-
NewSrcReg)
4830-
.addReg(SrcReg);
4831-
SrcReg = NewSrcReg;
4825+
MF.getRegInfo().constrainRegClass(SrcReg, &AArch64::PPRRegClass);
48324826
} else
48334827
SrcReg = (SrcReg - AArch64::PN0) + AArch64::P0;
48344828
Opc = AArch64::STR_PXI;
@@ -5008,7 +5002,7 @@ void AArch64InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
50085002
"Unexpected register load without SVE2p1 or SME2");
50095003
PNRReg = DestReg;
50105004
if (DestReg.isVirtual())
5011-
DestReg = MF.getRegInfo().createVirtualRegister(&AArch64::PPRRegClass);
5005+
MF.getRegInfo().constrainRegClass(DestReg, &AArch64::PPRRegClass);
50125006
else
50135007
DestReg = (DestReg - AArch64::PN0) + AArch64::P0;
50145008
Opc = AArch64::LDR_PXI;

llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2313,8 +2313,6 @@ let Predicates = [HasBF16, HasSVEorSME] in {
23132313
defm BFCVTNT_ZPmZ : sve_bfloat_convert<0b0, "bfcvtnt", int_aarch64_sve_fcvtnt_bf16f32>;
23142314
} // End HasBF16, HasSVEorSME
23152315

2316-
def ConvertPNRtoPPR : Pseudo<(outs PPRAny:$Pd), (ins PNRAny:$Pm), []>, Sched<[]>;
2317-
23182316
let Predicates = [HasSVEorSME] in {
23192317
// InstAliases
23202318
def : InstAlias<"mov $Zd, $Zn",

llvm/test/CodeGen/AArch64/spillfill-sve-different-predicate.mir

Lines changed: 0 additions & 30 deletions
This file was deleted.

llvm/test/CodeGen/AArch64/spillfill-sve.mir

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,9 @@ body: |
213213
214214
; EXPAND-LABEL: name: spills_fills_stack_id_virtreg_pnr
215215
; EXPAND: renamable $pn8 = WHILEGE_CXX_B
216-
; EXPAND: STR_PXI killed renamable $p8, $sp, 7
216+
; EXPAND: STR_PXI killed renamable $pn8, $sp, 7
217217
;
218-
; EXPAND: renamable $p0 = LDR_PXI $sp, 7
219-
; EXPAND: $p8 = ORR_PPzPP $p0, $p0, killed $p0, implicit-def $pn8
218+
; EXPAND: renamable $pn8 = LDR_PXI $sp, 7
220219
; EXPAND: $p0 = PEXT_PCI_B killed renamable $pn8, 0
221220
222221

0 commit comments

Comments
 (0)