(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512fp16-fma-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-Ofast -mavx512fp16" } */
       3  
       4  typedef _Float16 v32hf __attribute__ ((__vector_size__ (64)));
       5  
       6  _Float16
       7  foo1 (_Float16 a, _Float16 b, _Float16 c)
       8  {
       9    return a * b + c;
      10  }
      11  
      12  /* { dg-final { scan-assembler-times "vfmadd132sh\[^\n\r\]*xmm\[0-9\]" 1 } } */
      13  
      14  _Float16
      15  foo2 (_Float16 a, _Float16 b, _Float16 c)
      16  {
      17    return -a * b + c;
      18  }
      19  
      20  /* { dg-final { scan-assembler-times "vfnmadd132sh\[^\n\r\]*xmm\[0-9\]" 1 } } */
      21  
      22  _Float16
      23  foo3 (_Float16 a, _Float16 b, _Float16 c)
      24  {
      25    return a * b - c;
      26  }
      27  
      28  /* { dg-final { scan-assembler-times "vfmsub132sh\[^\n\r\]*xmm\[0-9\]" 1 } } */
      29  
      30  _Float16
      31  foo4 (_Float16 a, _Float16 b, _Float16 c)
      32  {
      33    return -a * b - c;
      34  }
      35  
      36  /* { dg-final { scan-assembler-times "vfnmsub132sh\[^\n\r\]*xmm\[0-9\]" 1 } } */
      37  
      38  v32hf
      39  foo5 (v32hf a, v32hf b, v32hf c)
      40  {
      41    return a * b + c;
      42  }
      43  
      44  /* { dg-final { scan-assembler-times "vfmadd132ph\[^\n\r\]*zmm\[0-9\]" 1 } } */
      45  
      46  v32hf
      47  foo6 (v32hf a, v32hf b, v32hf c)
      48  {
      49    return -a * b + c;
      50  }
      51  
      52  /* { dg-final { scan-assembler-times "vfnmadd132ph\[^\n\r\]*zmm\[0-9\]" 1 } } */
      53  
      54  v32hf
      55  foo7 (v32hf a, v32hf b, v32hf c)
      56  {
      57    return a * b - c;
      58  }
      59  
      60  /* { dg-final { scan-assembler-times "vfmsub132ph\[^\n\r\]*zmm\[0-9\]" 1 } } */
      61  
      62  v32hf
      63  foo8 (v32hf a, v32hf b, v32hf c)
      64  {
      65    return -a * b - c;
      66  }
      67  
      68  /* { dg-final { scan-assembler-times "vfnmsub132ph\[^\n\r\]*zmm\[0-9\]" 1 } } */
      69