如何在 Ubuntu 虚拟机中编译 avx 程序集?

如何在 Ubuntu 虚拟机中编译 avx 程序集?

我正在尝试编译一些 avx 指令

{
        double* dst = NULL;
    const int* ait = a;
    int N=0;
    const int* aend = a+N;
    __asm__ __volatile__ (
        "0:\n"
        "vmovupd (%1),%%xmm0\n"
        "vcvtdq2pd %%xmm0,%%ymm1\n"
        "vmovapd %%ymm1,(%0)\n"
        "addq $16,%1\n"
        "addq $32,%0\n"
        "cmpq %2,%1\n"
        "jb 0b\n"
        : "=r"(dst),"=r"(ait),"=r"(aend)
        : "0"(dst),"1"(ait),"2"(aend)
        : "%xmm0","%ymm1","memory"
        );
    }

我收到此错误:

error: unknown register name ‘%ymm1’ in ‘asm’

尽管我使用旗帜-mmmx,并且-msse2如本文所示stackoverflow 帖子它对我不起作用。

我应该怎么办?

相关内容