vpcmpeqb & vpcmpmskb
vpcmpeqb
Section titled “vpcmpeqb”指令名称含义如下
- v是avx系列前缀
- Packed在前面是整数指令
- cmp比较,eq是equal相等的,还有GT(Greater Than)选项
- b表示byte
vpcmpeqb ymm0, ymm0, ymm1具体作用是将ymm0和ymm1逐byte比较,相等的byte是FF,不相等是00,最后将结果存入ymm0
vpmovmskb
Section titled “vpmovmskb”这里的msk指的是mask,取ymm0的每个byte的最高位变成32 bits的内容存入edx
vpmovmskb edx, ymm0比如ymm0以32个bytes来看,原本是[10001000, 01001000, 10001100, …]
这里就是取了1 0 1最高位,将这些拼成32位给edx寄存器
这个指令dst也支援reg64,但对32位寄存器写入动作会触发高32位清零结果是相同的
把vpcmpeqb和vpmovskb结合起来的话,比对ymm0和ymm1是否相同,相同的FF,不相同的00
经过vpmovskb就会得到相同是1,不同是0的遮罩了
也可以 test edx, edx 判断是否存在相同的
下一篇将介绍实际应用