1/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2/* { dg-options "-O2" } */
3
4/* { dg-final { scan-assembler "rlwinm r?\[0-9\]+,r?\[0-9\]+,0,0,30"  } } */
5/* { dg-final { scan-assembler "rlwinm r?\[0-9\]+,r?\[0-9\]+,0,29,30"  } } */
6/* { dg-final { scan-assembler-not "rldicr" } } */
7
8/* Origin:Pete Steinmetz <steinmtz@us.ibm.com> */
9
10/* PR 16457 - use rlwinm insn.  */
11
12char *foo1 (char *p, unsigned int x)
13{
14  return p - (x & ~1);
15}
16
17char *foo2 (char *p, unsigned int x)
18{
19  return p - (x & 6);
20}
21