Add tracking issue for PowerPC intrinsics

This commit is contained in:
Amanieu d'Antras 2023-05-03 18:06:06 +01:00
parent 5f29166d6a
commit ef2c441c81
6 changed files with 185 additions and 2 deletions

View file

@ -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

View file

@ -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]

View file

@ -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()
}

View file

@ -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,

View file

@ -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::*;