The intel intrinsic functions have the subtype of the vector built into their names. For example, _mm_set1_ps
is a ps
, which is a packed single-precision
aka. a float
. Although the meaning of most of them is clear, their "full name" like packed single-precision
isn't always clear from the function descriptions. I have created the following table. Unfortunately some entries are missing. What are the value of them? Additional questions below the table.
abbreviation | full name | C/++ equivalent |
---|---|---|
ps | packed single-precision | float |
ph | packed half-precision | None** |
pd | packed double-precision | double |
pch | packed half-precision complex | None** |
pi8 | ??? | int8_t |
pi16 | ??? | int16_t |
pi32 | ??? | int32_t |
epi8 | ??? | int8_t |
epi16 | ??? | int16_t |
epi32 | ??? | int32_t |
epi64 | ??? | int64_t |
epi64x | ??? | int64_t |
Additional questions:
- Have I missed any?
- What is the difference between
epiX
andpiX
? - Why does no
pi64
exist? - What is the difference between
epi64
andepi64x
?
** I have found this, but there seems to be no standard way to represent a half precision (complex) value in C/++. Please correct me if this has changed in any way.