15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX512_TOBOOLPACK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX512_TOBOOLPACK_H__ 34 static IPSDK_FORCEINLINE
43 static IPSDK_FORCEINLINE
50 assign<eInstructionSet::eIS_Avx512>(zero, 0);
51 assign<eInstructionSet::eIS_Avx512>(one, 1);
52 isNotEqual<eInstructionSet::eIS_Avx512>(in, zero, nez);
53 cast<eInstructionSet::eIS_Avx512>(nez, out);
54 bitwiseAnd<eInstructionSet::eIS_Avx512>(out, one, out);
57 static IPSDK_FORCEINLINE
63 cast<eInstructionSet::eIS_Avx512>(inMask, in);
71 static IPSDK_FORCEINLINE
80 static IPSDK_FORCEINLINE
87 assign<eInstructionSet::eIS_Avx512>(zero, 0);
88 assign<eInstructionSet::eIS_Avx512>(one, 1);
90 isNotEqual<eInstructionSet::eIS_Avx512>(in, zero, nez);
91 cast<eInstructionSet::eIS_Avx512>(nez, packInt8);
92 bitwiseAnd<eInstructionSet::eIS_Avx512>(packInt8, one, packInt8);
94 cast<eInstructionSet::eIS_Avx512>(packInt8, out);
97 static IPSDK_FORCEINLINE
103 cast<eInstructionSet::eIS_Avx512>(inMask, in);
108 template <
typename T>
110 typename boost::enable_if_c<
111 boost::is_integral<T>::value && sizeof(T) != 1>::type>
113 static IPSDK_FORCEINLINE
121 static IPSDK_FORCEINLINE
128 assign<eInstructionSet::eIS_Avx512>(zero, 0);
129 assign<eInstructionSet::eIS_Avx512>(one, 1);
132 isNotEqual<eInstructionSet::eIS_Avx512>(in, zero, nez);
133 cast<eInstructionSet::eIS_Avx512>(nez, packT);
134 bitwiseAnd<eInstructionSet::eIS_Avx512>(packT, one, packT);
136 cast<eInstructionSet::eIS_Avx512>(packT, out);
139 static IPSDK_FORCEINLINE
145 cast<eInstructionSet::eIS_Avx512>(inMask, in);
153 static IPSDK_FORCEINLINE
161 static IPSDK_FORCEINLINE
167 inCvt._val[0] = _mm512_castps_si512(in._val[0]);
168 inCvt._val[1] = _mm512_castps_si512(in._val[1]);
169 inCvt._val[2] = _mm512_castps_si512(in._val[2]);
170 inCvt._val[3] = _mm512_castps_si512(in._val[3]);
175 static IPSDK_FORCEINLINE
181 cast<eInstructionSet::eIS_Avx512>(inMask, in);
193 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_TOBOOLPACK_H__ int8_t ipInt8
Base types definition.
Definition: BaseTypes.h:48
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
structure containing set of masks for vectorized operations
Definition: BaseMaskPackDecl.h:29
(including fundation and byte and word instructions)
Definition: InstructionSetTypes.h:51
uint8_t ipUInt8
Base types definition.
Definition: BaseTypes.h:49
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
Predefined types for Avx512 instruction set management.
Definition: ToBoolPack.h:30
Definition: BaseMaskPack.h:30
Definition of import/export macro for library.
Definition: BasePack.h:37
float ipReal32
Base types definition.
Definition: BaseTypes.h:56
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29