Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions crates/core_arch/src/loongarch64/lasx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -447,8 +447,6 @@ unsafe extern "unadjusted" {
fn __lasx_xvssrln_h_w(a: __v8i32, b: __v8i32) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvssrln.w.d"]
fn __lasx_xvssrln_w_d(a: __v4i64, b: __v4i64) -> __v8i32;
#[link_name = "llvm.loongarch.lasx.xvldi"]
fn __lasx_xvldi(a: i32) -> __v4i64;
#[link_name = "llvm.loongarch.lasx.xvextl.qu.du"]
fn __lasx_xvextl_qu_du(a: __v4u64) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.vext2xv.h.b"]
Expand Down Expand Up @@ -2597,15 +2595,6 @@ pub fn lasx_xvssrln_w_d(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssrln_w_d(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lasx")]
#[rustc_legacy_const_generics(0)]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvldi<const IMM_S13: i32>() -> m256i {
static_assert_simm_bits!(IMM_S13, 13);
unsafe { transmute(__lasx_xvldi(IMM_S13)) }
}

#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
Expand Down
184 changes: 184 additions & 0 deletions crates/core_arch/src/loongarch64/lasx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,7 @@ impl_sv!("lasx", lasx_xvrepli_b, simd_ext_splat, m256i, i8x32, 10);
impl_sv!("lasx", lasx_xvrepli_h, simd_ext_splat, m256i, i16x16, 10);
impl_sv!("lasx", lasx_xvrepli_w, simd_ext_splat, m256i, i32x8, 10);
impl_sv!("lasx", lasx_xvrepli_d, simd_ext_splat, m256i, i64x4, 10);
impl_sv!("lasx", lasx_xvldi, simd_ext_ldi, m256i, i64x4, 13, const);

impl_vvv!("lasx", lasx_xvadd_b, simd_add, m256i, i8x32);
impl_vvv!("lasx", lasx_xvadd_h, simd_add, m256i, i16x16);
Expand Down Expand Up @@ -618,3 +619,186 @@ impl_vvvv!("lasx", lasx_xvfnmsub_d, simd_ext_fnmsub, m256d, f64x4);

impl_vugv!("lasx", lasx_xvinsgr2vr_w, simd_insert, m256i, i32x8, i32, 3);
impl_vugv!("lasx", lasx_xvinsgr2vr_d, simd_insert, m256i, i64x4, i64, 2);

#[cfg(test)]
mod tests {
use crate::{
core_arch::{loongarch64::*, simd::*},
mem::transmute,
};
use stdarch_test::simd_test;

#[simd_test(enable = "lasx")]
unsafe fn xvldi() {
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<0>()));
let r = i8x32::new(
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
);
assert_eq!(r, transmute(lasx_xvldi::<255>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<1024>()));
let r = i8x32::new(
0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0,
-2, 0, -2, 0, -2, 0, -2,
);
assert_eq!(r, transmute(lasx_xvldi::<1536>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<2048>()));
let r = i8x32::new(
0, -2, -1, -1, 0, -2, -1, -1, 0, -2, -1, -1, 0, -2, -1, -1, 0, -2, -1, -1, 0, -2, -1,
-1, 0, -2, -1, -1, 0, -2, -1, -1,
);
assert_eq!(r, transmute(lasx_xvldi::<2560>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<3072>()));
let r = i8x32::new(
0, -2, -1, -1, -1, -1, -1, -1, 0, -2, -1, -1, -1, -1, -1, -1, 0, -2, -1, -1, -1, -1,
-1, -1, 0, -2, -1, -1, -1, -1, -1, -1,
);
assert_eq!(r, transmute(lasx_xvldi::<3584>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-4096>()));
let r = i8x32::new(
-128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0,
0, -128, 0, 0, 0, -128, 0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-3968>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-3840>()));
let r = i8x32::new(
0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
0, 0, -128, 0, 0, 0, -128, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-3712>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-3584>()));
let r = i8x32::new(
0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128,
0, 0, 0, -128, 0, 0, 0, -128, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-3456>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-3328>()));
let r = i8x32::new(
0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0,
-128, 0, 0, 0, -128, 0, 0, 0, -128,
);
assert_eq!(r, transmute(lasx_xvldi::<-3200>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-3072>()));
let r = i8x32::new(
-128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128,
0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-2944>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-2816>()));
let r = i8x32::new(
0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0,
-128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128,
);
assert_eq!(r, transmute(lasx_xvldi::<-2688>()));
let r = i8x32::new(
-1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0,
0, -1, 0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-2560>()));
let r = i8x32::new(
-1, -128, 0, 0, -1, -128, 0, 0, -1, -128, 0, 0, -1, -128, 0, 0, -1, -128, 0, 0, -1,
-128, 0, 0, -1, -128, 0, 0, -1, -128, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-2432>()));
let r = i8x32::new(
-1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1,
-1, 0, 0, -1, -1, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-2304>()));
let r = i8x32::new(
-1, -1, -128, 0, -1, -1, -128, 0, -1, -1, -128, 0, -1, -1, -128, 0, -1, -1, -128, 0,
-1, -1, -128, 0, -1, -1, -128, 0, -1, -1, -128, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-2176>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-2048>()));
let r = i8x32::new(
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
);
assert_eq!(r, transmute(lasx_xvldi::<-1793>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-1792>()));
let r = i8x32::new(
0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0,
-1, 0, -1, 0, -1, 0, -1,
);
assert_eq!(r, transmute(lasx_xvldi::<-1622>()));
let r = i8x32::new(
0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0,
64, 0, 0, 0, 64,
);
assert_eq!(r, transmute(lasx_xvldi::<-1536>()));
let r = i8x32::new(
0, 0, 80, -63, 0, 0, 80, -63, 0, 0, 80, -63, 0, 0, 80, -63, 0, 0, 80, -63, 0, 0, 80,
-63, 0, 0, 80, -63, 0, 0, 80, -63,
);
assert_eq!(r, transmute(lasx_xvldi::<-1366>()));
let r = i8x32::new(
0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64,
0, 0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-1280>()));
let r = i8x32::new(
0, 0, 80, -63, 0, 0, 0, 0, 0, 0, 80, -63, 0, 0, 0, 0, 0, 0, 80, -63, 0, 0, 0, 0, 0, 0,
80, -63, 0, 0, 0, 0,
);
assert_eq!(r, transmute(lasx_xvldi::<-1110>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,
0, 0, 0, 64,
);
assert_eq!(r, transmute(lasx_xvldi::<-1024>()));
let r = i8x32::new(
0, 0, 0, 0, 0, 0, 42, -64, 0, 0, 0, 0, 0, 0, 42, -64, 0, 0, 0, 0, 0, 0, 42, -64, 0, 0,
0, 0, 0, 0, 42, -64,
);
assert_eq!(r, transmute(lasx_xvldi::<-854>()));
}
}
11 changes: 0 additions & 11 deletions crates/core_arch/src/loongarch64/lsx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -749,8 +749,6 @@ unsafe extern "unadjusted" {
fn __lsx_vssrln_h_w(a: __v4i32, b: __v4i32) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vssrln.w.d"]
fn __lsx_vssrln_w_d(a: __v2i64, b: __v2i64) -> __v4i32;
#[link_name = "llvm.loongarch.lsx.vldi"]
fn __lsx_vldi(a: i32) -> __v2i64;
#[link_name = "llvm.loongarch.lsx.vshuf.b"]
fn __lsx_vshuf_b(a: __v16i8, b: __v16i8, c: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vextl.qu.du"]
Expand Down Expand Up @@ -3668,15 +3666,6 @@ pub fn lsx_vssrln_w_d(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssrln_w_d(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lsx")]
#[rustc_legacy_const_generics(0)]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vldi<const IMM_S13: i32>() -> m128i {
static_assert_simm_bits!(IMM_S13, 13);
unsafe { transmute(__lsx_vldi(IMM_S13)) }
}

#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
Expand Down
94 changes: 94 additions & 0 deletions crates/core_arch/src/loongarch64/lsx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@ impl_sv!("lsx", lsx_vrepli_b, simd_ext_splat, m128i, i8x16, 10);
impl_sv!("lsx", lsx_vrepli_h, simd_ext_splat, m128i, i16x8, 10);
impl_sv!("lsx", lsx_vrepli_w, simd_ext_splat, m128i, i32x4, 10);
impl_sv!("lsx", lsx_vrepli_d, simd_ext_splat, m128i, i64x2, 10);
impl_sv!("lsx", lsx_vldi, simd_ext_ldi, m128i, i64x2, 13, const);

impl_vvv!("lsx", lsx_vadd_b, simd_add, m128i, i8x16);
impl_vvv!("lsx", lsx_vadd_h, simd_add, m128i, i16x8);
Expand Down Expand Up @@ -520,3 +521,96 @@ impl_vugv!("lsx", lsx_vinsgr2vr_b, simd_insert, m128i, i8x16, i32, 4);
impl_vugv!("lsx", lsx_vinsgr2vr_h, simd_insert, m128i, i16x8, i32, 3);
impl_vugv!("lsx", lsx_vinsgr2vr_w, simd_insert, m128i, i32x4, i32, 2);
impl_vugv!("lsx", lsx_vinsgr2vr_d, simd_insert, m128i, i64x2, i64, 1);

#[cfg(test)]
mod tests {
use crate::{
core_arch::{loongarch64::*, simd::*},
mem::transmute,
};
use stdarch_test::simd_test;

#[simd_test(enable = "lsx")]
unsafe fn vldi() {
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<0>()));
let r = i8x16::new(
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
);
assert_eq!(r, transmute(lsx_vldi::<255>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<1024>()));
let r = i8x16::new(0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2, 0, -2);
assert_eq!(r, transmute(lsx_vldi::<1536>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<2048>()));
let r = i8x16::new(0, -2, -1, -1, 0, -2, -1, -1, 0, -2, -1, -1, 0, -2, -1, -1);
assert_eq!(r, transmute(lsx_vldi::<2560>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<3072>()));
let r = i8x16::new(0, -2, -1, -1, -1, -1, -1, -1, 0, -2, -1, -1, -1, -1, -1, -1);
assert_eq!(r, transmute(lsx_vldi::<3584>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-4096>()));
let r = i8x16::new(-128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-3968>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-3840>()));
let r = i8x16::new(0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-3712>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-3584>()));
let r = i8x16::new(0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0);
assert_eq!(r, transmute(lsx_vldi::<-3456>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-3328>()));
let r = i8x16::new(0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128);
assert_eq!(r, transmute(lsx_vldi::<-3200>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-3072>()));
let r = i8x16::new(
-128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0,
);
assert_eq!(r, transmute(lsx_vldi::<-2944>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-2816>()));
let r = i8x16::new(
0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128, 0, -128,
);
assert_eq!(r, transmute(lsx_vldi::<-2688>()));
let r = i8x16::new(-1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-2560>()));
let r = i8x16::new(
-1, -128, 0, 0, -1, -128, 0, 0, -1, -128, 0, 0, -1, -128, 0, 0,
);
assert_eq!(r, transmute(lsx_vldi::<-2432>()));
let r = i8x16::new(-1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-2304>()));
let r = i8x16::new(
-1, -1, -128, 0, -1, -1, -128, 0, -1, -1, -128, 0, -1, -1, -128, 0,
);
assert_eq!(r, transmute(lsx_vldi::<-2176>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-2048>()));
let r = i8x16::new(
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
);
assert_eq!(r, transmute(lsx_vldi::<-1793>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-1792>()));
let r = i8x16::new(0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1);
assert_eq!(r, transmute(lsx_vldi::<-1622>()));
let r = i8x16::new(0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 64);
assert_eq!(r, transmute(lsx_vldi::<-1536>()));
let r = i8x16::new(0, 0, 80, -63, 0, 0, 80, -63, 0, 0, 80, -63, 0, 0, 80, -63);
assert_eq!(r, transmute(lsx_vldi::<-1366>()));
let r = i8x16::new(0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-1280>()));
let r = i8x16::new(0, 0, 80, -63, 0, 0, 0, 0, 0, 0, 80, -63, 0, 0, 0, 0);
assert_eq!(r, transmute(lsx_vldi::<-1110>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64);
assert_eq!(r, transmute(lsx_vldi::<-1024>()));
let r = i8x16::new(0, 0, 0, 0, 0, 0, 42, -64, 0, 0, 0, 0, 0, 0, 42, -64);
assert_eq!(r, transmute(lsx_vldi::<-854>()));
}
}
Loading