Module sse41
Streaming SIMD Extensions 4.1 (SSE4.1)
Functions
-
_mm_blend_epi16
Blend packed 16-bit integers from
aandbusing the maskIMM8. -
_mm_blend_pd
Blend packed double-precision (64-bit) floating-point elements from
aandbusing control maskIMM2 -
_mm_blend_ps
Blend packed single-precision (32-bit) floating-point elements from
aandbusing maskIMM4 -
_mm_blendv_epi8
Blend packed 8-bit integers from
aandbusingmask -
_mm_blendv_pd
Blend packed double-precision (64-bit) floating-point elements from
aandbusingmask -
_mm_blendv_ps
Blend packed single-precision (32-bit) floating-point elements from
aandbusingmask -
_mm_ceil_pd
Round the packed double-precision (64-bit) floating-point elements in
aup to an integer value, and stores the results as packed double-precision floating-point elements. -
_mm_ceil_ps
Round the packed single-precision (32-bit) floating-point elements in
aup to an integer value, and stores the results as packed single-precision floating-point elements. -
_mm_ceil_sd
Round the lower double-precision (64-bit) floating-point element in
bup 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 fromato the upper element of the intrinsic result. -
_mm_ceil_ss
Round the lower single-precision (32-bit) floating-point element in
bup 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 fromato the upper elements of the intrinsic result. -
_mm_cmpeq_epi64
Compares packed 64-bit integers in
aandbfor equality -
_mm_cvtepi16_epi32
Sign extend packed 16-bit integers in
ato packed 32-bit integers -
_mm_cvtepi16_epi64
Sign extend packed 16-bit integers in
ato packed 64-bit integers -
_mm_cvtepi32_epi64
Sign extend packed 32-bit integers in
ato packed 64-bit integers -
_mm_cvtepi8_epi16
Sign extend packed 8-bit integers in
ato packed 16-bit integers -
_mm_cvtepi8_epi32
Sign extend packed 8-bit integers in
ato packed 32-bit integers -
_mm_cvtepi8_epi64
Sign extend packed 8-bit integers in the low 8 bytes of
ato packed 64-bit integers -
_mm_cvtepu16_epi32
Zeroes extend packed unsigned 16-bit integers in
ato packed 32-bit integers -
_mm_cvtepu16_epi64
Zeroes extend packed unsigned 16-bit integers in
ato packed 64-bit integers -
_mm_cvtepu32_epi64
Zeroes extend packed unsigned 32-bit integers in
ato packed 64-bit integers -
_mm_cvtepu8_epi16
Zeroes extend packed unsigned 8-bit integers in
ato packed 16-bit integers -
_mm_cvtepu8_epi32
Zeroes extend packed unsigned 8-bit integers in
ato packed 32-bit integers -
_mm_cvtepu8_epi64
Zeroes extend packed unsigned 8-bit integers in
ato packed 64-bit integers - _mm_dp_pd Returns the dot product of two __m128d vectors.
- _mm_dp_ps Returns the dot product of two __m128 vectors.
-
_mm_extract_epi32
Extracts an 32-bit integer from
aselected withIMM8 -
_mm_extract_epi8
Extracts an 8-bit integer from
a, selected withIMM8. Returns a 32-bit integer containing the zero-extended integer data. -
_mm_extract_ps
Extracts a single-precision (32-bit) floating-point element from
a, selected withIMM8. The returnedi32stores the float's bit-pattern, and may be converted back to a floating point number via casting. -
_mm_floor_pd
Round the packed double-precision (64-bit) floating-point elements in
adown to an integer value, and stores the results as packed double-precision floating-point elements. -
_mm_floor_ps
Round the packed single-precision (32-bit) floating-point elements in
adown to an integer value, and stores the results as packed single-precision floating-point elements. -
_mm_floor_sd
Round the lower double-precision (64-bit) floating-point element in
bdown 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 fromato the upper element of the intrinsic result. -
_mm_floor_ss
Round the lower single-precision (32-bit) floating-point element in
bdown 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 fromato the upper elements of the intrinsic result. -
_mm_insert_epi32
Returns a copy of
awith the 32-bit integer fromiinserted at a location specified byIMM8. -
_mm_insert_epi8
Returns a copy of
awith the 8-bit integer fromiinserted at a location specified byIMM8. -
_mm_insert_ps
Select a single value in
bto store at some position ina, Then zero elements according toIMM8. -
_mm_max_epi32
Compares packed 32-bit integers in
aandb, and returns packed maximum values. -
_mm_max_epi8
Compares packed 8-bit integers in
aandband returns packed maximum values in dst. -
_mm_max_epu16
Compares packed unsigned 16-bit integers in
aandb, and returns packed maximum. -
_mm_max_epu32
Compares packed unsigned 32-bit integers in
aandb, and returns packed maximum values. -
_mm_min_epi32
Compares packed 32-bit integers in
aandb, and returns packed minimum values. -
_mm_min_epi8
Compares packed 8-bit integers in
aandband returns packed minimum values in dst. -
_mm_min_epu16
Compares packed unsigned 16-bit integers in
aandb, and returns packed minimum. -
_mm_min_epu32
Compares packed unsigned 32-bit integers in
aandb, and returns packed minimum values. - _mm_minpos_epu16 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 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
Multiplies the low 32-bit integers from each packed 64-bit
element in
aandb, and returns the signed 64-bit result. -
_mm_mullo_epi32
Multiplies the packed 32-bit integers in
aandb, 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
Converts packed signed 32-bit integers from
aandbto packed 16-bit integers using unsigned saturation -
_mm_round_pd
Round the packed double-precision (64-bit) floating-point elements in
ausing theROUNDINGparameter, 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
Round the packed single-precision (32-bit) floating-point elements in
ausing theROUNDINGparameter, 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
Round the lower double-precision (64-bit) floating-point element in
busing theROUNDINGparameter, store the result as a double-precision floating-point element in the lower element of the intrinsic result, and copies the upper element fromato the upper element of the intrinsic result. Rounding is done according to the rounding parameter, which can be one of: -
_mm_round_ss
Round the lower single-precision (32-bit) floating-point element in
busing theROUNDINGparameter, 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 fromato the upper elements of the intrinsic result. Rounding is done according to the rounding parameter, which can be one of: - _mm_stream_load_si128 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
Tests whether the specified bits in
a128-bit integer vector are all ones. - _mm_test_all_zeros Tests whether the specified bits in a 128-bit integer vector are all zeros.
- _mm_test_mix_ones_zeros Tests whether the specified bits in a 128-bit integer vector are neither all zeros nor all ones.
- _mm_testc_si128 Tests whether the specified bits in a 128-bit integer vector are all ones.
- _mm_testnzc_si128 Tests whether the specified bits in a 128-bit integer vector are neither all zeros nor all ones.
- _mm_testz_si128 Tests whether the specified bits in a 128-bit integer vector are all zeros.
- dppd
- dpps
- insertps
- mpsadbw
- phminposuw
- ptestnzc
- roundpd
- roundps
- roundsd
- roundss
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