[llvm] [AArch64] Pair far-offset LDP/STP via base-address CSE and base-register adjustment (PR #222646)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 11 07:36:08 PDT 2026
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp -- llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
index e8292ffd5..b72e56510 100644
--- a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
+++ b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
@@ -2152,8 +2152,7 @@ AArch64LoadStoreOpt::findMatchingInsn(MachineBasicBlock::iterator I,
// FirstMI and the next instruction; a store's Rt looks dead there,
// which the regsOverlap skip below compensates for.
RS.backward(I);
- AvailableScratchRegs =
- RS.getRegsAvailable(&AArch64::GPR64commonRegClass);
+ AvailableScratchRegs = RS.getRegsAvailable(&AArch64::GPR64commonRegClass);
ScavengerReady = true;
}
};
@@ -2261,8 +2260,8 @@ AArch64LoadStoreOpt::findMatchingInsn(MachineBasicBlock::iterator I,
if (!inBoundsForPair(IsUnscaled, MinOffset, OffsetStride)) {
if (EnableLdpStpBaseAdjust) {
int MemScale = TII->getMemScale(FirstMI);
- int64_t ByteOffset = static_cast<int64_t>(MinOffset) *
- (IsUnscaled ? 1 : MemScale);
+ int64_t ByteOffset =
+ static_cast<int64_t>(MinOffset) * (IsUnscaled ? 1 : MemScale);
if (ByteOffset >= 0 && canEncodeAddXriImm(ByteOffset)) {
Register Reg0 = getLdStRegOp(FirstMI).getReg();
Register Reg1 = getLdStRegOp(MI).getReg();
@@ -2276,8 +2275,8 @@ AArch64LoadStoreOpt::findMatchingInsn(MachineBasicBlock::iterator I,
// `ldr x0, [x0, #8]`). X16/X17 are skipped here too; see
// the scavenger path below.
if (MayLoad && AArch64::GPR64RegClass.contains(Reg0) &&
- !TRI->regsOverlap(Reg0, Reg1) &&
- Reg0 != AArch64::X16 && Reg0 != AArch64::X17)
+ !TRI->regsOverlap(Reg0, Reg1) && Reg0 != AArch64::X16 &&
+ Reg0 != AArch64::X17)
Scratch = Reg0;
else {
// Stores and sub-64-bit loads cannot reuse a dest/source
diff --git a/llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp b/llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
index b4f37d4f2..54e94bf4d 100644
--- a/llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
+++ b/llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
@@ -1054,7 +1054,7 @@ bool AArch64MIPeepholeOptImpl::shareBaseAddresses(MachineBasicBlock &MBB) {
if (Pos[PrimaryDef] >= Pos[Sec.UserMI])
continue;
bool IsPairOrPre = AArch64InstrInfo::isPairedLdSt(*Sec.UserMI) ||
- AArch64InstrInfo::isPreLdSt(*Sec.UserMI);
+ AArch64InstrInfo::isPreLdSt(*Sec.UserMI);
unsigned BaseIdx = IsPairOrPre ? 2 : 1;
unsigned OffIdx = IsPairOrPre ? 3 : 2;
MachineOperand &BaseOp = Sec.UserMI->getOperand(BaseIdx);
``````````
</details>
https://github.com/llvm/llvm-project/pull/222646
More information about the llvm-commits
mailing list