mirror of
https://github.com/rust-lang/rust.git
synced 2026-06-02 06:28:20 +03:00
Merge pull request #2123 from heiher/vilv-h-l
loongarch: Use `intrinsics::simd` for vilv{h,l}
This commit is contained in:
@@ -155,22 +155,6 @@
|
||||
fn __lasx_xvrepl128vei_w(a: __v8i32, b: u32) -> __v8i32;
|
||||
#[link_name = "llvm.loongarch.lasx.xvrepl128vei.d"]
|
||||
fn __lasx_xvrepl128vei_d(a: __v4i64, b: u32) -> __v4i64;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvh.b"]
|
||||
fn __lasx_xvilvh_b(a: __v32i8, b: __v32i8) -> __v32i8;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvh.h"]
|
||||
fn __lasx_xvilvh_h(a: __v16i16, b: __v16i16) -> __v16i16;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvh.w"]
|
||||
fn __lasx_xvilvh_w(a: __v8i32, b: __v8i32) -> __v8i32;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvh.d"]
|
||||
fn __lasx_xvilvh_d(a: __v4i64, b: __v4i64) -> __v4i64;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvl.b"]
|
||||
fn __lasx_xvilvl_b(a: __v32i8, b: __v32i8) -> __v32i8;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvl.h"]
|
||||
fn __lasx_xvilvl_h(a: __v16i16, b: __v16i16) -> __v16i16;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvl.w"]
|
||||
fn __lasx_xvilvl_w(a: __v8i32, b: __v8i32) -> __v8i32;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvl.d"]
|
||||
fn __lasx_xvilvl_d(a: __v4i64, b: __v4i64) -> __v4i64;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpackev.b"]
|
||||
fn __lasx_xvpackev_b(a: __v32i8, b: __v32i8) -> __v32i8;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpackev.h"]
|
||||
@@ -1637,62 +1621,6 @@ pub fn lasx_xvrepl128vei_d<const IMM1: u32>(a: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvrepl128vei_d(transmute(a), IMM1)) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvh_b(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvh_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvh_h(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvh_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvh_w(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvh_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvh_d(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvh_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvl_b(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvl_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvl_h(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvl_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvl_w(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvl_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvilvl_d(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvilvl_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
|
||||
@@ -67,6 +67,68 @@
|
||||
simd_shuffle!(b, a, [1, 3, 5, 7, 17, 19, 21, 23, 9, 11, 13, 15, 25, 27, 29, 31])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(
|
||||
b,
|
||||
a,
|
||||
[
|
||||
8, 40, 9, 41, 10, 42, 11, 43, 12, 44, 13, 45, 14, 46, 15, 47,
|
||||
24, 56, 25, 57, 26, 58, 27, 59, 28, 60, 29, 61, 30, 62, 31, 63
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [4, 20, 5, 21, 6, 22, 7, 23, 12, 28, 13, 29, 14, 30, 15, 31])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [2, 10, 3, 11, 6, 14, 7, 15])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_d<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 5, 3, 7])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(
|
||||
b,
|
||||
a,
|
||||
[
|
||||
0, 32, 1, 33, 2, 34, 3, 35, 4, 36, 5, 37, 6, 38, 7, 39,
|
||||
16, 48, 17, 49, 18, 50, 19, 51, 20, 52, 21, 53, 22, 54, 23, 55
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 16, 1, 17, 2, 18, 3, 19, 8, 24, 9, 25, 10, 26, 11, 27])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 8, 1, 9, 4, 12, 5, 13])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_d<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 4, 2, 6])
|
||||
}
|
||||
|
||||
impl_vv!("lasx", lasx_xvpcnt_b, is::simd_ctpop, m256i, i8x32);
|
||||
impl_vv!("lasx", lasx_xvpcnt_h, is::simd_ctpop, m256i, i16x16);
|
||||
impl_vv!("lasx", lasx_xvpcnt_w, is::simd_ctpop, m256i, i32x8);
|
||||
@@ -230,6 +292,14 @@
|
||||
impl_vvv!("lasx", lasx_xvpickod_h, simd_pickod_h, m256i, i16x16);
|
||||
impl_vvv!("lasx", lasx_xvpickod_w, simd_pickod_w, m256i, i32x8);
|
||||
impl_vvv!("lasx", lasx_xvpickod_d, simd_pickod_d, m256i, i64x4);
|
||||
impl_vvv!("lasx", lasx_xvilvh_b, simd_ilvh_b, m256i, i8x32);
|
||||
impl_vvv!("lasx", lasx_xvilvh_h, simd_ilvh_h, m256i, i16x16);
|
||||
impl_vvv!("lasx", lasx_xvilvh_w, simd_ilvh_w, m256i, i32x8);
|
||||
impl_vvv!("lasx", lasx_xvilvh_d, simd_ilvh_d, m256i, i64x4);
|
||||
impl_vvv!("lasx", lasx_xvilvl_b, simd_ilvl_b, m256i, i8x32);
|
||||
impl_vvv!("lasx", lasx_xvilvl_h, simd_ilvl_h, m256i, i16x16);
|
||||
impl_vvv!("lasx", lasx_xvilvl_w, simd_ilvl_w, m256i, i32x8);
|
||||
impl_vvv!("lasx", lasx_xvilvl_d, simd_ilvl_d, m256i, i64x4);
|
||||
|
||||
impl_vuv!("lasx", lasx_xvslli_b, is::simd_shl, m256i, i8x32);
|
||||
impl_vuv!("lasx", lasx_xvslli_h, is::simd_shl, m256i, i16x16);
|
||||
|
||||
@@ -163,22 +163,6 @@
|
||||
fn __lsx_vreplvei_w(a: __v4i32, b: u32) -> __v4i32;
|
||||
#[link_name = "llvm.loongarch.lsx.vreplvei.d"]
|
||||
fn __lsx_vreplvei_d(a: __v2i64, b: u32) -> __v2i64;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvh.b"]
|
||||
fn __lsx_vilvh_b(a: __v16i8, b: __v16i8) -> __v16i8;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvh.h"]
|
||||
fn __lsx_vilvh_h(a: __v8i16, b: __v8i16) -> __v8i16;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvh.w"]
|
||||
fn __lsx_vilvh_w(a: __v4i32, b: __v4i32) -> __v4i32;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvh.d"]
|
||||
fn __lsx_vilvh_d(a: __v2i64, b: __v2i64) -> __v2i64;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvl.b"]
|
||||
fn __lsx_vilvl_b(a: __v16i8, b: __v16i8) -> __v16i8;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvl.h"]
|
||||
fn __lsx_vilvl_h(a: __v8i16, b: __v8i16) -> __v8i16;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvl.w"]
|
||||
fn __lsx_vilvl_w(a: __v4i32, b: __v4i32) -> __v4i32;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvl.d"]
|
||||
fn __lsx_vilvl_d(a: __v2i64, b: __v2i64) -> __v2i64;
|
||||
#[link_name = "llvm.loongarch.lsx.vpackev.b"]
|
||||
fn __lsx_vpackev_b(a: __v16i8, b: __v16i8) -> __v16i8;
|
||||
#[link_name = "llvm.loongarch.lsx.vpackev.h"]
|
||||
@@ -1577,62 +1561,6 @@ pub fn lsx_vreplvei_d<const IMM1: u32>(a: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vreplvei_d(transmute(a), IMM1)) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvh_b(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvh_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvh_h(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvh_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvh_w(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvh_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvh_d(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvh_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvl_b(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvl_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvl_h(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvl_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvl_w(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvl_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vilvl_d(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vilvl_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
|
||||
@@ -53,6 +53,54 @@
|
||||
simd_shuffle!(b, a, [1, 3])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [4, 12, 5, 13, 6, 14, 7, 15])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [2, 6, 3, 7])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvh_d<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 3])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 8, 1, 9, 2, 10, 3, 11])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 4, 1, 5])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
pub(crate) const unsafe fn simd_ilvl_d<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 2])
|
||||
}
|
||||
|
||||
impl_vv!("lsx", lsx_vpcnt_b, is::simd_ctpop, m128i, i8x16);
|
||||
impl_vv!("lsx", lsx_vpcnt_h, is::simd_ctpop, m128i, i16x8);
|
||||
impl_vv!("lsx", lsx_vpcnt_w, is::simd_ctpop, m128i, i32x4);
|
||||
@@ -216,6 +264,14 @@
|
||||
impl_vvv!("lsx", lsx_vpickod_h, simd_pickod_h, m128i, i16x8);
|
||||
impl_vvv!("lsx", lsx_vpickod_w, simd_pickod_w, m128i, i32x4);
|
||||
impl_vvv!("lsx", lsx_vpickod_d, simd_pickod_d, m128i, i64x2);
|
||||
impl_vvv!("lsx", lsx_vilvh_b, simd_ilvh_b, m128i, i8x16);
|
||||
impl_vvv!("lsx", lsx_vilvh_h, simd_ilvh_h, m128i, i16x8);
|
||||
impl_vvv!("lsx", lsx_vilvh_w, simd_ilvh_w, m128i, i32x4);
|
||||
impl_vvv!("lsx", lsx_vilvh_d, simd_ilvh_d, m128i, i64x2);
|
||||
impl_vvv!("lsx", lsx_vilvl_b, simd_ilvl_b, m128i, i8x16);
|
||||
impl_vvv!("lsx", lsx_vilvl_h, simd_ilvl_h, m128i, i16x8);
|
||||
impl_vvv!("lsx", lsx_vilvl_w, simd_ilvl_w, m128i, i32x4);
|
||||
impl_vvv!("lsx", lsx_vilvl_d, simd_ilvl_d, m128i, i64x2);
|
||||
|
||||
impl_vuv!("lsx", lsx_vslli_b, is::simd_shl, m128i, i8x16);
|
||||
impl_vuv!("lsx", lsx_vslli_h, is::simd_shl, m128i, i16x8);
|
||||
|
||||
@@ -1468,41 +1468,49 @@ asm-fmts = xd, xj, xk
|
||||
data-types = V4DI, V4DI, V4DI
|
||||
|
||||
/// lasx_xvilvh_b
|
||||
impl = portable
|
||||
name = lasx_xvilvh_b
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V32QI, V32QI, V32QI
|
||||
|
||||
/// lasx_xvilvh_h
|
||||
impl = portable
|
||||
name = lasx_xvilvh_h
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V16HI, V16HI, V16HI
|
||||
|
||||
/// lasx_xvilvh_w
|
||||
impl = portable
|
||||
name = lasx_xvilvh_w
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V8SI, V8SI, V8SI
|
||||
|
||||
/// lasx_xvilvh_d
|
||||
impl = portable
|
||||
name = lasx_xvilvh_d
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V4DI, V4DI, V4DI
|
||||
|
||||
/// lasx_xvilvl_b
|
||||
impl = portable
|
||||
name = lasx_xvilvl_b
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V32QI, V32QI, V32QI
|
||||
|
||||
/// lasx_xvilvl_h
|
||||
impl = portable
|
||||
name = lasx_xvilvl_h
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V16HI, V16HI, V16HI
|
||||
|
||||
/// lasx_xvilvl_w
|
||||
impl = portable
|
||||
name = lasx_xvilvl_w
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V8SI, V8SI, V8SI
|
||||
|
||||
/// lasx_xvilvl_d
|
||||
impl = portable
|
||||
name = lasx_xvilvl_d
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V4DI, V4DI, V4DI
|
||||
|
||||
@@ -1488,41 +1488,49 @@ asm-fmts = vd, vj, vk
|
||||
data-types = V2DI, V2DI, V2DI
|
||||
|
||||
/// lsx_vilvh_b
|
||||
impl = portable
|
||||
name = lsx_vilvh_b
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V16QI, V16QI, V16QI
|
||||
|
||||
/// lsx_vilvh_h
|
||||
impl = portable
|
||||
name = lsx_vilvh_h
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V8HI, V8HI, V8HI
|
||||
|
||||
/// lsx_vilvh_w
|
||||
impl = portable
|
||||
name = lsx_vilvh_w
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V4SI, V4SI, V4SI
|
||||
|
||||
/// lsx_vilvh_d
|
||||
impl = portable
|
||||
name = lsx_vilvh_d
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V2DI, V2DI, V2DI
|
||||
|
||||
/// lsx_vilvl_b
|
||||
impl = portable
|
||||
name = lsx_vilvl_b
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V16QI, V16QI, V16QI
|
||||
|
||||
/// lsx_vilvl_h
|
||||
impl = portable
|
||||
name = lsx_vilvl_h
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V8HI, V8HI, V8HI
|
||||
|
||||
/// lsx_vilvl_w
|
||||
impl = portable
|
||||
name = lsx_vilvl_w
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V4SI, V4SI, V4SI
|
||||
|
||||
/// lsx_vilvl_d
|
||||
impl = portable
|
||||
name = lsx_vilvl_d
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V2DI, V2DI, V2DI
|
||||
|
||||
@@ -239,6 +239,14 @@ lsx_vpickod_b
|
||||
lsx_vpickod_h
|
||||
lsx_vpickod_w
|
||||
lsx_vpickod_d
|
||||
lsx_vilvh_b
|
||||
lsx_vilvh_h
|
||||
lsx_vilvh_w
|
||||
lsx_vilvh_d
|
||||
lsx_vilvl_b
|
||||
lsx_vilvl_h
|
||||
lsx_vilvl_w
|
||||
lsx_vilvl_d
|
||||
|
||||
# LASX intrinsics
|
||||
lasx_xvsll_b
|
||||
@@ -475,3 +483,11 @@ lasx_xvpickod_b
|
||||
lasx_xvpickod_h
|
||||
lasx_xvpickod_w
|
||||
lasx_xvpickod_d
|
||||
lasx_xvilvh_b
|
||||
lasx_xvilvh_h
|
||||
lasx_xvilvh_w
|
||||
lasx_xvilvh_d
|
||||
lasx_xvilvl_b
|
||||
lasx_xvilvl_h
|
||||
lasx_xvilvl_w
|
||||
lasx_xvilvl_d
|
||||
|
||||
Reference in New Issue
Block a user