brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 548e6ac Raw
90 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=aarch64-pc-win32 | FileCheck %s3; RUN: llc < %s -global-isel -mtriple=aarch64-pc-win32 -global-isel-abort=0 | FileCheck %s --check-prefix=GISEL4 5; Function Attrs: mustprogress noinline nounwind optnone uwtable6define i1 @va_func(i32 %a, i8 %b, i8 %c, ...) {7; CHECK-LABEL: va_func:8; CHECK:       .seh_proc va_func9; CHECK-NEXT:  // %bb.0:10; CHECK-NEXT:    sub sp, sp, #8011; CHECK-NEXT:    .seh_stackalloc 8012; CHECK-NEXT:    str x19, [sp, #16] // 8-byte Spill13; CHECK-NEXT:    .seh_save_reg x19, 1614; CHECK-NEXT:    str x30, [sp, #24] // 8-byte Spill15; CHECK-NEXT:    .seh_save_reg x30, 2416; CHECK-NEXT:    .seh_endprologue17; CHECK-NEXT:    add x8, sp, #4018; CHECK-NEXT:    mov w19, w019; CHECK-NEXT:    stp x3, x4, [sp, #40]20; CHECK-NEXT:    stp x5, x6, [sp, #56]21; CHECK-NEXT:    str x7, [sp, #72]22; CHECK-NEXT:    str x8, [sp, #8]23; CHECK-NEXT:    str w0, [sp, #4]24; CHECK-NEXT:    strb w1, [sp, #3]25; CHECK-NEXT:    strb w2, [sp, #2]26; CHECK-NEXT:    bl other27; CHECK-NEXT:    cmp w19, w028; CHECK-NEXT:    cset w0, ls29; CHECK-NEXT:    .seh_startepilogue30; CHECK-NEXT:    ldr x30, [sp, #24] // 8-byte Reload31; CHECK-NEXT:    .seh_save_reg x30, 2432; CHECK-NEXT:    ldr x19, [sp, #16] // 8-byte Reload33; CHECK-NEXT:    .seh_save_reg x19, 1634; CHECK-NEXT:    add sp, sp, #8035; CHECK-NEXT:    .seh_stackalloc 8036; CHECK-NEXT:    .seh_endepilogue37; CHECK-NEXT:    ret38; CHECK-NEXT:    .seh_endfunclet39; CHECK-NEXT:    .seh_endproc40;41; GISEL-LABEL: va_func:42; GISEL:       .seh_proc va_func43; GISEL-NEXT:  // %bb.0:44; GISEL-NEXT:    sub sp, sp, #8045; GISEL-NEXT:    .seh_stackalloc 8046; GISEL-NEXT:    str x19, [sp, #16] // 8-byte Spill47; GISEL-NEXT:    .seh_save_reg x19, 1648; GISEL-NEXT:    str x30, [sp, #24] // 8-byte Spill49; GISEL-NEXT:    .seh_save_reg x30, 2450; GISEL-NEXT:    .seh_endprologue51; GISEL-NEXT:    add x8, sp, #4052; GISEL-NEXT:    mov w19, w053; GISEL-NEXT:    stp x3, x4, [sp, #40]54; GISEL-NEXT:    stp x5, x6, [sp, #56]55; GISEL-NEXT:    str x7, [sp, #72]56; GISEL-NEXT:    str x8, [sp, #8]57; GISEL-NEXT:    str w0, [sp, #4]58; GISEL-NEXT:    strb w1, [sp, #3]59; GISEL-NEXT:    strb w2, [sp, #2]60; GISEL-NEXT:    bl other61; GISEL-NEXT:    cmp w19, w062; GISEL-NEXT:    cset w0, ls63; GISEL-NEXT:    .seh_startepilogue64; GISEL-NEXT:    ldr x30, [sp, #24] // 8-byte Reload65; GISEL-NEXT:    .seh_save_reg x30, 2466; GISEL-NEXT:    ldr x19, [sp, #16] // 8-byte Reload67; GISEL-NEXT:    .seh_save_reg x19, 1668; GISEL-NEXT:    add sp, sp, #8069; GISEL-NEXT:    .seh_stackalloc 8070; GISEL-NEXT:    .seh_endepilogue71; GISEL-NEXT:    ret72; GISEL-NEXT:    .seh_endfunclet73; GISEL-NEXT:    .seh_endproc74  %valist = alloca ptr75  call void @llvm.va_start(ptr %valist)76  %a_alloc = alloca i32, align 477  %b_alloc = alloca i8, align 178  %c_alloc = alloca i8, align 179  store i32 %a, ptr %a_alloc, align 480  store i8 %b, ptr %b_alloc, align 181  store i8 %c, ptr %c_alloc, align 182  %a_load = load i32, ptr %a_alloc, align 483  %ret = call noundef i32 @other()84  %cmp = icmp ule i32 %a_load, %ret85  call void @llvm.va_end(ptr %valist)86  ret i1 %cmp87}88 89declare i32 @other()90