Skip to content

Commit 18c210c

Browse files
committed
Workaround Cranelift not yet properly supporting vectors smaller than 128bit
While it would technically be possible to workaround this in cg_clif, it quickly becomes very messy and would likely cause correctness issues. Working around it in rustc instead is much simper and won't have any negative impact for code running on stable as vectors smaller than 128bit can only be made on nightly using core::simd or #[repr(simd)].
1 parent c62239a commit 18c210c

File tree

1 file changed

+3
-1
lines changed
  • compiler/rustc_target/src/callconv

1 file changed

+3
-1
lines changed

compiler/rustc_target/src/callconv/mod.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,9 @@ impl<'a, Ty> FnAbi<'a, Ty> {
737737
// to 128-bit-sized vectors.
738738
"x86" if spec.rustc_abi == Some(RustcAbi::X86Sse2) => arg.layout.size.bits() <= 128,
739739
"x86_64" if spec.rustc_abi != Some(RustcAbi::X86Softfloat) => {
740-
arg.layout.size.bits() <= 128
740+
// FIXME once https://github.com/bytecodealliance/wasmtime/issues/10254 is fixed
741+
// accept vectors up to 128bit rather than vectors of exactly 128bit.
742+
arg.layout.size.bits() == 128
741743
}
742744
// So far, we haven't implemented this logic for any other target.
743745
_ => false,

0 commit comments

Comments
 (0)