11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22; RUN: llc < %s -mtriple=aarch64-pc-win32 | FileCheck %s
3- ; RUN: llc < %s -global-isel -mtriple=aarch64-pc-win32 -global-isel-abort=0 | FileCheck %s --check-prefix=GISEL
4-
5- %struct.__va_list = type { ptr , ptr , ptr , i32 , i32 }
3+ ; RUN: llc < %s -global-isel -mtriple=aarch64-pc-win32 | FileCheck %s --check-prefix=GISEL
64
75; Function Attrs: mustprogress noinline nounwind optnone uwtable
86define i1 @va_func (i32 %a , i8 %b , i8 %c , ...) {
97; CHECK-LABEL: va_func:
108; CHECK: .seh_proc va_func
119; CHECK-NEXT: // %bb.0:
12- ; CHECK-NEXT: sub sp, sp, #112
13- ; CHECK-NEXT: .seh_stackalloc 112
14- ; CHECK-NEXT: str x19, [sp, #48 ] // 8-byte Folded Spill
15- ; CHECK-NEXT: .seh_save_reg x19, 48
16- ; CHECK-NEXT: str x30, [sp, #56 ] // 8-byte Folded Spill
17- ; CHECK-NEXT: .seh_save_reg x30, 56
10+ ; CHECK-NEXT: sub sp, sp, #80
11+ ; CHECK-NEXT: .seh_stackalloc 80
12+ ; CHECK-NEXT: str x19, [sp, #16 ] // 8-byte Folded Spill
13+ ; CHECK-NEXT: .seh_save_reg x19, 16
14+ ; CHECK-NEXT: str x30, [sp, #24 ] // 8-byte Folded Spill
15+ ; CHECK-NEXT: .seh_save_reg x30, 24
1816; CHECK-NEXT: .seh_endprologue
19- ; CHECK-NEXT: add x8, sp, #72
2017; CHECK-NEXT: mov w19, w0
21- ; CHECK-NEXT: stp x3, x4, [sp, #72]
22- ; CHECK-NEXT: stp x5, x6, [sp, #88]
23- ; CHECK-NEXT: str x7, [sp, #104]
24- ; CHECK-NEXT: str x8, [sp, #16]
18+ ; CHECK-NEXT: stp x3, x4, [sp, #40]
19+ ; CHECK-NEXT: stp x5, x6, [sp, #56]
20+ ; CHECK-NEXT: str x7, [sp, #72]
2521; CHECK-NEXT: str w0, [sp, #12]
2622; CHECK-NEXT: strb w1, [sp, #11]
2723; CHECK-NEXT: strb w2, [sp, #10]
2824; CHECK-NEXT: bl other
2925; CHECK-NEXT: cmp w19, w0
3026; CHECK-NEXT: cset w0, ls
3127; CHECK-NEXT: .seh_startepilogue
32- ; CHECK-NEXT: ldr x30, [sp, #56 ] // 8-byte Folded Reload
33- ; CHECK-NEXT: .seh_save_reg x30, 56
34- ; CHECK-NEXT: ldr x19, [sp, #48 ] // 8-byte Folded Reload
35- ; CHECK-NEXT: .seh_save_reg x19, 48
36- ; CHECK-NEXT: add sp, sp, #112
37- ; CHECK-NEXT: .seh_stackalloc 112
28+ ; CHECK-NEXT: ldr x30, [sp, #24 ] // 8-byte Folded Reload
29+ ; CHECK-NEXT: .seh_save_reg x30, 24
30+ ; CHECK-NEXT: ldr x19, [sp, #16 ] // 8-byte Folded Reload
31+ ; CHECK-NEXT: .seh_save_reg x19, 16
32+ ; CHECK-NEXT: add sp, sp, #80
33+ ; CHECK-NEXT: .seh_stackalloc 80
3834; CHECK-NEXT: .seh_endepilogue
3935; CHECK-NEXT: ret
4036; CHECK-NEXT: .seh_endfunclet
@@ -43,38 +39,34 @@ define i1 @va_func(i32 %a, i8 %b, i8 %c, ...) {
4339; GISEL-LABEL: va_func:
4440; GISEL: .seh_proc va_func
4541; GISEL-NEXT: // %bb.0:
46- ; GISEL-NEXT: sub sp, sp, #112
47- ; GISEL-NEXT: .seh_stackalloc 112
48- ; GISEL-NEXT: str x19, [sp, #48 ] // 8-byte Folded Spill
49- ; GISEL-NEXT: .seh_save_reg x19, 48
50- ; GISEL-NEXT: str x30, [sp, #56 ] // 8-byte Folded Spill
51- ; GISEL-NEXT: .seh_save_reg x30, 56
42+ ; GISEL-NEXT: sub sp, sp, #80
43+ ; GISEL-NEXT: .seh_stackalloc 80
44+ ; GISEL-NEXT: str x19, [sp, #16 ] // 8-byte Folded Spill
45+ ; GISEL-NEXT: .seh_save_reg x19, 16
46+ ; GISEL-NEXT: str x30, [sp, #24 ] // 8-byte Folded Spill
47+ ; GISEL-NEXT: .seh_save_reg x30, 24
5248; GISEL-NEXT: .seh_endprologue
53- ; GISEL-NEXT: add x8, sp, #72
49+ ; GISEL-NEXT: stp x3, x4, [ sp, #40]
5450; GISEL-NEXT: mov w19, w0
55- ; GISEL-NEXT: stp x3, x4, [sp, #72]
56- ; GISEL-NEXT: stp x5, x6, [sp, #88]
57- ; GISEL-NEXT: str x7, [sp, #104]
58- ; GISEL-NEXT: str x8, [sp, #16]
51+ ; GISEL-NEXT: stp x5, x6, [sp, #56]
52+ ; GISEL-NEXT: str x7, [sp, #72]
5953; GISEL-NEXT: str w0, [sp, #12]
6054; GISEL-NEXT: strb w1, [sp, #11]
6155; GISEL-NEXT: strb w2, [sp, #10]
6256; GISEL-NEXT: bl other
6357; GISEL-NEXT: cmp w19, w0
6458; GISEL-NEXT: cset w0, ls
6559; GISEL-NEXT: .seh_startepilogue
66- ; GISEL-NEXT: ldr x30, [sp, #56 ] // 8-byte Folded Reload
67- ; GISEL-NEXT: .seh_save_reg x30, 56
68- ; GISEL-NEXT: ldr x19, [sp, #48 ] // 8-byte Folded Reload
69- ; GISEL-NEXT: .seh_save_reg x19, 48
70- ; GISEL-NEXT: add sp, sp, #112
71- ; GISEL-NEXT: .seh_stackalloc 112
60+ ; GISEL-NEXT: ldr x30, [sp, #24 ] // 8-byte Folded Reload
61+ ; GISEL-NEXT: .seh_save_reg x30, 24
62+ ; GISEL-NEXT: ldr x19, [sp, #16 ] // 8-byte Folded Reload
63+ ; GISEL-NEXT: .seh_save_reg x19, 16
64+ ; GISEL-NEXT: add sp, sp, #80
65+ ; GISEL-NEXT: .seh_stackalloc 80
7266; GISEL-NEXT: .seh_endepilogue
7367; GISEL-NEXT: ret
7468; GISEL-NEXT: .seh_endfunclet
7569; GISEL-NEXT: .seh_endproc
76- %valist = alloca %struct.__va_list
77- call void @llvm.va_start (ptr %valist )
7870 %a_alloc = alloca i32 , align 4
7971 %b_alloc = alloca i8 , align 1
8072 %c_alloc = alloca i8 , align 1
@@ -84,7 +76,6 @@ define i1 @va_func(i32 %a, i8 %b, i8 %c, ...) {
8476 %a_load = load i32 , ptr %a_alloc , align 4
8577 %ret = call noundef i32 @other ()
8678 %cmp = icmp ule i32 %a_load , %ret
87- call void @llvm.va_end (ptr %valist )
8879 ret i1 %cmp
8980}
9081
0 commit comments