diff options
author | Ramiro Polla <ramiro.polla@gmail.com> | 2010-10-06 01:26:13 +0000 |
---|---|---|
committer | Ramiro Polla <ramiro.polla@gmail.com> | 2010-10-06 01:26:13 +0000 |
commit | 6f74fb03cde1266feea8882d5b672e827ad8f55b (patch) | |
tree | cb0832cae1c522fffe080d15174c38d2afa489da | |
parent | dd68d4db430089bff70f62a38cb84e07d183a435 (diff) | |
download | ffmpeg-6f74fb03cde1266feea8882d5b672e827ad8f55b.tar.gz |
Check whether compiler supports xmm registers in asm clobber list
Originally committed as revision 25362 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rwxr-xr-x | configure | 4 | ||||
-rw-r--r-- | libavutil/x86_cpu.h | 20 |
2 files changed, 24 insertions, 0 deletions
@@ -1074,6 +1074,7 @@ HAVE_LIST=" VirtualAlloc winsock2_h xform_asm + xmm_clobbers yasm " @@ -2585,6 +2586,9 @@ EOF check_asm ebx_available '""::"b"(0)' && check_asm ebx_available '"":::"%ebx"' + # check whether xmm clobbers are supported + check_asm xmm_clobbers '"":::"%xmm0"' + # check whether more than 10 operands are supported check_cc <<EOF && enable ten_operands int main(void) { diff --git a/libavutil/x86_cpu.h b/libavutil/x86_cpu.h index b1b7d8b978..c3341c232d 100644 --- a/libavutil/x86_cpu.h +++ b/libavutil/x86_cpu.h @@ -75,4 +75,24 @@ typedef int x86_reg; # define BROKEN_RELOCATIONS 1 #endif +/* + * If gcc is not set to support sse (-msse) it will not accept xmm registers + * in the clobber list for inline asm. XMM_CLOBBERS takes a list of xmm + * registers to be marked as clobbered and evaluates to nothing if they are + * not supported, or to the list itself if they are supported. Since a clobber + * list may not be empty, XMM_CLOBBERS_ONLY should be used if the xmm + * registers are the only in the clobber list. + * For example a list with "eax" and "xmm0" as clobbers should become: + * : XMM_CLOBBERS("xmm0",) "eax" + * and a list with only "xmm0" should become: + * XMM_CLOBBERS_ONLY("xmm0") + */ +#if HAVE_XMM_CLOBBERS +# define XMM_CLOBBERS(...) __VA_ARGS__ +# define XMM_CLOBBERS_ONLY(...) : __VA_ARGS__ +#else +# define XMM_CLOBBERS(...) +# define XMM_CLOBBERS_ONLY(...) +#endif + #endif /* AVUTIL_X86_CPU_H */ |