brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 7d488c9 Raw
130 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=aarch64-linux-gnu | FileCheck %s3; RUN: llc < %s --global-isel=1 -mtriple=aarch64-apple-darwin | FileCheck %s --check-prefix=DARWIN4 5define win64cc void @pass_va(i32 %count, ...) nounwind {6; CHECK-LABEL: pass_va:7; CHECK:       // %bb.0: // %entry8; CHECK-NEXT:    sub sp, sp, #969; CHECK-NEXT:    add x8, sp, #4010; CHECK-NEXT:    add x0, sp, #4011; CHECK-NEXT:    stp x30, x18, [sp, #16] // 16-byte Folded Spill12; CHECK-NEXT:    stp x1, x2, [sp, #40]13; CHECK-NEXT:    stp x3, x4, [sp, #56]14; CHECK-NEXT:    stp x5, x6, [sp, #72]15; CHECK-NEXT:    str x7, [sp, #88]16; CHECK-NEXT:    str x8, [sp, #8]17; CHECK-NEXT:    bl other_func18; CHECK-NEXT:    ldp x30, x18, [sp, #16] // 16-byte Folded Reload19; CHECK-NEXT:    add sp, sp, #9620; CHECK-NEXT:    ret21;22; DARWIN-LABEL: pass_va:23; DARWIN:       ; %bb.0: ; %entry24; DARWIN-NEXT:    str x18, [sp, #-96]! ; 8-byte Folded Spill25; DARWIN-NEXT:    add x8, sp, #826; DARWIN-NEXT:    add x9, sp, #4027; DARWIN-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill28; DARWIN-NEXT:    str x9, [x8]29; DARWIN-NEXT:    ldr x0, [sp, #8]30; DARWIN-NEXT:    stp x1, x2, [sp, #40]31; DARWIN-NEXT:    stp x3, x4, [sp, #56]32; DARWIN-NEXT:    stp x5, x6, [sp, #72]33; DARWIN-NEXT:    str x7, [sp, #88]34; DARWIN-NEXT:    bl _other_func35; DARWIN-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload36; DARWIN-NEXT:    ldr x18, [sp], #96 ; 8-byte Folded Reload37; DARWIN-NEXT:    ret38entry:39  %ap = alloca ptr, align 840  call void @llvm.va_start(ptr %ap)41  %ap2 = load ptr, ptr %ap, align 842  call void @other_func(ptr %ap2)43  ret void44}45 46declare void @other_func(ptr) local_unnamed_addr47 48declare void @llvm.va_start(ptr) nounwind49declare void @llvm.va_copy(ptr, ptr) nounwind50 51define win64cc ptr @f9(i64 %a0, i64 %a1, i64 %a2, i64 %a3, i64 %a4, i64 %a5, i64 %a6, i64 %a7, i64 %a8, ...) nounwind {52; CHECK-LABEL: f9:53; CHECK:       // %bb.0: // %entry54; CHECK-NEXT:    str x18, [sp, #-16]! // 8-byte Folded Spill55; CHECK-NEXT:    add x8, sp, #2456; CHECK-NEXT:    add x0, sp, #2457; CHECK-NEXT:    str x8, [sp, #8]58; CHECK-NEXT:    ldr x18, [sp], #16 // 8-byte Folded Reload59; CHECK-NEXT:    ret60;61; DARWIN-LABEL: f9:62; DARWIN:       ; %bb.0: ; %entry63; DARWIN-NEXT:    str x18, [sp, #-16]! ; 8-byte Folded Spill64; DARWIN-NEXT:    add x8, sp, #865; DARWIN-NEXT:    add x9, sp, #2466; DARWIN-NEXT:    str x9, [x8]67; DARWIN-NEXT:    ldr x0, [sp, #8]68; DARWIN-NEXT:    ldr x18, [sp], #16 ; 8-byte Folded Reload69; DARWIN-NEXT:    ret70entry:71  %ap = alloca ptr, align 872  call void @llvm.va_start(ptr %ap)73  %ap2 = load ptr, ptr %ap, align 874  ret ptr %ap275}76 77define win64cc ptr @f8(i64 %a0, i64 %a1, i64 %a2, i64 %a3, i64 %a4, i64 %a5, i64 %a6, i64 %a7, ...) nounwind {78; CHECK-LABEL: f8:79; CHECK:       // %bb.0: // %entry80; CHECK-NEXT:    str x18, [sp, #-16]! // 8-byte Folded Spill81; CHECK-NEXT:    add x8, sp, #1682; CHECK-NEXT:    add x0, sp, #1683; CHECK-NEXT:    str x8, [sp, #8]84; CHECK-NEXT:    ldr x18, [sp], #16 // 8-byte Folded Reload85; CHECK-NEXT:    ret86;87; DARWIN-LABEL: f8:88; DARWIN:       ; %bb.0: ; %entry89; DARWIN-NEXT:    str x18, [sp, #-16]! ; 8-byte Folded Spill90; DARWIN-NEXT:    add x8, sp, #891; DARWIN-NEXT:    add x9, sp, #1692; DARWIN-NEXT:    str x9, [x8]93; DARWIN-NEXT:    ldr x0, [sp, #8]94; DARWIN-NEXT:    ldr x18, [sp], #16 ; 8-byte Folded Reload95; DARWIN-NEXT:    ret96entry:97  %ap = alloca ptr, align 898  call void @llvm.va_start(ptr %ap)99  %ap2 = load ptr, ptr %ap, align 8100  ret ptr %ap2101}102 103define win64cc ptr @f7(i64 %a0, i64 %a1, i64 %a2, i64 %a3, i64 %a4, i64 %a5, i64 %a6, ...) nounwind {104; CHECK-LABEL: f7:105; CHECK:       // %bb.0: // %entry106; CHECK-NEXT:    str x18, [sp, #-32]! // 8-byte Folded Spill107; CHECK-NEXT:    add x8, sp, #24108; CHECK-NEXT:    add x0, sp, #24109; CHECK-NEXT:    str x7, [sp, #24]110; CHECK-NEXT:    str x8, [sp, #8]111; CHECK-NEXT:    ldr x18, [sp], #32 // 8-byte Folded Reload112; CHECK-NEXT:    ret113;114; DARWIN-LABEL: f7:115; DARWIN:       ; %bb.0: ; %entry116; DARWIN-NEXT:    str x18, [sp, #-32]! ; 8-byte Folded Spill117; DARWIN-NEXT:    add x8, sp, #8118; DARWIN-NEXT:    add x9, sp, #24119; DARWIN-NEXT:    str x7, [sp, #24]120; DARWIN-NEXT:    str x9, [x8]121; DARWIN-NEXT:    ldr x0, [sp, #8]122; DARWIN-NEXT:    ldr x18, [sp], #32 ; 8-byte Folded Reload123; DARWIN-NEXT:    ret124entry:125  %ap = alloca ptr, align 8126  call void @llvm.va_start(ptr %ap)127  %ap2 = load ptr, ptr %ap, align 8128  ret ptr %ap2129}130