SIMD 整数指令详解
1. (v)phaddsw 指令
(v)phaddsw 指令有以下几种形式:
- phaddsw xmmdest, xmmsrc/mem128
- vphaddsw xmmdest, xmmsrc1, xmmsrc2/mem128
- vphaddsw ymmdest, ymmsrc1, ymmsrc2/mem256
该指令是水平有符号整数加法(带饱和处理,字),与 (v)phaddw 略有不同。它会对结果进行饱和处理,即正溢出时结果为 7FFFh,负下溢时结果为 8000h。饱和算术在音频和视频处理中表现出色,例如在音频处理中,标准加法可能产生难听的咔嗒声,而饱和处理只会产生削波音频信号,效果更好;在视频处理中,饱和处理产生的是褪色(白色)颜色,而不是模运算产生的怪异颜色。不过,目前没有针对双字操作数的水平饱和加法指令。
2. SIMD 整数减法指令
SIMD 整数减法指令不会影响任何标志位,进位、借位、溢出或下溢信息都会丢失。这些指令从第一个源操作数中减去第二个源操作数,并将结果存储在目标操作数中。具体指令如下表所示:
| 指令 | 操作数 | 描述 |
| — | — | — |
| psubb | xmmdest, xmm/mem128 | 16 通道字节减法 |
| vpsubb | xmmdest, xmmsrc, xmm/mem128 | 16 通道字节减法 |
| vpsubb | ymmdest, ymmsrc, ymm/mem256 | 32 通道字节减法 |
| psubw | xmmdest, xmm/mem128 |
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



