/* { dg-do compile } */ /* { dg-options "-O2 -funroll-loops -march=nocona" } */ #include int W; void f() { int j; int B, C; unsigned char* S; __m64 *T = (__m64 *) &W; for (j = 0; j < 16; j++, T++) { T[0] = T[1] = _mm_set1_pi8(*S); S += W; } C = 3 * B; __m64 E = _mm_set_pi16(3 * B, 3 * B, 3 * B, 5 * B); __m64 G = _mm_set1_pi16(3 * B); for (j = 0; j < 16; j++) { __m64 R = _mm_set1_pi16(B + j * C); R = _m_paddw(R, E); R = _m_paddw(R, G); T[0] = _mm_srai_pi16(R, 3); } }