x86 SSE constants
Dale Johannesen
dalej@apple.com
Fri Sep 30 23:32:00 GMT 2005
On Sep 30, 2005, at 4:17 PM, Jan Hubicka wrote:
>> 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 :)...
No, there isn't, but it might be a smaller change to add a new
constraint....
having constraints tied to specific constants is pretty ugly, and so is
having (if (constant value==0)) in a lot of patterns..,,
More information about the Gcc
mailing list