wasmtime
wasmtime copied to clipboard
Cranelift: x64 backend is missing general lowerings for uunarrow
.clif
Test Case
function %f1(i64x2, i64x2) -> i32x4 {
block0(v0: i64x2, v1: i64x2):
v2 = uunarrow v0, v1
return v2
}
Steps to Reproduce
Compile the example clif, targeting x86_64.
Expected Results
Code would be generated.
Actual Results
A panic is generated, because we currently only support lowering this operation in the context of a fcvt_to_uint_sat
and zero input: the following program will compile:
function %f1(f64x2) -> i32x4 {
block0(v0: f64x2):
v1 = fcvt_to_uint_sat.i64x2 v0
v2 = vconst.i64x2 [0 0]
v3 = uunarrow v1, v2
return v3
}
https://github.com/bytecodealliance/wasmtime/blob/ca6d648e37c80cb13e5027cc746ec0d2e4bd64d1/cranelift/codegen/src/isa/x64/lower.rs#L619
Versions and Environment
Cranelift version or commit: ca6d648e37c80cb13e5027cc746ec0d2e4bd64d1
Operating system: Linux
Architecture: x86_64
Extra Info
This is a similar issue to #4734.