blob: f99ef4aa8653c353c5fd5145dee0b176c1e61e19 [file] [log] [blame]
/* { dg-options "-O3 -msve-vector-bits=256 --param vect-partial-vector-usage=1" } */
unsigned short __attribute__((noipa))
add_loop (unsigned short *x, unsigned short res)
{
for (int i = 0; i < 0xfff; ++i)
res += x[i];
return res;
}
unsigned short __attribute__((noipa))
min_loop (unsigned short *x, unsigned short res)
{
for (int i = 0; i < 0xfff; ++i)
res = res < x[i] ? res : x[i];
return res;
}
unsigned short __attribute__((noipa))
max_loop (unsigned short *x, unsigned short res)
{
for (int i = 0; i < 0xfff; ++i)
res = res > x[i] ? res : x[i];
return res;
}
unsigned short __attribute__((noipa))
and_loop (unsigned short *x, unsigned short res)
{
for (int i = 0; i < 0xfff; ++i)
res &= x[i];
return res;
}
unsigned short __attribute__((noipa))
or_loop (unsigned short *x, unsigned short res)
{
for (int i = 0; i < 0xfff; ++i)
res |= x[i];
return res;
}
unsigned short __attribute__((noipa))
eor_loop (unsigned short *x, unsigned short res)
{
for (int i = 0; i < 0xfff; ++i)
res ^= x[i];
return res;
}
/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.h, z[0-9]+\.h, z[0-9]+\.h\n} 1 } } */
/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 1 } } */
/* { dg-final { scan-assembler-times {\tuaddv\t} 1 } } */
/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
/* { dg-final { scan-assembler-times {\tuminv\t} 1 } } */
/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
/* { dg-final { scan-assembler-times {\tumaxv\t} 1 } } */
/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.d, z[0-9]+\.d, z[0-9]+\.d\n} 1 } } */
/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 1 } } */
/* { dg-final { scan-assembler-times {\tandv\t} 1 } } */
/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.d, z[0-9]+\.d, z[0-9]+\.d\n} 1 } } */
/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 1 } } */
/* { dg-final { scan-assembler-times {\torv\t} 1 } } */
/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.d, z[0-9]+\.d, z[0-9]+\.d\n} 1 } } */
/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 1 } } */
/* { dg-final { scan-assembler-times {\teorv\t} 1 } } */