From 8c75ba55a4367c854b577c849ea2195bd78c4c81 Mon Sep 17 00:00:00 2001 From: Anton Mitrofanov Date: Sat, 1 Aug 2015 17:27:31 +0200 Subject: 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. Also add pmacsdql emulation. Signed-off-by: Henrik Gramner Signed-off-by: Anton Khirnov --- libavutil/x86/x86inc.asm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'libavutil') diff --git a/libavutil/x86/x86inc.asm b/libavutil/x86/x86inc.asm index a6e1f333c3..4c0a4bdb1b 100644 --- a/libavutil/x86/x86inc.asm +++ b/libavutil/x86/x86inc.asm @@ -1410,15 +1410,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 ; tzcnt is equivalent to "rep bsf" and is backwards-compatible with bsf. -- cgit v1.2.3