为了将 __m256i 存储到特定的 YMM 寄存器(比如 YMM10),我使用以下代码
__m256i addr;
//load value to addr
asm ("vmovdqa %0,%%ymm10\n\t"
:
: "x" (addr)
:);
Run Code Online (Sandbox Code Playgroud)
为了将 YMM10 中的值加载到变量,我使用以下代码
__m256i readbuff;
asm ("vmovdqa %%ymm10,%0\n\t"\
: "=x" (readbuff)\
:\
:);
Run Code Online (Sandbox Code Playgroud)
我在这里面临的问题是,在我用一个值加载 YMM10 之后,我只使用了加载了值的寄存器的一半。我的意思是只加载了 128 位,另一半全为零。
我做错了什么吗?我不确定要使用什么指令 - vmovdqa、vmovaps、vmovups。请就此给我建议。