blob: f8b5e9833213c78afa651b49ab9a9890e6a6df7d [file] [log] [blame]
Alex Bradburyffc435e2017-11-21 08:11:03 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
3; RUN: | FileCheck %s -check-prefix=RV32I
4
5define void @jt(i32 %in, i32* %out) {
6; RV32I-LABEL: jt:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +00007; RV32I: # %bb.0: # %entry
Alex Bradburyb014e3d2017-12-11 12:34:11 +00008; RV32I-NEXT: addi sp, sp, -16
9; RV32I-NEXT: sw ra, 12(sp)
10; RV32I-NEXT: sw s0, 8(sp)
11; RV32I-NEXT: addi s0, sp, 16
Alex Bradburyffc435e2017-11-21 08:11:03 +000012; RV32I-NEXT: addi a2, zero, 2
13; RV32I-NEXT: blt a2, a0, .LBB0_3
14; RV32I-NEXT: jal zero, .LBB0_1
15; RV32I-NEXT: .LBB0_1: # %entry
16; RV32I-NEXT: addi a3, zero, 1
17; RV32I-NEXT: beq a0, a3, .LBB0_5
18; RV32I-NEXT: jal zero, .LBB0_2
19; RV32I-NEXT: .LBB0_2: # %entry
20; RV32I-NEXT: beq a0, a2, .LBB0_6
21; RV32I-NEXT: jal zero, .LBB0_9
22; RV32I-NEXT: .LBB0_6: # %bb2
23; RV32I-NEXT: addi a0, zero, 3
24; RV32I-NEXT: sw a0, 0(a1)
25; RV32I-NEXT: jal zero, .LBB0_9
26; RV32I-NEXT: .LBB0_3: # %entry
27; RV32I-NEXT: addi a3, zero, 3
28; RV32I-NEXT: beq a0, a3, .LBB0_7
29; RV32I-NEXT: jal zero, .LBB0_4
30; RV32I-NEXT: .LBB0_4: # %entry
31; RV32I-NEXT: addi a2, zero, 4
32; RV32I-NEXT: beq a0, a2, .LBB0_8
33; RV32I-NEXT: jal zero, .LBB0_9
34; RV32I-NEXT: .LBB0_8: # %bb4
35; RV32I-NEXT: addi a0, zero, 1
36; RV32I-NEXT: sw a0, 0(a1)
37; RV32I-NEXT: .LBB0_9: # %exit
Alex Bradburyb014e3d2017-12-11 12:34:11 +000038; RV32I-NEXT: lw s0, 8(sp)
39; RV32I-NEXT: lw ra, 12(sp)
40; RV32I-NEXT: addi sp, sp, 16
Alex Bradburyffc435e2017-11-21 08:11:03 +000041; RV32I-NEXT: jalr zero, ra, 0
42; RV32I-NEXT: .LBB0_5: # %bb1
43; RV32I-NEXT: addi a0, zero, 4
44; RV32I-NEXT: sw a0, 0(a1)
45; RV32I-NEXT: jal zero, .LBB0_9
46; RV32I-NEXT: .LBB0_7: # %bb3
47; RV32I-NEXT: sw a2, 0(a1)
48; RV32I-NEXT: jal zero, .LBB0_9
49entry:
50 switch i32 %in, label %exit [
51 i32 1, label %bb1
52 i32 2, label %bb2
53 i32 3, label %bb3
54 i32 4, label %bb4
55 ]
56bb1:
57 store i32 4, i32* %out
58 br label %exit
59bb2:
60 store i32 3, i32* %out
61 br label %exit
62bb3:
63 store i32 2, i32* %out
64 br label %exit
65bb4:
66 store i32 1, i32* %out
67 br label %exit
68exit:
69 ret void
70}