Wwise SDK 2019.2.15
_platforms_2_generic_2_ak_simd_8h_source
Version
menu_open
link
Wwise SDK 2019.2.15
|
AkSimd.h
Go to the documentation of this file.
53 typedef struct { AkInt32 m_data[4]; } AKSIMD_V4I32_UNALIGNED; ///< Unaligned Vector of 4 32-bit signed integers
54 typedef struct { AkUInt32 m_data[4]; } AKSIMD_V4UI32_UNALIGNED; ///< Unaligned Vector of 4 32-bit signed integers
55 typedef struct { AkReal32 m_data[2]; } AKSIMD_V2F32_UNALIGNED; ///< Unaligned Vector of 2 32-bit floats
56 typedef struct { AkReal32 m_data[4]; } AKSIMD_V4F32_UNALIGNED; ///< Unaligned Vector of 4 32-bit floats
66 #define AKSIMD_ARCHCACHELINESIZE (32) ///< Assumed cache line width for architectures on this platform
67 #define AKSIMD_ARCHMAXPREFETCHSIZE (512) ///< Use this to control how much prefetching maximum is desirable (assuming 8-way cache)
69 #define AKSIMD_PREFETCHMEMORY( __offset__, __add__ )
244 AkForceInline AKSIMD_V4I32 AKSIMD_AND_V4I32( const AKSIMD_V4I32& in_vec1, const AKSIMD_V4I32& in_vec2 )
257 AkForceInline AKSIMD_V4I32 AKSIMD_CMPGT_V8I16( const AKSIMD_V4I32& in_vec1, const AKSIMD_V4I32& in_vec2 )
279 AkForceInline AKSIMD_V4UI32 AKSIMD_CMPLE_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
291 AkForceInline AKSIMD_V4F32 AKSIMD_GTEQ_V4F32(const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2)
303 AkForceInline AKSIMD_V4F32 AKSIMD_GT_V4F32(const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2)
315 AkForceInline AKSIMD_V4F32 AKSIMD_LTEQ_V4F32(const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2)
327 AkForceInline AKSIMD_V4F32 AKSIMD_LT_V4F32(const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2)
339 AkForceInline AKSIMD_V4F32 AKSIMD_EQ_V4F32(const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2)
351 AkForceInline AKSIMD_V4F32 AKSIMD_XOR_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
383 AkForceInline AKSIMD_V4I32 AKSIMD_SHIFTRIGHTARITH_V4I32( AKSIMD_V4I32 in_vector, int in_shiftBy)
401 AkForceInline AKSIMD_V4F32 AKSIMD_SUB_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
417 AkForceInline AKSIMD_V4F32 AKSIMD_SUB_SS_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
430 AkForceInline AKSIMD_V4F32 AKSIMD_ADD_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
442 AkForceInline AKSIMD_V4F32 AKSIMD_DIV_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
454 AkForceInline AKSIMD_V2F32 AKSIMD_ADD_V2F32( const AKSIMD_V2F32& in_vec1, const AKSIMD_V2F32& in_vec2 )
480 AkForceInline AKSIMD_V4F32 AKSIMD_MUL_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
492 AkForceInline AKSIMD_V2F32 AKSIMD_MUL_V2F32( const AKSIMD_V2F32& in_vec1, const AKSIMD_V2F32& in_vec2 )
519 #define AKSIMD_MADD_V4F32( __a__, __b__, __c__ ) AKSIMD_ADD_V4F32( AKSIMD_MUL_V4F32( (__a__), (__b__) ), (__c__) )
520 #define AKSIMD_MSUB_V4F32( __a__, __b__, __c__ ) AKSIMD_SUB_V4F32( AKSIMD_MUL_V4F32( (__a__), (__b__) ), (__c__) )
523 #define AKSIMD_MADD_SS_V4F32( __a__, __b__, __c__ ) AKSIMD_ADD_SS_V4F32( AKSIMD_MUL_SS_V4F32( (__a__), (__b__) ), (__c__) )
526 AkForceInline AKSIMD_V4F32 AKSIMD_MIN_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
538 AkForceInline AKSIMD_V2F32 AKSIMD_MIN_V2F32( const AKSIMD_V2F32& in_vec1, const AKSIMD_V2F32& in_vec2 )
549 AkForceInline AKSIMD_V4F32 AKSIMD_MAX_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
561 AkForceInline AKSIMD_V2F32 AKSIMD_MAX_V2F32( const AKSIMD_V2F32& in_vec1, const AKSIMD_V2F32& in_vec2 )
646 AkForceInline AKSIMD_V4I32 AKSIMD_UNPACKLO_VECTOR8I16( const AKSIMD_V4I32& in_vec1, const AKSIMD_V4I32& in_vec2 )
667 AkForceInline AKSIMD_V4I32 AKSIMD_UNPACKHI_VECTOR8I16( const AKSIMD_V4I32& in_vec1, const AKSIMD_V4I32& in_vec2 )
688 AkForceInline AKSIMD_V4F32 AKSIMD_UNPACKLO_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
700 AkForceInline AKSIMD_V4F32 AKSIMD_UNPACKHI_V4F32( const AKSIMD_V4F32& in_vec1, const AKSIMD_V4F32& in_vec2 )
712 AkForceInline AKSIMD_V4I32 AKSIMD_PACKS_V4I32( const AKSIMD_V4I32& in_vec1, const AKSIMD_V4I32& in_vec2 )
750 AkForceInline AKSIMD_V4F32 AKSIMD_SHUFFLE_V4F32( const AKSIMD_V4F32& xyzw, const AKSIMD_V4F32& abcd, int mask )
779 #define AKSIMD_SHUFFLE_BADC( __a__ ) AKSIMD_SHUFFLE_V4F32( (__a__), (__a__), AKSIMD_SHUFFLE(2,3,0,1));
782 #define AKSIMD_SHUFFLE_CDAB( __a__ ) AKSIMD_SHUFFLE_V4F32( (__a__), (__a__), AKSIMD_SHUFFLE(1,0,3,2));
785 #define AKSIMD_SHUFFLE_BCDA( __a__ ) AKSIMD_SHUFFLE_V4F32( (__a__), (__a__), AKSIMD_SHUFFLE(0,3,2,1))
819 /// Cross-platform SIMD multiplication of 2 complex data elements with interleaved real and imaginary parts
820 static AkForceInline AKSIMD_V4F32 AKSIMD_COMPLEXMUL_V4F32( const AKSIMD_V4F32 vCIn1, const AKSIMD_V4F32 vCIn2 )
834 #define AKSIMD_SPLAT_V4F32(var, idx) AKSIMD_SHUFFLE_V4F32(var,var, AKSIMD_SHUFFLE(idx,idx,idx,idx))
840 return AK_SIGN_BIT(in_vec.m_data[0]) | AK_SIGN_BIT(in_vec.m_data[1]) << 1 | AK_SIGN_BIT(in_vec.m_data[2]) << 2 | AK_SIGN_BIT(in_vec.m_data[3]) << 3;
static AkForceInline AKSIMD_V4F32 AKSIMD_CEIL_V4F32(const AKSIMD_V4F32 &x)
Definition: AkSimd.h:853
AkForceInline AKSIMD_V4F32 AKSIMD_EQ_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:339
AkForceInline AKSIMD_V4F32 AKSIMD_LTEQ_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:315
AkForceInline AKSIMD_V4F32 AKSIMD_SQRT_V4F32(const AKSIMD_V4F32 &in_vec)
Definition: AkSimd.h:592
AkForceInline AKSIMD_V4F32 AKSIMD_NEG_V4F32(const AKSIMD_V4F32 &in_vec1)
Definition: AkSimd.h:581
AkForceInline AKSIMD_V4F32 AKSIMD_GTEQ_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:291
AkForceInline AKSIMD_V2F32 AKSIMD_MUL_V2F32(const AKSIMD_V2F32 &in_vec1, const AKSIMD_V2F32 &in_vec2)
Definition: AkSimd.h:492
AkForceInline AKSIMD_V2F32 AKSIMD_SET_V2F32(AKSIMD_F32 in_value)
Definition: AkSimd.h:126
AkForceInline AKSIMD_V4I32 AKSIMD_TRUNCATE_V4F32_TO_V4I32(const AKSIMD_V4F32 &in_from)
Definition: AkSimd.h:225
AkForceInline AKSIMD_V4I32 AKSIMD_PACKS_V4I32(const AKSIMD_V4I32 &in_vec1, const AKSIMD_V4I32 &in_vec2)
Definition: AkSimd.h:760
AkForceInline AKSIMD_V2F32 AKSIMD_ADD_V2F32(const AKSIMD_V2F32 &in_vec1, const AKSIMD_V2F32 &in_vec2)
Definition: AkSimd.h:454
AkForceInline AKSIMD_V4I32 AKSIMD_UNPACKHI_VECTOR8I16(const AKSIMD_V4I32 &in_vec1, const AKSIMD_V4I32 &in_vec2)
Definition: AkSimd.h:667
AkForceInline AKSIMD_V4F32 AKSIMD_SUB_SS_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:417
AkForceInline AKSIMD_V4F32 AKSIMD_MAX_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:549
AkForceInline AKSIMD_V2F32 AKSIMD_MAX_V2F32(const AKSIMD_V2F32 &in_vec1, const AKSIMD_V2F32 &in_vec2)
Definition: AkSimd.h:561
AkForceInline AKSIMD_V4F32 AKSIMD_SUB_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:401
Definition: AkSimd.h:56
AkForceInline AKSIMD_V4F32 AKSIMD_CONVERT_V4I32_TO_V4F32(const AKSIMD_V4I32 &in_from)
Definition: AkSimd.h:214
Definition: AkSimd.h:45
static AkForceInline int AKSIMD_MASK_V4F32(const AKSIMD_V4F32 &in_vec)
Definition: AkSimd.h:838
Definition: AkSimd.h:54
Definition: AkSimd.h:49
AkForceInline AKSIMD_V4F32 AKSIMD_RSQRT_V4F32(const AKSIMD_V4F32 &in_vec)
Vector reciprocal square root approximation 1/sqrt(a), or equivalently, sqrt(1/a)
Definition: AkSimd.h:606
#define AKSIMD_SHUFFLE_BADC(__a__)
Swap the 2 lower floats together and the 2 higher floats together.
Definition: AkSimd.h:779
AkForceInline AKSIMD_V4F32 AKSIMD_XOR_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:351
AkForceInline AKSIMD_V4F32 AKSIMD_LT_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:327
AkForceInline AKSIMD_V4F32 AKSIMD_ADD_SS_V4F32(const AKSIMD_V4F32 &a, const AKSIMD_V4F32 &b)
Definition: AkSimd.h:467
AkForceInline AKSIMD_V2F32 AKSIMD_SQRT_V2F32(const AKSIMD_V2F32 &in_vec)
Definition: AkSimd.h:617
AkForceInline AKSIMD_V4F32 AKSIMD_MIN_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:526
AkForceInline AKSIMD_V4F32 AKSIMD_GT_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:303
AkForceInline AKSIMD_V4UI32 AKSIMD_CMPLE_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Compares for less than or equal (see _mm_cmple_ps)
Definition: AkSimd.h:279
Definition: AkSimd.h:48
AkForceInline AKSIMD_V4F32 AKSIMD_MUL_SS_V4F32(const AKSIMD_V4F32 &a, const AKSIMD_V4F32 &b)
Definition: AkSimd.h:506
AkForceInline AKSIMD_V4F32 AKSIMD_MUL_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:480
AkForceInline AKSIMD_V4F32 AKSIMD_UNPACKLO_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:736
AkForceInline AKSIMD_V4F32 AKSIMD_SHUFFLE_V4F32(const AKSIMD_V4F32 &xyzw, const AKSIMD_V4F32 &abcd, int mask)
Definition: AkSimd.h:750
AkForceInline void AKSIMD_STORE1_V4F32(AKSIMD_F32 *in_pTo, const AKSIMD_V4F32 &in_vec)
Definition: AkSimd.h:201
AkForceInline AKSIMD_V4F32 AKSIMD_DIV_V4F32(AKSIMD_V4F32 a, AKSIMD_V4F32 b)
Rough estimation of division.
Definition: AkSimd.h:607
static AkForceInline AKSIMD_V4F32 AKSIMD_COMPLEXMUL_V4F32(const AKSIMD_V4F32 vCIn1, const AKSIMD_V4F32 vCIn2)
Cross-platform SIMD multiplication of 2 complex data elements with interleaved real and imaginary par...
Definition: AkSimd.h:820
AkForceInline AKSIMD_V4I32 AKSIMD_AND_V4I32(const AKSIMD_V4I32 &in_vec1, const AKSIMD_V4I32 &in_vec2)
Definition: AkSimd.h:244
AkForceInline AKSIMD_V4F32 AKSIMD_ADD_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:430
AkForceInline AKSIMD_V2F32 AKSIMD_MIN_V2F32(const AKSIMD_V2F32 &in_vec1, const AKSIMD_V2F32 &in_vec2)
Definition: AkSimd.h:538
AkForceInline AKSIMD_V4I32 AKSIMD_SHIFTRIGHT_V4I32(AKSIMD_V4I32 in_vector, int in_shiftBy)
Definition: AkSimd.h:373
Definition: AkSimd.h:46
static AkForceInline AKSIMD_V4F32 AKSIMD_HORIZONTALADD_V4F32(AKSIMD_V4F32 vVec)
Definition: AkSimd.h:810
Definition: AkSimd.h:55
AkForceInline AKSIMD_V4F32 AKSIMD_LOAD1_V4F32(AKSIMD_F32 in_value)
Definition: AkSimd.h:102
AkForceInline AKSIMD_V4I32 AKSIMD_CMPGT_V8I16(const AKSIMD_V4I32 &in_vec1, const AKSIMD_V4I32 &in_vec2)
Definition: AkSimd.h:257
AkForceInline AKSIMD_V4F32 AKSIMD_LOAD_SS_V4F32(const AKSIMD_F32 *in_pData)
Definition: AkSimd.h:171
AkForceInline AKSIMD_V4I32 AKSIMD_UNPACKLO_VECTOR8I16(const AKSIMD_V4I32 &in_vec1, const AKSIMD_V4I32 &in_vec2)
Definition: AkSimd.h:646
AkForceInline AKSIMD_V4F32 AKSIMD_ABS_V4F32(const AKSIMD_V4F32 &in_vec1)
Definition: AkSimd.h:571
Definition: AkSimd.h:53
AkForceInline AKSIMD_V4F32 AKSIMD_UNPACKHI_V4F32(const AKSIMD_V4F32 &in_vec1, const AKSIMD_V4F32 &in_vec2)
Definition: AkSimd.h:748
AkForceInline AKSIMD_V4I32 AKSIMD_SHIFTLEFT_V4I32(AKSIMD_V4I32 in_vector, int in_shiftBy)
Definition: AkSimd.h:363
AkForceInline AKSIMD_V4I32 AKSIMD_SHIFTRIGHTARITH_V4I32(AKSIMD_V4I32 in_vector, int in_shiftBy)
Definition: AkSimd.h:383
AkForceInline AKSIMD_V4F32 AKSIMD_SET_V4F32(AKSIMD_F32 in_value)
Definition: AkSimd.h:114
static AkForceInline AKSIMD_V4F32 AKSIMD_RECIP_V4F32(const AKSIMD_V4F32 &v)
Definition: AkSimd.h:843
Was this page helpful?
Need Support?
Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageTell us about your project. We're here to help.
Register your project and we'll help you get started with no strings attached!
Get started with Wwise