brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 2a655bf Raw
112 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -mtriple=riscv32 < %s | FileCheck -check-prefixes=CHECK,RV32I %s3; RUN: llc -global-isel -mtriple=riscv64 < %s | FileCheck -check-prefix=RV64I %s4 5declare i32 @external_many_args(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) nounwind6 7define i32 @test_call_external_many_args(i32 %a) nounwind {8; CHECK-LABEL: test_call_external_many_args:9; CHECK:       # %bb.0:10; CHECK-NEXT:    addi sp, sp, -1611; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill12; CHECK-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill13; CHECK-NEXT:    mv s0, a014; CHECK-NEXT:    sw a0, 0(sp)15; CHECK-NEXT:    sw a0, 4(sp)16; CHECK-NEXT:    mv a1, a017; CHECK-NEXT:    mv a2, a018; CHECK-NEXT:    mv a3, a019; CHECK-NEXT:    mv a4, a020; CHECK-NEXT:    mv a5, a021; CHECK-NEXT:    mv a6, a022; CHECK-NEXT:    mv a7, a023; CHECK-NEXT:    call external_many_args24; CHECK-NEXT:    mv a0, s025; CHECK-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload26; CHECK-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload27; CHECK-NEXT:    addi sp, sp, 1628; CHECK-NEXT:    ret29;30; RV64I-LABEL: test_call_external_many_args:31; RV64I:       # %bb.0:32; RV64I-NEXT:    addi sp, sp, -3233; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill34; RV64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill35; RV64I-NEXT:    mv s0, a036; RV64I-NEXT:    sd a0, 0(sp)37; RV64I-NEXT:    sd a0, 8(sp)38; RV64I-NEXT:    mv a1, a039; RV64I-NEXT:    mv a2, a040; RV64I-NEXT:    mv a3, a041; RV64I-NEXT:    mv a4, a042; RV64I-NEXT:    mv a5, a043; RV64I-NEXT:    mv a6, a044; RV64I-NEXT:    mv a7, a045; RV64I-NEXT:    call external_many_args46; RV64I-NEXT:    mv a0, s047; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload48; RV64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload49; RV64I-NEXT:    addi sp, sp, 3250; RV64I-NEXT:    ret51  %1 = call i32 @external_many_args(i32 %a, i32 %a, i32 %a, i32 %a, i32 %a,52                                    i32 %a, i32 %a, i32 %a, i32 %a, i32 %a)53  ret i32 %a54}55 56define fastcc void @fastcc_call_nonfastcc(){57; CHECK-LABEL: fastcc_call_nonfastcc:58; CHECK:       # %bb.0:59; CHECK-NEXT:    addi sp, sp, -1660; CHECK-NEXT:    .cfi_def_cfa_offset 1661; CHECK-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill62; CHECK-NEXT:    .cfi_offset ra, -463; CHECK-NEXT:    li t0, 964; CHECK-NEXT:    li t1, 1065; CHECK-NEXT:    li a0, 166; CHECK-NEXT:    li a1, 267; CHECK-NEXT:    li a2, 368; CHECK-NEXT:    li a3, 469; CHECK-NEXT:    li a4, 570; CHECK-NEXT:    li a5, 671; CHECK-NEXT:    li a6, 772; CHECK-NEXT:    li a7, 873; CHECK-NEXT:    sw t0, 0(sp)74; CHECK-NEXT:    sw t1, 4(sp)75; CHECK-NEXT:    call external_many_args76; CHECK-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload77; CHECK-NEXT:    .cfi_restore ra78; CHECK-NEXT:    addi sp, sp, 1679; CHECK-NEXT:    .cfi_def_cfa_offset 080; CHECK-NEXT:    ret81;82; RV64I-LABEL: fastcc_call_nonfastcc:83; RV64I:       # %bb.0:84; RV64I-NEXT:    addi sp, sp, -3285; RV64I-NEXT:    .cfi_def_cfa_offset 3286; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill87; RV64I-NEXT:    .cfi_offset ra, -888; RV64I-NEXT:    li t0, 989; RV64I-NEXT:    li t1, 1090; RV64I-NEXT:    li a0, 191; RV64I-NEXT:    li a1, 292; RV64I-NEXT:    li a2, 393; RV64I-NEXT:    li a3, 494; RV64I-NEXT:    li a4, 595; RV64I-NEXT:    li a5, 696; RV64I-NEXT:    li a6, 797; RV64I-NEXT:    li a7, 898; RV64I-NEXT:    sd t0, 0(sp)99; RV64I-NEXT:    sd t1, 8(sp)100; RV64I-NEXT:    call external_many_args101; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload102; RV64I-NEXT:    .cfi_restore ra103; RV64I-NEXT:    addi sp, sp, 32104; RV64I-NEXT:    .cfi_def_cfa_offset 0105; RV64I-NEXT:    ret106  call void @external_many_args(i32 1, i32 2,i32 3,i32 4,i32 5,i32 6,i32 7,i32 8,i32 9,i32 10)107  ret void108}109 110;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:111; RV32I: {{.*}}112