1*c85f09ccSJohn Levon struct u {
2*c85f09ccSJohn Levon unsigned int f:3;
3*c85f09ccSJohn Levon };
4*c85f09ccSJohn Levon
upostinc(struct u * x)5*c85f09ccSJohn Levon unsigned int upostinc(struct u *x)
6*c85f09ccSJohn Levon {
7*c85f09ccSJohn Levon return x->f++;
8*c85f09ccSJohn Levon }
9*c85f09ccSJohn Levon
upreinc(struct u * x)10*c85f09ccSJohn Levon unsigned int upreinc(struct u *x)
11*c85f09ccSJohn Levon {
12*c85f09ccSJohn Levon return ++x->f;
13*c85f09ccSJohn Levon }
14*c85f09ccSJohn Levon
ucpy(struct u * d,const struct u * s)15*c85f09ccSJohn Levon void ucpy(struct u *d, const struct u *s)
16*c85f09ccSJohn Levon {
17*c85f09ccSJohn Levon d->f = s->f;
18*c85f09ccSJohn Levon }
19*c85f09ccSJohn Levon
20*c85f09ccSJohn Levon
21*c85f09ccSJohn Levon struct s {
22*c85f09ccSJohn Levon int f:3;
23*c85f09ccSJohn Levon };
24*c85f09ccSJohn Levon
spostinc(struct s * x)25*c85f09ccSJohn Levon int spostinc(struct s *x)
26*c85f09ccSJohn Levon {
27*c85f09ccSJohn Levon return x->f++;
28*c85f09ccSJohn Levon }
29*c85f09ccSJohn Levon
spreinc(struct s * x)30*c85f09ccSJohn Levon int spreinc(struct s *x)
31*c85f09ccSJohn Levon {
32*c85f09ccSJohn Levon return ++x->f;
33*c85f09ccSJohn Levon }
34*c85f09ccSJohn Levon
scpy(struct s * d,const struct s * s)35*c85f09ccSJohn Levon void scpy(struct s *d, const struct s *s)
36*c85f09ccSJohn Levon {
37*c85f09ccSJohn Levon d->f = s->f;
38*c85f09ccSJohn Levon }
39*c85f09ccSJohn Levon
40*c85f09ccSJohn Levon /*
41*c85f09ccSJohn Levon * check-name: bitfield-size
42*c85f09ccSJohn Levon * check-command: test-linearize -m64 -Wno-decl -fdump-ir $file
43*c85f09ccSJohn Levon * check-assert: sizeof(void *) == 8
44*c85f09ccSJohn Levon *
45*c85f09ccSJohn Levon * check-output-start
46*c85f09ccSJohn Levon upostinc:
47*c85f09ccSJohn Levon .L0:
48*c85f09ccSJohn Levon <entry-point>
49*c85f09ccSJohn Levon store.64 %arg1 -> 0[x]
50*c85f09ccSJohn Levon load.64 %r1 <- 0[x]
51*c85f09ccSJohn Levon load.32 %r2 <- 0[%r1]
52*c85f09ccSJohn Levon trunc.3 %r3 <- (32) %r2
53*c85f09ccSJohn Levon zext.32 %r4 <- (3) %r3
54*c85f09ccSJohn Levon add.32 %r5 <- %r4, $1
55*c85f09ccSJohn Levon trunc.3 %r6 <- (32) %r5
56*c85f09ccSJohn Levon load.32 %r7 <- 0[%r1]
57*c85f09ccSJohn Levon zext.32 %r8 <- (3) %r6
58*c85f09ccSJohn Levon and.32 %r9 <- %r7, $0xfffffff8
59*c85f09ccSJohn Levon or.32 %r10 <- %r9, %r8
60*c85f09ccSJohn Levon store.32 %r10 -> 0[%r1]
61*c85f09ccSJohn Levon zext.32 %r11 <- (3) %r4
62*c85f09ccSJohn Levon phisrc.32 %phi1(return) <- %r11
63*c85f09ccSJohn Levon br .L1
64*c85f09ccSJohn Levon
65*c85f09ccSJohn Levon .L1:
66*c85f09ccSJohn Levon phi.32 %r12 <- %phi1(return)
67*c85f09ccSJohn Levon ret.32 %r12
68*c85f09ccSJohn Levon
69*c85f09ccSJohn Levon
70*c85f09ccSJohn Levon upreinc:
71*c85f09ccSJohn Levon .L2:
72*c85f09ccSJohn Levon <entry-point>
73*c85f09ccSJohn Levon store.64 %arg1 -> 0[x]
74*c85f09ccSJohn Levon load.64 %r13 <- 0[x]
75*c85f09ccSJohn Levon load.32 %r14 <- 0[%r13]
76*c85f09ccSJohn Levon trunc.3 %r15 <- (32) %r14
77*c85f09ccSJohn Levon zext.32 %r16 <- (3) %r15
78*c85f09ccSJohn Levon add.32 %r17 <- %r16, $1
79*c85f09ccSJohn Levon trunc.3 %r18 <- (32) %r17
80*c85f09ccSJohn Levon load.32 %r19 <- 0[%r13]
81*c85f09ccSJohn Levon zext.32 %r20 <- (3) %r18
82*c85f09ccSJohn Levon and.32 %r21 <- %r19, $0xfffffff8
83*c85f09ccSJohn Levon or.32 %r22 <- %r21, %r20
84*c85f09ccSJohn Levon store.32 %r22 -> 0[%r13]
85*c85f09ccSJohn Levon zext.32 %r23 <- (3) %r18
86*c85f09ccSJohn Levon phisrc.32 %phi2(return) <- %r23
87*c85f09ccSJohn Levon br .L3
88*c85f09ccSJohn Levon
89*c85f09ccSJohn Levon .L3:
90*c85f09ccSJohn Levon phi.32 %r24 <- %phi2(return)
91*c85f09ccSJohn Levon ret.32 %r24
92*c85f09ccSJohn Levon
93*c85f09ccSJohn Levon
94*c85f09ccSJohn Levon ucpy:
95*c85f09ccSJohn Levon .L4:
96*c85f09ccSJohn Levon <entry-point>
97*c85f09ccSJohn Levon store.64 %arg1 -> 0[d]
98*c85f09ccSJohn Levon store.64 %arg2 -> 0[s]
99*c85f09ccSJohn Levon load.64 %r25 <- 0[s]
100*c85f09ccSJohn Levon load.32 %r26 <- 0[%r25]
101*c85f09ccSJohn Levon trunc.3 %r27 <- (32) %r26
102*c85f09ccSJohn Levon load.64 %r28 <- 0[d]
103*c85f09ccSJohn Levon load.32 %r29 <- 0[%r28]
104*c85f09ccSJohn Levon zext.32 %r30 <- (3) %r27
105*c85f09ccSJohn Levon and.32 %r31 <- %r29, $0xfffffff8
106*c85f09ccSJohn Levon or.32 %r32 <- %r31, %r30
107*c85f09ccSJohn Levon store.32 %r32 -> 0[%r28]
108*c85f09ccSJohn Levon br .L5
109*c85f09ccSJohn Levon
110*c85f09ccSJohn Levon .L5:
111*c85f09ccSJohn Levon ret
112*c85f09ccSJohn Levon
113*c85f09ccSJohn Levon
114*c85f09ccSJohn Levon spostinc:
115*c85f09ccSJohn Levon .L6:
116*c85f09ccSJohn Levon <entry-point>
117*c85f09ccSJohn Levon store.64 %arg1 -> 0[x]
118*c85f09ccSJohn Levon load.64 %r33 <- 0[x]
119*c85f09ccSJohn Levon load.32 %r34 <- 0[%r33]
120*c85f09ccSJohn Levon trunc.3 %r35 <- (32) %r34
121*c85f09ccSJohn Levon zext.32 %r36 <- (3) %r35
122*c85f09ccSJohn Levon add.32 %r37 <- %r36, $1
123*c85f09ccSJohn Levon trunc.3 %r38 <- (32) %r37
124*c85f09ccSJohn Levon load.32 %r39 <- 0[%r33]
125*c85f09ccSJohn Levon zext.32 %r40 <- (3) %r38
126*c85f09ccSJohn Levon and.32 %r41 <- %r39, $0xfffffff8
127*c85f09ccSJohn Levon or.32 %r42 <- %r41, %r40
128*c85f09ccSJohn Levon store.32 %r42 -> 0[%r33]
129*c85f09ccSJohn Levon zext.32 %r43 <- (3) %r36
130*c85f09ccSJohn Levon phisrc.32 %phi3(return) <- %r43
131*c85f09ccSJohn Levon br .L7
132*c85f09ccSJohn Levon
133*c85f09ccSJohn Levon .L7:
134*c85f09ccSJohn Levon phi.32 %r44 <- %phi3(return)
135*c85f09ccSJohn Levon ret.32 %r44
136*c85f09ccSJohn Levon
137*c85f09ccSJohn Levon
138*c85f09ccSJohn Levon spreinc:
139*c85f09ccSJohn Levon .L8:
140*c85f09ccSJohn Levon <entry-point>
141*c85f09ccSJohn Levon store.64 %arg1 -> 0[x]
142*c85f09ccSJohn Levon load.64 %r45 <- 0[x]
143*c85f09ccSJohn Levon load.32 %r46 <- 0[%r45]
144*c85f09ccSJohn Levon trunc.3 %r47 <- (32) %r46
145*c85f09ccSJohn Levon zext.32 %r48 <- (3) %r47
146*c85f09ccSJohn Levon add.32 %r49 <- %r48, $1
147*c85f09ccSJohn Levon trunc.3 %r50 <- (32) %r49
148*c85f09ccSJohn Levon load.32 %r51 <- 0[%r45]
149*c85f09ccSJohn Levon zext.32 %r52 <- (3) %r50
150*c85f09ccSJohn Levon and.32 %r53 <- %r51, $0xfffffff8
151*c85f09ccSJohn Levon or.32 %r54 <- %r53, %r52
152*c85f09ccSJohn Levon store.32 %r54 -> 0[%r45]
153*c85f09ccSJohn Levon zext.32 %r55 <- (3) %r50
154*c85f09ccSJohn Levon phisrc.32 %phi4(return) <- %r55
155*c85f09ccSJohn Levon br .L9
156*c85f09ccSJohn Levon
157*c85f09ccSJohn Levon .L9:
158*c85f09ccSJohn Levon phi.32 %r56 <- %phi4(return)
159*c85f09ccSJohn Levon ret.32 %r56
160*c85f09ccSJohn Levon
161*c85f09ccSJohn Levon
162*c85f09ccSJohn Levon scpy:
163*c85f09ccSJohn Levon .L10:
164*c85f09ccSJohn Levon <entry-point>
165*c85f09ccSJohn Levon store.64 %arg1 -> 0[d]
166*c85f09ccSJohn Levon store.64 %arg2 -> 0[s]
167*c85f09ccSJohn Levon load.64 %r57 <- 0[s]
168*c85f09ccSJohn Levon load.32 %r58 <- 0[%r57]
169*c85f09ccSJohn Levon trunc.3 %r59 <- (32) %r58
170*c85f09ccSJohn Levon load.64 %r60 <- 0[d]
171*c85f09ccSJohn Levon load.32 %r61 <- 0[%r60]
172*c85f09ccSJohn Levon zext.32 %r62 <- (3) %r59
173*c85f09ccSJohn Levon and.32 %r63 <- %r61, $0xfffffff8
174*c85f09ccSJohn Levon or.32 %r64 <- %r63, %r62
175*c85f09ccSJohn Levon store.32 %r64 -> 0[%r60]
176*c85f09ccSJohn Levon br .L11
177*c85f09ccSJohn Levon
178*c85f09ccSJohn Levon .L11:
179*c85f09ccSJohn Levon ret
180*c85f09ccSJohn Levon
181*c85f09ccSJohn Levon
182*c85f09ccSJohn Levon * check-output-end
183*c85f09ccSJohn Levon */
184