> The C constraint on x86 is defined, in both the doc and the comments, as
> "constant that can be easily constructed in SSE register without loading
> from memory".   Currently the only one handled is 0, but there is at 
> least
> one more, all 1 bits, which is constructed by
>    pcmpeqd  %xmm, %xmm
>  Unfortunately there are quite a few places in the patterns that assume 
> C
> means zero, and generate pxor or something like that.  What would be
> the preferred way to fix this, new constraint or change the existing 
> patterns?
My original plan was to add pcmpeqd by extending the 'C' constraint and
the patterns where pxor/xorp? is currently generated unconditionally.
This is pretty similar to what we do to i387 constants as well.  I never
actually got to realizing this (for the scalar FP work I was mostly
interested in that time it was not at all that interesting), but I think
there is nothing in md file preventing it (or I just missed it when it
was added :)...

Honza

Reply via email to