blob: 678aca5c8d0aee3b96ad0635fa47656381896662 [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
Alex Bradburye027c932018-01-10 20:47:00 +000013; RV32I-NEXT: blt a2, a0, .LBB0_4
14; RV32I-NEXT: # %bb.1: # %entry
Alex Bradburyffc435e2017-11-21 08:11:03 +000015; RV32I-NEXT: addi a3, zero, 1
Alex Bradburye027c932018-01-10 20:47:00 +000016; RV32I-NEXT: beq a0, a3, .LBB0_8
17; RV32I-NEXT: # %bb.2: # %entry
18; RV32I-NEXT: bne a0, a2, .LBB0_10
19; RV32I-NEXT: # %bb.3: # %bb2
Alex Bradburyffc435e2017-11-21 08:11:03 +000020; RV32I-NEXT: addi a0, zero, 3
21; RV32I-NEXT: sw a0, 0(a1)
Alex Bradburye027c932018-01-10 20:47:00 +000022; RV32I-NEXT: j .LBB0_10
Alex Bradburyffc435e2017-11-21 08:11:03 +000023; RV32I-NEXT: .LBB0_4: # %entry
Alex Bradburye027c932018-01-10 20:47:00 +000024; RV32I-NEXT: addi a3, zero, 3
25; RV32I-NEXT: beq a0, a3, .LBB0_9
26; RV32I-NEXT: # %bb.5: # %entry
Alex Bradburyffc435e2017-11-21 08:11:03 +000027; RV32I-NEXT: addi a2, zero, 4
Alex Bradburye027c932018-01-10 20:47:00 +000028; RV32I-NEXT: bne a0, a2, .LBB0_10
29; RV32I-NEXT: # %bb.6: # %bb4
Alex Bradburyffc435e2017-11-21 08:11:03 +000030; RV32I-NEXT: addi a0, zero, 1
31; RV32I-NEXT: sw a0, 0(a1)
Alex Bradburye027c932018-01-10 20:47:00 +000032; RV32I-NEXT: j .LBB0_10
33; RV32I-NEXT: .LBB0_8: # %bb1
34; RV32I-NEXT: addi a0, zero, 4
35; RV32I-NEXT: sw a0, 0(a1)
36; RV32I-NEXT: j .LBB0_10
37; RV32I-NEXT: .LBB0_9: # %bb3
38; RV32I-NEXT: sw a2, 0(a1)
39; RV32I-NEXT: .LBB0_10: # %exit
Alex Bradburyb014e3d2017-12-11 12:34:11 +000040; RV32I-NEXT: lw s0, 8(sp)
41; RV32I-NEXT: lw ra, 12(sp)
42; RV32I-NEXT: addi sp, sp, 16
Alex Bradbury59136ff2017-12-15 09:47:01 +000043; RV32I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000044entry:
45 switch i32 %in, label %exit [
46 i32 1, label %bb1
47 i32 2, label %bb2
48 i32 3, label %bb3
49 i32 4, label %bb4
50 ]
51bb1:
52 store i32 4, i32* %out
53 br label %exit
54bb2:
55 store i32 3, i32* %out
56 br label %exit
57bb3:
58 store i32 2, i32* %out
59 br label %exit
60bb4:
61 store i32 1, i32* %out
62 br label %exit
63exit:
64 ret void
65}