我最近在看一个汇编代码,它在128位的xmm寄存器上使用了psadbw
和pshufd
。
根据x86架构上的here文档。它显示pshufd xmm0, xmm0, imm8
,但我不明白我们如何在什么情况下实际使用它。
类似地,psadbw
计算字节的绝对差的总和。所以,它是否意味着像128位寄存器(16字节)。假设我的指令是psadbw xmm0 xmm5
,这和|1st byte of xmm5 - 1st byte of xmm0| + |2nd byte of xmm5 - 2nd byte of xmm0| + ... + | 16th byte of xmm5 - 16th byte of xmm0|
一样吗?如果不是,那是如何工作的。
谁能提供一个实际的场景?
1条答案
按热度按时间eh57zj3b1#
这里有一个实际的场景。
psadbw
指令Map到_mm_sad_epu8
SSE2内部,可以在Chromium的zlib分支(code)中找到。另一用途是在运动估计中:https://wiki.mozilla.org/SIMD/Uses/SAD的