小编aqu*_*019的帖子

用于读/写 XMM 和 YMM 寄存器的内联汇编代码?

我有 2 个变量来模拟 X86 XMM 和 YMM,如下所示:

uint64_t xmm_value[2];
uint64_t ymm_value[4];
Run Code Online (Sandbox Code Playgroud)

现在我想使用内联汇编来读取和写入 XMM/YMM 寄存器。

  • 如何编写GCC内联汇编来复制xmm_value到寄存器XMM0
  • 如何编写 GCC 内联汇编将寄存器复制YMM0ymm_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)

assembly gcc sse inline-assembly

6
推荐指数
1
解决办法
2678
查看次数

RISCV32 与 RISCV64

Riscv32 和 Riscv64 有什么区别?我一直在研究 ISA 文档,但找不到任何地方明确提到它,所以现在很困惑。

不幸的是,我无法从谷歌找到任何关于此的文档。有什么指针吗?

assembly riscv riscv32

1
推荐指数
1
解决办法
3767
查看次数

标签 统计

assembly ×2

gcc ×1

inline-assembly ×1

riscv ×1

riscv32 ×1

sse ×1