一、数据类型
__m128 包含4个float类型数字的向量
__m128d 包含2个double类型数字的向量
__m128i 包含若干个整型数字的向量
__m256 包含8个float类型数字的向量
__m256d 包含4个double类型数字的向量
__m256i 包含若干个整型数字的向量
float 4byte(32B)
double 8byte(64B)
char 1byte(8B)
short 2byte(16B)
int 4byte(32B)
long 8byte(64B)
二、函数
基本格式:_mm<bit_width>_<name>_<data_type>
<bit_width> 向量的位长度,128时为空,
<name> 算术操作
<data_type> 数据类型
ps: float
pd:double
epi8/epi16/epi32/epi64: 整型 8bit/16bit/32bit/64bit
epu8/epu16/epu32/epi64: 无符号整型 8bit/16bit/32bit/64bit
m128/m128i/m128d/m256/m256i/m256d:输入值与返回类型不同时会出现
si128/si256:128bit/256bit 整型
(一)初始化
1)用0初始化 setzero
2)一个标量初始化 set1
3) 多个标量初始化 set
(二)数据读取
1)对齐 load
2)未对齐 loadu
(三)数据写回
1)对齐 store
2)未对齐 storeu
(四)算术运算
1)加法 add
2)减法 sub
3)水平加法 hadd
4)水平减法 hsub
5)乘法 mul
6)乘法(取运算结果高位)mulhi
7)乘法(取运算结果低位)mullo
8)除法 div
(5)类型转换
__m256 _mm256_castpd_ps (__m256d a)
__m256i _mm256_castpd_si256 (__m256d a)
__m256d _mm256_castpd128_pd256 (__m128d a)
__m128d _mm256_castpd256_pd128 (__m256d a)
__m256d _mm256_castps_pd (__m256 a)
__m256i _mm256_castps_si256 (__m256 a)
__m256 _mm256_castps128_ps256 (__m128 a)
__m128 _mm256_castps256_ps128 (__m256 a)
__m256i _mm256_castsi128_si256 (__m128i a)
__m256d _mm256_castsi256_pd (__m256i a)
__m256 _mm256_castsi256_ps (__m256i a)
__m128i _mm256_castsi256_si128 (__m256i a)
(6)其他运算
乘加 madd
绝对值 abs
取整 floor/ceil/round
间隔读取 unpack
插入元素 insert