[PATCH] D135817: [AArch64] Use encodeLogicalImmediate for forming the immediate to an AND. NFC.
Martin Storsjö via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 12 23:54:34 PDT 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG24303e3ad2b5: [AArch64] Use encodeLogicalImmediate for forming the immediate to an AND. NFC. (authored by mstorsjo).
Changed prior to commit:
https://reviews.llvm.org/D135817?vs=467265&id=467371#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D135817/new/
https://reviews.llvm.org/D135817
Files:
llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
Index: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
===================================================================
--- llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
+++ llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
@@ -1814,24 +1814,18 @@
StackOffset::getFixed((int64_t)MFI.getStackSize() - NumBytes));
}
if (NeedsRealignment) {
- const unsigned NrBitsToZero = Log2(MFI.getMaxAlign());
- assert(NrBitsToZero > 1);
+ assert(MFI.getMaxAlign() > Align(1));
assert(scratchSPReg != AArch64::SP);
// SUB X9, SP, NumBytes
// -- X9 is temporary register, so shouldn't contain any live data here,
// -- free to use. This is already produced by emitFrameOffset above.
// AND SP, X9, 0b11111...0000
- // The logical immediates have a non-trivial encoding. The following
- // formula computes the encoded immediate with all ones but
- // NrBitsToZero zero bits as least significant bits.
- uint32_t andMaskEncoded = (1 << 12) // = N
- | ((64 - NrBitsToZero) << 6) // immr
- | ((64 - NrBitsToZero - 1) << 0); // imms
+ uint64_t AndMask = ~(MFI.getMaxAlign().value() - 1);
BuildMI(MBB, MBBI, DL, TII->get(AArch64::ANDXri), AArch64::SP)
.addReg(scratchSPReg, RegState::Kill)
- .addImm(andMaskEncoded);
+ .addImm(AArch64_AM::encodeLogicalImmediate(AndMask, 64));
AFI->setStackRealigned(true);
// No need for SEH instructions here; if we're realigning the stack,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D135817.467371.patch
Type: text/x-patch
Size: 1612 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221013/6bdd0520/attachment.bin>
More information about the llvm-commits
mailing list