On Mon, 2022-02-28 at 11:17 +0800, HAO CHEN GUI via Gcc-patches wrote: > Hi, > This patch corrects the match pattern in pr56605.c. The former pattern > is wrong and test case fails with GCC11. It should match following insn on > each subtarget after mode promotion is disabled. The patch need to be > backported to GCC11. >
Hi, I note This patch appears to (partially?) address the P1 [11 regression] pr. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102146 The issue makes reference to a different proposed patch in issue https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103197 titled ppc inline expansion of memcpy/memmove should not use lxsibzx/stxsibx for a single byte proposed patch named rs6000: Disparage lfiwzx and similar I can't address any of the background or history there. :-) > //gimple > _17 = (unsigned int) _20; > prolog_loop_niters.4_23 = _17 & 3; > > //rtl > (insn 19 18 20 2 (parallel [ > (set (reg:CC 208) > (compare:CC (and:SI (subreg:SI (reg:DI 207) 0) > (const_int 3 [0x3])) > (const_int 0 [0]))) > (set (reg:SI 129 [ prolog_loop_niters.5 ]) > (and:SI (subreg:SI (reg:DI 207) 0) > (const_int 3 [0x3]))) > ]) 197 {*andsi3_imm_mask_dot2} > > > Bootstrapped and tested on powerpc64-linux BE/LE and AIX with no > regressions. > Is this okay for trunk and GCC11? Any recommendations? Thanks a lot. > > ChangeLog > 2022-02-28 Haochen Gui <guih...@linux.ibm.com> > > gcc/testsuite/ > PR target/102146 > * gcc.target/powerpc/pr56605.c: Correct match pattern in combine pass. > > > patch.diff > diff --git a/gcc/testsuite/gcc.target/powerpc/pr56605.c > b/gcc/testsuite/gcc.target/powerpc/pr56605.c > index fdedbfc573d..231d808aa99 100644 > --- a/gcc/testsuite/gcc.target/powerpc/pr56605.c > +++ b/gcc/testsuite/gcc.target/powerpc/pr56605.c > @@ -11,5 +11,5 @@ void foo (short* __restrict sb, int* __restrict ia) > ia[i] = (int) sb[i]; > } > > -/* { dg-final { scan-rtl-dump-times {\(compare:CC > \((?:and|zero_extend):(?:DI) \((?:sub)?reg:[SD]I} 1 "combine" } } */ > +/* { dg-final { scan-rtl-dump-times {\(compare:CC \(and:SI \(subreg:SI > \(reg:DI} 1 "combine" } } */ SO with the update, (i squint so this is an approximate handwave) this drops the zero_extend and changes the destination type to be DI for the scan-rtl. This appears to match the rtl as mentioned in the patch comments. >