版本

menu_open

include/AK/SoundEngine/Platforms/arm_neon/AkSimdShuffle.h

Go to the documentation of this file.
00001 /*******************************************************************************
00002 The content of this file includes portions of the AUDIOKINETIC Wwise Technology
00003 released in source code form as part of the SDK installer package.
00004 
00005 Commercial License Usage
00006 
00007 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
00008 may use this file in accordance with the end user license agreement provided 
00009 with the software or, alternatively, in accordance with the terms contained in a
00010 written agreement between you and Audiokinetic Inc.
00011 
00012 Apache License Usage
00013 
00014 Alternatively, this file may be used under the Apache License, Version 2.0 (the 
00015 "Apache License"); you may not use this file except in compliance with the 
00016 Apache License. You may obtain a copy of the Apache License at 
00017 http://www.apache.org/licenses/LICENSE-2.0.
00018 
00019 Unless required by applicable law or agreed to in writing, software distributed
00020 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
00021 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
00022 the specific language governing permissions and limitations under the License.
00023 
00024   Version: <VERSION>  Build: <BUILDNUMBER>
00025   Copyright (c) <COPYRIGHTYEAR> Audiokinetic Inc.
00026 *******************************************************************************/
00027 
00030 
00031 #ifndef __AK_SIMD_SHUFFLE_H__
00032 #define __AK_SIMD_SHUFFLE_H__
00033 
00034 namespace _AKSIMD_LOCAL
00035 {
00036     // Same as _mm_shuffle_ps( a, b, _MM_SHUFFLE( z, y, x, w ) ). There is no default implementation
00037     // of this template function. Every required combination of zyxw needs to be explicitely implemented
00038     // below.
00039     template< int zyxw > AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32( const AKSIMD_V4F32& a, const AKSIMD_V4F32& b );
00040 
00041     /* 0 */     template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00042                 {
00043                     //return akshuffle_xxaa( xyzw, abcd );
00044                     AKSIMD_V2F32 xx = vdup_lane_f32( vget_low_f32( xyzw ), 0 );
00045                     AKSIMD_V2F32 aa = vdup_lane_f32( vget_low_f32( abcd ), 0 );
00046                     AKSIMD_V4F32 xxaa = vcombine_f32( xx, aa );
00047                     return xxaa;
00048                 }
00049     /* 1 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxaa( xyzw, abcd ); }
00050     /* 2 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxaa( xyzw, abcd ); }
00051     /* 3 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxaa( xyzw, abcd ); }
00052     /* 4 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xyaa( xyzw, abcd ); }
00053     /* 5 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yyaa( xyzw, abcd ); }
00054     /* 6 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zyaa( xyzw, abcd ); }
00055     /* 7 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wyaa( xyzw, abcd ); }
00056     /* 8 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzaa( xyzw, abcd ); }
00057     /* 9 */     //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzaa( xyzw, abcd ); }
00058     /* 10 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzaa( xyzw, abcd ); }
00059     /* 11 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzaa( xyzw, abcd ); }
00060     /* 12 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwaa( xyzw, abcd ); }
00061     /* 13 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywaa( xyzw, abcd ); }
00062     /* 14 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwaa( xyzw, abcd ); }
00063     /* 15 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 0, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00064                 {
00065                     //return akshuffle_wwaa( xyzw, abcd );
00066                     AKSIMD_V2F32 ww = vdup_lane_f32( vget_high_f32( xyzw ), 1 );
00067                     AKSIMD_V2F32 aa = vdup_lane_f32( vget_low_f32( abcd ), 0 );
00068                     AKSIMD_V4F32 wwaa = vcombine_f32( ww, aa );
00069                     return wwaa;
00070 
00071                 }
00072     /* 16 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxba( xyzw, abcd ); }
00073     /* 17 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00074                 {
00075                     //return akshuffle_yxba( xyzw, abcd );
00076                     AKSIMD_V2F32 yx = vrev64_f32( vget_low_f32( xyzw ) );
00077                     AKSIMD_V2F32 ba = vrev64_f32( vget_low_f32( abcd ) );
00078                     AKSIMD_V4F32 yxba = vcombine_f32( yx , ba );
00079                     return yxba;
00080                 }
00081     /* 18 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxba( xyzw, abcd ); }
00082     /* 19 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxba( xyzw, abcd ); }
00083     /* 20 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xyba( xyzw, abcd ); }
00084     /* 21 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yyba( xyzw, abcd ); }
00085     /* 22 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zyba( xyzw, abcd ); }
00086     /* 23 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wyba( xyzw, abcd ); }
00087     /* 24 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzba( xyzw, abcd ); }
00088     /* 25 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzba( xyzw, abcd ); }
00089     /* 26 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzba( xyzw, abcd ); }
00090     /* 27 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzba( xyzw, abcd ); }
00091     /* 28 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwba( xyzw, abcd ); }
00092     /* 29 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywba( xyzw, abcd ); }
00093     /* 30 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00094                 {
00095                     //return akshuffle_zwba( xyzw, abcd );
00096                     AKSIMD_V2F32 zw = vget_high_f32( xyzw );
00097                     AKSIMD_V2F32 ba = vrev64_f32( vget_low_f32( abcd ) );
00098                     AKSIMD_V4F32 zwba = vcombine_f32( zw , ba );
00099                     return zwba;
00100                 }
00101     /* 31 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 1, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwba( xyzw, abcd ); }
00102     /* 32 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxca( xyzw, abcd ); }
00103     /* 33 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxca( xyzw, abcd ); }
00104     /* 34 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxca( xyzw, abcd ); }
00105     /* 35 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxca( xyzw, abcd ); }
00106     /* 36 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xyca( xyzw, abcd ); }
00107     /* 37 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yyca( xyzw, abcd ); }
00108     /* 38 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zyca( xyzw, abcd ); }
00109     /* 39 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wyca( xyzw, abcd ); }
00110     /* 40 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzca( xyzw, abcd ); }
00111     /* 41 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzca( xyzw, abcd ); }
00112     /* 42 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzca( xyzw, abcd ); }
00113     /* 43 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzca( xyzw, abcd ); }
00114     /* 44 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwca( xyzw, abcd ); }
00115     /* 45 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywca( xyzw, abcd ); }
00116     /* 46 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwca( xyzw, abcd ); }
00117     /* 47 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 2, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwca( xyzw, abcd ); }
00118     /* 48 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxda( xyzw, abcd ); }
00119     /* 49 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxda( xyzw, abcd ); }
00120     /* 50 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxda( xyzw, abcd ); }
00121     /* 51 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxda( xyzw, abcd ); }
00122     /* 52 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xyda( xyzw, abcd ); }
00123     /* 53 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yyda( xyzw, abcd ); }
00124     /* 54 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00125                 {
00126                     //return akshuffle_zyda( xyzw, abcd );
00127                     AKSIMD_V4F32 bcda = vextq_f32( abcd, abcd, 1 );
00128                     AKSIMD_V4F32 yzwx = vextq_f32( xyzw, xyzw, 1 );
00129                     AKSIMD_V4F32 zyda = vcombine_f32( vrev64_f32( vget_low_f32( yzwx ) ), vget_high_f32( bcda ) );
00130                     return zyda;
00131                 }
00132     /* 55 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wyda( xyzw, abcd ); }
00133     /* 56 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzda( xyzw, abcd ); }
00134     /* 57 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzda( xyzw, abcd ); }
00135     /* 58 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzda( xyzw, abcd ); }
00136     /* 59 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzda( xyzw, abcd ); }
00137     /* 60 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwda( xyzw, abcd ); }
00138     /* 61 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywda( xyzw, abcd ); }
00139     /* 62 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwda( xyzw, abcd ); }
00140     /* 63 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(0, 3, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwda( xyzw, abcd ); }
00141     /* 64 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxab( xyzw, abcd ); }
00142     /* 65 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxab( xyzw, abcd ); }
00143     /* 66 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxab( xyzw, abcd ); }
00144     /* 67 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxab( xyzw, abcd ); }
00145     /* 68 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00146                 {
00147                     //return akshuffle_xyab( xyzw, abcd );
00148                     AKSIMD_V4F32 xyab = vcombine_f32( vget_low_f32( xyzw ) , vget_low_f32( abcd ) );
00149                     return xyab;
00150                 }
00151     /* 69 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yyab( xyzw, abcd ); }
00152     /* 70 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zyab( xyzw, abcd ); }
00153     /* 71 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wyab( xyzw, abcd ); }
00154     /* 72 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzab( xyzw, abcd ); }
00155     /* 73 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00156                 {
00157                     //return akshuffle_yzab( xyzw, abcd );
00158                     AKSIMD_V4F32 yzwx = vextq_f32( xyzw, xyzw, 1 );
00159                     AKSIMD_V2F32 yz = vget_low_f32( yzwx );
00160                     AKSIMD_V2F32 ab = vget_low_f32( abcd );
00161                     AKSIMD_V4F32 yzab = vcombine_f32( yz, ab );
00162                     return yzab;
00163                 }
00164     /* 74 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzab( xyzw, abcd ); }
00165     /* 75 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzab( xyzw, abcd ); }
00166     /* 76 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwab( xyzw, abcd ); }
00167     /* 77 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywab( xyzw, abcd ); }
00168     /* 78 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00169                 {
00170                     //return akshuffle_zwab( xyzw, abcd );
00171                     AKSIMD_V2F32 zw = vget_high_f32( xyzw );
00172                     AKSIMD_V2F32 ab = vget_low_f32( abcd );
00173                     AKSIMD_V4F32 zwab = vcombine_f32( zw, ab );
00174                     return zwab;
00175                 }
00176     /* 79 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 0, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwab( xyzw, abcd ); }
00177     /* 80 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxbb( xyzw, abcd ); }
00178     /* 81 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxbb( xyzw, abcd ); }
00179     /* 82 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxbb( xyzw, abcd ); }
00180     /* 83 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxbb( xyzw, abcd ); }
00181     /* 84 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xybb( xyzw, abcd ); }
00182     /* 85 */    template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00183                 {
00184                     //return akshuffle_yybb( xyzw, abcd );
00185                     AKSIMD_V2F32 yy = vdup_lane_f32( vget_low_f32( xyzw ), 1 );
00186                     AKSIMD_V2F32 bb = vdup_lane_f32( vget_low_f32( abcd ), 1 );
00187                     AKSIMD_V4F32 yybb = vcombine_f32( yy, bb );
00188                     return yybb;
00189                 }
00190     /* 86 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zybb( xyzw, abcd ); }
00191     /* 87 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wybb( xyzw, abcd ); }
00192     /* 88 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzbb( xyzw, abcd ); }
00193     /* 89 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzbb( xyzw, abcd ); }
00194     /* 90 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzbb( xyzw, abcd ); }
00195     /* 91 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzbb( xyzw, abcd ); }
00196     /* 92 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwbb( xyzw, abcd ); }
00197     /* 93 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywbb( xyzw, abcd ); }
00198     /* 94 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwbb( xyzw, abcd ); }
00199     /* 95 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 1, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwbb( xyzw, abcd ); }
00200     /* 96 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxcb( xyzw, abcd ); }
00201     /* 97 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxcb( xyzw, abcd ); }
00202     /* 98 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxcb( xyzw, abcd ); }
00203     /* 99 */    //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxcb( xyzw, abcd ); }
00204     /* 100 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xycb( xyzw, abcd ); }
00205     /* 101 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yycb( xyzw, abcd ); }
00206     /* 102 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zycb( xyzw, abcd ); }
00207     /* 103 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wycb( xyzw, abcd ); }
00208     /* 104 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzcb( xyzw, abcd ); }
00209     /* 105 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzcb( xyzw, abcd ); }
00210     /* 106 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzcb( xyzw, abcd ); }
00211     /* 107 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzcb( xyzw, abcd ); }
00212     /* 108 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwcb( xyzw, abcd ); }
00213     /* 109 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywcb( xyzw, abcd ); }
00214     /* 110 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwcb( xyzw, abcd ); }
00215     /* 111 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 2, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwcb( xyzw, abcd ); }
00216     /* 112 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxdb( xyzw, abcd ); }
00217     /* 113 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxdb( xyzw, abcd ); }
00218     /* 114 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00219                 {
00220                     //return akshuffle_zxdb( xyzw, abcd );
00221 
00222                     float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
00223                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00224                     AKSIMD_V4F32 zxdb = vcombine_f32( vrev64_f32( xz_yw.val[0] ), vrev64_f32( ac_bd.val[1] ) );
00225 
00226                     return zxdb;
00227                 }
00228     /* 115 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxdb( xyzw, abcd ); }
00229     /* 116 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xydb( xyzw, abcd ); }
00230     /* 117 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yydb( xyzw, abcd ); }
00231     /* 118 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zydb( xyzw, abcd ); }
00232     /* 119 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wydb( xyzw, abcd ); }
00233     /* 120 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzdb( xyzw, abcd ); }
00234     /* 121 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzdb( xyzw, abcd ); }
00235     /* 122 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzdb( xyzw, abcd ); }
00236     /* 123 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzdb( xyzw, abcd ); }
00237     /* 124 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwdb( xyzw, abcd ); }
00238     /* 125 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywdb( xyzw, abcd ); }
00239     /* 126 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwdb( xyzw, abcd ); }
00240     /* 127 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(1, 3, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwdb( xyzw, abcd ); }
00241     /* 128 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxac( xyzw, abcd ); }
00242     /* 129 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00243                 {
00244                     //return akshuffle_yxac( xyzw, abcd );
00245                     AKSIMD_V2F32 ac = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) ).val[0];
00246                     AKSIMD_V2F32 yx = vrev64_f32( vget_low_f32( xyzw ) );
00247                     AKSIMD_V4F32 yxac = vcombine_f32( yx, ac );
00248                     return yxac;
00249                 }
00250     /* 130 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxac( xyzw, abcd ); }
00251     /* 131 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxac( xyzw, abcd ); }
00252     /* 132 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xyac( xyzw, abcd ); }
00253     /* 133 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yyac( xyzw, abcd ); }
00254     /* 134 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zyac( xyzw, abcd ); }
00255     /* 135 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wyac( xyzw, abcd ); }
00256     /* 136 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00257                 {
00258                     //return akshuffle_xzac( xyzw, abcd );
00259                     float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
00260                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00261                     AKSIMD_V4F32 xzac = vcombine_f32( xz_yw.val[0], ac_bd.val[0] );
00262                     return xzac;
00263                 }
00264     /* 137 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00265                 {
00266                     //return akshuffle_yzac( xyzw, abcd );
00267                     AKSIMD_V4F32 yzwx = vextq_f32( xyzw, xyzw, 1 );
00268                     AKSIMD_V2F32 yz = vget_low_f32( yzwx );
00269                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00270                     AKSIMD_V4F32 yzac = vcombine_f32( yz, ac_bd.val[0] );
00271                     return yzac;
00272                 }
00273     /* 138 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzac( xyzw, abcd ); }
00274     /* 139 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzac( xyzw, abcd ); }
00275     /* 140 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00276                 {
00277                     //return akshuffle_xwac( xyzw, abcd );
00278                     AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
00279                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00280                     AKSIMD_V4F32 xwac = vcombine_f32( xw, ac_bd.val[0] );;
00281                     return xwac;
00282                 }
00283     /* 141 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00284                 {
00285                     //return akshuffle_ywac( xyzw, abcd );
00286                     float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
00287                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00288                     AKSIMD_V4F32 ywac = vcombine_f32( xz_yw.val[1], ac_bd.val[0] );
00289                     return ywac;
00290                 }
00291     /* 142 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwac( xyzw, abcd ); }
00292     /* 143 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 0, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwac( xyzw, abcd ); }
00293     /* 144 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxbc( xyzw, abcd ); }
00294     /* 145 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxbc( xyzw, abcd ); }
00295     /* 146 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxbc( xyzw, abcd ); }
00296     /* 147 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxbc( xyzw, abcd ); }
00297     /* 148 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xybc( xyzw, abcd ); }
00298     /* 149 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yybc( xyzw, abcd ); }
00299     /* 150 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zybc( xyzw, abcd ); }
00300     /* 151 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wybc( xyzw, abcd ); }
00301     /* 152 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzbc( xyzw, abcd ); }
00302     /* 153 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00303                 {
00304                     //return akshuffle_yzbc( xyzw, abcd );
00305                     AKSIMD_V4F32 yzwx = vextq_f32( xyzw, xyzw, 1 );
00306                     AKSIMD_V2F32 yz = vget_low_f32( yzwx );
00307                     AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
00308                     AKSIMD_V4F32 yzbc = vcombine_f32( yz , bc );
00309                     return yzbc;
00310                 }
00311     /* 154 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzbc( xyzw, abcd ); }
00312     /* 155 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzbc( xyzw, abcd ); }
00313     /* 156 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00314                 {
00315                     //return akshuffle_xwbc( xyzw, abcd );
00316                     AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
00317                     AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
00318                     AKSIMD_V4F32 xwbc = vcombine_f32( xw, bc );
00319                     return xwbc;
00320                 }
00321     /* 157 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00322                 {
00323                     //return akshuffle_ywbc( xyzw, abcd );
00324                     AKSIMD_V2F32 yw = vext_f32( vget_low_f32( xyzw ) , vrev64_f32( vget_high_f32( xyzw ) ), 1 );
00325                     AKSIMD_V2F32 bc = vext_f32( vget_low_f32( abcd ) , vget_high_f32( abcd ) , 1 );
00326                     AKSIMD_V4F32 ywbc = vcombine_f32( yw, bc );
00327                     return ywbc;
00328                 }
00329     /* 158 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwbc( xyzw, abcd ); }
00330     /* 159 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 1, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwbc( xyzw, abcd ); }
00331     /* 160 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00332                 { 
00333                     AKSIMD_V2F32 xx = vdup_lane_f32( vget_low_f32( xyzw ), 0 );
00334                     AKSIMD_V2F32 cc = vdup_lane_f32( vget_high_f32( abcd ), 0 );
00335                     AKSIMD_V4F32 xxcc = vcombine_f32( xx, cc );
00336                     return xxcc; 
00337                 }
00338     /* 161 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxcc( xyzw, abcd ); }
00339     /* 162 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxcc( xyzw, abcd ); }
00340     /* 163 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxcc( xyzw, abcd ); }
00341     /* 164 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xycc( xyzw, abcd ); }
00342     /* 165 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yycc( xyzw, abcd ); }
00343     /* 166 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zycc( xyzw, abcd ); }
00344     /* 167 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wycc( xyzw, abcd ); }
00345     /* 168 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzcc( xyzw, abcd ); }
00346     /* 169 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzcc( xyzw, abcd ); }
00347     /* 170 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzcc( xyzw, abcd ); }
00348     /* 171 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzcc( xyzw, abcd ); }
00349     /* 172 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwcc( xyzw, abcd ); }
00350     /* 173 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywcc( xyzw, abcd ); }
00351     /* 174 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwcc( xyzw, abcd ); }
00352     /* 175 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 2, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwcc( xyzw, abcd ); }
00353     /* 176 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxdc( xyzw, abcd ); }
00354     /* 177 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) 
00355                 { 
00356                     AKSIMD_V2F32 yx = vrev64_f32( vget_low_f32( xyzw ) );
00357                     AKSIMD_V2F32 dc = vrev64_f32( vget_high_f32( abcd ) );
00358                     AKSIMD_V4F32 yxdc = vcombine_f32( yx, dc );
00359                     return yxdc; 
00360                 }
00361     /* 178 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxdc( xyzw, abcd ); }
00362     /* 179 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxdc( xyzw, abcd ); }
00363     /* 180 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xydc( xyzw, abcd ); }
00364     /* 181 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yydc( xyzw, abcd ); }
00365     /* 182 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zydc( xyzw, abcd ); }
00366     /* 183 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wydc( xyzw, abcd ); }
00367     /* 184 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzdc( xyzw, abcd ); }
00368     /* 185 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzdc( xyzw, abcd ); }
00369     /* 186 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzdc( xyzw, abcd ); }
00370     /* 187 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00371                 {
00372                     //return akshuffle_wzdc( xyzw, abcd );
00373                     AKSIMD_V2F32 wz = vrev64_f32( vget_high_f32( xyzw ) );
00374                     AKSIMD_V2F32 dc = vrev64_f32( vget_high_f32( abcd ) );
00375                     AKSIMD_V4F32 wzdc = vcombine_f32( wz , dc );
00376                     return wzdc;
00377                 }
00378     /* 188 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwdc( xyzw, abcd ); }
00379     /* 189 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywdc( xyzw, abcd ); }
00380     /* 190 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwdc( xyzw, abcd ); }
00381     /* 191 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(2, 3, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwdc( xyzw, abcd ); }
00382     /* 192 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxad( xyzw, abcd ); }
00383     /* 193 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxad( xyzw, abcd ); }
00384     /* 194 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxad( xyzw, abcd ); }
00385     /* 195 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxad( xyzw, abcd ); }
00386     /* 196 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xyad( xyzw, abcd ); }
00387     /* 197 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yyad( xyzw, abcd ); }
00388     /* 198 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zyad( xyzw, abcd ); }
00389     /* 199 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wyad( xyzw, abcd ); }
00390     /* 200 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00391                 {
00392                     //return akshuffle_xzad( xyzw, abcd );
00393                     AKSIMD_V2F32 xz = vext_f32( vrev64_f32( vget_low_f32( xyzw ) ), vget_high_f32( xyzw ) , 1 );
00394                     AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
00395                     AKSIMD_V4F32 xzad = vcombine_f32( xz , ad );
00396                     return xzad;
00397                 }
00398     /* 201 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00399                 {
00400                     //return akshuffle_yzad( xyzw, abcd );
00401                     AKSIMD_V4F32 yzwx = vextq_f32( xyzw, xyzw, 1 );
00402                     AKSIMD_V2F32 yz = vget_low_f32( yzwx );
00403                     AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
00404                     AKSIMD_V4F32 yzad = vcombine_f32( yz , ad );
00405                     return yzad;
00406                 }
00407     /* 202 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzad( xyzw, abcd ); }
00408     /* 203 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzad( xyzw, abcd ); }
00409     /* 204 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00410                 {
00411                     //return akshuffle_xwad( xyzw, abcd );
00412                     AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
00413                     AKSIMD_V2F32 ad = vrev64_f32( vext_f32( vget_high_f32( abcd ) , vget_low_f32( abcd ) , 1 ) );
00414                     AKSIMD_V4F32 xwad = vcombine_f32( xw, ad );
00415                     return xwad;
00416                 }
00417     /* 205 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywad( xyzw, abcd ); }
00418     /* 206 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwad( xyzw, abcd ); }
00419     /* 207 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 0, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwad( xyzw, abcd ); }
00420     /* 208 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxbd( xyzw, abcd ); }
00421     /* 209 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxbd( xyzw, abcd ); }
00422     /* 210 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxbd( xyzw, abcd ); }
00423     /* 211 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxbd( xyzw, abcd ); }
00424     /* 212 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xybd( xyzw, abcd ); }
00425     /* 213 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yybd( xyzw, abcd ); }
00426     /* 214 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zybd( xyzw, abcd ); }
00427     /* 215 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wybd( xyzw, abcd ); }
00428     /* 216 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00429                 {
00430                     //return akshuffle_xzbd( xyzw, abcd );
00431                     float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
00432                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00433                     AKSIMD_V4F32 xzbd = vcombine_f32( xz_yw.val[0], ac_bd.val[1] );
00434                     return xzbd;                
00435                 }
00436     /* 217 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00437                 {
00438                     //return akshuffle_yzbd( xyzw, abcd );
00439                     AKSIMD_V4F32 yzwx = vextq_f32( xyzw, xyzw, 1 );
00440                     AKSIMD_V2F32 yz = vget_low_f32( yzwx );
00441                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00442                     AKSIMD_V4F32 yzbd = vcombine_f32( yz, ac_bd.val[1] );
00443                     return yzbd;
00444                 }
00445     /* 218 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzbd( xyzw, abcd ); }
00446     /* 219 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzbd( xyzw, abcd ); }
00447     /* 220 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00448                 {
00449                     //return akshuffle_xwbd( xyzw, abcd );
00450                     AKSIMD_V2F32 xw = vrev64_f32( vext_f32( vget_high_f32( xyzw ) , vget_low_f32( xyzw ) , 1 ) );
00451                     AKSIMD_V2F32 bd = vext_f32( vget_low_f32( abcd ) , vrev64_f32( vget_high_f32( abcd ) ), 1 );
00452 
00453                     AKSIMD_V4F32 xwbd = vcombine_f32( xw, bd );
00454                     return xwbd;
00455                 }
00456     /* 221 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00457                 {
00458                     //return akshuffle_ywbd( xyzw, abcd );
00459                     float32x2x2_t xz_yw = vtrn_f32( vget_low_f32( xyzw ), vget_high_f32( xyzw ) );
00460                     float32x2x2_t ac_bd = vtrn_f32( vget_low_f32( abcd ), vget_high_f32( abcd ) );
00461                     AKSIMD_V4F32 ywbd = vcombine_f32( xz_yw.val[1], ac_bd.val[1] );
00462                     return ywbd;
00463                 }
00464     /* 222 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwbd( xyzw, abcd ); }
00465     /* 223 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 1, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwbd( xyzw, abcd ); }
00466     /* 224 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxcd( xyzw, abcd ); }
00467     /* 225 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxcd( xyzw, abcd ); }
00468     /* 226 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxcd( xyzw, abcd ); }
00469     /* 227 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxcd( xyzw, abcd ); }
00470     /* 228 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00471                 {
00472                     //return akshuffle_xycd( xyzw, abcd );
00473                     AKSIMD_V2F32 xy = vget_low_f32( xyzw );
00474                     AKSIMD_V2F32 cd = vget_high_f32( abcd );
00475                     return vcombine_f32( xy, cd );
00476                 }
00477     /* 229 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yycd( xyzw, abcd ); }
00478     /* 230 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zycd( xyzw, abcd ); }
00479     /* 231 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wycd( xyzw, abcd ); }
00480     /* 232 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzcd( xyzw, abcd ); }
00481     /* 233 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzcd( xyzw, abcd ); }
00482     /* 234 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzcd( xyzw, abcd ); }
00483     /* 235 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzcd( xyzw, abcd ); }
00484     /* 236 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwcd( xyzw, abcd ); }
00485     /* 237 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywcd( xyzw, abcd ); }
00486     /* 238 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00487                 {
00488                     //return akshuffle_zwcd( xyzw, abcd );
00489                     AKSIMD_V2F32 zw = vget_high_f32( xyzw );
00490                     AKSIMD_V2F32 cd = vget_high_f32( abcd );
00491                     AKSIMD_V4F32 zwcd = vcombine_f32( zw , cd );
00492                     return zwcd;
00493                 }
00494     /* 239 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 2, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wwcd( xyzw, abcd ); }
00495     /* 240 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 0, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xxdd( xyzw, abcd ); }
00496     /* 241 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 0, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yxdd( xyzw, abcd ); }
00497     /* 242 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 0, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zxdd( xyzw, abcd ); }
00498     /* 243 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 0, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wxdd( xyzw, abcd ); }
00499     /* 244 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 1, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xydd( xyzw, abcd ); }
00500     /* 245 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 1, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) 
00501                 {   
00502                     AKSIMD_V2F32 yy = vdup_lane_f32( vget_low_f32( xyzw ), 1 );         
00503                     AKSIMD_V2F32 dd = vdup_lane_f32( vget_high_f32( abcd ), 1 );
00504                     AKSIMD_V4F32 yydd = vcombine_f32( yy, dd );
00505                     return yydd; 
00506                 }
00507     /* 246 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 1, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zydd( xyzw, abcd ); }
00508     /* 247 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 1, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wydd( xyzw, abcd ); }
00509     /* 248 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 2, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xzdd( xyzw, abcd ); }
00510     /* 249 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 2, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_yzdd( xyzw, abcd ); }
00511     /* 250 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 2, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zzdd( xyzw, abcd ); }
00512     /* 251 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 2, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_wzdd( xyzw, abcd ); }
00513     /* 252 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 3, 0)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_xwdd( xyzw, abcd ); }
00514     /* 253 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 3, 1)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_ywdd( xyzw, abcd ); }
00515     /* 254 */   //template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 3, 2)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd ) { return akshuffle_zwdd( xyzw, abcd ); }
00516     /* 255 */   template<> AkForceInline AKSIMD_V4F32 SHUFFLE_V4F32<AKSIMD_SHUFFLE(3, 3, 3, 3)>( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd )
00517                 {
00518                     //return akshuffle_wwdd( xyzw, abcd );
00519                     AKSIMD_V2F32 ww = vdup_lane_f32( vget_high_f32( xyzw ), 1 );
00520                     AKSIMD_V2F32 dd = vdup_lane_f32( vget_high_f32( abcd ), 1 );
00521                     AKSIMD_V4F32 wwdd = vcombine_f32( ww, dd );
00522                     return wwdd;
00523                 }
00524 }
00525 
00526 #endif // __AK_SIMD_SHUFFLE_H__

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅