15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_BITWISENOTREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_BITWISENOTREGIMPL_H__ 30 typename AvxType<T>::Type
32 typename boost::enable_if_c<boost::is_integral<T>::value>::type>::act(
33 const typename AvxType<T>::Type& in)
35 const typename AvxType<T>::Type allbits =
36 AssignReg<eInstructionSet::eIS_Avx2, ipUInt8>::act(0xFF);
37 return _mm256_xor_si256(in, allbits);
44 typename boost::enable_if_c<boost::is_integral<T>::value>::type>::act(
45 const typename AvxType<T>::Type& in,
46 typename AvxType<T>::Type& out)
48 typename AvxType<T>::Type allbits;
49 AssignReg<eInstructionSet::eIS_Avx2, ipUInt8>::act(allbits, 0xFF);
50 out = _mm256_xor_si256(in, allbits);
54 AvxType<ipReal32>::Type
55 BitwiseNotReg<eInstructionSet::eIS_Avx2, ipReal32>::act(
56 const AvxType<ipReal32>::Type& in)
58 AvxType<ipUInt8>::Type allbits;
59 AssignReg<eInstructionSet::eIS_Avx2, ipUInt8>::act(allbits, 0xFF);
60 return _mm256_castsi256_ps(_mm256_xor_si256(_mm256_castps_si256(in), allbits));
66 BitwiseNotReg<eInstructionSet::eIS_Avx2, ipReal32>::act(
67 const AvxType<ipReal32>::Type& in,
68 AvxType<ipReal32>::Type& out)
70 AvxType<ipUInt8>::Type allbits;
71 AssignReg<eInstructionSet::eIS_Avx2, ipUInt8>::act(allbits, 0xFF);
72 out = _mm256_castsi256_ps(_mm256_xor_si256(_mm256_castps_si256(in), allbits));
76 AvxType<ipReal64>::Type
77 BitwiseNotReg<eInstructionSet::eIS_Avx2, ipReal64>::act(
78 const AvxType<ipReal64>::Type& in)
80 AvxType<ipUInt8>::Type allbits;
81 AssignReg<eInstructionSet::eIS_Avx2, ipUInt8>::act(allbits, 0xFF);
82 return _mm256_castsi256_pd(_mm256_xor_si256(_mm256_castpd_si256(in), allbits));
88 BitwiseNotReg<eInstructionSet::eIS_Avx2, ipReal64>::act(
89 const AvxType<ipReal64>::Type& in,
90 AvxType<ipReal64>::Type& out)
92 AvxType<ipUInt8>::Type allbits;
93 AssignReg<eInstructionSet::eIS_Avx2, ipUInt8>::act(allbits, 0xFF);
94 out = _mm256_castsi256_pd(_mm256_xor_si256(_mm256_castpd_si256(in), allbits));
106 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_AVX2_BITWISENOTREGIMPL_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Advanced Vector Extensions 2.
Definition: InstructionSetTypes.h:48