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