mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-31 13:40:15 +03:00
loongarch: Use intrinsics::simd for vpick{ev,od}
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.xvpickev.b"]
|
||||
fn __lasx_xvpickev_b(a: __v32i8, b: __v32i8) -> __v32i8;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpickev.h"]
|
||||
fn __lasx_xvpickev_h(a: __v16i16, b: __v16i16) -> __v16i16;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpickev.w"]
|
||||
fn __lasx_xvpickev_w(a: __v8i32, b: __v8i32) -> __v8i32;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpickev.d"]
|
||||
fn __lasx_xvpickev_d(a: __v4i64, b: __v4i64) -> __v4i64;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpickod.b"]
|
||||
fn __lasx_xvpickod_b(a: __v32i8, b: __v32i8) -> __v32i8;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpickod.h"]
|
||||
fn __lasx_xvpickod_h(a: __v16i16, b: __v16i16) -> __v16i16;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpickod.w"]
|
||||
fn __lasx_xvpickod_w(a: __v8i32, b: __v8i32) -> __v8i32;
|
||||
#[link_name = "llvm.loongarch.lasx.xvpickod.d"]
|
||||
fn __lasx_xvpickod_d(a: __v4i64, b: __v4i64) -> __v4i64;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvh.b"]
|
||||
fn __lasx_xvilvh_b(a: __v32i8, b: __v32i8) -> __v32i8;
|
||||
#[link_name = "llvm.loongarch.lasx.xvilvh.h"]
|
||||
@@ -1653,62 +1637,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_xvpickev_b(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickev_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvpickev_h(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickev_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvpickev_w(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickev_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvpickev_d(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickev_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvpickod_b(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickod_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvpickod_h(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickod_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvpickod_w(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickod_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lasx_xvpickod_d(a: m256i, b: m256i) -> m256i {
|
||||
unsafe { transmute(__lasx_xvpickod_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lasx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
|
||||
@@ -5,6 +5,68 @@
|
||||
use crate::intrinsics::simd as is;
|
||||
use crate::mem::transmute;
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(
|
||||
b,
|
||||
a,
|
||||
[
|
||||
0, 2, 4, 6, 8, 10, 12, 14, 32, 34, 36, 38, 40, 42, 44, 46,
|
||||
16, 18, 20, 22, 24, 26, 28, 30, 48, 50, 52, 54, 56, 58, 60, 62
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_d<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 4, 2, 6])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 2, 8, 10, 4, 6, 12, 14])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 2, 4, 6, 16, 18, 20, 22, 8, 10, 12, 14, 24, 26, 28, 30])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickod_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(
|
||||
b,
|
||||
a,
|
||||
[
|
||||
1, 3, 5, 7, 9, 11, 13, 15, 33, 35, 37, 39, 41, 43, 45, 47,
|
||||
17, 19, 21, 23, 25, 27, 29, 31, 49, 51, 53, 55, 57, 59, 61, 63
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickod_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")]
|
||||
const unsafe fn simd_pickod_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 3, 9, 11, 5, 7, 13, 15])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickod_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 3, 5, 7, 17, 19, 21, 23, 9, 11, 13, 15, 25, 27, 29, 31])
|
||||
}
|
||||
|
||||
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);
|
||||
@@ -160,6 +222,14 @@
|
||||
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_xvpickev_b, simd_pickev_b, m256i, i8x32);
|
||||
impl_vvv!("lasx", lasx_xvpickev_h, simd_pickev_h, m256i, i16x16);
|
||||
impl_vvv!("lasx", lasx_xvpickev_w, simd_pickev_w, m256i, i32x8);
|
||||
impl_vvv!("lasx", lasx_xvpickev_d, simd_pickev_d, m256i, i64x4);
|
||||
impl_vvv!("lasx", lasx_xvpickod_b, simd_pickod_b, m256i, i8x32);
|
||||
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_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.vpickev.b"]
|
||||
fn __lsx_vpickev_b(a: __v16i8, b: __v16i8) -> __v16i8;
|
||||
#[link_name = "llvm.loongarch.lsx.vpickev.h"]
|
||||
fn __lsx_vpickev_h(a: __v8i16, b: __v8i16) -> __v8i16;
|
||||
#[link_name = "llvm.loongarch.lsx.vpickev.w"]
|
||||
fn __lsx_vpickev_w(a: __v4i32, b: __v4i32) -> __v4i32;
|
||||
#[link_name = "llvm.loongarch.lsx.vpickev.d"]
|
||||
fn __lsx_vpickev_d(a: __v2i64, b: __v2i64) -> __v2i64;
|
||||
#[link_name = "llvm.loongarch.lsx.vpickod.b"]
|
||||
fn __lsx_vpickod_b(a: __v16i8, b: __v16i8) -> __v16i8;
|
||||
#[link_name = "llvm.loongarch.lsx.vpickod.h"]
|
||||
fn __lsx_vpickod_h(a: __v8i16, b: __v8i16) -> __v8i16;
|
||||
#[link_name = "llvm.loongarch.lsx.vpickod.w"]
|
||||
fn __lsx_vpickod_w(a: __v4i32, b: __v4i32) -> __v4i32;
|
||||
#[link_name = "llvm.loongarch.lsx.vpickod.d"]
|
||||
fn __lsx_vpickod_d(a: __v2i64, b: __v2i64) -> __v2i64;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvh.b"]
|
||||
fn __lsx_vilvh_b(a: __v16i8, b: __v16i8) -> __v16i8;
|
||||
#[link_name = "llvm.loongarch.lsx.vilvh.h"]
|
||||
@@ -1593,62 +1577,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_vpickev_b(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickev_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vpickev_h(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickev_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vpickev_w(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickev_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vpickev_d(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickev_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vpickod_b(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickod_b(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vpickod_h(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickod_h(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vpickod_w(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickod_w(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
pub fn lsx_vpickod_d(a: m128i, b: m128i) -> m128i {
|
||||
unsafe { transmute(__lsx_vpickod_d(transmute(a), transmute(b))) }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[target_feature(enable = "lsx")]
|
||||
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
|
||||
|
||||
@@ -5,6 +5,54 @@
|
||||
use crate::intrinsics::simd as is;
|
||||
use crate::mem::transmute;
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 2, 4, 6, 8, 10, 12, 14])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 2, 4, 6])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickev_d<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [0, 2])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickod_b<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickod_h<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 3, 5, 7, 9, 11, 13, 15])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickod_w<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 3, 5, 7])
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
|
||||
const unsafe fn simd_pickod_d<T: Copy>(a: T, b: T) -> T {
|
||||
simd_shuffle!(b, a, [1, 3])
|
||||
}
|
||||
|
||||
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);
|
||||
@@ -160,6 +208,14 @@
|
||||
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_vpickev_b, simd_pickev_b, m128i, i8x16);
|
||||
impl_vvv!("lsx", lsx_vpickev_h, simd_pickev_h, m128i, i16x8);
|
||||
impl_vvv!("lsx", lsx_vpickev_w, simd_pickev_w, m128i, i32x4);
|
||||
impl_vvv!("lsx", lsx_vpickev_d, simd_pickev_d, m128i, i64x2);
|
||||
impl_vvv!("lsx", lsx_vpickod_b, simd_pickod_b, m128i, i8x16);
|
||||
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_vuv!("lsx", lsx_vslli_b, is::simd_shl, m128i, i8x16);
|
||||
impl_vuv!("lsx", lsx_vslli_h, is::simd_shl, m128i, i16x8);
|
||||
|
||||
@@ -1420,41 +1420,49 @@ asm-fmts = xd, xj, ui1
|
||||
data-types = V4DI, V4DI, UQI
|
||||
|
||||
/// lasx_xvpickev_b
|
||||
impl = portable
|
||||
name = lasx_xvpickev_b
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V32QI, V32QI, V32QI
|
||||
|
||||
/// lasx_xvpickev_h
|
||||
impl = portable
|
||||
name = lasx_xvpickev_h
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V16HI, V16HI, V16HI
|
||||
|
||||
/// lasx_xvpickev_w
|
||||
impl = portable
|
||||
name = lasx_xvpickev_w
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V8SI, V8SI, V8SI
|
||||
|
||||
/// lasx_xvpickev_d
|
||||
impl = portable
|
||||
name = lasx_xvpickev_d
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V4DI, V4DI, V4DI
|
||||
|
||||
/// lasx_xvpickod_b
|
||||
impl = portable
|
||||
name = lasx_xvpickod_b
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V32QI, V32QI, V32QI
|
||||
|
||||
/// lasx_xvpickod_h
|
||||
impl = portable
|
||||
name = lasx_xvpickod_h
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V16HI, V16HI, V16HI
|
||||
|
||||
/// lasx_xvpickod_w
|
||||
impl = portable
|
||||
name = lasx_xvpickod_w
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V8SI, V8SI, V8SI
|
||||
|
||||
/// lasx_xvpickod_d
|
||||
impl = portable
|
||||
name = lasx_xvpickod_d
|
||||
asm-fmts = xd, xj, xk
|
||||
data-types = V4DI, V4DI, V4DI
|
||||
|
||||
@@ -1440,41 +1440,49 @@ asm-fmts = vd, vj, ui1
|
||||
data-types = V2DI, V2DI, UQI
|
||||
|
||||
/// lsx_vpickev_b
|
||||
impl = portable
|
||||
name = lsx_vpickev_b
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V16QI, V16QI, V16QI
|
||||
|
||||
/// lsx_vpickev_h
|
||||
impl = portable
|
||||
name = lsx_vpickev_h
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V8HI, V8HI, V8HI
|
||||
|
||||
/// lsx_vpickev_w
|
||||
impl = portable
|
||||
name = lsx_vpickev_w
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V4SI, V4SI, V4SI
|
||||
|
||||
/// lsx_vpickev_d
|
||||
impl = portable
|
||||
name = lsx_vpickev_d
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V2DI, V2DI, V2DI
|
||||
|
||||
/// lsx_vpickod_b
|
||||
impl = portable
|
||||
name = lsx_vpickod_b
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V16QI, V16QI, V16QI
|
||||
|
||||
/// lsx_vpickod_h
|
||||
impl = portable
|
||||
name = lsx_vpickod_h
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V8HI, V8HI, V8HI
|
||||
|
||||
/// lsx_vpickod_w
|
||||
impl = portable
|
||||
name = lsx_vpickod_w
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V4SI, V4SI, V4SI
|
||||
|
||||
/// lsx_vpickod_d
|
||||
impl = portable
|
||||
name = lsx_vpickod_d
|
||||
asm-fmts = vd, vj, vk
|
||||
data-types = V2DI, V2DI, V2DI
|
||||
|
||||
@@ -231,6 +231,14 @@ lsx_vabsd_bu
|
||||
lsx_vabsd_hu
|
||||
lsx_vabsd_wu
|
||||
lsx_vabsd_du
|
||||
lsx_vpickev_b
|
||||
lsx_vpickev_h
|
||||
lsx_vpickev_w
|
||||
lsx_vpickev_d
|
||||
lsx_vpickod_b
|
||||
lsx_vpickod_h
|
||||
lsx_vpickod_w
|
||||
lsx_vpickod_d
|
||||
|
||||
# LASX intrinsics
|
||||
lasx_xvsll_b
|
||||
@@ -459,3 +467,11 @@ lasx_xvabsd_bu
|
||||
lasx_xvabsd_hu
|
||||
lasx_xvabsd_wu
|
||||
lasx_xvabsd_du
|
||||
lasx_xvpickev_b
|
||||
lasx_xvpickev_h
|
||||
lasx_xvpickev_w
|
||||
lasx_xvpickev_d
|
||||
lasx_xvpickod_b
|
||||
lasx_xvpickod_h
|
||||
lasx_xvpickod_w
|
||||
lasx_xvpickod_d
|
||||
|
||||
Reference in New Issue
Block a user