Commit 88fab00d by Uros Bizjak Committed by Uros Bizjak

vect-nop-move.c (foo32x2_be): Call __builtin_ia32_emms for 32bit x86 targets.

	* gcc.dg/vect/vect-nop-move.c (foo32x2_be): Call
	__builtin_ia32_emms for 32bit x86 targets.
	(foo32x2_le): Ditto.
	(main): Reorder function calls.

From-SVN: r206002
parent 4e7a80df
2013-12-15 Uros Bizjak <ubizjak@gmail.com>
* gcc.dg/vect/vect-nop-move.c (foo32x2_be): Call
__builtin_ia32_emms for 32bit x86 targets.
(foo32x2_le): Ditto.
(main): Reorder function calls.
2013-12-15 Uros Bizjak <ubizjak@gmail.com>
* gcc.target/i386/pr57756.c (dg-options): Add -mno-sse3.
2013-12-15 Uros Bizjak <ubizjak@gmail.com>
......
......@@ -30,12 +30,21 @@ bar (float a)
NOINLINE float
foo32x2_be (float32x2_t x)
{
#ifdef __i386__
/* ix86 passes float32x2 vector arguments in mmx registers. We need to
emit emms to empty MMS state and reenable x87 stack before float value
can be loaded to and passed in x87 floating-point return register. */
__builtin_ia32_emms ();
#endif
return bar (x[1]);
}
NOINLINE float
foo32x2_le (float32x2_t x)
{
#ifdef __i386__
__builtin_ia32_emms ();
#endif
return bar (x[0]);
}
......@@ -45,16 +54,16 @@ main()
float32x4_t a = { 0.0f, 1.0f, 2.0f, 3.0f };
float32x2_t b = { 0.0f, 1.0f };
if (foo32x4_be (a) != 3.0f)
if (foo32x2_be (b) != 1.0f)
abort ();
if (foo32x4_le (a) != 0.0f)
if (foo32x2_le (b) != 0.0f)
abort ();
if (foo32x2_be (b) != 1.0f)
if (foo32x4_be (a) != 3.0f)
abort ();
if (foo32x2_le (b) != 0.0f)
if (foo32x4_le (a) != 0.0f)
abort ();
return 0;
......
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