160 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \3# RUN: -code-model=small | FileCheck %s4# RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \5# RUN: -code-model=medium | FileCheck %s6 7--- |8 define i32 @jt_test(i32 signext %in) {9 entry:10 switch i32 %in, label %default [11 i32 1, label %bb112 i32 2, label %bb213 i32 3, label %bb314 i32 4, label %bb415 i32 5, label %bb516 i32 6, label %bb617 ]18 19 bb1: ; preds = %entry20 ret i32 421 22 bb2: ; preds = %entry23 ret i32 324 25 bb3: ; preds = %entry26 ret i32 227 28 bb4: ; preds = %entry29 ret i32 130 31 bb5: ; preds = %entry32 ret i32 10033 34 bb6: ; preds = %entry35 ret i32 20036 37 default: ; preds = %entry38 ret i32 100039 }40 41...42---43name: jt_test44tracksRegLiveness: true45jumpTable:46 kind: block-address47 entries:48 - id: 049 blocks: [ '%bb.2', '%bb.3', '%bb.4', '%bb.5', '%bb.6', '%bb.7' ]50body: |51 ; CHECK-LABEL: name: jt_test52 ; CHECK: bb.0.entry:53 ; CHECK-NEXT: successors: %bb.8(0x40000000), %bb.1(0x40000000)54 ; CHECK-NEXT: liveins: $x1055 ; CHECK-NEXT: {{ $}}56 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1057 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 558 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 20059 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 10060 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 161 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 262 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 363 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 464 ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 100065 ; CHECK-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 166 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C8]]67 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[SUB]](s32), [[C]]68 ; CHECK-NEXT: G_BRCOND [[ICMP]](s32), %bb.869 ; CHECK-NEXT: {{ $}}70 ; CHECK-NEXT: bb.1.entry:71 ; CHECK-NEXT: successors: %bb.2(0x15555555), %bb.3(0x15555555), %bb.4(0x15555555), %bb.5(0x15555555), %bb.6(0x15555555), %bb.7(0x15555555)72 ; CHECK-NEXT: {{ $}}73 ; CHECK-NEXT: [[JUMP_TABLE:%[0-9]+]]:_(p0) = G_JUMP_TABLE %jump-table.074 ; CHECK-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 275 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[SUB]], [[C9]](s32)76 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[SHL]](s32)77 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from jump-table)78 ; CHECK-NEXT: G_BRINDIRECT [[LOAD]](p0)79 ; CHECK-NEXT: {{ $}}80 ; CHECK-NEXT: bb.2.bb1:81 ; CHECK-NEXT: $x10 = COPY [[C6]](s32)82 ; CHECK-NEXT: PseudoRET implicit $x1083 ; CHECK-NEXT: {{ $}}84 ; CHECK-NEXT: bb.3.bb2:85 ; CHECK-NEXT: $x10 = COPY [[C5]](s32)86 ; CHECK-NEXT: PseudoRET implicit $x1087 ; CHECK-NEXT: {{ $}}88 ; CHECK-NEXT: bb.4.bb3:89 ; CHECK-NEXT: $x10 = COPY [[C4]](s32)90 ; CHECK-NEXT: PseudoRET implicit $x1091 ; CHECK-NEXT: {{ $}}92 ; CHECK-NEXT: bb.5.bb4:93 ; CHECK-NEXT: $x10 = COPY [[C3]](s32)94 ; CHECK-NEXT: PseudoRET implicit $x1095 ; CHECK-NEXT: {{ $}}96 ; CHECK-NEXT: bb.6.bb5:97 ; CHECK-NEXT: $x10 = COPY [[C2]](s32)98 ; CHECK-NEXT: PseudoRET implicit $x1099 ; CHECK-NEXT: {{ $}}100 ; CHECK-NEXT: bb.7.bb6:101 ; CHECK-NEXT: $x10 = COPY [[C1]](s32)102 ; CHECK-NEXT: PseudoRET implicit $x10103 ; CHECK-NEXT: {{ $}}104 ; CHECK-NEXT: bb.8.default:105 ; CHECK-NEXT: $x10 = COPY [[C7]](s32)106 ; CHECK-NEXT: PseudoRET implicit $x10107 bb.1.entry:108 successors: %bb.8, %bb.9109 liveins: $x10110 111 %0:_(s32) = COPY $x10112 %4:_(s32) = G_CONSTANT i32 5113 %8:_(s32) = G_CONSTANT i32 200114 %9:_(s32) = G_CONSTANT i32 100115 %10:_(s32) = G_CONSTANT i32 1116 %11:_(s32) = G_CONSTANT i32 2117 %12:_(s32) = G_CONSTANT i32 3118 %13:_(s32) = G_CONSTANT i32 4119 %14:_(s32) = G_CONSTANT i32 1000120 %1:_(s32) = G_CONSTANT i32 1121 %2:_(s32) = G_SUB %0, %1122 %6:_(s1) = G_ICMP intpred(ugt), %2(s32), %4123 G_BRCOND %6(s1), %bb.8124 125 bb.9.entry:126 successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.6, %bb.7127 128 %7:_(p0) = G_JUMP_TABLE %jump-table.0129 G_BRJT %7(p0), %jump-table.0, %2(s32)130 131 bb.2.bb1:132 $x10 = COPY %13(s32)133 PseudoRET implicit $x10134 135 bb.3.bb2:136 $x10 = COPY %12(s32)137 PseudoRET implicit $x10138 139 bb.4.bb3:140 $x10 = COPY %11(s32)141 PseudoRET implicit $x10142 143 bb.5.bb4:144 $x10 = COPY %10(s32)145 PseudoRET implicit $x10146 147 bb.6.bb5:148 $x10 = COPY %9(s32)149 PseudoRET implicit $x10150 151 bb.7.bb6:152 $x10 = COPY %8(s32)153 PseudoRET implicit $x10154 155 bb.8.default:156 $x10 = COPY %14(s32)157 PseudoRET implicit $x10158 159...160