判断 page 是否为零页,相比使用非 simd 指令性能提高很多,
bool page_is_zero_avx2(char * vaddr)
{
int avx2_num = PAGE_SIZE / 32;
bool zero = true;
unsigned int rc1, rc2;
int i = 0;
kernel_fpu_begin();
asm volatile("vpxor %ymm0,%ymm0,%ymm0");
for (i = 0; i < avx2_num; i += 2)
{
asm volatile("vmovdqa %0,%%ymm1" : : "m" (vaddr[i * 32]));
asm volatile("vpcmpeqb %ymm0,%ymm1,%ymm2");
asm volatile("vpmovmskb %%ymm2, %0" : "=r" (rc1));
asm volatile("vmovdqa %0,%%ymm1" : : "m" (vaddr[(i + 1) * 32]));
asm volatile(&
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 在内核态使用 intel avx2 加速内存操作
发表评论 取消回复