]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/RISCV/jumptable.ll
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / CodeGen / RISCV / jumptable.ll
1 ; 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
5 define void @jt(i32 %in, i32* %out) {
6 ; RV32I-LABEL: jt:
7 ; RV32I:       # %bb.0: # %entry
8 ; RV32I-NEXT:    addi a2, zero, 2
9 ; RV32I-NEXT:    blt a2, a0, .LBB0_4
10 ; RV32I-NEXT:  # %bb.1: # %entry
11 ; RV32I-NEXT:    addi a3, zero, 1
12 ; RV32I-NEXT:    beq a0, a3, .LBB0_7
13 ; RV32I-NEXT:  # %bb.2: # %entry
14 ; RV32I-NEXT:    bne a0, a2, .LBB0_9
15 ; RV32I-NEXT:  # %bb.3: # %bb2
16 ; RV32I-NEXT:    addi a0, zero, 3
17 ; RV32I-NEXT:    sw a0, 0(a1)
18 ; RV32I-NEXT:    ret
19 ; RV32I-NEXT:  .LBB0_4: # %entry
20 ; RV32I-NEXT:    addi a3, zero, 3
21 ; RV32I-NEXT:    beq a0, a3, .LBB0_8
22 ; RV32I-NEXT:  # %bb.5: # %entry
23 ; RV32I-NEXT:    addi a2, zero, 4
24 ; RV32I-NEXT:    bne a0, a2, .LBB0_9
25 ; RV32I-NEXT:  # %bb.6: # %bb4
26 ; RV32I-NEXT:    addi a0, zero, 1
27 ; RV32I-NEXT:    sw a0, 0(a1)
28 ; RV32I-NEXT:    ret
29 ; RV32I-NEXT:  .LBB0_7: # %bb1
30 ; RV32I-NEXT:    addi a0, zero, 4
31 ; RV32I-NEXT:    sw a0, 0(a1)
32 ; RV32I-NEXT:    ret
33 ; RV32I-NEXT:  .LBB0_8: # %bb3
34 ; RV32I-NEXT:    sw a2, 0(a1)
35 ; RV32I-NEXT:  .LBB0_9: # %exit
36 ; RV32I-NEXT:    ret
37 entry:
38   switch i32 %in, label %exit [
39     i32 1, label %bb1
40     i32 2, label %bb2
41     i32 3, label %bb3
42     i32 4, label %bb4
43   ]
44 bb1:
45   store i32 4, i32* %out
46   br label %exit
47 bb2:
48   store i32 3, i32* %out
49   br label %exit
50 bb3:
51   store i32 2, i32* %out
52   br label %exit
53 bb4:
54   store i32 1, i32* %out
55   br label %exit
56 exit:
57   ret void
58 }