On 03/25/2010 04:31 AM, Eric Botcazou wrote:
>> It seems to me that both the gen_lowpart and simplify_shift_const do the
>> wrong things in handling vector type. (zero_extend:SI (subreg:HI (V4HI)) is
>> not equal to (subreg:SI (V4HI)), is it?  simplify_shift_const produces
>> (ashift:V4HI (V4HI..) (16), which is not right either.
> 
> The combine pass had been written at least a decade before vector modes were 
> introduced so it essentially doesn't expect them, i.e. some transformations 
> simply don't make sense for vector modes.  You need to analyze the one you're 
> seeing (e.g. where does the subreg come from?) and determine whether it makes 
> sense; it it doesn't, then it should be disabled for vector modes.
> 

... or admit that there's all sorts of places in the compiler that
will be more confused about vector modes than scalar modes, and
add additional patterns to represent the scalar operation, even if
it's being implemented by a vector instruction.

... which is what I assume is happening here.


r~

Reply via email to