This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/79137] New: Improve powerpc vector permutes


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79137

            Bug ID: 79137
           Summary: Improve powerpc vector permutes
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: meissner at gcc dot gnu.org
  Target Milestone: ---

Created attachment 40540
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40540&action=edit
Sample code that should be optimized.

In config/rs6000/rs6000.c is a function altivec_expand_vec_perm_const which it
is claimed to optimize certain vperm/vpermr/xxperm/xxpermr permute instructions
to use existing Altivec/VSX instructions.

The only call to altivec_expand_vec_perm_const is in the vec_perm_constv16qi
insn in altivec.md.  However, there is no reference to vec_perm_constv16qi, so
it never gets called.

I went back to various GCC versions, going back to GCC 4.6, and I could not
find any compiler where this optimization is being done.

We should add a combiner pattern that recognizes these constant permutes, and
does the appropriate instruction.  We should add recognizers for the ISA 3.0
byte reverse instructions (XXBRQ, XXBRD, XXBRW, and XXBRH) as well.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]