1typedef unsigned int uint;
2typedef _Bool bool;
3
4static uint   ini(uint a) { return !a; }
5static bool   bni(uint a) { return !a; }
6static uint  ioii(uint a, uint b) { return a || b; }
7static uint  iaii(uint a, uint b) { return a && b; }
8static bool  boii(uint a, uint b) { return a || b; }
9static bool  baii(uint a, uint b) { return a && b; }
10static uint ioiii(uint a, uint b, uint c) { return a || b || c; }
11static uint iaiii(uint a, uint b, uint c) { return a && b && c; }
12static bool boiii(uint a, uint b, uint c) { return a || b || c; }
13static bool baiii(uint a, uint b, uint c) { return a && b && c; }
14
15static uint   inb(bool a) { return !a; }
16static bool   bnb(bool a) { return !a; }
17static uint  iobb(bool a, bool b) { return a || b; }
18static uint  iabb(bool a, bool b) { return a && b; }
19static bool  bobb(bool a, bool b) { return a || b; }
20static bool  babb(bool a, bool b) { return a && b; }
21static uint iobbb(bool a, bool b, bool c) { return a || b || c; }
22static uint iabbb(bool a, bool b, bool c) { return a && b && c; }
23static bool bobbb(bool a, bool b, bool c) { return a || b || c; }
24static bool babbb(bool a, bool b, bool c) { return a && b && c; }
25
26/*
27 * check-name: bool-simplify2
28 * check-command: test-linearize $file
29 *
30 * check-output-pattern(20): setne\\.
31 * check-output-pattern(4):  seteq\\.
32 * check-output-pattern(8): zext\\.
33 * check-output-pattern(12): and
34 * check-output-pattern(12): or
35 * check-output-end
36 *
37 * check-output-start
38ini:
39.L0:
40	<entry-point>
41	seteq.32    %r2 <- %arg1, $0
42	ret.32      %r2
43
44
45bni:
46.L2:
47	<entry-point>
48	seteq.1     %r6 <- %arg1, $0
49	ret.1       %r6
50
51
52ioii:
53.L4:
54	<entry-point>
55	setne.1     %r9 <- %arg1, $0
56	setne.1     %r11 <- %arg2, $0
57	or.1        %r12 <- %r9, %r11
58	zext.32     %r13 <- (1) %r12
59	ret.32      %r13
60
61
62iaii:
63.L6:
64	<entry-point>
65	setne.1     %r16 <- %arg1, $0
66	setne.1     %r18 <- %arg2, $0
67	and.1       %r19 <- %r16, %r18
68	zext.32     %r20 <- (1) %r19
69	ret.32      %r20
70
71
72boii:
73.L8:
74	<entry-point>
75	setne.1     %r23 <- %arg1, $0
76	setne.1     %r25 <- %arg2, $0
77	or.1        %r26 <- %r23, %r25
78	ret.1       %r26
79
80
81baii:
82.L10:
83	<entry-point>
84	setne.1     %r31 <- %arg1, $0
85	setne.1     %r33 <- %arg2, $0
86	and.1       %r34 <- %r31, %r33
87	ret.1       %r34
88
89
90ioiii:
91.L12:
92	<entry-point>
93	setne.1     %r39 <- %arg1, $0
94	setne.1     %r41 <- %arg2, $0
95	or.1        %r42 <- %r39, %r41
96	setne.1     %r46 <- %arg3, $0
97	or.1        %r47 <- %r42, %r46
98	zext.32     %r48 <- (1) %r47
99	ret.32      %r48
100
101
102iaiii:
103.L14:
104	<entry-point>
105	setne.1     %r51 <- %arg1, $0
106	setne.1     %r53 <- %arg2, $0
107	and.1       %r54 <- %r51, %r53
108	setne.1     %r58 <- %arg3, $0
109	and.1       %r59 <- %r54, %r58
110	zext.32     %r60 <- (1) %r59
111	ret.32      %r60
112
113
114boiii:
115.L16:
116	<entry-point>
117	setne.1     %r63 <- %arg1, $0
118	setne.1     %r65 <- %arg2, $0
119	or.1        %r66 <- %r63, %r65
120	setne.1     %r70 <- %arg3, $0
121	or.1        %r71 <- %r66, %r70
122	ret.1       %r71
123
124
125baiii:
126.L18:
127	<entry-point>
128	setne.1     %r76 <- %arg1, $0
129	setne.1     %r78 <- %arg2, $0
130	and.1       %r79 <- %r76, %r78
131	setne.1     %r83 <- %arg3, $0
132	and.1       %r84 <- %r79, %r83
133	ret.1       %r84
134
135
136inb:
137.L20:
138	<entry-point>
139	seteq.32    %r89 <- %arg1, $0
140	ret.32      %r89
141
142
143bnb:
144.L22:
145	<entry-point>
146	seteq.1     %r93 <- %arg1, $0
147	ret.1       %r93
148
149
150iobb:
151.L24:
152	<entry-point>
153	or.1        %r97 <- %arg1, %arg2
154	zext.32     %r98 <- (1) %r97
155	ret.32      %r98
156
157
158iabb:
159.L26:
160	<entry-point>
161	and.1       %r102 <- %arg1, %arg2
162	zext.32     %r103 <- (1) %r102
163	ret.32      %r103
164
165
166bobb:
167.L28:
168	<entry-point>
169	or.1        %r107 <- %arg1, %arg2
170	ret.1       %r107
171
172
173babb:
174.L30:
175	<entry-point>
176	and.1       %r113 <- %arg1, %arg2
177	ret.1       %r113
178
179
180iobbb:
181.L32:
182	<entry-point>
183	or.1        %r119 <- %arg1, %arg2
184	or.1        %r123 <- %r119, %arg3
185	zext.32     %r124 <- (1) %r123
186	ret.32      %r124
187
188
189iabbb:
190.L34:
191	<entry-point>
192	and.1       %r128 <- %arg1, %arg2
193	and.1       %r132 <- %r128, %arg3
194	zext.32     %r133 <- (1) %r132
195	ret.32      %r133
196
197
198bobbb:
199.L36:
200	<entry-point>
201	or.1        %r137 <- %arg1, %arg2
202	or.1        %r141 <- %r137, %arg3
203	ret.1       %r141
204
205
206babbb:
207.L38:
208	<entry-point>
209	and.1       %r147 <- %arg1, %arg2
210	and.1       %r151 <- %r147, %arg3
211	ret.1       %r151
212
213
214 * check-output-end
215 */
216