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