[FFmpeg-cvslog] x86: use nop cpu directives only if supported
Mans Rullgard
git at videolan.org
Tue Aug 7 23:09:27 CEST 2012
ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Mon Aug 6 00:34:51 2012 +0100| [180d43bc67cec071c5a0f4807aa66f7b6242edc1] | committer: Mans Rullgard
x86: use nop cpu directives only if supported
nasm does not support 'CPU foonop' directives. This adds a configure
test for the directive and uses it only if supported.
Signed-off-by: Mans Rullgard <mans at mansr.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=180d43bc67cec071c5a0f4807aa66f7b6242edc1
---
configure | 2 ++
libavutil/x86/x86inc.asm | 12 +++++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/configure b/configure
index e9058d4..a97198c 100755
--- a/configure
+++ b/configure
@@ -1084,6 +1084,7 @@ HAVE_LIST="
closesocket
cmov
cpuid
+ cpunop
dcbzl
dev_bktr_ioctl_bt848_h
dev_bktr_ioctl_meteor_h
@@ -2889,6 +2890,7 @@ EOF
die "yasm not found, use --disable-yasm for a crippled build"
check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx
check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4
+ check_yasm "CPU amdnop" && enable cpunop
fi
case "$cpu" in
diff --git a/libavutil/x86/x86inc.asm b/libavutil/x86/x86inc.asm
index 86c406f..e729924 100644
--- a/libavutil/x86/x86inc.asm
+++ b/libavutil/x86/x86inc.asm
@@ -91,8 +91,14 @@
default rel
%endif
+%macro CPUNOP 1
+ %if HAVE_CPUNOP
+ CPU %1
+ %endif
+%endmacro
+
; Always use long nops (reduces 0x90 spam in disassembly on x86_32)
-CPU amdnop
+CPUNOP amdnop
; Macros to eliminate most code duplication between x86_32 and x86_64:
; Currently this works only for leaf functions which load all their arguments
@@ -589,7 +595,7 @@ SECTION .note.GNU-stack noalloc noexec nowrite progbits
; All subsequent functions (up to the next INIT_CPUFLAGS) is built for the specified cpu.
; You shouldn't need to invoke this macro directly, it's a subroutine for INIT_MMX &co.
%macro INIT_CPUFLAGS 0-2
- CPU amdnop
+ CPUNOP amdnop
%if %0 >= 1
%xdefine cpuname %1
%assign cpuflags cpuflags_%1
@@ -612,7 +618,7 @@ SECTION .note.GNU-stack noalloc noexec nowrite progbits
%define movu lddqu
%endif
%if notcpuflag(mmx2)
- CPU basicnop
+ CPUNOP basicnop
%endif
%else
%xdefine SUFFIX
More information about the ffmpeg-cvslog
mailing list