В настоящее время я пытаюсь перейти от использования NASM к использованию встроенной сборки в c, поскольку в будущем это значительно упростит связывание (особенно с встраиванием). Однако я не могу заставить мои векторные инструкции играть красиво. В сборке Intel я смог сделать следующее:
vpcmpeqb ymm0, [rdi]
Это будет считывать 32 байта из rdi
, сравнивать с ymm0
и отмечать равные байты. С AT & T я попытался сделать следующее в c встроенном ассемблере, но он просто не работает, он продолжает жаловаться на несоответствующие размеры операндов (где% 1 является входным значением "r"(s)
):
vpcmpeqb %%ymm0, %%ymm0, (%1)
Я собираю на g cc версия 9.2.1
.