1343171Sdim/* Make sure that the S/390 specific shift_count_operand
2343171Sdim   predicate work properly.  */
3353358Sdim
4353358Sdim/* { dg-do compile { target s390*-*-* } } */
5353358Sdim/* { dg-options "-O3" } */
6343171Sdim
7343171Sdimunsigned long long
8343171Sdimf (unsigned long long a, unsigned long b)
9343171Sdim{
10343171Sdim  asm ("" : : :
11343171Sdim#ifdef __s390x__
12343171Sdim		"r13", "r14",
13343171Sdim#endif
14343171Sdim		"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
15343171Sdim                "r8", "r9", "r10", "r11", "r12");
16343171Sdim
17343171Sdim  return a << ((b + 3) & 63);
18343171Sdim}
19343171Sdim
20360784Sdimunsigned long long
21343171Sdimg (unsigned long long a, char **b , int c, int d, int e, int f)
22343171Sdim{
23343171Sdim  char buffer [4096];
24343171Sdim
25343171Sdim  *b = &buffer[0];
26343171Sdim
27343171Sdim  return a << ((unsigned long)&f & 63);
28343171Sdim}
29343171Sdim
30343171Sdimunsigned long long
31343171Sdimh (unsigned long long a, int b, int c, int d, int e, int f)
32343171Sdim{
33343171Sdim  return a << (((unsigned long)&f + 3));
34343171Sdim}
35360784Sdim