我有 2 个变量来模拟 X86 XMM 和 YMM,如下所示:
uint64_t xmm_value[2];
uint64_t ymm_value[4];
Run Code Online (Sandbox Code Playgroud)
现在我想使用内联汇编来读取和写入 XMM/YMM 寄存器。
xmm_value到寄存器XMM0?YMM0到ymm_value?我已经尝试搜索示例内联汇编来执行此操作,但找不到任何好的答案。谢谢!
因此,在一些帮助下,我编写了这段代码,并且编译正常。我用于movupsXMM 和vmovupsYMM,如下所示。这是正确的吗?我还可以优化我的代码吗?
__m128 xmm0;
__m256 ymm0;
// write to XMM0, and read from YMM0
__asm__("movups %1, %%xmm0\n\t"
"vmovups %%ymm0, %0"
: "=m"(ymm0)
: "m"(xmm0)
: "xmm0", "ymm0");
Run Code Online (Sandbox Code Playgroud)
更新 2:这是我的完整代码(添加了 vpbroadcastb)
__m128 xmm0;
__m256 ymm0;
// write to XMM0, and read from YMM0
__asm__("movups %1, %%xmm0\n\t"
"vpbroadcastb %%xmm0, %%ymm0\n\t"
"vmovups …Run Code Online (Sandbox Code Playgroud) Riscv32 和 Riscv64 有什么区别?我一直在研究 ISA 文档,但找不到任何地方明确提到它,所以现在很困惑。
不幸的是,我无法从谷歌找到任何关于此的文档。有什么指针吗?