From: Anton Mitrofanov Date: Fri, 14 Feb 2014 11:53:58 +0000 (+0400) Subject: x86inc: warn if XOP integer FMA instruction emulation is impossible X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=039fab9203179f9e790abfd54ae5b2254ef803e7;p=libx264 x86inc: warn if XOP integer FMA instruction emulation is impossible Emulation requires a temporary register if arguments 1 and 4 are the same; this doesn't obey the semantics of the original instruction, so we can't emulate that in x86inc. ffmpeg has an x86util emulation for that case; I'll add it if x264's asm ever needs it. Also add pmacsdql emulation. --- diff --git a/common/x86/x86inc.asm b/common/x86/x86inc.asm index abeddf9e..7713bfa1 100644 --- a/common/x86/x86inc.asm +++ b/common/x86/x86inc.asm @@ -1385,15 +1385,18 @@ AVX_INSTR pfmul, 1, 0, 1 %macro %1 4-7 %1, %2, %3 %if cpuflag(xop) v%5 %1, %2, %3, %4 - %else + %elifnidn %1, %4 %6 %1, %2, %3 %7 %1, %4 + %else + %error non-xop emulation of ``%5 %1, %2, %3, %4'' is not supported %endif %endmacro %endmacro -FMA_INSTR pmacsdd, pmulld, paddd FMA_INSTR pmacsww, pmullw, paddw +FMA_INSTR pmacsdd, pmulld, paddd ; sse4 emulation +FMA_INSTR pmacsdql, pmuldq, paddq ; sse4 emulation FMA_INSTR pmadcswd, pmaddwd, paddd ; convert FMA4 to FMA3 if possible