15 #ifndef __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_SSE2_SHIFTRIGHTPACK_H__ 16 #define __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_SSE2_SHIFTRIGHTPACK_H__ 38 static IPSDK_FORCEINLINE
44 out._val[0] = _mm_srli_epi16(in._val[0], nbBits);
45 out._val[1] = _mm_srli_epi16(in._val[1], nbBits);
49 static IPSDK_FORCEINLINE
55 out._val[0] = _mm_srli_epi16(in._val[0], nbBits);
56 out._val[1] = _mm_srli_epi16(in._val[1], nbBits);
65 static IPSDK_FORCEINLINE
71 out._val[0] = _mm_srai_epi16(in._val[0], nbBits);
72 out._val[1] = _mm_srai_epi16(in._val[1], nbBits);
76 static IPSDK_FORCEINLINE
82 out._val[0] = _mm_srai_epi16(in._val[0], nbBits);
83 out._val[1] = _mm_srai_epi16(in._val[1], nbBits);
94 static IPSDK_FORCEINLINE
100 out._val[0] = _mm_srli_epi32(in._val[0], nbBits);
101 out._val[1] = _mm_srli_epi32(in._val[1], nbBits);
102 out._val[2] = _mm_srli_epi32(in._val[2], nbBits);
103 out._val[3] = _mm_srli_epi32(in._val[3], nbBits);
107 static IPSDK_FORCEINLINE
113 out._val[0] = _mm_srli_epi32(in._val[0], nbBits);
114 out._val[1] = _mm_srli_epi32(in._val[1], nbBits);
115 out._val[2] = _mm_srli_epi32(in._val[2], nbBits);
116 out._val[3] = _mm_srli_epi32(in._val[3], nbBits);
125 static IPSDK_FORCEINLINE
131 out._val[0] = _mm_srai_epi32(in._val[0], nbBits);
132 out._val[1] = _mm_srai_epi32(in._val[1], nbBits);
133 out._val[2] = _mm_srai_epi32(in._val[2], nbBits);
134 out._val[3] = _mm_srai_epi32(in._val[3], nbBits);
138 static IPSDK_FORCEINLINE
144 out._val[0] = _mm_srai_epi32(in._val[0], nbBits);
145 out._val[1] = _mm_srai_epi32(in._val[1], nbBits);
146 out._val[2] = _mm_srai_epi32(in._val[2], nbBits);
147 out._val[3] = _mm_srai_epi32(in._val[3], nbBits);
157 static IPSDK_FORCEINLINE
162 return cast<eInstructionSet::eIS_Sse2, ipUInt8>(
164 cast<eInstructionSet::eIS_Sse2, ipUInt16>(in), nbBits));
167 static IPSDK_FORCEINLINE
174 cast<eInstructionSet::eIS_Sse2>(in, packUInt16);
176 packUInt16, nbBits, packUInt16);
177 cast<eInstructionSet::eIS_Sse2>(packUInt16, out);
187 static IPSDK_FORCEINLINE
192 return cast<eInstructionSet::eIS_Sse2, ipInt8>(
194 cast<eInstructionSet::eIS_Sse2, ipInt16>(in), nbBits));
197 static IPSDK_FORCEINLINE
204 cast<eInstructionSet::eIS_Sse2>(in, packInt16);
206 packInt16, nbBits, packInt16);
207 cast<eInstructionSet::eIS_Sse2>(packInt16, out);
218 #endif // __IPSDKUTIL_INSTRUCTIONSET_LOGICAL_DETAIL_SSE2_SHIFTRIGHTPACK_H__ int8_t ipInt8
Base types definition.
Definition: BaseTypes.h:48
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
cast function; casts a Pack<instructionSet, TIn> to a Pack<instructionSet, TOut>
int32_t ipInt32
Base types definition.
Definition: BaseTypes.h:52
int16_t ipInt16
Base types definition.
Definition: BaseTypes.h:50
uint8_t ipUInt8
Base types definition.
Definition: BaseTypes.h:49
eInstructionSet
Enumerate for processor instruction set description.
Definition: InstructionSetTypes.h:31
function assigning a given value of type T to a given Pack<instructionSet, T>
Definition of import/export macro for library.
Streaming SIMD Extensions 2.
Definition: InstructionSetTypes.h:36
uint16_t ipUInt16
Base types definition.
Definition: BaseTypes.h:51
Definition: ShiftRightPack.h:30
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53
structure containing intrinsic registers used to store vectorized data
Definition: BasePackDecl.h:29