xmmintrin.h (_mm_pause): Move out of scope of pragma target("sse").

gcc/:
	* config/i386/xmmintrin.h (_mm_pause): Move out of scope of pragma
	target("sse").
testsuite/:
	* gcc.target/i386/pause-2.c: New test.

From-SVN: r211079
This commit is contained in:
Ian Lance Taylor 2014-05-30 13:11:05 +00:00 committed by Ian Lance Taylor
parent 5028356f89
commit f9a8f6d9cb
4 changed files with 32 additions and 9 deletions

View file

@ -1,3 +1,8 @@
2014-05-30 Ian Lance Taylor <iant@google.com>
* config/i386/xmmintrin.h (_mm_pause): Move out of scope of pragma
target("sse").
2014-05-30 Tom de Vries <tom@codesourcery.com>
* config/i386/i386.c (TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS):

View file

@ -1231,15 +1231,6 @@ _mm_sfence (void)
__builtin_ia32_sfence ();
}
/* The execution of the next instruction is delayed by an implementation
specific amount of time. The instruction does not modify the
architectural state. */
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_pause (void)
{
__builtin_ia32_pause ();
}
/* Transpose the 4x4 matrix composed of row[0-3]. */
#define _MM_TRANSPOSE4_PS(row0, row1, row2, row3) \
do { \
@ -1262,4 +1253,15 @@ do { \
#pragma GCC pop_options
#endif /* __DISABLE_SSE__ */
/* The execution of the next instruction is delayed by an implementation
specific amount of time. The instruction does not modify the
architectural state. This is after the pop_options pragma because
it does not require SSE support in the processor--the encoding is a
nop on processors that do not support it. */
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_pause (void)
{
__builtin_ia32_pause ();
}
#endif /* _XMMINTRIN_H_INCLUDED */

View file

@ -1,3 +1,7 @@
2014-05-30 Ian Lance Taylor <iant@google.com>
* gcc.target/i386/pause-2.c: New test.
2014-05-30 Tom de Vries <tom@codesourcery.com>
* gcc.target/i386/fuse-caller-save.c: New test.

View file

@ -0,0 +1,12 @@
/* Test that pause instruction works even when SSE is not enabled. */
/* { dg-do compile } */
/* { dg-options "-O2 -dp" } */
/* { dg-final { scan-assembler-times "\\*pause" 1 } } */
#include <xmmintrin.h>
void
foo (void)
{
_mm_pause ();
}