[PATCH] D139756: [X86] Fix cmp order in probing BuildStackAlignAND
Josh Stone via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 9 17:13:46 PST 2022
cuviper created this revision.
cuviper added a reviewer: serge-sans-paille.
Herald added subscribers: pengfei, hiraditya.
Herald added a project: All.
cuviper requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Due to reversed arguments, the loop start was almost always skipping the
whole loop, since FinalStackProbed is probably less than StackPtr for
large alignments. The intent was to skip the loop if the first sub on
StackPtr made it less than FinalStackProbed already, so flip it.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D139756
Files:
llvm/lib/Target/X86/X86FrameLowering.cpp
llvm/test/CodeGen/X86/stack-clash-large-large-align.ll
llvm/test/CodeGen/X86/stack-clash-small-large-align.ll
Index: llvm/test/CodeGen/X86/stack-clash-small-large-align.ll
===================================================================
--- llvm/test/CodeGen/X86/stack-clash-small-large-align.ll
+++ llvm/test/CodeGen/X86/stack-clash-small-large-align.ll
@@ -40,7 +40,7 @@
; CHECK-NEXT: je .LBB1_4
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: subq $4096, %rsp # imm = 0x1000
-; CHECK-NEXT: cmpq %rsp, %r11
+; CHECK-NEXT: cmpq %r11, %rsp
; CHECK-NEXT: jb .LBB1_3
; CHECK-NEXT: .LBB1_2: # =>This Inner Loop Header: Depth=1
; CHECK-NEXT: movq $0, (%rsp)
Index: llvm/test/CodeGen/X86/stack-clash-large-large-align.ll
===================================================================
--- llvm/test/CodeGen/X86/stack-clash-large-large-align.ll
+++ llvm/test/CodeGen/X86/stack-clash-large-large-align.ll
@@ -44,7 +44,7 @@
; CHECK-NEXT: je .LBB1_4
; CHECK-NEXT: # %bb.1:
; CHECK-NEXT: subq $4096, %rsp # imm = 0x1000
-; CHECK-NEXT: cmpq %rsp, %r11
+; CHECK-NEXT: cmpq %r11, %rsp
; CHECK-NEXT: jb .LBB1_3
; CHECK-NEXT: .LBB1_2: # =>This Inner Loop Header: Depth=1
; CHECK-NEXT: movq $0, (%rsp)
Index: llvm/lib/Target/X86/X86FrameLowering.cpp
===================================================================
--- llvm/lib/Target/X86/X86FrameLowering.cpp
+++ llvm/lib/Target/X86/X86FrameLowering.cpp
@@ -1293,11 +1293,11 @@
BuildMI(headMBB, DL,
TII.get(Uses64BitFramePtr ? X86::CMP64rr : X86::CMP32rr))
- .addReg(FinalStackProbed)
.addReg(StackPtr)
+ .addReg(FinalStackProbed)
.setMIFlag(MachineInstr::FrameSetup);
- // jump
+ // jump to the footer if StackPtr < FinalStackProbed
BuildMI(headMBB, DL, TII.get(X86::JCC_1))
.addMBB(footMBB)
.addImm(X86::COND_B)
@@ -1329,7 +1329,7 @@
.addReg(StackPtr)
.setMIFlag(MachineInstr::FrameSetup);
- // jump
+ // jump back while FinalStackProbed < StackPtr
BuildMI(bodyMBB, DL, TII.get(X86::JCC_1))
.addMBB(bodyMBB)
.addImm(X86::COND_B)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D139756.481795.patch
Type: text/x-patch
Size: 2111 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221210/e3fbdee9/attachment.bin>
More information about the llvm-commits
mailing list