30 #ifndef __AK_SIMD_SHUFFLE_H__
31 #define __AK_SIMD_SHUFFLE_H__
43 AKSIMD_V2F32 xx = vdup_lane_f32( vget_low_f32( xyzw ), 0 );
44 AKSIMD_V2F32 aa = vdup_lane_f32( vget_low_f32( abcd ), 0 );
65 AKSIMD_V2F32 ww = vdup_lane_f32( vget_high_f32( xyzw ), 1 );
66 AKSIMD_V2F32 aa = vdup_lane_f32( vget_low_f32( abcd ), 0 );
128 AKSIMD_V4F32 zyda = vcombine_f32( vrev64_f32( vget_low_f32( yzwx ) ), vget_high_f32( bcda ) );
135 float32x2_t a21 = vget_high_f32(vextq_f32(a, a, 3));
136 float32x2_t b03 = vget_low_f32(vextq_f32(b, b, 3));
137 return vcombine_f32(a21, b03);
152 AKSIMD_V4F32 xyab = vcombine_f32( vget_low_f32( xyzw ) , vget_low_f32( abcd ) );
189 AKSIMD_V2F32 yy = vdup_lane_f32( vget_low_f32( xyzw ), 1 );
190 AKSIMD_V2F32 bb = vdup_lane_f32( vget_low_f32( abcd ), 1 );
226 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
227 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
228 AKSIMD_V4F32 zxdb = vcombine_f32( vrev64_f32( xz_yw.val[0] ), vrev64_f32( ac_bd.val[1] ) );
249 AKSIMD_V2F32 ac = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) ).val[0];
263 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
264 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
265 AKSIMD_V4F32 xzac = vcombine_f32( xz_yw.val[0], ac_bd.val[0] );
273 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
282 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
283 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
290 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
291 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
292 AKSIMD_V4F32 ywac = vcombine_f32( xz_yw.val[1], ac_bd.val[0] );
311 AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
320 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
321 AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
328 AKSIMD_V2F32 yw = vext_f32( vget_low_f32( xyzw ) , vrev64_f32( vget_high_f32( xyzw ) ), 1 );
329 AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
337 AKSIMD_V2F32 xx = vdup_lane_f32( vget_low_f32( xyzw ), 0 );
338 AKSIMD_V2F32 cc = vdup_lane_f32( vget_high_f32( abcd ), 0 );
353 AKSIMD_V2F32 zz = vdup_lane_f32( vget_high_f32( xyzw ), 0 );
354 AKSIMD_V2F32 cc = vdup_lane_f32( vget_high_f32( abcd ), 0 );
403 AKSIMD_V2F32 xz = vext_f32( vrev64_f32( vget_low_f32( xyzw ) ), vget_high_f32( xyzw ) , 1 );
404 AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
413 AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
422 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
423 AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
441 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
442 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
443 AKSIMD_V4F32 xzbd = vcombine_f32( xz_yw.val[0], ac_bd.val[1] );
451 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
460 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
461 AKSIMD_V2F32 bd = vext_f32( vget_low_f32( abcd ) , vrev64_f32( vget_high_f32( abcd ) ), 1 );
469 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
470 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
471 AKSIMD_V4F32 ywbd = vcombine_f32( xz_yw.val[1], ac_bd.val[1] );
485 return vcombine_f32( xy, cd );
512 AKSIMD_V2F32 yy = vdup_lane_f32( vget_low_f32( xyzw ), 1 );
513 AKSIMD_V2F32 dd = vdup_lane_f32( vget_high_f32( abcd ), 1 );
529 AKSIMD_V2F32 ww = vdup_lane_f32( vget_high_f32( xyzw ), 1 );
530 AKSIMD_V2F32 dd = vdup_lane_f32( vget_high_f32( abcd ), 1 );
536 #endif // __AK_SIMD_SHUFFLE_H__