abc767234318 opened issue #12170:
.clifTest Casetest run set enable_nan_canonicalization=true set preserve_frame_pointers=true set enable_multi_ret_implicit_sret=true set opt_level=none target x86_64 sse42 has_avx target aarch64 target s390x target riscv64gc has_zcd has_zbkb has_zbc has_zbs has_zicond has_zvl32b has_zvl64b has_zvl128b has_zvl1024b has_zvl2048b has_zvl4096b has_zvl8192b has_zvl16384b has_zvl32768b function %main() -> f64 fast { ss0 = explicit_slot 32 ss1 = explicit_slot 32 const0 = 0xfa2675c080000000e8a433230a7479e5 block0: v1 = iconst.i16 1348 v2 = f64const -0x1.e10d21f69a163p995 v3 = vconst.i32x4 const0 v4 = smin.i32x4 v3, v3 ; v3 = const0, v3 = const0 v5 = clz.i16 v1 ; v1 = 1348 v6 = icmp.i32x4 slt v3, v4 ; v3 = const0 return v2 } ; print: %main()Steps to Reproduce
This test case processed successfully when the
opt_level=none, but if I change it to theopt_level=speed, it will throwthread 'main' panicked at cranelift/codegen/src/opts.rs:191:5: unimplemented for > 64 bits.Expected Results
%main() -> -0x1.e10d21f69a163p995Actual Results
thread 'main' panicked at cranelift/codegen/src/opts.rs:191:5: unimplemented for > 64 bits note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
abc767234318 added the bug label to Issue #12170.
abc767234318 added the cranelift label to Issue #12170.
alexcrichton commented on issue #12170:
@abc767234318 it looks like reporting this may have gone awry by accident as the source here says
set opt_level=none, but I believeset opt_level=speedis needed to reproduce. After changing that I can reproduce myself.@cfallin w.r.t. this comment personally I think we still want to investigate these sorts of issues. For example this isn't an esoteric instruction, this input:
(module (func (export "hi") (result v128) (local $i v128) v128.const i64x2 0xfa2675c080000000 0xe8a433230a7479e5 local.set $i local.get $i local.get $i local.get $i i32x4.min_s i32x4.lt_s ) )fails with:
$ cargo run foo.wat ... thread '<unnamed>' (7768935) panicked at cranelift/codegen/src/opts.rs:191:5: unimplemented for > 64 bits note: run with `RUST_BACKTRACE=1` environment variable to display a backtraceso this is not a case of an obscure cranelift instruction on an obscure platform, but definitely reachable from wasm and is something we should fix.
alexcrichton added the fuzz-bug label to Issue #12170.
cfallin commented on issue #12170:
Ah, I missed that this was reachable from Wasm -- yes, it'd still be nice to build the table of missing corners in the full CLIF-space but this is higher priority, agreed.
cfallin closed issue #12170:
.clifTest Casetest run set enable_nan_canonicalization=true set preserve_frame_pointers=true set enable_multi_ret_implicit_sret=true set opt_level=none target x86_64 sse42 has_avx target aarch64 target s390x target riscv64gc has_zcd has_zbkb has_zbc has_zbs has_zicond has_zvl32b has_zvl64b has_zvl128b has_zvl1024b has_zvl2048b has_zvl4096b has_zvl8192b has_zvl16384b has_zvl32768b function %main() -> f64 fast { ss0 = explicit_slot 32 ss1 = explicit_slot 32 const0 = 0xfa2675c080000000e8a433230a7479e5 block0: v1 = iconst.i16 1348 v2 = f64const -0x1.e10d21f69a163p995 v3 = vconst.i32x4 const0 v4 = smin.i32x4 v3, v3 ; v3 = const0, v3 = const0 v5 = clz.i16 v1 ; v1 = 1348 v6 = icmp.i32x4 slt v3, v4 ; v3 = const0 return v2 } ; print: %main()Steps to Reproduce
This test case processed successfully when the
opt_level=none, but if I change it to theopt_level=speed, it will throwthread 'main' panicked at cranelift/codegen/src/opts.rs:191:5: unimplemented for > 64 bits.Expected Results
%main() -> -0x1.e10d21f69a163p995Actual Results
thread 'main' panicked at cranelift/codegen/src/opts.rs:191:5: unimplemented for > 64 bits note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Last updated: Jan 09 2026 at 13:15 UTC