SSE指令简易分类整理

偶尔会使用SSE指令做优化,但是有的时候想不起来用什么指令,因此做一个个人偏向的简单整理,而具体功能可参考一下面网站。

SSE所有指令的网址:
https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=4106,7012,6396,6366,4107,4106,80,1104,1074,784,218,914,4329&techs=SSE_ALL

数学类:
绝对值:abs
加法:add,adds
减法:sub,subs
加减(一半做加法,一半做减法):addsub
加法+拼接:hadd,hadds
减法+拼接:hsub,hsubs
乘法:mul,mulhi,mulhrs,mullo
除法:div
倒数:rcp
平方根:sqrt,rsqrt
条件乘法再求和:dp
乘法+加法+扩展位宽:madd, maddubs
平均(自带四舍五入):avg,pavg
向上下取整:ceil,floor
四舍五入:round
最大/小值:max,min,minpos
绝对值误差计算:mpsadbw,sad

拼接类:
拼接+位移+截取:alignr
依据mask混合:blend,blendv
二合一(降位+饱和):packs,packus
二合一(各取部分):unpackhi,unpacklo

类型转换类:
_m128和_m64型间的转换:cast, movep
不同类型转换:cvt
不同类型转换(带截位):cvtt
mask获取(也许可以用于获取符号):movemask

赋值类:
赋值:set,setr,setzero
未定义:undefined
载入(非对齐):loadu,lddqu
载入(对齐):load,loadr,loadl,loadh,stream_load
载入(单个):load1, loaddup
存储(非对齐):storeu,lddqu
存储(对齐):store,storer,storel,storeh,stream
存储(单个):store1
存储(依据mask):maskmove
拷贝:move
部分类型转换为复制功能:cvtsi[xx]_si[yy]
提取:extract,pextrw
插入:insert,pinsrw
整理顺序:pshufw,shuffle
正负操作:sign
矩阵操作:TRANSPOSE4

位移类:
左右移(字节):bslli,bsrli
左右移(bit):sll, slli, sra, srai, srl, srli

逻辑类:
并:and
或:or
亦或:xor
先非后并:andnot
比较:cmp[eq, gt, ge, lt, le, neq, ngt, nge, nlt, nle]
比较(返回bool):com[ieq, igt, ige, ilt, ile, ineq]
比较(非数异常+返回bool):ucom[ieq, igt, ige, ilt, ile, ineq]
判断非数:cmp[ord, unord]
0和1检测:test

内存类:
申请和释放:malloc,free

字符类:
都是str做关键字,用的少

不太清楚应用场景:
清空缓存?:clflush
循环冗余校验?:crc32
MXCSR相关?:MODE,EXCEPTION,getcsr,setcsr
fence相关?:lfence,mfence,sfence

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值