x86 Compiler Intrinsics
3623 intrinsics from the Intel® SDM, each mapped to the instruction it compiles to - page 1 of 37, alphabetical. The global search in the top nav also matches intrinsic names directly.
| Intrinsic | Instruction | Signature |
|---|---|---|
| _addcarry_u16 | adc | ADC extern unsigned char _addcarry_u16(unsigned char c_in, unsigned short src1, unsigned short src2, unsigned short *sum_out); |
| _addcarry_u32 | adc | ADC extern unsigned char _addcarry_u32(unsigned char c_in, unsigned int src1, unsigned char int, unsigned int *sum_out); |
| _addcarry_u64 | adc | ADC extern unsigned char _addcarry_u64(unsigned char c_in, unsigned __int64 src1, unsigned __int64 src2, unsigned __int64 |
| _addcarry_u8 | adc | ADC extern unsigned char _addcarry_u8(unsigned char c_in, unsigned char src1, unsigned char src2, unsigned char *sum_out); |
| _addcarryx_u32 | adcx | unsigned char _addcarryx_u32 (unsigned char c_in, unsigned int src1, unsigned int src2, unsigned int *sum_out); |
| _addcarryx_u64 | adcx | unsigned char _addcarryx_u64 (unsigned char c_in, unsigned __int64 src1, unsigned __int64 src2, unsigned __int64 *sum_out); |
| _bextr_u32 | bextr | BEXTR unsigned __int32 _bextr_u32(unsigned __int32 src, unsigned __int32 start. unsigned __int32 len); |
| _bextr_u64 | bextr | BEXTR unsigned __int64 _bextr_u64(unsigned __int64 src, unsigned __int32 start. unsigned __int32 len); |
| _blsi_u32 | blsi | BLSI unsigned __int32 _blsi_u32(unsigned __int32 src); |
| _blsi_u64 | blsi | BLSI unsigned __int64 _blsi_u64(unsigned __int64 src); |
| _blsmsk_u32 | blsmsk | BLSMSK unsigned __int32 _blsmsk_u32(unsigned __int32 src); |
| _blsmsk_u64 | blsmsk | BLSMSK unsigned __int64 _blsmsk_u64(unsigned __int64 src); |
| _blsr_u32 | blsr | BLSR unsigned __int32 _blsr_u32(unsigned __int32 src); |
| _blsr_u64 | blsr | BLSR unsigned __int64 _blsr_u64(unsigned __int64 src); |
| _bnd_chk_ptr_lbounds | bndcl | BNDCL void _bnd_chk_ptr_lbounds(const void *q) |
| _bnd_chk_ptr_ubounds | bndcu | BNDCU .void _bnd_chk_ptr_ubounds(const void *q) |
| _bnd_copy_ptr_bounds | bndmov | BNDMOV void * _bnd_copy_ptr_bounds(const void *q, const void *r) |
| _bnd_set_ptr_bounds | bndmk | BNDMKvoid * _bnd_set_ptr_bounds(const void * q, size_t size); |
| _bzhi_u32 | bzhi | BZHI unsigned __int32 _bzhi_u32(unsigned __int32 src, unsigned __int32 index); |
| _bzhi_u64 | bzhi | BZHI unsigned __int64 _bzhi_u64(unsigned __int64 src, unsigned __int32 index); |
| _ceil_sd | roundsd | ROUNDSD __m128d mm_ceil_sd(__m128d dst, __m128d s1); |
| _ceil_ss | roundss | ROUNDSS __m128 mm_ceil_ss(__m128 dst, __m128 s1); |
| _cmpccxadd_epi32 | cmpccxadd | CMPCCXADD int _cmpccxadd_epi32 (void* __A, int __B, int __C, const int __D); |
| _cmpccxadd_epi64 | cmpccxadd | CMPCCXADD __int64 _cmpccxadd_epi64 (void* __A, __int64 __B, __int64 __C, const int __D); |
| _directstoreu_u32 | movdiri | MOVDIRI void _directstoreu_u32(void *dst, uint32_t val) |
| _directstoreu_u64 | movdiri | MOVDIRI void _directstoreu_u64(void *dst, uint64_t val) |
| _enqcmd | enqcmd | ENQCMD int_enqcmd(void *dst, const void *src) |
| _enqcmds | enqcmds | ENQCMDS int_enqcmds(void *dst, const void *src) |
| _epi16 | pmovsxbw | PMOVSXBW __m128i _mm_ cvtepi8_epi16 ( __m128i a); |
| _epi16_mask | vpcmpw | VPCMPW __mmask32 _mm512_cmp[eq|ge|gt|le|lt|neq]_epi16_mask( __m512i a, __m512i b); |
| _epi32 | pmovsxwd | PMOVSXWD __m128i _mm_ cvtepi16_epi32 ( __m128i a); |
| _epi32_mask | vpcmpd | VPCMPD __mmask16 _mm512_cmp[eq|ge|gt|le|lt|neq]_epi32_mask( __m512i a, __m512i b); |
| _epi64 | pmovsxbq | PMOVSXBQ __m128i _mm_ cvtepi8_epi64 ( __m128i a); |
| _epi64_mask | vpcmpq | VPCMPQ __mmask8 _mm512_cmp[eq|ge|gt|le|lt|neq]_epi64_mask( __m512i a, __m512i b); |
| _epi8_mask | vpcmpb | VPCMPB __mmask64 _mm512_cmp[eq|ge|gt|le|lt|neq]_epi8_mask( __m512i a, __m512i b); |
| _epu16_mask | vpcmpuw | VPCMPUW __mmask32 _mm512_cmp[eq|ge|gt|le|lt|neq]_epu16_mask( __m512i a, __m512i b, int cmp); |
| _epu32_mask | vpcmpud | VPCMPUD __mmask16 _mm512_cmp[eq|ge|gt|le|lt|neq]_epu32_mask( __m512i a, __m512i b); |
| _epu64_mask | vpcmpuq | VPCMPUQ __mmask8 _mm512_cmp[eq|ge|gt|le|lt|neq]_epu64_mask( __m512i a, __m512i b); |
| _epu8_mask | vpcmpub | VPCMPUB __mmask64 _mm512_cmp[eq|ge|gt|le|lt|neq]_epu8_mask( __m512i a, __m512i b, int cmp); |
| _floor_sd | roundsd | ROUNDSD __m128d mm_floor_sd(__m128d dst, __m128d s1); |
| _floor_ss | roundss | ROUNDSS __m128 mm_floor_ss(__m128 dst, __m128 s1); |
| _incsspd | incsspq | INCSSPD void _incsspd(int); |
| _incsspq | incsspq | INCSSPQ void _incsspq(int); |
| _inserti32x4 | vinserti128 | VINSERTI32x4 _mm512i _inserti32x4( __m512i a, __m128i b, int imm); |
| _invpcid | invpcid | INVPCID void _invpcid(unsigned __int32 type, void * descriptor); |
| _kadd_mask16 | kaddw | KADDW __mmask16 _kadd_mask16 (__mmask16 a, __mmask16 b); |
| _kadd_mask32 | kaddw | KADDD __mmask32 _kadd_mask32 (__mmask32 a, __mmask32 b); |
| _kadd_mask64 | kaddw | KADDQ __mmask64 _kadd_mask64 (__mmask64 a, __mmask64 b); |
| _kadd_mask8 | kaddb | KADDB __mmask8 _kadd_mask8 (__mmask8 a, __mmask8 b); |
| _lzcnt_u32 | lzcnt | LZCNT unsigned __int32 _lzcnt_u32(unsigned __int32 src); |
| _lzcnt_u64 | lzcnt | LZCNT unsigned __int64 _lzcnt_u64(unsigned __int64 src); |
| _m_min_pu8 | pminub | PMINUB __m64 _m_min_pu8 (__m64 a, __m64 b) |
| _mask_inserti32x4 | vinserti128 | VINSERTI32x4 _mm512i _mask_inserti32x4(__m512i s, __mmask16 k, __m512i a, __m128i b, int imm); |
| _maskz_inserti32x4 | vinserti128 | VINSERTI32x4 _mm512i _maskz_inserti32x4( __mmask16 k, __m512i a, __m128i b, int imm); |
| _mm256_2intersect_epi32 | vp2intersectd | VP2INTERSECTD void _mm256_2intersect_epi32(__m256i, __m256i, __mmask8 *, __mmask8 *); |
| _mm256_2intersect_epi64 | vp2intersectq | VP2INTERSECTQ void _mm256_2intersect_epi64(__m256i, __m256i, __mmask8 *, __mmask8 *); |
| _mm256_abs_epi16 | pabsb | VPABSW __m256i _mm256_abs_epi16 (__m256i a) |
| _mm256_abs_epi32 | vpabsd | VPABSD __m256i _mm256_abs_epi32 (__m256i a) |
| _mm256_abs_epi8 | pabsb | VPABSB __m256i _mm256_abs_epi8 (__m256i a) |
| _mm256_add_epi16 | paddb | VPADDW __m256i _mm256_add_epi16 ( __m256i a, __m256i b); |
| _mm256_add_epi32 | vpaddd | VPADDD __m256i _mm256_add_epi32 ( __m256i a, __m256i b); |
| _mm256_add_epi64 | paddb | VPADDQ __m256i _mm256_add_epi64 ( __m256i a, __m256i b); |
| _mm256_add_epi8 | vpaddb | VPADDB __m256i _mm256_add_epi8 (__m256ia,__m256i b ); |
| _mm256_add_pd | addpd | ADDPD __m256d _mm256_add_pd (__m256d a, __m256d b); |
| _mm256_add_ph | vaddph | VADDPH __m256h _mm256_add_ph (__m256h a, __m256h b); |
| _mm256_add_ps | addps | ADDPS __m256 _mm256_add_ps (__m256 a, __m256 b); |
| _mm256_adds_epi16 | paddsb | VPADDSW __m256i _mm256_adds_epi16 ( __m256i a, __m256i b) |
| _mm256_adds_epi8 | paddsb | VPADDSB __m256i _mm256_adds_epi8 ( __m256i a, __m256i b) |
| _mm256_adds_epu16 | paddusb | VPADDUSW __m256i _mm256_adds_epu16 ( __m256i a, __m256i b) |
| _mm256_adds_epu8 | paddusb | VPADDUSB __m256i _mm256_adds_epu8 ( __m256i a, __m256i b) |
| _mm256_addsub_pd | addsubpd | VADDSUBPD __m256d _mm256_addsub_pd (__m256d a, __m256d b) |
| _mm256_addsub_ps | addsubps | VADDSUBPS __m256 _mm256_addsub_ps (__m256 a, __m256 b) |
| _mm256_aesdec_epi128 | vaesdec | VAESDEC __m256i _mm256_aesdec_epi128(__m256i, __m256i); |
| _mm256_aesenc_epi128 | vaesenc | VAESENC __m256i _mm256_aesenc_epi128(__m256i, __m256i); |
| _mm256_aesenclast_epi128 | aesenclast | VAESENCLAST __m256i _mm256_aesenclast_epi128(__m256i, __m256i); |
| _mm256_alignr_epi8 | palignr | VPALIGNR __m256i _mm256_alignr_epi8 (__m256i a, __m256i b, const int n) |
| _mm256_and_pd | andpd | VANDPD __m256d _mm256_and_pd (__m256d a, __m256d b); |
| _mm256_and_ps | andps | VANDPS __m256 _mm256_and_ps (__m256 a, __m256 b); |
| _mm256_and_si256 | pand | VPAND __m256i _mm256_and_si256 ( __m256i a, __m256i b) |
| _mm256_andnot_si256 | pandn | VPANDN __m256i _mm256_andnot_si256 ( __m256i a, __m256i b) |
| _mm256_avg_epu16 | pavgb | VPAVGW __m256i _mm256_avg_epu16 ( __m256i a, __m256i b) |
| _mm256_avg_epu8 | pavgb | VPAVGB __m256i _mm256_avg_epu8 ( __m256i a, __m256i b) |
| _mm256_bitshuffle_epi64_mask | vpshufbitqmb | VPSHUFBITQMB __mmask32 _mm256_bitshuffle_epi64_mask(__m256i, __m256i); |
| _mm256_blend_epi16 | pblendw | VPBLENDW __m256i _mm256_blend_epi16 (__m256i v1, __m256i v2, const int mask) |
| _mm256_blend_pd | blendpd | VBLENDPD __m256d _mm256_blend_pd (__m256d a, __m256d b, const int mask); |
| _mm256_blend_ps | blendps | VBLENDPS __m256 _mm256_blend_ps (__m256 a, __m256 b, const int mask); |
| _mm256_blendv_epi8 | pblendvb | VPBLENDVB __m256i _mm256_blendv_epi8 (__m256i v1, __m256i v2, __m256i mask); |
| _mm256_blendv_pd | blendvpd | VBLENDVPD __m256 _mm256_blendv_pd (__m256d a, __m256d b, __m256d mask); |
| _mm256_blendv_ps | blendvps | VBLENDVPS __m256 _mm256_blendv_ps (__m256 a, __m256 b, __m256 mask); |
| _mm256_broadcast_f32x2 | vbroadcastss | VBROADCASTF32x2 __m256 _mm256_broadcast_f32x2( __m128 a); |
| _mm256_broadcast_f32x4 | vbroadcastss | VBROADCASTF32x4 __m256 _mm256_broadcast_f32x4( __m128 a); |
| _mm256_broadcast_f64x2 | vbroadcastss | VBROADCASTF64x2 __m256d _mm256_broadcast_f64x2( __m128d a); |
| _mm256_broadcast_pd | vbroadcastf128 | VBROADCASTF128 __m256d _mm256_broadcast_pd(__m128d * a); |
| _mm256_broadcast_ps | vbroadcastf128 | VBROADCASTF128 __m256 _mm256_broadcast_ps(__m128 * a); |
| _mm256_broadcast_sd | vbroadcastsd | VBROADCASTSD __m256d _mm256_broadcast_sd(double *a); |
| _mm256_broadcast_ss | vbroadcastss | VBROADCASTSS __m256 _mm256_broadcast_ss(float *a); |
| _mm256_broadcastsd_pd | vbroadcastsd | VBROADCASTSD __m256d _mm256_broadcastsd_pd(__m128d a); |
| _mm256_broadcastss_ps | vbroadcastss | VBROADCASTSS __m256 _mm256_broadcastss_ps(__m128 a); |
| _mm256_bsrli_epi128 | psrldq | VPSRLDQ __m256i _mm256_bsrli_epi128 ( __m256i, const int) |
| _mm256_ceil_pd | roundpd | __m256 _mm256_ceil_pd(__m256d s1) |