blob: e7d1d74a208ac2ab928853ee118a429c151fd856 [file] [log] [blame]
/* PR target/97249 */
/* { dg-do compile } */
/* { dg-options "-mavx2 -O3 -masm=att" } */
/* { dg-final { scan-assembler-times {(?n)vpmovzxbw[ \t]+\(.*%xmm[0-9]} 2 } } */
/* { dg-final { scan-assembler-times {(?n)vpmovzxwd[ \t]+\(.*%xmm[0-9]} 2 } } */
/* { dg-final { scan-assembler-times {(?n)vpmovzxdq[ \t]+\(.*%xmm[0-9]} 2 } } */
void
foo (unsigned char* p1, unsigned char* p2, short* __restrict p3)
{
/* Avoid loop vectorization. */
#pragma GCC unroll 8
for (int i = 0 ; i != 8; i++)
p3[i] = p1[i] + p2[i];
}
void
foo1 (unsigned short* p1, unsigned short* p2, int* __restrict p3)
{
/* Avoid loop vectorization. */
#pragma GCC unroll 4
for (int i = 0 ; i != 4; i++)
p3[i] = p1[i] + p2[i];
}
void
foo2 (unsigned int* p1, unsigned int* p2, long long* __restrict p3)
{
/* Avoid loop vectorization. */
#pragma GCC unroll 2
for (int i = 0 ; i != 2; i++)
p3[i] = (long long)p1[i] + (long long)p2[i];
}