https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90545

            Bug ID: 90545
           Summary: [10 regression]
                    gcc.target/powerpc/fold-vec-splats-floatdouble.c fails
                    starting with r271022
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: seurer at gcc dot gnu.org
  Target Milestone: ---

This happens on just power 9.

spawn -ignore SIGHUP /home3/seurer/gcc/build/gcc-test/gcc/xgcc
-B/home3/seurer/gcc/build/gcc-test/gcc/
/home/seurer/gcc/gcc-test/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-floatdouble.c
-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers
-fdiagnostics-color=never -mvsx -O1 -ffat-lto-objects -fno-ident -S -o
fold-vec-splats-floatdouble.s
PASS: gcc.target/powerpc/fold-vec-splats-floatdouble.c (test for excess errors)
gcc.target/powerpc/fold-vec-splats-floatdouble.c: xxpermdi found 0 times
FAIL: gcc.target/powerpc/fold-vec-splats-floatdouble.c scan-assembler-times
xxpermdi 1
PASS: gcc.target/powerpc/fold-vec-splats-floatdouble.c scan-assembler-times
\\mxscvdpspn?\\M 1
PASS: gcc.target/powerpc/fold-vec-splats-floatdouble.c scan-assembler-times
\\mvspltw\\M|\\mxxspltw\\M 1


test1f before r271022:

test1f:
.LFB1:
        .cfi_startproc
        xxpermdi 34,1,1,0
        blr


After r271022:

test1f:
.LFB1:
        .cfi_startproc
        mfvsrd 9,1
        mtvsrdd 34,9,9
        blr


gcc.target/powerpc/fold-vec-splats-floatdouble.c:

/* Verify that overloaded built-ins for vec_splat with float and
   double inputs for VSX produce the right code.  */

/* { dg-do compile } */
/* { dg-require-effective-target powerpc_vsx_ok } */
/* { dg-options "-mvsx -O1" } */

#include <altivec.h>

vector float
test1d (float x)
{
  return vec_splats (x);
}

vector double
test1f (double x)
{
  return vec_splats (x);
}

// float test generates the permute instruction.
/* { dg-final { scan-assembler-times "xxpermdi" 1 } } */

// double test generates a convert (double to single non-signalling) followed
by a splat.
/* { dg-final { scan-assembler-times {\mxscvdpspn?\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvspltw\M|\mxxspltw\M} 1 } } */

Reply via email to