Skip to main content

core/stdarch/crates/core_arch/src/loongarch64/lasx/
portable.rs

1//! LoongArch64 LASX intrinsics - intrinsics::simd implementation
2
3use super::super::{simd as ls, simd::*, *};
4use crate::core_arch::simd::{self as cs, *};
5use crate::intrinsics::simd as is;
6use crate::mem::transmute;
7
8#[inline(always)]
9#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
10const unsafe fn simd_pickev_b<T: Copy>(a: T, b: T) -> T {
11    simd_shuffle!(
12        b,
13        a,
14        [
15            0, 2, 4, 6, 8, 10, 12, 14, 32, 34, 36, 38, 40, 42, 44, 46,
16            16, 18, 20, 22, 24, 26, 28, 30, 48, 50, 52, 54, 56, 58, 60, 62
17        ]
18    )
19}
20
21#[inline(always)]
22#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
23const unsafe fn simd_pickev_d<T: Copy>(a: T, b: T) -> T {
24    simd_shuffle!(b, a, [0, 4, 2, 6])
25}
26
27#[inline(always)]
28#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
29const unsafe fn simd_pickev_w<T: Copy>(a: T, b: T) -> T {
30    simd_shuffle!(b, a, [0, 2, 8, 10, 4, 6, 12, 14])
31}
32
33#[inline(always)]
34#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
35const unsafe fn simd_pickev_h<T: Copy>(a: T, b: T) -> T {
36    simd_shuffle!(b, a, [0, 2, 4, 6, 16, 18, 20, 22, 8, 10, 12, 14, 24, 26, 28, 30])
37}
38
39#[inline(always)]
40#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
41const unsafe fn simd_pickod_b<T: Copy>(a: T, b: T) -> T {
42    simd_shuffle!(
43        b,
44        a,
45        [
46            1, 3, 5, 7, 9, 11, 13, 15, 33, 35, 37, 39, 41, 43, 45, 47,
47            17, 19, 21, 23, 25, 27, 29, 31, 49, 51, 53, 55, 57, 59, 61, 63
48        ]
49    )
50}
51
52#[inline(always)]
53#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
54const unsafe fn simd_pickod_d<T: Copy>(a: T, b: T) -> T {
55    simd_shuffle!(b, a, [1, 5, 3, 7])
56}
57
58#[inline(always)]
59#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
60const unsafe fn simd_pickod_w<T: Copy>(a: T, b: T) -> T {
61    simd_shuffle!(b, a, [1, 3, 9, 11, 5, 7, 13, 15])
62}
63
64#[inline(always)]
65#[rustc_const_unstable(feature = "stdarch_const_helpers", issue = "none")]
66const unsafe fn simd_pickod_h<T: Copy>(a: T, b: T) -> T {
67    simd_shuffle!(b, a, [1, 3, 5, 7, 17, 19, 21, 23, 9, 11, 13, 15, 25, 27, 29, 31])
68}
69
70impl_vv!("lasx", lasx_xvpcnt_b, is::simd_ctpop, m256i, i8x32);
71impl_vv!("lasx", lasx_xvpcnt_h, is::simd_ctpop, m256i, i16x16);
72impl_vv!("lasx", lasx_xvpcnt_w, is::simd_ctpop, m256i, i32x8);
73impl_vv!("lasx", lasx_xvpcnt_d, is::simd_ctpop, m256i, i64x4);
74impl_vv!("lasx", lasx_xvclz_b, is::simd_ctlz, m256i, i8x32);
75impl_vv!("lasx", lasx_xvclz_h, is::simd_ctlz, m256i, i16x16);
76impl_vv!("lasx", lasx_xvclz_w, is::simd_ctlz, m256i, i32x8);
77impl_vv!("lasx", lasx_xvclz_d, is::simd_ctlz, m256i, i64x4);
78impl_vv!("lasx", lasx_xvneg_b, is::simd_neg, m256i, i8x32);
79impl_vv!("lasx", lasx_xvneg_h, is::simd_neg, m256i, i16x16);
80impl_vv!("lasx", lasx_xvneg_w, is::simd_neg, m256i, i32x8);
81impl_vv!("lasx", lasx_xvneg_d, is::simd_neg, m256i, i64x4);
82impl_vv!("lasx", lasx_xvfsqrt_s, is::simd_fsqrt, m256, f32x8);
83impl_vv!("lasx", lasx_xvfsqrt_d, is::simd_fsqrt, m256d, f64x4);
84
85impl_gv!("lasx", lasx_xvreplgr2vr_b, ls::simd_splat, m256i, i8x32, i32);
86impl_gv!("lasx", lasx_xvreplgr2vr_h, ls::simd_splat, m256i, i16x16, i32);
87impl_gv!("lasx", lasx_xvreplgr2vr_w, ls::simd_splat, m256i, i32x8, i32);
88impl_gv!("lasx", lasx_xvreplgr2vr_d, ls::simd_splat, m256i, i64x4, i64);
89
90impl_sv!("lasx", lasx_xvrepli_b, ls::simd_splat, m256i, i8x32, 10);
91impl_sv!("lasx", lasx_xvrepli_h, ls::simd_splat, m256i, i16x16, 10);
92impl_sv!("lasx", lasx_xvrepli_w, ls::simd_splat, m256i, i32x8, 10);
93impl_sv!("lasx", lasx_xvrepli_d, ls::simd_splat, m256i, i64x4, 10);
94
95impl_vvv!("lasx", lasx_xvadd_b, is::simd_add, m256i, i8x32);
96impl_vvv!("lasx", lasx_xvadd_h, is::simd_add, m256i, i16x16);
97impl_vvv!("lasx", lasx_xvadd_w, is::simd_add, m256i, i32x8);
98impl_vvv!("lasx", lasx_xvadd_d, is::simd_add, m256i, i64x4);
99impl_vvv!("lasx", lasx_xvsub_b, is::simd_sub, m256i, i8x32);
100impl_vvv!("lasx", lasx_xvsub_h, is::simd_sub, m256i, i16x16);
101impl_vvv!("lasx", lasx_xvsub_w, is::simd_sub, m256i, i32x8);
102impl_vvv!("lasx", lasx_xvsub_d, is::simd_sub, m256i, i64x4);
103impl_vvv!("lasx", lasx_xvmax_b, cs::simd_imax, m256i, i8x32);
104impl_vvv!("lasx", lasx_xvmax_h, cs::simd_imax, m256i, i16x16);
105impl_vvv!("lasx", lasx_xvmax_w, cs::simd_imax, m256i, i32x8);
106impl_vvv!("lasx", lasx_xvmax_d, cs::simd_imax, m256i, i64x4);
107impl_vvv!("lasx", lasx_xvmax_bu, cs::simd_imax, m256i, u8x32);
108impl_vvv!("lasx", lasx_xvmax_hu, cs::simd_imax, m256i, u16x16);
109impl_vvv!("lasx", lasx_xvmax_wu, cs::simd_imax, m256i, u32x8);
110impl_vvv!("lasx", lasx_xvmax_du, cs::simd_imax, m256i, u64x4);
111impl_vvv!("lasx", lasx_xvmin_b, cs::simd_imin, m256i, i8x32);
112impl_vvv!("lasx", lasx_xvmin_h, cs::simd_imin, m256i, i16x16);
113impl_vvv!("lasx", lasx_xvmin_w, cs::simd_imin, m256i, i32x8);
114impl_vvv!("lasx", lasx_xvmin_d, cs::simd_imin, m256i, i64x4);
115impl_vvv!("lasx", lasx_xvmin_bu, cs::simd_imin, m256i, u8x32);
116impl_vvv!("lasx", lasx_xvmin_hu, cs::simd_imin, m256i, u16x16);
117impl_vvv!("lasx", lasx_xvmin_wu, cs::simd_imin, m256i, u32x8);
118impl_vvv!("lasx", lasx_xvmin_du, cs::simd_imin, m256i, u64x4);
119impl_vvv!("lasx", lasx_xvseq_b, is::simd_eq, m256i, i8x32);
120impl_vvv!("lasx", lasx_xvseq_h, is::simd_eq, m256i, i16x16);
121impl_vvv!("lasx", lasx_xvseq_w, is::simd_eq, m256i, i32x8);
122impl_vvv!("lasx", lasx_xvseq_d, is::simd_eq, m256i, i64x4);
123impl_vvv!("lasx", lasx_xvslt_b, is::simd_lt, m256i, i8x32);
124impl_vvv!("lasx", lasx_xvslt_h, is::simd_lt, m256i, i16x16);
125impl_vvv!("lasx", lasx_xvslt_w, is::simd_lt, m256i, i32x8);
126impl_vvv!("lasx", lasx_xvslt_d, is::simd_lt, m256i, i64x4);
127impl_vvv!("lasx", lasx_xvslt_bu, is::simd_lt, m256i, u8x32);
128impl_vvv!("lasx", lasx_xvslt_hu, is::simd_lt, m256i, u16x16);
129impl_vvv!("lasx", lasx_xvslt_wu, is::simd_lt, m256i, u32x8);
130impl_vvv!("lasx", lasx_xvslt_du, is::simd_lt, m256i, u64x4);
131impl_vvv!("lasx", lasx_xvsle_b, is::simd_le, m256i, i8x32);
132impl_vvv!("lasx", lasx_xvsle_h, is::simd_le, m256i, i16x16);
133impl_vvv!("lasx", lasx_xvsle_w, is::simd_le, m256i, i32x8);
134impl_vvv!("lasx", lasx_xvsle_d, is::simd_le, m256i, i64x4);
135impl_vvv!("lasx", lasx_xvsle_bu, is::simd_le, m256i, u8x32);
136impl_vvv!("lasx", lasx_xvsle_hu, is::simd_le, m256i, u16x16);
137impl_vvv!("lasx", lasx_xvsle_wu, is::simd_le, m256i, u32x8);
138impl_vvv!("lasx", lasx_xvsle_du, is::simd_le, m256i, u64x4);
139impl_vvv!("lasx", lasx_xvmul_b, is::simd_mul, m256i, i8x32);
140impl_vvv!("lasx", lasx_xvmul_h, is::simd_mul, m256i, i16x16);
141impl_vvv!("lasx", lasx_xvmul_w, is::simd_mul, m256i, i32x8);
142impl_vvv!("lasx", lasx_xvmul_d, is::simd_mul, m256i, i64x4);
143impl_vvv!("lasx", lasx_xvdiv_b, is::simd_div, m256i, i8x32);
144impl_vvv!("lasx", lasx_xvdiv_h, is::simd_div, m256i, i16x16);
145impl_vvv!("lasx", lasx_xvdiv_w, is::simd_div, m256i, i32x8);
146impl_vvv!("lasx", lasx_xvdiv_d, is::simd_div, m256i, i64x4);
147impl_vvv!("lasx", lasx_xvdiv_bu, is::simd_div, m256i, u8x32);
148impl_vvv!("lasx", lasx_xvdiv_hu, is::simd_div, m256i, u16x16);
149impl_vvv!("lasx", lasx_xvdiv_wu, is::simd_div, m256i, u32x8);
150impl_vvv!("lasx", lasx_xvdiv_du, is::simd_div, m256i, u64x4);
151impl_vvv!("lasx", lasx_xvmod_b, is::simd_rem, m256i, i8x32);
152impl_vvv!("lasx", lasx_xvmod_h, is::simd_rem, m256i, i16x16);
153impl_vvv!("lasx", lasx_xvmod_w, is::simd_rem, m256i, i32x8);
154impl_vvv!("lasx", lasx_xvmod_d, is::simd_rem, m256i, i64x4);
155impl_vvv!("lasx", lasx_xvmod_bu, is::simd_rem, m256i, u8x32);
156impl_vvv!("lasx", lasx_xvmod_hu, is::simd_rem, m256i, u16x16);
157impl_vvv!("lasx", lasx_xvmod_wu, is::simd_rem, m256i, u32x8);
158impl_vvv!("lasx", lasx_xvmod_du, is::simd_rem, m256i, u64x4);
159impl_vvv!("lasx", lasx_xvand_v, is::simd_and, m256i, u8x32);
160impl_vvv!("lasx", lasx_xvandn_v, ls::simd_andn, m256i, u8x32);
161impl_vvv!("lasx", lasx_xvor_v, is::simd_or, m256i, u8x32);
162impl_vvv!("lasx", lasx_xvorn_v, ls::simd_orn, m256i, u8x32);
163impl_vvv!("lasx", lasx_xvnor_v, ls::simd_nor, m256i, u8x32);
164impl_vvv!("lasx", lasx_xvxor_v, is::simd_xor, m256i, u8x32);
165impl_vvv!("lasx", lasx_xvfadd_s, is::simd_add, m256, f32x8);
166impl_vvv!("lasx", lasx_xvfadd_d, is::simd_add, m256d, f64x4);
167impl_vvv!("lasx", lasx_xvfsub_s, is::simd_sub, m256, f32x8);
168impl_vvv!("lasx", lasx_xvfsub_d, is::simd_sub, m256d, f64x4);
169impl_vvv!("lasx", lasx_xvfmul_s, is::simd_mul, m256, f32x8);
170impl_vvv!("lasx", lasx_xvfmul_d, is::simd_mul, m256d, f64x4);
171impl_vvv!("lasx", lasx_xvfdiv_s, is::simd_div, m256, f32x8);
172impl_vvv!("lasx", lasx_xvfdiv_d, is::simd_div, m256d, f64x4);
173impl_vvv!("lasx", lasx_xvsll_b, ls::simd_shl, m256i, i8x32);
174impl_vvv!("lasx", lasx_xvsll_h, ls::simd_shl, m256i, i16x16);
175impl_vvv!("lasx", lasx_xvsll_w, ls::simd_shl, m256i, i32x8);
176impl_vvv!("lasx", lasx_xvsll_d, ls::simd_shl, m256i, i64x4);
177impl_vvv!("lasx", lasx_xvsra_b, ls::simd_shr, m256i, i8x32);
178impl_vvv!("lasx", lasx_xvsra_h, ls::simd_shr, m256i, i16x16);
179impl_vvv!("lasx", lasx_xvsra_w, ls::simd_shr, m256i, i32x8);
180impl_vvv!("lasx", lasx_xvsra_d, ls::simd_shr, m256i, i64x4);
181impl_vvv!("lasx", lasx_xvsrl_b, ls::simd_shr, m256i, u8x32);
182impl_vvv!("lasx", lasx_xvsrl_h, ls::simd_shr, m256i, u16x16);
183impl_vvv!("lasx", lasx_xvsrl_w, ls::simd_shr, m256i, u32x8);
184impl_vvv!("lasx", lasx_xvsrl_d, ls::simd_shr, m256i, u64x4);
185impl_vvv!("lasx", lasx_xvbitclr_b, ls::simd_bitclr, m256i, u8x32);
186impl_vvv!("lasx", lasx_xvbitclr_h, ls::simd_bitclr, m256i, u16x16);
187impl_vvv!("lasx", lasx_xvbitclr_w, ls::simd_bitclr, m256i, u32x8);
188impl_vvv!("lasx", lasx_xvbitclr_d, ls::simd_bitclr, m256i, u64x4);
189impl_vvv!("lasx", lasx_xvbitset_b, ls::simd_bitset, m256i, u8x32);
190impl_vvv!("lasx", lasx_xvbitset_h, ls::simd_bitset, m256i, u16x16);
191impl_vvv!("lasx", lasx_xvbitset_w, ls::simd_bitset, m256i, u32x8);
192impl_vvv!("lasx", lasx_xvbitset_d, ls::simd_bitset, m256i, u64x4);
193impl_vvv!("lasx", lasx_xvbitrev_b, ls::simd_bitrev, m256i, u8x32);
194impl_vvv!("lasx", lasx_xvbitrev_h, ls::simd_bitrev, m256i, u16x16);
195impl_vvv!("lasx", lasx_xvbitrev_w, ls::simd_bitrev, m256i, u32x8);
196impl_vvv!("lasx", lasx_xvbitrev_d, ls::simd_bitrev, m256i, u64x4);
197impl_vvv!("lasx", lasx_xvsadd_b, is::simd_saturating_add, m256i, i8x32);
198impl_vvv!("lasx", lasx_xvsadd_h, is::simd_saturating_add, m256i, i16x16);
199impl_vvv!("lasx", lasx_xvsadd_w, is::simd_saturating_add, m256i, i32x8);
200impl_vvv!("lasx", lasx_xvsadd_d, is::simd_saturating_add, m256i, i64x4);
201impl_vvv!("lasx", lasx_xvsadd_bu, is::simd_saturating_add, m256i, u8x32);
202impl_vvv!("lasx", lasx_xvsadd_hu, is::simd_saturating_add, m256i, u16x16);
203impl_vvv!("lasx", lasx_xvsadd_wu, is::simd_saturating_add, m256i, u32x8);
204impl_vvv!("lasx", lasx_xvsadd_du, is::simd_saturating_add, m256i, u64x4);
205impl_vvv!("lasx", lasx_xvssub_b, is::simd_saturating_sub, m256i, i8x32);
206impl_vvv!("lasx", lasx_xvssub_h, is::simd_saturating_sub, m256i, i16x16);
207impl_vvv!("lasx", lasx_xvssub_w, is::simd_saturating_sub, m256i, i32x8);
208impl_vvv!("lasx", lasx_xvssub_d, is::simd_saturating_sub, m256i, i64x4);
209impl_vvv!("lasx", lasx_xvssub_bu, is::simd_saturating_sub, m256i, u8x32);
210impl_vvv!("lasx", lasx_xvssub_hu, is::simd_saturating_sub, m256i, u16x16);
211impl_vvv!("lasx", lasx_xvssub_wu, is::simd_saturating_sub, m256i, u32x8);
212impl_vvv!("lasx", lasx_xvssub_du, is::simd_saturating_sub, m256i, u64x4);
213impl_vvv!("lasx", lasx_xvadda_b, ls::simd_adda, m256i, i8x32);
214impl_vvv!("lasx", lasx_xvadda_h, ls::simd_adda, m256i, i16x16);
215impl_vvv!("lasx", lasx_xvadda_w, ls::simd_adda, m256i, i32x8);
216impl_vvv!("lasx", lasx_xvadda_d, ls::simd_adda, m256i, i64x4);
217impl_vvv!("lasx", lasx_xvabsd_b, ls::simd_absd, m256i, i8x32);
218impl_vvv!("lasx", lasx_xvabsd_h, ls::simd_absd, m256i, i16x16);
219impl_vvv!("lasx", lasx_xvabsd_w, ls::simd_absd, m256i, i32x8);
220impl_vvv!("lasx", lasx_xvabsd_d, ls::simd_absd, m256i, i64x4);
221impl_vvv!("lasx", lasx_xvabsd_bu, ls::simd_absd, m256i, u8x32);
222impl_vvv!("lasx", lasx_xvabsd_hu, ls::simd_absd, m256i, u16x16);
223impl_vvv!("lasx", lasx_xvabsd_wu, ls::simd_absd, m256i, u32x8);
224impl_vvv!("lasx", lasx_xvabsd_du, ls::simd_absd, m256i, u64x4);
225impl_vvv!("lasx", lasx_xvpickev_b, simd_pickev_b, m256i, i8x32);
226impl_vvv!("lasx", lasx_xvpickev_h, simd_pickev_h, m256i, i16x16);
227impl_vvv!("lasx", lasx_xvpickev_w, simd_pickev_w, m256i, i32x8);
228impl_vvv!("lasx", lasx_xvpickev_d, simd_pickev_d, m256i, i64x4);
229impl_vvv!("lasx", lasx_xvpickod_b, simd_pickod_b, m256i, i8x32);
230impl_vvv!("lasx", lasx_xvpickod_h, simd_pickod_h, m256i, i16x16);
231impl_vvv!("lasx", lasx_xvpickod_w, simd_pickod_w, m256i, i32x8);
232impl_vvv!("lasx", lasx_xvpickod_d, simd_pickod_d, m256i, i64x4);
233
234impl_vuv!("lasx", lasx_xvslli_b, is::simd_shl, m256i, i8x32);
235impl_vuv!("lasx", lasx_xvslli_h, is::simd_shl, m256i, i16x16);
236impl_vuv!("lasx", lasx_xvslli_w, is::simd_shl, m256i, i32x8);
237impl_vuv!("lasx", lasx_xvslli_d, is::simd_shl, m256i, i64x4);
238impl_vuv!("lasx", lasx_xvsrai_b, is::simd_shr, m256i, i8x32);
239impl_vuv!("lasx", lasx_xvsrai_h, is::simd_shr, m256i, i16x16);
240impl_vuv!("lasx", lasx_xvsrai_w, is::simd_shr, m256i, i32x8);
241impl_vuv!("lasx", lasx_xvsrai_d, is::simd_shr, m256i, i64x4);
242impl_vuv!("lasx", lasx_xvsrli_b, is::simd_shr, m256i, u8x32);
243impl_vuv!("lasx", lasx_xvsrli_h, is::simd_shr, m256i, u16x16);
244impl_vuv!("lasx", lasx_xvsrli_w, is::simd_shr, m256i, u32x8);
245impl_vuv!("lasx", lasx_xvsrli_d, is::simd_shr, m256i, u64x4);
246impl_vuv!("lasx", lasx_xvaddi_bu, is::simd_add, m256i, u8x32, 5);
247impl_vuv!("lasx", lasx_xvaddi_hu, is::simd_add, m256i, u16x16, 5);
248impl_vuv!("lasx", lasx_xvaddi_wu, is::simd_add, m256i, u32x8, 5);
249impl_vuv!("lasx", lasx_xvaddi_du, is::simd_add, m256i, u64x4, 5);
250impl_vuv!("lasx", lasx_xvslti_bu, is::simd_lt, m256i, u8x32, 5);
251impl_vuv!("lasx", lasx_xvslti_hu, is::simd_lt, m256i, u16x16, 5);
252impl_vuv!("lasx", lasx_xvslti_wu, is::simd_lt, m256i, u32x8, 5);
253impl_vuv!("lasx", lasx_xvslti_du, is::simd_lt, m256i, u64x4, 5);
254impl_vuv!("lasx", lasx_xvslei_bu, is::simd_le, m256i, u8x32, 5);
255impl_vuv!("lasx", lasx_xvslei_hu, is::simd_le, m256i, u16x16, 5);
256impl_vuv!("lasx", lasx_xvslei_wu, is::simd_le, m256i, u32x8, 5);
257impl_vuv!("lasx", lasx_xvslei_du, is::simd_le, m256i, u64x4, 5);
258impl_vuv!("lasx", lasx_xvmaxi_bu, cs::simd_imax, m256i, u8x32, 5);
259impl_vuv!("lasx", lasx_xvmaxi_hu, cs::simd_imax, m256i, u16x16, 5);
260impl_vuv!("lasx", lasx_xvmaxi_wu, cs::simd_imax, m256i, u32x8, 5);
261impl_vuv!("lasx", lasx_xvmaxi_du, cs::simd_imax, m256i, u64x4, 5);
262impl_vuv!("lasx", lasx_xvmini_bu, cs::simd_imin, m256i, u8x32, 5);
263impl_vuv!("lasx", lasx_xvmini_hu, cs::simd_imin, m256i, u16x16, 5);
264impl_vuv!("lasx", lasx_xvmini_wu, cs::simd_imin, m256i, u32x8, 5);
265impl_vuv!("lasx", lasx_xvmini_du, cs::simd_imin, m256i, u64x4, 5);
266
267impl_vug!("lasx", lasx_xvpickve2gr_w, is::simd_extract, m256i, i32x8, i32, 3);
268impl_vug!("lasx", lasx_xvpickve2gr_d, is::simd_extract, m256i, i64x4, i64, 2);
269impl_vug!("lasx", lasx_xvpickve2gr_wu, is::simd_extract, m256i, u32x8, u32, 3);
270impl_vug!("lasx", lasx_xvpickve2gr_du, is::simd_extract, m256i, u64x4, u64, 2);
271
272impl_vsv!("lasx", lasx_xvseqi_b, is::simd_eq, m256i, i8x32, 5);
273impl_vsv!("lasx", lasx_xvseqi_h, is::simd_eq, m256i, i16x16, 5);
274impl_vsv!("lasx", lasx_xvseqi_w, is::simd_eq, m256i, i32x8, 5);
275impl_vsv!("lasx", lasx_xvseqi_d, is::simd_eq, m256i, i64x4, 5);
276impl_vsv!("lasx", lasx_xvslti_b, is::simd_lt, m256i, i8x32, 5);
277impl_vsv!("lasx", lasx_xvslti_h, is::simd_lt, m256i, i16x16, 5);
278impl_vsv!("lasx", lasx_xvslti_w, is::simd_lt, m256i, i32x8, 5);
279impl_vsv!("lasx", lasx_xvslti_d, is::simd_lt, m256i, i64x4, 5);
280impl_vsv!("lasx", lasx_xvslei_b, is::simd_le, m256i, i8x32, 5);
281impl_vsv!("lasx", lasx_xvslei_h, is::simd_le, m256i, i16x16, 5);
282impl_vsv!("lasx", lasx_xvslei_w, is::simd_le, m256i, i32x8, 5);
283impl_vsv!("lasx", lasx_xvslei_d, is::simd_le, m256i, i64x4, 5);
284impl_vsv!("lasx", lasx_xvmaxi_b, cs::simd_imax, m256i, i8x32, 5);
285impl_vsv!("lasx", lasx_xvmaxi_h, cs::simd_imax, m256i, i16x16, 5);
286impl_vsv!("lasx", lasx_xvmaxi_w, cs::simd_imax, m256i, i32x8, 5);
287impl_vsv!("lasx", lasx_xvmaxi_d, cs::simd_imax, m256i, i64x4, 5);
288impl_vsv!("lasx", lasx_xvmini_b, cs::simd_imin, m256i, i8x32, 5);
289impl_vsv!("lasx", lasx_xvmini_h, cs::simd_imin, m256i, i16x16, 5);
290impl_vsv!("lasx", lasx_xvmini_w, cs::simd_imin, m256i, i32x8, 5);
291impl_vsv!("lasx", lasx_xvmini_d, cs::simd_imin, m256i, i64x4, 5);
292
293impl_vvvv!("lasx", lasx_xvmadd_b, ls::simd_madd, m256i, i8x32);
294impl_vvvv!("lasx", lasx_xvmadd_h, ls::simd_madd, m256i, i16x16);
295impl_vvvv!("lasx", lasx_xvmadd_w, ls::simd_madd, m256i, i32x8);
296impl_vvvv!("lasx", lasx_xvmadd_d, ls::simd_madd, m256i, i64x4);
297impl_vvvv!("lasx", lasx_xvmsub_b, ls::simd_msub, m256i, i8x32);
298impl_vvvv!("lasx", lasx_xvmsub_h, ls::simd_msub, m256i, i16x16);
299impl_vvvv!("lasx", lasx_xvmsub_w, ls::simd_msub, m256i, i32x8);
300impl_vvvv!("lasx", lasx_xvmsub_d, ls::simd_msub, m256i, i64x4);
301impl_vvvv!("lasx", lasx_xvfmadd_s, is::simd_fma, m256, f32x8);
302impl_vvvv!("lasx", lasx_xvfmadd_d, is::simd_fma, m256d, f64x4);
303impl_vvvv!("lasx", lasx_xvfmsub_s, ls::simd_fmsub, m256, f32x8);
304impl_vvvv!("lasx", lasx_xvfmsub_d, ls::simd_fmsub, m256d, f64x4);
305impl_vvvv!("lasx", lasx_xvfnmadd_s, ls::simd_fnmadd, m256, f32x8);
306impl_vvvv!("lasx", lasx_xvfnmadd_d, ls::simd_fnmadd, m256d, f64x4);
307impl_vvvv!("lasx", lasx_xvfnmsub_s, ls::simd_fnmsub, m256, f32x8);
308impl_vvvv!("lasx", lasx_xvfnmsub_d, ls::simd_fnmsub, m256d, f64x4);
309
310impl_vugv!("lasx", lasx_xvinsgr2vr_w, is::simd_insert, m256i, i32x8, i32, 3);
311impl_vugv!("lasx", lasx_xvinsgr2vr_d, is::simd_insert, m256i, i64x4, i64, 2);