use remaining SIMD intrinsics via libcore
This commit is contained in:
parent
6fa800718e
commit
da78357bf7
33 changed files with 53 additions and 66 deletions
|
|
@ -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},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
#![feature(
|
||||
custom_inner_attributes,
|
||||
link_llvm_intrinsics,
|
||||
platform_intrinsics,
|
||||
repr_simd,
|
||||
simd_ffi,
|
||||
proc_macro_hygiene,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
use crate::prelude::v1::*;
|
||||
|
||||
use crate::core_arch::simd_llvm::*;
|
||||
use crate::intrinsics::simd::*;
|
||||
|
||||
define_ty_doc! {
|
||||
f32x2, f32, f32 |
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use crate::{
|
||||
arch::asm,
|
||||
core_arch::{simd::*, simd_llvm::*, x86::*},
|
||||
core_arch::{simd::*, x86::*},
|
||||
intrinsics::simd::*,
|
||||
mem, ptr,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use crate::{
|
||||
arch::asm,
|
||||
core_arch::{simd::*, simd_llvm::*, x86::*},
|
||||
core_arch::{simd::*, x86::*},
|
||||
intrinsics::simd::*,
|
||||
mem, ptr,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use crate::{
|
||||
arch::asm,
|
||||
core_arch::{simd::*, simd_llvm::*, x86::*},
|
||||
core_arch::{simd::*, x86::*},
|
||||
intrinsics::simd::*,
|
||||
};
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
//! Streaming SIMD Extensions (SSE)
|
||||
|
||||
use crate::{
|
||||
core_arch::{simd::*, simd_llvm::*, x86::*},
|
||||
core_arch::{simd::*, x86::*},
|
||||
intrinsics::simd::*,
|
||||
mem, ptr,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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")]
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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`.
|
||||
|
|
|
|||
|
|
@ -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`.
|
||||
///
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
use crate::{
|
||||
core_arch::{simd::*, simd_llvm::*, x86::*, x86_64::*},
|
||||
core_arch::{simd::*, x86::*, x86_64::*},
|
||||
intrinsics::simd::*,
|
||||
mem::transmute,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue