1/* { dg-do compile } */ 2/* { dg-options "-O2" } */ 3 4int test_sal (int a, int c) 5{ 6 return a << (c & 0x1f); 7} 8 9int test_sar (int a, int c) 10{ 11 return a >> (c & 0x1f); 12} 13 14unsigned int test_shr (unsigned int a, int c) 15{ 16 return a >> (c & 0x1f); 17} 18 19unsigned int test_rol (unsigned int a, int c) 20{ 21 int z = c & 0x1f; 22 return (a << z) | (a >> (32 - z)); 23} 24 25unsigned int test_ror (unsigned int a, int c) 26{ 27 int z = c & 0x1f; 28 return (a >> z) | (a << (32 - z)); 29} 30 31/* { dg-final { scan-assembler-not "and" } } */ 32