1  /* PR target/95046 */
       2  /* { dg-do compile { target { ! ia32 } } } */
       3  /* { dg-options "-O3 -ffast-math -msse2 -mno-recip" } */
       4  
       5  
       6  float r[2], a[2], b[2];
       7  
       8  void
       9  test_plus (void)
      10  {
      11    for (int i = 0; i < 2; i++)
      12      r[i] = a[i] + b[i];
      13  }
      14  
      15  /* { dg-final { scan-assembler "\tv?addps" } } */
      16  
      17  void
      18  test_minus (void)
      19  {
      20    for (int i = 0; i < 2; i++)
      21      r[i] = a[i] - b[i];
      22  }
      23  
      24  /* { dg-final { scan-assembler "\tv?subps" } } */
      25  
      26  void
      27  test_mult (void)
      28  {
      29    for (int i = 0; i < 2; i++)
      30      r[i] = a[i] * b[i];
      31  }
      32  
      33  /* { dg-final { scan-assembler "\tv?mulps" } } */
      34  
      35  void
      36  test_div (void)
      37  {
      38    for (int i = 0; i < 2; i++)
      39      r[i] = a[i] / b[i];
      40  }
      41  
      42  /* { dg-final { scan-assembler "\tv?divps" } } */
      43  
      44  void
      45  test_min (void)
      46  {
      47    for (int i = 0; i < 2; i++)
      48      r[i] = a[i] < b[i] ? a[i] : b[i];
      49  }
      50  
      51  /* { dg-final { scan-assembler "\tv?minps" } } */
      52  
      53  void
      54  test_max (void)
      55  {
      56    for (int i = 0; i < 2; i++)
      57      r[i] = a[i] > b[i] ? a[i] : b[i];
      58  }
      59  
      60  /* { dg-final { scan-assembler "\tv?maxps" } } */
      61  
      62  float sqrtf (float);
      63  
      64  void
      65  test_sqrt (void)
      66  {
      67    for (int i = 0; i < 2; i++)
      68      r[i] = sqrtf (a[i]);
      69  }
      70  
      71  /* { dg-final { scan-assembler "\tv?sqrtps" } } */