Commit 1359ef39 by Uros Bizjak Committed by Uros Bizjak

re PR target/34000 (GCC pedwarns about use of static inline functions from…

re PR target/34000 (GCC pedwarns about use of static inline functions from system headers in extern inline functions)

	PR target/34000
	PR target/35553
	* config/i386/xmmintrin.h: Change all static inline functions to
	extern inline and add __gnu_inline__ attribute.
	* config/i386/bmintrin.h: Ditto.
	* config/i386/smmintrin.h: Ditto.
	* config/i386/tmmintrin.h: Ditto.
	* config/i386/mmintrin-common.h: Ditto.
	* config/i386/ammintrin.h: Ditto.
	* config/i386/emmintrin.h: Ditto.
	* config/i386/pmmintrin.h: Ditto.
	* config/i386/mmintrin.h: Ditto.
	* config/i386/mm3dnow.h: Ditto.

testsuite/ChangeLog:

	PR target/34000
	PR target/35553
	* g++.dg/other/i386-3.C: New test.
	* gcc.target/i386/sse-13.c: Redefine extern instead of static.
	* gcc.target/i386/sse-14.c: Ditto.
	* gcc.target/i386/mmx-1.c: Ditto.
	* gcc.target/i386/mmx-2.c: Ditto.
	* gcc.target/i386/3dnow-1.c: Ditto.
	* gcc.target/i386/3dnow-2.c: Ditto.
	* gcc.target/i386/3dnowA-1.c: Ditto.
	* gcc.target/i386/3dnowA-2.c: Ditto.

From-SVN: r133169
parent 5d2edb29
2008-03-13 Uros Bizjak <ubizjak@gmail.com>
PR target/34000
PR target/35553
* config/i386/xmmintrin.h: Change all static inline functions to
extern inline and add __gnu_inline__ attribute.
* config/i386/bmintrin.h: Ditto.
* config/i386/smmintrin.h: Ditto.
* config/i386/tmmintrin.h: Ditto.
* config/i386/mmintrin-common.h: Ditto.
* config/i386/ammintrin.h: Ditto.
* config/i386/emmintrin.h: Ditto.
* config/i386/pmmintrin.h: Ditto.
* config/i386/mmintrin.h: Ditto.
* config/i386/mm3dnow.h: Ditto.
2008-03-13 Jakub Jelinek <jakub@redhat.com> 2008-03-13 Jakub Jelinek <jakub@redhat.com>
PR middle-end/35185 PR middle-end/35185
......
...@@ -37,26 +37,26 @@ ...@@ -37,26 +37,26 @@
/* We need definitions from the SSE3, SSE2 and SSE header files*/ /* We need definitions from the SSE3, SSE2 and SSE header files*/
#include <pmmintrin.h> #include <pmmintrin.h>
static __inline void __attribute__((__always_inline__, __artificial__)) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_stream_sd (double * __P, __m128d __Y) _mm_stream_sd (double * __P, __m128d __Y)
{ {
__builtin_ia32_movntsd (__P, (__v2df) __Y); __builtin_ia32_movntsd (__P, (__v2df) __Y);
} }
static __inline void __attribute__((__always_inline__, __artificial__)) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_stream_ss (float * __P, __m128 __Y) _mm_stream_ss (float * __P, __m128 __Y)
{ {
__builtin_ia32_movntss (__P, (__v4sf) __Y); __builtin_ia32_movntss (__P, (__v4sf) __Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_extract_si64 (__m128i __X, __m128i __Y) _mm_extract_si64 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_extrq ((__v2di) __X, (__v16qi) __Y); return (__m128i) __builtin_ia32_extrq ((__v2di) __X, (__v16qi) __Y);
} }
#ifdef __OPTIMIZE__ #ifdef __OPTIMIZE__
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_extracti_si64 (__m128i __X, unsigned const int __I, unsigned const int __L) _mm_extracti_si64 (__m128i __X, unsigned const int __I, unsigned const int __L)
{ {
return (__m128i) __builtin_ia32_extrqi ((__v2di) __X, __I, __L); return (__m128i) __builtin_ia32_extrqi ((__v2di) __X, __I, __L);
...@@ -67,14 +67,14 @@ _mm_extracti_si64 (__m128i __X, unsigned const int __I, unsigned const int __L) ...@@ -67,14 +67,14 @@ _mm_extracti_si64 (__m128i __X, unsigned const int __I, unsigned const int __L)
(unsigned int)(I), (unsigned int)(L))) (unsigned int)(I), (unsigned int)(L)))
#endif #endif
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_insert_si64 (__m128i __X,__m128i __Y) _mm_insert_si64 (__m128i __X,__m128i __Y)
{ {
return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y); return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y);
} }
#ifdef __OPTIMIZE__ #ifdef __OPTIMIZE__
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_inserti_si64(__m128i __X, __m128i __Y, unsigned const int __I, unsigned const int __L) _mm_inserti_si64(__m128i __X, __m128i __Y, unsigned const int __I, unsigned const int __L)
{ {
return (__m128i) __builtin_ia32_insertqi ((__v2di)__X, (__v2di)__Y, __I, __L); return (__m128i) __builtin_ia32_insertqi ((__v2di)__X, (__v2di)__Y, __I, __L);
......
...@@ -37,145 +37,145 @@ ...@@ -37,145 +37,145 @@
/* Internal data types for implementing the intrinsics. */ /* Internal data types for implementing the intrinsics. */
typedef float __v2sf __attribute__ ((__vector_size__ (8))); typedef float __v2sf __attribute__ ((__vector_size__ (8)));
static __inline void __attribute__((__always_inline__, __artificial__)) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_femms (void) _m_femms (void)
{ {
__builtin_ia32_femms(); __builtin_ia32_femms();
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pavgusb (__m64 __A, __m64 __B) _m_pavgusb (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pavgusb ((__v8qi)__A, (__v8qi)__B); return (__m64)__builtin_ia32_pavgusb ((__v8qi)__A, (__v8qi)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pf2id (__m64 __A) _m_pf2id (__m64 __A)
{ {
return (__m64)__builtin_ia32_pf2id ((__v2sf)__A); return (__m64)__builtin_ia32_pf2id ((__v2sf)__A);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfacc (__m64 __A, __m64 __B) _m_pfacc (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfacc ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfacc ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfadd (__m64 __A, __m64 __B) _m_pfadd (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfadd ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfadd ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfcmpeq (__m64 __A, __m64 __B) _m_pfcmpeq (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfcmpeq ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfcmpeq ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfcmpge (__m64 __A, __m64 __B) _m_pfcmpge (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfcmpge ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfcmpge ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfcmpgt (__m64 __A, __m64 __B) _m_pfcmpgt (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfcmpgt ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfcmpgt ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfmax (__m64 __A, __m64 __B) _m_pfmax (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfmax ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfmax ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfmin (__m64 __A, __m64 __B) _m_pfmin (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfmin ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfmin ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfmul (__m64 __A, __m64 __B) _m_pfmul (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfmul ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfmul ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfrcp (__m64 __A) _m_pfrcp (__m64 __A)
{ {
return (__m64)__builtin_ia32_pfrcp ((__v2sf)__A); return (__m64)__builtin_ia32_pfrcp ((__v2sf)__A);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfrcpit1 (__m64 __A, __m64 __B) _m_pfrcpit1 (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfrcpit1 ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfrcpit1 ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfrcpit2 (__m64 __A, __m64 __B) _m_pfrcpit2 (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfrcpit2 ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfrcpit2 ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfrsqrt (__m64 __A) _m_pfrsqrt (__m64 __A)
{ {
return (__m64)__builtin_ia32_pfrsqrt ((__v2sf)__A); return (__m64)__builtin_ia32_pfrsqrt ((__v2sf)__A);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfrsqit1 (__m64 __A, __m64 __B) _m_pfrsqit1 (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfrsqit1 ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfrsqit1 ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfsub (__m64 __A, __m64 __B) _m_pfsub (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfsub ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfsub ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfsubr (__m64 __A, __m64 __B) _m_pfsubr (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfsubr ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfsubr ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pi2fd (__m64 __A) _m_pi2fd (__m64 __A)
{ {
return (__m64)__builtin_ia32_pi2fd ((__v2si)__A); return (__m64)__builtin_ia32_pi2fd ((__v2si)__A);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pmulhrw (__m64 __A, __m64 __B) _m_pmulhrw (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pmulhrw ((__v4hi)__A, (__v4hi)__B); return (__m64)__builtin_ia32_pmulhrw ((__v4hi)__A, (__v4hi)__B);
} }
static __inline void __attribute__((__always_inline__, __artificial__)) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_prefetch (void *__P) _m_prefetch (void *__P)
{ {
__builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);
} }
static __inline void __attribute__((__always_inline__, __artificial__)) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_prefetchw (void *__P) _m_prefetchw (void *__P)
{ {
__builtin_prefetch (__P, 1, 3 /* _MM_HINT_T0 */); __builtin_prefetch (__P, 1, 3 /* _MM_HINT_T0 */);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_from_float (float __A) _m_from_float (float __A)
{ {
return __extension__ (__m64)(__v2sf){ __A, 0.0f }; return __extension__ (__m64)(__v2sf){ __A, 0.0f };
} }
static __inline float __attribute__((__always_inline__, __artificial__)) extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_to_float (__m64 __A) _m_to_float (__m64 __A)
{ {
union { __v2sf v; float a[2]; } __tmp; union { __v2sf v; float a[2]; } __tmp;
...@@ -185,31 +185,31 @@ _m_to_float (__m64 __A) ...@@ -185,31 +185,31 @@ _m_to_float (__m64 __A)
#ifdef __3dNOW_A__ #ifdef __3dNOW_A__
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pf2iw (__m64 __A) _m_pf2iw (__m64 __A)
{ {
return (__m64)__builtin_ia32_pf2iw ((__v2sf)__A); return (__m64)__builtin_ia32_pf2iw ((__v2sf)__A);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfnacc (__m64 __A, __m64 __B) _m_pfnacc (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfnacc ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfnacc ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pfpnacc (__m64 __A, __m64 __B) _m_pfpnacc (__m64 __A, __m64 __B)
{ {
return (__m64)__builtin_ia32_pfpnacc ((__v2sf)__A, (__v2sf)__B); return (__m64)__builtin_ia32_pfpnacc ((__v2sf)__A, (__v2sf)__B);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pi2fw (__m64 __A) _m_pi2fw (__m64 __A)
{ {
return (__m64)__builtin_ia32_pi2fw ((__v2si)__A); return (__m64)__builtin_ia32_pi2fw ((__v2si)__A);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_m_pswapd (__m64 __A) _m_pswapd (__m64 __A)
{ {
return (__m64)__builtin_ia32_pswapdsf ((__v2sf)__A); return (__m64)__builtin_ia32_pswapdsf ((__v2sf)__A);
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
/* Test Instruction */ /* Test Instruction */
/* Packed integer 128-bit bitwise comparison. Return 1 if /* Packed integer 128-bit bitwise comparison. Return 1 if
(__V & __M) == 0. */ (__V & __M) == 0. */
static __inline int __attribute__((__always_inline__, __artificial__)) extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_testz_si128 (__m128i __M, __m128i __V) _mm_testz_si128 (__m128i __M, __m128i __V)
{ {
return __builtin_ia32_ptestz128 ((__v2di)__M, (__v2di)__V); return __builtin_ia32_ptestz128 ((__v2di)__M, (__v2di)__V);
...@@ -68,7 +68,7 @@ _mm_testz_si128 (__m128i __M, __m128i __V) ...@@ -68,7 +68,7 @@ _mm_testz_si128 (__m128i __M, __m128i __V)
/* Packed integer 128-bit bitwise comparison. Return 1 if /* Packed integer 128-bit bitwise comparison. Return 1 if
(__V & ~__M) == 0. */ (__V & ~__M) == 0. */
static __inline int __attribute__((__always_inline__, __artificial__)) extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_testc_si128 (__m128i __M, __m128i __V) _mm_testc_si128 (__m128i __M, __m128i __V)
{ {
return __builtin_ia32_ptestc128 ((__v2di)__M, (__v2di)__V); return __builtin_ia32_ptestc128 ((__v2di)__M, (__v2di)__V);
...@@ -76,7 +76,7 @@ _mm_testc_si128 (__m128i __M, __m128i __V) ...@@ -76,7 +76,7 @@ _mm_testc_si128 (__m128i __M, __m128i __V)
/* Packed integer 128-bit bitwise comparison. Return 1 if /* Packed integer 128-bit bitwise comparison. Return 1 if
(__V & __M) != 0 && (__V & ~__M) != 0. */ (__V & __M) != 0 && (__V & ~__M) != 0. */
static __inline int __attribute__((__always_inline__, __artificial__)) extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_testnzc_si128 (__m128i __M, __m128i __V) _mm_testnzc_si128 (__m128i __M, __m128i __V)
{ {
return __builtin_ia32_ptestnzc128 ((__v2di)__M, (__v2di)__V); return __builtin_ia32_ptestnzc128 ((__v2di)__M, (__v2di)__V);
...@@ -93,13 +93,13 @@ _mm_testnzc_si128 (__m128i __M, __m128i __V) ...@@ -93,13 +93,13 @@ _mm_testnzc_si128 (__m128i __M, __m128i __V)
/* Packed/scalar double precision floating point rounding. */ /* Packed/scalar double precision floating point rounding. */
#ifdef __OPTIMIZE__ #ifdef __OPTIMIZE__
static __inline __m128d __attribute__((__always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_round_pd (__m128d __V, const int __M) _mm_round_pd (__m128d __V, const int __M)
{ {
return (__m128d) __builtin_ia32_roundpd ((__v2df)__V, __M); return (__m128d) __builtin_ia32_roundpd ((__v2df)__V, __M);
} }
static __inline __m128d __attribute__((__always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_round_sd(__m128d __D, __m128d __V, const int __M) _mm_round_sd(__m128d __D, __m128d __V, const int __M)
{ {
return (__m128d) __builtin_ia32_roundsd ((__v2df)__D, return (__m128d) __builtin_ia32_roundsd ((__v2df)__D,
...@@ -118,13 +118,13 @@ _mm_round_sd(__m128d __D, __m128d __V, const int __M) ...@@ -118,13 +118,13 @@ _mm_round_sd(__m128d __D, __m128d __V, const int __M)
/* Packed/scalar single precision floating point rounding. */ /* Packed/scalar single precision floating point rounding. */
#ifdef __OPTIMIZE__ #ifdef __OPTIMIZE__
static __inline __m128 __attribute__((__always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_round_ps (__m128 __V, const int __M) _mm_round_ps (__m128 __V, const int __M)
{ {
return (__m128) __builtin_ia32_roundps ((__v4sf)__V, __M); return (__m128) __builtin_ia32_roundps ((__v4sf)__V, __M);
} }
static __inline __m128 __attribute__((__always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_round_ss (__m128 __D, __m128 __V, const int __M) _mm_round_ss (__m128 __D, __m128 __V, const int __M)
{ {
return (__m128) __builtin_ia32_roundss ((__v4sf)__D, return (__m128) __builtin_ia32_roundss ((__v4sf)__D,
......
...@@ -47,79 +47,79 @@ ...@@ -47,79 +47,79 @@
#define _MM_GET_DENORMALS_ZERO_MODE() \ #define _MM_GET_DENORMALS_ZERO_MODE() \
(_mm_getcsr() & _MM_DENORMALS_ZERO_MASK) (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)
static __inline __m128 __attribute__((__always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_addsub_ps (__m128 __X, __m128 __Y) _mm_addsub_ps (__m128 __X, __m128 __Y)
{ {
return (__m128) __builtin_ia32_addsubps ((__v4sf)__X, (__v4sf)__Y); return (__m128) __builtin_ia32_addsubps ((__v4sf)__X, (__v4sf)__Y);
} }
static __inline __m128 __attribute__((__always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadd_ps (__m128 __X, __m128 __Y) _mm_hadd_ps (__m128 __X, __m128 __Y)
{ {
return (__m128) __builtin_ia32_haddps ((__v4sf)__X, (__v4sf)__Y); return (__m128) __builtin_ia32_haddps ((__v4sf)__X, (__v4sf)__Y);
} }
static __inline __m128 __attribute__((__always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsub_ps (__m128 __X, __m128 __Y) _mm_hsub_ps (__m128 __X, __m128 __Y)
{ {
return (__m128) __builtin_ia32_hsubps ((__v4sf)__X, (__v4sf)__Y); return (__m128) __builtin_ia32_hsubps ((__v4sf)__X, (__v4sf)__Y);
} }
static __inline __m128 __attribute__((__always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_movehdup_ps (__m128 __X) _mm_movehdup_ps (__m128 __X)
{ {
return (__m128) __builtin_ia32_movshdup ((__v4sf)__X); return (__m128) __builtin_ia32_movshdup ((__v4sf)__X);
} }
static __inline __m128 __attribute__((__always_inline__, __artificial__)) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_moveldup_ps (__m128 __X) _mm_moveldup_ps (__m128 __X)
{ {
return (__m128) __builtin_ia32_movsldup ((__v4sf)__X); return (__m128) __builtin_ia32_movsldup ((__v4sf)__X);
} }
static __inline __m128d __attribute__((__always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_addsub_pd (__m128d __X, __m128d __Y) _mm_addsub_pd (__m128d __X, __m128d __Y)
{ {
return (__m128d) __builtin_ia32_addsubpd ((__v2df)__X, (__v2df)__Y); return (__m128d) __builtin_ia32_addsubpd ((__v2df)__X, (__v2df)__Y);
} }
static __inline __m128d __attribute__((__always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadd_pd (__m128d __X, __m128d __Y) _mm_hadd_pd (__m128d __X, __m128d __Y)
{ {
return (__m128d) __builtin_ia32_haddpd ((__v2df)__X, (__v2df)__Y); return (__m128d) __builtin_ia32_haddpd ((__v2df)__X, (__v2df)__Y);
} }
static __inline __m128d __attribute__((__always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsub_pd (__m128d __X, __m128d __Y) _mm_hsub_pd (__m128d __X, __m128d __Y)
{ {
return (__m128d) __builtin_ia32_hsubpd ((__v2df)__X, (__v2df)__Y); return (__m128d) __builtin_ia32_hsubpd ((__v2df)__X, (__v2df)__Y);
} }
static __inline __m128d __attribute__((__always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_loaddup_pd (double const *__P) _mm_loaddup_pd (double const *__P)
{ {
return _mm_load1_pd (__P); return _mm_load1_pd (__P);
} }
static __inline __m128d __attribute__((__always_inline__, __artificial__)) extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_movedup_pd (__m128d __X) _mm_movedup_pd (__m128d __X)
{ {
return _mm_shuffle_pd (__X, __X, _MM_SHUFFLE2 (0,0)); return _mm_shuffle_pd (__X, __X, _MM_SHUFFLE2 (0,0));
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_lddqu_si128 (__m128i const *__P) _mm_lddqu_si128 (__m128i const *__P)
{ {
return (__m128i) __builtin_ia32_lddqu ((char const *)__P); return (__m128i) __builtin_ia32_lddqu ((char const *)__P);
} }
static __inline void __attribute__((__always_inline__, __artificial__)) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_monitor (void const * __P, unsigned int __E, unsigned int __H) _mm_monitor (void const * __P, unsigned int __E, unsigned int __H)
{ {
__builtin_ia32_monitor (__P, __E, __H); __builtin_ia32_monitor (__P, __E, __H);
} }
static __inline void __attribute__((__always_inline__, __artificial__)) extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_mwait (unsigned int __E, unsigned int __H) _mm_mwait (unsigned int __E, unsigned int __H)
{ {
__builtin_ia32_mwait (__E, __H); __builtin_ia32_mwait (__E, __H);
......
...@@ -37,159 +37,159 @@ ...@@ -37,159 +37,159 @@
/* We need definitions from the SSE3, SSE2 and SSE header files*/ /* We need definitions from the SSE3, SSE2 and SSE header files*/
#include <pmmintrin.h> #include <pmmintrin.h>
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadd_epi16 (__m128i __X, __m128i __Y) _mm_hadd_epi16 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_phaddw128 ((__v8hi)__X, (__v8hi)__Y); return (__m128i) __builtin_ia32_phaddw128 ((__v8hi)__X, (__v8hi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadd_epi32 (__m128i __X, __m128i __Y) _mm_hadd_epi32 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_phaddd128 ((__v4si)__X, (__v4si)__Y); return (__m128i) __builtin_ia32_phaddd128 ((__v4si)__X, (__v4si)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadds_epi16 (__m128i __X, __m128i __Y) _mm_hadds_epi16 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_phaddsw128 ((__v8hi)__X, (__v8hi)__Y); return (__m128i) __builtin_ia32_phaddsw128 ((__v8hi)__X, (__v8hi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadd_pi16 (__m64 __X, __m64 __Y) _mm_hadd_pi16 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_phaddw ((__v4hi)__X, (__v4hi)__Y); return (__m64) __builtin_ia32_phaddw ((__v4hi)__X, (__v4hi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadd_pi32 (__m64 __X, __m64 __Y) _mm_hadd_pi32 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_phaddd ((__v2si)__X, (__v2si)__Y); return (__m64) __builtin_ia32_phaddd ((__v2si)__X, (__v2si)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hadds_pi16 (__m64 __X, __m64 __Y) _mm_hadds_pi16 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_phaddsw ((__v4hi)__X, (__v4hi)__Y); return (__m64) __builtin_ia32_phaddsw ((__v4hi)__X, (__v4hi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsub_epi16 (__m128i __X, __m128i __Y) _mm_hsub_epi16 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_phsubw128 ((__v8hi)__X, (__v8hi)__Y); return (__m128i) __builtin_ia32_phsubw128 ((__v8hi)__X, (__v8hi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsub_epi32 (__m128i __X, __m128i __Y) _mm_hsub_epi32 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_phsubd128 ((__v4si)__X, (__v4si)__Y); return (__m128i) __builtin_ia32_phsubd128 ((__v4si)__X, (__v4si)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsubs_epi16 (__m128i __X, __m128i __Y) _mm_hsubs_epi16 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_phsubsw128 ((__v8hi)__X, (__v8hi)__Y); return (__m128i) __builtin_ia32_phsubsw128 ((__v8hi)__X, (__v8hi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsub_pi16 (__m64 __X, __m64 __Y) _mm_hsub_pi16 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_phsubw ((__v4hi)__X, (__v4hi)__Y); return (__m64) __builtin_ia32_phsubw ((__v4hi)__X, (__v4hi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsub_pi32 (__m64 __X, __m64 __Y) _mm_hsub_pi32 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_phsubd ((__v2si)__X, (__v2si)__Y); return (__m64) __builtin_ia32_phsubd ((__v2si)__X, (__v2si)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_hsubs_pi16 (__m64 __X, __m64 __Y) _mm_hsubs_pi16 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_phsubsw ((__v4hi)__X, (__v4hi)__Y); return (__m64) __builtin_ia32_phsubsw ((__v4hi)__X, (__v4hi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_maddubs_epi16 (__m128i __X, __m128i __Y) _mm_maddubs_epi16 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_pmaddubsw128 ((__v16qi)__X, (__v16qi)__Y); return (__m128i) __builtin_ia32_pmaddubsw128 ((__v16qi)__X, (__v16qi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_maddubs_pi16 (__m64 __X, __m64 __Y) _mm_maddubs_pi16 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_pmaddubsw ((__v8qi)__X, (__v8qi)__Y); return (__m64) __builtin_ia32_pmaddubsw ((__v8qi)__X, (__v8qi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_mulhrs_epi16 (__m128i __X, __m128i __Y) _mm_mulhrs_epi16 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_pmulhrsw128 ((__v8hi)__X, (__v8hi)__Y); return (__m128i) __builtin_ia32_pmulhrsw128 ((__v8hi)__X, (__v8hi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_mulhrs_pi16 (__m64 __X, __m64 __Y) _mm_mulhrs_pi16 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_pmulhrsw ((__v4hi)__X, (__v4hi)__Y); return (__m64) __builtin_ia32_pmulhrsw ((__v4hi)__X, (__v4hi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_shuffle_epi8 (__m128i __X, __m128i __Y) _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_pshufb128 ((__v16qi)__X, (__v16qi)__Y); return (__m128i) __builtin_ia32_pshufb128 ((__v16qi)__X, (__v16qi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_shuffle_pi8 (__m64 __X, __m64 __Y) _mm_shuffle_pi8 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_pshufb ((__v8qi)__X, (__v8qi)__Y); return (__m64) __builtin_ia32_pshufb ((__v8qi)__X, (__v8qi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_sign_epi8 (__m128i __X, __m128i __Y) _mm_sign_epi8 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_psignb128 ((__v16qi)__X, (__v16qi)__Y); return (__m128i) __builtin_ia32_psignb128 ((__v16qi)__X, (__v16qi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_sign_epi16 (__m128i __X, __m128i __Y) _mm_sign_epi16 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_psignw128 ((__v8hi)__X, (__v8hi)__Y); return (__m128i) __builtin_ia32_psignw128 ((__v8hi)__X, (__v8hi)__Y);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_sign_epi32 (__m128i __X, __m128i __Y) _mm_sign_epi32 (__m128i __X, __m128i __Y)
{ {
return (__m128i) __builtin_ia32_psignd128 ((__v4si)__X, (__v4si)__Y); return (__m128i) __builtin_ia32_psignd128 ((__v4si)__X, (__v4si)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_sign_pi8 (__m64 __X, __m64 __Y) _mm_sign_pi8 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_psignb ((__v8qi)__X, (__v8qi)__Y); return (__m64) __builtin_ia32_psignb ((__v8qi)__X, (__v8qi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_sign_pi16 (__m64 __X, __m64 __Y) _mm_sign_pi16 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_psignw ((__v4hi)__X, (__v4hi)__Y); return (__m64) __builtin_ia32_psignw ((__v4hi)__X, (__v4hi)__Y);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_sign_pi32 (__m64 __X, __m64 __Y) _mm_sign_pi32 (__m64 __X, __m64 __Y)
{ {
return (__m64) __builtin_ia32_psignd ((__v2si)__X, (__v2si)__Y); return (__m64) __builtin_ia32_psignd ((__v2si)__X, (__v2si)__Y);
} }
#ifdef __OPTIMIZE__ #ifdef __OPTIMIZE__
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N) _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
{ {
return (__m128i) __builtin_ia32_palignr128 ((__v2di)__X, return (__m128i) __builtin_ia32_palignr128 ((__v2di)__X,
(__v2di)__Y, __N * 8); (__v2di)__Y, __N * 8);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N) _mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N)
{ {
return (__m64) __builtin_ia32_palignr ((long long)__X, return (__m64) __builtin_ia32_palignr ((long long)__X,
...@@ -206,37 +206,37 @@ _mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N) ...@@ -206,37 +206,37 @@ _mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N)
(int)(N) * 8)) (int)(N) * 8))
#endif #endif
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_abs_epi8 (__m128i __X) _mm_abs_epi8 (__m128i __X)
{ {
return (__m128i) __builtin_ia32_pabsb128 ((__v16qi)__X); return (__m128i) __builtin_ia32_pabsb128 ((__v16qi)__X);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_abs_epi16 (__m128i __X) _mm_abs_epi16 (__m128i __X)
{ {
return (__m128i) __builtin_ia32_pabsw128 ((__v8hi)__X); return (__m128i) __builtin_ia32_pabsw128 ((__v8hi)__X);
} }
static __inline __m128i __attribute__((__always_inline__, __artificial__)) extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_abs_epi32 (__m128i __X) _mm_abs_epi32 (__m128i __X)
{ {
return (__m128i) __builtin_ia32_pabsd128 ((__v4si)__X); return (__m128i) __builtin_ia32_pabsd128 ((__v4si)__X);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_abs_pi8 (__m64 __X) _mm_abs_pi8 (__m64 __X)
{ {
return (__m64) __builtin_ia32_pabsb ((__v8qi)__X); return (__m64) __builtin_ia32_pabsb ((__v8qi)__X);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_abs_pi16 (__m64 __X) _mm_abs_pi16 (__m64 __X)
{ {
return (__m64) __builtin_ia32_pabsw ((__v4hi)__X); return (__m64) __builtin_ia32_pabsw ((__v4hi)__X);
} }
static __inline __m64 __attribute__((__always_inline__, __artificial__)) extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_abs_pi32 (__m64 __X) _mm_abs_pi32 (__m64 __X)
{ {
return (__m64) __builtin_ia32_pabsd ((__v2si)__X); return (__m64) __builtin_ia32_pabsd ((__v2si)__X);
......
2008-03-13 Uros Bizjak <ubizjak@gmail.com>
PR target/34000
PR target/35553
* g++.dg/other/i386-3.C: New test.
* gcc.target/i386/sse-13.c: Redefine extern instead of static.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/mmx-1.c: Ditto.
* gcc.target/i386/mmx-2.c: Ditto.
* gcc.target/i386/3dnow-1.c: Ditto.
* gcc.target/i386/3dnow-2.c: Ditto.
* gcc.target/i386/3dnowA-1.c: Ditto.
* gcc.target/i386/3dnowA-2.c: Ditto.
2008-03-13 Paolo Bonzini <bonzini@gnu.org> 2008-03-13 Paolo Bonzini <bonzini@gnu.org>
PR tree-opt/35422 PR tree-opt/35422
/* Test that {,x,e,p,t,s,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
usable with -O -fkeep-inline-functions. */
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O -fkeep-inline-functions -march=k8 -m3dnow -msse4 -msse5" } */
#include <bmmintrin.h>
#include <smmintrin.h>
#include <mm3dnow.h>
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
/* Test that the intrinsics compile with optimization. All of them are /* Test that the intrinsics compile with optimization. All of them are
defined as inline functions in mmintrin.h that reference the proper defined as inline functions in mmintrin.h that reference the proper
builtin functions. Defining away "static" and "__inline" results in builtin functions. Defining away "extern" and "__inline" results in
all of them being compiled as proper functions. */ all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
#include <mm3dnow.h> #include <mm3dnow.h>
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
/* Test that the intrinsics compile without optimization. All of them are /* Test that the intrinsics compile without optimization. All of them are
defined as inline functions in mmintrin.h that reference the proper defined as inline functions in mmintrin.h that reference the proper
builtin functions. Defining away "static" and "__inline" results in builtin functions. Defining away "extern" and "__inline" results in
all of them being compiled as proper functions. */ all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
#include <mm3dnow.h> #include <mm3dnow.h>
/* { dg-do assemble } */ /* { dg-do assemble } */
/* { dg-require-effective-target ilp32 } */ /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow" } */
/* { dg-options "-O2 -Werror-implicit-function-declaration -m3dnow -march=athlon" } */
/* Test that the intrinsics compile with optimization. All of them are /* Test that the intrinsics compile with optimization. All of them are
defined as inline functions in mmintrin.h that reference the proper defined as inline functions in mmintrin.h that reference the proper
builtin functions. Defining away "static" and "__inline" results in builtin functions. Defining away "extern" and "__inline" results in
all of them being compiled as proper functions. */ all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
#include <mm3dnow.h> #include <mm3dnow.h>
/* { dg-do assemble } */ /* { dg-do assemble } */
/* { dg-require-effective-target ilp32 } */ /* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -m3dnow" } */
/* { dg-options "-O0 -Werror-implicit-function-declaration -m3dnow -march=athlon" } */
/* Test that the intrinsics compile without optimization. All of them are /* Test that the intrinsics compile without optimization. All of them are
defined as inline functions in mmintrin.h that reference the proper defined as inline functions in mmintrin.h that reference the proper
builtin functions. Defining away "static" and "__inline" results in builtin functions. Defining away "extern" and "__inline" results in
all of them being compiled as proper functions. */ all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
#include <mm3dnow.h> #include <mm3dnow.h>
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
/* Test that the intrinsics compile with optimization. All of them are /* Test that the intrinsics compile with optimization. All of them are
defined as inline functions in mmintrin.h that reference the proper defined as inline functions in mmintrin.h that reference the proper
builtin functions. Defining away "static" and "__inline" results in builtin functions. Defining away "extern" and "__inline" results in
all of them being compiled as proper functions. */ all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
#include <mmintrin.h> #include <mmintrin.h>
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
/* Test that the intrinsics compile without optimization. All of them are /* Test that the intrinsics compile without optimization. All of them are
defined as inline functions in mmintrin.h that reference the proper defined as inline functions in mmintrin.h that reference the proper
builtin functions. Defining away "static" and "__inline" results in builtin functions. Defining away "extern" and "__inline" results in
all of them being compiled as proper functions. */ all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
#include <mmintrin.h> #include <mmintrin.h>
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
/* Test that the intrinsics compile with optimization. All of them are /* Test that the intrinsics compile with optimization. All of them are
defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h
that reference the proper builtin functions. Defining away "static" and that reference the proper builtin functions. Defining away "extern" and
"__inline" results in all of them being compiled as proper functions. */ "__inline" results in all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
/* Following intrinsics require immediate arguments. */ /* Following intrinsics require immediate arguments. */
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
/* Test that the intrinsics compile without optimization. All of them are /* Test that the intrinsics compile without optimization. All of them are
defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h
that reference the proper builtin functions. Defining away "static" and that reference the proper builtin functions. Defining away "extern" and
"__inline" results in all of them being compiled as proper functions. */ "__inline" results in all of them being compiled as proper functions. */
#define static #define extern
#define __inline #define __inline
#include <bmmintrin.h> #include <bmmintrin.h>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment