[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / CodeGen / RISCV / stack-guard-tls.ll
blob2992097937febf55d570e27d8ce4cf552d872baa
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 \
3 ; RUN:     | FileCheck %s
5 define void @foo(i64 %t) sspstrong nounwind {
6 ; CHECK-LABEL: foo:
7 ; CHECK:       # %bb.0:
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
28 ; CHECK-NEXT:    ret
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)
33   ret void
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}