15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_TERNARYPACKOPRETMASK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_TERNARYPACKOPRETMASK_H__ 29 template <
typename T,
class OpClass>
31 typename boost::enable_if_c<sizeof(T) == 4>::type>
33 static IPSDK_FORCEINLINE
40 out._val[0] = OpClass::act(in1._val[0], in2._val[0], in3._val[0]);
41 out._val[1] = OpClass::act(in1._val[1], in2._val[1], in3._val[1]);
42 out._val[2] = OpClass::act(in1._val[2], in2._val[2], in3._val[2]);
43 out._val[3] = OpClass::act(in1._val[3], in2._val[3], in3._val[3]);
47 static IPSDK_FORCEINLINE
54 OpClass::act(in1._val[0], in2._val[0], in3._val[0], out._val[0]);
55 OpClass::act(in1._val[1], in2._val[1], in3._val[1], out._val[1]);
56 OpClass::act(in1._val[2], in2._val[2], in3._val[2], out._val[2]);
57 OpClass::act(in1._val[3], in2._val[3], in3._val[3], out._val[3]);
61 template <
typename T,
class OpClass>
63 typename boost::enable_if_c<sizeof(T) == 8>::type>
65 static IPSDK_FORCEINLINE
72 out._val[0] = OpClass::act(in1._val[0], in2._val[0], in3._val[0]);
73 out._val[1] = OpClass::act(in1._val[1], in2._val[1], in3._val[1]);
74 out._val[2] = OpClass::act(in1._val[2], in2._val[2], in3._val[2]);
75 out._val[3] = OpClass::act(in1._val[3], in2._val[3], in3._val[3]);
76 out._val[4] = OpClass::act(in1._val[0], in2._val[4], in3._val[4]);
77 out._val[5] = OpClass::act(in1._val[1], in2._val[5], in3._val[5]);
78 out._val[6] = OpClass::act(in1._val[2], in2._val[6], in3._val[6]);
79 out._val[7] = OpClass::act(in1._val[3], in2._val[7], in3._val[7]);
83 static IPSDK_FORCEINLINE
90 OpClass::act(in1._val[0], in2._val[0], in3._val[0], out._val[0]);
91 OpClass::act(in1._val[1], in2._val[1], in3._val[1], out._val[1]);
92 OpClass::act(in1._val[2], in2._val[2], in3._val[2], out._val[2]);
93 OpClass::act(in1._val[3], in2._val[3], in3._val[3], out._val[3]);
94 OpClass::act(in1._val[4], in2._val[4], in3._val[4], out._val[4]);
95 OpClass::act(in1._val[5], in2._val[5], in3._val[5], out._val[5]);
96 OpClass::act(in1._val[6], in2._val[6], in3._val[6], out._val[6]);
97 OpClass::act(in1._val[7], in2._val[7], in3._val[7], out._val[7]);
108 #endif // __IPSDKUTIL_INSTRUCTIONSET_DETAIL_AVX_TERNARYPACKOPRETMASK_H__ Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: BaseMaskPack.h:31
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Advanced Vector Extensions.
Definition: InstructionSetTypes.h:44
Predefined types associated to instruction set management.
Definition of import/export macro for library.
Definition: BasePack.h:37
Definition: TernaryPackOpRetMask.h:31