(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr95046-3.c
       1  /* PR target/95046 */
       2  /* { dg-do compile { target { ! ia32 } } } */
       3  /* { dg-options "-O3 -mfma" } */
       4  
       5  
       6  float r[2], a[2], b[2], c[2];
       7  
       8  void
       9  test_fma (void)
      10  {
      11    for (int i = 0; i < 2; i++)
      12      r[i] = a[i] * b[i] + c[i];
      13  }
      14  
      15  /* { dg-final { scan-assembler "\tvfmadd\[123\]+ps" } } */
      16  
      17  void
      18  test_fms (void)
      19  {
      20    for (int i = 0; i < 2; i++)
      21      r[i] = a[i] * b[i] - c[i];
      22  }
      23  
      24  /* { dg-final { scan-assembler "\tvfmsub\[123\]+ps" } } */
      25  
      26  void
      27  test_fnma (void)
      28  {
      29    for (int i = 0; i < 2; i++)
      30      r[i] = -(a[i] * b[i]) + c[i];
      31  }
      32  
      33  /* { dg-final { scan-assembler "\tvfnmadd\[123\]+ps" } } */
      34  
      35  void
      36  test_fnms (void)
      37  {
      38    for (int i = 0; i < 2; i++)
      39      r[i] = -(a[i] * b[i]) - c[i];
      40  }
      41  
      42  /* { dg-final { scan-assembler "\tvfnmsub\[123\]+ps" } } */