180 __m256i w1 = {0x4B42539F58C50000, 0x11A822A332493FFF,
181 0x4B42539F58C50000, 0x11A822A332493FFF};
182 __m256i in0, in1, in2, in3;
183 __m256i w2, w3, w4, w5, w6, w7;
186 __m256i temp0, temp1, temp2, temp3;
187 __m256i const_val0 = __lasx_xvreplgr2vr_w(const_val);
188 __m256i const_val1, select_vec,
temp;
192 DUP4_ARG2(__lasx_xvpermi_d, in0, 0xD8, in1, 0xD8, in2, 0xD8, in3, 0xD8,
194 __lasx_xvst(in0,
block, 0);
195 __lasx_xvst(in1,
block, 32);
196 __lasx_xvst(in2,
block, 64);
197 __lasx_xvst(in3,
block, 96);
204 ptrdiff_t dst_stride_2x = dst_stride << 1;
205 ptrdiff_t dst_stride_4x = dst_stride << 2;
206 ptrdiff_t dst_stride_3x = dst_stride_2x + dst_stride;
207 __m256i w1 = {0x4B42539F58C50000, 0x11A822A332493FFF,
208 0x4B42539F58C50000, 0x11A822A332493FFF};
209 __m256i in0, in1, in2, in3;
210 __m256i w2, w3, w4, w5, w6, w7;
213 __m256i temp0, temp1, temp2, temp3;
214 __m256i const_val0 = __lasx_xvreplgr2vr_w(const_val);
215 __m256i const_val1, select_vec,
temp;
219 DUP4_ARG2(__lasx_xvpermi_d, in0, 0xD8, in1, 0xD8, in2, 0xD8, in3, 0xD8,
221 DUP4_ARG1(__lasx_xvclip255_h, in0, in1, in2, in3, in0, in1, in2, in3);
222 DUP2_ARG2(__lasx_xvpickev_b, in1, in0, in3, in2, in0, in1);
223 __lasx_xvstelm_d(in0,
dst, 0, 0);
224 __lasx_xvstelm_d(in0,
dst + dst_stride, 0, 2);
225 __lasx_xvstelm_d(in0,
dst + dst_stride_2x, 0, 1);
226 __lasx_xvstelm_d(in0,
dst + dst_stride_3x, 0, 3);
227 dst += dst_stride_4x;
228 __lasx_xvstelm_d(in1,
dst, 0, 0);
229 __lasx_xvstelm_d(in1,
dst + dst_stride, 0, 2);
230 __lasx_xvstelm_d(in1,
dst + dst_stride_2x, 0, 1);
231 __lasx_xvstelm_d(in1,
dst + dst_stride_3x, 0, 3);
239 ptrdiff_t dst_stride_2x = dst_stride << 1;
240 ptrdiff_t dst_stride_4x = dst_stride << 2;
241 ptrdiff_t dst_stride_3x = dst_stride_2x + dst_stride;
243 __m256i w1 = {0x4B42539F58C50000, 0x11A822A332493FFF,
244 0x4B42539F58C50000, 0x11A822A332493FFF};
245 __m256i sh = {0x0003000200010000, 0x000B000A00090008,
246 0x0007000600050004, 0x000F000E000D000C};
247 __m256i in0, in1, in2, in3;
248 __m256i w2, w3, w4, w5, w6, w7;
251 __m256i temp0, temp1, temp2, temp3;
252 __m256i const_val0 = __lasx_xvreplgr2vr_w(const_val);
253 __m256i const_val1, select_vec,
temp;
257 a0 = __lasx_xvldrepl_d(dst1, 0);
258 a0 = __lasx_vext2xv_hu_bu(
a0);
260 a1 = __lasx_xvldrepl_d(dst1, 0);
261 a1 = __lasx_vext2xv_hu_bu(
a1);
263 a2 = __lasx_xvldrepl_d(dst1, 0);
264 a2 = __lasx_vext2xv_hu_bu(
a2);
266 a3 = __lasx_xvldrepl_d(dst1, 0);
267 a3 = __lasx_vext2xv_hu_bu(
a3);
269 b0 = __lasx_xvldrepl_d(dst1, 0);
270 b0 = __lasx_vext2xv_hu_bu(
b0);
272 b1 = __lasx_xvldrepl_d(dst1, 0);
273 b1 = __lasx_vext2xv_hu_bu(
b1);
275 b2 = __lasx_xvldrepl_d(dst1, 0);
276 b2 = __lasx_vext2xv_hu_bu(
b2);
278 b3 = __lasx_xvldrepl_d(dst1, 0);
279 b3 = __lasx_vext2xv_hu_bu(
b3);
280 DUP4_ARG3(__lasx_xvshuf_h, sh,
a1,
a0, sh,
a3,
a2, sh,
b1,
b0, sh,
b3,
b2,
281 temp0, temp1, temp2, temp3);
282 DUP4_ARG2(__lasx_xvadd_h, temp0, in0, temp1, in1, temp2, in2, temp3, in3,
284 DUP4_ARG2(__lasx_xvpermi_d, in0, 0xD8, in1, 0xD8, in2, 0xD8, in3, 0xD8,
286 DUP4_ARG1(__lasx_xvclip255_h, in0, in1, in2, in3, in0, in1, in2, in3);
287 DUP2_ARG2(__lasx_xvpickev_b, in1, in0, in3, in2, in0, in1);
288 __lasx_xvstelm_d(in0,
dst, 0, 0);
289 __lasx_xvstelm_d(in0,
dst + dst_stride, 0, 2);
290 __lasx_xvstelm_d(in0,
dst + dst_stride_2x, 0, 1);
291 __lasx_xvstelm_d(in0,
dst + dst_stride_3x, 0, 3);
292 dst += dst_stride_4x;
293 __lasx_xvstelm_d(in1,
dst, 0, 0);
294 __lasx_xvstelm_d(in1,
dst + dst_stride, 0, 2);
295 __lasx_xvstelm_d(in1,
dst + dst_stride_2x, 0, 1);
296 __lasx_xvstelm_d(in1,
dst + dst_stride_3x, 0, 3);
#define DUP4_ARG2(_INS, _IN0, _IN1, _IN2, _IN3, _IN4, _IN5, _IN6, _IN7, _OUT0, _OUT1, _OUT2, _OUT3)
#define DUP4_ARG3(_INS, _IN0, _IN1, _IN2, _IN3, _IN4, _IN5, _IN6, _IN7, _IN8, _IN9, _IN10, _IN11, _OUT0, _OUT1, _OUT2, _OUT3)