blob: bf0490401d7a21d0158f18f920c437cb0a3ac5ff [file] [log] [blame]
/* PR target/105778 */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-not "\tand\[^\n\r]*\(31\|63\|127\|255\)" } } */
unsigned int f1 (unsigned int x, unsigned long y) { y &= 31; return x << y; }
unsigned int f2 (unsigned int x, unsigned long y) { return x << (y & 31); }
unsigned int f3 (unsigned int x, unsigned long y) { y &= 31; return x >> y; }
unsigned int f4 (unsigned int x, unsigned long y) { return x >> (y & 31); }
int f5 (int x, unsigned long y) { y &= 31; return x >> y; }
int f6 (int x, unsigned long y) { return x >> (y & 31); }
unsigned long long f7 (unsigned long long x, unsigned long y) { y &= 63; return x << y; }
unsigned long long f8 (unsigned long long x, unsigned long y) { return x << (y & 63); }
unsigned long long f9 (unsigned long long x, unsigned long y) { y &= 63; return x >> y; }
unsigned long long f10 (unsigned long long x, unsigned long y) { return x >> (y & 63); }
long long f11 (long long x, unsigned long y) { y &= 63; return x >> y; }
long long f12 (long long x, unsigned long y) { return x >> (y & 63); }
#ifdef __SIZEOF_INT128__
unsigned __int128 f13 (unsigned __int128 x, unsigned long y) { y &= 127; return x << y; }
unsigned __int128 f14 (unsigned __int128 x, unsigned long y) { return x << (y & 127); }
unsigned __int128 f15 (unsigned __int128 x, unsigned long y) { y &= 127; return x >> y; }
unsigned __int128 f16 (unsigned __int128 x, unsigned long y) { return x >> (y & 127); }
__int128 f17 (__int128 x, unsigned long y) { y &= 127; return x >> y; }
__int128 f18 (__int128 x, unsigned long y) { return x >> (y & 127); }
#endif
unsigned int f19 (unsigned int x, unsigned long y) { y &= 63; return x << y; }
unsigned int f20 (unsigned int x, unsigned long y) { return x << (y & 63); }
unsigned int f21 (unsigned int x, unsigned long y) { y &= 63; return x >> y; }
unsigned int f22 (unsigned int x, unsigned long y) { return x >> (y & 63); }
int f23 (int x, unsigned long y) { y &= 63; return x >> y; }
int f24 (int x, unsigned long y) { return x >> (y & 63); }
unsigned long long f25 (unsigned long long x, unsigned long y) { y &= 127; return x << y; }
unsigned long long f26 (unsigned long long x, unsigned long y) { return x << (y & 127); }
unsigned long long f27 (unsigned long long x, unsigned long y) { y &= 127; return x >> y; }
unsigned long long f28 (unsigned long long x, unsigned long y) { return x >> (y & 127); }
long long f29 (long long x, unsigned long y) { y &= 127; return x >> y; }
long long f30 (long long x, unsigned long y) { return x >> (y & 127); }
#ifdef __SIZEOF_INT128__
unsigned __int128 f31 (unsigned __int128 x, unsigned long y) { y &= 255; return x << y; }
unsigned __int128 f32 (unsigned __int128 x, unsigned long y) { return x << (y & 255); }
unsigned __int128 f33 (unsigned __int128 x, unsigned long y) { y &= 255; return x >> y; }
unsigned __int128 f34 (unsigned __int128 x, unsigned long y) { return x >> (y & 255); }
__int128 f35 (__int128 x, unsigned long y) { y &= 255; return x >> y; }
__int128 f36 (__int128 x, unsigned long y) { return x >> (y & 255); }
#endif