Wwise SDK 2024.1.0
|
#include <AK/SoundEngine/Common/AkTypes.h>
#include <AK/SoundEngine/Platforms/SSE/AkSimd.h>
#include <AK/SoundEngine/Platforms/SSE/AkSimdAvx.h>
#include <string.h>
宏定义 | |
#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) |
#define | AKSIMD_DEINTERLEAVELANES_LO_V8I32(a, b) AKSIMD_PERMUTE_2X128_V8I32(a, b, AKSIMD_PERMUTE128(2, 0)) |
Selects the lower of each of the 128b lanes in a and b to be the result ( B A ), ( D C ) -> ( C A ) 更多... | |
#define | AKSIMD_DEINTERLEAVELANES_HI_V8I32(a, b) AKSIMD_PERMUTE_2X128_V8I32(a, b, AKSIMD_PERMUTE128(3, 1)) |
Selects the higher of each of the 128b lanes in a and b to be the result ( B A ), ( D C) -> ( D B ) 更多... | |
#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 更多... | |
AKSIMD integer arithmetic | |
#define | AKSIMD_ADD_V8I32(a, b) _mm256_add_epi32( a, b ) |
Adds the eight integer values of a and b 更多... | |
#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) 更多... | |
#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) 更多... | |
#define | AKSIMD_SUB_V16I16(a, b) _mm256_sub_epi16( a, b ) |
Subtracts each 16b integer of a by b 更多... | |
#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. 更多... | |
#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. 更多... | |
#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) |
AKSIMD - AVX2 implementation
在文件 AkSimdAvx2.h 中定义.