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
72 changes: 0 additions & 72 deletions crates/core_arch/src/loongarch64/lasx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,22 +123,6 @@ unsafe extern "unadjusted" {
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.xvabsd.b"]
fn __lasx_xvabsd_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvabsd.h"]
fn __lasx_xvabsd_h(a: __v16i16, b: __v16i16) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvabsd.w"]
fn __lasx_xvabsd_w(a: __v8i32, b: __v8i32) -> __v8i32;
#[link_name = "llvm.loongarch.lasx.xvabsd.d"]
fn __lasx_xvabsd_d(a: __v4i64, b: __v4i64) -> __v4i64;
#[link_name = "llvm.loongarch.lasx.xvabsd.bu"]
fn __lasx_xvabsd_bu(a: __v32u8, b: __v32u8) -> __v32u8;
#[link_name = "llvm.loongarch.lasx.xvabsd.hu"]
fn __lasx_xvabsd_hu(a: __v16u16, b: __v16u16) -> __v16u16;
#[link_name = "llvm.loongarch.lasx.xvabsd.wu"]
fn __lasx_xvabsd_wu(a: __v8u32, b: __v8u32) -> __v8u32;
#[link_name = "llvm.loongarch.lasx.xvabsd.du"]
fn __lasx_xvabsd_du(a: __v4u64, b: __v4u64) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.xvhaddw.h.b"]
fn __lasx_xvhaddw_h_b(a: __v32i8, b: __v32i8) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvhaddw.w.h"]
Expand Down Expand Up @@ -1549,62 +1533,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_xvabsd_b(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvabsd_b(transmute(a), transmute(b))) }
}

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

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

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

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

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

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

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

#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
Expand Down
8 changes: 8 additions & 0 deletions crates/core_arch/src/loongarch64/lasx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,14 @@ 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_vvv!("lasx", lasx_xvabsd_b, ls::simd_absd, m256i, i8x32);
impl_vvv!("lasx", lasx_xvabsd_h, ls::simd_absd, m256i, i16x16);
impl_vvv!("lasx", lasx_xvabsd_w, ls::simd_absd, m256i, i32x8);
impl_vvv!("lasx", lasx_xvabsd_d, ls::simd_absd, m256i, i64x4);
impl_vvv!("lasx", lasx_xvabsd_bu, ls::simd_absd, m256i, u8x32);
impl_vvv!("lasx", lasx_xvabsd_hu, ls::simd_absd, m256i, u16x16);
impl_vvv!("lasx", lasx_xvabsd_wu, ls::simd_absd, m256i, u32x8);
impl_vvv!("lasx", lasx_xvabsd_du, ls::simd_absd, m256i, u64x4);

impl_vuv!("lasx", lasx_xvslli_b, is::simd_shl, m256i, i8x32);
impl_vuv!("lasx", lasx_xvslli_h, is::simd_shl, m256i, i16x16);
Expand Down
72 changes: 0 additions & 72 deletions crates/core_arch/src/loongarch64/lsx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,22 +123,6 @@ unsafe extern "unadjusted" {
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.vabsd.b"]
fn __lsx_vabsd_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vabsd.h"]
fn __lsx_vabsd_h(a: __v8i16, b: __v8i16) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vabsd.w"]
fn __lsx_vabsd_w(a: __v4i32, b: __v4i32) -> __v4i32;
#[link_name = "llvm.loongarch.lsx.vabsd.d"]
fn __lsx_vabsd_d(a: __v2i64, b: __v2i64) -> __v2i64;
#[link_name = "llvm.loongarch.lsx.vabsd.bu"]
fn __lsx_vabsd_bu(a: __v16u8, b: __v16u8) -> __v16u8;
#[link_name = "llvm.loongarch.lsx.vabsd.hu"]
fn __lsx_vabsd_hu(a: __v8u16, b: __v8u16) -> __v8u16;
#[link_name = "llvm.loongarch.lsx.vabsd.wu"]
fn __lsx_vabsd_wu(a: __v4u32, b: __v4u32) -> __v4u32;
#[link_name = "llvm.loongarch.lsx.vabsd.du"]
fn __lsx_vabsd_du(a: __v2u64, b: __v2u64) -> __v2u64;
#[link_name = "llvm.loongarch.lsx.vhaddw.h.b"]
fn __lsx_vhaddw_h_b(a: __v16i8, b: __v16i8) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vhaddw.w.h"]
Expand Down Expand Up @@ -1461,62 +1445,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_vabsd_b(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vabsd_b(transmute(a), transmute(b))) }
}

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

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

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

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

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

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

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

#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
Expand Down
8 changes: 8 additions & 0 deletions crates/core_arch/src/loongarch64/lsx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,14 @@ 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_vvv!("lsx", lsx_vabsd_b, ls::simd_absd, m128i, i8x16);
impl_vvv!("lsx", lsx_vabsd_h, ls::simd_absd, m128i, i16x8);
impl_vvv!("lsx", lsx_vabsd_w, ls::simd_absd, m128i, i32x4);
impl_vvv!("lsx", lsx_vabsd_d, ls::simd_absd, m128i, i64x2);
impl_vvv!("lsx", lsx_vabsd_bu, ls::simd_absd, m128i, u8x16);
impl_vvv!("lsx", lsx_vabsd_hu, ls::simd_absd, m128i, u16x8);
impl_vvv!("lsx", lsx_vabsd_wu, ls::simd_absd, m128i, u32x4);
impl_vvv!("lsx", lsx_vabsd_du, ls::simd_absd, m128i, u64x2);

impl_vuv!("lsx", lsx_vslli_b, is::simd_shl, m128i, i8x16);
impl_vuv!("lsx", lsx_vslli_h, is::simd_shl, m128i, i16x8);
Expand Down
7 changes: 7 additions & 0 deletions crates/core_arch/src/loongarch64/simd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,13 @@ pub(crate) const unsafe fn simd_abs<T: Copy + const SimdExt>(a: T) -> T {
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_absd<T: Copy>(a: T, b: T) -> T {
let m: T = is::simd_gt(a, b);
is::simd_select(m, is::simd_sub(a, b), is::simd_sub(b, 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 {
Expand Down
8 changes: 8 additions & 0 deletions crates/stdarch-gen-loongarch/lasx.spec
Original file line number Diff line number Diff line change
Expand Up @@ -1124,41 +1124,49 @@ asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI

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

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

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

/// lasx_xvabsd_d
impl = portable
name = lasx_xvabsd_d
asm-fmts = xd, xj, xk
data-types = V4DI, V4DI, V4DI

/// lasx_xvabsd_bu
impl = portable
name = lasx_xvabsd_bu
asm-fmts = xd, xj, xk
data-types = UV32QI, UV32QI, UV32QI

/// lasx_xvabsd_hu
impl = portable
name = lasx_xvabsd_hu
asm-fmts = xd, xj, xk
data-types = UV16HI, UV16HI, UV16HI

/// lasx_xvabsd_wu
impl = portable
name = lasx_xvabsd_wu
asm-fmts = xd, xj, xk
data-types = UV8SI, UV8SI, UV8SI

/// lasx_xvabsd_du
impl = portable
name = lasx_xvabsd_du
asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI
Expand Down
8 changes: 8 additions & 0 deletions crates/stdarch-gen-loongarch/lsx.spec
Original file line number Diff line number Diff line change
Expand Up @@ -1124,41 +1124,49 @@ asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI

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

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

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

/// lsx_vabsd_d
impl = portable
name = lsx_vabsd_d
asm-fmts = vd, vj, vk
data-types = V2DI, V2DI, V2DI

/// lsx_vabsd_bu
impl = portable
name = lsx_vabsd_bu
asm-fmts = vd, vj, vk
data-types = UV16QI, UV16QI, UV16QI

/// lsx_vabsd_hu
impl = portable
name = lsx_vabsd_hu
asm-fmts = vd, vj, vk
data-types = UV8HI, UV8HI, UV8HI

/// lsx_vabsd_wu
impl = portable
name = lsx_vabsd_wu
asm-fmts = vd, vj, vk
data-types = UV4SI, UV4SI, UV4SI

/// lsx_vabsd_du
impl = portable
name = lsx_vabsd_du
asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI
Expand Down
16 changes: 16 additions & 0 deletions crates/stdarch-gen-loongarch/src/portable-intrinsics.txt
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,14 @@ lsx_vadda_b
lsx_vadda_h
lsx_vadda_w
lsx_vadda_d
lsx_vabsd_b
lsx_vabsd_h
lsx_vabsd_w
lsx_vabsd_d
lsx_vabsd_bu
lsx_vabsd_hu
lsx_vabsd_wu
lsx_vabsd_du

# LASX intrinsics
lasx_xvsll_b
Expand Down Expand Up @@ -443,3 +451,11 @@ lasx_xvadda_b
lasx_xvadda_h
lasx_xvadda_w
lasx_xvadda_d
lasx_xvabsd_b
lasx_xvabsd_h
lasx_xvabsd_w
lasx_xvabsd_d
lasx_xvabsd_bu
lasx_xvabsd_hu
lasx_xvabsd_wu
lasx_xvabsd_du
Loading