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