Add tracking issue for PowerPC intrinsics
This commit is contained in:
parent
5f29166d6a
commit
ef2c441c81
6 changed files with 185 additions and 2 deletions
|
|
@ -238,7 +238,7 @@ pub mod arch {
|
|||
/// See the [module documentation](../index.html) for more details.
|
||||
#[cfg(any(target_arch = "powerpc", doc))]
|
||||
#[doc(cfg(target_arch = "powerpc"))]
|
||||
#[unstable(feature = "stdsimd", issue = "27731")]
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub mod powerpc {
|
||||
pub use crate::core_arch::powerpc::*;
|
||||
}
|
||||
|
|
@ -248,7 +248,7 @@ pub mod arch {
|
|||
/// See the [module documentation](../index.html) for more details.
|
||||
#[cfg(any(target_arch = "powerpc64", doc))]
|
||||
#[doc(cfg(target_arch = "powerpc64"))]
|
||||
#[unstable(feature = "stdsimd", issue = "27731")]
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub mod powerpc64 {
|
||||
pub use crate::core_arch::powerpc64::*;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -21,6 +21,7 @@ macro_rules! test_impl {
|
|||
#[allow(unknown_lints, unused_macro_rules)]
|
||||
macro_rules! impl_vec_trait {
|
||||
([$Trait:ident $m:ident] $fun:ident ($a:ty)) => {
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
impl $Trait for $a {
|
||||
#[inline]
|
||||
#[target_feature(enable = "altivec")]
|
||||
|
|
@ -30,6 +31,7 @@ macro_rules! impl_vec_trait {
|
|||
}
|
||||
};
|
||||
([$Trait:ident $m:ident] $fun:ident ($a:ty) -> $r:ty) => {
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
impl $Trait for $a {
|
||||
type Result = $r;
|
||||
#[inline]
|
||||
|
|
@ -59,6 +61,7 @@ macro_rules! impl_vec_trait {
|
|||
impl_vec_trait!{ [$Trait $m] $sf (vector_float) -> vector_float }
|
||||
};
|
||||
([$Trait:ident $m:ident] $fun:ident ($a:ty, $b:ty) -> $r:ty) => {
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
impl $Trait<$b> for $a {
|
||||
type Result = $r;
|
||||
#[inline]
|
||||
|
|
|
|||
|
|
@ -4,9 +4,11 @@
|
|||
mod macros;
|
||||
|
||||
mod altivec;
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub use self::altivec::*;
|
||||
|
||||
mod vsx;
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub use self::vsx::*;
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
@ -15,6 +17,7 @@ use stdarch_test::assert_instr;
|
|||
/// Generates the trap instruction `TRAP`
|
||||
#[cfg_attr(test, assert_instr(trap))]
|
||||
#[inline]
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub unsafe fn trap() -> ! {
|
||||
crate::intrinsics::abort()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,12 +18,16 @@ use crate::mem::transmute;
|
|||
types! {
|
||||
// pub struct vector_Float16 = f16x8;
|
||||
/// PowerPC-specific 128-bit wide vector of two packed `i64`
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub struct vector_signed_long(i64, i64);
|
||||
/// PowerPC-specific 128-bit wide vector of two packed `u64`
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub struct vector_unsigned_long(u64, u64);
|
||||
/// PowerPC-specific 128-bit wide vector mask of two `i64`
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub struct vector_bool_long(i64, i64);
|
||||
/// PowerPC-specific 128-bit wide vector of two packed `f64`
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub struct vector_double(f64, f64);
|
||||
// pub struct vector_signed_long_long = vector_signed_long;
|
||||
// pub struct vector_unsigned_long_long = vector_unsigned_long;
|
||||
|
|
@ -36,7 +40,9 @@ mod sealed {
|
|||
use super::*;
|
||||
use crate::core_arch::simd::*;
|
||||
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub trait VectorPermDI {
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
unsafe fn vec_xxpermdi(self, b: Self, dm: u8) -> Self;
|
||||
}
|
||||
|
||||
|
|
@ -59,6 +65,7 @@ mod sealed {
|
|||
|
||||
macro_rules! vec_xxpermdi {
|
||||
{$impl: ident} => {
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
impl VectorPermDI for $impl {
|
||||
#[inline]
|
||||
#[target_feature(enable = "vsx")]
|
||||
|
|
@ -79,6 +86,7 @@ mod sealed {
|
|||
#[inline]
|
||||
#[target_feature(enable = "vsx")]
|
||||
//#[rustc_legacy_const_generics(2)]
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub unsafe fn vec_xxpermdi<T, const DM: i32>(a: T, b: T) -> T
|
||||
where
|
||||
T: sealed::VectorPermDI,
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@
|
|||
//!
|
||||
//! [64-Bit ELF V2 ABI Specification - Power Architecture]: http://openpowerfoundation.org/wp-content/uploads/resources/leabi/leabi-20170510.pdf
|
||||
|
||||
#[unstable(feature = "stdarch_powerpc", issue = "111145")]
|
||||
pub use crate::core_arch::powerpc::*;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue