Hi!

On Wed, Jan 04, 2023 at 01:58:19PM +0530, Surya Kumari Jangala wrote:
> In the routine rs6000_analyze_swaps(), special handling of swappable
> instructions is done even if the webs that contain the swappable
> instructions are not optimized, i.e., the webs do not contain any
> permuting load/store instructions along with the associated register
> swap instructions. Doing special handling in such webs will result in
> the extracted lane being adjusted unnecessarily for vec_extract.
> 
> Modifying swappable instructions is also incorrect in webs where
> loads/stores on quad word aligned addresses are changed to lvx/stvx.
> Similarly, in webs where swap(load(vector constant)) instructions are
> replaced with load(swapped vector constant), the swappable
> instructions should not be modified.
> 
> 2023-01-04  Surya Kumari Jangala  <jskum...@linux.ibm.com>
> 
> gcc/
>       PR rtl-optimization/106770
>       * rs6000-p8swap.cc (rs6000_analyze_swaps): .

Please add an entry?  Or multiple ones, actually.  Describe all changes.

> --- a/gcc/config/rs6000/rs6000-p8swap.cc
> +++ b/gcc/config/rs6000/rs6000-p8swap.cc
> @@ -179,6 +179,9 @@ class swap_web_entry : public web_entry_base
>    unsigned int special_handling : 4;
>    /* Set if the web represented by this entry cannot be optimized.  */
>    unsigned int web_not_optimizable : 1;
> +  /* Set if the web represented by this entry has been optimized, ie,

s/ie/i.e./

> +     register swaps of permuting loads/stores have been removed.  */

If it really means only exactly this, then the name isn't so good.

> +  unsigned int web_is_optimized : 1;

And if it is as general as the name suggests, then the comment is no
good.  Which is it?  :-)

>    /* For each load and store in an optimizable web (which implies
>       the loads and stores are permuting), find the associated
>       register swaps and mark them for removal.  Due to various
> -     optimizations we may mark the same swap more than once.  Also
> -     perform special handling for swappable insns that require it.  */
> +     optimizations we may mark the same swap more than once. Fix up
> +     the non-permuting loads and stores by converting them into
> +     permuting ones.  */

Two spaces after a full stop is correct.  Please put that back.

Is it a good idea convert from/to swapping load/stores in this pass at
all?  Doesdn't that belong elsewhere?  Like, in combine, where we
already should do this.  Why does that not work?

> -     if (!root_entry->web_not_optimizable)
> +     if (!root_entry->web_not_optimizable) {

Blocks start on a new line, indented.

>         mark_swaps_for_removal (insn_entry, i);
> +          root_entry->web_is_optimized = true;

Indent using tabs where possible.

> +        swap_web_entry* root_entry
> +          = (swap_web_entry*)((&insn_entry[i])->unionfind_root ());

Space before *, in all cases. Space before the second (.  There are too
many brackets here, too.

> +  /* Perform special handling for swappable insns that require it. 

No trailing spaces.

> +     Note that special handling should be done only for those 
> +     swappable insns that are present in webs optimized above.  */
> +  for (i = 0; i < e; ++i)
> +    if (insn_entry[i].is_swappable && insn_entry[i].special_handling &&
> +        !(insn_entry[i].special_handling == SH_NOSWAP_LD || 
> +          insn_entry[i].special_handling == SH_NOSWAP_ST))
>        {
>       swap_web_entry* root_entry
>         = (swap_web_entry*)((&insn_entry[i])->unionfind_root ());
> -     if (!root_entry->web_not_optimizable)
> +     if (root_entry->web_is_optimized)
>         handle_special_swappables (insn_entry, i);
>        }

Why this change?

> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/powerpc/pr106770.c
> @@ -0,0 +1,20 @@
> +/* { dg-do compile } */
> +/* { dg-require-effective-target powerpc_p8vector_ok } */
> +/* { dg-options "-mdejagnu-cpu=power8 -O3 " } */

Is -O3 required?  Use -O2 if you can.  And no trailing spaces please.

> +/* { dg-final { scan-assembler-times "xxpermdi" 2 } } */

Those two remaining are superfluous, so comment that please.


Segher

Reply via email to