16e410bc9SCraig Topper; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 26e410bc9SCraig Topper; RUN: llc -global-isel=1 -mtriple=riscv32 -o - %s | FileCheck %s --check-prefix=RV32 36e410bc9SCraig Topper; RUN: llc -global-isel=1 -mtriple=riscv64 -o - %s | FileCheck %s --check-prefix=RV64 46e410bc9SCraig Topper 56e410bc9SCraig Topperdeclare void @use_addr(ptr) 66e410bc9SCraig Topper 76e410bc9SCraig Topperdefine void @test_scoped_alloca(i64 %n) { 86e410bc9SCraig Topper; RV32-LABEL: test_scoped_alloca: 96e410bc9SCraig Topper; RV32: # %bb.0: 106e410bc9SCraig Topper; RV32-NEXT: addi sp, sp, -16 116e410bc9SCraig Topper; RV32-NEXT: .cfi_def_cfa_offset 16 126e410bc9SCraig Topper; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 136e410bc9SCraig Topper; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill 146e410bc9SCraig Topper; RV32-NEXT: sw s1, 4(sp) # 4-byte Folded Spill 156e410bc9SCraig Topper; RV32-NEXT: .cfi_offset ra, -4 166e410bc9SCraig Topper; RV32-NEXT: .cfi_offset s0, -8 176e410bc9SCraig Topper; RV32-NEXT: .cfi_offset s1, -12 186e410bc9SCraig Topper; RV32-NEXT: addi s0, sp, 16 196e410bc9SCraig Topper; RV32-NEXT: .cfi_def_cfa s0, 0 206e410bc9SCraig Topper; RV32-NEXT: addi a0, a0, 15 216e410bc9SCraig Topper; RV32-NEXT: andi a0, a0, -16 226e410bc9SCraig Topper; RV32-NEXT: sub a0, sp, a0 236e410bc9SCraig Topper; RV32-NEXT: mv s1, sp 246e410bc9SCraig Topper; RV32-NEXT: mv sp, a0 256e410bc9SCraig Topper; RV32-NEXT: call use_addr 266e410bc9SCraig Topper; RV32-NEXT: mv sp, s1 276e410bc9SCraig Topper; RV32-NEXT: addi sp, s0, -16 28*97982a8cSdlav-sc; RV32-NEXT: .cfi_def_cfa sp, 16 296e410bc9SCraig Topper; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 306e410bc9SCraig Topper; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload 316e410bc9SCraig Topper; RV32-NEXT: lw s1, 4(sp) # 4-byte Folded Reload 32*97982a8cSdlav-sc; RV32-NEXT: .cfi_restore ra 33*97982a8cSdlav-sc; RV32-NEXT: .cfi_restore s0 34*97982a8cSdlav-sc; RV32-NEXT: .cfi_restore s1 356e410bc9SCraig Topper; RV32-NEXT: addi sp, sp, 16 36*97982a8cSdlav-sc; RV32-NEXT: .cfi_def_cfa_offset 0 376e410bc9SCraig Topper; RV32-NEXT: ret 386e410bc9SCraig Topper; 396e410bc9SCraig Topper; RV64-LABEL: test_scoped_alloca: 406e410bc9SCraig Topper; RV64: # %bb.0: 416e410bc9SCraig Topper; RV64-NEXT: addi sp, sp, -32 426e410bc9SCraig Topper; RV64-NEXT: .cfi_def_cfa_offset 32 436e410bc9SCraig Topper; RV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill 446e410bc9SCraig Topper; RV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill 456e410bc9SCraig Topper; RV64-NEXT: sd s1, 8(sp) # 8-byte Folded Spill 466e410bc9SCraig Topper; RV64-NEXT: .cfi_offset ra, -8 476e410bc9SCraig Topper; RV64-NEXT: .cfi_offset s0, -16 486e410bc9SCraig Topper; RV64-NEXT: .cfi_offset s1, -24 496e410bc9SCraig Topper; RV64-NEXT: addi s0, sp, 32 506e410bc9SCraig Topper; RV64-NEXT: .cfi_def_cfa s0, 0 516e410bc9SCraig Topper; RV64-NEXT: addi a0, a0, 15 526e410bc9SCraig Topper; RV64-NEXT: andi a0, a0, -16 536e410bc9SCraig Topper; RV64-NEXT: sub a0, sp, a0 546e410bc9SCraig Topper; RV64-NEXT: mv s1, sp 556e410bc9SCraig Topper; RV64-NEXT: mv sp, a0 566e410bc9SCraig Topper; RV64-NEXT: call use_addr 576e410bc9SCraig Topper; RV64-NEXT: mv sp, s1 586e410bc9SCraig Topper; RV64-NEXT: addi sp, s0, -32 59*97982a8cSdlav-sc; RV64-NEXT: .cfi_def_cfa sp, 32 606e410bc9SCraig Topper; RV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload 616e410bc9SCraig Topper; RV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload 626e410bc9SCraig Topper; RV64-NEXT: ld s1, 8(sp) # 8-byte Folded Reload 63*97982a8cSdlav-sc; RV64-NEXT: .cfi_restore ra 64*97982a8cSdlav-sc; RV64-NEXT: .cfi_restore s0 65*97982a8cSdlav-sc; RV64-NEXT: .cfi_restore s1 666e410bc9SCraig Topper; RV64-NEXT: addi sp, sp, 32 67*97982a8cSdlav-sc; RV64-NEXT: .cfi_def_cfa_offset 0 686e410bc9SCraig Topper; RV64-NEXT: ret 696e410bc9SCraig Topper %sp = call ptr @llvm.stacksave.p0() 706e410bc9SCraig Topper %addr = alloca i8, i64 %n 716e410bc9SCraig Topper call void @use_addr(ptr %addr) 726e410bc9SCraig Topper call void @llvm.stackrestore.p0(ptr %sp) 736e410bc9SCraig Topper ret void 746e410bc9SCraig Topper} 75