Simplify handling compiler handling in MMX code
authorSøren Sandmann <sandmann@redhat.com>
Sat, 12 Apr 2008 04:22:35 +0000 (00:22 -0400)
committerSøren Sandmann <sandmann@redhat.com>
Sat, 12 Apr 2008 04:22:35 +0000 (00:22 -0400)
Instead of using the parameters --param inline-unit-growth=10000 and
--param large-function-growth=10000", just make the inline functions
__always_inline__.

Also support Intel's compiler in pixman-mmx.c.

Based on a patch by Serhat <ubunturk@gmail.com>

configure.ac
pixman/pixman-mmx.c

index 6b0efcb..0f52b87 100644 (file)
@@ -129,7 +129,7 @@ AC_MSG_RESULT($have_gcc4)
 dnl ===========================================================================
 dnl Check for MMX
 
-MMX_CFLAGS="-mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000"
+MMX_CFLAGS="-mmmx -Winline"
 
 have_mmx_intrinsics=no
 AC_MSG_CHECKING(whether to use MMX intrinsics)
@@ -197,7 +197,7 @@ AM_CONDITIONAL(USE_SSE, test $have_sse_intrinsics = yes)
 dnl ===========================================================================
 dnl Check for SSE2
 
-SSE_CFLAGS="-mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000"
+SSE_CFLAGS="-mmmx -msse2 -Winline"
 
 have_sse2_intrinsics=no
 AC_MSG_CHECKING(whether to use SSE2 intrinsics)
index 8afbcb8..024dfee 100644 (file)
@@ -142,28 +142,33 @@ static const MMXData c =
 #endif
 };
 
-#ifdef _MSC_VER
-#undef inline
-#define inline __forceinline
-#endif
-
 #ifdef __GNUC__
-#define MC(x) ((__m64) c.mmx_##x)
+#    ifdef __ICC
+#        define MC(x)  M64(c.mmx_##x)
+#    else
+#        define MC(x) ((__m64)c.mmx_##x)
+#    endif
+#    define inline __inline__ __attribute__ ((__always_inline__))
 #endif
+
 #ifdef _MSC_VER
-#define MC(x) c.mmx_##x
+#    define MC(x) c.mmx_##x
+#    undef inline
+#    define inline __forceinline
 #endif
 
 static inline __m64
 M64 (ullong x)
 {
-#ifdef __GNUC__
+#ifdef __ICC
+    return _mm_cvtsi64_m64 (x);
+#elif defined (__GNUC__)
     return (__m64)x;
 #endif
 
 #ifdef _MSC_VER
     __m64 res;
-    
+
     res.m64_u64 = x;
     return res;
 #endif
@@ -172,7 +177,9 @@ M64 (ullong x)
 static inline ullong
 ULLONG (__m64 x)
 {
-#ifdef __GNUC__
+#ifdef __ICC
+    return _mm_cvtm64_si64 (x);
+#elif defined (__GNUC__)
     return (ullong)x;
 #endif