31 #ifndef __AK_SIMD_SHUFFLE_H__
32 #define __AK_SIMD_SHUFFLE_H__
44 AKSIMD_V2F32 xx = vdup_lane_f32( vget_low_f32( xyzw ), 0 );
45 AKSIMD_V2F32 aa = vdup_lane_f32( vget_low_f32( abcd ), 0 );
66 AKSIMD_V2F32 ww = vdup_lane_f32( vget_high_f32( xyzw ), 1 );
67 AKSIMD_V2F32 aa = vdup_lane_f32( vget_low_f32( abcd ), 0 );
129 AKSIMD_V4F32 zyda = vcombine_f32( vrev64_f32( vget_low_f32( yzwx ) ), vget_high_f32( bcda ) );
136 float32x2_t a21 = vget_high_f32(vextq_f32(a, a, 3));
137 float32x2_t b03 = vget_low_f32(vextq_f32(b, b, 3));
138 return vcombine_f32(a21, b03);
153 AKSIMD_V4F32 xyab = vcombine_f32( vget_low_f32( xyzw ) , vget_low_f32( abcd ) );
190 AKSIMD_V2F32 yy = vdup_lane_f32( vget_low_f32( xyzw ), 1 );
191 AKSIMD_V2F32 bb = vdup_lane_f32( vget_low_f32( abcd ), 1 );
227 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
228 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
229 AKSIMD_V4F32 zxdb = vcombine_f32( vrev64_f32( xz_yw.val[0] ), vrev64_f32( ac_bd.val[1] ) );
250 AKSIMD_V2F32 ac = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) ).val[0];
264 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
265 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
266 AKSIMD_V4F32 xzac = vcombine_f32( xz_yw.val[0], ac_bd.val[0] );
274 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
283 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
284 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
291 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
292 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
293 AKSIMD_V4F32 ywac = vcombine_f32( xz_yw.val[1], ac_bd.val[0] );
312 AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
321 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
322 AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
329 AKSIMD_V2F32 yw = vext_f32( vget_low_f32( xyzw ) , vrev64_f32( vget_high_f32( xyzw ) ), 1 );
330 AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
338 AKSIMD_V2F32 xx = vdup_lane_f32( vget_low_f32( xyzw ), 0 );
339 AKSIMD_V2F32 cc = vdup_lane_f32( vget_high_f32( abcd ), 0 );
354 AKSIMD_V2F32 zz = vdup_lane_f32( vget_high_f32( xyzw ), 0 );
355 AKSIMD_V2F32 cc = vdup_lane_f32( vget_high_f32( abcd ), 0 );
404 AKSIMD_V2F32 xz = vext_f32( vrev64_f32( vget_low_f32( xyzw ) ), vget_high_f32( xyzw ) , 1 );
405 AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
414 AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
423 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
424 AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
442 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
443 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
444 AKSIMD_V4F32 xzbd = vcombine_f32( xz_yw.val[0], ac_bd.val[1] );
452 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
461 AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
462 AKSIMD_V2F32 bd = vext_f32( vget_low_f32( abcd ) , vrev64_f32( vget_high_f32( abcd ) ), 1 );
470 float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
471 float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
472 AKSIMD_V4F32 ywbd = vcombine_f32( xz_yw.val[1], ac_bd.val[1] );
486 return vcombine_f32( xy, cd );
513 AKSIMD_V2F32 yy = vdup_lane_f32( vget_low_f32( xyzw ), 1 );
514 AKSIMD_V2F32 dd = vdup_lane_f32( vget_high_f32( abcd ), 1 );
530 AKSIMD_V2F32 ww = vdup_lane_f32( vget_high_f32( xyzw ), 1 );
531 AKSIMD_V2F32 dd = vdup_lane_f32( vget_high_f32( abcd ), 1 );
537 #endif // __AK_SIMD_SHUFFLE_H__