1f08c3bdfSopenharmony_cistruct S {
2f08c3bdfSopenharmony_ci	         int  :1;
3f08c3bdfSopenharmony_ci	  signed int s:2;
4f08c3bdfSopenharmony_ci	unsigned int u:3;
5f08c3bdfSopenharmony_ci	        long l;
6f08c3bdfSopenharmony_ci	      double d;
7f08c3bdfSopenharmony_ci};
8f08c3bdfSopenharmony_ci
9f08c3bdfSopenharmony_ciint os(int i, struct S *b) { return i || b->s; }
10f08c3bdfSopenharmony_ciint ou(int i, struct S *b) { return i || b->u; }
11f08c3bdfSopenharmony_ciint ol(int i, struct S *b) { return i || b->l; }
12f08c3bdfSopenharmony_ciint od(int i, struct S *b) { return i || b->d; }
13f08c3bdfSopenharmony_ci
14f08c3bdfSopenharmony_ciint as(int i, struct S *b) { return i && b->s; }
15f08c3bdfSopenharmony_ciint au(int i, struct S *b) { return i && b->u; }
16f08c3bdfSopenharmony_ciint al(int i, struct S *b) { return i && b->l; }
17f08c3bdfSopenharmony_ciint ad(int i, struct S *b) { return i && b->d; }
18f08c3bdfSopenharmony_ci
19f08c3bdfSopenharmony_ci/*
20f08c3bdfSopenharmony_ci * check-name: logical
21f08c3bdfSopenharmony_ci * check-command: test-linearize -m64 -fdump-ir -Wno-decl $file
22f08c3bdfSopenharmony_ci * check-assert: sizeof(void *) == 8 && sizeof(long) == 8 && sizeof(double) == 8
23f08c3bdfSopenharmony_ci *
24f08c3bdfSopenharmony_ci * check-output-start
25f08c3bdfSopenharmony_cios:
26f08c3bdfSopenharmony_ci.L0:
27f08c3bdfSopenharmony_ci	<entry-point>
28f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
29f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
30f08c3bdfSopenharmony_ci	load.32     %r2 <- 0[i]
31f08c3bdfSopenharmony_ci	setne.1     %r3 <- %r2, $0
32f08c3bdfSopenharmony_ci	phisrc.32   %phi1 <- $1
33f08c3bdfSopenharmony_ci	cbr         %r3, .L3, .L2
34f08c3bdfSopenharmony_ci
35f08c3bdfSopenharmony_ci.L2:
36f08c3bdfSopenharmony_ci	load.64     %r4 <- 0[b]
37f08c3bdfSopenharmony_ci	load.32     %r5 <- 0[%r4]
38f08c3bdfSopenharmony_ci	lsr.32      %r6 <- %r5, $1
39f08c3bdfSopenharmony_ci	trunc.2     %r7 <- (32) %r6
40f08c3bdfSopenharmony_ci	setne.1     %r8 <- %r7, $0
41f08c3bdfSopenharmony_ci	zext.32     %r9 <- (1) %r8
42f08c3bdfSopenharmony_ci	phisrc.32   %phi2 <- %r9
43f08c3bdfSopenharmony_ci	br          .L3
44f08c3bdfSopenharmony_ci
45f08c3bdfSopenharmony_ci.L3:
46f08c3bdfSopenharmony_ci	phi.32      %r1 <- %phi1, %phi2
47f08c3bdfSopenharmony_ci	phisrc.32   %phi3(return) <- %r1
48f08c3bdfSopenharmony_ci	br          .L1
49f08c3bdfSopenharmony_ci
50f08c3bdfSopenharmony_ci.L1:
51f08c3bdfSopenharmony_ci	phi.32      %r10 <- %phi3(return)
52f08c3bdfSopenharmony_ci	ret.32      %r10
53f08c3bdfSopenharmony_ci
54f08c3bdfSopenharmony_ci
55f08c3bdfSopenharmony_ciou:
56f08c3bdfSopenharmony_ci.L4:
57f08c3bdfSopenharmony_ci	<entry-point>
58f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
59f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
60f08c3bdfSopenharmony_ci	load.32     %r12 <- 0[i]
61f08c3bdfSopenharmony_ci	setne.1     %r13 <- %r12, $0
62f08c3bdfSopenharmony_ci	phisrc.32   %phi4 <- $1
63f08c3bdfSopenharmony_ci	cbr         %r13, .L7, .L6
64f08c3bdfSopenharmony_ci
65f08c3bdfSopenharmony_ci.L6:
66f08c3bdfSopenharmony_ci	load.64     %r14 <- 0[b]
67f08c3bdfSopenharmony_ci	load.32     %r15 <- 0[%r14]
68f08c3bdfSopenharmony_ci	lsr.32      %r16 <- %r15, $3
69f08c3bdfSopenharmony_ci	trunc.3     %r17 <- (32) %r16
70f08c3bdfSopenharmony_ci	setne.1     %r18 <- %r17, $0
71f08c3bdfSopenharmony_ci	zext.32     %r19 <- (1) %r18
72f08c3bdfSopenharmony_ci	phisrc.32   %phi5 <- %r19
73f08c3bdfSopenharmony_ci	br          .L7
74f08c3bdfSopenharmony_ci
75f08c3bdfSopenharmony_ci.L7:
76f08c3bdfSopenharmony_ci	phi.32      %r11 <- %phi4, %phi5
77f08c3bdfSopenharmony_ci	phisrc.32   %phi6(return) <- %r11
78f08c3bdfSopenharmony_ci	br          .L5
79f08c3bdfSopenharmony_ci
80f08c3bdfSopenharmony_ci.L5:
81f08c3bdfSopenharmony_ci	phi.32      %r20 <- %phi6(return)
82f08c3bdfSopenharmony_ci	ret.32      %r20
83f08c3bdfSopenharmony_ci
84f08c3bdfSopenharmony_ci
85f08c3bdfSopenharmony_ciol:
86f08c3bdfSopenharmony_ci.L8:
87f08c3bdfSopenharmony_ci	<entry-point>
88f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
89f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
90f08c3bdfSopenharmony_ci	load.32     %r22 <- 0[i]
91f08c3bdfSopenharmony_ci	setne.1     %r23 <- %r22, $0
92f08c3bdfSopenharmony_ci	phisrc.32   %phi7 <- $1
93f08c3bdfSopenharmony_ci	cbr         %r23, .L11, .L10
94f08c3bdfSopenharmony_ci
95f08c3bdfSopenharmony_ci.L10:
96f08c3bdfSopenharmony_ci	load.64     %r24 <- 0[b]
97f08c3bdfSopenharmony_ci	load.64     %r25 <- 8[%r24]
98f08c3bdfSopenharmony_ci	setne.1     %r26 <- %r25, $0
99f08c3bdfSopenharmony_ci	zext.32     %r27 <- (1) %r26
100f08c3bdfSopenharmony_ci	phisrc.32   %phi8 <- %r27
101f08c3bdfSopenharmony_ci	br          .L11
102f08c3bdfSopenharmony_ci
103f08c3bdfSopenharmony_ci.L11:
104f08c3bdfSopenharmony_ci	phi.32      %r21 <- %phi7, %phi8
105f08c3bdfSopenharmony_ci	phisrc.32   %phi9(return) <- %r21
106f08c3bdfSopenharmony_ci	br          .L9
107f08c3bdfSopenharmony_ci
108f08c3bdfSopenharmony_ci.L9:
109f08c3bdfSopenharmony_ci	phi.32      %r28 <- %phi9(return)
110f08c3bdfSopenharmony_ci	ret.32      %r28
111f08c3bdfSopenharmony_ci
112f08c3bdfSopenharmony_ci
113f08c3bdfSopenharmony_ciod:
114f08c3bdfSopenharmony_ci.L12:
115f08c3bdfSopenharmony_ci	<entry-point>
116f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
117f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
118f08c3bdfSopenharmony_ci	load.32     %r30 <- 0[i]
119f08c3bdfSopenharmony_ci	setne.1     %r31 <- %r30, $0
120f08c3bdfSopenharmony_ci	phisrc.32   %phi10 <- $1
121f08c3bdfSopenharmony_ci	cbr         %r31, .L15, .L14
122f08c3bdfSopenharmony_ci
123f08c3bdfSopenharmony_ci.L14:
124f08c3bdfSopenharmony_ci	load.64     %r32 <- 0[b]
125f08c3bdfSopenharmony_ci	load.64     %r33 <- 16[%r32]
126f08c3bdfSopenharmony_ci	setfval.64  %r34 <- 0.000000e+00
127f08c3bdfSopenharmony_ci	fcmpune.1   %r35 <- %r33, %r34
128f08c3bdfSopenharmony_ci	zext.32     %r36 <- (1) %r35
129f08c3bdfSopenharmony_ci	phisrc.32   %phi11 <- %r36
130f08c3bdfSopenharmony_ci	br          .L15
131f08c3bdfSopenharmony_ci
132f08c3bdfSopenharmony_ci.L15:
133f08c3bdfSopenharmony_ci	phi.32      %r29 <- %phi10, %phi11
134f08c3bdfSopenharmony_ci	phisrc.32   %phi12(return) <- %r29
135f08c3bdfSopenharmony_ci	br          .L13
136f08c3bdfSopenharmony_ci
137f08c3bdfSopenharmony_ci.L13:
138f08c3bdfSopenharmony_ci	phi.32      %r37 <- %phi12(return)
139f08c3bdfSopenharmony_ci	ret.32      %r37
140f08c3bdfSopenharmony_ci
141f08c3bdfSopenharmony_ci
142f08c3bdfSopenharmony_cias:
143f08c3bdfSopenharmony_ci.L16:
144f08c3bdfSopenharmony_ci	<entry-point>
145f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
146f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
147f08c3bdfSopenharmony_ci	load.32     %r39 <- 0[i]
148f08c3bdfSopenharmony_ci	setne.1     %r40 <- %r39, $0
149f08c3bdfSopenharmony_ci	phisrc.32   %phi13 <- $0
150f08c3bdfSopenharmony_ci	cbr         %r40, .L18, .L19
151f08c3bdfSopenharmony_ci
152f08c3bdfSopenharmony_ci.L18:
153f08c3bdfSopenharmony_ci	load.64     %r41 <- 0[b]
154f08c3bdfSopenharmony_ci	load.32     %r42 <- 0[%r41]
155f08c3bdfSopenharmony_ci	lsr.32      %r43 <- %r42, $1
156f08c3bdfSopenharmony_ci	trunc.2     %r44 <- (32) %r43
157f08c3bdfSopenharmony_ci	setne.1     %r45 <- %r44, $0
158f08c3bdfSopenharmony_ci	zext.32     %r46 <- (1) %r45
159f08c3bdfSopenharmony_ci	phisrc.32   %phi14 <- %r46
160f08c3bdfSopenharmony_ci	br          .L19
161f08c3bdfSopenharmony_ci
162f08c3bdfSopenharmony_ci.L19:
163f08c3bdfSopenharmony_ci	phi.32      %r38 <- %phi13, %phi14
164f08c3bdfSopenharmony_ci	phisrc.32   %phi15(return) <- %r38
165f08c3bdfSopenharmony_ci	br          .L17
166f08c3bdfSopenharmony_ci
167f08c3bdfSopenharmony_ci.L17:
168f08c3bdfSopenharmony_ci	phi.32      %r47 <- %phi15(return)
169f08c3bdfSopenharmony_ci	ret.32      %r47
170f08c3bdfSopenharmony_ci
171f08c3bdfSopenharmony_ci
172f08c3bdfSopenharmony_ciau:
173f08c3bdfSopenharmony_ci.L20:
174f08c3bdfSopenharmony_ci	<entry-point>
175f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
176f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
177f08c3bdfSopenharmony_ci	load.32     %r49 <- 0[i]
178f08c3bdfSopenharmony_ci	setne.1     %r50 <- %r49, $0
179f08c3bdfSopenharmony_ci	phisrc.32   %phi16 <- $0
180f08c3bdfSopenharmony_ci	cbr         %r50, .L22, .L23
181f08c3bdfSopenharmony_ci
182f08c3bdfSopenharmony_ci.L22:
183f08c3bdfSopenharmony_ci	load.64     %r51 <- 0[b]
184f08c3bdfSopenharmony_ci	load.32     %r52 <- 0[%r51]
185f08c3bdfSopenharmony_ci	lsr.32      %r53 <- %r52, $3
186f08c3bdfSopenharmony_ci	trunc.3     %r54 <- (32) %r53
187f08c3bdfSopenharmony_ci	setne.1     %r55 <- %r54, $0
188f08c3bdfSopenharmony_ci	zext.32     %r56 <- (1) %r55
189f08c3bdfSopenharmony_ci	phisrc.32   %phi17 <- %r56
190f08c3bdfSopenharmony_ci	br          .L23
191f08c3bdfSopenharmony_ci
192f08c3bdfSopenharmony_ci.L23:
193f08c3bdfSopenharmony_ci	phi.32      %r48 <- %phi16, %phi17
194f08c3bdfSopenharmony_ci	phisrc.32   %phi18(return) <- %r48
195f08c3bdfSopenharmony_ci	br          .L21
196f08c3bdfSopenharmony_ci
197f08c3bdfSopenharmony_ci.L21:
198f08c3bdfSopenharmony_ci	phi.32      %r57 <- %phi18(return)
199f08c3bdfSopenharmony_ci	ret.32      %r57
200f08c3bdfSopenharmony_ci
201f08c3bdfSopenharmony_ci
202f08c3bdfSopenharmony_cial:
203f08c3bdfSopenharmony_ci.L24:
204f08c3bdfSopenharmony_ci	<entry-point>
205f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
206f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
207f08c3bdfSopenharmony_ci	load.32     %r59 <- 0[i]
208f08c3bdfSopenharmony_ci	setne.1     %r60 <- %r59, $0
209f08c3bdfSopenharmony_ci	phisrc.32   %phi19 <- $0
210f08c3bdfSopenharmony_ci	cbr         %r60, .L26, .L27
211f08c3bdfSopenharmony_ci
212f08c3bdfSopenharmony_ci.L26:
213f08c3bdfSopenharmony_ci	load.64     %r61 <- 0[b]
214f08c3bdfSopenharmony_ci	load.64     %r62 <- 8[%r61]
215f08c3bdfSopenharmony_ci	setne.1     %r63 <- %r62, $0
216f08c3bdfSopenharmony_ci	zext.32     %r64 <- (1) %r63
217f08c3bdfSopenharmony_ci	phisrc.32   %phi20 <- %r64
218f08c3bdfSopenharmony_ci	br          .L27
219f08c3bdfSopenharmony_ci
220f08c3bdfSopenharmony_ci.L27:
221f08c3bdfSopenharmony_ci	phi.32      %r58 <- %phi19, %phi20
222f08c3bdfSopenharmony_ci	phisrc.32   %phi21(return) <- %r58
223f08c3bdfSopenharmony_ci	br          .L25
224f08c3bdfSopenharmony_ci
225f08c3bdfSopenharmony_ci.L25:
226f08c3bdfSopenharmony_ci	phi.32      %r65 <- %phi21(return)
227f08c3bdfSopenharmony_ci	ret.32      %r65
228f08c3bdfSopenharmony_ci
229f08c3bdfSopenharmony_ci
230f08c3bdfSopenharmony_ciad:
231f08c3bdfSopenharmony_ci.L28:
232f08c3bdfSopenharmony_ci	<entry-point>
233f08c3bdfSopenharmony_ci	store.32    %arg1 -> 0[i]
234f08c3bdfSopenharmony_ci	store.64    %arg2 -> 0[b]
235f08c3bdfSopenharmony_ci	load.32     %r67 <- 0[i]
236f08c3bdfSopenharmony_ci	setne.1     %r68 <- %r67, $0
237f08c3bdfSopenharmony_ci	phisrc.32   %phi22 <- $0
238f08c3bdfSopenharmony_ci	cbr         %r68, .L30, .L31
239f08c3bdfSopenharmony_ci
240f08c3bdfSopenharmony_ci.L30:
241f08c3bdfSopenharmony_ci	load.64     %r69 <- 0[b]
242f08c3bdfSopenharmony_ci	load.64     %r70 <- 16[%r69]
243f08c3bdfSopenharmony_ci	setfval.64  %r71 <- 0.000000e+00
244f08c3bdfSopenharmony_ci	fcmpune.1   %r72 <- %r70, %r71
245f08c3bdfSopenharmony_ci	zext.32     %r73 <- (1) %r72
246f08c3bdfSopenharmony_ci	phisrc.32   %phi23 <- %r73
247f08c3bdfSopenharmony_ci	br          .L31
248f08c3bdfSopenharmony_ci
249f08c3bdfSopenharmony_ci.L31:
250f08c3bdfSopenharmony_ci	phi.32      %r66 <- %phi22, %phi23
251f08c3bdfSopenharmony_ci	phisrc.32   %phi24(return) <- %r66
252f08c3bdfSopenharmony_ci	br          .L29
253f08c3bdfSopenharmony_ci
254f08c3bdfSopenharmony_ci.L29:
255f08c3bdfSopenharmony_ci	phi.32      %r74 <- %phi24(return)
256f08c3bdfSopenharmony_ci	ret.32      %r74
257f08c3bdfSopenharmony_ci
258f08c3bdfSopenharmony_ci
259f08c3bdfSopenharmony_ci * check-output-end
260f08c3bdfSopenharmony_ci */
261