1 /* Test that the compiler properly optimizes vector shift instructions into 2 psha/pshl on XOP systems. */ 3 4 /* { dg-do compile { target { ! { ia32 } } } } */ 5 /* { dg-options "-O2 -mxop -ftree-vectorize" } */ 6 7 extern void exit (int); 8 9 typedef long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); 10 11 #define SIZE 10240 12 13 union { 14 __m128i i_align; 15 int i32[SIZE]; 16 unsigned u32[SIZE]; 17 } a, b, c; 18 19 void right_uns_shift32(void)20right_uns_shift32 (void) 21 { 22 int i; 23 24 for (i = 0; i < SIZE; i++) 25 a.u32[i] = b.u32[i] >> c.i32[i]; 26 } 27 main()28int main () 29 { 30 right_uns_shfit32 (); 31 exit (0); 32 } 33 34 /* { dg-final { scan-assembler "vpshld" } } */ 35