在内核态使用 intel avx2 加速内存操作
判断 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(&