(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
pr86731-longlong.c
       1  /* PR86731.  Verify that the rs6000 gimple-folding code handles the
       2     left shift properly.  */
       3  
       4  /* { dg-do compile } */
       5  /* { dg-require-effective-target powerpc_p8vector_ok } */
       6  /* { dg-require-effective-target lp64 } */
       7  /* { dg-options "-maltivec -O3 -mpower8-vector " } */
       8  
       9  #include <altivec.h>
      10  
      11  vector unsigned long long splatu4(void)
      12  {
      13          vector unsigned long long mzero = {-1,-1};
      14          return (vector unsigned long long) vec_sl(mzero, mzero);
      15  }
      16  vector signed long long splats4(void)
      17  {
      18          vector unsigned long long mzero = {-1,-1};
      19          return (vector signed long long) vec_sl(mzero, mzero);
      20  }
      21  
      22  /* Codegen will consist of splat and shift instructions for most types.
      23     Noted variations:  if gimple folding is disabled, or if -fwrapv is not
      24     specified, the long long tests will generate a vspltisw+vsld pair,
      25     versus generating a single lvx.  */
      26  /* { dg-final { scan-assembler-times {\mvspltis[bhw]\M|\mxxspltib\M} 2 } } */
      27  /* { dg-final { scan-assembler-times {\mvsl[bhwd]\M} 2 } } */
      28  /* { dg-final { scan-assembler-times {\mlvx\M} 0 } } */
      29