core_arch: Add LoongArch LASX intrinsics

Co-authored-by: ZHAI Xiang <zhaixiang@loongson.cn>
This commit is contained in:
WANG Rui 2023-10-26 15:08:32 +08:00 committed by Amanieu d'Antras
parent f74fe05f9e
commit 2b923a30e8
6 changed files with 16127 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,13 @@
//! LoongArch64 LASX intrinsics
#![allow(non_camel_case_types)]
#[rustfmt::skip]
mod types;
#[rustfmt::skip]
mod generated;
#[rustfmt::skip]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub use self::generated::*;

View file

@ -0,0 +1,57 @@
types! {
/// LOONGARCH-specific 256-bit wide vector of 32 packed `i8`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v32i8(
pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8,
pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8,
pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8,
pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8, pub(crate) i8,
);
/// LOONGARCH-specific 256-bit wide vector of 16 packed `i16`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v16i16(
pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16,
pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16, pub(crate) i16,
);
/// LOONGARCH-specific 256-bit wide vector of 8 packed `i32`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v8i32(pub(crate) i32, pub(crate) i32, pub(crate) i32, pub(crate) i32, pub(crate) i32, pub(crate) i32, pub(crate) i32, pub(crate) i32);
/// LOONGARCH-specific 256-bit wide vector of 4 packed `i64`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v4i64(pub(crate) i64, pub(crate) i64, pub(crate) i64, pub(crate) i64);
/// LOONGARCH-specific 256-bit wide vector of 32 packed `u8`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v32u8(
pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8,
pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8,
pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8,
pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8, pub(crate) u8,
);
/// LOONGARCH-specific 256-bit wide vector of 16 packed `u16`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v16u16(
pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16,
pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16, pub(crate) u16,
);
/// LOONGARCH-specific 256-bit wide vector of 8 packed `u32`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v8u32(pub(crate) u32, pub(crate) u32, pub(crate) u32, pub(crate) u32, pub(crate) u32, pub(crate) u32, pub(crate) u32, pub(crate) u32);
/// LOONGARCH-specific 256-bit wide vector of 4 packed `u64`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v4u64(pub(crate) u64, pub(crate) u64, pub(crate) u64, pub(crate) u64);
/// LOONGARCH-specific 128-bit wide vector of 8 packed `f32`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v8f32(pub(crate) f32, pub(crate) f32, pub(crate) f32, pub(crate) f32, pub(crate) f32, pub(crate) f32, pub(crate) f32, pub(crate) f32);
/// LOONGARCH-specific 256-bit wide vector of 4 packed `f64`.
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub struct v4f64(pub(crate) f64, pub(crate) f64, pub(crate) f64, pub(crate) f64);
}

View file

@ -1,6 +1,9 @@
//! `LoongArch` intrinsics
mod lasx;
mod lsx;
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub use self::lasx::*;
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub use self::lsx::*;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff