aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/s390/bitint-4.c
blob: dce72d8ab11cba81f066a592f9e4922bd30a8335 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* { dg-do compile { target bitint } } */
/* { dg-options "-march=z9-109 -O2" } */
/* { dg-final { check-function-bodies "**" "" "" } } */

/* Verify calling convention. */

struct s_bitint5 {
  short a;
  unsigned _BitInt(5) b;
  char c;
};

static_assert (sizeof (struct s_bitint5) == 4);

/*
** s_bitint5_call:
**         iilf	%r2,2758168
**         jg	s_bitint5@PLT
*/

void s_bitint5 (struct s_bitint5 x);
void s_bitint5_call (void) { s_bitint5 ((struct s_bitint5){42, 22wbu, 24}); }

struct s_bitint9 {
  short a;
  unsigned _BitInt(9) b;
};

static_assert (sizeof (struct s_bitint9) == 4);

/*
** s_bitint9_call:
**         iilf	%r2,2752934
**         jg	s_bitint9@PLT
*/

void s_bitint9 (struct s_bitint9 x);
void s_bitint9_call (void) { s_bitint9 ((struct s_bitint9){42, 422wbu}); }

struct s_bitint17 {
  int a;
  unsigned _BitInt(17) b;
};

static_assert (sizeof (struct s_bitint17) == 8);

/*
** s_bitint17_call:
**         llihl	%r2,42
**         oilf	%r2,108198
**         jg	s_bitint17@PLT
*/

void s_bitint17 (struct s_bitint17 x);
void s_bitint17_call (void) { s_bitint17 ((struct s_bitint17){42, 108198wbu}); }

struct s_bitint33 {
  unsigned _BitInt(33) b;
};

static_assert (sizeof (struct s_bitint33) == 8);

/*
** s_bitint33_call:
**         llihl	%r2,1
**         oilf	%r2,2795939494
**         jg	s_bitint33@PLT
*/

void s_bitint33 (struct s_bitint33 x);
void s_bitint33_call (void) { s_bitint33 ((struct s_bitint33){7090906790wbu}); }