Wwise SDK 2023.1.5
AkSimdAvx2.h File Reference

Go to the source code of this file.


#define _GATHER_SIM_FETCH(_x)
#define _GATHER_SIM_FETCH(_x)
AKSIMD shuffling
#define AKSIMD_SHUFFLEB_V8I32(a, b)   _mm256_shuffle_epi8(a, b)
#define AKSIMD_BLEND_V16I16(a, b, i)   _mm256_blend_epi16(a, b, i)
#define AKSIMD_INSERT_V2I128(a, m128, idx)   _mm256_inserti128_si256(a, m128, idx)
#define AKSIMD_PERMUTE_2X128_V8I32(a, b, i)   _mm256_permute2x128_si256(a, b, i)
 Selects the lower of each of the 128b lanes in a and b to be the result ( B A ), ( D C ) -> ( C A ) More...
 Selects the higher of each of the 128b lanes in a and b to be the result ( B A ), ( D C) -> ( D B ) More...
#define AKSIMD_PERMUTE_4X64_V8F32(a, i)   _mm256_castpd_ps(_mm256_permute4x64_pd(_mm256_castps_pd(a), i))
AKSIMD conversion
#define AKSIMD_CONVERT_V8I16_TO_V8I32(__vec__)   _mm256_cvtepi16_epi32( (__vec__) )
 Converts the eight signed 16b integer values of a to signed 32-bit integer values. More...
AKSIMD integer arithmetic
#define AKSIMD_ADD_V8I32(a, b)   _mm256_add_epi32( a, b )
 Adds the eight integer values of a and b. More...
#define AKSIMD_CMPLT_V8I32(a, b)   _mm256_cmpgt_epi32( b, a )
#define AKSIMD_CMPGT_V8I32(a, b)   _mm256_cmpgt_epi32( a, b )
#define AKSIMD_OR_V8I32(a, b)   _mm256_or_si256(a,b)
#define AKSIMD_XOR_V8I32(a, b)   _mm256_xor_si256(a,b)
#define AKSIMD_SUB_V8I32(a, b)   _mm256_sub_epi32(a,b)
#define AKSIMD_AND_V8I32(__a__, __b__)   _mm256_and_si256( (__a__), (__b__) )
#define AKSIMD_MULLO_V8I32(a, b)   _mm256_mullo_epi32(a, b)
 Multiplies each 32-bit int value of a by b and returns the lower 32b of the result (no overflow or clamp) More...
#define AKSIMD_MULLO16_V8I32(a, b)   _mm256_mullo_epi16(a, b)
 Multiplies the low 16bits of a by b and stores it in V8I32 (no overflow) More...
#define AKSIMD_SUB_V16I16(a, b)   _mm256_sub_epi16( a, b )
 Subtracts each 16b integer of a by b. More...
#define AKSIMD_CMPGT_V16I16(__a__, __b__)   _mm256_cmpgt_epi16( (__a__), (__b__) )
AKSIMD packing / unpacking
#define AKSIMD_UNPACKLO_VECTOR16I16(a, b)   _mm256_unpacklo_epi16( a, b )
#define AKSIMD_UNPACKHI_VECTOR16I16(a, b)   _mm256_unpackhi_epi16( a, b )
#define AKSIMD_PACKS_V8I32(a, b)   _mm256_packs_epi32( a, b )
AKSIMD shifting
#define AKSIMD_SHIFTLEFT_V8I32(__vec__, __shiftBy__)    _mm256_slli_epi32( (__vec__), (__shiftBy__) )
#define AKSIMD_SHIFTLEFT16_V8I32(__vec__)
#define AKSIMD_SHIFTRIGHT_V8I32(__vec__, __shiftBy__)    _mm256_srli_epi32( (__vec__), (__shiftBy__) )
#define AKSIMD_SHIFTRIGHTARITH_V8I32(__vec__, __shiftBy__)    _mm256_srai_epi32( (__vec__), (__shiftBy__) )


AKSIMD gather
template<typename T , typename Function >
AKSIMD_V8I32 AKSIMD_GATHER_EPI32 (const T *__restrict base_ptr, Function expr)
template<typename T , typename Function >
AKSIMD_V8I32 AKSIMD_GATHER_EPI64 (const T *base_ptr, Function expr)
template<typename T , typename Function >
AKSIMD_V8F32 AKSIMD_GATHER_PS (const T *base_ptr, Function expr)
template<typename T , typename Function >
AKSIMD_V4F64 AKSIMD_GATHER_PD (const T *base_ptr, Function expr)

AKSIMD arithmetic

#define AKSIMD_MADDSUB_V8F32(__a__, __b__, __c__)   _mm256_fmaddsub_ps( (__a__), (__b__), (__c__) )
 Vector multiply-add-sub operation. More...
#define AKSIMD_MSUBADD_V8F32(__a__, __b__, __c__)   _mm256_fmsubadd_ps( (__a__), (__b__), (__c__) )
#define AKSIMD_MADD_V8F32(__a__, __b__, __c__)   _mm256_fmadd_ps( (__a__), (__b__) , (__c__) )
 Vector multiply-add operation. More...
#define AKSIMD_MSUB_V8F32(__a__, __b__, __c__)   _mm256_fmsub_ps( (__a__), (__b__) , (__c__) )
static AkForceInline AKSIMD_V8F32 AKSIMD_COMPLEXMUL_AVX2 (const AKSIMD_V8F32 cIn1, const AKSIMD_V8F32 cIn2)

Detailed Description

AKSIMD - AVX2 implementation

Definition in file AkSimdAvx2.h.

Was this page helpful?

Need Support?

Questions? Problems? Need more info? Contact us, and we can help!

Visit our Support page

Tell 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