On Thu, Nov 18, 2021 at 10:09:53AM -0600, Bill Schmidt wrote:
> Hi!  This patch is broken out from the test case patch for the new builtins 
> support.
> 
> The old builtins code performs gimple folding on 128-bit compares.  This
> results in correct but very inefficient code.  (I suspect we may be
> missing some optab entries, misleading gimple into 64-bit emulation.)

It is sub-optimal if Gimple ever does this: it is better done later, at
expand time.

> In
> the new support, I disabled this gimple folding, which results in us
> directly generating the 128-bit comparison instructions.  This patch
> adjusts the scan-assembler-times counts for those instructions.
> 
> I've opened PR103316 to track this.

Thanks.

So when the generic code wisens up this testcase will still pass?  But
you do then need to re-introduce the folding here?

> gcc/testsuite/
>       * gcc.target/powerpc/int_128bit-runnable.c: Adjust instruction
>       counts since we do better by not gimple-folding some builtins.

Wrap later please?  80 chars is fine, 79 chars is fine, 10 chars or 70
chars is not :-(

(Not that it matters much *here* of course; it just annoys me

Also, s/ since.*/./ please.  Changelogs say what changed, not why, and
the "why" you say here is only half of the story, pretty misleading for
future archaeologists.

> --- a/gcc/testsuite/gcc.target/powerpc/int_128bit-runnable.c
> +++ b/gcc/testsuite/gcc.target/powerpc/int_128bit-runnable.c
> @@ -11,9 +11,9 @@
>  /* { dg-final { scan-assembler-times {\mvrlq\M} 2 } } */
>  /* { dg-final { scan-assembler-times {\mvrlqnm\M} 2 } } */
>  /* { dg-final { scan-assembler-times {\mvrlqmi\M} 2 } } */
> -/* { dg-final { scan-assembler-times {\mvcmpequq\M} 16 } } */
> -/* { dg-final { scan-assembler-times {\mvcmpgtsq\M} 16 } } */
> -/* { dg-final { scan-assembler-times {\mvcmpgtuq\M} 16 } } */
> +/* { dg-final { scan-assembler-times {\mvcmpequq\M} 24 } } */
> +/* { dg-final { scan-assembler-times {\mvcmpgtsq\M} 26 } } */
> +/* { dg-final { scan-assembler-times {\mvcmpgtuq\M} 26 } } */
>  /* { dg-final { scan-assembler-times {\mvmuloud\M} 1 } } */
>  /* { dg-final { scan-assembler-times {\mvmulesd\M} 1 } } */
>  /* { dg-final { scan-assembler-times {\mvmulosd\M} 1 } } */

If you think it actually generates better code now, and this is expected
code, then okay for trunk.  Thanks!


Segher

Reply via email to