Stream: git-wasmtime

Topic: wasmtime / issue #5199 Cranelift: `select` with `i128` co...


view this post on Zulip Wasmtime GitHub notifications bot (Nov 26 2022 at 14:26):

afonso360 edited issue #5199:

:wave: Hey,

Fuzzgen found this when adding support for this instruction.

.clif Test Case

test interpret
test run
set enable_llvm_abi_extensions=true
target x86_64

function %a(i128, i128, i128) -> i128 {
block0(v0: i128, v1: i128, v2: i128):
    v3 = select.i128 v0, v1, v2
    return v3
}
; run: %a(1, 2, 3) == 2

Steps to Reproduce

Expected Results

The above tests to pass.

Actual Results

    Finished dev [unoptimized + debuginfo] target(s) in 0.14s
     Running `/home/afonso/git/wasmtime/target/debug/clif-util test ./lmao.clif`
thread 'worker #0' panicked at 'internal error: entered unreachable code: implemented in ISLE: inst = `v3 = select.i128 v0, v1, v2`, type = `Some(types::I128)`', cranelift/codegen/src/isa/x64/lower.rs:476:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #0: internal error: entered unreachable code: implemented in ISLE: inst = `v3 = select.i128 v0, v1, v2`, type = `Some(types::I128)`
FAIL ./lmao.clif: panicked in worker #0: internal error: entered unreachable code: implemented in ISLE: inst = `v3 = select.i128 v0, v1, v2`, type = `Some(types::I128)`
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: main
Operating system: Linux
Architecture: x86_64

view this post on Zulip Wasmtime GitHub notifications bot (Nov 26 2022 at 14:27):

afonso360 edited a comment on issue #5199:

Right, I think this issues is incorrectly described. What's failing here is selecting on a i128 value, not using i128 as a control type (that works for i64 and smaller).

This test uses select.i128 with an i8 condition value, but switching that to i128 makes it fail to compile. I've updated the issue to make this a bit clearer.

view this post on Zulip Wasmtime GitHub notifications bot (Nov 26 2022 at 14:27):

afonso360 edited a comment on issue #5199:

Right, I think this issue is incorrectly described. What's failing here is selecting on a i128 value, not using i128 as a control type (that works for i64 and smaller).

This test uses select.i128 with an i8 condition value, but switching that to i128 makes it fail to compile. I've updated the issue to make this a bit clearer.

view this post on Zulip Wasmtime GitHub notifications bot (Nov 26 2022 at 14:28):

afonso360 edited a comment on issue #5199:

Right, I think this issue is incorrectly described. What's failing here is selecting any values, but with a i128 value as the condition type.

This test uses select.i128 with an i8 condition value, but switching that to i128 makes it fail to compile. I've updated the issue to make this a bit clearer.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 16 2022 at 22:18):

cfallin closed issue #5199:

:wave: Hey,

Fuzzgen found this when adding support for this instruction.

.clif Test Case

test interpret
test run
set enable_llvm_abi_extensions=true
target x86_64

function %a(i128, i128, i128) -> i128 {
block0(v0: i128, v1: i128, v2: i128):
    v3 = select.i128 v0, v1, v2
    return v3
}
; run: %a(1, 2, 3) == 2

Steps to Reproduce

Expected Results

The above tests to pass.

Actual Results

    Finished dev [unoptimized + debuginfo] target(s) in 0.14s
     Running `/home/afonso/git/wasmtime/target/debug/clif-util test ./lmao.clif`
thread 'worker #0' panicked at 'internal error: entered unreachable code: implemented in ISLE: inst = `v3 = select.i128 v0, v1, v2`, type = `Some(types::I128)`', cranelift/codegen/src/isa/x64/lower.rs:476:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #0: internal error: entered unreachable code: implemented in ISLE: inst = `v3 = select.i128 v0, v1, v2`, type = `Some(types::I128)`
FAIL ./lmao.clif: panicked in worker #0: internal error: entered unreachable code: implemented in ISLE: inst = `v3 = select.i128 v0, v1, v2`, type = `Some(types::I128)`
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: main
Operating system: Linux
Architecture: x86_64


Last updated: Nov 22 2024 at 16:03 UTC