Remove the old x86 backend
This commit is contained in:
@@ -1,89 +0,0 @@
|
||||
test legalizer
|
||||
target x86_64 legacy
|
||||
|
||||
function %reverse_bits(i128) -> i128 {
|
||||
block0(v0: i128):
|
||||
v1 = bitrev.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: block0(v2: i64, v3: i64):
|
||||
; check: v0 = iconcat v2, v3
|
||||
; check: v33 = iconst.i64 0xaaaa_aaaa_aaaa_aaaa
|
||||
; check: v6 = band v2, v33
|
||||
; check: v7 = ushr_imm v6, 1
|
||||
; check: v34 = iconst.i64 0x5555_5555_5555_5555
|
||||
; check: v8 = band v2, v34
|
||||
; check: v9 = ishl_imm v8, 1
|
||||
; check: v10 = bor v7, v9
|
||||
; check: v35 = iconst.i64 0xcccc_cccc_cccc_cccc
|
||||
; check: v11 = band v10, v35
|
||||
; check: v12 = ushr_imm v11, 2
|
||||
; check: v36 = iconst.i64 0x3333_3333_3333_3333
|
||||
; check: v13 = band v10, v36
|
||||
; check: v14 = ishl_imm v13, 2
|
||||
; check: v15 = bor v12, v14
|
||||
; check: v37 = iconst.i64 0xf0f0_f0f0_f0f0_f0f0
|
||||
; check: v16 = band v15, v37
|
||||
; check: v17 = ushr_imm v16, 4
|
||||
; check: v38 = iconst.i64 0x0f0f_0f0f_0f0f_0f0f
|
||||
; check: v18 = band v15, v38
|
||||
; check: v19 = ishl_imm v18, 4
|
||||
; check: v20 = bor v17, v19
|
||||
; check: v39 = iconst.i64 0xff00_ff00_ff00_ff00
|
||||
; check: v21 = band v20, v39
|
||||
; check: v22 = ushr_imm v21, 8
|
||||
; check: v40 = iconst.i64 0x00ff_00ff_00ff_00ff
|
||||
; check: v23 = band v20, v40
|
||||
; check: v24 = ishl_imm v23, 8
|
||||
; check: v25 = bor v22, v24
|
||||
; check: v41 = iconst.i64 0xffff_0000_ffff_0000
|
||||
; check: v26 = band v25, v41
|
||||
; check: v27 = ushr_imm v26, 16
|
||||
; check: v42 = iconst.i64 0xffff_0000_ffff
|
||||
; check: v28 = band v25, v42
|
||||
; check: v29 = ishl_imm v28, 16
|
||||
; check: v30 = bor v27, v29
|
||||
; check: v31 = ushr_imm v30, 32
|
||||
; check: v32 = ishl_imm v30, 32
|
||||
; check: v4 = bor v31, v32
|
||||
; check: v70 = iconst.i64 0xaaaa_aaaa_aaaa_aaaa
|
||||
; check: v43 = band v3, v70
|
||||
; check: v44 = ushr_imm v43, 1
|
||||
; check: v71 = iconst.i64 0x5555_5555_5555_5555
|
||||
; check: v45 = band v3, v71
|
||||
; check: v46 = ishl_imm v45, 1
|
||||
; check: v47 = bor v44, v46
|
||||
; check: v72 = iconst.i64 0xcccc_cccc_cccc_cccc
|
||||
; check: v48 = band v47, v72
|
||||
; check: v49 = ushr_imm v48, 2
|
||||
; check: v73 = iconst.i64 0x3333_3333_3333_3333
|
||||
; check: v50 = band v47, v73
|
||||
; check: v51 = ishl_imm v50, 2
|
||||
; check: v52 = bor v49, v51
|
||||
; check: v74 = iconst.i64 0xf0f0_f0f0_f0f0_f0f0
|
||||
; check: v53 = band v52, v74
|
||||
; check: v54 = ushr_imm v53, 4
|
||||
; check: v75 = iconst.i64 0x0f0f_0f0f_0f0f_0f0f
|
||||
; check: v55 = band v52, v75
|
||||
; check: v56 = ishl_imm v55, 4
|
||||
; check: v57 = bor v54, v56
|
||||
; check: v76 = iconst.i64 0xff00_ff00_ff00_ff00
|
||||
; check: v58 = band v57, v76
|
||||
; check: v59 = ushr_imm v58, 8
|
||||
; check: v77 = iconst.i64 0x00ff_00ff_00ff_00ff
|
||||
; check: v60 = band v57, v77
|
||||
; check: v61 = ishl_imm v60, 8
|
||||
; check: v62 = bor v59, v61
|
||||
; check: v78 = iconst.i64 0xffff_0000_ffff_0000
|
||||
; check: v63 = band v62, v78
|
||||
; check: v64 = ushr_imm v63, 16
|
||||
; check: v79 = iconst.i64 0xffff_0000_ffff
|
||||
; check: v65 = band v62, v79
|
||||
; check: v66 = ishl_imm v65, 16
|
||||
; check: v67 = bor v64, v66
|
||||
; check: v68 = ushr_imm v67, 32
|
||||
; check: v69 = ishl_imm v67, 32
|
||||
; check: v5 = bor v68, v69
|
||||
; check: v1 = iconcat v5, v4
|
||||
; check: return v5, v4
|
||||
@@ -1,206 +0,0 @@
|
||||
test legalizer
|
||||
target x86_64 legacy
|
||||
|
||||
function %reverse_bits_8(i8) -> i8 {
|
||||
block0(v0: i8):
|
||||
v1 = bitrev.i8 v0
|
||||
return v1
|
||||
}
|
||||
; check: v16 = uextend.i32 v0
|
||||
; check: v17 = band_imm v16, 170
|
||||
; check: v2 = ireduce.i8 v17
|
||||
; check: v18 = uextend.i32 v2
|
||||
; check: v19 = ushr_imm v18, 1
|
||||
; check: v3 = ireduce.i8 v19
|
||||
; check: v20 = uextend.i32 v0
|
||||
; check: v21 = band_imm v20, 85
|
||||
; check: v4 = ireduce.i8 v21
|
||||
; check: v22 = uextend.i32 v4
|
||||
; check: v23 = ishl_imm v22, 1
|
||||
; check: v5 = ireduce.i8 v23
|
||||
; check: v24 = uextend.i32 v3
|
||||
; check: v25 = uextend.i32 v5
|
||||
; check: v26 = bor v24, v25
|
||||
; check: v6 = ireduce.i8 v26
|
||||
; check: v27 = uextend.i32 v6
|
||||
; check: v28 = band_imm v27, 204
|
||||
; check: v7 = ireduce.i8 v28
|
||||
; check: v29 = uextend.i32 v7
|
||||
; check: v30 = ushr_imm v29, 2
|
||||
; check: v8 = ireduce.i8 v30
|
||||
; check: v31 = uextend.i32 v6
|
||||
; check: v32 = band_imm v31, 51
|
||||
; check: v9 = ireduce.i8 v32
|
||||
; check: v33 = uextend.i32 v9
|
||||
; check: v34 = ishl_imm v33, 2
|
||||
; check: v10 = ireduce.i8 v34
|
||||
; check: v35 = uextend.i32 v8
|
||||
; check: v36 = uextend.i32 v10
|
||||
; check: v37 = bor v35, v36
|
||||
; check: v11 = ireduce.i8 v37
|
||||
; check: v38 = uextend.i32 v11
|
||||
; check: v39 = band_imm v38, 240
|
||||
; check: v12 = ireduce.i8 v39
|
||||
; check: v40 = uextend.i32 v12
|
||||
; check: v41 = ushr_imm v40, 4
|
||||
; check: v13 = ireduce.i8 v41
|
||||
; check: v42 = uextend.i32 v11
|
||||
; check: v43 = band_imm v42, 15
|
||||
; check: v14 = ireduce.i8 v43
|
||||
; check: v44 = uextend.i32 v14
|
||||
; check: v45 = ishl_imm v44, 4
|
||||
; check: v15 = ireduce.i8 v45
|
||||
; check: v46 = uextend.i32 v13
|
||||
; check: v47 = uextend.i32 v15
|
||||
; check: v48 = bor v46, v47
|
||||
; check: v1 = ireduce.i8 v48
|
||||
; check: return v1
|
||||
|
||||
function %reverse_bits_16(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
v1 = bitrev.i16 v0
|
||||
return v1
|
||||
}
|
||||
; check: v21 = uextend.i32 v0
|
||||
; check: v22 = band_imm v21, 0xaaaa
|
||||
; check: v2 = ireduce.i16 v22
|
||||
; check: v23 = uextend.i32 v2
|
||||
; check: v24 = ushr_imm v23, 1
|
||||
; check: v3 = ireduce.i16 v24
|
||||
; check: v25 = uextend.i32 v0
|
||||
; check: v26 = band_imm v25, 0x5555
|
||||
; check: v4 = ireduce.i16 v26
|
||||
; check: v27 = uextend.i32 v4
|
||||
; check: v28 = ishl_imm v27, 1
|
||||
; check: v5 = ireduce.i16 v28
|
||||
; check: v29 = uextend.i32 v3
|
||||
; check: v30 = uextend.i32 v5
|
||||
; check: v31 = bor v29, v30
|
||||
; check: v6 = ireduce.i16 v31
|
||||
; check: v32 = uextend.i32 v6
|
||||
; check: v33 = band_imm v32, 0xcccc
|
||||
; check: v7 = ireduce.i16 v33
|
||||
; check: v34 = uextend.i32 v7
|
||||
; check: v35 = ushr_imm v34, 2
|
||||
; check: v8 = ireduce.i16 v35
|
||||
; check: v36 = uextend.i32 v6
|
||||
; check: v37 = band_imm v36, 0x3333
|
||||
; check: v9 = ireduce.i16 v37
|
||||
; check: v38 = uextend.i32 v9
|
||||
; check: v39 = ishl_imm v38, 2
|
||||
; check: v10 = ireduce.i16 v39
|
||||
; check: v40 = uextend.i32 v8
|
||||
; check: v41 = uextend.i32 v10
|
||||
; check: v42 = bor v40, v41
|
||||
; check: v11 = ireduce.i16 v42
|
||||
; check: v43 = uextend.i32 v11
|
||||
; check: v44 = band_imm v43, 0xf0f0
|
||||
; check: v12 = ireduce.i16 v44
|
||||
; check: v45 = uextend.i32 v12
|
||||
; check: v46 = ushr_imm v45, 4
|
||||
; check: v13 = ireduce.i16 v46
|
||||
; check: v47 = uextend.i32 v11
|
||||
; check: v48 = band_imm v47, 3855
|
||||
; check: v14 = ireduce.i16 v48
|
||||
; check: v49 = uextend.i32 v14
|
||||
; check: v50 = ishl_imm v49, 4
|
||||
; check: v15 = ireduce.i16 v50
|
||||
; check: v51 = uextend.i32 v13
|
||||
; check: v52 = uextend.i32 v15
|
||||
; check: v53 = bor v51, v52
|
||||
; check: v16 = ireduce.i16 v53
|
||||
; check: v54 = uextend.i32 v16
|
||||
; check: v55 = band_imm v54, 0xff00
|
||||
; check: v17 = ireduce.i16 v55
|
||||
; check: v56 = uextend.i32 v17
|
||||
; check: v57 = ushr_imm v56, 8
|
||||
; check: v18 = ireduce.i16 v57
|
||||
; check: v58 = uextend.i32 v16
|
||||
; check: v59 = band_imm v58, 255
|
||||
; check: v19 = ireduce.i16 v59
|
||||
; check: v60 = uextend.i32 v19
|
||||
; check: v61 = ishl_imm v60, 8
|
||||
; check: v20 = ireduce.i16 v61
|
||||
; check: v62 = uextend.i32 v18
|
||||
; check: v63 = uextend.i32 v20
|
||||
; check: v64 = bor v62, v63
|
||||
; check: v1 = ireduce.i16 v64
|
||||
; check: return v1
|
||||
|
||||
function %reverse_bits_32(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
v1 = bitrev.i32 v0
|
||||
return v1
|
||||
}
|
||||
; check: v24 = iconst.i32 0xaaaa_aaaa
|
||||
; check: v2 = band v0, v24
|
||||
; check: v3 = ushr_imm v2, 1
|
||||
; check: v4 = band_imm v0, 0x5555_5555
|
||||
; check: v5 = ishl_imm v4, 1
|
||||
; check: v6 = bor v3, v5
|
||||
; check: v25 = iconst.i32 0xcccc_cccc
|
||||
; check: v7 = band v6, v25
|
||||
; check: v8 = ushr_imm v7, 2
|
||||
; check: v9 = band_imm v6, 0x3333_3333
|
||||
; check: v10 = ishl_imm v9, 2
|
||||
; check: v11 = bor v8, v10
|
||||
; check: v26 = iconst.i32 0xf0f0_f0f0
|
||||
; check: v12 = band v11, v26
|
||||
; check: v13 = ushr_imm v12, 4
|
||||
; check: v14 = band_imm v11, 0x0f0f_0f0f
|
||||
; check: v15 = ishl_imm v14, 4
|
||||
; check: v16 = bor v13, v15
|
||||
; check: v27 = iconst.i32 0xff00_ff00
|
||||
; check: v17 = band v16, v27
|
||||
; check: v18 = ushr_imm v17, 8
|
||||
; check: v19 = band_imm v16, 0x00ff_00ff
|
||||
; check: v20 = ishl_imm v19, 8
|
||||
; check: v21 = bor v18, v20
|
||||
; check: v22 = ushr_imm v21, 16
|
||||
; check: v23 = ishl_imm v21, 16
|
||||
; check: v1 = bor v22, v23
|
||||
|
||||
|
||||
function %reverse_bits_64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
v1 = bitrev.i64 v0
|
||||
return v1
|
||||
}
|
||||
; check: v29 = iconst.i64 0xaaaa_aaaa_aaaa_aaaa
|
||||
; check: v2 = band v0, v29
|
||||
; check: v3 = ushr_imm v2, 1
|
||||
; check: v30 = iconst.i64 0x5555_5555_5555_5555
|
||||
; check: v4 = band v0, v30
|
||||
; check: v5 = ishl_imm v4, 1
|
||||
; check: v6 = bor v3, v5
|
||||
; check: v31 = iconst.i64 0xcccc_cccc_cccc_cccc
|
||||
; check: v7 = band v6, v31
|
||||
; check: v8 = ushr_imm v7, 2
|
||||
; check: v32 = iconst.i64 0x3333_3333_3333_3333
|
||||
; check: v9 = band v6, v32
|
||||
; check: v10 = ishl_imm v9, 2
|
||||
; check: v11 = bor v8, v10
|
||||
; check: v33 = iconst.i64 0xf0f0_f0f0_f0f0_f0f0
|
||||
; check: v12 = band v11, v33
|
||||
; check: v13 = ushr_imm v12, 4
|
||||
; check: v34 = iconst.i64 0x0f0f_0f0f_0f0f_0f0f
|
||||
; check: v14 = band v11, v34
|
||||
; check: v15 = ishl_imm v14, 4
|
||||
; check: v16 = bor v13, v15
|
||||
; check: v35 = iconst.i64 0xff00_ff00_ff00_ff00
|
||||
; check: v17 = band v16, v35
|
||||
; check: v18 = ushr_imm v17, 8
|
||||
; check: v36 = iconst.i64 0x00ff_00ff_00ff_00ff
|
||||
; check: v19 = band v16, v36
|
||||
; check: v20 = ishl_imm v19, 8
|
||||
; check: v21 = bor v18, v20
|
||||
; check: v37 = iconst.i64 0xffff_0000_ffff_0000
|
||||
; check: v22 = band v21, v37
|
||||
; check: v23 = ushr_imm v22, 16
|
||||
; check: v38 = iconst.i64 0xffff_0000_ffff
|
||||
; check: v24 = band v21, v38
|
||||
; check: v25 = ishl_imm v24, 16
|
||||
; check: v26 = bor v23, v25
|
||||
; check: v27 = ushr_imm v26, 32
|
||||
; check: v28 = ishl_imm v26, 32
|
||||
; check: v1 = bor v27, v28
|
||||
@@ -1,64 +0,0 @@
|
||||
test legalizer
|
||||
set enable_probestack=false
|
||||
set enable_jump_tables=false
|
||||
target x86_64 legacy
|
||||
|
||||
; Test that when jump_tables_enables is false, all jump tables are eliminated.
|
||||
; regex: V=v\d+
|
||||
; regex: BB=block\d+
|
||||
|
||||
function u0:0(i64 vmctx) baldrdash_system_v {
|
||||
gv0 = vmctx
|
||||
gv1 = iadd_imm.i64 gv0, 48
|
||||
jt0 = jump_table [block2, block2, block7]
|
||||
jt1 = jump_table [block8, block8]
|
||||
|
||||
block0(v0: i64):
|
||||
jump block5
|
||||
|
||||
block5:
|
||||
v1 = global_value.i64 gv1
|
||||
v2 = load.i64 v1
|
||||
trapnz v2, interrupt
|
||||
v3 = iconst.i32 0
|
||||
br_table v3, block3, jt0
|
||||
; check: block5:
|
||||
; check: $(val0=$V) = iconst.i32 0
|
||||
; nextln: $(cmp0=$V) = icmp_imm eq $val0, 0
|
||||
; nextln: brnz $cmp0, block2
|
||||
; nextln: jump $(fail0=$BB)
|
||||
; check: $fail0:
|
||||
; nextln: $(cmp1=$V) = icmp_imm.i32 eq $val0, 1
|
||||
; nextln: brnz $cmp1, block2
|
||||
; nextln: jump $(fail1=$BB)
|
||||
; check: $fail1:
|
||||
; nextln: $(cmp2=$V) = icmp_imm.i32 eq $val0, 2
|
||||
; nextln: brnz $cmp2, block7
|
||||
; nextln: jump block3
|
||||
|
||||
block7:
|
||||
v4 = iconst.i32 0
|
||||
br_table v4, block3, jt1
|
||||
; check: block7:
|
||||
; check: $(val1=$V) = iconst.i32 0
|
||||
; nextln: $(cmp3=$V) = icmp_imm eq $val1, 0
|
||||
; nextln: brnz $cmp3, block8
|
||||
; nextln: jump $(fail3=$BB)
|
||||
; check: $fail3:
|
||||
; nextln: $(cmp4=$V) = icmp_imm.i32 eq $val1, 1
|
||||
; nextln: brnz $cmp4, block8
|
||||
; nextln: jump block3
|
||||
|
||||
block8:
|
||||
jump block5
|
||||
|
||||
block3:
|
||||
jump block2
|
||||
|
||||
block2:
|
||||
jump block1
|
||||
|
||||
block1:
|
||||
fallthrough_return
|
||||
}
|
||||
; not: jump_table
|
||||
@@ -1,17 +0,0 @@
|
||||
test legalizer
|
||||
set enable_probestack=false
|
||||
set enable_jump_tables=false
|
||||
target x86_64 legacy
|
||||
|
||||
function u0:0(i64) {
|
||||
jt0 = jump_table []
|
||||
|
||||
block0(v0: i64):
|
||||
br_table v0, block1, jt0
|
||||
; check: block0(v0: i64):
|
||||
; nextln: jump block1
|
||||
|
||||
block1:
|
||||
return
|
||||
}
|
||||
; not: jump_table
|
||||
@@ -1,23 +0,0 @@
|
||||
test legalizer
|
||||
target x86_64 legacy
|
||||
|
||||
function %icmp_imm_i128(i128) -> i8 {
|
||||
block0(v0: i128):
|
||||
v1 = icmp_imm.i128 eq v0, 1
|
||||
v2 = bint.i8 v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: function %icmp_imm_i128(i64 [%rdi], i64 [%rsi]) -> i8 [%rax] fast {
|
||||
; nextln: block0(v3: i64, v4: i64):
|
||||
; nextln: v7 -> v3
|
||||
; nextln: v8 -> v4
|
||||
; nextln: [-] v0 = iconcat v3, v4
|
||||
; nextln: [RexOp1pu_id#b8] v5 = iconst.i64 1
|
||||
; nextln: [RexOp1pu_id#b8] v6 = iconst.i64 0
|
||||
; nextln: [RexOp1icscc#8039] v9 = icmp eq v7, v5
|
||||
; nextln: [RexOp1icscc#8039] v10 = icmp eq v8, v6
|
||||
; nextln: [RexOp1rr#21] v1 = band v9, v10
|
||||
; nextln: [RexOp2urm_noflags#4b6] v2 = bint.i8 v1
|
||||
; nextln: [Op1ret#c3] return v2
|
||||
; nextln: }
|
||||
@@ -1,31 +0,0 @@
|
||||
test legalizer
|
||||
target x86_64 legacy
|
||||
|
||||
function %legalize_entry(i128) -> i64 windows_fastcall {
|
||||
block0(v0: i128):
|
||||
v1, v2 = isplit v0
|
||||
return v2
|
||||
}
|
||||
; check: function %legalize_entry(i64 ptr [%rcx]) -> i64 [%rax] windows_fastcall {
|
||||
; nextln: block0(v3: i64):
|
||||
; nextln: v4 = load.i64 v3
|
||||
; nextln: v1 -> v4
|
||||
; nextln: v5 = load.i64 v3+8
|
||||
; nextln: v2 -> v5
|
||||
; nextln: v0 = iconcat v4, v5
|
||||
; nextln: return v2
|
||||
|
||||
function %legalize_call() {
|
||||
fn0 = %foo(i32x4) windows_fastcall
|
||||
block0:
|
||||
v0 = vconst.i32x4 [1 2 3 4]
|
||||
call fn0(v0)
|
||||
return
|
||||
}
|
||||
; check: ss0 = explicit_slot 16
|
||||
; check: sig0 = (i64 ptr [%rcx]) windows_fastcall
|
||||
; check: v0 = vconst.i32x4 const0
|
||||
; nextln: v1 = stack_addr.i64 ss0
|
||||
; nextln: store v0, v1
|
||||
; nextln: v2 = func_addr.i64 fn0
|
||||
; nextln: call_indirect sig0, v2(v1)
|
||||
@@ -1,21 +0,0 @@
|
||||
test legalizer
|
||||
target x86_64 legacy haswell
|
||||
|
||||
function %foo() -> i128 {
|
||||
block0:
|
||||
v1 = iconst.i64 0x6400000042
|
||||
v2 = iconst.i64 0x7F10100042
|
||||
v3 = iconcat v1, v2
|
||||
v4 = popcnt.i128 v3
|
||||
return v4
|
||||
}
|
||||
|
||||
; check: v1 = iconst.i64 0x0064_0000_0042
|
||||
; check: v2 = iconst.i64 0x007f_1010_0042
|
||||
; check: v3 = iconcat v1, v2
|
||||
; check: v5 = popcnt v1
|
||||
; check: v6 = popcnt v2
|
||||
; check: v7 = iadd v5, v6
|
||||
; check: v8 = iconst.i64 0
|
||||
; check: v4 = iconcat v7, v8
|
||||
; check: return v7, v8
|
||||
Reference in New Issue
Block a user