/* { dg-do compile } */
/* { dg-options "-O2 -mno-tbm" } */
/* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */

unsigned array[4];

#ifdef _WIN64
__extension__ typedef unsigned long long TYPE;
#else
#define TYPE unsigned long
#endif

unsigned foo(TYPE x)
{
          return array[(x>>2)&3ul];
}

/* { dg-final { scan-assembler-not "shr\[^\\n\]*2" } } */
/* { dg-final { scan-assembler "and\[^\\n\]*12" } } */
 