On Wed, Aug 10, 2011 at 4:42 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Wed, Aug 10, 2011 at 7:12 AM, Richard Guenther > <richard.guent...@gmail.com> wrote: >> On Wed, Aug 10, 2011 at 4:04 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >>> On Wed, Aug 10, 2011 at 6:46 AM, Richard Guenther >>> <richard.guent...@gmail.com> wrote: >>>> On Sat, Mar 29, 2008 at 10:11 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >>>>> This patch restores proper checking the third argument on blendpd and >>>>> and blendps. It also adds 2 tests, including pblendw. Tested on >>>>> Linux/Intel64. OK to install? >>>> >>>> The gcc.target/i386/sse4_1-blendps-2.c test randomly fails because >>>> src3 is used uninitialized. >>>> >>> >>> SRC2 may be uninitialized. But I never saw random failures >>> since it checks if random value in SRC2 is properly blended. >> >> No, src2 is initialized via init_blendps (src1.f, src2.f), src3 is >> uninitialized. >> I see random execute fails on Nehalem. >> >> I suppose we might optimize the uninitialized memory (it's probably >> committed to registers) based on the undefined behavior. >> >> Please avoid this by initializing src3 properly. >> > > Here is a patch. OK for trunk?
Ok. Richard. > > -- > H.J. > ---- > diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-blendps-2.c > b/gcc/testsuite/gcc.target/i386/sse4_1-blendps-2.c > index b66bbfd..af56e14 100644 > --- a/gcc/testsuite/gcc.target/i386/sse4_1-blendps-2.c > +++ b/gcc/testsuite/gcc.target/i386/sse4_1-blendps-2.c > @@ -6,6 +6,7 @@ > > #include <smmintrin.h> > #include <string.h> > +#include <stdlib.h> > > #define NUM 20 > > @@ -52,11 +53,15 @@ sse4_1_test (void) > { > __m128 x; > float f[4]; > + int i[4]; > } src3; > int i; > > init_blendps (src1.f, src2.f); > > + for (i = 0; i < 4; i++) > + src3.i[i] = (int) random (); > + > /* Check blendps imm8, m128, xmm */ > for (i = 0; i < NUM; i++) > { >