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
36 changes: 0 additions & 36 deletions crates/core_arch/src/loongarch64/lasx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,6 @@ unsafe extern "unadjusted" {
fn __lasx_xvsat_wu(a: __v8u32, b: u32) -> __v8u32;
#[link_name = "llvm.loongarch.lasx.xvsat.du"]
fn __lasx_xvsat_du(a: __v4u64, b: u32) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.xvadda.b"]
fn __lasx_xvadda_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvadda.h"]
fn __lasx_xvadda_h(a: __v16i16, b: __v16i16) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvadda.w"]
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.xvavg.b"]
fn __lasx_xvavg_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvavg.h"]
Expand Down Expand Up @@ -1445,34 +1437,6 @@ pub fn lasx_xvsat_du<const IMM6: u32>(a: m256i) -> m256i {
unsafe { transmute(__lasx_xvsat_du(transmute(a), IMM6)) }
}

#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvadda_b(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvadda_b(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvadda_h(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvadda_h(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lasx_xvadda_w(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvadda_w(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
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")]
Expand Down
4 changes: 4 additions & 0 deletions crates/core_arch/src/loongarch64/lasx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ 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_vvv!("lasx", lasx_xvadda_b, ls::simd_adda, m256i, i8x32);
impl_vvv!("lasx", lasx_xvadda_h, ls::simd_adda, m256i, i16x16);
impl_vvv!("lasx", lasx_xvadda_w, ls::simd_adda, m256i, i32x8);
impl_vvv!("lasx", lasx_xvadda_d, ls::simd_adda, m256i, i64x4);

impl_vuv!("lasx", lasx_xvslli_b, is::simd_shl, m256i, i8x32);
impl_vuv!("lasx", lasx_xvslli_h, is::simd_shl, m256i, i16x16);
Expand Down
36 changes: 0 additions & 36 deletions crates/core_arch/src/loongarch64/lsx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,6 @@ unsafe extern "unadjusted" {
fn __lsx_vsat_wu(a: __v4u32, b: u32) -> __v4u32;
#[link_name = "llvm.loongarch.lsx.vsat.du"]
fn __lsx_vsat_du(a: __v2u64, b: u32) -> __v2u64;
#[link_name = "llvm.loongarch.lsx.vadda.b"]
fn __lsx_vadda_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vadda.h"]
fn __lsx_vadda_h(a: __v8i16, b: __v8i16) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vadda.w"]
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.vavg.b"]
fn __lsx_vavg_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vavg.h"]
Expand Down Expand Up @@ -1357,34 +1349,6 @@ pub fn lsx_vsat_du<const IMM6: u32>(a: m128i) -> m128i {
unsafe { transmute(__lsx_vsat_du(transmute(a), IMM6)) }
}

#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vadda_b(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vadda_b(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vadda_h(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vadda_h(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
pub fn lsx_vadda_w(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vadda_w(transmute(a), transmute(b))) }
}

#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
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")]
Expand Down
4 changes: 4 additions & 0 deletions crates/core_arch/src/loongarch64/lsx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ 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_vvv!("lsx", lsx_vadda_b, ls::simd_adda, m128i, i8x16);
impl_vvv!("lsx", lsx_vadda_h, ls::simd_adda, m128i, i16x8);
impl_vvv!("lsx", lsx_vadda_w, ls::simd_adda, m128i, i32x4);
impl_vvv!("lsx", lsx_vadda_d, ls::simd_adda, m128i, i64x2);

impl_vuv!("lsx", lsx_vslli_b, is::simd_shl, m128i, i8x16);
impl_vuv!("lsx", lsx_vslli_h, is::simd_shl, m128i, i16x8);
Expand Down
13 changes: 13 additions & 0 deletions crates/core_arch/src/loongarch64/simd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,19 @@ impl_simd_ext!(i64x4, i64);
impl_simd_ext!(u64x2, u64);
impl_simd_ext!(u64x4, u64);

#[inline(always)]
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
pub(crate) const unsafe fn simd_abs<T: Copy + const SimdExt>(a: T) -> T {
let m: T = is::simd_lt(a, ls::simd_splat(0));
is::simd_select(m, is::simd_neg(a), a)
}

#[inline(always)]
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
pub(crate) const unsafe fn simd_adda<T: Copy + const SimdExt>(a: T, b: T) -> T {
is::simd_add(ls::simd_abs(a), ls::simd_abs(b))
}

#[inline(always)]
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
pub(super) const unsafe fn simd_andn<T: Copy + const SimdExt>(a: T, b: T) -> T {
Expand Down
4 changes: 4 additions & 0 deletions crates/stdarch-gen-loongarch/lasx.spec
Original file line number Diff line number Diff line change
Expand Up @@ -924,21 +924,25 @@ asm-fmts = xd, xj, ui6
data-types = UV4DI, UV4DI, UQI

/// lasx_xvadda_b
impl = portable
name = lasx_xvadda_b
asm-fmts = xd, xj, xk
data-types = V32QI, V32QI, V32QI

/// lasx_xvadda_h
impl = portable
name = lasx_xvadda_h
asm-fmts = xd, xj, xk
data-types = V16HI, V16HI, V16HI

/// lasx_xvadda_w
impl = portable
name = lasx_xvadda_w
asm-fmts = xd, xj, xk
data-types = V8SI, V8SI, V8SI

/// lasx_xvadda_d
impl = portable
name = lasx_xvadda_d
asm-fmts = xd, xj, xk
data-types = V4DI, V4DI, V4DI
Expand Down
4 changes: 4 additions & 0 deletions crates/stdarch-gen-loongarch/lsx.spec
Original file line number Diff line number Diff line change
Expand Up @@ -924,21 +924,25 @@ asm-fmts = vd, vj, ui6
data-types = UV2DI, UV2DI, UQI

/// lsx_vadda_b
impl = portable
name = lsx_vadda_b
asm-fmts = vd, vj, vk
data-types = V16QI, V16QI, V16QI

/// lsx_vadda_h
impl = portable
name = lsx_vadda_h
asm-fmts = vd, vj, vk
data-types = V8HI, V8HI, V8HI

/// lsx_vadda_w
impl = portable
name = lsx_vadda_w
asm-fmts = vd, vj, vk
data-types = V4SI, V4SI, V4SI

/// lsx_vadda_d
impl = portable
name = lsx_vadda_d
asm-fmts = vd, vj, vk
data-types = V2DI, V2DI, V2DI
Expand Down
8 changes: 8 additions & 0 deletions crates/stdarch-gen-loongarch/src/portable-intrinsics.txt
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,10 @@ lsx_vssub_bu
lsx_vssub_hu
lsx_vssub_wu
lsx_vssub_du
lsx_vadda_b
lsx_vadda_h
lsx_vadda_w
lsx_vadda_d

# LASX intrinsics
lasx_xvsll_b
Expand Down Expand Up @@ -435,3 +439,7 @@ lasx_xvssub_bu
lasx_xvssub_hu
lasx_xvssub_wu
lasx_xvssub_du
lasx_xvadda_b
lasx_xvadda_h
lasx_xvadda_w
lasx_xvadda_d
Loading