🔬This is a nightly-only experimental API. (
stdsimd #48556)Available on x86 or x86-64 only.
Expand description
Streaming SIMD Extensions 4.1 (SSE4.1)
Constants
- round up and do not suppress exceptions
- use MXCSR.RC; see
vendor::_MM_SET_ROUNDING_MODE - round down and do not suppress exceptions
- use MXCSR.RC and suppress exceptions; see
vendor::_MM_SET_ROUNDING_MODE - round to nearest and do not suppress exceptions
- suppress exceptions
- do not suppress exceptions
- use MXCSR.RC and do not suppress exceptions; see
vendor::_MM_SET_ROUNDING_MODE - round to nearest
- round down
- round up
- truncate
- truncate and do not suppress exceptions
Functions
- _mm_blend_epi16⚠
sse4.1Blend packed 16-bit integers fromaandbusing the maskIMM8. - _mm_blend_pd⚠
sse4.1Blend packed double-precision (64-bit) floating-point elements fromaandbusing control maskIMM2 - _mm_blend_ps⚠
sse4.1Blend packed single-precision (32-bit) floating-point elements fromaandbusing maskIMM4 - _mm_blendv_epi8⚠
sse4.1Blend packed 8-bit integers fromaandbusingmask - _mm_blendv_pd⚠
sse4.1Blend packed double-precision (64-bit) floating-point elements fromaandbusingmask - _mm_blendv_ps⚠
sse4.1Blend packed single-precision (32-bit) floating-point elements fromaandbusingmask - _mm_ceil_pd⚠
sse4.1Round the packed double-precision (64-bit) floating-point elements inaup to an integer value, and stores the results as packed double-precision floating-point elements. - _mm_ceil_ps⚠
sse4.1Round the packed single-precision (32-bit) floating-point elements inaup to an integer value, and stores the results as packed single-precision floating-point elements. - _mm_ceil_sd⚠
sse4.1Round the lower double-precision (64-bit) floating-point element inbup 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⚠
sse4.1Round the lower single-precision (32-bit) floating-point element inbup 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⚠
sse4.1Compares packed 64-bit integers inaandbfor equality - _mm_cvtepi8_epi16⚠
sse4.1Sign extend packed 8-bit integers inato packed 16-bit integers - _mm_cvtepi8_epi32⚠
sse4.1Sign extend packed 8-bit integers inato packed 32-bit integers - _mm_cvtepi8_epi64⚠
sse4.1Sign extend packed 8-bit integers in the low 8 bytes ofato packed 64-bit integers - _mm_cvtepi16_epi32⚠
sse4.1Sign extend packed 16-bit integers inato packed 32-bit integers - _mm_cvtepi16_epi64⚠
sse4.1Sign extend packed 16-bit integers inato packed 64-bit integers - _mm_cvtepi32_epi64⚠
sse4.1Sign extend packed 32-bit integers inato packed 64-bit integers - _mm_cvtepu8_epi16⚠
sse4.1Zeroes extend packed unsigned 8-bit integers inato packed 16-bit integers - _mm_cvtepu8_epi32⚠
sse4.1Zeroes extend packed unsigned 8-bit integers inato packed 32-bit integers - _mm_cvtepu8_epi64⚠
sse4.1Zeroes extend packed unsigned 8-bit integers inato packed 64-bit integers - _mm_cvtepu16_epi32⚠
sse4.1Zeroes extend packed unsigned 16-bit integers inato packed 32-bit integers - _mm_cvtepu16_epi64⚠
sse4.1Zeroes extend packed unsigned 16-bit integers inato packed 64-bit integers - _mm_cvtepu32_epi64⚠
sse4.1Zeroes extend packed unsigned 32-bit integers inato packed 64-bit integers - _mm_dp_pd⚠
sse4.1Returns the dot product of two __m128d vectors. - _mm_dp_ps⚠
sse4.1Returns the dot product of two __m128 vectors. - _mm_extract_epi8⚠
sse4.1Extracts an 8-bit integer froma, selected withIMM8. Returns a 32-bit integer containing the zero-extended integer data. - _mm_extract_epi32⚠
sse4.1Extracts an 32-bit integer fromaselected withIMM8 - _mm_extract_ps⚠
sse4.1Extracts a single-precision (32-bit) floating-point element froma, selected withIMM8. The returnedi32stores the float’s bit-pattern, and may be converted back to a floating point number via casting. - _mm_floor_pd⚠
sse4.1Round the packed double-precision (64-bit) floating-point elements inadown to an integer value, and stores the results as packed double-precision floating-point elements. - _mm_floor_ps⚠
sse4.1Round the packed single-precision (32-bit) floating-point elements inadown to an integer value, and stores the results as packed single-precision floating-point elements. - _mm_floor_sd⚠
sse4.1Round the lower double-precision (64-bit) floating-point element inbdown 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⚠
sse4.1Round the lower single-precision (32-bit) floating-point element inbdown 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_epi8⚠
sse4.1Returns a copy ofawith the 8-bit integer fromiinserted at a location specified byIMM8. - _mm_insert_epi32⚠
sse4.1Returns a copy ofawith the 32-bit integer fromiinserted at a location specified byIMM8. - _mm_insert_ps⚠
sse4.1Select a single value inato store at some position inb, Then zero elements according toIMM8. - _mm_max_epi8⚠
sse4.1Compares packed 8-bit integers inaandband returns packed maximum values in dst. - _mm_max_epi32⚠
sse4.1Compares packed 32-bit integers inaandb, and returns packed maximum values. - _mm_max_epu16⚠
sse4.1Compares packed unsigned 16-bit integers inaandb, and returns packed maximum. - _mm_max_epu32⚠
sse4.1Compares packed unsigned 32-bit integers inaandb, and returns packed maximum values. - _mm_min_epi8⚠
sse4.1Compares packed 8-bit integers inaandband returns packed minimum values in dst. - _mm_min_epi32⚠
sse4.1Compares packed 32-bit integers inaandb, and returns packed minimum values. - _mm_min_epu16⚠
sse4.1Compares packed unsigned 16-bit integers inaandb, and returns packed minimum. - _mm_min_epu32⚠
sse4.1Compares packed unsigned 32-bit integers inaandb, and returns packed minimum values. - _mm_minpos_epu16⚠
sse4.1Finds 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.1Subtracts 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.1Multiplies the low 32-bit integers from each packed 64-bit element inaandb, and returns the signed 64-bit result. - _mm_mullo_epi32⚠
sse4.1Multiplies the packed 32-bit integers inaandb, 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.1Converts packed 32-bit integers fromaandbto packed 16-bit integers using unsigned saturation - _mm_round_pd⚠
sse4.1Round the packed double-precision (64-bit) floating-point elements inausing 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⚠
sse4.1Round the packed single-precision (32-bit) floating-point elements inausing 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⚠
sse4.1Round the lower double-precision (64-bit) floating-point element inbusing 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⚠
sse4.1Round the lower single-precision (32-bit) floating-point element inbusing 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_test_all_ones⚠
sse4.1Tests whether the specified bits ina128-bit integer vector are all ones. - _mm_test_all_zeros⚠
sse4.1Tests whether the specified bits in a 128-bit integer vector are all zeros. - _mm_test_mix_ones_zeros⚠
sse4.1Tests whether the specified bits in a 128-bit integer vector are neither all zeros nor all ones. - _mm_testc_si128⚠
sse4.1Tests whether the specified bits in a 128-bit integer vector are all ones. - _mm_testnzc_si128⚠
sse4.1Tests whether the specified bits in a 128-bit integer vector are neither all zeros nor all ones. - _mm_testz_si128⚠
sse4.1Tests whether the specified bits in a 128-bit integer vector are all zeros.