89 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs \3; RUN: < %s | FileCheck %s4 5define signext i32 @foo(i32 signext %aa) #0 {6; CHECK-LABEL: foo:7; CHECK: # %bb.0: # %entry8; CHECK-NEXT: addi sp, sp, -969; CHECK-NEXT: .cfi_def_cfa_offset 9610; CHECK-NEXT: sd ra, 88(sp) # 8-byte Folded Spill11; CHECK-NEXT: sd s0, 80(sp) # 8-byte Folded Spill12; CHECK-NEXT: sd s1, 72(sp) # 8-byte Folded Spill13; CHECK-NEXT: .cfi_offset ra, -814; CHECK-NEXT: .cfi_offset s0, -1615; CHECK-NEXT: .cfi_offset s1, -2416; CHECK-NEXT: addi s0, sp, 9617; CHECK-NEXT: .cfi_def_cfa s0, 018; CHECK-NEXT: csrr a1, vlenb19; CHECK-NEXT: sub sp, sp, a120; CHECK-NEXT: andi sp, sp, -1621; CHECK-NEXT: mv s1, sp22; CHECK-NEXT: lw t0, 44(s1)23; CHECK-NEXT: lw a2, 40(s1)24; CHECK-NEXT: lw a3, 36(s1)25; CHECK-NEXT: lw a4, 32(s1)26; CHECK-NEXT: lw a5, 28(s1)27; CHECK-NEXT: lw a6, 24(s1)28; CHECK-NEXT: lw a7, 20(s1)29; CHECK-NEXT: lw t1, 16(s1)30; CHECK-NEXT: lw t2, 12(s1)31; CHECK-NEXT: lw t3, 8(s1)32; CHECK-NEXT: sw a0, 52(s1)33; CHECK-NEXT: sw a0, 48(s1)34; CHECK-NEXT: addi sp, sp, -3235; CHECK-NEXT: addi a1, s1, 4836; CHECK-NEXT: sd t1, 0(sp)37; CHECK-NEXT: sd t2, 8(sp)38; CHECK-NEXT: sd t3, 16(sp)39; CHECK-NEXT: mv a0, t040; CHECK-NEXT: call gfunc41; CHECK-NEXT: addi sp, sp, 3242; CHECK-NEXT: li a0, 043; CHECK-NEXT: addi sp, s0, -9644; CHECK-NEXT: .cfi_def_cfa sp, 9645; CHECK-NEXT: ld ra, 88(sp) # 8-byte Folded Reload46; CHECK-NEXT: ld s0, 80(sp) # 8-byte Folded Reload47; CHECK-NEXT: ld s1, 72(sp) # 8-byte Folded Reload48; CHECK-NEXT: .cfi_restore ra49; CHECK-NEXT: .cfi_restore s050; CHECK-NEXT: .cfi_restore s151; CHECK-NEXT: addi sp, sp, 9652; CHECK-NEXT: .cfi_def_cfa_offset 053; CHECK-NEXT: ret54entry:55 %aa.addr = alloca i32, align 456 %local = alloca i32, align 457 %a = alloca i32, align 458 %b = alloca i32, align 459 %c = alloca i32, align 460 %d = alloca i32, align 461 %e = alloca i32, align 462 %f = alloca i32, align 463 %g = alloca i32, align 464 %h = alloca i32, align 465 %i = alloca i32, align 466 %j = alloca i32, align 467 %local_v = alloca <vscale x 2 x i32>, align 468 store i32 %aa, ptr %aa.addr, align 469 %0 = load i32, ptr %aa.addr, align 470 store i32 %0, ptr %local, align 471 %1 = load i32, ptr %a, align 472 %2 = load i32, ptr %b, align 473 %3 = load i32, ptr %c, align 474 %4 = load i32, ptr %d, align 475 %5 = load i32, ptr %e, align 476 %6 = load i32, ptr %f, align 477 %7 = load i32, ptr %g, align 478 %8 = load i32, ptr %h, align 479 %9 = load i32, ptr %i, align 480 %10 = load i32, ptr %j, align 481 call void @gfunc(i32 signext %1, ptr %local, i32 signext %2, i32 signext %3, i32 signext %4, i32 signext %5, i32 signext %6, i32 signext %7, i32 %8, i32 %9, i32 %10)82 ret i32 083}84 85declare void @gfunc(i32 signext, ptr, i32 signext, i32 signext, i32 signext, i32 signext, i32 signext, i32 signext, i32, i32, i32) #186 87attributes #0 = { "stackrealign" }88attributes #1 = { "stackrealign" }89