15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_SSE2_BITWISENOTREGIMPL_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_SSE2_BITWISENOTREGIMPL_H__ 58 typename Sse2Type<T>::Type
60 typename boost::enable_if_c<boost::is_integral<T>::value>::type>::act(
61 const typename Sse2Type<T>::Type& in)
63 const typename Sse2Type<T>::Type allbits =
64 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(0xFF);
65 return _mm_xor_si128(in, allbits);
72 typename boost::enable_if_c<boost::is_integral<T>::value>::type>::act(
73 const typename Sse2Type<T>::Type& in,
74 typename Sse2Type<T>::Type& out)
76 typename Sse2Type<T>::Type allbits;
77 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(allbits, 0xFF);
78 out = _mm_xor_si128(in, allbits);
82 Sse2Type<ipReal32>::Type
83 BitwiseNotReg<eInstructionSet::eIS_Sse2, ipReal32>::act(
84 const Sse2Type<ipReal32>::Type& in)
86 const Sse2Type<ipUInt8>::Type allbits =
87 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(0xFF);
88 return _mm_castsi128_ps(_mm_xor_si128(_mm_castps_si128(in), allbits));
93 BitwiseNotReg<eInstructionSet::eIS_Sse2, ipReal32>::act(
94 const Sse2Type<ipReal32>::Type& in,
95 Sse2Type<ipReal32>::Type& out)
97 Sse2Type<ipUInt8>::Type allbits;
98 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(allbits, 0xFF);
99 out = _mm_castsi128_ps(_mm_xor_si128(_mm_castps_si128(in), allbits));
103 Sse2Type<ipReal64>::Type
104 BitwiseNotReg<eInstructionSet::eIS_Sse2, ipReal64>::act(
105 const Sse2Type<ipReal64>::Type& in)
107 const Sse2Type<ipUInt8>::Type allbits =
108 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(0xFF);
109 return _mm_castsi128_pd(_mm_xor_si128(_mm_castpd_si128(in), allbits));
114 BitwiseNotReg<eInstructionSet::eIS_Sse2, ipReal64>::act(
115 const Sse2Type<ipReal64>::Type& in,
116 Sse2Type<ipReal64>::Type& out)
118 Sse2Type<ipUInt8>::Type allbits;
119 AssignReg<eInstructionSet::eIS_Sse2, ipUInt8>::act(allbits, 0xFF);
120 out = _mm_castsi128_pd(_mm_xor_si128(_mm_castpd_si128(in), allbits));
132 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_SSE2_BITWISENOTREGIMPL_H__ declaration of specialized BitwiseAndReg structure for SSE2 instruction set
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36