Rollup merge of #133053 - liushuyu:simd-test-x86-baseline-fix, r=workingjubilee
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.
This commit is contained in:
commit
efe2c44269
1 changed files with 4 additions and 6 deletions
|
@ -25,7 +25,7 @@ pub struct i32x4([i32; 4]);
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
// _mm_sll_epi32
|
// _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"]
|
#[link_name = "llvm.x86.sse2.psll.d"]
|
||||||
fn integer(a: i32x4, b: i32x4) -> i32x4;
|
fn integer(a: i32x4, b: i32x4) -> i32x4;
|
||||||
|
|
||||||
|
@ -38,15 +38,13 @@ extern "C" {
|
||||||
#[link_name = "llvm.aarch64.neon.maxs.v4i32"]
|
#[link_name = "llvm.aarch64.neon.maxs.v4i32"]
|
||||||
fn integer(a: i32x4, b: i32x4) -> i32x4;
|
fn integer(a: i32x4, b: i32x4) -> i32x4;
|
||||||
|
|
||||||
// just some substitute foreign symbol, not an LLVM intrinsic; so
|
// Use a generic LLVM intrinsic to do type checking on other platforms
|
||||||
// we still get type checking, but not as detailed as (ab)using
|
|
||||||
// LLVM.
|
|
||||||
#[cfg(not(any(
|
#[cfg(not(any(
|
||||||
target_arch = "x86",
|
all(any(target_arch = "x86", target_arch = "x86-64"), target_feature = "sse2"),
|
||||||
target_arch = "x86-64",
|
|
||||||
target_arch = "arm",
|
target_arch = "arm",
|
||||||
target_arch = "aarch64"
|
target_arch = "aarch64"
|
||||||
)))]
|
)))]
|
||||||
|
#[link_name = "llvm.smax.v4i32"]
|
||||||
fn integer(a: i32x4, b: i32x4) -> i32x4;
|
fn integer(a: i32x4, b: i32x4) -> i32x4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue