use remaining SIMD intrinsics via libcore

This commit is contained in:
Ralf Jung 2024-02-23 08:36:53 +01:00 committed by Amanieu d'Antras
parent 6fa800718e
commit da78357bf7
33 changed files with 53 additions and 66 deletions

View file

@ -11,8 +11,9 @@ pub use self::generated::*;
// FIXME: replace neon with asimd
use crate::{
core_arch::{arm_shared::*, simd::*, simd_llvm::*},
core_arch::{arm_shared::*, simd::*},
hint::unreachable_unchecked,
intrinsics::simd::*,
mem::{transmute, zeroed},
ptr::{read_unaligned, write_unaligned},
};

View file

@ -7,9 +7,7 @@ mod generated;
#[cfg_attr(target_arch = "arm", unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800"))]
pub use self::generated::*;
use crate::{
core_arch::simd::*, core_arch::simd_llvm::*, hint::unreachable_unchecked, mem::transmute,
};
use crate::{core_arch::simd::*, hint::unreachable_unchecked, intrinsics::simd::*, mem::transmute};
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -7,7 +7,6 @@
#![feature(
custom_inner_attributes,
link_llvm_intrinsics,
platform_intrinsics,
repr_simd,
simd_ffi,
proc_macro_hygiene,

View file

@ -265,8 +265,6 @@ pub mod arch {
}
}
mod simd_llvm;
#[cfg(any(target_arch = "x86", target_arch = "x86_64", doc))]
#[doc(cfg(any(target_arch = "x86", target_arch = "x86_64")))]
mod x86;

View file

@ -13,11 +13,7 @@
#![allow(non_camel_case_types)]
use crate::{
core_arch::{simd::*, simd_llvm::*},
mem,
mem::transmute,
};
use crate::{core_arch::simd::*, intrinsics::simd::*, mem, mem::transmute};
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -8,7 +8,7 @@
#![allow(non_camel_case_types)]
use crate::core_arch::simd_llvm::*;
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -1,16 +0,0 @@
//! LLVM's SIMD platform intrinsics
// This re-export is temporary; once libcore has all the required intrinsics, we can
// remove this entire file.
#[allow(unused_imports)]
pub use crate::intrinsics::simd::*;
extern "platform-intrinsic" {
#[rustc_const_unstable(feature = "const_simd_insert", issue = "none")]
pub fn simd_insert<T, U>(x: T, idx: u32, val: U) -> T;
#[rustc_const_unstable(feature = "const_simd_extract", issue = "none")]
pub fn simd_extract<T, U>(x: T, idx: u32) -> U;
pub fn simd_reduce_add_unordered<T, U>(x: T) -> U;
pub fn simd_reduce_mul_unordered<T, U>(x: T) -> U;
}

View file

@ -2,7 +2,7 @@
use crate::prelude::v1::*;
use crate::core_arch::simd_llvm::*;
use crate::intrinsics::simd::*;
define_ty_doc! {
f32x2, f32, f32 |

View file

@ -6,11 +6,7 @@
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use crate::{
core_arch::{simd, simd_llvm::*},
marker::Sized,
mem, ptr,
};
use crate::{core_arch::simd, intrinsics::simd::*, marker::Sized, mem, ptr};
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -14,7 +14,8 @@
//! [wiki]: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
use crate::{
core_arch::{simd::*, simd_llvm::*, x86::*},
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
mem, ptr,
};

View file

@ -18,7 +18,8 @@
//! [wiki_avx]: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
//! [wiki_fma]: https://en.wikipedia.org/wiki/Fused_multiply-accumulate
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::core_arch::{simd::*, x86::*};
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -2,7 +2,8 @@
//!
//! [AVX512BF16 intrinsics]: https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=1769&avx512techs=AVX512_BF16
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::core_arch::{simd::*, x86::*};
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -13,7 +13,6 @@ use crate::core_arch::simd::i16x8;
use crate::core_arch::simd::i8x16;
use crate::core_arch::simd::i8x32;
use crate::core_arch::simd::i8x64;
use crate::core_arch::simd_llvm::simd_select_bitmask;
use crate::core_arch::x86::__m128i;
use crate::core_arch::x86::__m256i;
use crate::core_arch::x86::__m512i;
@ -27,6 +26,7 @@ use crate::core_arch::x86::_mm_setzero_si128;
use crate::core_arch::x86::m128iExt;
use crate::core_arch::x86::m256iExt;
use crate::core_arch::x86::m512iExt;
use crate::intrinsics::simd::simd_select_bitmask;
use crate::mem::transmute;
#[cfg(test)]

View file

@ -1,6 +1,7 @@
use crate::{
arch::asm,
core_arch::{simd::*, simd_llvm::*, x86::*},
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
mem, ptr,
};

View file

@ -1,4 +1,5 @@
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::core_arch::{simd::*, x86::*};
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -1,6 +1,7 @@
use crate::{
arch::asm,
core_arch::{simd::*, simd_llvm::*, x86::*},
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
mem, ptr,
};

View file

@ -1,4 +1,5 @@
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::core_arch::{simd::*, x86::*};
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -1,6 +1,7 @@
use crate::{
arch::asm,
core_arch::{simd::*, simd_llvm::*, x86::*},
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
};
#[cfg(test)]

View file

@ -1,4 +1,5 @@
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::core_arch::{simd::*, x86::*};
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -13,7 +13,6 @@ use crate::core_arch::simd::i32x8;
use crate::core_arch::simd::i64x2;
use crate::core_arch::simd::i64x4;
use crate::core_arch::simd::i64x8;
use crate::core_arch::simd_llvm::simd_select_bitmask;
use crate::core_arch::x86::__m128i;
use crate::core_arch::x86::__m256i;
use crate::core_arch::x86::__m512i;
@ -25,6 +24,7 @@ use crate::core_arch::x86::_mm_setzero_si128;
use crate::core_arch::x86::m128iExt;
use crate::core_arch::x86::m256iExt;
use crate::core_arch::x86::m512iExt;
use crate::intrinsics::simd::simd_select_bitmask;
use crate::mem::transmute;
#[cfg(test)]

View file

@ -18,8 +18,8 @@
//! [amd64_ref]: http://support.amd.com/TechDocs/24594.pdf
//! [wiki_fma]: https://en.wikipedia.org/wiki/Fused_multiply-accumulate
use crate::core_arch::simd_llvm::simd_fma;
use crate::core_arch::x86::*;
use crate::intrinsics::simd::simd_fma;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -10,7 +10,6 @@
use crate::core_arch::simd::i8x16;
use crate::core_arch::simd::i8x32;
use crate::core_arch::simd::i8x64;
use crate::core_arch::simd_llvm::simd_select_bitmask;
use crate::core_arch::x86::__m128i;
use crate::core_arch::x86::__m256i;
use crate::core_arch::x86::__m512i;
@ -23,6 +22,7 @@ use crate::core_arch::x86::_mm_setzero_si128;
use crate::core_arch::x86::m128iExt;
use crate::core_arch::x86::m256iExt;
use crate::core_arch::x86::m512iExt;
use crate::intrinsics::simd::simd_select_bitmask;
use crate::mem::transmute;
#[cfg(test)]

View file

@ -1,7 +1,8 @@
//! Streaming SIMD Extensions (SSE)
use crate::{
core_arch::{simd::*, simd_llvm::*, x86::*},
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
mem, ptr,
};

View file

@ -4,7 +4,8 @@
use stdarch_test::assert_instr;
use crate::{
core_arch::{simd::*, simd_llvm::*, x86::*},
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
mem, ptr,
};

View file

@ -1,6 +1,7 @@
//! Streaming SIMD Extensions 3 (SSE3)
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::core_arch::{simd::*, x86::*};
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -1,6 +1,7 @@
//! Streaming SIMD Extensions 4.1 (SSE4.1)
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::core_arch::{simd::*, x86::*};
use crate::intrinsics::simd::*;
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -5,7 +5,10 @@
#[cfg(test)]
use stdarch_test::assert_instr;
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::{
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
};
/// String contains unsigned 8-bit characters *(Default)*
#[stable(feature = "simd_x86", since = "1.27.0")]

View file

@ -1,6 +1,9 @@
//! Supplemental Streaming SIMD Extensions 3 (SSSE3)
use crate::core_arch::{simd::*, simd_llvm::*, x86::*};
use crate::{
core_arch::{simd::*, x86::*},
intrinsics::simd::*,
};
#[cfg(test)]
use stdarch_test::assert_instr;

View file

@ -13,10 +13,7 @@
//! [amd64_ref]: http://support.amd.com/TechDocs/24594.pdf
//! [wiki]: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
use crate::{
core_arch::{simd_llvm::*, x86::*},
mem::transmute,
};
use crate::{core_arch::x86::*, intrinsics::simd::*, mem::transmute};
/// Copies `a` to result, and insert the 64-bit integer `i` into result
/// at the location specified by `index`.

View file

@ -18,7 +18,8 @@
//! [wiki_avx]: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
//! [wiki_fma]: https://en.wikipedia.org/wiki/Fused_multiply-accumulate
use crate::core_arch::{simd_llvm::*, x86::*};
use crate::core_arch::x86::*;
use crate::intrinsics::simd::*;
/// Extracts a 64-bit integer from `a`, selected with `INDEX`.
///

View file

@ -1,5 +1,6 @@
use crate::{
core_arch::{simd::*, simd_llvm::*, x86::*, x86_64::*},
core_arch::{simd::*, x86::*, x86_64::*},
intrinsics::simd::*,
mem::transmute,
};

View file

@ -1,8 +1,8 @@
//! `x86_64`'s Streaming SIMD Extensions 2 (SSE2)
use crate::{
core_arch::{simd_llvm::*, x86::*},
intrinsics,
core_arch::x86::*,
intrinsics::{self, simd::*},
};
#[cfg(test)]

View file

@ -1,9 +1,6 @@
//! `i686`'s Streaming SIMD Extensions 4.1 (SSE4.1)
use crate::{
core_arch::{simd_llvm::*, x86::*},
mem::transmute,
};
use crate::{core_arch::x86::*, intrinsics::simd::*, mem::transmute};
#[cfg(test)]
use stdarch_test::assert_instr;