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 判斷是否存在相同的
下一篇將介紹實際應用