On Thu, Sep 4, 2014 at 12:28 AM, Bill Schmidt <wschm...@linux.vnet.ibm.com> wrote: > Hi, > > This patch adds more special handling to analyze_swaps to allow us to > improve more computations. Previously I had disallowed VEC_SELECT in > all cases. This is now changed to allow a select of a single lane, > either for an extract operation or for a splat operation. If a > computation containing such operations is optimized, the selected lane > is changed to count from the other end of the vector. Several new tests > are added to check these opportunities are now exploited. > > Bootstrapped and tested on powerpc64le-unknown-linux-gnu with no > regressions. Is this ok for trunk? > > Thanks, > Bill > > > [gcc] > > 2014-09-03 Bill Schmidt <wschm...@linux.vnet.ibm.com> > > * config/rs6000/rs6000.c (special_handling_values): Add > SH_EXTRACT. > (rtx_is_swappable_p): Look for patterns with a VEC_SELECT, perhaps > wrapped in a VEC_DUPLICATE, representing an extract. Mark these > as swappable with special handling SH_EXTRACT. Remove > UNSPEC_VSX_XXSPLTW from the list of disallowed unspecs for the > optimization. > (adjust_extract): New function. > (handle_special_swappables): Add default to case statement; add > case for SH_EXTRACT that calls adjust_extract. > (dump_swap_insn_table): Handle SH_EXTRACT. > > [gcc/testsuite] > > 2014-09-03 Bill Schmidt <wschm...@linux.vnet.ibm.com> > > * gcc.target/powerpc/swaps-p8-13.c: New test. > * gcc.target/powerpc/swaps-p8-14.c: New test. > * gcc.target/powerpc/swaps-p8-15.c: New test.
Okay. Thanks, David