15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_IFELSEPACK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_IFELSEPACK_H__ 33 typename boost::enable_if_c<boost::is_integral<T>::value>::type
36 static IPSDK_FORCEINLINE
43 cast<eInstructionSet::eIS_Avx2>(mask, packFromMask);
49 static IPSDK_FORCEINLINE
57 cast<eInstructionSet::eIS_Avx2>(mask, packFromMask);
59 bitwiseSelect<eInstructionSet::eIS_Avx2>(packFromMask, in1, in2, out);
66 static IPSDK_FORCEINLINE
73 cast<eInstructionSet::eIS_Avx2>(mask, packFromMask);
75 out._val[0] = _mm256_blendv_ps(in2._val[0], in1._val[0],
76 packFromMask._val[0]);
77 out._val[1] = _mm256_blendv_ps(in2._val[1], in1._val[1],
78 packFromMask._val[1]);
79 out._val[2] = _mm256_blendv_ps(in2._val[2], in1._val[2],
80 packFromMask._val[2]);
81 out._val[3] = _mm256_blendv_ps(in2._val[3], in1._val[3],
82 packFromMask._val[3]);
87 static IPSDK_FORCEINLINE
95 cast<eInstructionSet::eIS_Avx2>(mask, packFromMask);
97 out._val[0] = _mm256_blendv_ps(in2._val[0], in1._val[0],
98 packFromMask._val[0]);
99 out._val[1] = _mm256_blendv_ps(in2._val[1], in1._val[1],
100 packFromMask._val[1]);
101 out._val[2] = _mm256_blendv_ps(in2._val[2], in1._val[2],
102 packFromMask._val[2]);
103 out._val[3] = _mm256_blendv_ps(in2._val[3], in1._val[3],
104 packFromMask._val[3]);
111 static IPSDK_FORCEINLINE
118 cast<eInstructionSet::eIS_Avx2>(mask, packFromMask);
120 out._val[0] = _mm256_blendv_pd(in2._val[0], in1._val[0],
121 packFromMask._val[0]);
122 out._val[1] = _mm256_blendv_pd(in2._val[1], in1._val[1],
123 packFromMask._val[1]);
124 out._val[2] = _mm256_blendv_pd(in2._val[2], in1._val[2],
125 packFromMask._val[2]);
126 out._val[3] = _mm256_blendv_pd(in2._val[3], in1._val[3],
127 packFromMask._val[3]);
128 out._val[4] = _mm256_blendv_pd(in2._val[4], in1._val[4],
129 packFromMask._val[4]);
130 out._val[5] = _mm256_blendv_pd(in2._val[5], in1._val[5],
131 packFromMask._val[5]);
132 out._val[6] = _mm256_blendv_pd(in2._val[6], in1._val[6],
133 packFromMask._val[6]);
134 out._val[7] = _mm256_blendv_pd(in2._val[7], in1._val[7],
135 packFromMask._val[7]);
140 static IPSDK_FORCEINLINE
148 cast<eInstructionSet::eIS_Avx2>(mask, packFromMask);
150 out._val[0] = _mm256_blendv_pd(in2._val[0], in1._val[0],
151 packFromMask._val[0]);
152 out._val[1] = _mm256_blendv_pd(in2._val[1], in1._val[1],
153 packFromMask._val[1]);
154 out._val[2] = _mm256_blendv_pd(in2._val[2], in1._val[2],
155 packFromMask._val[2]);
156 out._val[3] = _mm256_blendv_pd(in2._val[3], in1._val[3],
157 packFromMask._val[3]);
158 out._val[4] = _mm256_blendv_pd(in2._val[4], in1._val[4],
159 packFromMask._val[4]);
160 out._val[5] = _mm256_blendv_pd(in2._val[5], in1._val[5],
161 packFromMask._val[5]);
162 out._val[6] = _mm256_blendv_pd(in2._val[6], in1._val[6],
163 packFromMask._val[6]);
164 out._val[7] = _mm256_blendv_pd(in2._val[7], in1._val[7],
165 packFromMask._val[7]);
176 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_IFELSEPACK_H__ 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>
structure containing set of masks for vectorized operations
Definition: BaseMaskPackDecl.h:29
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
Definition: BaseMaskPack.h:31
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Definition of import/export macro for library.
IPSDK_FORCEINLINE PackT bitwiseSelect(const PackT &mask, const PackT &in1, const PackT &in2)
bitwiseSelect function; vectorized arithmetic addition of data contained in 2 Register structures ...
Definition: bitwiseSelect.h:37
Definition: BasePack.h:37
Definition: IfElsePack.h:30
float ipReal32
Base types definition.
Definition: BaseTypes.h:56
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29