Skip to content

Commit 9596ae7

Browse files
committed
[ARM] Re-generate PACBTI tests using update_llc_checks.py
1 parent 529235f commit 9596ae7

9 files changed

+546
-311
lines changed

llvm/test/CodeGen/Thumb2/bti-pac-replace-2.ll

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,36 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
12
; RUN: llc --force-dwarf-frame-section %s -o - | FileCheck %s
23
; RUN: llc --filetype=obj %s -o - | llvm-readelf -u - | FileCheck %s --check-prefix=UNWIND
34
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
45
target triple = "thumbv8.1m.main-arm-unknown-eabi"
56

7+
; Check the function starts with `pacbti` and correct unwind info is emitted
68
define hidden i32 @_Z1fi(i32 %x) "sign-return-address"="non-leaf" "sign-return-address-key"="a_key" "branch-target-enforcement" {
9+
; CHECK-LABEL: _Z1fi:
10+
; CHECK: .cfi_sections .debug_frame
11+
; CHECK-NEXT: .cfi_startproc
12+
; CHECK-NEXT: @ %bb.0: @ %entry
13+
; CHECK-NEXT: pacbti r12, lr, sp
14+
; CHECK-NEXT: .save {r7, lr}
15+
; CHECK-NEXT: push {r7, lr}
16+
; CHECK-NEXT: .cfi_def_cfa_offset 8
17+
; CHECK-NEXT: .cfi_offset lr, -4
18+
; CHECK-NEXT: .cfi_offset r7, -8
19+
; CHECK-NEXT: .save {ra_auth_code}
20+
; CHECK-NEXT: str r12, [sp, #-4]!
21+
; CHECK-NEXT: .cfi_def_cfa_offset 12
22+
; CHECK-NEXT: .cfi_offset ra_auth_code, -12
23+
; CHECK-NEXT: .pad #4
24+
; CHECK-NEXT: sub sp, #4
25+
; CHECK-NEXT: .cfi_def_cfa_offset 16
26+
; CHECK-NEXT: adds r0, #1
27+
; CHECK-NEXT: bl _Z1gi
28+
; CHECK-NEXT: subs r0, #1
29+
; CHECK-NEXT: add sp, #4
30+
; CHECK-NEXT: ldr r12, [sp], #4
31+
; CHECK-NEXT: pop.w {r7, lr}
32+
; CHECK-NEXT: aut r12, lr, sp
33+
; CHECK-NEXT: bx lr
734
entry:
835
%add = add nsw i32 %x, 1
936
%call = tail call i32 @_Z1gi(i32 %add)
@@ -13,24 +40,6 @@ entry:
1340

1441
declare dso_local i32 @_Z1gi(i32)
1542

16-
; Check the function starts with `pacbti` and correct unwind info is emitted
17-
; CHECK-LABEL: _Z1fi:
18-
; ...
19-
; CHECK: pacbti r12, lr, sp
20-
; CHECK-NEXT: .save {r7, lr}
21-
; CHECK-NEXT: push {r7, lr}
22-
; CHECK-NEXT: .cfi_def_cfa_offset 8
23-
; CHECK-NEXT: .cfi_offset lr, -4
24-
; CHECK-NEXT: .cfi_offset r7, -8
25-
; CHECK-NEXT: .save {ra_auth_code}
26-
; CHECK-NEXT: str r12, [sp, #-4]!
27-
; CHECK-NEXT: .cfi_def_cfa_offset 12
28-
; CHECK-NEXT: .cfi_offset ra_auth_code, -12
29-
; CHECK-NEXT: .pad #4
30-
; CHECK-NEXT: sub sp, #4
31-
; CHECK-NEXT: .cfi_def_cfa_offset 16
32-
; ...
33-
3443
; UNWIND-LABEL: Opcodes [
3544
; UNWIND-NEXT: 0x00 ; vsp = vsp + 4
3645
; UNWIND-NEXT: 0xB4 ; pop ra_auth_code

llvm/test/CodeGen/Thumb2/pacbti-m-basic.ll

Lines changed: 97 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
12
; RUN: llc --force-dwarf-frame-section %s -o - | FileCheck %s
23
; RUN: llc --filetype=obj %s -o - | llvm-readelf -s --unwind - | FileCheck %s --check-prefix=UNWIND
34
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
@@ -16,79 +17,124 @@ target triple = "thumbv8m.main-none-none-eabi"
1617
; }
1718

1819
define hidden i32 @f0(i32 %x) local_unnamed_addr "sign-return-address"="non-leaf" {
20+
; CHECK-LABEL: f0:
21+
; CHECK: .cfi_sections .debug_frame
22+
; CHECK-NEXT: .cfi_startproc
23+
; CHECK-NEXT: @ %bb.0: @ %entry
24+
; CHECK-NEXT: pac r12, lr, sp
25+
; CHECK-NEXT: .save {r7, lr}
26+
; CHECK-NEXT: push {r7, lr}
27+
; CHECK-NEXT: .cfi_def_cfa_offset 8
28+
; CHECK-NEXT: .cfi_offset lr, -4
29+
; CHECK-NEXT: .cfi_offset r7, -8
30+
; CHECK-NEXT: .save {ra_auth_code}
31+
; CHECK-NEXT: str r12, [sp, #-4]!
32+
; CHECK-NEXT: .cfi_def_cfa_offset 12
33+
; CHECK-NEXT: .cfi_offset ra_auth_code, -12
34+
; CHECK-NEXT: .pad #4
35+
; CHECK-NEXT: sub sp, #4
36+
; CHECK-NEXT: .cfi_def_cfa_offset 16
37+
; CHECK-NEXT: subs r0, #1
38+
; CHECK-NEXT: bl g
39+
; CHECK-NEXT: adds r0, #1
40+
; CHECK-NEXT: add sp, #4
41+
; CHECK-NEXT: ldr r12, [sp], #4
42+
; CHECK-NEXT: pop.w {r7, lr}
43+
; CHECK-NEXT: aut r12, lr, sp
44+
; CHECK-NEXT: bx lr
1945
entry:
2046
%sub = add nsw i32 %x, -1
2147
%call = tail call i32 @g(i32 %sub)
2248
%add = add nsw i32 %call, 1
2349
ret i32 %add
2450
}
2551

26-
; CHECK-LABEL: f0:
27-
; CHECK: pac r12, lr, sp
28-
; CHECK-NEXT: .save {r7, lr}
29-
; CHECK-NEXT: push {r7, lr}
30-
; CHECK-NEXT: .cfi_def_cfa_offset 8
31-
; CHECK-NEXT: .cfi_offset lr, -4
32-
; CHECK-NEXT: .cfi_offset r7, -8
33-
; CHECK-NEXT: .save {ra_auth_code}
34-
; CHECK-NEXT: str r12, [sp, #-4]!
35-
; CHECK-NEXT: .cfi_def_cfa_offset 12
36-
; CHECK-NEXT: .cfi_offset ra_auth_code, -12
37-
; CHECK-NEXT: .pad #4
38-
; CHECK-NEXT: sub sp, #4
39-
; ...
40-
; CHECK: add sp, #4
41-
; CHECK-NEXT: ldr r12, [sp], #4
42-
; CHECK-NEXT: pop.w {r7, lr}
43-
; CHECK-NEXT: aut r12, lr, sp
44-
; CHECK-NEXT: bx lr
45-
4652
define hidden i32 @f1(i32 %x) local_unnamed_addr #0 {
53+
; CHECK-LABEL: f1:
54+
; CHECK: .cfi_startproc
55+
; CHECK-NEXT: @ %bb.0: @ %entry
56+
; CHECK-NEXT: pac r12, lr, sp
57+
; CHECK-NEXT: vstr fpcxtns, [sp, #-4]!
58+
; CHECK-NEXT: .cfi_def_cfa_offset 4
59+
; CHECK-NEXT: .save {r7, lr}
60+
; CHECK-NEXT: push {r7, lr}
61+
; CHECK-NEXT: .cfi_def_cfa_offset 12
62+
; CHECK-NEXT: .cfi_offset lr, -8
63+
; CHECK-NEXT: .cfi_offset r7, -12
64+
; CHECK-NEXT: .save {ra_auth_code}
65+
; CHECK-NEXT: str r12, [sp, #-4]!
66+
; CHECK-NEXT: .cfi_def_cfa_offset 16
67+
; CHECK-NEXT: .cfi_offset ra_auth_code, -16
68+
; CHECK-NEXT: subs r0, #1
69+
; CHECK-NEXT: bl g
70+
; CHECK-NEXT: adds r0, #1
71+
; CHECK-NEXT: ldr r12, [sp], #4
72+
; CHECK-NEXT: pop.w {r7, lr}
73+
; CHECK-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
74+
; CHECK-NEXT: vldr fpcxtns, [sp], #4
75+
; CHECK-NEXT: aut r12, lr, sp
76+
; CHECK-NEXT: clrm {r1, r2, r3, r12, apsr}
77+
; CHECK-NEXT: bxns lr
4778
entry:
4879
%sub = add nsw i32 %x, -1
4980
%call = tail call i32 @g(i32 %sub)
5081
%add = add nsw i32 %call, 1
5182
ret i32 %add
5283
}
5384

54-
; CHECK-LABEL: f1:
55-
; CHECK: pac r12, lr, sp
56-
; CHECK-NEXT: vstr fpcxtns, [sp, #-4]!
57-
; CHECK-NEXT: .cfi_def_cfa_offset 4
58-
; CHECK-NEXT: .save {r7, lr}
59-
; CHECK-NEXT: push {r7, lr}
60-
; CHECK: vldr fpcxtns, [sp], #4
61-
; CHECK: aut r12, lr, sp
62-
6385
define hidden i32 @f2(i32 %x) local_unnamed_addr #1 {
86+
; CHECK-LABEL: f2:
87+
; CHECK: .cfi_startproc
88+
; CHECK-NEXT: @ %bb.0: @ %entry
89+
; CHECK-NEXT: pac r12, lr, sp
90+
; CHECK-NEXT: .save {r7, lr}
91+
; CHECK-NEXT: push {r7, lr}
92+
; CHECK-NEXT: .cfi_def_cfa_offset 8
93+
; CHECK-NEXT: .cfi_offset lr, -4
94+
; CHECK-NEXT: .cfi_offset r7, -8
95+
; CHECK-NEXT: .save {ra_auth_code}
96+
; CHECK-NEXT: str r12, [sp, #-4]!
97+
; CHECK-NEXT: .cfi_def_cfa_offset 12
98+
; CHECK-NEXT: .cfi_offset ra_auth_code, -12
99+
; CHECK-NEXT: .pad #4
100+
; CHECK-NEXT: sub sp, #4
101+
; CHECK-NEXT: .cfi_def_cfa_offset 16
102+
; CHECK-NEXT: subs r0, #1
103+
; CHECK-NEXT: bl g
104+
; CHECK-NEXT: adds r0, #1
105+
; CHECK-NEXT: add sp, #4
106+
; CHECK-NEXT: ldr r12, [sp], #4
107+
; CHECK-NEXT: pop.w {r7, lr}
108+
; CHECK-NEXT: aut r12, lr, sp
109+
; CHECK-NEXT: mrs r12, control
110+
; CHECK-NEXT: tst.w r12, #8
111+
; CHECK-NEXT: beq .LBB2_2
112+
; CHECK-NEXT: @ %bb.1: @ %entry
113+
; CHECK-NEXT: vmrs r12, fpscr
114+
; CHECK-NEXT: vmov d0, lr, lr
115+
; CHECK-NEXT: vmov d1, lr, lr
116+
; CHECK-NEXT: vmov d2, lr, lr
117+
; CHECK-NEXT: vmov d3, lr, lr
118+
; CHECK-NEXT: vmov d4, lr, lr
119+
; CHECK-NEXT: vmov d5, lr, lr
120+
; CHECK-NEXT: vmov d6, lr, lr
121+
; CHECK-NEXT: vmov d7, lr, lr
122+
; CHECK-NEXT: bic r12, r12, #159
123+
; CHECK-NEXT: bic r12, r12, #4026531840
124+
; CHECK-NEXT: vmsr fpscr, r12
125+
; CHECK-NEXT: .LBB2_2: @ %entry
126+
; CHECK-NEXT: mov r1, lr
127+
; CHECK-NEXT: mov r2, lr
128+
; CHECK-NEXT: mov r3, lr
129+
; CHECK-NEXT: mov r12, lr
130+
; CHECK-NEXT: msr apsr_nzcvq, lr
131+
; CHECK-NEXT: bxns lr
64132
entry:
65133
%sub = add nsw i32 %x, -1
66134
%call = tail call i32 @g(i32 %sub)
67135
%add = add nsw i32 %call, 1
68136
ret i32 %add
69137
}
70-
; CHECK-LABEL: f2:
71-
; CHECK: pac r12, lr, sp
72-
; CHECK-NEXT: .save {r7, lr}
73-
; CHECK-NEXT: push {r7, lr}
74-
; CHECK-NEXT: .cfi_def_cfa_offset 8
75-
; CHECK-NEXT: .cfi_offset lr, -4
76-
; CHECK-NEXT: .cfi_offset r7, -8
77-
; CHECK-NEXT: .save {ra_auth_code}
78-
; CHECK-NEXT: str r12, [sp, #-4]!
79-
; CHECK-NEXT: .cfi_def_cfa_offset 12
80-
; CHECK-NEXT: .cfi_offset ra_auth_code, -12
81-
; CHECK-NEXT: .pad #4
82-
; CHECK-NEXT: sub sp, #4
83-
; CHECK-NEXT: .cfi_def_cfa_offset 16
84-
; ...
85-
; CHECK: add sp, #4
86-
; CHECK-NEXT: ldr r12, [sp], #4
87-
; CHECK-NEXT: pop.w {r7, lr}
88-
; CHECK-NEXT: aut r12, lr, sp
89-
; CHECK-NEXT: mrs r12, control
90-
; ...
91-
; CHECK: bxns lr
92138

93139
declare dso_local i32 @g(i32) local_unnamed_addr
94140

llvm/test/CodeGen/Thumb2/pacbti-m-indirect-tail-call.ll

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,40 @@
1-
; RUN: llc %s -o - | FileCheck %s --check-prefix=CHECK1
2-
; RUN: llc %s -o - | FileCheck %s --check-prefix=CHECK2
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc %s -o - | FileCheck %s
33
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
44
target triple = "thumbv8.1m.main-arm-unknown-eabi"
55

66
@p = hidden local_unnamed_addr global ptr null, align 4
77

88
define hidden i32 @f(i32 %a, i32 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
9+
; CHECK-LABEL: f:
10+
; CHECK: @ %bb.0: @ %entry
11+
; CHECK-NEXT: pac r12, lr, sp
12+
; CHECK-NEXT: .save {r4, r5, r6, r7, lr}
13+
; CHECK-NEXT: push {r4, r5, r6, r7, lr}
14+
; CHECK-NEXT: .save {ra_auth_code}
15+
; CHECK-NEXT: str r12, [sp, #-4]!
16+
; CHECK-NEXT: mov r7, r3
17+
; CHECK-NEXT: mov r5, r2
18+
; CHECK-NEXT: mov r6, r1
19+
; CHECK-NEXT: bl g
20+
; CHECK-NEXT: movw r1, :lower16:p
21+
; CHECK-NEXT: mov r2, r5
22+
; CHECK-NEXT: movt r1, :upper16:p
23+
; CHECK-NEXT: mov r3, r7
24+
; CHECK-NEXT: ldr r4, [r1]
25+
; CHECK-NEXT: mov r1, r6
26+
; CHECK-NEXT: blx r4
27+
; CHECK-NEXT: ldr r12, [sp], #4
28+
; CHECK-NEXT: pop.w {r4, r5, r6, r7, lr}
29+
; CHECK-NEXT: aut r12, lr, sp
30+
; CHECK-NEXT: bx lr
931
entry:
1032
%call = tail call i32 @g(i32 %a) #0
1133
%0 = load ptr, ptr @p, align 4
1234
%call1 = tail call i32 %0(i32 %call, i32 %b, i32 %c, i32 %d) #0
1335
ret i32 %call1
1436
}
1537

16-
; CHECK1-LABEL: f
17-
; ...
18-
; CHECK1: aut r12, lr, sp
19-
; CHECK1-NOT: bx r12
20-
21-
; CHECK2-LABEL: f
22-
; ...
23-
; CHECK2: blx r4
24-
; CHECK2-NEXT: ldr r12, [sp], #4
25-
; CHECK2-NEXT: pop.w {r4, r5, r6, r7, lr}
26-
; CHECK2-NEXT: aut r12, lr, sp
27-
; CHECK2-NEXT: bx lr
28-
2938
declare dso_local i32 @g(i32) local_unnamed_addr #0
3039

3140
attributes #0 = { nounwind "sign-return-address"="non-leaf"}

0 commit comments

Comments
 (0)