1  /* PR target/95046 */
       2  /* { dg-do compile { target { ! ia32 } } } */
       3  /* { dg-options "-O3 -msse2" } */
       4  
       5  
       6  float r[2], a[2], b[2];
       7  
       8  float copysignf (float, float);
       9  
      10  void
      11  test_copysign (void)
      12  {
      13    for (int i = 0; i < 2; i++)
      14      r[i] = copysignf (a[i], b[i]);
      15  }
      16  
      17  /* { dg-final { scan-assembler "\tv?andnps" } } */
      18  
      19  void
      20  test_xorsign (void)
      21  {
      22    for (int i = 0; i < 2; i++)
      23      r[i] = a[i] * copysignf (1.0f, b[i]);
      24  }
      25  
      26  /* { dg-final { scan-assembler "\tv?xorps" } } */
      27  
      28  int s[2];
      29  
      30  int signbitf (float);
      31  
      32  void
      33  test_signbitf (void)
      34  {
      35    for (int i = 0; i < 2; i++)
      36      s[i] = signbitf (a[i]);
      37  }
      38  
      39  /* { dg-final { scan-assembler "\tv?psrld" } } */