Skip to content
Draft
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
144 changes: 0 additions & 144 deletions crates/core_arch/src/loongarch64/lasx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,38 +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.xvavg.b"]
fn __lasx_xvavg_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvavg.h"]
fn __lasx_xvavg_h(a: __v16i16, b: __v16i16) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvavg.w"]
fn __lasx_xvavg_w(a: __v8i32, b: __v8i32) -> __v8i32;
#[link_name = "llvm.loongarch.lasx.xvavg.d"]
fn __lasx_xvavg_d(a: __v4i64, b: __v4i64) -> __v4i64;
#[link_name = "llvm.loongarch.lasx.xvavg.bu"]
fn __lasx_xvavg_bu(a: __v32u8, b: __v32u8) -> __v32u8;
#[link_name = "llvm.loongarch.lasx.xvavg.hu"]
fn __lasx_xvavg_hu(a: __v16u16, b: __v16u16) -> __v16u16;
#[link_name = "llvm.loongarch.lasx.xvavg.wu"]
fn __lasx_xvavg_wu(a: __v8u32, b: __v8u32) -> __v8u32;
#[link_name = "llvm.loongarch.lasx.xvavg.du"]
fn __lasx_xvavg_du(a: __v4u64, b: __v4u64) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.xvavgr.b"]
fn __lasx_xvavgr_b(a: __v32i8, b: __v32i8) -> __v32i8;
#[link_name = "llvm.loongarch.lasx.xvavgr.h"]
fn __lasx_xvavgr_h(a: __v16i16, b: __v16i16) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvavgr.w"]
fn __lasx_xvavgr_w(a: __v8i32, b: __v8i32) -> __v8i32;
#[link_name = "llvm.loongarch.lasx.xvavgr.d"]
fn __lasx_xvavgr_d(a: __v4i64, b: __v4i64) -> __v4i64;
#[link_name = "llvm.loongarch.lasx.xvavgr.bu"]
fn __lasx_xvavgr_bu(a: __v32u8, b: __v32u8) -> __v32u8;
#[link_name = "llvm.loongarch.lasx.xvavgr.hu"]
fn __lasx_xvavgr_hu(a: __v16u16, b: __v16u16) -> __v16u16;
#[link_name = "llvm.loongarch.lasx.xvavgr.wu"]
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.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 @@ -1421,118 +1389,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_xvavg_b(a: m256i, b: m256i) -> m256i {
unsafe { transmute(__lasx_xvavg_b(transmute(a), transmute(b))) }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
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")]
Expand Down
16 changes: 16 additions & 0 deletions crates/core_arch/src/loongarch64/lasx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,22 @@ 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_vvv!("lasx", lasx_xvavg_b, ls::simd_avg, m256i, i8x32);
impl_vvv!("lasx", lasx_xvavg_h, ls::simd_avg, m256i, i16x16);
impl_vvv!("lasx", lasx_xvavg_w, ls::simd_avg, m256i, i32x8);
impl_vvv!("lasx", lasx_xvavg_d, ls::simd_avg, m256i, i64x4);
impl_vvv!("lasx", lasx_xvavg_bu, ls::simd_avg, m256i, u8x32);
impl_vvv!("lasx", lasx_xvavg_hu, ls::simd_avg, m256i, u16x16);
impl_vvv!("lasx", lasx_xvavg_wu, ls::simd_avg, m256i, u32x8);
impl_vvv!("lasx", lasx_xvavg_du, ls::simd_avg, m256i, u64x4);
impl_vvv!("lasx", lasx_xvavgr_b, ls::simd_avgr, m256i, i8x32);
impl_vvv!("lasx", lasx_xvavgr_h, ls::simd_avgr, m256i, i16x16);
impl_vvv!("lasx", lasx_xvavgr_w, ls::simd_avgr, m256i, i32x8);
impl_vvv!("lasx", lasx_xvavgr_d, ls::simd_avgr, m256i, i64x4);
impl_vvv!("lasx", lasx_xvavgr_bu, ls::simd_avgr, m256i, u8x32);
impl_vvv!("lasx", lasx_xvavgr_hu, ls::simd_avgr, m256i, u16x16);
impl_vvv!("lasx", lasx_xvavgr_wu, ls::simd_avgr, m256i, u32x8);
impl_vvv!("lasx", lasx_xvavgr_du, ls::simd_avgr, 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
144 changes: 0 additions & 144 deletions crates/core_arch/src/loongarch64/lsx/generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,38 +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.vavg.b"]
fn __lsx_vavg_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vavg.h"]
fn __lsx_vavg_h(a: __v8i16, b: __v8i16) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vavg.w"]
fn __lsx_vavg_w(a: __v4i32, b: __v4i32) -> __v4i32;
#[link_name = "llvm.loongarch.lsx.vavg.d"]
fn __lsx_vavg_d(a: __v2i64, b: __v2i64) -> __v2i64;
#[link_name = "llvm.loongarch.lsx.vavg.bu"]
fn __lsx_vavg_bu(a: __v16u8, b: __v16u8) -> __v16u8;
#[link_name = "llvm.loongarch.lsx.vavg.hu"]
fn __lsx_vavg_hu(a: __v8u16, b: __v8u16) -> __v8u16;
#[link_name = "llvm.loongarch.lsx.vavg.wu"]
fn __lsx_vavg_wu(a: __v4u32, b: __v4u32) -> __v4u32;
#[link_name = "llvm.loongarch.lsx.vavg.du"]
fn __lsx_vavg_du(a: __v2u64, b: __v2u64) -> __v2u64;
#[link_name = "llvm.loongarch.lsx.vavgr.b"]
fn __lsx_vavgr_b(a: __v16i8, b: __v16i8) -> __v16i8;
#[link_name = "llvm.loongarch.lsx.vavgr.h"]
fn __lsx_vavgr_h(a: __v8i16, b: __v8i16) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vavgr.w"]
fn __lsx_vavgr_w(a: __v4i32, b: __v4i32) -> __v4i32;
#[link_name = "llvm.loongarch.lsx.vavgr.d"]
fn __lsx_vavgr_d(a: __v2i64, b: __v2i64) -> __v2i64;
#[link_name = "llvm.loongarch.lsx.vavgr.bu"]
fn __lsx_vavgr_bu(a: __v16u8, b: __v16u8) -> __v16u8;
#[link_name = "llvm.loongarch.lsx.vavgr.hu"]
fn __lsx_vavgr_hu(a: __v8u16, b: __v8u16) -> __v8u16;
#[link_name = "llvm.loongarch.lsx.vavgr.wu"]
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.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 @@ -1333,118 +1301,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_vavg_b(a: m128i, b: m128i) -> m128i {
unsafe { transmute(__lsx_vavg_b(transmute(a), transmute(b))) }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
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")]
Expand Down
16 changes: 16 additions & 0 deletions crates/core_arch/src/loongarch64/lsx/portable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,22 @@ 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_vvv!("lsx", lsx_vavg_b, ls::simd_avg, m128i, i8x16);
impl_vvv!("lsx", lsx_vavg_h, ls::simd_avg, m128i, i16x8);
impl_vvv!("lsx", lsx_vavg_w, ls::simd_avg, m128i, i32x4);
impl_vvv!("lsx", lsx_vavg_d, ls::simd_avg, m128i, i64x2);
impl_vvv!("lsx", lsx_vavg_bu, ls::simd_avg, m128i, u8x16);
impl_vvv!("lsx", lsx_vavg_hu, ls::simd_avg, m128i, u16x8);
impl_vvv!("lsx", lsx_vavg_wu, ls::simd_avg, m128i, u32x4);
impl_vvv!("lsx", lsx_vavg_du, ls::simd_avg, m128i, u64x2);
impl_vvv!("lsx", lsx_vavgr_b, ls::simd_avgr, m128i, i8x16);
impl_vvv!("lsx", lsx_vavgr_h, ls::simd_avgr, m128i, i16x8);
impl_vvv!("lsx", lsx_vavgr_w, ls::simd_avgr, m128i, i32x4);
impl_vvv!("lsx", lsx_vavgr_d, ls::simd_avgr, m128i, i64x2);
impl_vvv!("lsx", lsx_vavgr_bu, ls::simd_avgr, m128i, u8x16);
impl_vvv!("lsx", lsx_vavgr_hu, ls::simd_avgr, m128i, u16x8);
impl_vvv!("lsx", lsx_vavgr_wu, ls::simd_avgr, m128i, u32x4);
impl_vvv!("lsx", lsx_vavgr_du, ls::simd_avgr, 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
19 changes: 19 additions & 0 deletions crates/core_arch/src/loongarch64/simd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,25 @@ pub(super) const unsafe fn simd_andn<T: Copy + const SimdExt>(a: T, b: T) -> T {
is::simd_and(ls::simd_not(a), b)
}

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

#[inline(always)]
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
pub(crate) const unsafe fn simd_avgr<T: Copy + const SimdExt>(a: T, b: T) -> T {
let o: T = ls::simd_splat(1);
is::simd_add(
is::simd_and(a, b),
is::simd_shr(is::simd_add(is::simd_xor(a, b), o), o),
)
}

#[inline(always)]
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
pub(super) const unsafe fn simd_bitclr<T: Copy + const SimdExt>(a: T, b: T) -> T {
Expand Down
Loading
Loading