On Wed, Jun 5, 2013 at 12:13 PM, Michael Meissner
<meiss...@linux.vnet.ibm.com> wrote:

> I thought I had deleted VSX_M2 from this patch.  It will be needed in patch #8
> for the fusion peephole.  The difference is VSX_L2 avoids TImode altogether,
> and was used by the logical ops to prevent TImode operations in VSX registers
> in 32-bit.
>
> The problem is unless we have expanders/splitters for logical DImode, the
> compiler when it wants to do a logical DImode operation says, aha I have a
> TImode operation, and then it converts the DImode value to TImode, does the
> operation (which in turn may mean transfer between GPR and VSX registers).
>
> I can add splitters and such for 32-bit DImode to prevent this, but I don't
> know if you want me to do it in the context of this patch, or do it as a later
> patch.

I don't have a preference whether the iterator is added now or later,
but I want the ChangeLog to match the patch.

>
>> * config/rs6000/rs6000.md (eqv<mode>3): Add support for powerp eqv 
>> instruction.
>>
>> Why isn't this covered by boolean_operator and %q output operand?  And
>> why can't that predicate and output operand handle vsx as well, e.g.,
>> *vsx_eqv?  Why don't we simply have vsx_bool<mode>3, etc.
>
> See my reply to Segher that boolc doesn't use the canonical form, so eqv is 
> not
> currently generated.

Okay, I understand that the bool patterns no longer are matching
canonical RTL after the canonical RTL was changed.  Unfortunately,
there were no powerpc-specific tests to ensure that those instructions
are generated.

I also understand that you need to match builtins.

But I would like vector.md and vsx.md to use the boolean operator
iterators.  I don't think that the patterns explicitly need to be
duplicated. This creates more clutter and more opportunity for
mistakes and differences.

Thanks, David

Reply via email to