loongarch: Use intrinsics::simd for vs{add,sub}

This commit is contained in:
WANG Rui
2026-04-24 23:59:46 +08:00
parent 1964b04a31
commit c80d077ffc
7 changed files with 96 additions and 288 deletions
@@ -99,22 +99,6 @@
fn __lasx_xvadda_w(a: __v8i32, b: __v8i32) -> __v8i32;
#[link_name = "llvm.loongarch.lasx.xvadda.d"]
fn __lasx_xvadda_d(a: __v4i64, b: __v4i64) -> __v4i64;
#[link_name = "llvm.loongarch.lasx.xvsadd.b"]
fn __lasx_xvsadd_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvsadd.h"]
fn __lasx_xvsadd_h(a: __v16i16, b: __v16i16) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvsadd.w"]
fn __lasx_xvsadd_w(a: __v8i32, b: __v8i32) -> __v8i32;
#[link_name = "llvm.loongarch.lasx.xvsadd.d"]
fn __lasx_xvsadd_d(a: __v4i64, b: __v4i64) -> __v4i64;
#[link_name = "llvm.loongarch.lasx.xvsadd.bu"]
fn __lasx_xvsadd_bu(a: __v32u8, b: __v32u8) -> __v32u8;
#[link_name = "llvm.loongarch.lasx.xvsadd.hu"]
fn __lasx_xvsadd_hu(a: __v16u16, b: __v16u16) -> __v16u16;
#[link_name = "llvm.loongarch.lasx.xvsadd.wu"]
fn __lasx_xvsadd_wu(a: __v8u32, b: __v8u32) -> __v8u32;
#[link_name = "llvm.loongarch.lasx.xvsadd.du"]
fn __lasx_xvsadd_du(a: __v4u64, b: __v4u64) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.xvavg.b"]
fn __lasx_xvavg_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvavg.h"]
@@ -147,22 +131,6 @@
fn __lasx_xvavgr_wu(a: __v8u32, b: __v8u32) -> __v8u32;
#[link_name = "llvm.loongarch.lasx.xvavgr.du"]
fn __lasx_xvavgr_du(a: __v4u64, b: __v4u64) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.xvssub.b"]
fn __lasx_xvssub_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvssub.h"]
fn __lasx_xvssub_h(a: __v16i16, b: __v16i16) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvssub.w"]
fn __lasx_xvssub_w(a: __v8i32, b: __v8i32) -> __v8i32;
#[link_name = "llvm.loongarch.lasx.xvssub.d"]
fn __lasx_xvssub_d(a: __v4i64, b: __v4i64) -> __v4i64;
#[link_name = "llvm.loongarch.lasx.xvssub.bu"]
fn __lasx_xvssub_bu(a: __v32u8, b: __v32u8) -> __v32u8;
#[link_name = "llvm.loongarch.lasx.xvssub.hu"]
fn __lasx_xvssub_hu(a: __v16u16, b: __v16u16) -> __v16u16;
#[link_name = "llvm.loongarch.lasx.xvssub.wu"]
fn __lasx_xvssub_wu(a: __v8u32, b: __v8u32) -> __v8u32;
#[link_name = "llvm.loongarch.lasx.xvssub.du"]
fn __lasx_xvssub_du(a: __v4u64, b: __v4u64) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.xvabsd.b"]
fn __lasx_xvabsd_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvabsd.h"]
@@ -1505,62 +1473,6 @@ pub fn lasx_xvadda_d(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvadda_d(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_b(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_b(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_h(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_h(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_w(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_w(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_d(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_d(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_bu(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_bu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_hu(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_hu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_wu(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_wu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvsadd_du(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvsadd_du(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -1673,62 +1585,6 @@ pub fn lasx_xvavgr_du(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvavgr_du(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_b(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_b(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_h(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_h(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_w(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_w(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_d(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_d(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_bu(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_bu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_hu(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_hu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_wu(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_wu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvssub_du(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvssub_du(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -132,6 +132,22 @@
impl_vvv!("lasx", lasx_xvbitrev_h, ls::simd_bitrev, m256i, u16x16);
impl_vvv!("lasx", lasx_xvbitrev_w, ls::simd_bitrev, m256i, u32x8);
impl_vvv!("lasx", lasx_xvbitrev_d, ls::simd_bitrev, m256i, u64x4);
impl_vvv!("lasx", lasx_xvsadd_b, is::simd_saturating_add, m256i, i8x32);
impl_vvv!("lasx", lasx_xvsadd_h, is::simd_saturating_add, m256i, i16x16);
impl_vvv!("lasx", lasx_xvsadd_w, is::simd_saturating_add, m256i, i32x8);
impl_vvv!("lasx", lasx_xvsadd_d, is::simd_saturating_add, m256i, i64x4);
impl_vvv!("lasx", lasx_xvsadd_bu, is::simd_saturating_add, m256i, u8x32);
impl_vvv!("lasx", lasx_xvsadd_hu, is::simd_saturating_add, m256i, u16x16);
impl_vvv!("lasx", lasx_xvsadd_wu, is::simd_saturating_add, m256i, u32x8);
impl_vvv!("lasx", lasx_xvsadd_du, is::simd_saturating_add, m256i, u64x4);
impl_vvv!("lasx", lasx_xvssub_b, is::simd_saturating_sub, m256i, i8x32);
impl_vvv!("lasx", lasx_xvssub_h, is::simd_saturating_sub, m256i, i16x16);
impl_vvv!("lasx", lasx_xvssub_w, is::simd_saturating_sub, m256i, i32x8);
impl_vvv!("lasx", lasx_xvssub_d, is::simd_saturating_sub, m256i, i64x4);
impl_vvv!("lasx", lasx_xvssub_bu, is::simd_saturating_sub, m256i, u8x32);
impl_vvv!("lasx", lasx_xvssub_hu, is::simd_saturating_sub, m256i, u16x16);
impl_vvv!("lasx", lasx_xvssub_wu, is::simd_saturating_sub, m256i, u32x8);
impl_vvv!("lasx", lasx_xvssub_du, is::simd_saturating_sub, m256i, u64x4);
impl_vuv!("lasx", lasx_xvslli_b, is::simd_shl, m256i, i8x32);
impl_vuv!("lasx", lasx_xvslli_h, is::simd_shl, m256i, i16x16);
@@ -99,22 +99,6 @@
fn __lsx_vadda_w(a: __v4i32, b: __v4i32) -> __v4i32;
#[link_name = "llvm.loongarch.lsx.vadda.d"]
fn __lsx_vadda_d(a: __v2i64, b: __v2i64) -> __v2i64;
#[link_name = "llvm.loongarch.lsx.vsadd.b"]
fn __lsx_vsadd_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vsadd.h"]
fn __lsx_vsadd_h(a: __v8i16, b: __v8i16) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vsadd.w"]
fn __lsx_vsadd_w(a: __v4i32, b: __v4i32) -> __v4i32;
#[link_name = "llvm.loongarch.lsx.vsadd.d"]
fn __lsx_vsadd_d(a: __v2i64, b: __v2i64) -> __v2i64;
#[link_name = "llvm.loongarch.lsx.vsadd.bu"]
fn __lsx_vsadd_bu(a: __v16u8, b: __v16u8) -> __v16u8;
#[link_name = "llvm.loongarch.lsx.vsadd.hu"]
fn __lsx_vsadd_hu(a: __v8u16, b: __v8u16) -> __v8u16;
#[link_name = "llvm.loongarch.lsx.vsadd.wu"]
fn __lsx_vsadd_wu(a: __v4u32, b: __v4u32) -> __v4u32;
#[link_name = "llvm.loongarch.lsx.vsadd.du"]
fn __lsx_vsadd_du(a: __v2u64, b: __v2u64) -> __v2u64;
#[link_name = "llvm.loongarch.lsx.vavg.b"]
fn __lsx_vavg_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vavg.h"]
@@ -147,22 +131,6 @@
fn __lsx_vavgr_wu(a: __v4u32, b: __v4u32) -> __v4u32;
#[link_name = "llvm.loongarch.lsx.vavgr.du"]
fn __lsx_vavgr_du(a: __v2u64, b: __v2u64) -> __v2u64;
#[link_name = "llvm.loongarch.lsx.vssub.b"]
fn __lsx_vssub_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vssub.h"]
fn __lsx_vssub_h(a: __v8i16, b: __v8i16) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vssub.w"]
fn __lsx_vssub_w(a: __v4i32, b: __v4i32) -> __v4i32;
#[link_name = "llvm.loongarch.lsx.vssub.d"]
fn __lsx_vssub_d(a: __v2i64, b: __v2i64) -> __v2i64;
#[link_name = "llvm.loongarch.lsx.vssub.bu"]
fn __lsx_vssub_bu(a: __v16u8, b: __v16u8) -> __v16u8;
#[link_name = "llvm.loongarch.lsx.vssub.hu"]
fn __lsx_vssub_hu(a: __v8u16, b: __v8u16) -> __v8u16;
#[link_name = "llvm.loongarch.lsx.vssub.wu"]
fn __lsx_vssub_wu(a: __v4u32, b: __v4u32) -> __v4u32;
#[link_name = "llvm.loongarch.lsx.vssub.du"]
fn __lsx_vssub_du(a: __v2u64, b: __v2u64) -> __v2u64;
#[link_name = "llvm.loongarch.lsx.vabsd.b"]
fn __lsx_vabsd_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vabsd.h"]
@@ -1417,62 +1385,6 @@ pub fn lsx_vadda_d(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vadda_d(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_b(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_b(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_h(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_h(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_w(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_w(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_d(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_d(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_bu(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_bu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_hu(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_hu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_wu(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_wu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vsadd_du(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vsadd_du(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -1585,62 +1497,6 @@ pub fn lsx_vavgr_du(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vavgr_du(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_b(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_b(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_h(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_h(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_w(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_w(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_d(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_d(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_bu(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_bu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_hu(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_hu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_wu(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_wu(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vssub_du(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vssub_du(transmute(a), transmute(b))) }
}
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -132,6 +132,22 @@
impl_vvv!("lsx", lsx_vbitrev_h, ls::simd_bitrev, m128i, u16x8);
impl_vvv!("lsx", lsx_vbitrev_w, ls::simd_bitrev, m128i, u32x4);
impl_vvv!("lsx", lsx_vbitrev_d, ls::simd_bitrev, m128i, u64x2);
impl_vvv!("lsx", lsx_vsadd_b, is::simd_saturating_add, m128i, i8x16);
impl_vvv!("lsx", lsx_vsadd_h, is::simd_saturating_add, m128i, i16x8);
impl_vvv!("lsx", lsx_vsadd_w, is::simd_saturating_add, m128i, i32x4);
impl_vvv!("lsx", lsx_vsadd_d, is::simd_saturating_add, m128i, i64x2);
impl_vvv!("lsx", lsx_vsadd_bu, is::simd_saturating_add, m128i, u8x16);
impl_vvv!("lsx", lsx_vsadd_hu, is::simd_saturating_add, m128i, u16x8);
impl_vvv!("lsx", lsx_vsadd_wu, is::simd_saturating_add, m128i, u32x4);
impl_vvv!("lsx", lsx_vsadd_du, is::simd_saturating_add, m128i, u64x2);
impl_vvv!("lsx", lsx_vssub_b, is::simd_saturating_sub, m128i, i8x16);
impl_vvv!("lsx", lsx_vssub_h, is::simd_saturating_sub, m128i, i16x8);
impl_vvv!("lsx", lsx_vssub_w, is::simd_saturating_sub, m128i, i32x4);
impl_vvv!("lsx", lsx_vssub_d, is::simd_saturating_sub, m128i, i64x2);
impl_vvv!("lsx", lsx_vssub_bu, is::simd_saturating_sub, m128i, u8x16);
impl_vvv!("lsx", lsx_vssub_hu, is::simd_saturating_sub, m128i, u16x8);
impl_vvv!("lsx", lsx_vssub_wu, is::simd_saturating_sub, m128i, u32x4);
impl_vvv!("lsx", lsx_vssub_du, is::simd_saturating_sub, m128i, u64x2);
impl_vuv!("lsx", lsx_vslli_b, is::simd_shl, m128i, i8x16);
impl_vuv!("lsx", lsx_vslli_h, is::simd_shl, m128i, i16x8);
@@ -944,41 +944,49 @@ asm-fmts = xd, xj, xk
data-types = V4DI, V4DI, V4DI
/// lasx_xvsadd_b
impl = portable
name = lasx_xvsadd_b
asm-fmts = xd, xj, xk
data-types = V32QI, V32QI, V32QI
/// lasx_xvsadd_h
impl = portable
name = lasx_xvsadd_h
asm-fmts = xd, xj, xk
data-types = V16HI, V16HI, V16HI
/// lasx_xvsadd_w
impl = portable
name = lasx_xvsadd_w
asm-fmts = xd, xj, xk
data-types = V8SI, V8SI, V8SI
/// lasx_xvsadd_d
impl = portable
name = lasx_xvsadd_d
asm-fmts = xd, xj, xk
data-types = V4DI, V4DI, V4DI
/// lasx_xvsadd_bu
impl = portable
name = lasx_xvsadd_bu
asm-fmts = xd, xj, xk
data-types = UV32QI, UV32QI, UV32QI
/// lasx_xvsadd_hu
impl = portable
name = lasx_xvsadd_hu
asm-fmts = xd, xj, xk
data-types = UV16HI, UV16HI, UV16HI
/// lasx_xvsadd_wu
impl = portable
name = lasx_xvsadd_wu
asm-fmts = xd, xj, xk
data-types = UV8SI, UV8SI, UV8SI
/// lasx_xvsadd_du
impl = portable
name = lasx_xvsadd_du
asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI
@@ -1064,41 +1072,49 @@ asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI
/// lasx_xvssub_b
impl = portable
name = lasx_xvssub_b
asm-fmts = xd, xj, xk
data-types = V32QI, V32QI, V32QI
/// lasx_xvssub_h
impl = portable
name = lasx_xvssub_h
asm-fmts = xd, xj, xk
data-types = V16HI, V16HI, V16HI
/// lasx_xvssub_w
impl = portable
name = lasx_xvssub_w
asm-fmts = xd, xj, xk
data-types = V8SI, V8SI, V8SI
/// lasx_xvssub_d
impl = portable
name = lasx_xvssub_d
asm-fmts = xd, xj, xk
data-types = V4DI, V4DI, V4DI
/// lasx_xvssub_bu
impl = portable
name = lasx_xvssub_bu
asm-fmts = xd, xj, xk
data-types = UV32QI, UV32QI, UV32QI
/// lasx_xvssub_hu
impl = portable
name = lasx_xvssub_hu
asm-fmts = xd, xj, xk
data-types = UV16HI, UV16HI, UV16HI
/// lasx_xvssub_wu
impl = portable
name = lasx_xvssub_wu
asm-fmts = xd, xj, xk
data-types = UV8SI, UV8SI, UV8SI
/// lasx_xvssub_du
impl = portable
name = lasx_xvssub_du
asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI
@@ -944,41 +944,49 @@ asm-fmts = vd, vj, vk
data-types = V2DI, V2DI, V2DI
/// lsx_vsadd_b
impl = portable
name = lsx_vsadd_b
asm-fmts = vd, vj, vk
data-types = V16QI, V16QI, V16QI
/// lsx_vsadd_h
impl = portable
name = lsx_vsadd_h
asm-fmts = vd, vj, vk
data-types = V8HI, V8HI, V8HI
/// lsx_vsadd_w
impl = portable
name = lsx_vsadd_w
asm-fmts = vd, vj, vk
data-types = V4SI, V4SI, V4SI
/// lsx_vsadd_d
impl = portable
name = lsx_vsadd_d
asm-fmts = vd, vj, vk
data-types = V2DI, V2DI, V2DI
/// lsx_vsadd_bu
impl = portable
name = lsx_vsadd_bu
asm-fmts = vd, vj, vk
data-types = UV16QI, UV16QI, UV16QI
/// lsx_vsadd_hu
impl = portable
name = lsx_vsadd_hu
asm-fmts = vd, vj, vk
data-types = UV8HI, UV8HI, UV8HI
/// lsx_vsadd_wu
impl = portable
name = lsx_vsadd_wu
asm-fmts = vd, vj, vk
data-types = UV4SI, UV4SI, UV4SI
/// lsx_vsadd_du
impl = portable
name = lsx_vsadd_du
asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI
@@ -1064,41 +1072,49 @@ asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI
/// lsx_vssub_b
impl = portable
name = lsx_vssub_b
asm-fmts = vd, vj, vk
data-types = V16QI, V16QI, V16QI
/// lsx_vssub_h
impl = portable
name = lsx_vssub_h
asm-fmts = vd, vj, vk
data-types = V8HI, V8HI, V8HI
/// lsx_vssub_w
impl = portable
name = lsx_vssub_w
asm-fmts = vd, vj, vk
data-types = V4SI, V4SI, V4SI
/// lsx_vssub_d
impl = portable
name = lsx_vssub_d
asm-fmts = vd, vj, vk
data-types = V2DI, V2DI, V2DI
/// lsx_vssub_bu
impl = portable
name = lsx_vssub_bu
asm-fmts = vd, vj, vk
data-types = UV16QI, UV16QI, UV16QI
/// lsx_vssub_hu
impl = portable
name = lsx_vssub_hu
asm-fmts = vd, vj, vk
data-types = UV8HI, UV8HI, UV8HI
/// lsx_vssub_wu
impl = portable
name = lsx_vssub_wu
asm-fmts = vd, vj, vk
data-types = UV4SI, UV4SI, UV4SI
/// lsx_vssub_du
impl = portable
name = lsx_vssub_du
asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI
@@ -203,6 +203,22 @@ lsx_vbitrev_b
lsx_vbitrev_h
lsx_vbitrev_w
lsx_vbitrev_d
lsx_vsadd_b
lsx_vsadd_h
lsx_vsadd_w
lsx_vsadd_d
lsx_vsadd_bu
lsx_vsadd_hu
lsx_vsadd_wu
lsx_vsadd_du
lsx_vssub_b
lsx_vssub_h
lsx_vssub_w
lsx_vssub_d
lsx_vssub_bu
lsx_vssub_hu
lsx_vssub_wu
lsx_vssub_du
# LASX intrinsics
lasx_xvsll_b
@@ -403,3 +419,19 @@ lasx_xvbitrev_b
lasx_xvbitrev_h
lasx_xvbitrev_w
lasx_xvbitrev_d
lasx_xvsadd_b
lasx_xvsadd_h
lasx_xvsadd_w
lasx_xvsadd_d
lasx_xvsadd_bu
lasx_xvsadd_hu
lasx_xvsadd_wu
lasx_xvsadd_du
lasx_xvssub_b
lasx_xvssub_h
lasx_xvssub_w
lasx_xvssub_d
lasx_xvssub_bu
lasx_xvssub_hu
lasx_xvssub_wu
lasx_xvssub_du