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