@@ -298,7 +298,6 @@ static unsigned getMatchingNonSExtOpcode(unsigned Opc,
298
298
case AArch64::STRXui:
299
299
case AArch64::STRXpre:
300
300
case AArch64::STURXi:
301
- case AArch64::STR_ZXI:
302
301
case AArch64::LDRDui:
303
302
case AArch64::LDURDi:
304
303
case AArch64::LDRDpre:
@@ -317,7 +316,6 @@ static unsigned getMatchingNonSExtOpcode(unsigned Opc,
317
316
case AArch64::LDRSui:
318
317
case AArch64::LDURSi:
319
318
case AArch64::LDRSpre:
320
- case AArch64::LDR_ZXI:
321
319
return Opc;
322
320
case AArch64::LDRSWui:
323
321
return AArch64::LDRWui;
@@ -363,7 +361,6 @@ static unsigned getMatchingPairOpcode(unsigned Opc) {
363
361
return AArch64::STPDpre;
364
362
case AArch64::STRQui:
365
363
case AArch64::STURQi:
366
- case AArch64::STR_ZXI:
367
364
return AArch64::STPQi;
368
365
case AArch64::STRQpre:
369
366
return AArch64::STPQpre;
@@ -389,7 +386,6 @@ static unsigned getMatchingPairOpcode(unsigned Opc) {
389
386
return AArch64::LDPDpre;
390
387
case AArch64::LDRQui:
391
388
case AArch64::LDURQi:
392
- case AArch64::LDR_ZXI:
393
389
return AArch64::LDPQi;
394
390
case AArch64::LDRQpre:
395
391
return AArch64::LDPQpre;
@@ -1229,16 +1225,6 @@ AArch64LoadStoreOpt::mergePairedInsns(MachineBasicBlock::iterator I,
1229
1225
(void )MIBSXTW;
1230
1226
LLVM_DEBUG (dbgs () << " Extend operand:\n " );
1231
1227
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 ()));
1242
1228
} else {
1243
1229
LLVM_DEBUG (((MachineInstr *)MIB)->print (dbgs ()));
1244
1230
}
@@ -2673,8 +2659,7 @@ bool AArch64LoadStoreOpt::tryToPairLdStInst(MachineBasicBlock::iterator &MBBI) {
2673
2659
// Get the needed alignments to check them if
2674
2660
// ldp-aligned-only/stp-aligned-only features are opted.
2675
2661
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 ();
2678
2663
2679
2664
if (MemAlignment < 2 * TypeAlignment) {
2680
2665
NumFailedAlignmentCheck++;
@@ -2835,18 +2820,11 @@ bool AArch64LoadStoreOpt::optimizeBlock(MachineBasicBlock &MBB,
2835
2820
}
2836
2821
// 3) Find loads and stores that can be merged into a single load or store
2837
2822
// pair instruction.
2838
- // When compiling for SVE 128, also try to combine SVE fill/spill
2839
- // instructions into LDP/STP.
2840
2823
// e.g.,
2841
2824
// ldr x0, [x2]
2842
2825
// ldr x1, [x2, #8]
2843
2826
// ; becomes
2844
2827
// 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]
2850
2828
2851
2829
if (MBB.getParent ()->getRegInfo ().tracksLiveness ()) {
2852
2830
DefinedInBB.clear ();
0 commit comments