Available on x86 or x86-64 only.
Expand description
Streaming SIMD Extensions 4.1 (SSE4.1)
Constants§
- _MM_
FROUND_ CEIL - round up and do not suppress exceptions
- _MM_
FROUND_ CUR_ DIRECTION - use MXCSR.RC; see
vendor::_MM_SET_ROUNDING_MODE
- _MM_
FROUND_ FLOOR - round down and do not suppress exceptions
- _MM_
FROUND_ NEARBYINT - use MXCSR.RC and suppress exceptions; see
vendor::_MM_SET_ROUNDING_MODE
- _MM_
FROUND_ NINT - round to nearest and do not suppress exceptions
- _MM_
FROUND_ NO_ EXC - suppress exceptions
- _MM_
FROUND_ RAISE_ EXC - do not suppress exceptions
- _MM_
FROUND_ RINT - use MXCSR.RC and do not suppress exceptions; see
vendor::_MM_SET_ROUNDING_MODE
- _MM_
FROUND_ TO_ NEAREST_ INT - round to nearest
- _MM_
FROUND_ TO_ NEG_ INF - round down
- _MM_
FROUND_ TO_ POS_ INF - round up
- _MM_
FROUND_ TO_ ZERO - truncate
- _MM_
FROUND_ TRUNC - truncate and do not suppress exceptions
Functions§
- _mm_
blend_ ⚠epi16 sse4.1
- Blend packed 16-bit integers from
a
andb
using the maskIMM8
. - _mm_
blend_ ⚠pd sse4.1
- Blend packed double-precision (64-bit) floating-point elements from
a
andb
using control maskIMM2
- _mm_
blend_ ⚠ps sse4.1
- Blend packed single-precision (32-bit) floating-point elements from
a
andb
using maskIMM4
- _mm_
blendv_ ⚠epi8 sse4.1
- Blend packed 8-bit integers from
a
andb
usingmask
- _mm_
blendv_ ⚠pd sse4.1
- Blend packed double-precision (64-bit) floating-point elements from
a
andb
usingmask
- _mm_
blendv_ ⚠ps sse4.1
- Blend packed single-precision (32-bit) floating-point elements from
a
andb
usingmask
- _mm_
ceil_ ⚠pd sse4.1
- Round the packed double-precision (64-bit) floating-point elements in
a
up to an integer value, and stores the results as packed double-precision floating-point elements. - _mm_
ceil_ ⚠ps sse4.1
- Round the packed single-precision (32-bit) floating-point elements in
a
up to an integer value, and stores the results as packed single-precision floating-point elements. - _mm_
ceil_ ⚠sd sse4.1
- Round the lower double-precision (64-bit) floating-point element in
b
up to an integer value, store the result as a double-precision floating-point element in the lower element of the intrinsic result, and copies the upper element froma
to the upper element of the intrinsic result. - _mm_
ceil_ ⚠ss sse4.1
- Round the lower single-precision (32-bit) floating-point element in
b
up to an integer value, store the result as a single-precision floating-point element in the lower element of the intrinsic result, and copies the upper 3 packed elements froma
to the upper elements of the intrinsic result. - _mm_
cmpeq_ ⚠epi64 sse4.1
- Compares packed 64-bit integers in
a
andb
for equality - _mm_
cvtepi8_ ⚠epi16 sse4.1
- Sign extend packed 8-bit integers in
a
to packed 16-bit integers - _mm_
cvtepi8_ ⚠epi32 sse4.1
- Sign extend packed 8-bit integers in
a
to packed 32-bit integers - _mm_
cvtepi8_ ⚠epi64 sse4.1
- Sign extend packed 8-bit integers in the low 8 bytes of
a
to packed 64-bit integers - _mm_
cvtepi16_ ⚠epi32 sse4.1
- Sign extend packed 16-bit integers in
a
to packed 32-bit integers - _mm_
cvtepi16_ ⚠epi64 sse4.1
- Sign extend packed 16-bit integers in
a
to packed 64-bit integers - _mm_
cvtepi32_ ⚠epi64 sse4.1
- Sign extend packed 32-bit integers in
a
to packed 64-bit integers - _mm_
cvtepu8_ ⚠epi16 sse4.1
- Zeroes extend packed unsigned 8-bit integers in
a
to packed 16-bit integers - _mm_
cvtepu8_ ⚠epi32 sse4.1
- Zeroes extend packed unsigned 8-bit integers in
a
to packed 32-bit integers - _mm_
cvtepu8_ ⚠epi64 sse4.1
- Zeroes extend packed unsigned 8-bit integers in
a
to packed 64-bit integers - _mm_
cvtepu16_ ⚠epi32 sse4.1
- Zeroes extend packed unsigned 16-bit integers in
a
to packed 32-bit integers - _mm_
cvtepu16_ ⚠epi64 sse4.1
- Zeroes extend packed unsigned 16-bit integers in
a
to packed 64-bit integers - _mm_
cvtepu32_ ⚠epi64 sse4.1
- Zeroes extend packed unsigned 32-bit integers in
a
to packed 64-bit integers - _mm_
dp_ ⚠pd sse4.1
- Returns the dot product of two __m128d vectors.
- _mm_
dp_ ⚠ps sse4.1
- Returns the dot product of two __m128 vectors.
- _mm_
extract_ ⚠epi8 sse4.1
- Extracts an 8-bit integer from
a
, selected withIMM8
. Returns a 32-bit integer containing the zero-extended integer data. - _mm_
extract_ ⚠epi32 sse4.1
- Extracts an 32-bit integer from
a
selected withIMM8
- _mm_
extract_ ⚠ps sse4.1
- Extracts a single-precision (32-bit) floating-point element from
a
, selected withIMM8
. The returnedi32
stores the float’s bit-pattern, and may be converted back to a floating point number via casting. - _mm_
floor_ ⚠pd sse4.1
- Round the packed double-precision (64-bit) floating-point elements in
a
down to an integer value, and stores the results as packed double-precision floating-point elements. - _mm_
floor_ ⚠ps sse4.1
- Round the packed single-precision (32-bit) floating-point elements in
a
down to an integer value, and stores the results as packed single-precision floating-point elements. - _mm_
floor_ ⚠sd sse4.1
- Round the lower double-precision (64-bit) floating-point element in
b
down to an integer value, store the result as a double-precision floating-point element in the lower element of the intrinsic result, and copies the upper element froma
to the upper element of the intrinsic result. - _mm_
floor_ ⚠ss sse4.1
- Round the lower single-precision (32-bit) floating-point element in
b
down to an integer value, store the result as a single-precision floating-point element in the lower element of the intrinsic result, and copies the upper 3 packed elements froma
to the upper elements of the intrinsic result. - _mm_
insert_ ⚠epi8 sse4.1
- Returns a copy of
a
with the 8-bit integer fromi
inserted at a location specified byIMM8
. - _mm_
insert_ ⚠epi32 sse4.1
- Returns a copy of
a
with the 32-bit integer fromi
inserted at a location specified byIMM8
. - _mm_
insert_ ⚠ps sse4.1
- Select a single value in
b
to store at some position ina
, Then zero elements according toIMM8
. - _mm_
max_ ⚠epi8 sse4.1
- Compares packed 8-bit integers in
a
andb
and returns packed maximum values in dst. - _mm_
max_ ⚠epi32 sse4.1
- Compares packed 32-bit integers in
a
andb
, and returns packed maximum values. - _mm_
max_ ⚠epu16 sse4.1
- Compares packed unsigned 16-bit integers in
a
andb
, and returns packed maximum. - _mm_
max_ ⚠epu32 sse4.1
- Compares packed unsigned 32-bit integers in
a
andb
, and returns packed maximum values. - _mm_
min_ ⚠epi8 sse4.1
- Compares packed 8-bit integers in
a
andb
and returns packed minimum values in dst. - _mm_
min_ ⚠epi32 sse4.1
- Compares packed 32-bit integers in
a
andb
, and returns packed minimum values. - _mm_
min_ ⚠epu16 sse4.1
- Compares packed unsigned 16-bit integers in
a
andb
, and returns packed minimum. - _mm_
min_ ⚠epu32 sse4.1
- Compares packed unsigned 32-bit integers in
a
andb
, and returns packed minimum values. - _mm_
minpos_ ⚠epu16 sse4.1
- Finds the minimum unsigned 16-bit element in the 128-bit __m128i vector, returning a vector containing its value in its first position, and its index in its second position; all other elements are set to zero.
- _mm_
mpsadbw_ ⚠epu8 sse4.1
- Subtracts 8-bit unsigned integer values and computes the absolute values of the differences to the corresponding bits in the destination. Then sums of the absolute differences are returned according to the bit fields in the immediate operand.
- _mm_
mul_ ⚠epi32 sse4.1
- Multiplies the low 32-bit integers from each packed 64-bit
element in
a
andb
, and returns the signed 64-bit result. - _mm_
mullo_ ⚠epi32 sse4.1
- Multiplies the packed 32-bit integers in
a
andb
, producing intermediate 64-bit integers, and returns the lowest 32-bit, whatever they might be, reinterpreted as a signed integer. Whilepmulld __m128i::splat(2), __m128i::splat(2)
returns the obvious__m128i::splat(4)
, due to wrapping arithmeticpmulld __m128i::splat(i32::MAX), __m128i::splat(2)
would return a negative number. - _mm_
packus_ ⚠epi32 sse4.1
- Converts packed 32-bit integers from
a
andb
to packed 16-bit integers using unsigned saturation - _mm_
round_ ⚠pd sse4.1
- Round the packed double-precision (64-bit) floating-point elements in
a
using theROUNDING
parameter, and stores the results as packed double-precision floating-point elements. Rounding is done according to the rounding parameter, which can be one of: - _mm_
round_ ⚠ps sse4.1
- Round the packed single-precision (32-bit) floating-point elements in
a
using theROUNDING
parameter, and stores the results as packed single-precision floating-point elements. Rounding is done according to the rounding parameter, which can be one of: - _mm_
round_ ⚠sd sse4.1
- Round the lower double-precision (64-bit) floating-point element in
b
using theROUNDING
parameter, store the result as a double-precision floating-point element in the lower element of the intrinsic result, and copies the upper element froma
to the upper element of the intrinsic result. Rounding is done according to the rounding parameter, which can be one of: - _mm_
round_ ⚠ss sse4.1
- Round the lower single-precision (32-bit) floating-point element in
b
using theROUNDING
parameter, store the result as a single-precision floating-point element in the lower element of the intrinsic result, and copies the upper 3 packed elements froma
to the upper elements of the intrinsic result. Rounding is done according to the rounding parameter, which can be one of: - _mm_
stream_ ⚠load_ si128 sse4.1
- Load 128-bits of integer data from memory into dst. mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated. To minimize caching, the data is flagged as non-temporal (unlikely to be used again soon)
- _mm_
test_ ⚠all_ ones sse4.1
- Tests whether the specified bits in
a
128-bit integer vector are all ones. - _mm_
test_ ⚠all_ zeros sse4.1
- Tests whether the specified bits in a 128-bit integer vector are all zeros.
- _mm_
test_ ⚠mix_ ones_ zeros sse4.1
- Tests whether the specified bits in a 128-bit integer vector are neither all zeros nor all ones.
- _mm_
testc_ ⚠si128 sse4.1
- Tests whether the specified bits in a 128-bit integer vector are all ones.
- _mm_
testnzc_ ⚠si128 sse4.1
- Tests whether the specified bits in a 128-bit integer vector are neither all zeros nor all ones.
- _mm_
testz_ ⚠si128 sse4.1
- Tests whether the specified bits in a 128-bit integer vector are all zeros.
- dppd 🔒 ⚠
- dpps 🔒 ⚠
- insertps 🔒 ⚠
- mpsadbw 🔒 ⚠
- packusdw 🔒 ⚠
- phminposuw 🔒 ⚠
- ptestc 🔒 ⚠
- ptestnzc 🔒 ⚠
- ptestz 🔒 ⚠
- roundpd 🔒 ⚠
- roundps 🔒 ⚠
- roundsd 🔒 ⚠
- roundss 🔒 ⚠