1 /* PR target/87767 */ 2 /* { dg-do compile } */ 3 /* { dg-options "-O2 -mavx512f -mavx512vl -mavx512dq" } */ 4 /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } 5 /* { dg-final { scan-assembler-times "\[^\n\]*\\\{1to2\\\}" 5 } } */ 6 /* { dg-final { scan-assembler-times "\[^\n\]*\\\{1to4\\\}" 10 } } */ 7 /* { dg-final { scan-assembler-times "\[^\n\]*\\\{1to8\\\}" 5 } } */ 8 9 typedef int v4si __attribute__ ((vector_size (16))); 10 typedef int v8si __attribute__ ((vector_size (32))); 11 typedef long long v2di __attribute__ ((vector_size (16))); 12 typedef long long v4di __attribute__ ((vector_size (32))); 13 typedef float v4sf __attribute__ ((vector_size (16))); 14 typedef float v8sf __attribute__ ((vector_size (32))); 15 typedef double v2df __attribute__ ((vector_size (16))); 16 typedef double v4df __attribute__ ((vector_size (32))); 17 18 #define CONSTANT 101; 19 #define FOO(VTYPE, OP_NAME, OP) \ 20 VTYPE \ 21 __attribute__ ((noipa)) \ 22 foo_##OP_NAME##_##VTYPE (VTYPE a) \ 23 { \ 24 return a OP CONSTANT; \ 25 } \ 26 27 FOO (v4si, add, +); 28 FOO (v8si, add, +); 29 FOO (v2di, add, +); 30 FOO (v4di, add, +); 31 FOO (v4si, sub, -); 32 FOO (v8si, sub, -); 33 FOO (v2di, sub, -); 34 FOO (v4di, sub, -); 35 FOO (v4sf, add, +); 36 FOO (v8sf, add, +); 37 FOO (v2df, add, +); 38 FOO (v4df, add, +); 39 FOO (v4si, mul, *); 40 FOO (v8si, mul, *); 41 FOO (v2di, mul, *); 42 FOO (v4di, mul, *); 43 FOO (v4sf, mul, *); 44 FOO (v8sf, mul, *); 45 FOO (v2df, mul, *); 46 FOO (v4df, mul, *); 47