版本

menu_open
Wwise SDK 2022.1.12
AkSimdAvx2.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_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 中定义.


此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅