[PATCH] D77372: [NFC] G_DYN_STACKALLOC realign iff align > 1, update documentation
Guillaume Chatelet via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 3 01:35:02 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG9f5c786876ce: [NFC] G_DYN_STACKALLOC realign iff align > 1, update documentation (authored by gchatelet).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77372/new/
https://reviews.llvm.org/D77372
Files:
llvm/docs/GlobalISel/GenericOpcode.rst
llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
Index: llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
===================================================================
--- llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -4891,7 +4891,7 @@
LegalizerHelper::lowerDynStackAlloc(MachineInstr &MI) {
Register Dst = MI.getOperand(0).getReg();
Register AllocSize = MI.getOperand(1).getReg();
- unsigned Align = MI.getOperand(2).getImm();
+ Align Alignment = assumeAligned(MI.getOperand(2).getImm());
const auto &MF = *MI.getMF();
const auto &TLI = *MF.getSubtarget().getTargetLowering();
@@ -4907,8 +4907,8 @@
// have to generate an extra instruction to negate the alloc and then use
// G_PTR_ADD to add the negative offset.
auto Alloc = MIRBuilder.buildSub(IntPtrTy, SPTmp, AllocSize);
- if (Align) {
- APInt AlignMask(IntPtrTy.getSizeInBits(), Align, true);
+ if (Alignment > Align(1)) {
+ APInt AlignMask(IntPtrTy.getSizeInBits(), Alignment.value(), true);
AlignMask.negate();
auto AlignCst = MIRBuilder.buildConstant(IntPtrTy, AlignMask);
Alloc = MIRBuilder.buildAnd(IntPtrTy, Alloc, AlignCst);
Index: llvm/docs/GlobalISel/GenericOpcode.rst
===================================================================
--- llvm/docs/GlobalISel/GenericOpcode.rst
+++ llvm/docs/GlobalISel/GenericOpcode.rst
@@ -672,12 +672,9 @@
G_DYN_STACKALLOC
^^^^^^^^^^^^^^^^
-Dynamically realign the stack pointer to the specified alignment
+Dynamically realigns the stack pointer to the specified size and alignment.
+An alignment value of `0` or `1` mean no specific alignment.
.. code-block:: none
%8:_(p0) = G_DYN_STACKALLOC %7(s64), 32
-
-.. caution::
-
- What does it mean for the immediate to be 0? It happens in the tests
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77372.254725.patch
Type: text/x-patch
Size: 1774 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200403/c155870d/attachment.bin>
More information about the llvm-commits
mailing list