@@ -298,7 +298,6 @@ static unsigned getMatchingNonSExtOpcode(unsigned Opc,
298298 case AArch64::STRXui:
299299 case AArch64::STRXpre:
300300 case AArch64::STURXi:
301- case AArch64::STR_ZXI:
302301 case AArch64::LDRDui:
303302 case AArch64::LDURDi:
304303 case AArch64::LDRDpre:
@@ -317,7 +316,6 @@ static unsigned getMatchingNonSExtOpcode(unsigned Opc,
317316 case AArch64::LDRSui:
318317 case AArch64::LDURSi:
319318 case AArch64::LDRSpre:
320- case AArch64::LDR_ZXI:
321319 return Opc;
322320 case AArch64::LDRSWui:
323321 return AArch64::LDRWui;
@@ -363,7 +361,6 @@ static unsigned getMatchingPairOpcode(unsigned Opc) {
363361 return AArch64::STPDpre;
364362 case AArch64::STRQui:
365363 case AArch64::STURQi:
366- case AArch64::STR_ZXI:
367364 return AArch64::STPQi;
368365 case AArch64::STRQpre:
369366 return AArch64::STPQpre;
@@ -389,7 +386,6 @@ static unsigned getMatchingPairOpcode(unsigned Opc) {
389386 return AArch64::LDPDpre;
390387 case AArch64::LDRQui:
391388 case AArch64::LDURQi:
392- case AArch64::LDR_ZXI:
393389 return AArch64::LDPQi;
394390 case AArch64::LDRQpre:
395391 return AArch64::LDPQpre;
@@ -1229,16 +1225,6 @@ AArch64LoadStoreOpt::mergePairedInsns(MachineBasicBlock::iterator I,
12291225 (void )MIBSXTW;
12301226 LLVM_DEBUG (dbgs () << " Extend operand:\n " );
12311227 LLVM_DEBUG (((MachineInstr *)MIBSXTW)->print (dbgs ()));
1232- } else if (Opc == AArch64::LDR_ZXI || Opc == AArch64::STR_ZXI) {
1233- // We are combining SVE fill/spill to LDP/STP, so we need to use the Q
1234- // variant of the registers.
1235- MachineOperand &MOp0 = MIB->getOperand (0 );
1236- MachineOperand &MOp1 = MIB->getOperand (1 );
1237- assert (AArch64::ZPRRegClass.contains (MOp0.getReg ()) &&
1238- AArch64::ZPRRegClass.contains (MOp1.getReg ()) && " Invalid register." );
1239- MOp0.setReg (AArch64::Q0 + (MOp0.getReg () - AArch64::Z0));
1240- MOp1.setReg (AArch64::Q0 + (MOp1.getReg () - AArch64::Z0));
1241- LLVM_DEBUG (((MachineInstr *)MIB)->print (dbgs ()));
12421228 } else {
12431229 LLVM_DEBUG (((MachineInstr *)MIB)->print (dbgs ()));
12441230 }
@@ -2673,8 +2659,7 @@ bool AArch64LoadStoreOpt::tryToPairLdStInst(MachineBasicBlock::iterator &MBBI) {
26732659 // Get the needed alignments to check them if
26742660 // ldp-aligned-only/stp-aligned-only features are opted.
26752661 uint64_t MemAlignment = MemOp->getAlign ().value ();
2676- uint64_t TypeAlignment =
2677- Align (MemOp->getSize ().getValue ().getKnownMinValue ()).value ();
2662+ uint64_t TypeAlignment = Align (MemOp->getSize ().getValue ()).value ();
26782663
26792664 if (MemAlignment < 2 * TypeAlignment) {
26802665 NumFailedAlignmentCheck++;
@@ -2835,18 +2820,11 @@ bool AArch64LoadStoreOpt::optimizeBlock(MachineBasicBlock &MBB,
28352820 }
28362821 // 3) Find loads and stores that can be merged into a single load or store
28372822 // pair instruction.
2838- // When compiling for SVE 128, also try to combine SVE fill/spill
2839- // instructions into LDP/STP.
28402823 // e.g.,
28412824 // ldr x0, [x2]
28422825 // ldr x1, [x2, #8]
28432826 // ; becomes
28442827 // ldp x0, x1, [x2]
2845- // e.g.,
2846- // ldr z0, [x2]
2847- // ldr z1, [x2, #1, mul vl]
2848- // ; becomes
2849- // ldp q0, q1, [x2]
28502828
28512829 if (MBB.getParent ()->getRegInfo ().tracksLiveness ()) {
28522830 DefinedInBB.clear ();
0 commit comments