(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
vec-splat-constant-v4sf.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target power10_ok } */
       3  /* { dg-options "-mdejagnu-cpu=power10 -O2" } */
       4  
       5  #include <altivec.h>
       6  
       7  /* Test whether XXSPLTIW is generated for V4SF vector constants.  */
       8  
       9  vector float
      10  v4sf_const_1 (void)
      11  {
      12    return (vector float) { 1.0f, 1.0f, 1.0f, 1.0f };	/* XXSPLTIW.  */
      13  }
      14  
      15  vector float
      16  v4sf_const_nan (void)
      17  {
      18    return (vector float) { __builtin_nanf (""),
      19  			  __builtin_nanf (""),
      20  			  __builtin_nanf (""),
      21  			  __builtin_nanf ("") };	/* XXSPLTIW.  */
      22  }
      23  
      24  vector float
      25  v4sf_const_inf (void)
      26  {
      27    return (vector float) { __builtin_inff (),
      28  			  __builtin_inff (),
      29  			  __builtin_inff (),
      30  			  __builtin_inff () };		/* XXSPLTIW.  */
      31  }
      32  
      33  vector float
      34  v4sf_const_m0 (void)
      35  {
      36    return (vector float) { -0.0f, -0.0f, -0.0f, -0.0f };	/* XXSPLTIB/VSLW.  */
      37  }
      38  
      39  vector float
      40  v4sf_splats_1 (void)
      41  {
      42    return vec_splats (1.0f);				/* XXSPLTIW.  */
      43  }
      44  
      45  vector float
      46  v4sf_splats_nan (void)
      47  {
      48    return vec_splats (__builtin_nanf (""));		/* XXSPLTIW.  */
      49  }
      50  
      51  vector float
      52  v4sf_splats_inf (void)
      53  {
      54    return vec_splats (__builtin_inff ());		/* XXSPLTIW.  */
      55  }
      56  
      57  vector float
      58  v8hi_splats_m0 (void)
      59  {
      60    return vec_splats (-0.0f);				/* XXSPLTIB/VSLW.  */
      61  }
      62  
      63  /* { dg-final { scan-assembler-times {\mxxspltiw\M} 6 } } */
      64  /* { dg-final { scan-assembler-times {\mxxspltib\M} 2 } } */
      65  /* { dg-final { scan-assembler-times {\mvslw\M}     2 } } */
      66  /* { dg-final { scan-assembler-not   {\mlxvx?\M}      } } */
      67  /* { dg-final { scan-assembler-not   {\mplxv\M}       } } */