15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_BINARYMASKPACKOP_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_BINARYMASKPACKOP_H__ 31 class OpClass,
typename Scalar>
33 typename boost::enable_if_c<sizeof(T) == 1>::type>
35 static IPSDK_FORCEINLINE
41 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
45 static IPSDK_FORCEINLINE
51 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
54 static IPSDK_FORCEINLINE
59 OpClass::act(inOut1._val[0], inOut2._val[0]);
63 template <
typename T,
class OpClass,
typename Scalar>
65 typename boost::enable_if_c<sizeof(T) == 2>::type>
67 static IPSDK_FORCEINLINE
73 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
74 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
78 static IPSDK_FORCEINLINE
84 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
85 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
88 static IPSDK_FORCEINLINE
93 OpClass::act(inOut1._val[0], inOut2._val[0]);
94 OpClass::act(inOut1._val[1], inOut2._val[1]);
98 template <
typename T,
class OpClass,
typename Scalar>
100 typename boost::enable_if_c<sizeof(T) == 4>::type>
102 static IPSDK_FORCEINLINE
108 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
109 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
110 out._val[2] = OpClass::act(in1._val[2], in2._val[2]);
111 out._val[3] = OpClass::act(in1._val[3], in2._val[3]);
115 static IPSDK_FORCEINLINE
121 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
122 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
123 OpClass::act(in1._val[2], in2._val[2], out._val[2]);
124 OpClass::act(in1._val[3], in2._val[3], out._val[3]);
127 static IPSDK_FORCEINLINE
132 OpClass::act(inOut1._val[0], inOut2._val[0]);
133 OpClass::act(inOut1._val[1], inOut2._val[1]);
134 OpClass::act(inOut1._val[2], inOut2._val[2]);
135 OpClass::act(inOut1._val[3], inOut2._val[3]);
139 template <
typename T,
class OpClass,
typename Scalar>
141 typename boost::enable_if_c<sizeof(T) == 8>::type>
143 static IPSDK_FORCEINLINE
149 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
150 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
151 out._val[2] = OpClass::act(in1._val[2], in2._val[2]);
152 out._val[3] = OpClass::act(in1._val[3], in2._val[3]);
153 out._val[4] = OpClass::act(in1._val[4], in2._val[4]);
154 out._val[5] = OpClass::act(in1._val[5], in2._val[5]);
155 out._val[6] = OpClass::act(in1._val[6], in2._val[6]);
156 out._val[7] = OpClass::act(in1._val[7], in2._val[7]);
160 static IPSDK_FORCEINLINE
166 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
167 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
168 OpClass::act(in1._val[2], in2._val[2], out._val[2]);
169 OpClass::act(in1._val[3], in2._val[3], out._val[3]);
170 OpClass::act(in1._val[4], in2._val[4], out._val[4]);
171 OpClass::act(in1._val[5], in2._val[5], out._val[5]);
172 OpClass::act(in1._val[6], in2._val[6], out._val[6]);
173 OpClass::act(in1._val[7], in2._val[7], out._val[7]);
176 static IPSDK_FORCEINLINE
181 OpClass::act(inOut1._val[0], inOut2._val[0]);
182 OpClass::act(inOut1._val[1], inOut2._val[1]);
183 OpClass::act(inOut1._val[2], inOut2._val[2]);
184 OpClass::act(inOut1._val[3], inOut2._val[3]);
185 OpClass::act(inOut1._val[4], inOut2._val[4]);
186 OpClass::act(inOut1._val[5], inOut2._val[5]);
187 OpClass::act(inOut1._val[6], inOut2._val[6]);
188 OpClass::act(inOut1._val[7], inOut2._val[7]);
199 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX2_BINARYMASKPACKOP_H__ Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: BinaryMaskPackOp.h:30
Definition: BaseMaskPack.h:31
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48
Predefined types associated to instruction set management.
Definition of import/export macro for library.