X86-AVX编程:从整数处理到新指令应用
1. 像素裁剪与阈值处理
1.1 像素裁剪
在像素裁剪过程中, vpmovmskb eax,ymm1 指令会创建裁剪像素的掩码,并将该掩码保存到寄存器 EAX 中。具体操作对应于 eax[i] = ymm1[i*8+7] (其中 i = 0,1,2, ... 31 )。随后, popcnt eax,eax 指令会统计并将当前像素块中裁剪像素的数量保存到 EAX 中。接着, add edx,eax 指令会更新 EDX 中维护的裁剪像素总数。主处理循环完成后,寄存器 EDX 的值会保存到 PcData 结构的 NumClippedPixels 成员中。
以下是不同CPU下像素裁剪算法的C++和汇编语言版本的平均执行时间(单位:微秒):
| CPU | AvxPiPixelClipCpp (C++) | AvxPiPixelClip_ (x86 - AVX) |
| — | — | — |
| Intel Core i7 - 4770 | 8866 | 1075 |
| Intel Core i7 - 4600U | 10235 | 1201 |
1.2 图像阈值处理
之前使用x86 - SSE指令集的 SsePack
超级会员免费看
订阅专栏 解锁全文
36

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



