x86 Compiler Intrinsics
3623 intrinsics from the Intel® SDM, each mapped to the instruction it compiles to - page 36 of 37, alphabetical. The global search in the top nav also matches intrinsic names directly.
| Intrinsic | Instruction | Signature |
|---|---|---|
| _mm_sub_epi64 | psubq | (V)PSUBQ __m128i _mm_sub_epi64(__m128i m1, __m128i m2) |
| _mm_sub_epi8 | psubb | (V)PSUBB __m128i _mm_sub_epi8 ( __m128i a, __m128i b) |
| _mm_sub_pd | subpd | SUBPD __m128d _mm_sub_pd (__m128d a, __m128d b); |
| _mm_sub_ph | vsubph | VSUBPH __m128h _mm_sub_ph (__m128h a, __m128h b); |
| _mm_sub_pi16 | psubw | PSUBW __m64 _mm_sub_pi16(__m64 m1, __m64 m2) |
| _mm_sub_pi32 | psubd | PSUBD __m64 _mm_sub_pi32(__m64 m1, __m64 m2) |
| _mm_sub_pi8 | psubb | PSUBB __m64 _mm_sub_pi8(__m64 m1, __m64 m2) |
| _mm_sub_ps | subps | SUBPS __m128 _mm_sub_ps (__m128 a, __m128 b); |
| _mm_sub_round_sd | subsd | VSUBSD __m128d _mm_sub_round_sd (__m128d a, __m128d b, int); |
| _mm_sub_round_sh | vsubsh | VSUBSH __m128h _mm_sub_round_sh (__m128h a, __m128h b, int rounding); |
| _mm_sub_round_ss | subss | VSUBSS __m128 _mm_sub_round_ss (__m128 a, __m128 b, int); |
| _mm_sub_sd | subsd | SUBSD __m128d _mm_sub_sd (__m128d a, __m128d b); |
| _mm_sub_sh | vsubsh | VSUBSH __m128h _mm_sub_sh (__m128h a, __m128h b); |
| _mm_sub_si64 | psubq | PSUBQ __m64 _mm_sub_si64(__m64 m1, __m64 m2) |
| _mm_sub_ss | subss | SUBSS __m128 _mm_sub_ss (__m128 a, __m128 b); |
| _mm_subs_epi16 | psubsb | (V)PSUBSW __m128i _mm_subs_epi16(__m128i m1, __m128i m2) |
| _mm_subs_epi8 | psubsb | (V)PSUBSB __m128i _mm_subs_epi8(__m128i m1, __m128i m2) |
| _mm_subs_epu16 | psubusb | (V)PSUBUSW __m128i _mm_subs_epu16(__m128i m1, __m128i m2) |
| _mm_subs_epu8 | psubusb | (V)PSUBUSB __m128i _mm_subs_epu8(__m128i m1, __m128i m2) |
| _mm_subs_pi16 | psubsw | PSUBSW __m64 _mm_subs_pi16(__m64 m1, __m64 m2) |
| _mm_subs_pi8 | psubsb | PSUBSB __m64 _mm_subs_pi8(__m64 m1, __m64 m2) |
| _mm_subs_pu16 | psubusw | PSUBUSW __m64 _mm_subs_pu16(__m64 m1, __m64 m2) |
| _mm_subs_pu8 | psubusb | PSUBUSB __m64 _mm_subs_pu8(__m64 m1, __m64 m2) |
| _mm_ternarylogic_epi32 | vpternlogd | VPTERNLOGD __m128i _mm_ternarylogic_epi32(__m128i a, __m128i b, int imm); |
| _mm_ternarylogic_epi64 | vpternlogq | VPTERNLOGQ __m128i _mm_ternarylogic_epi64(__m128i a, __m128i b, int imm); |
| _mm_testc_pd | vtestpd | int _mm_testc_pd (__m128d s1, __m128d s2); |
| _mm_testc_ps | vtestps | int _mm_testc_ps (__m128 s1, __m128 s2); |
| _mm_testc_si128 | ptest | PTEST int _mm_testc_si128 (__m128i s1, __m128i s2); |
| _mm_testnzc_pd | vtestpd | int _mm_testnzc_pd (__m128d s1, __m128d s2); |
| _mm_testnzc_ps | vtestps | int _mm_testnzc_ps (__m128 s1, __m128 s2); |
| _mm_testnzc_si128 | ptest | PTEST int _mm_testnzc_si128 (__m128i s1, __m128i s2); |
| _mm_testz_pd | vtestpd | int _mm_testz_pd (__m128d s1, __m128d s2); |
| _mm_testz_ps | vtestps | int _mm_testz_ps (__m128 s1, __m128 s2); |
| _mm_testz_si128 | ptest | PTEST int _mm_testz_si128 (__m128i s1, __m128i s2); |
| _mm_ucomieq_sd | ucomisd | UCOMISD int _mm_ucomieq_sd(__m128d a, __m128d b) |
| _mm_ucomieq_ss | ucomiss | UCOMISS int _mm_ucomieq_ss(__m128 a, __m128 b); |
| _mm_ucomige_sd | ucomisd | UCOMISD int _mm_ucomige_sd(__m128d a, __m128d b) |
| _mm_ucomige_ss | ucomiss | UCOMISS int _mm_ucomige_ss(__m128 a, __m128 b); |
| _mm_ucomigt_sd | ucomisd | UCOMISD int _mm_ucomigt_sd(__m128d a, __m128d b) |
| _mm_ucomigt_ss | ucomiss | UCOMISS int _mm_ucomigt_ss(__m128 a, __m128 b); |
| _mm_ucomile_sd | ucomisd | UCOMISD int _mm_ucomile_sd(__m128d a, __m128d b) |
| _mm_ucomile_ss | ucomiss | UCOMISS int _mm_ucomile_ss(__m128 a, __m128 b); |
| _mm_ucomilt_sd | ucomisd | UCOMISD int _mm_ucomilt_sd(__m128d a, __m128d b) |
| _mm_ucomilt_ss | ucomiss | UCOMISS int _mm_ucomilt_ss(__m128 a, __m128 b); |
| _mm_ucomineq_sd | ucomisd | UCOMISD int _mm_ucomineq_sd(__m128d a, __m128d b) |
| _mm_ucomineq_ss | ucomiss | UCOMISS int _mm_ucomineq_ss(__m128 a, __m128 b); |
| _mm_unpackhi_epi16 | punpckhbw | (V)PUNPCKHWD __m128i _mm_unpackhi_epi16(__m128i m1,__m128i m2) |
| _mm_unpackhi_epi32 | punpckhbw | (V)PUNPCKHDQ __m128i _mm_unpackhi_epi32(__m128i m1, __m128i m2) |
| _mm_unpackhi_epi64 | punpckhbw | (V)PUNPCKHQDQ __m128i _mm_unpackhi_epi64 ( __m128i a, __m128i b) |
| _mm_unpackhi_epi8 | punpckhbw | (V)PUNPCKHBW __m128i _mm_unpackhi_epi8(__m128i m1, __m128i m2) |
| _mm_unpackhi_pd | unpckhpd | UNPCKHPD __m128d _mm_unpackhi_pd(__m128d a, __m128d b) |
| _mm_unpackhi_pi16 | punpckhwd | PUNPCKHWD __m64 _mm_unpackhi_pi16(__m64 m1,__m64 m2) |
| _mm_unpackhi_pi32 | punpckhdq | PUNPCKHDQ __m64 _mm_unpackhi_pi32(__m64 m1, __m64 m2) |
| _mm_unpackhi_pi8 | punpckhbw | PUNPCKHBW __m64 _mm_unpackhi_pi8(__m64 m1, __m64 m2) |
| _mm_unpackhi_ps | unpckhps | UNPCKHPS __m128 _mm_unpackhi_ps (__m128 a, __m128 b); |
| _mm_unpacklo_epi16 | punpcklbw | (V)PUNPCKLWD __m128i _mm_unpacklo_epi16 (__m128i m1, __m128i m2) |
| _mm_unpacklo_epi32 | punpcklbw | (V)PUNPCKLDQ __m128i _mm_unpacklo_epi32 (__m128i m1, __m128i m2) |
| _mm_unpacklo_epi64 | punpcklbw | (V)PUNPCKLQDQ __m128i _mm_unpacklo_epi64 (__m128i m1, __m128i m2) |
| _mm_unpacklo_epi8 | punpcklbw | (V)PUNPCKLBW __m128i _mm_unpacklo_epi8 (__m128i m1, __m128i m2) |
| _mm_unpacklo_pd | unpcklpd | UNPCKLPD __m128d _mm_unpacklo_pd(__m128d a, __m128d b) |
| _mm_unpacklo_pi16 | punpcklwd | PUNPCKLWD __m64 _mm_unpacklo_pi16 (__m64 m1, __m64 m2) |
| _mm_unpacklo_pi32 | punpckldq | PUNPCKLDQ __m64 _mm_unpacklo_pi32 (__m64 m1, __m64 m2) |
| _mm_unpacklo_pi8 | punpcklbw | PUNPCKLBW __m64 _mm_unpacklo_pi8 (__m64 m1, __m64 m2) |
| _mm_unpacklo_ps | unpcklps | UNPCKLPS __m128 _mm_unpacklo_ps (__m128 a, __m128 b); |
| _mm_xor_epi32 | pxor | VPXORD __m128i _mm_xor_epi32(__m128i a, __m128i b) |
| _mm_xor_epi64 | pxor | VPXORQ __m128i _mm_xor_epi64( __m128i a, __m128i b); |
| _mm_xor_ps | xorps | XORPS __m128 _mm_xor_ps (__m128 a, __m128 b); |
| _mm_xor_si128 | pxor | (V)PXOR:__m128i _mm_xor_si128 ( __m128i a, __m128i b) |
| _mm_xor_si64 | pxor | PXOR:__m64 _mm_xor_si64 (__m64 m1, __m64 m2) |
| _movdir64b | movdir64b | MOVDIR64B void _movdir64b(void *dst, const void* src) |
| _pdep_u32 | pdep | PDEP unsigned __int32 _pdep_u32(unsigned __int32 src, unsigned __int32 mask); |
| _pdep_u64 | pdep | PDEP unsigned __int64 _pdep_u64(unsigned __int64 src, unsigned __int32 mask); |
| _pext_u32 | pext | PEXT unsigned __int32 _pext_u32(unsigned __int32 src, unsigned __int32 mask); |
| _pext_u64 | pext | PEXT unsigned __int64 _pext_u64(unsigned __int64 src, unsigned __int32 mask); |
| _rdrand16_step | rdrand | RDRAND int _rdrand16_step( unsigned short * ); |
| _rdrand32_step | rdrand | RDRAND int _rdrand32_step( unsigned int * ); |
| _rdrand64_step | rdrand | RDRAND int _rdrand64_step( unsigned __int64 *); |
| _round_sd | roundsd | ROUNDSD __m128d mm_round_sd(__m128d dst, __m128d s1, int iRoundMode); |
| _round_ss | roundss | ROUNDSS __m128 mm_round_ss(__m128 dst, __m128 s1, int iRoundMode); |
| _serialize | serialize | SERIALIZE void _serialize(void); |
| _storeu_ps | movups | MOVUPS void _mm256 _storeu_ps( float *p, __m256 a); |
| _subborrow_u16 | sbb | SBB extern unsigned char _subborrow_u16(unsigned char c_in, unsigned short src1, unsigned short src2, unsigned short *diff_out); |
| _subborrow_u32 | sbb | SBB extern unsigned char _subborrow_u32(unsigned char c_in, unsigned int src1, unsigned char int, unsigned int *diff_out); |
| _subborrow_u64 | sbb | SBB extern unsigned char _subborrow_u64(unsigned char c_in, unsigned __int64 src1, unsigned __int64 src2, unsigned __int64 |
| _subborrow_u8 | sbb | SBB extern unsigned char _subborrow_u8(unsigned char c_in, unsigned char src1, unsigned char src2, unsigned char *diff_out); |
| _tile_dpbf16ps | tdpbf16ps | TDPBF16PS void _tile_dpbf16ps(__tile dst, __tile src1, __tile src2); |
| _tile_dpbssd | tdpbssd | TDPBSSD void _tile_dpbssd(__tile dst, __tile src1, __tile src2); |
| _tile_dpbsud | tdpbsud | TDPBSUD void _tile_dpbsud(__tile dst, __tile src1, __tile src2); |
| _tile_dpbusd | tdpbusd | TDPBUSD void _tile_dpbusd(__tile dst, __tile src1, __tile src2); |
| _tile_dpbuud | tdpbuud | TDPBUUD void _tile_dpbuud(__tile dst, __tile src1, __tile src2); |
| _tile_loadconfig | ldtilecfg | LDTILECFG void _tile_loadconfig(const void *); |
| _tile_loadd | tileloadd | TILELOADD void _tile_loadd(__tile dst, const void *base, int stride); |
| _tile_storeconfig | sttilecfg | STTILECFGvoid _tile_storeconfig(void *); |
| _tile_stored | tilestored | TILESTORED void _tile_stored(__tile src, void *base, int stride); |
| _tile_stream_loadd | tileloaddt1 | TILELOADDT1 void _tile_stream_loadd(__tile dst, const void *base, int stride); |
| _tile_zero | tilezero | TILEZERO void _tile_zero(__tile dst); |
| _tpause | tpause | TPAUSE uint8_t _tpause(uint32_t control, uint64_t counter); |
| _tzcnt_u32 | tzcnt | TZCNT unsigned __int32 _tzcnt_u32(unsigned __int32 src); |
| _tzcnt_u64 | tzcnt | TZCNT unsigned __int64 _tzcnt_u64(unsigned __int64 src); |
| _u32 | mulx | unsigned int mulx_u32(unsigned int a, unsigned int b, unsigned int * hi); |