1  /* PR target/87767 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx2 -mno-avx512f" } */
       4  /* { dg-final { scan-assembler-not "\\\{1to\[248\]\\\}" } }  */
       5  /* { dg-final { scan-assembler-not "\\\{1to16\\\}" } }  */
       6  
       7  typedef int v4si  __attribute__ ((vector_size (16)));
       8  typedef int v8si  __attribute__ ((vector_size (32)));
       9  typedef long long v2di  __attribute__ ((vector_size (16)));
      10  typedef long long v4di  __attribute__ ((vector_size (32)));
      11  typedef float v4sf  __attribute__ ((vector_size (16)));
      12  typedef float v8sf  __attribute__ ((vector_size (32)));
      13  typedef double v2df  __attribute__ ((vector_size (16)));
      14  typedef double v4df  __attribute__ ((vector_size (32)));
      15  
      16  #define FOO(VTYPE, OP_NAME, OP)			\
      17  VTYPE						\
      18   __attribute__ ((noipa))			\
      19  foo_##OP_NAME##_##VTYPE (VTYPE a)		\
      20  {						\
      21    return a OP 101;				\
      22  }						\
      23  
      24  FOO (v4si, add, +);
      25  FOO (v8si, add, +);
      26  FOO (v2di, add, +);
      27  FOO (v4di, add, +);
      28  FOO (v4sf, add, +);
      29  FOO (v8sf, add, +);
      30  FOO (v2df, add, +);
      31  FOO (v4df, add, +);
      32  
      33  FOO (v4si, mul, *);
      34  FOO (v8si, mul, *);
      35  FOO (v2di, mul, *);
      36  FOO (v4di, mul, *);
      37  FOO (v4sf, mul, *);
      38  FOO (v8sf, mul, *);
      39  FOO (v2df, mul, *);
      40  FOO (v4df, mul, *);