内联汇编中的 vpcmpeqb
vpcmpeqb in inline assembly
目前我正在尝试从使用 NASM 转向使用 c 中的内联汇编,因为这将使将来的链接更容易(尤其是使用内联)。但是,我无法让我的矢量指令很好地发挥作用。在 Intel 汇编中,我能够执行以下操作:
vpcmpeqb ymm0, [rdi]
这将从 rdi
中读取 32 个字节,与 ymm0
进行比较并标记相等的字节。对于 AT&T,我尝试在 c 内联 asm 中执行以下操作,但它不起作用,它一直抱怨操作数大小不匹配(其中 %1 是输入 "r"(s)
):
vpcmpeqb %%ymm0, %%ymm0, (%1)
我正在编译 gcc 版本 9.2.1
。
AT&T 使用不同的操作数顺序。要解决您的问题,您应该使用
vpcmpeqb (%1), %%ymm0, %%ymm0
此外,请阅读对话下的主题以了解有关此主题的更多信息。
目前我正在尝试从使用 NASM 转向使用 c 中的内联汇编,因为这将使将来的链接更容易(尤其是使用内联)。但是,我无法让我的矢量指令很好地发挥作用。在 Intel 汇编中,我能够执行以下操作:
vpcmpeqb ymm0, [rdi]
这将从 rdi
中读取 32 个字节,与 ymm0
进行比较并标记相等的字节。对于 AT&T,我尝试在 c 内联 asm 中执行以下操作,但它不起作用,它一直抱怨操作数大小不匹配(其中 %1 是输入 "r"(s)
):
vpcmpeqb %%ymm0, %%ymm0, (%1)
我正在编译 gcc 版本 9.2.1
。
AT&T 使用不同的操作数顺序。要解决您的问题,您应该使用
vpcmpeqb (%1), %%ymm0, %%ymm0
此外,请阅读对话下的主题以了解有关此主题的更多信息。