diff --git a/cranelift/filetests/filetests/isa/x86/legalize-br-table-bb.clif b/cranelift/filetests/filetests/isa/x86/legalize-br-table-bb.clif new file mode 100644 index 0000000000..69e4240764 --- /dev/null +++ b/cranelift/filetests/filetests/isa/x86/legalize-br-table-bb.clif @@ -0,0 +1,31 @@ +test compile +target x86_64 +feature "basic-blocks" +; regex: V=v\d+ +; regex: EBB=ebb\d+ + +function u0:0(i64) system_v { + ss0 = explicit_slot 1 + jt0 = jump_table [ebb1] + +ebb0(v0: i64): + v1 = stack_addr.i64 ss0 + v2 = load.i8 v1 + br_table v2, ebb2, jt0 +; check: $(oob=$V) = ifcmp_imm $(idx=$V), 1 +; ebb2 is replaced by ebb1 by fold_redundant_jump +; nextln: brif uge $oob, ebb1 +; nextln: fallthrough $(inb=$EBB) +; check: $inb: +; nextln: $(final_idx=$V) = uextend.i64 $idx +; nextln: $(base=$V) = jump_table_base.i64 jt0 +; nextln: $(rel_addr=$V) = jump_table_entry $final_idx, $base, 4, jt0 +; nextln: $(addr=$V) = iadd $base, $rel_addr +; nextln: indirect_jump_table_br $addr, jt0 + +ebb2: + jump ebb1 + +ebb1: + return +} diff --git a/cranelift/filetests/filetests/isa/x86/legalize-br-table.clif b/cranelift/filetests/filetests/isa/x86/legalize-br-table.clif index e970136ac8..63c24b0240 100644 --- a/cranelift/filetests/filetests/isa/x86/legalize-br-table.clif +++ b/cranelift/filetests/filetests/isa/x86/legalize-br-table.clif @@ -1,5 +1,4 @@ test compile - target x86_64 feature !"basic-blocks" ; regex: V=v\d+