[PATCH v2] rs6000: Remove useless insns fed into lvx/stvx [PR97019]

Kewen.Lin linkw@linux.ibm.com
Wed Sep 16 05:27:10 GMT 2020


Hi Segher,

Thanks for your suggestions!

>> +	  for (unsigned i = 0; i < and_insns.length (); ++i)
> 
> "i++" is used more often, is more traditional.
> 

Updated.

>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.target/powerpc/pr97019.c
>> @@ -0,0 +1,82 @@
>> +/* This issue can only exist on little-endian P8 targets, since
>> +   the built-in functions vec_ld/vec_st will use lxvd2x/stxvd2x
>> +   (P8 big-endian) or lxv/stxv (P9 and later).  */
>> +/* { dg-do compile { target { powerpc_p8vector_ok && le } } } */
>> +/* { dg-options "-O2 -mdejagnu-cpu=power8" } */
> 
> Do you need to test for LE?  If not, just always run it?  If it works,
> it works, it doesn't matter that you do not expect it to ever fail (we
> do not really expect *any* test we have to ever fail *anywhere*, heh).
> 

Yes, I did test it on P8 BE, it can generate lxvd2x/stxvd2x on some paths
fed by rldicr ...0,59 which are necessary, but they will make the
not-rldicr testing fail unexpectedly.

>> +/* { dg-final { scan-assembler-not "rldicr\[ \t\]+\[0-9\]+,\[0-9\]+,0,59" } } */
> 
> Please use {} quotes, and \s and \d.
> 
> You can also use  {(?n)rldicr.*,0,59}  since (?n) makes . not match
> newlines anymore.

Updated with /* { dg-final { scan-assembler-not {(?n)rldicr.*,0,59} } } */

Re-tested and committed it in r11-3217.  Thanks!

BR,
Kewen


More information about the Gcc-patches mailing list