afonso360 edited issue #4897:
:wave: Hey,
This came up when trying to fuzz #4884
.clif
Test Casetest interpret test run target x86_64 function %a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_uint.i8 v0 return v1 } ; run: %a(0.0) == 0 function %b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_uint.i16 v0 return v1 } ; run: %b(0.0) == 0 function %c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_uint.i8 v0 return v1 } ; run: %c(0.0) == 0 function %d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_uint.i16 v0 return v1 } ; run: %d(0.0) == 0 function %signed_a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_sint.i8 v0 return v1 } ; run: %signed_a(0.0) == 0 function %signed_b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_sint.i16 v0 return v1 } ; run: %signed_b(0.0) == 0 function %signed_c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_sint.i8 v0 return v1 } ; run: %signed_c(0.0) == 0 function %signed_d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_sint.i16 v0 return v1 } ; run: %signed_d(0.0) == 0
Steps to Reproduce
clif-util ./the-above.clif
Expected Results
The above tests to pass.
Actual Results
thread 'worker #0' panicked at 'assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64])', cranelift\codegen\src\isa\x64\inst\mod.rs:331:9 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #0: assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64]) FAIL .\lmao.clif: panicked in worker #0: assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64]) 1 tests Error: 1 failure
This fails in
%a
but all of the functions in that test case crash with a similar error.Versions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64
afonso360 edited issue #4897:
:wave: Hey,
This came up when trying to fuzz #4884
.clif
Test CaseSo this is a bunch of separate cases, I can split it into multiple issues if you'd like:
<details>
<summary>fcvt_to_uint</summary>test interpret test run target x86_64 function %a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_uint.i8 v0 return v1 } ; run: %a(0.0) == 0 function %b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_uint.i16 v0 return v1 } ; run: %b(0.0) == 0 function %c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_uint.i8 v0 return v1 } ; run: %c(0.0) == 0 function %d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_uint.i16 v0 return v1 } ; run: %d(0.0) == 0
</details>
<details>
<summary>fcvt_to_sint</summary>test interpret test run target x86_64 function %signed_a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_sint.i8 v0 return v1 } ; run: %signed_a(0.0) == 0 function %signed_b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_sint.i16 v0 return v1 } ; run: %signed_b(0.0) == 0 function %signed_c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_sint.i8 v0 return v1 } ; run: %signed_c(0.0) == 0 function %signed_d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_sint.i16 v0 return v1 } ; run: %signed_d(0.0) == 0
</details>
<details>
<summary>fcvt_to_uint_sat</summary>test interpret test run target x86_64 function %a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_uint_sat.i8 v0 return v1 } ; run: %a(0.0) == 0 function %b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_uint_sat.i16 v0 return v1 } ; run: %b(0.0) == 0 function %c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_uint_sat.i8 v0 return v1 } ; run: %c(0.0) == 0 function %d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_uint_sat.i16 v0 return v1 } ; run: %d(0.0) == 0
</details>
<details>
<summary>fcvt_to_sint_sat</summary>test interpret test run target x86_64 function %signed_a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_sint_sat.i8 v0 return v1 } ; run: %signed_a(0.0) == 0 function %signed_b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_sint_sat.i16 v0 return v1 } ; run: %signed_b(0.0) == 0 function %signed_c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_sint_sat.i8 v0 return v1 } ; run: %signed_c(0.0) == 0 function %signed_d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_sint_sat.i16 v0 return v1 } ; run: %signed_d(0.0) == 0
</details>
Steps to Reproduce
clif-util ./the-above.clif
Expected Results
The above tests to pass.
Actual Results
thread 'worker #0' panicked at 'assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64])', cranelift\codegen\src\isa\x64\inst\mod.rs:331:9 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #0: assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64]) FAIL .\lmao.clif: panicked in worker #0: assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64]) 1 tests Error: 1 failure
This fails in the first function but all of the functions in all test cases crash with a similar error.
Versions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64
EdorianDark commented on issue #4897:
I think this is releated to https://github.com/bytecodealliance/wasmtime/issues/1045
akirilov-arm labeled issue #4897:
:wave: Hey,
This came up when trying to fuzz #4884
.clif
Test CaseSo this is a bunch of separate cases, I can split it into multiple issues if you'd like:
<details>
<summary>fcvt_to_uint</summary>test interpret test run target x86_64 function %a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_uint.i8 v0 return v1 } ; run: %a(0.0) == 0 function %b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_uint.i16 v0 return v1 } ; run: %b(0.0) == 0 function %c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_uint.i8 v0 return v1 } ; run: %c(0.0) == 0 function %d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_uint.i16 v0 return v1 } ; run: %d(0.0) == 0
</details>
<details>
<summary>fcvt_to_sint</summary>test interpret test run target x86_64 function %signed_a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_sint.i8 v0 return v1 } ; run: %signed_a(0.0) == 0 function %signed_b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_sint.i16 v0 return v1 } ; run: %signed_b(0.0) == 0 function %signed_c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_sint.i8 v0 return v1 } ; run: %signed_c(0.0) == 0 function %signed_d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_sint.i16 v0 return v1 } ; run: %signed_d(0.0) == 0
</details>
<details>
<summary>fcvt_to_uint_sat</summary>test interpret test run target x86_64 function %a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_uint_sat.i8 v0 return v1 } ; run: %a(0.0) == 0 function %b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_uint_sat.i16 v0 return v1 } ; run: %b(0.0) == 0 function %c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_uint_sat.i8 v0 return v1 } ; run: %c(0.0) == 0 function %d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_uint_sat.i16 v0 return v1 } ; run: %d(0.0) == 0
</details>
<details>
<summary>fcvt_to_sint_sat</summary>test interpret test run target x86_64 function %signed_a(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_sint_sat.i8 v0 return v1 } ; run: %signed_a(0.0) == 0 function %signed_b(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_sint_sat.i16 v0 return v1 } ; run: %signed_b(0.0) == 0 function %signed_c(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_sint_sat.i8 v0 return v1 } ; run: %signed_c(0.0) == 0 function %signed_d(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_sint_sat.i16 v0 return v1 } ; run: %signed_d(0.0) == 0
</details>
Steps to Reproduce
clif-util ./the-above.clif
Expected Results
The above tests to pass.
Actual Results
thread 'worker #0' panicked at 'assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64])', cranelift\codegen\src\isa\x64\inst\mod.rs:331:9 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #0: assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64]) FAIL .\lmao.clif: panicked in worker #0: assertion failed: dst_size.is_one_of(&[OperandSize::Size32, OperandSize::Size64]) 1 tests Error: 1 failure
This fails in the first function but all of the functions in all test cases crash with a similar error.
Versions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64
Last updated: Dec 23 2024 at 13:07 UTC