15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_COMMON_IFELSEPACK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_COMMON_IFELSEPACK_H__ 24 #include <boost/mpl/not_equal_to.hpp> 25 #include <boost/mpl/sizeof.hpp> 34 template <eInstructionSet::domain instructionSet,
typename T>
38 typename
boost::enable_if<
39 typename boost::mpl::and_<
40 typename boost::mpl::not_equal_to<
41 boost::mpl::int_<instructionSet>,
42 boost::mpl::int_<eInstructionSet::eIS_Standard>
44 typename boost::mpl::equal_to<
45 boost::mpl::sizeof_<T>,
51 static IPSDK_FORCEINLINE
59 mask._val[0], in1._val[0], in2._val[0]);
63 static IPSDK_FORCEINLINE
71 mask._val[0], in1._val[0], in2._val[0], out._val[0]);
75 template <eInstructionSet::domain instructionSet,
typename T>
79 typename
boost::enable_if<
80 typename boost::mpl::and_<
81 typename boost::mpl::not_equal_to<
82 boost::mpl::int_<instructionSet>,
83 boost::mpl::int_<eInstructionSet::eIS_Standard>
85 typename boost::mpl::equal_to<
86 boost::mpl::sizeof_<T>,
93 static IPSDK_FORCEINLINE
101 mask._val[0], in1._val[0], in2._val[0]);
103 mask._val[1], in1._val[1], in2._val[1]);
107 static IPSDK_FORCEINLINE
115 mask._val[0], in1._val[0], in2._val[0], out._val[0]);
117 mask._val[1], in1._val[1], in2._val[1], out._val[1]);
121 template <eInstructionSet::domain instructionSet,
typename T>
125 typename
boost::enable_if<
126 typename boost::mpl::and_<
127 typename boost::mpl::not_equal_to<
128 boost::mpl::int_<instructionSet>,
129 boost::mpl::int_<eInstructionSet::eIS_Standard>
131 typename boost::mpl::equal_to<
132 boost::mpl::sizeof_<T>,
139 static IPSDK_FORCEINLINE
147 mask._val[0], in1._val[0], in2._val[0]);
149 mask._val[1], in1._val[1], in2._val[1]);
151 mask._val[2], in1._val[2], in2._val[2]);
153 mask._val[3], in1._val[3], in2._val[3]);
157 static IPSDK_FORCEINLINE
165 mask._val[0], in1._val[0], in2._val[0], out._val[0]);
167 mask._val[1], in1._val[1], in2._val[1], out._val[1]);
169 mask._val[2], in1._val[2], in2._val[2], out._val[2]);
171 mask._val[3], in1._val[3], in2._val[3], out._val[3]);
175 template <eInstructionSet::domain instructionSet,
typename T>
179 typename
boost::enable_if<
180 typename boost::mpl::and_<
181 typename boost::mpl::not_equal_to<
182 boost::mpl::int_<instructionSet>,
183 boost::mpl::int_<eInstructionSet::eIS_Standard>
185 typename boost::mpl::equal_to<
186 boost::mpl::sizeof_<T>,
193 static IPSDK_FORCEINLINE
201 mask._val[0], in1._val[0], in2._val[0]);
203 mask._val[1], in1._val[1], in2._val[1]);
205 mask._val[2], in1._val[2], in2._val[2]);
207 mask._val[3], in1._val[3], in2._val[3]);
209 mask._val[4], in1._val[4], in2._val[4]);
211 mask._val[5], in1._val[5], in2._val[5]);
213 mask._val[6], in1._val[6], in2._val[6]);
215 mask._val[7], in1._val[7], in2._val[7]);
219 static IPSDK_FORCEINLINE
227 mask._val[0], in1._val[0], in2._val[0], out._val[0]);
229 mask._val[1], in1._val[1], in2._val[1], out._val[1]);
231 mask._val[2], in1._val[2], in2._val[2], out._val[2]);
233 mask._val[3], in1._val[3], in2._val[3], out._val[3]);
235 mask._val[4], in1._val[4], in2._val[4], out._val[4]);
237 mask._val[5], in1._val[5], in2._val[5], out._val[5]);
239 mask._val[6], in1._val[6], in2._val[6], out._val[6]);
241 mask._val[7], in1._val[7], in2._val[7], out._val[7]);
251 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_COMMON_IFELSEPACK_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
structure containing set of masks for vectorized operations
Definition: BaseMaskPackDecl.h:29
BaseMaskPack class; defines a set of masks; the number of masks in this set depends on the type of th...
Definition: DataItemNodeHdrMacrosDetails.h:48
BasePack class; defines a set of scalars (for instruction set "standard") or registers (for all other...
Definition: PackTypes.h:56
Definition of import/export macro for library.
Definition: IfElseReg.h:33
Definition: IfElsePack.h:30
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29