1 /* Check that we do not emit & 63 via risbg for rotating.  */
2 
3 /* { dg-options "-O1 -m64" } */
4 
5 /* { dg-final { scan-assembler-not "risbg" } } */
6 /* { dg-final { scan-assembler-not "nilf" } } */
7 
shiftl(long in,unsigned long sh)8 long shiftl (long in, unsigned long sh)
9 {
10    sh %= 64;
11    return (in << sh);
12 }
13 
shiftll(unsigned long in,unsigned long sh)14 unsigned long shiftll (unsigned long in, unsigned long sh)
15 {
16    sh %= 64;
17    return (in << sh);
18 }
19 
shiftr(long in,unsigned long sh)20 long shiftr (long in, unsigned long sh)
21 {
22    sh %= 64;
23    return (in >> sh);
24 }
25 
shiftrl(unsigned long in,unsigned long sh)26 unsigned long shiftrl (unsigned long in, unsigned long sh)
27 {
28    sh %= 64;
29    return (in >> sh);
30 }
31 
rotlmod(unsigned long in,unsigned long sh)32 unsigned long rotlmod (unsigned long in, unsigned long sh)
33 {
34    sh %= 64;
35    return (in << sh) | (in >> (64 - sh));
36 }
37