1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-msse4.1 -O2" } */
3 /* { dg-final { scan-assembler-times {(?n)v?pcmpeq[bwd]} 4 } } */
4 /* { dg-final { scan-assembler-times {(?n)v?p?blendv} 4 } } */
5
6 typedef char v8qi __attribute__ ((vector_size (8)));
7 typedef short v4hi __attribute__ ((vector_size (8)));
8 typedef int v2si __attribute__ ((vector_size (8)));
9 typedef float v2sf __attribute__ ((vector_size (8)));
10
11 #define FOO(VTYPE, TYPE) \
12 VTYPE \
13 __attribute__ ((noipa)) \
14 foo_##VTYPE (VTYPE a, TYPE b, unsigned int c) \
15 { \
16 a[c] = b; \
17 return a; \
18 } \
19
20 FOO (v8qi, char);
21
22 FOO (v4hi, short);
23
24 FOO (v2si, int);
25
26 FOO (v2sf, float);