xref: /llvm-project/llvm/test/CodeGen/AArch64/machine-outliner-retaddr-sign-same-scope-same-key-a.ll (revision 45507166a1b38ce2831bd1e32f43977f647ccf47)
1; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple aarch64 %s -o - | \
2; RUN:   FileCheck %s --check-prefixes CHECK,V8A
3; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple aarch64 -mattr=+v8.3a %s -o - | \
4; RUN:   FileCheck %s --check-prefixes CHECK,V83A
5
6define void @a() "sign-return-address"="all" "sign-return-address-key"="a_key" nounwind {
7; CHECK-LABEL:      a:                                     // @a
8; V8A:              hint #25
9; V83A:             paciasp
10  %1 = alloca i32, align 4
11  %2 = alloca i32, align 4
12  %3 = alloca i32, align 4
13  %4 = alloca i32, align 4
14  %5 = alloca i32, align 4
15  %6 = alloca i32, align 4
16  store i32 1, ptr %1, align 4
17  store i32 2, ptr %2, align 4
18  store i32 3, ptr %3, align 4
19  store i32 4, ptr %4, align 4
20  store i32 5, ptr %5, align 4
21  store i32 6, ptr %6, align 4
22; V8A:              hint #29
23; V83A:             retaa
24  ret void
25}
26
27define void @b() "sign-return-address"="all" nounwind {
28; CHECK-LABEL:      b:                                     // @b
29; V8A:              hint #25
30; V83A:             paciasp
31  %1 = alloca i32, align 4
32  %2 = alloca i32, align 4
33  %3 = alloca i32, align 4
34  %4 = alloca i32, align 4
35  %5 = alloca i32, align 4
36  %6 = alloca i32, align 4
37  store i32 1, ptr %1, align 4
38  store i32 2, ptr %2, align 4
39  store i32 3, ptr %3, align 4
40  store i32 4, ptr %4, align 4
41  store i32 5, ptr %5, align 4
42  store i32 6, ptr %6, align 4
43; V8A:              hint #29
44; V83A:             retaa
45  ret void
46}
47
48define void @c() "sign-return-address"="all" nounwind {
49; CHECK-LABEL:      c:                                     // @c
50; V8A:              hint #25
51; V83A:             paciasp
52  %1 = alloca i32, align 4
53  %2 = alloca i32, align 4
54  %3 = alloca i32, align 4
55  %4 = alloca i32, align 4
56  %5 = alloca i32, align 4
57  %6 = alloca i32, align 4
58  store i32 1, ptr %1, align 4
59  store i32 2, ptr %2, align 4
60  store i32 3, ptr %3, align 4
61  store i32 4, ptr %4, align 4
62  store i32 5, ptr %5, align 4
63  store i32 6, ptr %6, align 4
64; V8A:              hint #29
65; V83A:             retaa
66  ret void
67}
68
69; CHECK-LABEL:      OUTLINED_FUNCTION_0:
70; V8A:                hint #25
71; V83A:               paciasp
72; V8A:                hint #29
73; V8A-NEXT:           ret
74; V83A:               retaa
75