diff options
author | Anton Mitrofanov <BugMaster@narod.ru> | 2015-08-01 17:27:31 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2015-08-11 11:02:27 +0200 |
commit | 8c75ba55a4367c854b577c849ea2195bd78c4c81 (patch) | |
tree | 5a5fb2cf76bc937c0770b026acb3a631821dc7a3 /libavutil/x86 | |
parent | 8f4a06faf45c1cbcabec610f4b47824171379934 (diff) | |
download | ffmpeg-8c75ba55a4367c854b577c849ea2195bd78c4c81.tar.gz |
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 <henrik@gramner.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavutil/x86')
-rw-r--r-- | libavutil/x86/x86inc.asm | 7 |
1 files changed, 5 insertions, 2 deletions
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. |