[PATCH][RFC] Fix PR39943, wrong code with vectorized conversion on x86_64

Janis Johnson janis187@us.ibm.com
Wed Apr 29 17:22:00 GMT 2009


On Wed, 2009-04-29 at 10:40 +0200, Richard Guenther wrote:
> On Tue, 28 Apr 2009, Uros Bizjak wrote:
> 
> > Richard Guenther wrote:
> > > This fixes the ICE on 177.mesa caused by type checking which catched
> > > the wrong-code issue that we are happily doing vectorized
> > > float -> unsigned and unsigned -> float conversions with the SSE
> > > cvtdq2ps and cvttps2dq instructions which only work with signed
> > > integer value ranges.  Oops.
> > > 
> > > ...
> > > 
> > > because they all use conversions to/from unsigned ints.  Ira - do you
> > > prefer adding another vector capability, vect_uintfloat_cvt, here
> > > or placing strategic XFAILs in the tests?  Are there corresponding
> > > tests for signed int conversions?  Do ppc and ia64 really handle this
> > > cases correctly?
> > > 
> > > I'll bootstrap / test this soon.  Uros, is the backend change ok?
> > >   
> > 
> > Yes, backend change is OK for all branches.
> 
> This implements the testsuite harness extensions.  Janis, are the
> testsuite changes ok for trunk (if re-testing succeeds)?
> 
> Thanks,
> Richard.
> 
> 2009-04-28  Richard Guenther  <rguenther@suse.de>
> 
> 	PR target/39943
> 	* config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
> 	allow conversion to signed integers.
> 
> 	* lib/target-supports.exp (check_effective_target_vect_uintfloat_cvt):
> 	New.
> 	(check_effective_target_vect_floatuint_cvt): Likewise.
> 	* gcc.dg/vect/slp-10.c: Adjust.
> 	* gcc.dg/vect/slp-11.c: Adjust.
> 	* gcc.dg/vect/slp-12b.c: Adjust.
> 	* gcc.dg/vect/slp-33.c: Adjust.
> 	* gcc.c-torture/compile/pr39943.c: New testcase.

I'm not familiar with powerpc-*-linux*paired*; is that functionality
ever available in a compiler with a different target triplet?  If not,
this is OK, otherwise you'll need a check that covers the functionality
rather than the triplet.

Janis



More information about the Gcc-patches mailing list