Ping Patch: PR target/24879: SSE3 intrinsic bug

H. J. Lu hjl@lucon.org
Thu May 4 14:06:00 GMT 2006


On Wed, May 03, 2006 at 08:50:27PM -0700, Ian Lance Taylor wrote:
> "H. J. Lu" <hjl@lucon.org> writes:
> 
> > --- gcc/config/i386/i386.c.64bit	2006-05-03 06:22:19.000000000 -0700
> > +++ gcc/config/i386/i386.c	2006-05-03 06:39:59.000000000 -0700
> > @@ -14915,8 +14915,8 @@ ix86_init_mmx_sse_builtins (void)
> >    tree void_ftype_unsigned_unsigned
> >      = build_function_type_list (void_type_node, unsigned_type_node,
> >  				unsigned_type_node, NULL_TREE);
> > -  tree void_ftype_pcvoid_unsigned_unsigned
> > -    = build_function_type_list (void_type_node, const_ptr_type_node,
> > +  tree void_ftype_unsigned_unsigned_unsigned
> > +    = build_function_type_list (void_type_node, unsigned_type_node,
> >  				unsigned_type_node, unsigned_type_node,
> >  				NULL_TREE);
> 
> I don't mean to cause (even more) trouble, but why did you change the
> type of the first argument?  Isn't void* correct?  I would expect that
> there would still be two monitor insns in the md file, one with a
> DImode first argument and one with an SImode argument.  Then you would
> emit one or the other in ix86_expand_builtin.  Does that make sense?

The 64bit versions take 64bit registers. But the current implementation
only checks the lower 32bit. I would prefer we treat 32bit/64bit
version identical by making all arguments 32bit or make 64bit version
with all arguments 64bit. It is odd to have a hybrid 64bit.


H.J.



More information about the Gcc-patches mailing list