| # RUN: not --crash llc -march=amdgcn -run-pass=legalizer -o /dev/null %s 2>&1 | FileCheck %s |
| |
| # CHECK: LLVM ERROR: unable to legalize instruction: %3:_(p0) = G_JUMP_TABLE %jump-table.0 (in function: jt_test) |
| |
| # FIXME: This could probably be smaller, but the jump table MIR parsing is very crashy. |
| |
| --- | |
| define i32 @jt_test(i32 %x) { |
| entry: |
| switch i32 %x, label %return [ |
| i32 75, label %sw.bb |
| i32 34, label %sw.bb |
| i32 56, label %sw.bb |
| i32 35, label %sw.bb |
| i32 40, label %sw.bb |
| i32 4, label %sw.bb1 |
| i32 5, label %sw.bb1 |
| i32 6, label %sw.bb1 |
| ] |
| |
| sw.bb: ; preds = %entry, %entry, %entry, %entry, %entry |
| %add = add nsw i32 %x, 42 |
| br label %return |
| |
| sw.bb1: ; preds = %entry, %entry, %entry |
| %mul = mul nsw i32 %x, 3 |
| br label %return |
| |
| return: ; preds = %sw.bb1, %sw.bb, %entry |
| %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ] |
| ret i32 %retval.0 |
| } |
| |
| ... |
| --- |
| name: jt_test |
| tracksRegLiveness: true |
| jumpTable: |
| kind: block-address |
| entries: |
| - id: 0 |
| blocks: [ '%bb.3', '%bb.3', '%bb.3', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.2', '%bb.2', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.2', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.2', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', |
| '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.4', '%bb.2' ] |
| body: | |
| bb.0.entry: |
| liveins: $sgpr0 |
| |
| %0:_(s32) = COPY $sgpr0 |
| %1:_(s32) = G_CONSTANT i32 0 |
| %2:_(s1) = G_ICMP intpred(ugt), %0, %1 |
| %3:_(p0) = G_JUMP_TABLE %jump-table.0 |
| S_NOP 0, implicit %3 |
| G_BRCOND %2, %bb.4 |
| |
| bb.1.entry: |
| successors: %bb.3(0x2aaaaaab), %bb.4(0x2aaaaaab), %bb.2(0x2aaaaaab) |
| |
| G_BR %bb.4 |
| |
| bb.2.sw.bb: |
| G_BR %bb.4 |
| |
| bb.3.sw.bb1: |
| |
| bb.4.return: |
| S_ENDPGM 0 |
| |
| ... |