15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_SHIFTLEFTPACK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_SHIFTLEFTPACK_H__ 38 static IPSDK_FORCEINLINE
44 out._val[0] = _mm256_slli_epi16(in._val[0], nbBits);
45 out._val[1] = _mm256_slli_epi16(in._val[1], nbBits);
49 static IPSDK_FORCEINLINE
55 out._val[0] = _mm256_slli_epi16(in._val[0], nbBits);
56 out._val[1] = _mm256_slli_epi16(in._val[1], nbBits);
65 static IPSDK_FORCEINLINE
71 out._val[0] = _mm256_slli_epi16(in._val[0], nbBits);
72 out._val[1] = _mm256_slli_epi16(in._val[1], nbBits);
76 static IPSDK_FORCEINLINE
82 out._val[0] = _mm256_slli_epi16(in._val[0], nbBits);
83 out._val[1] = _mm256_slli_epi16(in._val[1], nbBits);
92 static IPSDK_FORCEINLINE
98 out._val[0] = _mm256_slli_epi32(in._val[0], nbBits);
99 out._val[1] = _mm256_slli_epi32(in._val[1], nbBits);
100 out._val[2] = _mm256_slli_epi32(in._val[2], nbBits);
101 out._val[3] = _mm256_slli_epi32(in._val[3], nbBits);
105 static IPSDK_FORCEINLINE
111 out._val[0] = _mm256_slli_epi32(in._val[0], nbBits);
112 out._val[1] = _mm256_slli_epi32(in._val[1], nbBits);
113 out._val[2] = _mm256_slli_epi32(in._val[2], nbBits);
114 out._val[3] = _mm256_slli_epi32(in._val[3], nbBits);
123 static IPSDK_FORCEINLINE
129 out._val[0] = _mm256_slli_epi32(in._val[0], nbBits);
130 out._val[1] = _mm256_slli_epi32(in._val[1], nbBits);
131 out._val[2] = _mm256_slli_epi32(in._val[2], nbBits);
132 out._val[3] = _mm256_slli_epi32(in._val[3], nbBits);
136 static IPSDK_FORCEINLINE
142 out._val[0] = _mm256_slli_epi32(in._val[0], nbBits);
143 out._val[1] = _mm256_slli_epi32(in._val[1], nbBits);
144 out._val[2] = _mm256_slli_epi32(in._val[2], nbBits);
145 out._val[3] = _mm256_slli_epi32(in._val[3], nbBits);
155 static IPSDK_FORCEINLINE
160 return cast<eInstructionSet::eIS_Avx2, ipUInt8>(
162 cast<eInstructionSet::eIS_Avx2, ipUInt16>(in), nbBits));
165 static IPSDK_FORCEINLINE
172 cast<eInstructionSet::eIS_Avx2>(in, packUInt16);
174 cast<eInstructionSet::eIS_Avx2>(packUInt16, out);
184 static IPSDK_FORCEINLINE
189 return cast<eInstructionSet::eIS_Avx2, ipInt8>(
191 cast<eInstructionSet::eIS_Avx2, ipInt16>(in), nbBits));
194 static IPSDK_FORCEINLINE
201 cast<eInstructionSet::eIS_Avx2>(in, packInt16);
203 cast<eInstructionSet::eIS_Avx2>(packInt16, out);
214 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_SHIFTLEFTPACK_H__ int8_t ipInt8
Base types definition.
Definition: BaseTypes.h:48
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
cast function; casts a Pack<instructionSet, TIn> to a Pack<instructionSet, TOut>
int32_t ipInt32
Base types definition.
Definition: BaseTypes.h:52
int16_t ipInt16
Base types definition.
Definition: BaseTypes.h:50
uint8_t ipUInt8
Base types definition.
Definition: BaseTypes.h:49
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
function assigning a given value of type T to a given Pack<instructionSet, T>
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Definition of import/export macro for library.
Definition: ShiftLeftPack.h:30
uint16_t ipUInt16
Base types definition.
Definition: BaseTypes.h:51
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29