Skip to content

Commit ee617f1

Browse files
authored
[NFC] [AArch64] Simplify offset scaling in ldst-opt (#137044)
1 parent 6f5b98b commit ee617f1

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -892,11 +892,10 @@ AArch64LoadStoreOpt::mergeNarrowZeroStores(MachineBasicBlock::iterator I,
892892
OffsetImm = IOffsetInBytes;
893893

894894
int NewOpcode = getMatchingWideOpcode(Opc);
895-
bool FinalIsScaled = !TII->hasUnscaledLdStOffset(NewOpcode);
896-
897-
// Adjust final offset if the result opcode is a scaled store.
898-
if (FinalIsScaled) {
899-
int NewOffsetStride = FinalIsScaled ? TII->getMemScale(NewOpcode) : 1;
895+
// Adjust final offset on scaled stores because the new instruction
896+
// has a different scale.
897+
if (!TII->hasUnscaledLdStOffset(NewOpcode)) {
898+
int NewOffsetStride = TII->getMemScale(NewOpcode);
900899
assert(((OffsetImm % NewOffsetStride) == 0) &&
901900
"Offset should be a multiple of the store memory scale");
902901
OffsetImm = OffsetImm / NewOffsetStride;
@@ -906,7 +905,7 @@ AArch64LoadStoreOpt::mergeNarrowZeroStores(MachineBasicBlock::iterator I,
906905
DebugLoc DL = I->getDebugLoc();
907906
MachineBasicBlock *MBB = I->getParent();
908907
MachineInstrBuilder MIB;
909-
MIB = BuildMI(*MBB, InsertionPoint, DL, TII->get(getMatchingWideOpcode(Opc)))
908+
MIB = BuildMI(*MBB, InsertionPoint, DL, TII->get(NewOpcode))
910909
.addReg(isNarrowStore(Opc) ? AArch64::WZR : AArch64::XZR)
911910
.add(BaseRegOp)
912911
.addImm(OffsetImm)

0 commit comments

Comments
 (0)