1
+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
1
2
; RUN: llc < %s -frame-pointer=all -mtriple=arm64-windows | FileCheck %s
2
3
3
4
; Test generated from C code:
@@ -15,18 +16,58 @@ declare void @llvm.va_start(ptr)
15
16
declare ptr @llvm.addressofreturnaddress ()
16
17
17
18
define dso_local ptr @"foo" () {
19
+ ; CHECK-LABEL: foo:
20
+ ; CHECK: .seh_proc foo
21
+ ; CHECK-NEXT: // %bb.0: // %entry
22
+ ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
23
+ ; CHECK-NEXT: .seh_save_fplr_x 16
24
+ ; CHECK-NEXT: mov x29, sp
25
+ ; CHECK-NEXT: .seh_set_fp
26
+ ; CHECK-NEXT: .seh_endprologue
27
+ ; CHECK-NEXT: add x0, x29, #8
28
+ ; CHECK-NEXT: .seh_startepilogue
29
+ ; CHECK-NEXT: ldp x29, x30, [sp], #16 // 16-byte Folded Reload
30
+ ; CHECK-NEXT: .seh_save_fplr_x 16
31
+ ; CHECK-NEXT: .seh_endepilogue
32
+ ; CHECK-NEXT: ret
33
+ ; CHECK-NEXT: .seh_endfunclet
34
+ ; CHECK-NEXT: .seh_endproc
18
35
entry:
19
36
%0 = call ptr @llvm.addressofreturnaddress ()
20
37
ret ptr %0
21
-
22
- ; CHECK-LABEL: foo
23
- ; CHECK: stp x29, x30, [sp, #-16]!
24
- ; CHECK: mov x29, sp
25
- ; CHECK: add x0, x29, #8
26
- ; CHECK: ldp x29, x30, [sp], #16
27
38
}
28
39
29
40
define dso_local i32 @"bar" (ptr %x , ...) {
41
+ ; CHECK-LABEL: bar:
42
+ ; CHECK: .seh_proc bar
43
+ ; CHECK-NEXT: // %bb.0: // %entry
44
+ ; CHECK-NEXT: sub sp, sp, #96
45
+ ; CHECK-NEXT: .seh_stackalloc 96
46
+ ; CHECK-NEXT: stp x29, x30, [sp, #16] // 16-byte Folded Spill
47
+ ; CHECK-NEXT: .seh_save_fplr 16
48
+ ; CHECK-NEXT: add x29, sp, #16
49
+ ; CHECK-NEXT: .seh_add_fp 16
50
+ ; CHECK-NEXT: .seh_endprologue
51
+ ; CHECK-NEXT: add x9, x29, #24
52
+ ; CHECK-NEXT: mov x8, x0
53
+ ; CHECK-NEXT: stp x1, x2, [x29, #24]
54
+ ; CHECK-NEXT: stp x9, x0, [sp]
55
+ ; CHECK-NEXT: add x0, x29, #24
56
+ ; CHECK-NEXT: add x1, x29, #8
57
+ ; CHECK-NEXT: stp x3, x4, [x29, #40]
58
+ ; CHECK-NEXT: stp x5, x6, [x29, #56]
59
+ ; CHECK-NEXT: str x7, [x29, #72]
60
+ ; CHECK-NEXT: blr x8
61
+ ; CHECK-NEXT: add w0, w0, #1
62
+ ; CHECK-NEXT: .seh_startepilogue
63
+ ; CHECK-NEXT: ldp x29, x30, [sp, #16] // 16-byte Folded Reload
64
+ ; CHECK-NEXT: .seh_save_fplr 16
65
+ ; CHECK-NEXT: add sp, sp, #96
66
+ ; CHECK-NEXT: .seh_stackalloc 96
67
+ ; CHECK-NEXT: .seh_endepilogue
68
+ ; CHECK-NEXT: ret
69
+ ; CHECK-NEXT: .seh_endfunclet
70
+ ; CHECK-NEXT: .seh_endproc
30
71
entry:
31
72
%x.addr = alloca ptr , align 8
32
73
%y = alloca ptr , align 8
@@ -38,13 +79,4 @@ entry:
38
79
%call = call i32 %0 (ptr %2 , ptr %1 )
39
80
%add = add nsw i32 %call , 1
40
81
ret i32 %add
41
-
42
- ; CHECK-LABEL: bar
43
- ; CHECK: sub sp, sp, #96
44
- ; CHECK: stp x29, x30, [sp, #16]
45
- ; CHECK: add x29, sp, #16
46
- ; CHECK: stp x1, x2, [x29, #24]
47
- ; CHECK: add x1, x29, #8
48
- ; CHECK: ldp x29, x30, [sp, #16]
49
- ; CHECK: add sp, sp, #96
50
82
}
0 commit comments