1  /* PR rtl-optimization/46235 */
       2  /* { dg-do compile { target lp64 } } */
       3  /* { dg-options "-O2 -mtune=core2" } */
       4  
       5  int foo (int a, int x, int y)
       6  {
       7    if (a & (1<<x))
       8      return a;
       9    return 1;
      10  }
      11  
      12  int bar_ww (int a, int x, int y, int z)
      13  {
      14    return (a & (1<<x)) ? y : z;
      15  }
      16  
      17  int bar_lw (long long a, int x, int y, int z)
      18  {
      19    return (a & (1LL<<x)) ? y : z;
      20  }
      21  
      22  long long bar_wl (int a, int x, long long y, long long z)
      23  {
      24    return (a & (1<<x)) ? y : z;
      25  }
      26  
      27  long long bar_ll (long long a, int x, long long y, long long z)
      28  {
      29    return (a & (1LL<<x)) ? y : z;
      30  }
      31  
      32  short bar_ws (int a, int x, short y, short z)
      33  {
      34    return (a & (1<<x)) ? y : z;
      35  }
      36  
      37  short bar_ls (long long a, int x, short y, short z)
      38  {
      39    return (a & (1LL<<x)) ? y : z;
      40  }
      41  
      42  /* { dg-final { scan-assembler-times "bt\[lq\]\[ \t\]" 7 } } */
      43  /* { dg-final { scan-assembler-not "sar\[lq\]\[ \t\]" } } */
      44