160 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -run-pass=regbankselect \3# RUN: -simplify-mir -verify-machineinstrs %s \4# RUN: -o - | FileCheck -check-prefix=RV64I %s5 6--- |7 define i32 @jt_test(i32 signext %in) {8 entry:9 %0 = sext i32 %in to i6410 switch i64 %0, label %default [11 i64 1, label %bb112 i64 2, label %bb213 i64 3, label %bb314 i64 4, label %bb415 i64 5, label %bb516 i64 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_test44legalized: true45tracksRegLiveness: true46jumpTable:47 kind: custom3248 entries:49 - id: 050 blocks: [ '%bb.2', '%bb.3', '%bb.4', '%bb.5', '%bb.6', '%bb.7' ]51body: |52 ; RV64I-LABEL: name: jt_test53 ; RV64I: bb.0.entry:54 ; RV64I-NEXT: liveins: $x1055 ; RV64I-NEXT: {{ $}}56 ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x1057 ; RV64I-NEXT: [[ASSERT_SEXT:%[0-9]+]]:gprb(s64) = G_ASSERT_SEXT [[COPY]], 3258 ; RV64I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 559 ; RV64I-NEXT: [[SEXT_INREG:%[0-9]+]]:gprb(s64) = G_SEXT_INREG [[ASSERT_SEXT]], 3260 ; RV64I-NEXT: [[C1:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 161 ; RV64I-NEXT: [[SUB:%[0-9]+]]:gprb(s64) = G_SUB [[SEXT_INREG]], [[C1]]62 ; RV64I-NEXT: [[ICMP:%[0-9]+]]:gprb(s64) = G_ICMP intpred(ugt), [[SUB]](s64), [[C]]63 ; RV64I-NEXT: G_BRCOND [[ICMP]](s64), %bb.864 ; RV64I-NEXT: {{ $}}65 ; RV64I-NEXT: bb.1.entry:66 ; RV64I-NEXT: successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.6, %bb.767 ; RV64I-NEXT: {{ $}}68 ; RV64I-NEXT: [[JUMP_TABLE:%[0-9]+]]:gprb(p0) = G_JUMP_TABLE %jump-table.069 ; RV64I-NEXT: G_BRJT [[JUMP_TABLE]](p0), %jump-table.0, [[SUB]](s64)70 ; RV64I-NEXT: {{ $}}71 ; RV64I-NEXT: bb.2.bb1:72 ; RV64I-NEXT: [[C2:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 473 ; RV64I-NEXT: $x10 = COPY [[C2]](s64)74 ; RV64I-NEXT: PseudoRET implicit $x1075 ; RV64I-NEXT: {{ $}}76 ; RV64I-NEXT: bb.3.bb2:77 ; RV64I-NEXT: [[C3:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 378 ; RV64I-NEXT: $x10 = COPY [[C3]](s64)79 ; RV64I-NEXT: PseudoRET implicit $x1080 ; RV64I-NEXT: {{ $}}81 ; RV64I-NEXT: bb.4.bb3:82 ; RV64I-NEXT: [[C4:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 283 ; RV64I-NEXT: $x10 = COPY [[C4]](s64)84 ; RV64I-NEXT: PseudoRET implicit $x1085 ; RV64I-NEXT: {{ $}}86 ; RV64I-NEXT: bb.5.bb4:87 ; RV64I-NEXT: [[C5:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 188 ; RV64I-NEXT: $x10 = COPY [[C5]](s64)89 ; RV64I-NEXT: PseudoRET implicit $x1090 ; RV64I-NEXT: {{ $}}91 ; RV64I-NEXT: bb.6.bb5:92 ; RV64I-NEXT: [[C6:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 10093 ; RV64I-NEXT: $x10 = COPY [[C6]](s64)94 ; RV64I-NEXT: PseudoRET implicit $x1095 ; RV64I-NEXT: {{ $}}96 ; RV64I-NEXT: bb.7.bb6:97 ; RV64I-NEXT: [[C7:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 20098 ; RV64I-NEXT: $x10 = COPY [[C7]](s64)99 ; RV64I-NEXT: PseudoRET implicit $x10100 ; RV64I-NEXT: {{ $}}101 ; RV64I-NEXT: bb.8.default:102 ; RV64I-NEXT: [[C8:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1000103 ; RV64I-NEXT: $x10 = COPY [[C8]](s64)104 ; RV64I-NEXT: PseudoRET implicit $x10105 bb.1.entry:106 successors: %bb.8, %bb.9107 liveins: $x10108 109 %1:_(s64) = COPY $x10110 %2:_(s64) = G_ASSERT_SEXT %1, 32111 %7:_(s64) = G_CONSTANT i64 5112 %3:_(s64) = G_SEXT_INREG %2, 32113 %4:_(s64) = G_CONSTANT i64 1114 %5:_(s64) = G_SUB %3, %4115 %26:_(s64) = G_ICMP intpred(ugt), %5(s64), %7116 G_BRCOND %26(s64), %bb.8117 118 bb.9.entry:119 successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.6, %bb.7120 121 %10:_(p0) = G_JUMP_TABLE %jump-table.0122 G_BRJT %10(p0), %jump-table.0, %5(s64)123 124 bb.2.bb1:125 %22:_(s64) = G_CONSTANT i64 4126 $x10 = COPY %22(s64)127 PseudoRET implicit $x10128 129 bb.3.bb2:130 %20:_(s64) = G_CONSTANT i64 3131 $x10 = COPY %20(s64)132 PseudoRET implicit $x10133 134 bb.4.bb3:135 %18:_(s64) = G_CONSTANT i64 2136 $x10 = COPY %18(s64)137 PseudoRET implicit $x10138 139 bb.5.bb4:140 %16:_(s64) = G_CONSTANT i64 1141 $x10 = COPY %16(s64)142 PseudoRET implicit $x10143 144 bb.6.bb5:145 %14:_(s64) = G_CONSTANT i64 100146 $x10 = COPY %14(s64)147 PseudoRET implicit $x10148 149 bb.7.bb6:150 %12:_(s64) = G_CONSTANT i64 200151 $x10 = COPY %12(s64)152 PseudoRET implicit $x10153 154 bb.8.default:155 %24:_(s64) = G_CONSTANT i64 1000156 $x10 = COPY %24(s64)157 PseudoRET implicit $x10158 159...160