From 4bd5583acea5d65a2f8fd8fcd5ab7b404af23f45 Mon Sep 17 00:00:00 2001 From: Anton Mitrofanov Date: Thu, 7 Apr 2016 12:48:29 +0300 Subject: x86inc: Improve handling of %ifid with multi-token parameters The yasm/nasm preprocessor only checks the first token, which means that parameters such as `dword [rax]` are treated as identifiers, which is generally not what we want. --- libavutil/x86/x86inc.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libavutil') diff --git a/libavutil/x86/x86inc.asm b/libavutil/x86/x86inc.asm index a53477b5f5..0bcfeb3295 100644 --- a/libavutil/x86/x86inc.asm +++ b/libavutil/x86/x86inc.asm @@ -1137,7 +1137,7 @@ INIT_XMM CHECK_AVX_INSTR_EMU {%1 %6, %7, %8}, %6, %8 %endif %if %5 && %4 == 0 - %ifnid %8 + %ifnnum sizeof%8 ; 3-operand AVX instructions with a memory arg can only have it in src2, ; whereas SSE emulation prefers to have it in src1 (i.e. the mov). ; So, if the instruction is commutative with a memory arg, swap them. @@ -1501,7 +1501,7 @@ FMA_INSTR pmadcswd, pmaddwd, paddd v%5%6 %1, %2, %3, %4 %elifidn %1, %2 ; If %3 or %4 is a memory operand it needs to be encoded as the last operand. - %ifid %3 + %ifnum sizeof%3 v%{5}213%6 %2, %3, %4 %else v%{5}132%6 %2, %4, %3 -- cgit v1.2.3