1  /* { dg-do compile { target lp64 } } */
       2  /* { dg-require-effective-target powerpc_p9vector_ok } */
       3  /* { dg-require-effective-target float128 } */
       4  /* { dg-options "-mpower9-vector -O2 -ffast-math" } */
       5  
       6  extern _Float128 copysignf128 (_Float128, _Float128);
       7  
       8  /* Check copysign optimizations that are done for double are also done for
       9     _Float128.  */
      10  
      11  _Float128
      12  x_times_cs_one_negx (_Float128 x)
      13  {
      14    return x * copysignf128 (1.0Q, -x);	/* XSNABSQP  */
      15  }
      16  
      17  _Float128
      18  x_times_cs_one_x (_Float128 x)
      19  {
      20    return x * copysignf128 (1.0Q, x);	/* XSABSQP  */
      21  }
      22  
      23  _Float128
      24  cs_x_x (_Float128 x)
      25  {
      26    return copysignf128 (x, x);		/* no operation.  */
      27  }
      28  
      29  /* { dg-final { scan-assembler-times {\mxsabsqp\M}  1 } } */
      30  /* { dg-final { scan-assembler-times {\mxsnabsqp\M} 1 } } */
      31  /* { dg-final { scan-assembler-not   {\mxscpsgnqp\M}  } } */
      32  /* { dg-final { scan-assembler-not   {\mlxvx\M}       } } */
      33  /* { dg-final { scan-assembler-not   {\mlxv\M}        } } */
      34  /* { dg-final { scan-assembler-not   {\mbl\M}         } } */