15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_BINARYPACKOPRETMASK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_BINARYPACKOPRETMASK_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]);
61 OpClass::act(in1._val[0], in2, out._val[0]);
65 template <
typename T,
class OpClass,
typename Scalar>
67 typename boost::enable_if_c<sizeof(T) == 2>::type>
69 static IPSDK_FORCEINLINE
75 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
76 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
80 static IPSDK_FORCEINLINE
86 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
87 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
97 OpClass::act(in1._val[0], in2, out._val[0]);
98 OpClass::act(in1._val[1], in2, out._val[1]);
102 template <
typename T,
class OpClass,
typename Scalar>
104 typename boost::enable_if_c<sizeof(T) == 4>::type>
106 static IPSDK_FORCEINLINE
112 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
113 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
114 out._val[2] = OpClass::act(in1._val[2], in2._val[2]);
115 out._val[3] = OpClass::act(in1._val[3], in2._val[3]);
119 static IPSDK_FORCEINLINE
125 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
126 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
127 OpClass::act(in1._val[2], in2._val[2], out._val[2]);
128 OpClass::act(in1._val[3], in2._val[3], out._val[3]);
138 OpClass::act(in1._val[0], in2, out._val[0]);
139 OpClass::act(in1._val[1], in2, out._val[1]);
140 OpClass::act(in1._val[2], in2, out._val[2]);
141 OpClass::act(in1._val[3], in2, out._val[3]);
145 template <
typename T,
class OpClass,
typename Scalar>
147 typename boost::enable_if_c<sizeof(T) == 8>::type>
149 static IPSDK_FORCEINLINE
155 out._val[0] = OpClass::act(in1._val[0], in2._val[0]);
156 out._val[1] = OpClass::act(in1._val[1], in2._val[1]);
157 out._val[2] = OpClass::act(in1._val[2], in2._val[2]);
158 out._val[3] = OpClass::act(in1._val[3], in2._val[3]);
159 out._val[4] = OpClass::act(in1._val[4], in2._val[4]);
160 out._val[5] = OpClass::act(in1._val[5], in2._val[5]);
161 out._val[6] = OpClass::act(in1._val[6], in2._val[6]);
162 out._val[7] = OpClass::act(in1._val[7], in2._val[7]);
166 static IPSDK_FORCEINLINE
172 OpClass::act(in1._val[0], in2._val[0], out._val[0]);
173 OpClass::act(in1._val[1], in2._val[1], out._val[1]);
174 OpClass::act(in1._val[2], in2._val[2], out._val[2]);
175 OpClass::act(in1._val[3], in2._val[3], out._val[3]);
176 OpClass::act(in1._val[4], in2._val[4], out._val[4]);
177 OpClass::act(in1._val[5], in2._val[5], out._val[5]);
178 OpClass::act(in1._val[6], in2._val[6], out._val[6]);
179 OpClass::act(in1._val[7], in2._val[7], out._val[7]);
189 OpClass::act(in1._val[0], in2, out._val[0]);
190 OpClass::act(in1._val[1], in2, out._val[1]);
191 OpClass::act(in1._val[2], in2, out._val[2]);
192 OpClass::act(in1._val[3], in2, out._val[3]);
193 OpClass::act(in1._val[4], in2, out._val[4]);
194 OpClass::act(in1._val[5], in2, out._val[5]);
195 OpClass::act(in1._val[6], in2, out._val[6]);
196 OpClass::act(in1._val[7], in2, out._val[7]);
207 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX512_BINARYPACKOPRETMASK_H__ Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: BinaryPackOpRetMask.h:31
(including fundation and byte and word instructions)
Definition: InstructionSetTypes.h:51
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Definition: BaseMaskPack.h:30
Predefined types associated to instruction set management.
Definition of import/export macro for library.
Definition: BasePack.h:37