This appendix contains tables listing the class, functionality, and corresponding intrinsics for each class in the Intel® C++ Class Libraries for SIMD Operations. The following table lists all Intel C++ Compiler intrinsics that are not implemented in the C++ SIMD classes.
Operators | Corresponding Intrinsics | I128vec1, I64vec2, I32vec4, I16vec8, I8vec16 | I64vec, I32vec, I16vec, I8vec8 | F64vec2 | F32vec4 | F32vec1 |
---|---|---|---|---|---|---|
&, &= |
_mm_and_[x] |
si128 |
si64 |
pd |
ps |
ps |
|, |= |
_mm_or_[x] |
si128 |
si64 |
pd |
ps |
ps |
^, ^= |
_mm_xor_[x] |
si128 |
si64 |
pd |
ps |
ps |
Andnot |
_mm_andnot_[x] |
si128 |
si64 |
pd |
N/A |
N/A |
Operators | Corresponding Intrinsic | I64vec2 | I32vec4 | I16vec8 | I8vec16 | I32vec2 | I16vec4 | I8vec8 | F64vec2 | F32vec4 | F32vec1 |
---|---|---|---|---|---|---|---|---|---|---|---|
+, += |
_mm_add_[x] |
epi64 |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
-, -= |
_mm_sub_[x] |
epi64 |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
*, *= |
_mm_mullo_[x] |
N/A |
N/A |
epi16 |
N/A |
N/A |
pi16 |
N/A |
pd |
ps |
ss |
/, /= |
_mm_div_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
mul_high |
_mm_mulhi_[x] |
N/A |
N/A |
epi16 |
N/A |
N/A |
pi16 |
N/A |
N/A |
N/A |
N/A |
mul_add |
_mm_madd_[x] |
N/A |
N/A |
epi16 |
N/A |
N/A |
pi16 |
N/A |
N/A |
N/A |
N/A |
sqrt |
_mm_sqrt_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
rcp |
_mm_rcp_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
rcp_nr |
_mm_rcp_[x] _mm_add_[x] _mm_sub_[x] _mm_mul_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
rsqrt |
_mm_rsqrt_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
rsqrt_nr |
_mm_rsqrt_[x] _mm_sub_[x] _mm_mul_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
Operators | Corresponding Intrinsic | I128vec1 | I64vec2 | I32vec4 | I16vec8 | I8vec16 | I64vec1 | I32vec2 | I16vec4 | I8vec8 |
---|---|---|---|---|---|---|---|---|---|---|
>>,>>= |
_mm_srl_[x] |
N/A |
epi64 |
epi32 |
epi16 |
N/A |
si64 |
pi32 |
pi16 |
N/A |
<<, <<= |
_mm_sll_[x] |
N/A N/A |
epi64 |
epi32 |
epi16 |
N/A |
si64 si64 |
pi32 |
pi16 |
N/A |
Operators | Corresponding Intrinsic | I32vec4 | I16vec8 | I8vec16 | I32vec2 | I16vec4 | I8vec8 | F64vec2 | F32vec4 | F32vec1 |
---|---|---|---|---|---|---|---|---|---|---|
cmpeq |
_mm_cmpeq_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
cmpneq |
_mm_cmpeq_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
cmpgt |
_mm_cmpgt_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
cmpge |
_mm_cmpge_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
cmplt |
_mm_cmplt_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
cmple |
_mm_cmple_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
cmpngt |
_mm_cmpngt_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
cmpnge |
_mm_cmpnge_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
cmnpnlt |
_mm_cmpnlt_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
cmpnle |
_mm_cmpnle_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
* Note that _mm_andnot_[y] intrinsics do not apply to the fvec classes. |
Operators | Corresponding Intrinsic | I32vec4 | I16vec8 | I8vec16 | I32vec2 | I16vec4 | I8vec8 | F64vec2 | F32vec4 | F32vec1 |
---|---|---|---|---|---|---|---|---|---|---|
select_eq |
_mm_cmpeq_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
select_neq |
_mm_cmpeq_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
select_gt |
_mm_cmpgt_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
select_ge |
_mm_cmpge_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
select_lt |
_mm_cmplt_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
select_le |
_mm_cmple_[x] |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
ss |
select_ngt |
_mm_cmpgt_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
select_nge |
_mm_cmpge_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
select_nlt |
_mm_cmplt_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
select_nle |
_mm_cmple_[x] |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
pd |
ps |
ss |
* Note that _mm_andnot_[y] intrinsics do not apply to the fvec classes. |
Operators | Corresponding Intrinsic | I64vec2 | I32vec4 | I16vec8 | I8vec16 | I32vec2 | I16vec4 | I8vec8 | F64vec2 | F32vec4 | F32vec1 |
---|---|---|---|---|---|---|---|---|---|---|---|
unpack_high |
_mm_unpackhi_[x] |
epi64 |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
N/A
|
unpack_low |
_mm_unpacklo_[x] |
epi64 |
epi32 |
epi16 |
epi8 |
pi32 |
pi16 |
pi8 |
pd |
ps |
N/A
|
pack_sat |
_mm_packs_[x] |
N/A |
epi32 |
epi16 |
N/A |
pi32 |
pi16 |
N/A |
N/A |
N/A |
N/A |
packu_sat |
_mm_packus_[x] |
N/A |
N/A |
epi16 |
N/A |
N/A |
pu16 |
N/A |
N/A |
N/A |
N/A |
sat_add |
_mm_adds_[x] |
N/A |
N/A |
epi16 |
epi8 |
N/A |
pi16 |
pi8 |
pd |
ps |
ss |
sat_sub |
_mm_subs_[x] |
N/A |
N/A |
epi16 |
epi8 |
N/A |
pi16 |
pi8 |
pi16 |
pi8 |
pd |
Operators | Corresponding Intrinsic |
---|---|
F64vec2ToInt |
_mm_cvttsd_si32 |
F32vec4ToF64vec2 |
_mm_cvtps_pd |
F64vec2ToF32vec4 |
_mm_cvtpd_ps |
IntToF64vec2 |
_mm_cvtsi32_sd |
F32vec4ToInt |
_mm_cvtt_ss2si |
F32vec4ToIs32vec2 |
_mm_cvttps_pi32 |
IntToF32vec4 |
_mm_cvtsi32_ss |
Is32vec2ToF32vec4 |
_mm_cvtpi32_ps |