1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=riscv64 | FileCheck %s
3
4; Make sure we emit an lw for the stack reload in 'truebb'.
5define i1 @foo(i64 %x, i32 %y) nounwind {
6; CHECK-LABEL: foo:
7; CHECK:       # %bb.0:
8; CHECK-NEXT:    addi sp, sp, -144
9; CHECK-NEXT:    sd ra, 136(sp) # 8-byte Folded Spill
10; CHECK-NEXT:    sd gp, 128(sp) # 8-byte Folded Spill
11; CHECK-NEXT:    sd tp, 120(sp) # 8-byte Folded Spill
12; CHECK-NEXT:    sd s0, 112(sp) # 8-byte Folded Spill
13; CHECK-NEXT:    sd s1, 104(sp) # 8-byte Folded Spill
14; CHECK-NEXT:    sd s2, 96(sp) # 8-byte Folded Spill
15; CHECK-NEXT:    sd s3, 88(sp) # 8-byte Folded Spill
16; CHECK-NEXT:    sd s4, 80(sp) # 8-byte Folded Spill
17; CHECK-NEXT:    sd s5, 72(sp) # 8-byte Folded Spill
18; CHECK-NEXT:    sd s6, 64(sp) # 8-byte Folded Spill
19; CHECK-NEXT:    sd s7, 56(sp) # 8-byte Folded Spill
20; CHECK-NEXT:    sd s8, 48(sp) # 8-byte Folded Spill
21; CHECK-NEXT:    sd s9, 40(sp) # 8-byte Folded Spill
22; CHECK-NEXT:    sd s10, 32(sp) # 8-byte Folded Spill
23; CHECK-NEXT:    sd s11, 24(sp) # 8-byte Folded Spill
24; CHECK-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill
25; CHECK-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
26; CHECK-NEXT:    #APP
27; CHECK-NEXT:    #NO_APP
28; CHECK-NEXT:    ld a0, 16(sp) # 8-byte Folded Reload
29; CHECK-NEXT:    beqz a0, .LBB0_2
30; CHECK-NEXT:  # %bb.1: # %falsebb
31; CHECK-NEXT:    li a0, 0
32; CHECK-NEXT:    j .LBB0_3
33; CHECK-NEXT:  .LBB0_2: # %truebb
34; CHECK-NEXT:    lw a0, 8(sp) # 8-byte Folded Reload
35; CHECK-NEXT:    slti a0, a0, 0
36; CHECK-NEXT:  .LBB0_3: # %falsebb
37; CHECK-NEXT:    ld ra, 136(sp) # 8-byte Folded Reload
38; CHECK-NEXT:    ld gp, 128(sp) # 8-byte Folded Reload
39; CHECK-NEXT:    ld tp, 120(sp) # 8-byte Folded Reload
40; CHECK-NEXT:    ld s0, 112(sp) # 8-byte Folded Reload
41; CHECK-NEXT:    ld s1, 104(sp) # 8-byte Folded Reload
42; CHECK-NEXT:    ld s2, 96(sp) # 8-byte Folded Reload
43; CHECK-NEXT:    ld s3, 88(sp) # 8-byte Folded Reload
44; CHECK-NEXT:    ld s4, 80(sp) # 8-byte Folded Reload
45; CHECK-NEXT:    ld s5, 72(sp) # 8-byte Folded Reload
46; CHECK-NEXT:    ld s6, 64(sp) # 8-byte Folded Reload
47; CHECK-NEXT:    ld s7, 56(sp) # 8-byte Folded Reload
48; CHECK-NEXT:    ld s8, 48(sp) # 8-byte Folded Reload
49; CHECK-NEXT:    ld s9, 40(sp) # 8-byte Folded Reload
50; CHECK-NEXT:    ld s10, 32(sp) # 8-byte Folded Reload
51; CHECK-NEXT:    ld s11, 24(sp) # 8-byte Folded Reload
52; CHECK-NEXT:    addi sp, sp, 144
53; CHECK-NEXT:    ret
54  tail call void asm sideeffect "", "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"()
55  %a = icmp eq i64 %x, 0
56  br i1 %a, label %truebb, label %falsebb
57truebb:
58  %b = icmp slt i32 %y, 0
59  ret i1 %b
60falsebb:
61  ret i1 0
62}
63