Пытаюсь написать простую программу сборки. По какой-то причине условные ходы, кажется, выдают мне эту ошибку. Если я заменю их обычной инструкцией mov, она сработает. Что не так со следующим кодом?
.section .data
supported:
.asciz "AVX is supported"
notsupported:
.asciz "AVX is not supported"
.section .text
.global main
main:
movq $1, %rax
cpuid
andq $0x10000000, %rcx
cmovnz $supported, %rdi
cmovz $notsupported, %rdi
callq puts
movq $0, %rax
ret
cpuid.S:15: Error: operand type mismatch for `cmovnz'
cpuid.S:16: Error: operand type mismatch for `cmovz'