1 /* Make sure that the S/390 specific shift_count_operand
2    predicate work properly.  */
3 
4 /* { dg-do compile } */
5 /* { dg-options "-O3" } */
6 
7 unsigned long long
f(unsigned long long a,unsigned long b)8 f (unsigned long long a, unsigned long b)
9 {
10   asm ("" : : :
11 #ifdef __s390x__
12 		"r13", "r14",
13 #endif
14 		"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
15                 "r8", "r9", "r10", "r11", "r12");
16 
17   return a << ((b + 3) & 63);
18 }
19 
20 unsigned long long
g(unsigned long long a,char ** b,int c,int d,int e,int f)21 g (unsigned long long a, char **b , int c, int d, int e, int f)
22 {
23   char buffer [4096];
24 
25   *b = &buffer[0];
26 
27   return a << ((unsigned long)&f & 63);
28 }
29 
30 unsigned long long
h(unsigned long long a,int b,int c,int d,int e,int f)31 h (unsigned long long a, int b, int c, int d, int e, int f)
32 {
33   return a << (((unsigned long)&f + 3));
34 }
35