diff options
author | Richard Henderson <rth@gcc.gnu.org> | 2005-01-05 11:14:39 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2005-01-05 11:14:39 -0800 |
commit | 2cdb31489836779b7316f60cb49c5eb83de88adb (patch) | |
tree | 52d655caee77394c15ebc4f8c9f7c2a69550afe2 /gcc/testsuite | |
parent | a8182d3719015766107812ceb65220dde1074f20 (diff) | |
download | gcc-2cdb31489836779b7316f60cb49c5eb83de88adb.zip gcc-2cdb31489836779b7316f60cb49c5eb83de88adb.tar.gz gcc-2cdb31489836779b7316f60cb49c5eb83de88adb.tar.bz2 |
re PR target/12902 (Invalid assembly generated when using SSE / xmmintrin.h)
PR target/12902
* config/i386/i386.md (sse_movhps, sse_movlps): Remove.
(sse_shufps): Change operand 3 to const_int_operand.
(sse2_storelps): Fix typo in template.
(sse_storehps, sse_loadhps, sse_storelps, sse_loadlps): New.
* config/i386/i386.c (ix86_expand_vector_move_misalign): Use them.
(ix86_expand_builtin): Likewise.
From-SVN: r92967
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-1.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/sse-1.c b/gcc/testsuite/gcc.target/i386/sse-1.c new file mode 100644 index 0000000..afae22d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sse-1.c @@ -0,0 +1,25 @@ +/* PR 12902 */ +/* { dg-do compile } */ +/* { dg-options "-O1 -msse" } */ + +#include <xmmintrin.h> + +typedef union +{ + int i[4]; + float f[4]; + __m128 v; +} vector4_t; + +void +swizzle (const void *a, vector4_t * b, vector4_t * c) +{ + b->v = _mm_loadl_pi (b->v, (__m64 *) a); + c->v = _mm_loadl_pi (c->v, ((__m64 *) a) + 1); +} + +/* While one legal rendering of each statement would be movaps;movlps;movaps, + we can implmenent this with just movlps;movlps. Since we do now, anything + less would be a regression. */ +/* { dg-final { scan-assembler-not "movaps" } } */ +/* { dg-final { scan-assembler "movlps" } } */ |