🔬This is a nightly-only experimental API. (
stdsimd #48556)Available on x86 or x86-64 only.
Expand description
Streaming SIMD Extensions (SSE)
Constants
- See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_prefetch. - See
_mm_prefetch. - See
_mm_prefetch. - See
_mm_prefetch. - See
_mm_prefetch. - See
_mm_prefetch. - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr
Functions
- _MM_SHUFFLEExperimentalA utility function for creating masks to use with Intel shuffle and permute intrinsics.
- See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - See
_mm_setcsr - Transpose the 4x4 matrix formed by 4 rows of __m128 in place.
- _mm_add_ps⚠
sseAdds __m128 vectors. - _mm_add_ss⚠
sseAdds the first component ofaandb, the other components are copied froma. - _mm_and_ps⚠
sseBitwise AND of packed single-precision (32-bit) floating-point elements. - _mm_andnot_ps⚠
sseBitwise AND-NOT of packed single-precision (32-bit) floating-point elements. - _mm_cmpeq_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input elements were equal, or0otherwise. - _mm_cmpeq_ss⚠
sseCompares the lowestf32of both inputs for equality. The lowest 32 bits of the result will be0xffffffffif the two inputs are equal, or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpge_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais greater than or equal to the corresponding element inb, or0otherwise. - _mm_cmpge_ss⚠
sseCompares the lowestf32of both inputs for greater than or equal. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is greater than or equalb.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpgt_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais greater than the corresponding element inb, or0otherwise. - _mm_cmpgt_ss⚠
sseCompares the lowestf32of both inputs for greater than. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is greater thanb.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmple_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais less than or equal to the corresponding element inb, or0otherwise. - _mm_cmple_ss⚠
sseCompares the lowestf32of both inputs for less than or equal. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is less than or equalb.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmplt_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais less than the corresponding element inb, or0otherwise. - _mm_cmplt_ss⚠
sseCompares the lowestf32of both inputs for less than. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is less thanb.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpneq_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input elements are not equal, or0otherwise. - _mm_cmpneq_ss⚠
sseCompares the lowestf32of both inputs for inequality. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is not equal tob.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpnge_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais not greater than or equal to the corresponding element inb, or0otherwise. - _mm_cmpnge_ss⚠
sseCompares the lowestf32of both inputs for not-greater-than-or-equal. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is not greater than or equal tob.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpngt_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais not greater than the corresponding element inb, or0otherwise. - _mm_cmpngt_ss⚠
sseCompares the lowestf32of both inputs for not-greater-than. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is not greater thanb.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpnle_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais not less than or equal to the corresponding element inb, or0otherwise. - _mm_cmpnle_ss⚠
sseCompares the lowestf32of both inputs for not-less-than-or-equal. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is not less than or equal tob.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpnlt_ps⚠
sseCompares each of the four floats inato the corresponding element inb. The result in the output vector will be0xffffffffif the input element inais not less than the corresponding element inb, or0otherwise. - _mm_cmpnlt_ss⚠
sseCompares the lowestf32of both inputs for not-less-than. The lowest 32 bits of the result will be0xffffffffifa.extract(0)is not less thanb.extract(0), or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpord_ps⚠
sseCompares each of the four floats inato the corresponding element inb. Returns four floats that have one of two possible bit patterns. The element in the output vector will be0xffffffffif the input elements inaandbare ordered (i.e., neither of them is a NaN), or 0 otherwise. - _mm_cmpord_ss⚠
sseChecks if the lowestf32of both inputs are ordered. The lowest 32 bits of the result will be0xffffffffif neither ofa.extract(0)orb.extract(0)is a NaN, or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_cmpunord_ps⚠
sseCompares each of the four floats inato the corresponding element inb. Returns four floats that have one of two possible bit patterns. The element in the output vector will be0xffffffffif the input elements inaandbare unordered (i.e., at least on of them is a NaN), or 0 otherwise. - _mm_cmpunord_ss⚠
sseChecks if the lowestf32of both inputs are unordered. The lowest 32 bits of the result will be0xffffffffif any ofa.extract(0)orb.extract(0)is a NaN, or0otherwise. The upper 96 bits of the result are the upper 96 bits ofa. - _mm_comieq_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if they are equal, or0otherwise. - _mm_comige_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais greater than or equal to the one fromb, or0otherwise. - _mm_comigt_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais greater than the one fromb, or0otherwise. - _mm_comile_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais less than or equal to the one fromb, or0otherwise. - _mm_comilt_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais less than the one fromb, or0otherwise. - _mm_comineq_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if they are not equal, or0otherwise. - _mm_cvt_si2ss⚠
sseAlias for_mm_cvtsi32_ss. - _mm_cvt_ss2si⚠
sseAlias for_mm_cvtss_si32. - _mm_cvtsi32_ss⚠
sseConverts a 32 bit integer to a 32 bit float. The result vector is the input vectorawith the lowest 32 bit float replaced by the converted integer. - _mm_cvtss_f32⚠
sseExtracts the lowest 32 bit float from the input vector. - _mm_cvtss_si32⚠
sseConverts the lowest 32 bit float in the input vector to a 32 bit integer. - _mm_cvtt_ss2si⚠
sseAlias for_mm_cvttss_si32. - _mm_cvttss_si32⚠
sseConverts the lowest 32 bit float in the input vector to a 32 bit integer with truncation. - _mm_div_ps⚠
sseDivides __m128 vectors. - _mm_div_ss⚠
sseDivides the first component ofbbya, the other components are copied froma. - _mm_getcsr⚠
sseGets the unsigned 32-bit value of the MXCSR control and status register. - _mm_load1_ps⚠
sseConstruct a__m128by duplicating the value read frompinto all elements. - _mm_load_ps⚠
sseLoads fourf32values from aligned memory into a__m128. If the pointer is not aligned to a 128-bit boundary (16 bytes) a general protection fault will be triggered (fatal program crash). - _mm_load_ps1⚠
sseAlias for_mm_load1_ps - _mm_load_ss⚠
sseConstruct a__m128with the lowest element read frompand the other elements set to zero. - _mm_loadr_ps⚠
sseLoads fourf32values from aligned memory into a__m128in reverse order. - _mm_loadu_ps⚠
sseLoads fourf32values from memory into a__m128. There are no restrictions on memory alignment. For aligned memory_mm_load_psmay be faster. - _mm_loadu_si64⚠
sseLoads unaligned 64-bits of integer data from memory into new vector. - _mm_max_ps⚠
sseCompares packed single-precision (32-bit) floating-point elements inaandb, and return the corresponding maximum values. - _mm_max_ss⚠
sseCompares the first single-precision (32-bit) floating-point element ofaandb, and return the maximum value in the first element of the return value, the other elements are copied froma. - _mm_min_ps⚠
sseCompares packed single-precision (32-bit) floating-point elements inaandb, and return the corresponding minimum values. - _mm_min_ss⚠
sseCompares the first single-precision (32-bit) floating-point element ofaandb, and return the minimum value in the first element of the return value, the other elements are copied froma. - _mm_move_ss⚠
sseReturns a__m128with the first component fromband the remaining components froma. - _mm_movehl_ps⚠
sseCombine higher half ofaandb. The higher half ofboccupies the lower half of result. - _mm_movelh_ps⚠
sseCombine lower half ofaandb. The lower half ofboccupies the higher half of result. - _mm_movemask_ps⚠
sseReturns a mask of the most significant bit of each element ina. - _mm_mul_ps⚠
sseMultiplies __m128 vectors. - _mm_mul_ss⚠
sseMultiplies the first component ofaandb, the other components are copied froma. - _mm_or_ps⚠
sseBitwise OR of packed single-precision (32-bit) floating-point elements. - _mm_prefetch⚠
sseFetch the cache line that contains addresspusing the givenSTRATEGY. - _mm_rcp_ps⚠
sseReturns the approximate reciprocal of packed single-precision (32-bit) floating-point elements ina. - _mm_rcp_ss⚠
sseReturns the approximate reciprocal of the first single-precision (32-bit) floating-point element ina, the other elements are unchanged. - _mm_rsqrt_ps⚠
sseReturns the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements ina. - _mm_rsqrt_ss⚠
sseReturns the approximate reciprocal square root of the first single-precision (32-bit) floating-point element ina, the other elements are unchanged. - _mm_set1_ps⚠
sseConstruct a__m128with all element set toa. - _mm_set_ps⚠
sseConstruct a__m128from four floating point values highest to lowest. - _mm_set_ps1⚠
sseAlias for_mm_set1_ps - _mm_set_ss⚠
sseConstruct a__m128with the lowest element set toaand the rest set to zero. - _mm_setcsr⚠
sseSets the MXCSR register with the 32-bit unsigned integer value. - _mm_setr_ps⚠
sseConstruct a__m128from four floating point values lowest to highest. - _mm_setzero_ps⚠
sseConstruct a__m128with all elements initialized to zero. - _mm_sfence⚠
ssePerforms a serializing operation on all store-to-memory instructions that were issued prior to this instruction. - _mm_shuffle_ps⚠
sseShuffles packed single-precision (32-bit) floating-point elements inaandbusingMASK. - _mm_sqrt_ps⚠
sseReturns the square root of packed single-precision (32-bit) floating-point elements ina. - _mm_sqrt_ss⚠
sseReturns the square root of the first single-precision (32-bit) floating-point element ina, the other elements are unchanged. - _mm_store1_ps⚠
sseStores the lowest 32 bit float ofarepeated four times into aligned memory. - _mm_store_ps⚠
sseStores four 32-bit floats into aligned memory. - _mm_store_ps1⚠
sseAlias for_mm_store1_ps - _mm_store_ss⚠
sseStores the lowest 32 bit float ofainto memory. - _mm_storer_ps⚠
sseStores four 32-bit floats into aligned memory in reverse order. - _mm_storeu_ps⚠
sseStores four 32-bit floats into memory. There are no restrictions on memory alignment. For aligned memory_mm_store_psmay be faster. - _mm_stream_ps⚠
sseStoresainto the memory atmem_addrusing a non-temporal memory hint. - _mm_sub_ps⚠
sseSubtracts __m128 vectors. - _mm_sub_ss⚠
sseSubtracts the first component ofbfroma, the other components are copied froma. - _mm_ucomieq_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if they are equal, or0otherwise. This instruction will not signal an exception if either argument is a quiet NaN. - _mm_ucomige_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais greater than or equal to the one fromb, or0otherwise. This instruction will not signal an exception if either argument is a quiet NaN. - _mm_ucomigt_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais greater than the one fromb, or0otherwise. This instruction will not signal an exception if either argument is a quiet NaN. - _mm_ucomile_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais less than or equal to the one fromb, or0otherwise. This instruction will not signal an exception if either argument is a quiet NaN. - _mm_ucomilt_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if the value fromais less than the one fromb, or0otherwise. This instruction will not signal an exception if either argument is a quiet NaN. - _mm_ucomineq_ss⚠
sseCompares two 32-bit floats from the low-order bits ofaandb. Returns1if they are not equal, or0otherwise. This instruction will not signal an exception if either argument is a quiet NaN. - _mm_undefined_ps⚠
sseReturns vector of type __m128 with indeterminate elements. Despite being “undefined”, this is some valid value and not equivalent tomem::MaybeUninit. In practice, this is equivalent tomem::zeroed. - _mm_unpackhi_ps⚠
sseUnpacks and interleave single-precision (32-bit) floating-point elements from the higher half ofaandb. - _mm_unpacklo_ps⚠
sseUnpacks and interleave single-precision (32-bit) floating-point elements from the lower half ofaandb. - _mm_xor_ps⚠
sseBitwise exclusive OR of packed single-precision (32-bit) floating-point elements.