15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_TERNARYPACKOP_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_TERNARYPACKOP_H__ 33 typename boost::enable_if_c<sizeof(T) == 1>::type>
43 out._val[0] = OpClass::act(in1._val[0], in2._val[0], in3._val[0]);
55 OpClass::act(in1._val[0], in2._val[0], in3._val[0], out._val[0]);
59 template <
typename T,
class OpClass>
61 typename boost::enable_if_c<sizeof(T) == 2>::type>
71 out._val[0] = OpClass::act(in1._val[0], in2._val[0], in3._val[0]);
72 out._val[1] = OpClass::act(in1._val[1], in2._val[1], in3._val[1]);
84 OpClass::act(in1._val[0], in2._val[0], in3._val[0], out._val[0]);
85 OpClass::act(in1._val[1], in2._val[1], in3._val[1], out._val[1]);
89 template <
typename T,
class OpClass>
91 typename boost::enable_if_c<sizeof(T) == 4>::type>
101 out._val[0] = OpClass::act(in1._val[0], in2._val[0], in3._val[0]);
102 out._val[1] = OpClass::act(in1._val[1], in2._val[1], in3._val[1]);
103 out._val[2] = OpClass::act(in1._val[2], in2._val[2], in3._val[2]);
104 out._val[3] = OpClass::act(in1._val[3], in2._val[3], in3._val[3]);
116 OpClass::act(in1._val[0], in2._val[0], in3._val[0], out._val[0]);
117 OpClass::act(in1._val[1], in2._val[1], in3._val[1], out._val[1]);
118 OpClass::act(in1._val[2], in2._val[2], in3._val[2], out._val[2]);
119 OpClass::act(in1._val[3], in2._val[3], in3._val[3], out._val[3]);
123 template <
typename T,
class OpClass>
125 typename boost::enable_if_c<sizeof(T) == 8>::type>
135 out._val[0] = OpClass::act(in1._val[0], in2._val[0], in3._val[0]);
136 out._val[1] = OpClass::act(in1._val[1], in2._val[1], in3._val[1]);
137 out._val[2] = OpClass::act(in1._val[2], in2._val[2], in3._val[2]);
138 out._val[3] = OpClass::act(in1._val[3], in2._val[3], in3._val[3]);
139 out._val[4] = OpClass::act(in1._val[4], in2._val[4], in3._val[4]);
140 out._val[5] = OpClass::act(in1._val[5], in2._val[5], in3._val[5]);
141 out._val[6] = OpClass::act(in1._val[6], in2._val[6], in3._val[6]);
142 out._val[7] = OpClass::act(in1._val[7], in2._val[7], in3._val[7]);
154 OpClass::act(in1._val[0], in2._val[0], in3._val[0], out._val[0]);
155 OpClass::act(in1._val[1], in2._val[1], in3._val[1], out._val[1]);
156 OpClass::act(in1._val[2], in2._val[2], in3._val[2], out._val[2]);
157 OpClass::act(in1._val[3], in2._val[3], in3._val[3], out._val[3]);
158 OpClass::act(in1._val[4], in2._val[4], in3._val[4], out._val[4]);
159 OpClass::act(in1._val[5], in2._val[5], in3._val[5], out._val[5]);
160 OpClass::act(in1._val[6], in2._val[6], in3._val[6], out._val[6]);
161 OpClass::act(in1._val[7], in2._val[7], in3._val[7], out._val[7]);
172 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_SSE2_TERNARYPACKOP_H__ Definition: BasePack.h:37
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Definition: TernaryPackOp.h:31
Predefined types associated to instruction set management.
Definition of import/export macro for library.
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36