1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2 ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
5 define void @foo(i64 %t) sspstrong nounwind {
8 ; CHECK-NEXT: addi sp, sp, -32
9 ; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
10 ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
11 ; CHECK-NEXT: addi s0, sp, 32
12 ; CHECK-NEXT: ld a1, 500(tp)
13 ; CHECK-NEXT: sd a1, -24(s0)
14 ; CHECK-NEXT: slli a0, a0, 2
15 ; CHECK-NEXT: addi a0, a0, 15
16 ; CHECK-NEXT: andi a0, a0, -16
17 ; CHECK-NEXT: sub a0, sp, a0
18 ; CHECK-NEXT: mv sp, a0
19 ; CHECK-NEXT: call baz
20 ; CHECK-NEXT: ld a0, 500(tp)
21 ; CHECK-NEXT: ld a1, -24(s0)
22 ; CHECK-NEXT: bne a0, a1, .LBB0_2
23 ; CHECK-NEXT: # %bb.1: # %SP_return
24 ; CHECK-NEXT: addi sp, s0, -32
25 ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
26 ; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
27 ; CHECK-NEXT: addi sp, sp, 32
29 ; CHECK-NEXT: .LBB0_2: # %CallStackCheckFailBlk
30 ; CHECK-NEXT: call __stack_chk_fail
31 %vla = alloca i32, i64 %t, align 4
32 call void @baz(ptr %vla)
36 declare void @baz(ptr)
38 !llvm.module.flags = !{!1, !2, !3}
39 !1 = !{i32 2, !"stack-protector-guard", !"tls"}
40 !2 = !{i32 2, !"stack-protector-guard-reg", !"tp"}
41 !3 = !{i32 2, !"stack-protector-guard-offset", i32 500}