Stream: git-wasmtime

Topic: wasmtime / issue #11011 Segmentation Fault on riscv64 wit...


view this post on Zulip Wasmtime GitHub notifications bot (Jun 11 2025 at 10:02):

akldc opened issue #11011:

.clif Test Case

test optimize
            set opt_level=speed
            set preserve_frame_pointers=true
            set enable_multi_ret_implicit_sret=true

function u1:4(i64) -> f32 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    const0 = 0x0e26c46caabe925910af4e9acbe70116

block0(v3: i64):
    v4 = iconst.i8 8
    v5 = iconst.i16 2312
    v6 = iconst.i32 0x66b6_0908
    v7 = iconst.i64 -3779047215566812920
    v8 = uextend.i128 v7  ; v7 = -3779047215566812920
    v9 = f32const 0x1.5a0648p-3
    v10 = f64const 0x1.3944993a1bed3p-1
    v11 = vconst.i8x16 const0
    v12 = vconst.i16x8 const0
    v13 = vconst.i32x4 const0
    v14 = vconst.i64x2 const0
    v15 = vconst.f32x4 const0
    v16 = vconst.f64x2 const0
    stack_store v7, ss0  ; v7 = -3779047215566812920
    stack_store v7, ss0+8  ; v7 = -3779047215566812920
    stack_store v7, ss0+16  ; v7 = -3779047215566812920
    stack_store v7, ss0+24  ; v7 = -3779047215566812920
    stack_store v7, ss1  ; v7 = -3779047215566812920
    stack_store v7, ss1+8  ; v7 = -3779047215566812920
    stack_store v7, ss1+16  ; v7 = -3779047215566812920
    stack_store v7, ss1+24  ; v7 = -3779047215566812920
    v17 = stack_load.i64x2 ss1
    jump block2

block1:
    return v9  ; v9 = 0x1.5a0648p-3

block2:
    brif.i32 v6, block3, block9(v12)  ; v6 = 0x66b6_0908, v12 = const0

block3:
    v18 = stack_addr.i64 ss0
    store.i64 v7, v18  ; v7 = -3779047215566812920

    jump block5(v5)  ; v5 = 2312

block5(v53: i16):
    v21 = irsub_imm.i16 v5, -4161  ; v5 = 2312
    jump block1

block7:
    v41 = iconcat.i64 v40, v40
    v42 = floor.f64x2 v16  ; v16 = const0
    v43 = uadd_overflow_trap.i64 v40, v40, stk_ovf
    jump block9(v54)

block8:
    v44 = clz.i32 v6  ; v6 = 0x66b6_0908
    v45 = stack_addr.i64 ss1
    v46 = load.f64x2 v45+2
    v47 = stack_addr.i64 ss0
    v48 = uload32x2 v47+6
    jump block5(v5)  ; v5 = 2312

block9(v54: i16x8):
    v29 = ssub_sat.i16x8 v12, v12  ; v12 = const0, v12 = const0
    brif.i32 v6, block10, block11  ; v6 = 0x66b6_0908
block10:
    v30 = stack_addr.i64 ss1
    v31 = atomic_load.i32 v30
    jump block12(v9, v11)  ; v9 = 0x1.5a0648p-3, v11 = const0

block11:
    jump block12(v9, v11)  ; v9 = 0x1.5a0648p-3, v11 = const0

block12(v55: f32, v56: i8x16):
    v32 = fcvt_to_sint_sat.i32 v9  ; v9 = 0x1.5a0648p-3
    v33 = stack_addr.i64 ss1
    v34 = uload32x2 v33+3
    v35 = stack_addr.i64 ss1
    v36 = load.i128 v35+6
    v37 = fcvt_to_sint.i32 v9  ; v9 = 0x1.5a0648p-3
    v38 = vall_true v56
    v39 = stack_addr.i64 ss0
    v40 = uload32 v39+3
    brif v37, block7, block8
}
function u1:3(i32, f32) -> i64, i32 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    sig0 = (i64) -> f32 fast
    fn0 = u1:4 sig0
    const0 = 0x771482110e8550d582ab255d4257c9c9

block0(v3: i32, v4: f32):
    v5 = iconst.i8 50
    v6 = iconst.i16 0x3e32
    v7 = iconst.i32 -1687929294
    v8 = iconst.i64 -546284451208610254
    v9 = uextend.i128 v8  ; v8 = -546284451208610254
    v10 = f32const 0x1.b7312ep-1
    v11 = f64const 0x1.5670f4eb6f0e1p-1
    v12 = vconst.i8x16 const0
    v13 = vconst.i16x8 const0
    v14 = vconst.i32x4 const0
    v15 = vconst.i64x2 const0
    v16 = vconst.f32x4 const0
    v17 = vconst.f64x2 const0
    stack_store v8, ss0  ; v8 = -546284451208610254
    stack_store v8, ss0+8  ; v8 = -546284451208610254
    stack_store v8, ss0+16  ; v8 = -546284451208610254
    stack_store v8, ss0+24  ; v8 = -546284451208610254
    stack_store v8, ss1  ; v8 = -546284451208610254
    stack_store v8, ss1+8  ; v8 = -546284451208610254
    stack_store v8, ss1+16  ; v8 = -546284451208610254
    stack_store v8, ss1+24  ; v8 = -546284451208610254
    jump block2

block1:
    return v26, v7  ; v7 = -1687929294

block2:
    v18 = fdemote.f32 v11  ; v11 = 0x1.5670f4eb6f0e1p-1
    v19 = imul_imm.i64 v8, 0x42b6_1286_14d1_d274  ; v8 = -546284451208610254
    v20 = stack_addr.i64 ss0
    istore16.i32 v7, v20  ; v7 = -1687929294

    v22 = iconst.i8 -73
    br_table v7, block7, [block5, block6]  ; v7 = -1687929294

block5:
    v23 = stack_load.i8x16 ss0
    jump block4(v18)

block6:
    jump block4(v10)  ; v10 = 0x1.b7312ep-1

block4(v46: f32):
    v26 = bor_not.i64 v19, v8  ; v8 = -546284451208610254
    jump block1

block7:
    v30 = stack_addr.i64 ss1
    v31 = uload32x2 v30+2
    brif.i32 v3, block8, block11

block8:
    jump block10(v8, v31, v7)  ; v8 = -546284451208610254, v7 = -1687929294

block10(v47: i64, v48: i64x2, v49: i32):
    v34 = stack_addr.i64 ss0
    v35 = load.i16 v34

    jump block4(v18)

block11:

    br_table v7, block12, [block14, block15, block16]  ; v7 = -1687929294

block14:
    jump block13(v22, v19)  ; v22 = -73

block15:
    v45 = fvpromote_low v16  ; v16 = const0
    jump block13(v22, v8)  ; v22 = -73, v8 = -546284451208610254

block16:
    jump block13(v5, v8)  ; v5 = 50, v8 = -546284451208610254

block12:
    v52 = f32const 0x1.b7312ep-1
    jump block13(v22, v19)  ; v22 = -73

block13(v50: i8, v51: i64):
    v40 = irsub_imm.i8 v5, 17  ; v5 = 50
    v41 = stack_addr.i64 ss1
    v42 = load.i8x16 v41+8
    v43 = smin v50, v22  ; v22 = -73
    v44 = srem v51, v51
    jump block10(v19, v15, v7)  ; v15 = const0, v7 = -1687929294
}
function u1:6(i64, f32) -> i32, i64 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    const0 = 0x76394155d26c887007598860d93c8c3b

block0(v3: i64, v4: f32):
    v5 = iconst.i8 15
    v6 = iconst.i16 -31985
    v7 = iconst.i32 0x173c_830f
    v8 = iconst.i64 0x51ea_4214_173c_830f
    v9 = uextend.i128 v8  ; v8 = 0x51ea_4214_173c_830f
    v10 = f32const 0x1.907b1cp-2
    v11 = f64const 0x1.4c05e580134d1p-1
    v12 = vconst.i8x16 const0
    v13 = vconst.i16x8 const0
    v14 = vconst.i32x4 const0
    v15 = vconst.i64x2 const0
    v16 = vconst.f32x4 const0
    v17 = vconst.f64x2 const0
    stack_store v8, ss0  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss0+8  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss0+16  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss0+24  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1+8  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1+16  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1+24  ; v8 = 0x51ea_4214_173c_830f
    v18 = stack_addr.i64 ss0
    v19 = load.i16x8 v18+7
    v20 = stack_addr.i64 ss1
    v21 = load.f64x2 v20
    v22 = floor v16  ; v16 = const0
    jump block2

block1:
    v35 = rotr.i32 v7, v8  ; v7 = 0x173c_830f, v8 = 0x51ea_4214_173c_830f
    return v7, v8  ; v7 = 0x173c_830f, v8 = 0x51ea_4214_173c_830f

block2:
    v23 = icmp_imm.i16 sge v6, -10268  ; v6 = -31985
    v24 = unarrow.i16x8 v19, v13  ; v13 = const0
    v25 = band_imm.i8 v5, 19  ; v5 = 15
    v26 = fdiv.f64x2 v17, v17  ; v17 = const0, v17 = const0
    v27 = iconst.i16 986
    v28 = band.i16x8 v19, v13  ; v13 = const0
    br_table v7, block7, [block5, block6]  ; v7 = 0x173c_830f

block5:
    jump block4

block6:
    v36 = iconst.i8 -125
    v37 = bxor.i128 v9, v9
    jump block4

block4:
    v29 = stack_addr.i64 ss0
    v30 = atomic_load.i16 v29
    v31 = stack_addr.i64 ss0
    v32 = load.f64x2 v31+3
    v33 = stack_addr.i64 ss1
    v34 = sload8.i32 v33+9
    jump block1

block7:
    v38 = bitrev.i32 v7  ; v7 = 0x173c_830f
    v39 = scalar_to_vector.i8x16 v23
    v40 = uwiden_low.i16x8 v28

    v43 = sshr_imm.i64 v3, -1493315768317605580
    br_table v38, block8, [block10, block11, block14, block13]

block10:
    jump block9(v16, v9, v39)  ; v16 = const0

block11:
    jump block9(v22, v9, v39)

block13:
    v61 = stack_addr.i64 ss0
    v62 = uload8.i16 v61+9

    jump block9(v22, v9, v39)

block8:
    v46 = stack_addr.i64 ss1
    v47 = sload16x4 v46+2
    jump block9(v16, v9, v39)  ; v16 = const0

block9(v81: f32x4, v82: i128, v83: i8x16):
    v51 = rotr.i128 v9, v23
    v52 = usub_sat.i8x16 v39, v39
    v53 = udiv.i64 v43, v3
    v54 = smin.i8x16 v39, v12  ; v12 = const0
    v55 = band.f64 v11, v11  ; v11 = 0x1.4c05e580134d1p-1, v11 = 0x1.4c05e580134d1p-1
    v56 = fvpromote_low v22
    jump block4

block14:

    v65 = udiv_imm.i8 v25, 86

    v68 = fcvt_to_sint_sat.i64 v11  ; v11 = 0x1.4c05e580134d1p-1
    v69 = stack_addr.i64 ss1
    v70 = uload16.i32 v69+3
    br_table v70, block15, [block17, block18]

block17:
    jump block16(v40, v19)

block18:
    jump block16(v40, v13)  ; v13 = const0

block15:
    jump block16(v40, v28)

block16(v84: i32x4, v85: i16x8):
    v77 = stack_addr.i64 ss1
    store.i64 v43, v77
    jump block9(v22, v9, v24)
}
function u1:5(f64) -> f32 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    sig0 = (i64, f32) -> i32, i64 fast
    fn0 = u1:6 sig0
    const0 = 0xe1bfee1798553040834a25d4cb64c67a

block0(v3: f64):
    v4 = iconst.i8 116
    v5 = iconst.i16 6772
    v6 = iconst.i32 -1713628556
    v7 = iconst.i64 -8023610647128565132
    v8 = uextend.i128 v7  ; v7 = -8023610647128565132
    v9 = f32const 0x1.600c64p-1
    v10 = f64const 0x1.324e2c81bb930p-2
    v11 = vconst.i8x16 const0
    v12 = vconst.i16x8 const0
    v13 = vconst.i32x4 const0
    v14 = vconst.i64x2 const0
    v15 = vconst.f32x4 const0
    v16 = vconst.f64x2 const0
    stack_store v7, ss0  ; v7 = -8023610647128565132
    stack_store v7, ss0+8  ; v7 = -8023610647128565132
    stack_store v7, ss0+16  ; v7 = -8023610647128565132
    stack_store v7, ss0+24  ; v7 = -8023610647128565132
    stack_store v7, ss1  ; v7 = -8023610647128565132
    stack_store v7, ss1+8  ; v7 = -8023610647128565132
    stack_store v7, ss1+16  ; v7 = -8023610647128565132
    stack_store v7, ss1+24  ; v7 = -8023610647128565132
    v17 = bor_imm v7, -4086333942095562948  ; v7 = -8023610647128565132
    jump block5(v11)  ; v11 = const0

block1:
    return v9  ; v9 = 0x1.600c64p-1

block3:
    jump block5(v21)

block5(v54: i8x16):
    v18 = swizzle v11, v11  ; v11 = const0, v11 = cons
[message truncated]

view this post on Zulip Wasmtime GitHub notifications bot (Jun 11 2025 at 10:02):

akldc added the bug label to Issue #11011.

view this post on Zulip Wasmtime GitHub notifications bot (Jun 11 2025 at 10:02):

akldc added the cranelift label to Issue #11011.

view this post on Zulip Wasmtime GitHub notifications bot (Jun 11 2025 at 14:40):

alexcrichton added the cranelift:area:riscv64 label to Issue #11011.

view this post on Zulip Wasmtime GitHub notifications bot (Jun 12 2025 at 17:59):

alexcrichton commented on issue #11011:

I added a test for a different isue in https://github.com/bytecodealliance/wasmtime/pull/11026 which doesn't pass and may be a similar cause as this. It seems like some ABI code may not be quite right where something isn't preserved or something like that? Unsure and the test in https://github.com/bytecodealliance/wasmtime/pull/11026 may also be entirely unrelated to this issue.

view this post on Zulip Wasmtime GitHub notifications bot (Jun 15 2025 at 16:56):

alexcrichton commented on issue #11011:

Using the test case as-is from this issue I currently see this test passing on main:

cargo run --target riscv64gc-unknown-linux-gnu run foo.clif

@akldc are you still able to reproduce this? If not I'm not sure what fixed this... If so that'd be interesting!

view this post on Zulip Wasmtime GitHub notifications bot (Jun 16 2025 at 13:28):

akldc closed issue #11011:

.clif Test Case

test optimize
            set opt_level=speed
            set preserve_frame_pointers=true
            set enable_multi_ret_implicit_sret=true

function u1:4(i64) -> f32 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    const0 = 0x0e26c46caabe925910af4e9acbe70116

block0(v3: i64):
    v4 = iconst.i8 8
    v5 = iconst.i16 2312
    v6 = iconst.i32 0x66b6_0908
    v7 = iconst.i64 -3779047215566812920
    v8 = uextend.i128 v7  ; v7 = -3779047215566812920
    v9 = f32const 0x1.5a0648p-3
    v10 = f64const 0x1.3944993a1bed3p-1
    v11 = vconst.i8x16 const0
    v12 = vconst.i16x8 const0
    v13 = vconst.i32x4 const0
    v14 = vconst.i64x2 const0
    v15 = vconst.f32x4 const0
    v16 = vconst.f64x2 const0
    stack_store v7, ss0  ; v7 = -3779047215566812920
    stack_store v7, ss0+8  ; v7 = -3779047215566812920
    stack_store v7, ss0+16  ; v7 = -3779047215566812920
    stack_store v7, ss0+24  ; v7 = -3779047215566812920
    stack_store v7, ss1  ; v7 = -3779047215566812920
    stack_store v7, ss1+8  ; v7 = -3779047215566812920
    stack_store v7, ss1+16  ; v7 = -3779047215566812920
    stack_store v7, ss1+24  ; v7 = -3779047215566812920
    v17 = stack_load.i64x2 ss1
    jump block2

block1:
    return v9  ; v9 = 0x1.5a0648p-3

block2:
    brif.i32 v6, block3, block9(v12)  ; v6 = 0x66b6_0908, v12 = const0

block3:
    v18 = stack_addr.i64 ss0
    store.i64 v7, v18  ; v7 = -3779047215566812920

    jump block5(v5)  ; v5 = 2312

block5(v53: i16):
    v21 = irsub_imm.i16 v5, -4161  ; v5 = 2312
    jump block1

block7:
    v41 = iconcat.i64 v40, v40
    v42 = floor.f64x2 v16  ; v16 = const0
    v43 = uadd_overflow_trap.i64 v40, v40, stk_ovf
    jump block9(v54)

block8:
    v44 = clz.i32 v6  ; v6 = 0x66b6_0908
    v45 = stack_addr.i64 ss1
    v46 = load.f64x2 v45+2
    v47 = stack_addr.i64 ss0
    v48 = uload32x2 v47+6
    jump block5(v5)  ; v5 = 2312

block9(v54: i16x8):
    v29 = ssub_sat.i16x8 v12, v12  ; v12 = const0, v12 = const0
    brif.i32 v6, block10, block11  ; v6 = 0x66b6_0908
block10:
    v30 = stack_addr.i64 ss1
    v31 = atomic_load.i32 v30
    jump block12(v9, v11)  ; v9 = 0x1.5a0648p-3, v11 = const0

block11:
    jump block12(v9, v11)  ; v9 = 0x1.5a0648p-3, v11 = const0

block12(v55: f32, v56: i8x16):
    v32 = fcvt_to_sint_sat.i32 v9  ; v9 = 0x1.5a0648p-3
    v33 = stack_addr.i64 ss1
    v34 = uload32x2 v33+3
    v35 = stack_addr.i64 ss1
    v36 = load.i128 v35+6
    v37 = fcvt_to_sint.i32 v9  ; v9 = 0x1.5a0648p-3
    v38 = vall_true v56
    v39 = stack_addr.i64 ss0
    v40 = uload32 v39+3
    brif v37, block7, block8
}
function u1:3(i32, f32) -> i64, i32 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    sig0 = (i64) -> f32 fast
    fn0 = u1:4 sig0
    const0 = 0x771482110e8550d582ab255d4257c9c9

block0(v3: i32, v4: f32):
    v5 = iconst.i8 50
    v6 = iconst.i16 0x3e32
    v7 = iconst.i32 -1687929294
    v8 = iconst.i64 -546284451208610254
    v9 = uextend.i128 v8  ; v8 = -546284451208610254
    v10 = f32const 0x1.b7312ep-1
    v11 = f64const 0x1.5670f4eb6f0e1p-1
    v12 = vconst.i8x16 const0
    v13 = vconst.i16x8 const0
    v14 = vconst.i32x4 const0
    v15 = vconst.i64x2 const0
    v16 = vconst.f32x4 const0
    v17 = vconst.f64x2 const0
    stack_store v8, ss0  ; v8 = -546284451208610254
    stack_store v8, ss0+8  ; v8 = -546284451208610254
    stack_store v8, ss0+16  ; v8 = -546284451208610254
    stack_store v8, ss0+24  ; v8 = -546284451208610254
    stack_store v8, ss1  ; v8 = -546284451208610254
    stack_store v8, ss1+8  ; v8 = -546284451208610254
    stack_store v8, ss1+16  ; v8 = -546284451208610254
    stack_store v8, ss1+24  ; v8 = -546284451208610254
    jump block2

block1:
    return v26, v7  ; v7 = -1687929294

block2:
    v18 = fdemote.f32 v11  ; v11 = 0x1.5670f4eb6f0e1p-1
    v19 = imul_imm.i64 v8, 0x42b6_1286_14d1_d274  ; v8 = -546284451208610254
    v20 = stack_addr.i64 ss0
    istore16.i32 v7, v20  ; v7 = -1687929294

    v22 = iconst.i8 -73
    br_table v7, block7, [block5, block6]  ; v7 = -1687929294

block5:
    v23 = stack_load.i8x16 ss0
    jump block4(v18)

block6:
    jump block4(v10)  ; v10 = 0x1.b7312ep-1

block4(v46: f32):
    v26 = bor_not.i64 v19, v8  ; v8 = -546284451208610254
    jump block1

block7:
    v30 = stack_addr.i64 ss1
    v31 = uload32x2 v30+2
    brif.i32 v3, block8, block11

block8:
    jump block10(v8, v31, v7)  ; v8 = -546284451208610254, v7 = -1687929294

block10(v47: i64, v48: i64x2, v49: i32):
    v34 = stack_addr.i64 ss0
    v35 = load.i16 v34

    jump block4(v18)

block11:

    br_table v7, block12, [block14, block15, block16]  ; v7 = -1687929294

block14:
    jump block13(v22, v19)  ; v22 = -73

block15:
    v45 = fvpromote_low v16  ; v16 = const0
    jump block13(v22, v8)  ; v22 = -73, v8 = -546284451208610254

block16:
    jump block13(v5, v8)  ; v5 = 50, v8 = -546284451208610254

block12:
    v52 = f32const 0x1.b7312ep-1
    jump block13(v22, v19)  ; v22 = -73

block13(v50: i8, v51: i64):
    v40 = irsub_imm.i8 v5, 17  ; v5 = 50
    v41 = stack_addr.i64 ss1
    v42 = load.i8x16 v41+8
    v43 = smin v50, v22  ; v22 = -73
    v44 = srem v51, v51
    jump block10(v19, v15, v7)  ; v15 = const0, v7 = -1687929294
}
function u1:6(i64, f32) -> i32, i64 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    const0 = 0x76394155d26c887007598860d93c8c3b

block0(v3: i64, v4: f32):
    v5 = iconst.i8 15
    v6 = iconst.i16 -31985
    v7 = iconst.i32 0x173c_830f
    v8 = iconst.i64 0x51ea_4214_173c_830f
    v9 = uextend.i128 v8  ; v8 = 0x51ea_4214_173c_830f
    v10 = f32const 0x1.907b1cp-2
    v11 = f64const 0x1.4c05e580134d1p-1
    v12 = vconst.i8x16 const0
    v13 = vconst.i16x8 const0
    v14 = vconst.i32x4 const0
    v15 = vconst.i64x2 const0
    v16 = vconst.f32x4 const0
    v17 = vconst.f64x2 const0
    stack_store v8, ss0  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss0+8  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss0+16  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss0+24  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1+8  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1+16  ; v8 = 0x51ea_4214_173c_830f
    stack_store v8, ss1+24  ; v8 = 0x51ea_4214_173c_830f
    v18 = stack_addr.i64 ss0
    v19 = load.i16x8 v18+7
    v20 = stack_addr.i64 ss1
    v21 = load.f64x2 v20
    v22 = floor v16  ; v16 = const0
    jump block2

block1:
    v35 = rotr.i32 v7, v8  ; v7 = 0x173c_830f, v8 = 0x51ea_4214_173c_830f
    return v7, v8  ; v7 = 0x173c_830f, v8 = 0x51ea_4214_173c_830f

block2:
    v23 = icmp_imm.i16 sge v6, -10268  ; v6 = -31985
    v24 = unarrow.i16x8 v19, v13  ; v13 = const0
    v25 = band_imm.i8 v5, 19  ; v5 = 15
    v26 = fdiv.f64x2 v17, v17  ; v17 = const0, v17 = const0
    v27 = iconst.i16 986
    v28 = band.i16x8 v19, v13  ; v13 = const0
    br_table v7, block7, [block5, block6]  ; v7 = 0x173c_830f

block5:
    jump block4

block6:
    v36 = iconst.i8 -125
    v37 = bxor.i128 v9, v9
    jump block4

block4:
    v29 = stack_addr.i64 ss0
    v30 = atomic_load.i16 v29
    v31 = stack_addr.i64 ss0
    v32 = load.f64x2 v31+3
    v33 = stack_addr.i64 ss1
    v34 = sload8.i32 v33+9
    jump block1

block7:
    v38 = bitrev.i32 v7  ; v7 = 0x173c_830f
    v39 = scalar_to_vector.i8x16 v23
    v40 = uwiden_low.i16x8 v28

    v43 = sshr_imm.i64 v3, -1493315768317605580
    br_table v38, block8, [block10, block11, block14, block13]

block10:
    jump block9(v16, v9, v39)  ; v16 = const0

block11:
    jump block9(v22, v9, v39)

block13:
    v61 = stack_addr.i64 ss0
    v62 = uload8.i16 v61+9

    jump block9(v22, v9, v39)

block8:
    v46 = stack_addr.i64 ss1
    v47 = sload16x4 v46+2
    jump block9(v16, v9, v39)  ; v16 = const0

block9(v81: f32x4, v82: i128, v83: i8x16):
    v51 = rotr.i128 v9, v23
    v52 = usub_sat.i8x16 v39, v39
    v53 = udiv.i64 v43, v3
    v54 = smin.i8x16 v39, v12  ; v12 = const0
    v55 = band.f64 v11, v11  ; v11 = 0x1.4c05e580134d1p-1, v11 = 0x1.4c05e580134d1p-1
    v56 = fvpromote_low v22
    jump block4

block14:

    v65 = udiv_imm.i8 v25, 86

    v68 = fcvt_to_sint_sat.i64 v11  ; v11 = 0x1.4c05e580134d1p-1
    v69 = stack_addr.i64 ss1
    v70 = uload16.i32 v69+3
    br_table v70, block15, [block17, block18]

block17:
    jump block16(v40, v19)

block18:
    jump block16(v40, v13)  ; v13 = const0

block15:
    jump block16(v40, v28)

block16(v84: i32x4, v85: i16x8):
    v77 = stack_addr.i64 ss1
    store.i64 v43, v77
    jump block9(v22, v9, v24)
}
function u1:5(f64) -> f32 fast {
    ss0 = explicit_slot 32
    ss1 = explicit_slot 32
    sig0 = (i64, f32) -> i32, i64 fast
    fn0 = u1:6 sig0
    const0 = 0xe1bfee1798553040834a25d4cb64c67a

block0(v3: f64):
    v4 = iconst.i8 116
    v5 = iconst.i16 6772
    v6 = iconst.i32 -1713628556
    v7 = iconst.i64 -8023610647128565132
    v8 = uextend.i128 v7  ; v7 = -8023610647128565132
    v9 = f32const 0x1.600c64p-1
    v10 = f64const 0x1.324e2c81bb930p-2
    v11 = vconst.i8x16 const0
    v12 = vconst.i16x8 const0
    v13 = vconst.i32x4 const0
    v14 = vconst.i64x2 const0
    v15 = vconst.f32x4 const0
    v16 = vconst.f64x2 const0
    stack_store v7, ss0  ; v7 = -8023610647128565132
    stack_store v7, ss0+8  ; v7 = -8023610647128565132
    stack_store v7, ss0+16  ; v7 = -8023610647128565132
    stack_store v7, ss0+24  ; v7 = -8023610647128565132
    stack_store v7, ss1  ; v7 = -8023610647128565132
    stack_store v7, ss1+8  ; v7 = -8023610647128565132
    stack_store v7, ss1+16  ; v7 = -8023610647128565132
    stack_store v7, ss1+24  ; v7 = -8023610647128565132
    v17 = bor_imm v7, -4086333942095562948  ; v7 = -8023610647128565132
    jump block5(v11)  ; v11 = const0

block1:
    return v9  ; v9 = 0x1.600c64p-1

block3:
    jump block5(v21)

block5(v54: i8x16):
    v18 = swizzle v11, v11  ; v11 = const0, v11 = cons
[message truncated]

view this post on Zulip Wasmtime GitHub notifications bot (Jun 16 2025 at 13:28):

akldc commented on issue #11011:

@alexcrichton Yes, I just re-tested it and can confirm that it’s fixed. Thanks for the follow-up.


Last updated: Dec 06 2025 at 06:05 UTC