Skip to content

Commit 15e86c2

Browse files
[AArch64] Update tests for stack-probing (#102181)
Compiler can re-order instructions (keeping opcode register dependencies) around code generated for stack probing. This leads to correct generation of code, but failing tests. Changing some CHECK-NEXT's to CHECK-DAG.
1 parent 7e9c233 commit 15e86c2

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

llvm/test/CodeGen/AArch64/stack-probing-dynamic.ll

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,11 @@ define void @dynamic_fixed(i64 %size, ptr %out1, ptr %out2) #0 {
5959
; CHECK-NEXT: str xzr, [sp, #-64]!
6060
; CHECK-NEXT: add x9, x0, #15
6161
; CHECK-NEXT: mov x8, sp
62-
; CHECK-NEXT: sub x10, x29, #64
63-
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
64-
; CHECK-NEXT: str x10, [x1]
65-
; CHECK-NEXT: sub x8, x8, x9
62+
; CHECK-DAG: sub x10, x29, #64
63+
; CHECK-DAG: and x9, x9, #0xfffffffffffffff0
64+
; CHECK-NOT: INVALID_TO_BREAK_UP_CHECK_DAG
65+
; CHECK-DAG: str x10, [x1]
66+
; CHECK-DAG: sub x8, x8, x9
6667
; CHECK-NEXT: .LBB1_1: // =>This Inner Loop Header: Depth=1
6768
; CHECK-NEXT: sub sp, sp, #1, lsl #12 // =4096
6869
; CHECK-NEXT: cmp sp, x8
@@ -108,10 +109,11 @@ define void @dynamic_align_64(i64 %size, ptr %out) #0 {
108109
; CHECK-NEXT: and sp, x9, #0xffffffffffffffc0
109110
; CHECK-NEXT: add x9, x0, #15
110111
; CHECK-NEXT: mov x8, sp
111-
; CHECK-NEXT: str xzr, [sp]
112-
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
113-
; CHECK-NEXT: mov x19, sp
114-
; CHECK-NEXT: sub x8, x8, x9
112+
; CHECK-DAG: str xzr, [sp]
113+
; CHECK-DAG: and x9, x9, #0xfffffffffffffff0
114+
; CHECK-NOT: INVALID_TO_BREAK_UP_CHECK_DAG
115+
; CHECK-DAG: mov x19, sp
116+
; CHECK-DAG: sub x8, x8, x9
115117
; CHECK-NEXT: and x8, x8, #0xffffffffffffffc0
116118
; CHECK-NEXT: .LBB2_1: // =>This Inner Loop Header: Depth=1
117119
; CHECK-NEXT: sub sp, sp, #1, lsl #12 // =4096
@@ -167,10 +169,11 @@ define void @dynamic_align_8192(i64 %size, ptr %out) #0 {
167169
; CHECK-NEXT: mov sp, x9
168170
; CHECK-NEXT: add x9, x0, #15
169171
; CHECK-NEXT: mov x8, sp
170-
; CHECK-NEXT: ldr xzr, [sp]
171-
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
172-
; CHECK-NEXT: mov x19, sp
173-
; CHECK-NEXT: sub x8, x8, x9
172+
; CHECK-DAG: ldr xzr, [sp]
173+
; CHECK-DAG: and x9, x9, #0xfffffffffffffff0
174+
; CHECK-NOT: INVALID_TO_BREAK_UP_CHECK_DAG
175+
; CHECK-DAG: mov x19, sp
176+
; CHECK-DAG: sub x8, x8, x9
174177
; CHECK-NEXT: and x8, x8, #0xffffffffffffe000
175178
; CHECK-NEXT: .LBB3_4: // =>This Inner Loop Header: Depth=1
176179
; CHECK-NEXT: sub sp, sp, #1, lsl #12 // =4096
@@ -331,8 +334,8 @@ define void @dynamic_sve(i64 %size, ptr %out) #0 "target-features"="+sve" {
331334
; CHECK-NEXT: .cfi_offset w29, -32
332335
; CHECK-NEXT: rdvl x9, #1
333336
; CHECK-NEXT: mov x10, #15 // =0xf
334-
; CHECK-NEXT: mov x8, sp
335-
; CHECK-NEXT: madd x9, x0, x9, x10
337+
; CHECK-DAG: mov x8, sp
338+
; CHECK-DAG: madd x9, x0, x9, x10
336339
; CHECK-NEXT: and x9, x9, #0xfffffffffffffff0
337340
; CHECK-NEXT: sub x8, x8, x9
338341
; CHECK-NEXT: .LBB7_1: // =>This Inner Loop Header: Depth=1
@@ -361,3 +364,4 @@ define void @dynamic_sve(i64 %size, ptr %out) #0 "target-features"="+sve" {
361364
}
362365

363366
attributes #0 = { uwtable(async) "probe-stack"="inline-asm" "frame-pointer"="none" }
367+

0 commit comments

Comments
 (0)