mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 14:50:57 +08:00
re PR target/42881 (SSE2 intrinsics miscompiled at -O0 -march=k8)
PR target/42881 * config/i386/i386.c (ix86_expand_vector_init_duplicate): Wrap force_reg into a sequence, emit it before user. testsuite/ * gcc.target/i386/pr42881.c: New test. From-SVN: r156320
This commit is contained in:
parent
2b30b635ab
commit
3d952fb783
@ -1,3 +1,9 @@
|
||||
2010-01-28 Michael Matz <matz@suse.de>
|
||||
|
||||
PR target/42881
|
||||
* config/i386/i386.c (ix86_expand_vector_init_duplicate):
|
||||
Wrap force_reg into a sequence, emit it before user.
|
||||
|
||||
2010-01-28 Stephen Thomas <stephen.thomas@arm.com>
|
||||
|
||||
* config/arm/arm.md (bswapsi2): Add support for bswapsi2.
|
||||
|
@ -26644,8 +26644,16 @@ ix86_expand_vector_init_duplicate (bool mmx_ok, enum machine_mode mode,
|
||||
insn = emit_insn (gen_rtx_SET (VOIDmode, target, dup));
|
||||
if (recog_memoized (insn) < 0)
|
||||
{
|
||||
rtx seq;
|
||||
/* If that fails, force VAL into a register. */
|
||||
|
||||
start_sequence ();
|
||||
XEXP (dup, 0) = force_reg (GET_MODE_INNER (mode), val);
|
||||
seq = get_insns ();
|
||||
end_sequence ();
|
||||
if (seq)
|
||||
emit_insn_before (seq, insn);
|
||||
|
||||
ok = recog_memoized (insn) >= 0;
|
||||
gcc_assert (ok);
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-01-28 Michael Matz <matz@suse.de>
|
||||
|
||||
* gcc.target/i386/pr42881.c: New test.
|
||||
|
||||
2010-01-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* gcc.misc-tests/linkage.exp: Remove mips-sgi-irix6*o32 support.
|
||||
@ -12,7 +16,7 @@
|
||||
|
||||
2010-01-27 Stephen Thomas <stephen.thomas@arm.com>
|
||||
|
||||
* testsuite/gcc.dg/optimize-bswap*.c: Add ARM target
|
||||
* testsuite/gcc.dg/optimize-bswap*.c: Add ARM target
|
||||
|
||||
2010-01-27 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
|
14
gcc/testsuite/gcc.target/i386/pr42881.c
Normal file
14
gcc/testsuite/gcc.target/i386/pr42881.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* PR target/42881 */
|
||||
/* { dg-do run } */
|
||||
/* { dg-options "-O0 -msse" } */
|
||||
#include "sse-check.h"
|
||||
#include <xmmintrin.h>
|
||||
static void
|
||||
sse_test (void)
|
||||
{
|
||||
double a[2];
|
||||
__m128d x = _mm_set1_pd(3);
|
||||
_mm_storeu_pd(a,x);
|
||||
if (a[0] != 3.0 || a[1] != 3.0)
|
||||
__builtin_abort ();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user