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 中维护的裁剪像素总数。
以下是示例程序 AvxPackedIntegerPixelClip 的结果:
| 项目 | 值 |
| — | — |
| NumClippedPixels1 | 327228 |
| NumClippedPixels2 | 327228 |
| 目标缓冲区内存比较结果 | 通过 |
同时,该程序的基准测试时间保存到了文件 __AvxPackedIntegerPixelClipTimed.csv 中。不同CPU下,C++和x86 - AVX版本的像素裁剪算法的平均执行时间如下表所示:
| CPU | AvxPiPixelClipCpp (C++) | AvxPiPixelClip_ (x86 - AV
超级会员免费看
订阅专栏 解锁全文
36

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



