1/* { dg-do compile } */
2/* { dg-options "-O2 -mno-tbm" } */
3
4unsigned array[4];
5
6#ifdef _WIN64
7__extension__ typedef unsigned long long TYPE;
8#else
9#define TYPE unsigned long
10#endif
11
12unsigned foo(TYPE x)
13{
14          return array[(x>>2)&3ul];
15}
16
17/* { dg-final { scan-assembler-not "shr\[^\\n\]*2" } } */
18/* { dg-final { scan-assembler "and\[^\\n\]*12" } } */
19