(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512f-broadcast-pr87767-7.c
       1  /* PR target/87767 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx512f -mavx512vl" } */
       4  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
       5  /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } }
       6  /* { dg-final { scan-assembler-times "vadd\[^\n\]*\\\{1to2\\\}" 1 } }  */
       7  /* { dg-final { scan-assembler-times "vadd\[^\n\]*\\\{1to4\\\}" 2 } }  */
       8  /* { dg-final { scan-assembler-times "vadd\[^\n\]*\\\{1to8\\\}" 2 } }  */
       9  /* { dg-final { scan-assembler-times "vadd\[^\n\]*\\\{1to16\\\}" 1 } }  */
      10  /* { dg-final { scan-assembler-times "vsub\[^\n\]*\\\{1to2\\\}" 1 } }  */
      11  /* { dg-final { scan-assembler-times "vsub\[^\n\]*\\\{1to4\\\}" 2 } }  */
      12  /* { dg-final { scan-assembler-times "vsub\[^\n\]*\\\{1to8\\\}" 2 } }  */
      13  /* { dg-final { scan-assembler-times "vsub\[^\n\]*\\\{1to16\\\}" 1 } }  */
      14  /* { dg-final { scan-assembler-times "vmul\[^\n\]*\\\{1to2\\\}" 1 } }  */
      15  /* { dg-final { scan-assembler-times "vmul\[^\n\]*\\\{1to4\\\}" 2 } }  */
      16  /* { dg-final { scan-assembler-times "vmul\[^\n\]*\\\{1to8\\\}" 2 } }  */
      17  /* { dg-final { scan-assembler-times "vmul\[^\n\]*\\\{1to16\\\}" 1 } }  */
      18  /* { dg-final { scan-assembler-times "vdiv\[^\n\]*\\\{1to2\\\}" 1 } }  */
      19  /* { dg-final { scan-assembler-times "vdiv\[^\n\]*\\\{1to4\\\}" 2 } }  */
      20  /* { dg-final { scan-assembler-times "vdiv\[^\n\]*\\\{1to8\\\}" 2 } }  */
      21  /* { dg-final { scan-assembler-times "vdiv\[^\n\]*\\\{1to16\\\}" 1 } }  */
      22  /* { dg-final { scan-assembler-times "vfmadd\[^\n\]*\\\{1to2\\\}" 1 } }  */
      23  /* { dg-final { scan-assembler-times "vfmadd\[^\n\]*\\\{1to4\\\}" 2 } }  */
      24  /* { dg-final { scan-assembler-times "vfmadd\[^\n\]*\\\{1to8\\\}" 2 } }  */
      25  /* { dg-final { scan-assembler-times "vfmadd\[^\n\]*\\\{1to16\\\}" 1 } }  */
      26  /* { dg-final { scan-assembler-times "vfmsub\[^\n\]*\\\{1to2\\\}" 1 } }  */
      27  /* { dg-final { scan-assembler-times "vfmsub\[^\n\]*\\\{1to4\\\}" 2 } }  */
      28  /* { dg-final { scan-assembler-times "vfmsub\[^\n\]*\\\{1to8\\\}" 2 } }  */
      29  /* { dg-final { scan-assembler-times "vfmsub\[^\n\]*\\\{1to16\\\}" 1 } }  */
      30  /* { dg-final { scan-assembler-times "vfnmadd\[^\n\]*\\\{1to2\\\}" 1 } }  */
      31  /* { dg-final { scan-assembler-times "vfnmadd\[^\n\]*\\\{1to4\\\}" 2 } }  */
      32  /* { dg-final { scan-assembler-times "vfnmadd\[^\n\]*\\\{1to8\\\}" 2 } }  */
      33  /* { dg-final { scan-assembler-times "vfnmadd\[^\n\]*\\\{1to16\\\}" 1 } }  */
      34  /* { dg-final { scan-assembler-times "vfnmsub\[^\n\]*\\\{1to2\\\}" 1 } }  */
      35  /* { dg-final { scan-assembler-times "vfnmsub\[^\n\]*\\\{1to4\\\}" 2 } }  */
      36  /* { dg-final { scan-assembler-times "vfnmsub\[^\n\]*\\\{1to8\\\}" 2 } }  */
      37  /* { dg-final { scan-assembler-times "vfnmsub\[^\n\]*\\\{1to16\\\}" 1 } }  */
      38  
      39  #include<immintrin.h>
      40  
      41  #define CONSTANT 101
      42  
      43  #define FOO(VTYPE, OP_NAME, LEN, SUFFIX, MTYPE)			\
      44    VTYPE									\
      45    __attribute__ ((noipa))						\
      46    _mm##LEN##_foo_##OP_NAME##_##SUFFIX (VTYPE dst, VTYPE src, MTYPE m)	\
      47    {									\
      48      return  _mm##LEN##_mask_##OP_NAME##_##SUFFIX (dst, m, src,		\
      49  						  _mm##LEN##_set1_##SUFFIX (CONSTANT)); \
      50    }									\
      51  
      52  #define FOOZ(VTYPE, OP_NAME, LEN, SUFFIX, MTYPE)			\
      53    VTYPE									\
      54    __attribute__ ((noipa))						\
      55    _mm##LEN##_fooz_##OP_NAME##_##SUFFIX (VTYPE dst, VTYPE src, MTYPE m)	\
      56    {									\
      57      return  _mm##LEN##_maskz_##OP_NAME##_##SUFFIX (m, dst, src,		\
      58  						  _mm##LEN##_set1_##SUFFIX (CONSTANT)); \
      59    }									\
      60  
      61  FOO (__m512, add, 512, ps, __mmask16);
      62  FOO (__m256, add, 256, ps, __mmask8);
      63  FOO (__m128, add,, ps, __mmask8);
      64  
      65  FOO (__m512, sub, 512, ps, __mmask16);
      66  FOO (__m256, sub, 256, ps, __mmask8);
      67  FOO (__m128, sub,, ps, __mmask8);
      68  
      69  FOO (__m512, mul, 512, ps, __mmask16);
      70  FOO (__m256, mul, 256, ps, __mmask8);
      71  FOO (__m128, mul,, ps, __mmask8);
      72  
      73  FOO (__m512, div, 512, ps, __mmask16);
      74  FOO (__m256, div, 256, ps, __mmask8);
      75  FOO (__m128, div,, ps, __mmask8);
      76  
      77  FOOZ (__m512, fmadd, 512, ps, __mmask16);
      78  FOOZ (__m256, fmadd, 256, ps, __mmask8);
      79  FOOZ (__m128, fmadd,, ps, __mmask8);
      80  
      81  FOOZ (__m512, fmsub, 512, ps, __mmask16);
      82  FOOZ (__m256, fmsub, 256, ps, __mmask8);
      83  FOOZ (__m128, fmsub,, ps, __mmask8);
      84  
      85  FOOZ (__m512, fnmadd, 512, ps, __mmask16);
      86  FOOZ (__m256, fnmadd, 256, ps, __mmask8);
      87  FOOZ (__m128, fnmadd,, ps, __mmask8);
      88  
      89  FOOZ (__m512, fnmsub, 512, ps, __mmask16);
      90  FOOZ (__m256, fnmsub, 256, ps, __mmask8);
      91  FOOZ (__m128, fnmsub,, ps, __mmask8);
      92  
      93  FOO (__m512d, add, 512, pd, __mmask8);
      94  FOO (__m256d, add, 256, pd, __mmask8);
      95  FOO (__m128d, add,, pd, __mmask8);
      96  
      97  FOO (__m512d, sub, 512, pd, __mmask8);
      98  FOO (__m256d, sub, 256, pd, __mmask8);
      99  FOO (__m128d, sub,, pd, __mmask8);
     100  
     101  FOO (__m512d, mul, 512, pd, __mmask8);
     102  FOO (__m256d, mul, 256, pd, __mmask8);
     103  FOO (__m128d, mul,, pd, __mmask8);
     104  
     105  FOO (__m512d, div, 512, pd, __mmask8);
     106  FOO (__m256d, div, 256, pd, __mmask8);
     107  FOO (__m128d, div,, pd, __mmask8);
     108  
     109  FOOZ (__m512d, fmadd, 512, pd, __mmask8);
     110  FOOZ (__m256d, fmadd, 256, pd, __mmask8);
     111  FOOZ (__m128d, fmadd,, pd, __mmask8);
     112  
     113  FOOZ (__m512d, fmsub, 512, pd, __mmask8);
     114  FOOZ (__m256d, fmsub, 256, pd, __mmask8);
     115  FOOZ (__m128d, fmsub,, pd, __mmask8);
     116  
     117  FOOZ (__m512d, fnmadd, 512, pd, __mmask8);
     118  FOOZ (__m256d, fnmadd, 256, pd, __mmask8);
     119  FOOZ (__m128d, fnmadd,, pd, __mmask8);
     120  
     121  FOOZ (__m512d, fnmsub, 512, pd, __mmask8);
     122  FOOZ (__m256d, fnmsub, 256, pd, __mmask8);
     123  FOOZ (__m128d, fnmsub,, pd, __mmask8);