about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJubilee <workingjubilee@gmail.com>2025-02-20 14:58:19 -0800
committerGitHub <noreply@github.com>2025-02-20 14:58:19 -0800
commit8d5eb73ea6fd782e420cd8ba3152af95f54b56dc (patch)
treecb1f30096d7d54f5ee736e59cab7cbffb2ee87f9
parent0d47366f0bc5ae58a3c782aeb6d77f07aa6eccf2 (diff)
parent18c210c7869b5786acde4d343a47df99113dba9b (diff)
downloadrust-8d5eb73ea6fd782e420cd8ba3152af95f54b56dc.tar.gz
rust-8d5eb73ea6fd782e420cd8ba3152af95f54b56dc.zip
Rollup merge of #137318 - bjorn3:cg_clif_abi_workaround, r=workingjubilee
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)].
-rw-r--r--compiler/rustc_target/src/callconv/mod.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_target/src/callconv/mod.rs b/compiler/rustc_target/src/callconv/mod.rs
index e5f986269dd..1c044fe98b3 100644
--- a/compiler/rustc_target/src/callconv/mod.rs
+++ b/compiler/rustc_target/src/callconv/mod.rs
@@ -736,7 +736,9 @@ impl<'a, Ty> FnAbi<'a, Ty> {
             // to 128-bit-sized vectors.
             "x86" if spec.rustc_abi == Some(RustcAbi::X86Sse2) => arg.layout.size.bits() <= 128,
             "x86_64" if spec.rustc_abi != Some(RustcAbi::X86Softfloat) => {
-                arg.layout.size.bits() <= 128
+                // FIXME once https://github.com/bytecodealliance/wasmtime/issues/10254 is fixed
+                // accept vectors up to 128bit rather than vectors of exactly 128bit.
+                arg.layout.size.bits() == 128
             }
             // So far, we haven't implemented this logic for any other target.
             _ => false,