1/* { dg-do compile } */ 2/* { dg-options "-O2 -msse" } */ 3/* { dg-require-effective-target sse } */ 4 5typedef int __m64 __attribute__ ((__vector_size__ (8))); 6 7extern __m64 foo () ; 8 9void bar (const int input_bpl, const unsigned char *input, 10 unsigned char *output, unsigned long x1) 11{ 12 unsigned char *pix_end_ptr = output + x1 * 4; 13 __m64 m_original = { 0, 0 }; 14 __m64 m_base_addr = __builtin_ia32_vec_init_v2si (0, input_bpl); 15 __m64 m_addr = __builtin_ia32_paddd (m_original, m_base_addr); 16 __m64 *a0 = (__m64 *) input; 17 18 for (; output < pix_end_ptr; output += 4) 19 { 20 a0 = (__m64 *) (input + __builtin_ia32_vec_ext_v2si (m_addr, 0)); 21 m_addr = foo (); 22 __builtin_prefetch (a0, 0); 23 } 24} 25