Skip to content

Commit

Permalink
Rollup merge of #133053 - liushuyu:simd-test-x86-baseline-fix, r=work…
Browse files Browse the repository at this point in the history
…ingjubilee

tests: Fix the SIMD FFI tests with certain x86 configuration

This pull request fixes the SIMD FFI tests with certain x86 configurations by gating the SSE2 intrinsic behind the `sse2` feature gate. A generic LLVM intrinsic that is easy to un-fuse on those platforms is added to compensate for those platforms.
  • Loading branch information
workingjubilee authored Nov 15, 2024
2 parents cea081e + 0733ed7 commit efe2c44
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions tests/run-make/simd-ffi/simd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pub struct i32x4([i32; 4]);

extern "C" {
// _mm_sll_epi32
#[cfg(any(target_arch = "x86", target_arch = "x86-64"))]
#[cfg(all(any(target_arch = "x86", target_arch = "x86-64"), target_feature = "sse2"))]
#[link_name = "llvm.x86.sse2.psll.d"]
fn integer(a: i32x4, b: i32x4) -> i32x4;

Expand All @@ -38,15 +38,13 @@ extern "C" {
#[link_name = "llvm.aarch64.neon.maxs.v4i32"]
fn integer(a: i32x4, b: i32x4) -> i32x4;

// just some substitute foreign symbol, not an LLVM intrinsic; so
// we still get type checking, but not as detailed as (ab)using
// LLVM.
// Use a generic LLVM intrinsic to do type checking on other platforms
#[cfg(not(any(
target_arch = "x86",
target_arch = "x86-64",
all(any(target_arch = "x86", target_arch = "x86-64"), target_feature = "sse2"),
target_arch = "arm",
target_arch = "aarch64"
)))]
#[link_name = "llvm.smax.v4i32"]
fn integer(a: i32x4, b: i32x4) -> i32x4;
}

Expand Down

0 comments on commit efe2c44

Please sign in to comment.