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>
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)
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)
#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
static inline ullong
ULLONG (__m64 x)
{
-#ifdef __GNUC__
+#ifdef __ICC
+ return _mm_cvtm64_si64 (x);
+#elif defined (__GNUC__)
return (ullong)x;
#endif