159 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: -relocation-model=pic | FileCheck %s4 5--- |6 define i32 @jt_test(i32 signext %in) {7 entry:8 switch i32 %in, label %default [9 i32 1, label %bb110 i32 2, label %bb211 i32 3, label %bb312 i32 4, label %bb413 i32 5, label %bb514 i32 6, label %bb615 ]16 17 bb1: ; preds = %entry18 ret i32 419 20 bb2: ; preds = %entry21 ret i32 322 23 bb3: ; preds = %entry24 ret i32 225 26 bb4: ; preds = %entry27 ret i32 128 29 bb5: ; preds = %entry30 ret i32 10031 32 bb6: ; preds = %entry33 ret i32 20034 35 default: ; preds = %entry36 ret i32 100037 }38 39...40---41name: jt_test42tracksRegLiveness: true43jumpTable:44 kind: label-difference3245 entries:46 - id: 047 blocks: [ '%bb.2', '%bb.3', '%bb.4', '%bb.5', '%bb.6', '%bb.7' ]48body: |49 ; CHECK-LABEL: name: jt_test50 ; CHECK: bb.0.entry:51 ; CHECK-NEXT: successors: %bb.8(0x40000000), %bb.1(0x40000000)52 ; CHECK-NEXT: liveins: $x1053 ; CHECK-NEXT: {{ $}}54 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1055 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 556 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 20057 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 10058 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 159 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 260 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 361 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 462 ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 100063 ; CHECK-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 -164 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C8]]65 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[ADD]](s32), [[C]]66 ; CHECK-NEXT: G_BRCOND [[ICMP]](s32), %bb.867 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: bb.1.entry:69 ; CHECK-NEXT: successors: %bb.2(0x15555555), %bb.3(0x15555555), %bb.4(0x15555555), %bb.5(0x15555555), %bb.6(0x15555555), %bb.7(0x15555555)70 ; CHECK-NEXT: {{ $}}71 ; CHECK-NEXT: [[JUMP_TABLE:%[0-9]+]]:_(p0) = G_JUMP_TABLE %jump-table.072 ; CHECK-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 273 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ADD]], [[C9]](s32)74 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[SHL]](s32)75 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from jump-table)76 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[LOAD]](s32)77 ; CHECK-NEXT: G_BRINDIRECT [[PTR_ADD1]](p0)78 ; CHECK-NEXT: {{ $}}79 ; CHECK-NEXT: bb.2.bb1:80 ; CHECK-NEXT: $x10 = COPY [[C6]](s32)81 ; CHECK-NEXT: PseudoRET implicit $x1082 ; CHECK-NEXT: {{ $}}83 ; CHECK-NEXT: bb.3.bb2:84 ; CHECK-NEXT: $x10 = COPY [[C5]](s32)85 ; CHECK-NEXT: PseudoRET implicit $x1086 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: bb.4.bb3:88 ; CHECK-NEXT: $x10 = COPY [[C4]](s32)89 ; CHECK-NEXT: PseudoRET implicit $x1090 ; CHECK-NEXT: {{ $}}91 ; CHECK-NEXT: bb.5.bb4:92 ; CHECK-NEXT: $x10 = COPY [[C3]](s32)93 ; CHECK-NEXT: PseudoRET implicit $x1094 ; CHECK-NEXT: {{ $}}95 ; CHECK-NEXT: bb.6.bb5:96 ; CHECK-NEXT: $x10 = COPY [[C2]](s32)97 ; CHECK-NEXT: PseudoRET implicit $x1098 ; CHECK-NEXT: {{ $}}99 ; CHECK-NEXT: bb.7.bb6:100 ; CHECK-NEXT: $x10 = COPY [[C1]](s32)101 ; CHECK-NEXT: PseudoRET implicit $x10102 ; CHECK-NEXT: {{ $}}103 ; CHECK-NEXT: bb.8.default:104 ; CHECK-NEXT: $x10 = COPY [[C7]](s32)105 ; CHECK-NEXT: PseudoRET implicit $x10106 bb.1.entry:107 successors: %bb.8, %bb.9108 liveins: $x10109 110 %0:_(s32) = COPY $x10111 %4:_(s32) = G_CONSTANT i32 5112 %8:_(s32) = G_CONSTANT i32 200113 %9:_(s32) = G_CONSTANT i32 100114 %10:_(s32) = G_CONSTANT i32 1115 %11:_(s32) = G_CONSTANT i32 2116 %12:_(s32) = G_CONSTANT i32 3117 %13:_(s32) = G_CONSTANT i32 4118 %14:_(s32) = G_CONSTANT i32 1000119 %1:_(s32) = G_CONSTANT i32 -1120 %2:_(s32) = G_ADD %0, %1121 %6:_(s1) = G_ICMP intpred(ugt), %2(s32), %4122 G_BRCOND %6(s1), %bb.8123 124 bb.9.entry:125 successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.6, %bb.7126 127 %7:_(p0) = G_JUMP_TABLE %jump-table.0128 G_BRJT %7(p0), %jump-table.0, %2(s32)129 130 bb.2.bb1:131 $x10 = COPY %13(s32)132 PseudoRET implicit $x10133 134 bb.3.bb2:135 $x10 = COPY %12(s32)136 PseudoRET implicit $x10137 138 bb.4.bb3:139 $x10 = COPY %11(s32)140 PseudoRET implicit $x10141 142 bb.5.bb4:143 $x10 = COPY %10(s32)144 PseudoRET implicit $x10145 146 bb.6.bb5:147 $x10 = COPY %9(s32)148 PseudoRET implicit $x10149 150 bb.7.bb6:151 $x10 = COPY %8(s32)152 PseudoRET implicit $x10153 154 bb.8.default:155 $x10 = COPY %14(s32)156 PseudoRET implicit $x10157 158...159