Branch data Line data Source code
1 : : /* Generated automatically by the program `genmatch' from
2 : : a IL pattern matching and simplification description. */
3 : : #pragma GCC diagnostic push
4 : : #pragma GCC diagnostic ignored "-Wunused-variable"
5 : : #pragma GCC diagnostic ignored "-Wunused-function"
6 : :
7 : : #include "gimple-match-auto.h"
8 : :
9 : : bool
10 : 465606122 : gimple_maybe_cmp (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
11 : : {
12 : 465606122 : const tree type = TREE_TYPE (t);
13 : 465606122 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 : 465606122 : switch (TREE_CODE (t))
15 : : {
16 : 443957600 : case SSA_NAME:
17 : 443957600 : if (gimple *_d1 = get_def (valueize, t))
18 : : {
19 : 171151269 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20 : 190420211 : switch (gimple_assign_rhs_code (_a1))
21 : : {
22 : 19550512 : case LT_EXPR:
23 : 19550512 : case LE_EXPR:
24 : 19550512 : case EQ_EXPR:
25 : 19550512 : case NE_EXPR:
26 : 19550512 : case GE_EXPR:
27 : 19550512 : case GT_EXPR:
28 : 19550512 : case UNORDERED_EXPR:
29 : 19550512 : case ORDERED_EXPR:
30 : 19550512 : case UNLT_EXPR:
31 : 19550512 : case UNLE_EXPR:
32 : 19550512 : case UNGT_EXPR:
33 : 19550512 : case UNGE_EXPR:
34 : 19550512 : case UNEQ_EXPR:
35 : 19550512 : case LTGT_EXPR:
36 : 19550512 : {
37 : 19550512 : tree _p0 = gimple_assign_rhs1 (_a1);
38 : 19550512 : _p0 = do_valueize (valueize, _p0);
39 : 19550512 : tree _p1 = gimple_assign_rhs2 (_a1);
40 : 19550512 : _p1 = do_valueize (valueize, _p1);
41 : 19550512 : {
42 : 19550512 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
43 : 19550512 : {
44 : 19550512 : res_ops[0] = captures[0];
45 : 19550512 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 5, __FILE__, __LINE__, false);
46 : 19550512 : return true;
47 : : }
48 : : }
49 : 7874290 : break;
50 : : }
51 : 7874290 : CASE_CONVERT:
52 : 7874290 : {
53 : 7874290 : tree _p0 = gimple_assign_rhs1 (_a1);
54 : 7874290 : _p0 = do_valueize (valueize, _p0);
55 : 7874290 : switch (TREE_CODE (_p0))
56 : : {
57 : 7806887 : case SSA_NAME:
58 : 7806887 : if (gimple *_d2 = get_def (valueize, _p0))
59 : : {
60 : 7621349 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
61 : 8515697 : switch (gimple_assign_rhs_code (_a2))
62 : : {
63 : 482077 : case LT_EXPR:
64 : 482077 : case LE_EXPR:
65 : 482077 : case EQ_EXPR:
66 : 482077 : case NE_EXPR:
67 : 482077 : case GE_EXPR:
68 : 482077 : case GT_EXPR:
69 : 482077 : case UNORDERED_EXPR:
70 : 482077 : case ORDERED_EXPR:
71 : 482077 : case UNLT_EXPR:
72 : 482077 : case UNLE_EXPR:
73 : 482077 : case UNGT_EXPR:
74 : 482077 : case UNGE_EXPR:
75 : 482077 : case UNEQ_EXPR:
76 : 482077 : case LTGT_EXPR:
77 : 482077 : {
78 : 482077 : tree _q20 = gimple_assign_rhs1 (_a2);
79 : 482077 : _q20 = do_valueize (valueize, _q20);
80 : 482077 : tree _q21 = gimple_assign_rhs2 (_a2);
81 : 482077 : _q21 = do_valueize (valueize, _q21);
82 : 482077 : {
83 : 482077 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
84 : 482077 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
85 : : )
86 : : {
87 : 114797 : {
88 : 114797 : res_ops[0] = captures[0];
89 : 114797 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 6, __FILE__, __LINE__, false);
90 : 114797 : return true;
91 : : }
92 : : }
93 : : }
94 : : break;
95 : : }
96 : : default:;
97 : : }
98 : : }
99 : : break;
100 : : default:;
101 : : }
102 : : break;
103 : : }
104 : 380261 : case BIT_XOR_EXPR:
105 : 380261 : {
106 : 380261 : tree _p0 = gimple_assign_rhs1 (_a1);
107 : 380261 : _p0 = do_valueize (valueize, _p0);
108 : 380261 : tree _p1 = gimple_assign_rhs2 (_a1);
109 : 380261 : _p1 = do_valueize (valueize, _p1);
110 : 380261 : if (tree_swap_operands_p (_p0, _p1))
111 : : std::swap (_p0, _p1);
112 : 380261 : {
113 : 380261 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
114 : 380261 : if (INTEGRAL_TYPE_P (type)
115 : 380261 : && TYPE_PRECISION (type) == 1
116 : : )
117 : : {
118 : 69828 : {
119 : 69828 : res_ops[0] = captures[0];
120 : 69828 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 7, __FILE__, __LINE__, false);
121 : 69828 : return true;
122 : : }
123 : : }
124 : : }
125 : 445870985 : break;
126 : : }
127 : : default:;
128 : : }
129 : : }
130 : : break;
131 : : default:;
132 : : }
133 : : return false;
134 : : }
135 : :
136 : : bool
137 : 23838495 : gimple_signed_integer_sat_sub (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
138 : : {
139 : 23838495 : const tree type = TREE_TYPE (t);
140 : 23838495 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
141 : 23838495 : switch (TREE_CODE (t))
142 : : {
143 : 19616050 : case SSA_NAME:
144 : 19616050 : if (gimple *_d1 = get_def (valueize, t))
145 : : {
146 : 19616050 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
147 : 18888063 : switch (gimple_assign_rhs_code (_a1))
148 : : {
149 : 173136 : case COND_EXPR:
150 : 173136 : {
151 : 173136 : tree _p0 = gimple_assign_rhs1 (_a1);
152 : 173136 : _p0 = do_valueize (valueize, _p0);
153 : 173136 : tree _p1 = gimple_assign_rhs2 (_a1);
154 : 173136 : _p1 = do_valueize (valueize, _p1);
155 : 173136 : tree _p2 = gimple_assign_rhs3 (_a1);
156 : 173136 : _p2 = do_valueize (valueize, _p2);
157 : 173136 : switch (TREE_CODE (_p0))
158 : : {
159 : 173136 : case SSA_NAME:
160 : 173136 : if (gimple *_d2 = get_def (valueize, _p0))
161 : : {
162 : 173136 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
163 : 174199 : switch (gimple_assign_rhs_code (_a2))
164 : : {
165 : 95328 : case LT_EXPR:
166 : 95328 : {
167 : 95328 : tree _q20 = gimple_assign_rhs1 (_a2);
168 : 95328 : _q20 = do_valueize (valueize, _q20);
169 : 95328 : tree _q21 = gimple_assign_rhs2 (_a2);
170 : 95328 : _q21 = do_valueize (valueize, _q21);
171 : 95328 : switch (TREE_CODE (_q20))
172 : : {
173 : 95328 : case SSA_NAME:
174 : 95328 : if (gimple *_d3 = get_def (valueize, _q20))
175 : : {
176 : 95328 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
177 : 99411 : switch (gimple_assign_rhs_code (_a3))
178 : : {
179 : 214 : case BIT_AND_EXPR:
180 : 214 : {
181 : 214 : tree _q30 = gimple_assign_rhs1 (_a3);
182 : 214 : _q30 = do_valueize (valueize, _q30);
183 : 214 : tree _q31 = gimple_assign_rhs2 (_a3);
184 : 214 : _q31 = do_valueize (valueize, _q31);
185 : 214 : if (tree_swap_operands_p (_q30, _q31))
186 : 162 : std::swap (_q30, _q31);
187 : 214 : switch (TREE_CODE (_q30))
188 : : {
189 : 214 : case SSA_NAME:
190 : 214 : if (gimple *_d4 = get_def (valueize, _q30))
191 : : {
192 : 214 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
193 : 214 : switch (gimple_assign_rhs_code (_a4))
194 : : {
195 : 144 : case BIT_XOR_EXPR:
196 : 144 : {
197 : 144 : tree _q40 = gimple_assign_rhs1 (_a4);
198 : 144 : _q40 = do_valueize (valueize, _q40);
199 : 144 : tree _q41 = gimple_assign_rhs2 (_a4);
200 : 144 : _q41 = do_valueize (valueize, _q41);
201 : 144 : if (tree_swap_operands_p (_q40, _q41))
202 : 0 : std::swap (_q40, _q41);
203 : 144 : switch (TREE_CODE (_q31))
204 : : {
205 : 144 : case SSA_NAME:
206 : 144 : if (gimple *_d5 = get_def (valueize, _q31))
207 : : {
208 : 144 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
209 : 144 : switch (gimple_assign_rhs_code (_a5))
210 : : {
211 : 0 : case BIT_XOR_EXPR:
212 : 0 : {
213 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
214 : 0 : _q70 = do_valueize (valueize, _q70);
215 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
216 : 0 : _q71 = do_valueize (valueize, _q71);
217 : 0 : if (tree_swap_operands_p (_q70, _q71))
218 : 0 : std::swap (_q70, _q71);
219 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
220 : : {
221 : 0 : {
222 : 0 : tree _q71_pops[1];
223 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
224 : : {
225 : 0 : tree _q90 = _q71_pops[0];
226 : 0 : switch (TREE_CODE (_q90))
227 : : {
228 : 0 : case SSA_NAME:
229 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
230 : : {
231 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
232 : 0 : switch (gimple_assign_rhs_code (_a6))
233 : : {
234 : 0 : case MINUS_EXPR:
235 : 0 : {
236 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
237 : 0 : _q100 = do_valueize (valueize, _q100);
238 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
239 : 0 : _q101 = do_valueize (valueize, _q101);
240 : 0 : {
241 : 0 : tree _q100_pops[1];
242 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
243 : : {
244 : 0 : tree _q110 = _q100_pops[0];
245 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
246 : : {
247 : 0 : {
248 : 0 : tree _q101_pops[1];
249 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
250 : : {
251 : 0 : tree _q130 = _q101_pops[0];
252 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
253 : : {
254 : 0 : if (integer_zerop (_q21))
255 : : {
256 : 0 : {
257 : 0 : tree _p1_pops[1];
258 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
259 : : {
260 : 0 : tree _q160 = _p1_pops[0];
261 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
262 : : {
263 : 0 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
264 : : {
265 : 0 : {
266 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
267 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
268 : : )
269 : : {
270 : 0 : {
271 : 0 : res_ops[0] = captures[0];
272 : 0 : res_ops[1] = captures[1];
273 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
274 : 0 : return true;
275 : : }
276 : : }
277 : : }
278 : : }
279 : : }
280 : : }
281 : : }
282 : : }
283 : : }
284 : : }
285 : : }
286 : : }
287 : : }
288 : : }
289 : 0 : break;
290 : : }
291 : : default:;
292 : : }
293 : : }
294 : : break;
295 : : default:;
296 : : }
297 : : }
298 : : }
299 : : }
300 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
301 : : {
302 : 0 : {
303 : 0 : tree _q71_pops[1];
304 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
305 : : {
306 : 0 : tree _q90 = _q71_pops[0];
307 : 0 : switch (TREE_CODE (_q90))
308 : : {
309 : 0 : case SSA_NAME:
310 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
311 : : {
312 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
313 : 0 : switch (gimple_assign_rhs_code (_a6))
314 : : {
315 : 0 : case MINUS_EXPR:
316 : 0 : {
317 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
318 : 0 : _q100 = do_valueize (valueize, _q100);
319 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
320 : 0 : _q101 = do_valueize (valueize, _q101);
321 : 0 : {
322 : 0 : tree _q100_pops[1];
323 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
324 : : {
325 : 0 : tree _q110 = _q100_pops[0];
326 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
327 : : {
328 : 0 : {
329 : 0 : tree _q101_pops[1];
330 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
331 : : {
332 : 0 : tree _q130 = _q101_pops[0];
333 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
334 : : {
335 : 0 : if (integer_zerop (_q21))
336 : : {
337 : 0 : {
338 : 0 : tree _p1_pops[1];
339 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
340 : : {
341 : 0 : tree _q160 = _p1_pops[0];
342 : 0 : if ((_q160 == _q41 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q41, 0) && types_match (_q160, _q41)))
343 : : {
344 : 0 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
345 : : {
346 : 0 : {
347 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
348 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
349 : : )
350 : : {
351 : 0 : {
352 : 0 : res_ops[0] = captures[0];
353 : 0 : res_ops[1] = captures[1];
354 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
355 : 0 : return true;
356 : : }
357 : : }
358 : : }
359 : : }
360 : : }
361 : : }
362 : : }
363 : : }
364 : : }
365 : : }
366 : : }
367 : : }
368 : : }
369 : : }
370 : 0 : break;
371 : : }
372 : : default:;
373 : : }
374 : : }
375 : : break;
376 : : default:;
377 : : }
378 : : }
379 : : }
380 : : }
381 : 144 : break;
382 : : }
383 : : default:;
384 : : }
385 : : }
386 : : break;
387 : 144 : default:;
388 : : }
389 : 144 : {
390 : 144 : tree _q41_pops[1];
391 : 144 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
392 : : {
393 : 0 : tree _q60 = _q41_pops[0];
394 : 0 : switch (TREE_CODE (_q60))
395 : : {
396 : 0 : case SSA_NAME:
397 : 0 : if (gimple *_d5 = get_def (valueize, _q60))
398 : : {
399 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
400 : 0 : switch (gimple_assign_rhs_code (_a5))
401 : : {
402 : 0 : case MINUS_EXPR:
403 : 0 : {
404 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
405 : 0 : _q70 = do_valueize (valueize, _q70);
406 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
407 : 0 : _q71 = do_valueize (valueize, _q71);
408 : 0 : {
409 : 0 : tree _q70_pops[1];
410 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
411 : : {
412 : 0 : tree _q80 = _q70_pops[0];
413 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
414 : : {
415 : 0 : {
416 : 0 : tree _q71_pops[1];
417 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
418 : : {
419 : 0 : tree _q100 = _q71_pops[0];
420 : 0 : switch (TREE_CODE (_q31))
421 : : {
422 : 0 : case SSA_NAME:
423 : 0 : if (gimple *_d6 = get_def (valueize, _q31))
424 : : {
425 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
426 : 0 : switch (gimple_assign_rhs_code (_a6))
427 : : {
428 : 0 : case BIT_XOR_EXPR:
429 : 0 : {
430 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
431 : 0 : _q120 = do_valueize (valueize, _q120);
432 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
433 : 0 : _q121 = do_valueize (valueize, _q121);
434 : 0 : if (tree_swap_operands_p (_q120, _q121))
435 : 0 : std::swap (_q120, _q121);
436 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
437 : : {
438 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
439 : : {
440 : 0 : if (integer_zerop (_q21))
441 : : {
442 : 0 : {
443 : 0 : tree _p1_pops[1];
444 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
445 : : {
446 : 0 : tree _q160 = _p1_pops[0];
447 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
448 : : {
449 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
450 : : {
451 : 0 : {
452 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
453 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
454 : : )
455 : : {
456 : 0 : {
457 : 0 : res_ops[0] = captures[0];
458 : 0 : res_ops[1] = captures[1];
459 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
460 : 0 : return true;
461 : : }
462 : : }
463 : : }
464 : : }
465 : : }
466 : : }
467 : : }
468 : : }
469 : : }
470 : : }
471 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
472 : : {
473 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
474 : : {
475 : 0 : if (integer_zerop (_q21))
476 : : {
477 : 0 : {
478 : 0 : tree _p1_pops[1];
479 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
480 : : {
481 : 0 : tree _q160 = _p1_pops[0];
482 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
483 : : {
484 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
485 : : {
486 : 0 : {
487 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
488 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
489 : : )
490 : : {
491 : 0 : {
492 : 0 : res_ops[0] = captures[0];
493 : 0 : res_ops[1] = captures[1];
494 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
495 : 0 : return true;
496 : : }
497 : : }
498 : : }
499 : : }
500 : : }
501 : : }
502 : : }
503 : : }
504 : : }
505 : : }
506 : 0 : break;
507 : : }
508 : : default:;
509 : : }
510 : : }
511 : : break;
512 : : default:;
513 : : }
514 : : }
515 : : }
516 : : }
517 : : }
518 : : }
519 : 0 : break;
520 : : }
521 : : default:;
522 : : }
523 : : }
524 : : break;
525 : : default:;
526 : : }
527 : : }
528 : : }
529 : 144 : break;
530 : : }
531 : : default:;
532 : : }
533 : : }
534 : : break;
535 : : default:;
536 : : }
537 : 23838495 : break;
538 : : }
539 : : default:;
540 : : }
541 : : }
542 : : break;
543 : : default:;
544 : : }
545 : : break;
546 : : }
547 : 4890 : case GE_EXPR:
548 : 4890 : {
549 : 4890 : tree _q20 = gimple_assign_rhs1 (_a2);
550 : 4890 : _q20 = do_valueize (valueize, _q20);
551 : 4890 : tree _q21 = gimple_assign_rhs2 (_a2);
552 : 4890 : _q21 = do_valueize (valueize, _q21);
553 : 4890 : switch (TREE_CODE (_q20))
554 : : {
555 : 4890 : case SSA_NAME:
556 : 4890 : if (gimple *_d3 = get_def (valueize, _q20))
557 : : {
558 : 4890 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
559 : 5823 : switch (gimple_assign_rhs_code (_a3))
560 : : {
561 : 12 : case BIT_AND_EXPR:
562 : 12 : {
563 : 12 : tree _q30 = gimple_assign_rhs1 (_a3);
564 : 12 : _q30 = do_valueize (valueize, _q30);
565 : 12 : tree _q31 = gimple_assign_rhs2 (_a3);
566 : 12 : _q31 = do_valueize (valueize, _q31);
567 : 12 : if (tree_swap_operands_p (_q30, _q31))
568 : 0 : std::swap (_q30, _q31);
569 : 12 : switch (TREE_CODE (_q30))
570 : : {
571 : 12 : case SSA_NAME:
572 : 12 : if (gimple *_d4 = get_def (valueize, _q30))
573 : : {
574 : 12 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
575 : 12 : switch (gimple_assign_rhs_code (_a4))
576 : : {
577 : 0 : case BIT_XOR_EXPR:
578 : 0 : {
579 : 0 : tree _q40 = gimple_assign_rhs1 (_a4);
580 : 0 : _q40 = do_valueize (valueize, _q40);
581 : 0 : tree _q41 = gimple_assign_rhs2 (_a4);
582 : 0 : _q41 = do_valueize (valueize, _q41);
583 : 0 : if (tree_swap_operands_p (_q40, _q41))
584 : 0 : std::swap (_q40, _q41);
585 : 0 : switch (TREE_CODE (_q31))
586 : : {
587 : 0 : case SSA_NAME:
588 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
589 : : {
590 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
591 : 0 : switch (gimple_assign_rhs_code (_a5))
592 : : {
593 : 0 : case BIT_XOR_EXPR:
594 : 0 : {
595 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
596 : 0 : _q70 = do_valueize (valueize, _q70);
597 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
598 : 0 : _q71 = do_valueize (valueize, _q71);
599 : 0 : if (tree_swap_operands_p (_q70, _q71))
600 : 0 : std::swap (_q70, _q71);
601 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
602 : : {
603 : 0 : {
604 : 0 : tree _q71_pops[1];
605 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
606 : : {
607 : 0 : tree _q90 = _q71_pops[0];
608 : 0 : switch (TREE_CODE (_q90))
609 : : {
610 : 0 : case SSA_NAME:
611 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
612 : : {
613 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
614 : 0 : switch (gimple_assign_rhs_code (_a6))
615 : : {
616 : 0 : case MINUS_EXPR:
617 : 0 : {
618 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
619 : 0 : _q100 = do_valueize (valueize, _q100);
620 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
621 : 0 : _q101 = do_valueize (valueize, _q101);
622 : 0 : {
623 : 0 : tree _q100_pops[1];
624 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
625 : : {
626 : 0 : tree _q110 = _q100_pops[0];
627 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
628 : : {
629 : 0 : {
630 : 0 : tree _q101_pops[1];
631 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
632 : : {
633 : 0 : tree _q130 = _q101_pops[0];
634 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
635 : : {
636 : 0 : if (integer_zerop (_q21))
637 : : {
638 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
639 : : {
640 : 0 : {
641 : 0 : tree _p2_pops[1];
642 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
643 : : {
644 : 0 : tree _q170 = _p2_pops[0];
645 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
646 : : {
647 : 0 : {
648 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
649 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
650 : : )
651 : : {
652 : 0 : {
653 : 0 : res_ops[0] = captures[0];
654 : 0 : res_ops[1] = captures[1];
655 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
656 : 0 : return true;
657 : : }
658 : : }
659 : : }
660 : : }
661 : : }
662 : : }
663 : : }
664 : : }
665 : : }
666 : : }
667 : : }
668 : : }
669 : : }
670 : : }
671 : 0 : break;
672 : : }
673 : : default:;
674 : : }
675 : : }
676 : : break;
677 : : default:;
678 : : }
679 : : }
680 : : }
681 : : }
682 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
683 : : {
684 : 0 : {
685 : 0 : tree _q71_pops[1];
686 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
687 : : {
688 : 0 : tree _q90 = _q71_pops[0];
689 : 0 : switch (TREE_CODE (_q90))
690 : : {
691 : 0 : case SSA_NAME:
692 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
693 : : {
694 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
695 : 0 : switch (gimple_assign_rhs_code (_a6))
696 : : {
697 : 0 : case MINUS_EXPR:
698 : 0 : {
699 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
700 : 0 : _q100 = do_valueize (valueize, _q100);
701 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
702 : 0 : _q101 = do_valueize (valueize, _q101);
703 : 0 : {
704 : 0 : tree _q100_pops[1];
705 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
706 : : {
707 : 0 : tree _q110 = _q100_pops[0];
708 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
709 : : {
710 : 0 : {
711 : 0 : tree _q101_pops[1];
712 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
713 : : {
714 : 0 : tree _q130 = _q101_pops[0];
715 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
716 : : {
717 : 0 : if (integer_zerop (_q21))
718 : : {
719 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
720 : : {
721 : 0 : {
722 : 0 : tree _p2_pops[1];
723 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
724 : : {
725 : 0 : tree _q170 = _p2_pops[0];
726 : 0 : if ((_q170 == _q41 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q41, 0) && types_match (_q170, _q41)))
727 : : {
728 : 0 : {
729 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
730 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
731 : : )
732 : : {
733 : 0 : {
734 : 0 : res_ops[0] = captures[0];
735 : 0 : res_ops[1] = captures[1];
736 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
737 : 0 : return true;
738 : : }
739 : : }
740 : : }
741 : : }
742 : : }
743 : : }
744 : : }
745 : : }
746 : : }
747 : : }
748 : : }
749 : : }
750 : : }
751 : : }
752 : 0 : break;
753 : : }
754 : : default:;
755 : : }
756 : : }
757 : : break;
758 : : default:;
759 : : }
760 : : }
761 : : }
762 : : }
763 : 0 : break;
764 : : }
765 : : default:;
766 : : }
767 : : }
768 : : break;
769 : 0 : default:;
770 : : }
771 : 0 : {
772 : 0 : tree _q41_pops[1];
773 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
774 : : {
775 : 0 : tree _q60 = _q41_pops[0];
776 : 0 : switch (TREE_CODE (_q60))
777 : : {
778 : 0 : case SSA_NAME:
779 : 0 : if (gimple *_d5 = get_def (valueize, _q60))
780 : : {
781 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
782 : 0 : switch (gimple_assign_rhs_code (_a5))
783 : : {
784 : 0 : case MINUS_EXPR:
785 : 0 : {
786 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
787 : 0 : _q70 = do_valueize (valueize, _q70);
788 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
789 : 0 : _q71 = do_valueize (valueize, _q71);
790 : 0 : {
791 : 0 : tree _q70_pops[1];
792 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
793 : : {
794 : 0 : tree _q80 = _q70_pops[0];
795 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
796 : : {
797 : 0 : {
798 : 0 : tree _q71_pops[1];
799 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
800 : : {
801 : 0 : tree _q100 = _q71_pops[0];
802 : 0 : switch (TREE_CODE (_q31))
803 : : {
804 : 0 : case SSA_NAME:
805 : 0 : if (gimple *_d6 = get_def (valueize, _q31))
806 : : {
807 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
808 : 0 : switch (gimple_assign_rhs_code (_a6))
809 : : {
810 : 0 : case BIT_XOR_EXPR:
811 : 0 : {
812 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
813 : 0 : _q120 = do_valueize (valueize, _q120);
814 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
815 : 0 : _q121 = do_valueize (valueize, _q121);
816 : 0 : if (tree_swap_operands_p (_q120, _q121))
817 : 0 : std::swap (_q120, _q121);
818 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
819 : : {
820 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
821 : : {
822 : 0 : if (integer_zerop (_q21))
823 : : {
824 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
825 : : {
826 : 0 : {
827 : 0 : tree _p2_pops[1];
828 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
829 : : {
830 : 0 : tree _q170 = _p2_pops[0];
831 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
832 : : {
833 : 0 : {
834 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
835 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
836 : : )
837 : : {
838 : 0 : {
839 : 0 : res_ops[0] = captures[0];
840 : 0 : res_ops[1] = captures[1];
841 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
842 : 0 : return true;
843 : : }
844 : : }
845 : : }
846 : : }
847 : : }
848 : : }
849 : : }
850 : : }
851 : : }
852 : : }
853 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
854 : : {
855 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
856 : : {
857 : 0 : if (integer_zerop (_q21))
858 : : {
859 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
860 : : {
861 : 0 : {
862 : 0 : tree _p2_pops[1];
863 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
864 : : {
865 : 0 : tree _q170 = _p2_pops[0];
866 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
867 : : {
868 : 0 : {
869 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
870 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
871 : : )
872 : : {
873 : 0 : {
874 : 0 : res_ops[0] = captures[0];
875 : 0 : res_ops[1] = captures[1];
876 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
877 : 0 : return true;
878 : : }
879 : : }
880 : : }
881 : : }
882 : : }
883 : : }
884 : : }
885 : : }
886 : : }
887 : : }
888 : 0 : break;
889 : : }
890 : : default:;
891 : : }
892 : : }
893 : : break;
894 : : default:;
895 : : }
896 : : }
897 : : }
898 : : }
899 : : }
900 : : }
901 : 0 : break;
902 : : }
903 : : default:;
904 : : }
905 : : }
906 : : break;
907 : : default:;
908 : : }
909 : : }
910 : : }
911 : 0 : break;
912 : : }
913 : : default:;
914 : : }
915 : : }
916 : : break;
917 : : default:;
918 : : }
919 : 23838495 : break;
920 : : }
921 : : default:;
922 : : }
923 : : }
924 : : break;
925 : : default:;
926 : : }
927 : : break;
928 : : }
929 : 13503 : case BIT_AND_EXPR:
930 : 13503 : {
931 : 13503 : tree _q20 = gimple_assign_rhs1 (_a2);
932 : 13503 : _q20 = do_valueize (valueize, _q20);
933 : 13503 : tree _q21 = gimple_assign_rhs2 (_a2);
934 : 13503 : _q21 = do_valueize (valueize, _q21);
935 : 13503 : if (tree_swap_operands_p (_q20, _q21))
936 : 15 : std::swap (_q20, _q21);
937 : 13503 : switch (TREE_CODE (_q20))
938 : : {
939 : 13503 : case SSA_NAME:
940 : 13503 : if (gimple *_d3 = get_def (valueize, _q20))
941 : : {
942 : 13503 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
943 : 13440 : switch (gimple_assign_rhs_code (_a3))
944 : : {
945 : 46 : case LT_EXPR:
946 : 46 : {
947 : 46 : tree _q30 = gimple_assign_rhs1 (_a3);
948 : 46 : _q30 = do_valueize (valueize, _q30);
949 : 46 : tree _q31 = gimple_assign_rhs2 (_a3);
950 : 46 : _q31 = do_valueize (valueize, _q31);
951 : 46 : switch (TREE_CODE (_q30))
952 : : {
953 : 46 : case SSA_NAME:
954 : 46 : if (gimple *_d4 = get_def (valueize, _q30))
955 : : {
956 : 46 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
957 : 50 : switch (gimple_assign_rhs_code (_a4))
958 : : {
959 : 4 : case BIT_XOR_EXPR:
960 : 4 : {
961 : 4 : tree _q40 = gimple_assign_rhs1 (_a4);
962 : 4 : _q40 = do_valueize (valueize, _q40);
963 : 4 : tree _q41 = gimple_assign_rhs2 (_a4);
964 : 4 : _q41 = do_valueize (valueize, _q41);
965 : 4 : if (tree_swap_operands_p (_q40, _q41))
966 : 0 : std::swap (_q40, _q41);
967 : 4 : {
968 : 4 : tree _q41_pops[1];
969 : 4 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
970 : : {
971 : 0 : tree _q60 = _q41_pops[0];
972 : 0 : switch (TREE_CODE (_q60))
973 : : {
974 : 0 : case SSA_NAME:
975 : 0 : if (gimple *_d5 = get_def (valueize, _q60))
976 : : {
977 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
978 : 0 : switch (gimple_assign_rhs_code (_a5))
979 : : {
980 : 0 : case MINUS_EXPR:
981 : 0 : {
982 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
983 : 0 : _q70 = do_valueize (valueize, _q70);
984 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
985 : 0 : _q71 = do_valueize (valueize, _q71);
986 : 0 : {
987 : 0 : tree _q70_pops[1];
988 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
989 : : {
990 : 0 : tree _q80 = _q70_pops[0];
991 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
992 : : {
993 : 0 : {
994 : 0 : tree _q71_pops[1];
995 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
996 : : {
997 : 0 : tree _q100 = _q71_pops[0];
998 : 0 : if (integer_zerop (_q31))
999 : : {
1000 : 0 : switch (TREE_CODE (_q21))
1001 : : {
1002 : 0 : case SSA_NAME:
1003 : 0 : if (gimple *_d6 = get_def (valueize, _q21))
1004 : : {
1005 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1006 : 0 : switch (gimple_assign_rhs_code (_a6))
1007 : : {
1008 : 0 : case LT_EXPR:
1009 : 0 : {
1010 : 0 : tree _q130 = gimple_assign_rhs1 (_a6);
1011 : 0 : _q130 = do_valueize (valueize, _q130);
1012 : 0 : tree _q131 = gimple_assign_rhs2 (_a6);
1013 : 0 : _q131 = do_valueize (valueize, _q131);
1014 : 0 : switch (TREE_CODE (_q130))
1015 : : {
1016 : 0 : case SSA_NAME:
1017 : 0 : if (gimple *_d7 = get_def (valueize, _q130))
1018 : : {
1019 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1020 : 0 : switch (gimple_assign_rhs_code (_a7))
1021 : : {
1022 : 0 : case BIT_XOR_EXPR:
1023 : 0 : {
1024 : 0 : tree _q140 = gimple_assign_rhs1 (_a7);
1025 : 0 : _q140 = do_valueize (valueize, _q140);
1026 : 0 : tree _q141 = gimple_assign_rhs2 (_a7);
1027 : 0 : _q141 = do_valueize (valueize, _q141);
1028 : 0 : if (tree_swap_operands_p (_q140, _q141))
1029 : 0 : std::swap (_q140, _q141);
1030 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
1031 : : {
1032 : 0 : if ((_q141 == _q100 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q100, 0) && types_match (_q141, _q100)))
1033 : : {
1034 : 0 : if (integer_zerop (_q131))
1035 : : {
1036 : 0 : {
1037 : 0 : tree _p1_pops[1];
1038 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1039 : : {
1040 : 0 : tree _q180 = _p1_pops[0];
1041 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
1042 : : {
1043 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
1044 : : {
1045 : 0 : {
1046 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
1047 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1048 : : )
1049 : : {
1050 : 0 : {
1051 : 0 : res_ops[0] = captures[0];
1052 : 0 : res_ops[1] = captures[1];
1053 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
1054 : 0 : return true;
1055 : : }
1056 : : }
1057 : : }
1058 : : }
1059 : : }
1060 : : }
1061 : : }
1062 : : }
1063 : : }
1064 : : }
1065 : 0 : if ((_q140 == _q100 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q100, 0) && types_match (_q140, _q100)))
1066 : : {
1067 : 0 : if ((_q141 == _q40 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q40, 0) && types_match (_q141, _q40)))
1068 : : {
1069 : 0 : if (integer_zerop (_q131))
1070 : : {
1071 : 0 : {
1072 : 0 : tree _p1_pops[1];
1073 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1074 : : {
1075 : 0 : tree _q180 = _p1_pops[0];
1076 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
1077 : : {
1078 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
1079 : : {
1080 : 0 : {
1081 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
1082 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1083 : : )
1084 : : {
1085 : 0 : {
1086 : 0 : res_ops[0] = captures[0];
1087 : 0 : res_ops[1] = captures[1];
1088 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
1089 : 0 : return true;
1090 : : }
1091 : : }
1092 : : }
1093 : : }
1094 : : }
1095 : : }
1096 : : }
1097 : : }
1098 : : }
1099 : : }
1100 : 0 : break;
1101 : : }
1102 : : default:;
1103 : : }
1104 : : }
1105 : : break;
1106 : : default:;
1107 : : }
1108 : : break;
1109 : : }
1110 : : default:;
1111 : : }
1112 : : }
1113 : : break;
1114 : : default:;
1115 : : }
1116 : : }
1117 : : }
1118 : : }
1119 : : }
1120 : : }
1121 : : }
1122 : 0 : break;
1123 : : }
1124 : : default:;
1125 : : }
1126 : : }
1127 : : break;
1128 : : default:;
1129 : : }
1130 : : }
1131 : : }
1132 : 4 : if (integer_zerop (_q31))
1133 : : {
1134 : 4 : switch (TREE_CODE (_q21))
1135 : : {
1136 : 4 : case SSA_NAME:
1137 : 4 : if (gimple *_d5 = get_def (valueize, _q21))
1138 : : {
1139 : 4 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1140 : 4 : switch (gimple_assign_rhs_code (_a5))
1141 : : {
1142 : 4 : case LT_EXPR:
1143 : 4 : {
1144 : 4 : tree _q80 = gimple_assign_rhs1 (_a5);
1145 : 4 : _q80 = do_valueize (valueize, _q80);
1146 : 4 : tree _q81 = gimple_assign_rhs2 (_a5);
1147 : 4 : _q81 = do_valueize (valueize, _q81);
1148 : 4 : switch (TREE_CODE (_q80))
1149 : : {
1150 : 4 : case SSA_NAME:
1151 : 4 : if (gimple *_d6 = get_def (valueize, _q80))
1152 : : {
1153 : 4 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
1154 : 4 : switch (gimple_assign_rhs_code (_a6))
1155 : : {
1156 : 4 : case BIT_XOR_EXPR:
1157 : 4 : {
1158 : 4 : tree _q90 = gimple_assign_rhs1 (_a6);
1159 : 4 : _q90 = do_valueize (valueize, _q90);
1160 : 4 : tree _q91 = gimple_assign_rhs2 (_a6);
1161 : 4 : _q91 = do_valueize (valueize, _q91);
1162 : 4 : if (tree_swap_operands_p (_q90, _q91))
1163 : 0 : std::swap (_q90, _q91);
1164 : 4 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
1165 : : {
1166 : 4 : {
1167 : 4 : tree _q91_pops[1];
1168 : 4 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
1169 : : {
1170 : 4 : tree _q110 = _q91_pops[0];
1171 : 4 : switch (TREE_CODE (_q110))
1172 : : {
1173 : 4 : case SSA_NAME:
1174 : 4 : if (gimple *_d7 = get_def (valueize, _q110))
1175 : : {
1176 : 4 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1177 : 4 : switch (gimple_assign_rhs_code (_a7))
1178 : : {
1179 : 4 : case MINUS_EXPR:
1180 : 4 : {
1181 : 4 : tree _q120 = gimple_assign_rhs1 (_a7);
1182 : 4 : _q120 = do_valueize (valueize, _q120);
1183 : 4 : tree _q121 = gimple_assign_rhs2 (_a7);
1184 : 4 : _q121 = do_valueize (valueize, _q121);
1185 : 4 : {
1186 : 4 : tree _q120_pops[1];
1187 : 4 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
1188 : : {
1189 : 4 : tree _q130 = _q120_pops[0];
1190 : 4 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
1191 : : {
1192 : 4 : {
1193 : 4 : tree _q121_pops[1];
1194 : 4 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
1195 : : {
1196 : 4 : tree _q150 = _q121_pops[0];
1197 : 4 : if ((_q150 == _q41 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q41, 0) && types_match (_q150, _q41)))
1198 : : {
1199 : 4 : if (integer_zerop (_q81))
1200 : : {
1201 : 4 : {
1202 : 4 : tree _p1_pops[1];
1203 : 4 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1204 : : {
1205 : 4 : tree _q180 = _p1_pops[0];
1206 : 4 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
1207 : : {
1208 : 4 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
1209 : : {
1210 : 4 : {
1211 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q91 };
1212 : 4 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1213 : : )
1214 : : {
1215 : 4 : {
1216 : 4 : res_ops[0] = captures[0];
1217 : 4 : res_ops[1] = captures[1];
1218 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
1219 : 4 : return true;
1220 : : }
1221 : : }
1222 : : }
1223 : : }
1224 : : }
1225 : : }
1226 : : }
1227 : : }
1228 : : }
1229 : : }
1230 : : }
1231 : : }
1232 : : }
1233 : : }
1234 : 0 : break;
1235 : : }
1236 : : default:;
1237 : : }
1238 : : }
1239 : : break;
1240 : : default:;
1241 : : }
1242 : : }
1243 : : }
1244 : : }
1245 : 0 : if ((_q90 == _q41 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q41, 0) && types_match (_q90, _q41)))
1246 : : {
1247 : 0 : {
1248 : 0 : tree _q91_pops[1];
1249 : 0 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
1250 : : {
1251 : 0 : tree _q110 = _q91_pops[0];
1252 : 0 : switch (TREE_CODE (_q110))
1253 : : {
1254 : 0 : case SSA_NAME:
1255 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
1256 : : {
1257 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
1258 : 0 : switch (gimple_assign_rhs_code (_a7))
1259 : : {
1260 : 0 : case MINUS_EXPR:
1261 : 0 : {
1262 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
1263 : 0 : _q120 = do_valueize (valueize, _q120);
1264 : 0 : tree _q121 = gimple_assign_rhs2 (_a7);
1265 : 0 : _q121 = do_valueize (valueize, _q121);
1266 : 0 : {
1267 : 0 : tree _q120_pops[1];
1268 : 0 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
1269 : : {
1270 : 0 : tree _q130 = _q120_pops[0];
1271 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
1272 : : {
1273 : 0 : {
1274 : 0 : tree _q121_pops[1];
1275 : 0 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
1276 : : {
1277 : 0 : tree _q150 = _q121_pops[0];
1278 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
1279 : : {
1280 : 0 : if (integer_zerop (_q81))
1281 : : {
1282 : 0 : {
1283 : 0 : tree _p1_pops[1];
1284 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1285 : : {
1286 : 0 : tree _q180 = _p1_pops[0];
1287 : 0 : if ((_q180 == _q41 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q41, 0) && types_match (_q180, _q41)))
1288 : : {
1289 : 0 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
1290 : : {
1291 : 0 : {
1292 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q91 };
1293 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1294 : : )
1295 : : {
1296 : 0 : {
1297 : 0 : res_ops[0] = captures[0];
1298 : 0 : res_ops[1] = captures[1];
1299 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
1300 : 0 : return true;
1301 : : }
1302 : : }
1303 : : }
1304 : : }
1305 : : }
1306 : : }
1307 : : }
1308 : : }
1309 : : }
1310 : : }
1311 : : }
1312 : : }
1313 : : }
1314 : : }
1315 : 0 : break;
1316 : : }
1317 : : default:;
1318 : : }
1319 : : }
1320 : : break;
1321 : : default:;
1322 : : }
1323 : : }
1324 : : }
1325 : : }
1326 : 23838495 : break;
1327 : : }
1328 : : default:;
1329 : : }
1330 : : }
1331 : : break;
1332 : : default:;
1333 : : }
1334 : : break;
1335 : : }
1336 : : default:;
1337 : : }
1338 : : }
1339 : : break;
1340 : : default:;
1341 : : }
1342 : : }
1343 : 23838495 : break;
1344 : : }
1345 : : default:;
1346 : : }
1347 : : }
1348 : : break;
1349 : : default:;
1350 : : }
1351 : : break;
1352 : : }
1353 : : default:;
1354 : : }
1355 : : }
1356 : : break;
1357 : : default:;
1358 : : }
1359 : 23838495 : break;
1360 : : }
1361 : 15603 : case NE_EXPR:
1362 : 15603 : {
1363 : 15603 : tree _q20 = gimple_assign_rhs1 (_a2);
1364 : 15603 : _q20 = do_valueize (valueize, _q20);
1365 : 15603 : tree _q21 = gimple_assign_rhs2 (_a2);
1366 : 15603 : _q21 = do_valueize (valueize, _q21);
1367 : 15603 : if (tree_swap_operands_p (_q20, _q21))
1368 : 2 : std::swap (_q20, _q21);
1369 : 15603 : switch (TREE_CODE (_q20))
1370 : : {
1371 : 15591 : case SSA_NAME:
1372 : 15591 : if (gimple *_d3 = get_def (valueize, _q20))
1373 : : {
1374 : 15591 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1375 : 13902 : switch (gimple_assign_rhs_code (_a3))
1376 : : {
1377 : 6 : case IMAGPART_EXPR:
1378 : 6 : {
1379 : 6 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a3), 0);
1380 : 6 : if ((TREE_CODE (_q30) == SSA_NAME
1381 : 6 : || is_gimple_min_invariant (_q30)))
1382 : : {
1383 : 6 : _q30 = do_valueize (valueize, _q30);
1384 : 6 : switch (TREE_CODE (_q30))
1385 : : {
1386 : 6 : case SSA_NAME:
1387 : 6 : if (gimple *_d4 = get_def (valueize, _q30))
1388 : : {
1389 : 6 : if (gcall *_c4 = dyn_cast <gcall *> (_d4))
1390 : 6 : switch (gimple_call_combined_fn (_c4))
1391 : : {
1392 : 0 : case CFN_SUB_OVERFLOW:
1393 : 0 : if (gimple_call_num_args (_c4) == 2)
1394 : : {
1395 : 0 : tree _q40 = gimple_call_arg (_c4, 0);
1396 : 0 : _q40 = do_valueize (valueize, _q40);
1397 : 0 : tree _q41 = gimple_call_arg (_c4, 1);
1398 : 0 : _q41 = do_valueize (valueize, _q41);
1399 : 0 : if (integer_zerop (_q21))
1400 : : {
1401 : 0 : {
1402 : 0 : tree _p1_pops[1];
1403 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1404 : : {
1405 : 0 : tree _q80 = _p1_pops[0];
1406 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
1407 : : {
1408 : 0 : switch (TREE_CODE (_p2))
1409 : : {
1410 : 0 : case SSA_NAME:
1411 : 0 : if (gimple *_d5 = get_def (valueize, _p2))
1412 : : {
1413 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1414 : 0 : switch (gimple_assign_rhs_code (_a5))
1415 : : {
1416 : 0 : case REALPART_EXPR:
1417 : 0 : {
1418 : 0 : tree _q100 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
1419 : 0 : if ((TREE_CODE (_q100) == SSA_NAME
1420 : 0 : || is_gimple_min_invariant (_q100)))
1421 : : {
1422 : 0 : _q100 = do_valueize (valueize, _q100);
1423 : 0 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
1424 : : {
1425 : 0 : {
1426 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
1427 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1428 : : )
1429 : : {
1430 : 0 : if (types_match (type, captures[0], captures[1])
1431 : : )
1432 : : {
1433 : 0 : {
1434 : 0 : res_ops[0] = captures[0];
1435 : 0 : res_ops[1] = captures[1];
1436 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 85, __FILE__, __LINE__, false);
1437 : 0 : return true;
1438 : : }
1439 : : }
1440 : : }
1441 : : }
1442 : : }
1443 : : }
1444 : : break;
1445 : : }
1446 : : default:;
1447 : : }
1448 : : }
1449 : : break;
1450 : : default:;
1451 : : }
1452 : : }
1453 : : }
1454 : : }
1455 : : }
1456 : : }
1457 : : break;
1458 : : default:;
1459 : : }
1460 : : }
1461 : : break;
1462 : : default:;
1463 : : }
1464 : : }
1465 : : break;
1466 : : }
1467 : : default:;
1468 : : }
1469 : : }
1470 : : break;
1471 : : default:;
1472 : : }
1473 : 23838495 : break;
1474 : : }
1475 : : default:;
1476 : : }
1477 : : }
1478 : : break;
1479 : 0 : case LT_EXPR:
1480 : 0 : {
1481 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1482 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
1483 : 0 : || is_gimple_min_invariant (_q20)))
1484 : : {
1485 : 0 : _q20 = do_valueize (valueize, _q20);
1486 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1487 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
1488 : 0 : || is_gimple_min_invariant (_q21)))
1489 : : {
1490 : 0 : _q21 = do_valueize (valueize, _q21);
1491 : 0 : switch (TREE_CODE (_q20))
1492 : : {
1493 : 0 : case SSA_NAME:
1494 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
1495 : : {
1496 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1497 : 0 : switch (gimple_assign_rhs_code (_a2))
1498 : : {
1499 : 0 : case BIT_AND_EXPR:
1500 : 0 : {
1501 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
1502 : 0 : _q30 = do_valueize (valueize, _q30);
1503 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
1504 : 0 : _q31 = do_valueize (valueize, _q31);
1505 : 0 : if (tree_swap_operands_p (_q30, _q31))
1506 : 0 : std::swap (_q30, _q31);
1507 : 0 : switch (TREE_CODE (_q30))
1508 : : {
1509 : 0 : case SSA_NAME:
1510 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
1511 : : {
1512 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1513 : 0 : switch (gimple_assign_rhs_code (_a3))
1514 : : {
1515 : 0 : case BIT_XOR_EXPR:
1516 : 0 : {
1517 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
1518 : 0 : _q40 = do_valueize (valueize, _q40);
1519 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
1520 : 0 : _q41 = do_valueize (valueize, _q41);
1521 : 0 : if (tree_swap_operands_p (_q40, _q41))
1522 : 0 : std::swap (_q40, _q41);
1523 : 0 : switch (TREE_CODE (_q31))
1524 : : {
1525 : 0 : case SSA_NAME:
1526 : 0 : if (gimple *_d4 = get_def (valueize, _q31))
1527 : : {
1528 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
1529 : 0 : switch (gimple_assign_rhs_code (_a4))
1530 : : {
1531 : 0 : case BIT_XOR_EXPR:
1532 : 0 : {
1533 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
1534 : 0 : _q70 = do_valueize (valueize, _q70);
1535 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
1536 : 0 : _q71 = do_valueize (valueize, _q71);
1537 : 0 : if (tree_swap_operands_p (_q70, _q71))
1538 : 0 : std::swap (_q70, _q71);
1539 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
1540 : : {
1541 : 0 : {
1542 : 0 : tree _q71_pops[1];
1543 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
1544 : : {
1545 : 0 : tree _q90 = _q71_pops[0];
1546 : 0 : switch (TREE_CODE (_q90))
1547 : : {
1548 : 0 : case SSA_NAME:
1549 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
1550 : : {
1551 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1552 : 0 : switch (gimple_assign_rhs_code (_a5))
1553 : : {
1554 : 0 : case MINUS_EXPR:
1555 : 0 : {
1556 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
1557 : 0 : _q100 = do_valueize (valueize, _q100);
1558 : 0 : tree _q101 = gimple_assign_rhs2 (_a5);
1559 : 0 : _q101 = do_valueize (valueize, _q101);
1560 : 0 : {
1561 : 0 : tree _q100_pops[1];
1562 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
1563 : : {
1564 : 0 : tree _q110 = _q100_pops[0];
1565 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
1566 : : {
1567 : 0 : {
1568 : 0 : tree _q101_pops[1];
1569 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
1570 : : {
1571 : 0 : tree _q130 = _q101_pops[0];
1572 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
1573 : : {
1574 : 0 : if (integer_zerop (_q21))
1575 : : {
1576 : 0 : {
1577 : 0 : tree _p1_pops[1];
1578 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1579 : : {
1580 : 0 : tree _q160 = _p1_pops[0];
1581 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
1582 : : {
1583 : 0 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
1584 : : {
1585 : 0 : {
1586 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
1587 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1588 : : )
1589 : : {
1590 : 0 : {
1591 : 0 : res_ops[0] = captures[0];
1592 : 0 : res_ops[1] = captures[1];
1593 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
1594 : 0 : return true;
1595 : : }
1596 : : }
1597 : : }
1598 : : }
1599 : : }
1600 : : }
1601 : : }
1602 : : }
1603 : : }
1604 : : }
1605 : : }
1606 : : }
1607 : : }
1608 : : }
1609 : 0 : break;
1610 : : }
1611 : : default:;
1612 : : }
1613 : : }
1614 : : break;
1615 : : default:;
1616 : : }
1617 : : }
1618 : : }
1619 : : }
1620 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
1621 : : {
1622 : 0 : {
1623 : 0 : tree _q71_pops[1];
1624 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
1625 : : {
1626 : 0 : tree _q90 = _q71_pops[0];
1627 : 0 : switch (TREE_CODE (_q90))
1628 : : {
1629 : 0 : case SSA_NAME:
1630 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
1631 : : {
1632 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1633 : 0 : switch (gimple_assign_rhs_code (_a5))
1634 : : {
1635 : 0 : case MINUS_EXPR:
1636 : 0 : {
1637 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
1638 : 0 : _q100 = do_valueize (valueize, _q100);
1639 : 0 : tree _q101 = gimple_assign_rhs2 (_a5);
1640 : 0 : _q101 = do_valueize (valueize, _q101);
1641 : 0 : {
1642 : 0 : tree _q100_pops[1];
1643 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
1644 : : {
1645 : 0 : tree _q110 = _q100_pops[0];
1646 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
1647 : : {
1648 : 0 : {
1649 : 0 : tree _q101_pops[1];
1650 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
1651 : : {
1652 : 0 : tree _q130 = _q101_pops[0];
1653 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
1654 : : {
1655 : 0 : if (integer_zerop (_q21))
1656 : : {
1657 : 0 : {
1658 : 0 : tree _p1_pops[1];
1659 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1660 : : {
1661 : 0 : tree _q160 = _p1_pops[0];
1662 : 0 : if ((_q160 == _q41 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q41, 0) && types_match (_q160, _q41)))
1663 : : {
1664 : 0 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
1665 : : {
1666 : 0 : {
1667 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
1668 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1669 : : )
1670 : : {
1671 : 0 : {
1672 : 0 : res_ops[0] = captures[0];
1673 : 0 : res_ops[1] = captures[1];
1674 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
1675 : 0 : return true;
1676 : : }
1677 : : }
1678 : : }
1679 : : }
1680 : : }
1681 : : }
1682 : : }
1683 : : }
1684 : : }
1685 : : }
1686 : : }
1687 : : }
1688 : : }
1689 : : }
1690 : 0 : break;
1691 : : }
1692 : : default:;
1693 : : }
1694 : : }
1695 : : break;
1696 : : default:;
1697 : : }
1698 : : }
1699 : : }
1700 : : }
1701 : 0 : break;
1702 : : }
1703 : : default:;
1704 : : }
1705 : : }
1706 : : break;
1707 : 0 : default:;
1708 : : }
1709 : 0 : {
1710 : 0 : tree _q41_pops[1];
1711 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
1712 : : {
1713 : 0 : tree _q60 = _q41_pops[0];
1714 : 0 : switch (TREE_CODE (_q60))
1715 : : {
1716 : 0 : case SSA_NAME:
1717 : 0 : if (gimple *_d4 = get_def (valueize, _q60))
1718 : : {
1719 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
1720 : 0 : switch (gimple_assign_rhs_code (_a4))
1721 : : {
1722 : 0 : case MINUS_EXPR:
1723 : 0 : {
1724 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
1725 : 0 : _q70 = do_valueize (valueize, _q70);
1726 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
1727 : 0 : _q71 = do_valueize (valueize, _q71);
1728 : 0 : {
1729 : 0 : tree _q70_pops[1];
1730 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
1731 : : {
1732 : 0 : tree _q80 = _q70_pops[0];
1733 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
1734 : : {
1735 : 0 : {
1736 : 0 : tree _q71_pops[1];
1737 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
1738 : : {
1739 : 0 : tree _q100 = _q71_pops[0];
1740 : 0 : switch (TREE_CODE (_q31))
1741 : : {
1742 : 0 : case SSA_NAME:
1743 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
1744 : : {
1745 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1746 : 0 : switch (gimple_assign_rhs_code (_a5))
1747 : : {
1748 : 0 : case BIT_XOR_EXPR:
1749 : 0 : {
1750 : 0 : tree _q120 = gimple_assign_rhs1 (_a5);
1751 : 0 : _q120 = do_valueize (valueize, _q120);
1752 : 0 : tree _q121 = gimple_assign_rhs2 (_a5);
1753 : 0 : _q121 = do_valueize (valueize, _q121);
1754 : 0 : if (tree_swap_operands_p (_q120, _q121))
1755 : 0 : std::swap (_q120, _q121);
1756 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
1757 : : {
1758 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
1759 : : {
1760 : 0 : if (integer_zerop (_q21))
1761 : : {
1762 : 0 : {
1763 : 0 : tree _p1_pops[1];
1764 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1765 : : {
1766 : 0 : tree _q160 = _p1_pops[0];
1767 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
1768 : : {
1769 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
1770 : : {
1771 : 0 : {
1772 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
1773 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1774 : : )
1775 : : {
1776 : 0 : {
1777 : 0 : res_ops[0] = captures[0];
1778 : 0 : res_ops[1] = captures[1];
1779 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
1780 : 0 : return true;
1781 : : }
1782 : : }
1783 : : }
1784 : : }
1785 : : }
1786 : : }
1787 : : }
1788 : : }
1789 : : }
1790 : : }
1791 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
1792 : : {
1793 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
1794 : : {
1795 : 0 : if (integer_zerop (_q21))
1796 : : {
1797 : 0 : {
1798 : 0 : tree _p1_pops[1];
1799 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
1800 : : {
1801 : 0 : tree _q160 = _p1_pops[0];
1802 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
1803 : : {
1804 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
1805 : : {
1806 : 0 : {
1807 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
1808 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1809 : : )
1810 : : {
1811 : 0 : {
1812 : 0 : res_ops[0] = captures[0];
1813 : 0 : res_ops[1] = captures[1];
1814 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
1815 : 0 : return true;
1816 : : }
1817 : : }
1818 : : }
1819 : : }
1820 : : }
1821 : : }
1822 : : }
1823 : : }
1824 : : }
1825 : : }
1826 : 0 : break;
1827 : : }
1828 : : default:;
1829 : : }
1830 : : }
1831 : : break;
1832 : : default:;
1833 : : }
1834 : : }
1835 : : }
1836 : : }
1837 : : }
1838 : : }
1839 : 0 : break;
1840 : : }
1841 : : default:;
1842 : : }
1843 : : }
1844 : : break;
1845 : : default:;
1846 : : }
1847 : : }
1848 : : }
1849 : 0 : break;
1850 : : }
1851 : : default:;
1852 : : }
1853 : : }
1854 : : break;
1855 : : default:;
1856 : : }
1857 : 23838495 : break;
1858 : : }
1859 : : default:;
1860 : : }
1861 : : }
1862 : : break;
1863 : : default:;
1864 : : }
1865 : : }
1866 : : }
1867 : : break;
1868 : : }
1869 : 0 : case GE_EXPR:
1870 : 0 : {
1871 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1872 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
1873 : 0 : || is_gimple_min_invariant (_q20)))
1874 : : {
1875 : 0 : _q20 = do_valueize (valueize, _q20);
1876 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1877 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
1878 : 0 : || is_gimple_min_invariant (_q21)))
1879 : : {
1880 : 0 : _q21 = do_valueize (valueize, _q21);
1881 : 0 : switch (TREE_CODE (_q20))
1882 : : {
1883 : 0 : case SSA_NAME:
1884 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
1885 : : {
1886 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1887 : 0 : switch (gimple_assign_rhs_code (_a2))
1888 : : {
1889 : 0 : case BIT_AND_EXPR:
1890 : 0 : {
1891 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
1892 : 0 : _q30 = do_valueize (valueize, _q30);
1893 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
1894 : 0 : _q31 = do_valueize (valueize, _q31);
1895 : 0 : if (tree_swap_operands_p (_q30, _q31))
1896 : 0 : std::swap (_q30, _q31);
1897 : 0 : switch (TREE_CODE (_q30))
1898 : : {
1899 : 0 : case SSA_NAME:
1900 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
1901 : : {
1902 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1903 : 0 : switch (gimple_assign_rhs_code (_a3))
1904 : : {
1905 : 0 : case BIT_XOR_EXPR:
1906 : 0 : {
1907 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
1908 : 0 : _q40 = do_valueize (valueize, _q40);
1909 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
1910 : 0 : _q41 = do_valueize (valueize, _q41);
1911 : 0 : if (tree_swap_operands_p (_q40, _q41))
1912 : 0 : std::swap (_q40, _q41);
1913 : 0 : switch (TREE_CODE (_q31))
1914 : : {
1915 : 0 : case SSA_NAME:
1916 : 0 : if (gimple *_d4 = get_def (valueize, _q31))
1917 : : {
1918 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
1919 : 0 : switch (gimple_assign_rhs_code (_a4))
1920 : : {
1921 : 0 : case BIT_XOR_EXPR:
1922 : 0 : {
1923 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
1924 : 0 : _q70 = do_valueize (valueize, _q70);
1925 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
1926 : 0 : _q71 = do_valueize (valueize, _q71);
1927 : 0 : if (tree_swap_operands_p (_q70, _q71))
1928 : 0 : std::swap (_q70, _q71);
1929 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
1930 : : {
1931 : 0 : {
1932 : 0 : tree _q71_pops[1];
1933 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
1934 : : {
1935 : 0 : tree _q90 = _q71_pops[0];
1936 : 0 : switch (TREE_CODE (_q90))
1937 : : {
1938 : 0 : case SSA_NAME:
1939 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
1940 : : {
1941 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1942 : 0 : switch (gimple_assign_rhs_code (_a5))
1943 : : {
1944 : 0 : case MINUS_EXPR:
1945 : 0 : {
1946 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
1947 : 0 : _q100 = do_valueize (valueize, _q100);
1948 : 0 : tree _q101 = gimple_assign_rhs2 (_a5);
1949 : 0 : _q101 = do_valueize (valueize, _q101);
1950 : 0 : {
1951 : 0 : tree _q100_pops[1];
1952 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
1953 : : {
1954 : 0 : tree _q110 = _q100_pops[0];
1955 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
1956 : : {
1957 : 0 : {
1958 : 0 : tree _q101_pops[1];
1959 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
1960 : : {
1961 : 0 : tree _q130 = _q101_pops[0];
1962 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
1963 : : {
1964 : 0 : if (integer_zerop (_q21))
1965 : : {
1966 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
1967 : : {
1968 : 0 : {
1969 : 0 : tree _p2_pops[1];
1970 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
1971 : : {
1972 : 0 : tree _q170 = _p2_pops[0];
1973 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
1974 : : {
1975 : 0 : {
1976 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
1977 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
1978 : : )
1979 : : {
1980 : 0 : {
1981 : 0 : res_ops[0] = captures[0];
1982 : 0 : res_ops[1] = captures[1];
1983 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
1984 : 0 : return true;
1985 : : }
1986 : : }
1987 : : }
1988 : : }
1989 : : }
1990 : : }
1991 : : }
1992 : : }
1993 : : }
1994 : : }
1995 : : }
1996 : : }
1997 : : }
1998 : : }
1999 : 0 : break;
2000 : : }
2001 : : default:;
2002 : : }
2003 : : }
2004 : : break;
2005 : : default:;
2006 : : }
2007 : : }
2008 : : }
2009 : : }
2010 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
2011 : : {
2012 : 0 : {
2013 : 0 : tree _q71_pops[1];
2014 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
2015 : : {
2016 : 0 : tree _q90 = _q71_pops[0];
2017 : 0 : switch (TREE_CODE (_q90))
2018 : : {
2019 : 0 : case SSA_NAME:
2020 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
2021 : : {
2022 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2023 : 0 : switch (gimple_assign_rhs_code (_a5))
2024 : : {
2025 : 0 : case MINUS_EXPR:
2026 : 0 : {
2027 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
2028 : 0 : _q100 = do_valueize (valueize, _q100);
2029 : 0 : tree _q101 = gimple_assign_rhs2 (_a5);
2030 : 0 : _q101 = do_valueize (valueize, _q101);
2031 : 0 : {
2032 : 0 : tree _q100_pops[1];
2033 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
2034 : : {
2035 : 0 : tree _q110 = _q100_pops[0];
2036 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
2037 : : {
2038 : 0 : {
2039 : 0 : tree _q101_pops[1];
2040 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
2041 : : {
2042 : 0 : tree _q130 = _q101_pops[0];
2043 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
2044 : : {
2045 : 0 : if (integer_zerop (_q21))
2046 : : {
2047 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
2048 : : {
2049 : 0 : {
2050 : 0 : tree _p2_pops[1];
2051 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
2052 : : {
2053 : 0 : tree _q170 = _p2_pops[0];
2054 : 0 : if ((_q170 == _q41 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q41, 0) && types_match (_q170, _q41)))
2055 : : {
2056 : 0 : {
2057 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
2058 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2059 : : )
2060 : : {
2061 : 0 : {
2062 : 0 : res_ops[0] = captures[0];
2063 : 0 : res_ops[1] = captures[1];
2064 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
2065 : 0 : return true;
2066 : : }
2067 : : }
2068 : : }
2069 : : }
2070 : : }
2071 : : }
2072 : : }
2073 : : }
2074 : : }
2075 : : }
2076 : : }
2077 : : }
2078 : : }
2079 : : }
2080 : 0 : break;
2081 : : }
2082 : : default:;
2083 : : }
2084 : : }
2085 : : break;
2086 : : default:;
2087 : : }
2088 : : }
2089 : : }
2090 : : }
2091 : 0 : break;
2092 : : }
2093 : : default:;
2094 : : }
2095 : : }
2096 : : break;
2097 : 0 : default:;
2098 : : }
2099 : 0 : {
2100 : 0 : tree _q41_pops[1];
2101 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
2102 : : {
2103 : 0 : tree _q60 = _q41_pops[0];
2104 : 0 : switch (TREE_CODE (_q60))
2105 : : {
2106 : 0 : case SSA_NAME:
2107 : 0 : if (gimple *_d4 = get_def (valueize, _q60))
2108 : : {
2109 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2110 : 0 : switch (gimple_assign_rhs_code (_a4))
2111 : : {
2112 : 0 : case MINUS_EXPR:
2113 : 0 : {
2114 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
2115 : 0 : _q70 = do_valueize (valueize, _q70);
2116 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
2117 : 0 : _q71 = do_valueize (valueize, _q71);
2118 : 0 : {
2119 : 0 : tree _q70_pops[1];
2120 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
2121 : : {
2122 : 0 : tree _q80 = _q70_pops[0];
2123 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
2124 : : {
2125 : 0 : {
2126 : 0 : tree _q71_pops[1];
2127 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
2128 : : {
2129 : 0 : tree _q100 = _q71_pops[0];
2130 : 0 : switch (TREE_CODE (_q31))
2131 : : {
2132 : 0 : case SSA_NAME:
2133 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
2134 : : {
2135 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2136 : 0 : switch (gimple_assign_rhs_code (_a5))
2137 : : {
2138 : 0 : case BIT_XOR_EXPR:
2139 : 0 : {
2140 : 0 : tree _q120 = gimple_assign_rhs1 (_a5);
2141 : 0 : _q120 = do_valueize (valueize, _q120);
2142 : 0 : tree _q121 = gimple_assign_rhs2 (_a5);
2143 : 0 : _q121 = do_valueize (valueize, _q121);
2144 : 0 : if (tree_swap_operands_p (_q120, _q121))
2145 : 0 : std::swap (_q120, _q121);
2146 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
2147 : : {
2148 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
2149 : : {
2150 : 0 : if (integer_zerop (_q21))
2151 : : {
2152 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
2153 : : {
2154 : 0 : {
2155 : 0 : tree _p2_pops[1];
2156 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
2157 : : {
2158 : 0 : tree _q170 = _p2_pops[0];
2159 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
2160 : : {
2161 : 0 : {
2162 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
2163 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2164 : : )
2165 : : {
2166 : 0 : {
2167 : 0 : res_ops[0] = captures[0];
2168 : 0 : res_ops[1] = captures[1];
2169 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
2170 : 0 : return true;
2171 : : }
2172 : : }
2173 : : }
2174 : : }
2175 : : }
2176 : : }
2177 : : }
2178 : : }
2179 : : }
2180 : : }
2181 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
2182 : : {
2183 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
2184 : : {
2185 : 0 : if (integer_zerop (_q21))
2186 : : {
2187 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
2188 : : {
2189 : 0 : {
2190 : 0 : tree _p2_pops[1];
2191 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
2192 : : {
2193 : 0 : tree _q170 = _p2_pops[0];
2194 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
2195 : : {
2196 : 0 : {
2197 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
2198 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2199 : : )
2200 : : {
2201 : 0 : {
2202 : 0 : res_ops[0] = captures[0];
2203 : 0 : res_ops[1] = captures[1];
2204 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
2205 : 0 : return true;
2206 : : }
2207 : : }
2208 : : }
2209 : : }
2210 : : }
2211 : : }
2212 : : }
2213 : : }
2214 : : }
2215 : : }
2216 : 0 : break;
2217 : : }
2218 : : default:;
2219 : : }
2220 : : }
2221 : : break;
2222 : : default:;
2223 : : }
2224 : : }
2225 : : }
2226 : : }
2227 : : }
2228 : : }
2229 : 0 : break;
2230 : : }
2231 : : default:;
2232 : : }
2233 : : }
2234 : : break;
2235 : : default:;
2236 : : }
2237 : : }
2238 : : }
2239 : 0 : break;
2240 : : }
2241 : : default:;
2242 : : }
2243 : : }
2244 : : break;
2245 : : default:;
2246 : : }
2247 : 23838495 : break;
2248 : : }
2249 : : default:;
2250 : : }
2251 : : }
2252 : : break;
2253 : : default:;
2254 : : }
2255 : : }
2256 : : }
2257 : : break;
2258 : : }
2259 : 0 : case BIT_AND_EXPR:
2260 : 0 : {
2261 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
2262 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
2263 : 0 : || is_gimple_min_invariant (_q20)))
2264 : : {
2265 : 0 : _q20 = do_valueize (valueize, _q20);
2266 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
2267 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
2268 : 0 : || is_gimple_min_invariant (_q21)))
2269 : : {
2270 : 0 : _q21 = do_valueize (valueize, _q21);
2271 : 0 : if (tree_swap_operands_p (_q20, _q21))
2272 : 0 : std::swap (_q20, _q21);
2273 : 0 : switch (TREE_CODE (_q20))
2274 : : {
2275 : 0 : case SSA_NAME:
2276 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
2277 : : {
2278 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2279 : 0 : switch (gimple_assign_rhs_code (_a2))
2280 : : {
2281 : 0 : case LT_EXPR:
2282 : 0 : {
2283 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
2284 : 0 : _q30 = do_valueize (valueize, _q30);
2285 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
2286 : 0 : _q31 = do_valueize (valueize, _q31);
2287 : 0 : switch (TREE_CODE (_q30))
2288 : : {
2289 : 0 : case SSA_NAME:
2290 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
2291 : : {
2292 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2293 : 0 : switch (gimple_assign_rhs_code (_a3))
2294 : : {
2295 : 0 : case BIT_XOR_EXPR:
2296 : 0 : {
2297 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
2298 : 0 : _q40 = do_valueize (valueize, _q40);
2299 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
2300 : 0 : _q41 = do_valueize (valueize, _q41);
2301 : 0 : if (tree_swap_operands_p (_q40, _q41))
2302 : 0 : std::swap (_q40, _q41);
2303 : 0 : {
2304 : 0 : tree _q41_pops[1];
2305 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
2306 : : {
2307 : 0 : tree _q60 = _q41_pops[0];
2308 : 0 : switch (TREE_CODE (_q60))
2309 : : {
2310 : 0 : case SSA_NAME:
2311 : 0 : if (gimple *_d4 = get_def (valueize, _q60))
2312 : : {
2313 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2314 : 0 : switch (gimple_assign_rhs_code (_a4))
2315 : : {
2316 : 0 : case MINUS_EXPR:
2317 : 0 : {
2318 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
2319 : 0 : _q70 = do_valueize (valueize, _q70);
2320 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
2321 : 0 : _q71 = do_valueize (valueize, _q71);
2322 : 0 : {
2323 : 0 : tree _q70_pops[1];
2324 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
2325 : : {
2326 : 0 : tree _q80 = _q70_pops[0];
2327 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
2328 : : {
2329 : 0 : {
2330 : 0 : tree _q71_pops[1];
2331 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
2332 : : {
2333 : 0 : tree _q100 = _q71_pops[0];
2334 : 0 : if (integer_zerop (_q31))
2335 : : {
2336 : 0 : switch (TREE_CODE (_q21))
2337 : : {
2338 : 0 : case SSA_NAME:
2339 : 0 : if (gimple *_d5 = get_def (valueize, _q21))
2340 : : {
2341 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2342 : 0 : switch (gimple_assign_rhs_code (_a5))
2343 : : {
2344 : 0 : case LT_EXPR:
2345 : 0 : {
2346 : 0 : tree _q130 = gimple_assign_rhs1 (_a5);
2347 : 0 : _q130 = do_valueize (valueize, _q130);
2348 : 0 : tree _q131 = gimple_assign_rhs2 (_a5);
2349 : 0 : _q131 = do_valueize (valueize, _q131);
2350 : 0 : switch (TREE_CODE (_q130))
2351 : : {
2352 : 0 : case SSA_NAME:
2353 : 0 : if (gimple *_d6 = get_def (valueize, _q130))
2354 : : {
2355 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2356 : 0 : switch (gimple_assign_rhs_code (_a6))
2357 : : {
2358 : 0 : case BIT_XOR_EXPR:
2359 : 0 : {
2360 : 0 : tree _q140 = gimple_assign_rhs1 (_a6);
2361 : 0 : _q140 = do_valueize (valueize, _q140);
2362 : 0 : tree _q141 = gimple_assign_rhs2 (_a6);
2363 : 0 : _q141 = do_valueize (valueize, _q141);
2364 : 0 : if (tree_swap_operands_p (_q140, _q141))
2365 : 0 : std::swap (_q140, _q141);
2366 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
2367 : : {
2368 : 0 : if ((_q141 == _q100 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q100, 0) && types_match (_q141, _q100)))
2369 : : {
2370 : 0 : if (integer_zerop (_q131))
2371 : : {
2372 : 0 : {
2373 : 0 : tree _p1_pops[1];
2374 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
2375 : : {
2376 : 0 : tree _q180 = _p1_pops[0];
2377 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
2378 : : {
2379 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
2380 : : {
2381 : 0 : {
2382 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
2383 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2384 : : )
2385 : : {
2386 : 0 : {
2387 : 0 : res_ops[0] = captures[0];
2388 : 0 : res_ops[1] = captures[1];
2389 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
2390 : 0 : return true;
2391 : : }
2392 : : }
2393 : : }
2394 : : }
2395 : : }
2396 : : }
2397 : : }
2398 : : }
2399 : : }
2400 : : }
2401 : 0 : if ((_q140 == _q100 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q100, 0) && types_match (_q140, _q100)))
2402 : : {
2403 : 0 : if ((_q141 == _q40 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q40, 0) && types_match (_q141, _q40)))
2404 : : {
2405 : 0 : if (integer_zerop (_q131))
2406 : : {
2407 : 0 : {
2408 : 0 : tree _p1_pops[1];
2409 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
2410 : : {
2411 : 0 : tree _q180 = _p1_pops[0];
2412 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
2413 : : {
2414 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
2415 : : {
2416 : 0 : {
2417 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
2418 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2419 : : )
2420 : : {
2421 : 0 : {
2422 : 0 : res_ops[0] = captures[0];
2423 : 0 : res_ops[1] = captures[1];
2424 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
2425 : 0 : return true;
2426 : : }
2427 : : }
2428 : : }
2429 : : }
2430 : : }
2431 : : }
2432 : : }
2433 : : }
2434 : : }
2435 : : }
2436 : 0 : break;
2437 : : }
2438 : : default:;
2439 : : }
2440 : : }
2441 : : break;
2442 : : default:;
2443 : : }
2444 : : break;
2445 : : }
2446 : : default:;
2447 : : }
2448 : : }
2449 : : break;
2450 : : default:;
2451 : : }
2452 : : }
2453 : : }
2454 : : }
2455 : : }
2456 : : }
2457 : : }
2458 : 0 : break;
2459 : : }
2460 : : default:;
2461 : : }
2462 : : }
2463 : : break;
2464 : : default:;
2465 : : }
2466 : : }
2467 : : }
2468 : 0 : if (integer_zerop (_q31))
2469 : : {
2470 : 0 : switch (TREE_CODE (_q21))
2471 : : {
2472 : 0 : case SSA_NAME:
2473 : 0 : if (gimple *_d4 = get_def (valueize, _q21))
2474 : : {
2475 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2476 : 0 : switch (gimple_assign_rhs_code (_a4))
2477 : : {
2478 : 0 : case LT_EXPR:
2479 : 0 : {
2480 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
2481 : 0 : _q80 = do_valueize (valueize, _q80);
2482 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
2483 : 0 : _q81 = do_valueize (valueize, _q81);
2484 : 0 : switch (TREE_CODE (_q80))
2485 : : {
2486 : 0 : case SSA_NAME:
2487 : 0 : if (gimple *_d5 = get_def (valueize, _q80))
2488 : : {
2489 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2490 : 0 : switch (gimple_assign_rhs_code (_a5))
2491 : : {
2492 : 0 : case BIT_XOR_EXPR:
2493 : 0 : {
2494 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
2495 : 0 : _q90 = do_valueize (valueize, _q90);
2496 : 0 : tree _q91 = gimple_assign_rhs2 (_a5);
2497 : 0 : _q91 = do_valueize (valueize, _q91);
2498 : 0 : if (tree_swap_operands_p (_q90, _q91))
2499 : 0 : std::swap (_q90, _q91);
2500 : 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
2501 : : {
2502 : 0 : {
2503 : 0 : tree _q91_pops[1];
2504 : 0 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
2505 : : {
2506 : 0 : tree _q110 = _q91_pops[0];
2507 : 0 : switch (TREE_CODE (_q110))
2508 : : {
2509 : 0 : case SSA_NAME:
2510 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
2511 : : {
2512 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2513 : 0 : switch (gimple_assign_rhs_code (_a6))
2514 : : {
2515 : 0 : case MINUS_EXPR:
2516 : 0 : {
2517 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
2518 : 0 : _q120 = do_valueize (valueize, _q120);
2519 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
2520 : 0 : _q121 = do_valueize (valueize, _q121);
2521 : 0 : {
2522 : 0 : tree _q120_pops[1];
2523 : 0 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
2524 : : {
2525 : 0 : tree _q130 = _q120_pops[0];
2526 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
2527 : : {
2528 : 0 : {
2529 : 0 : tree _q121_pops[1];
2530 : 0 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
2531 : : {
2532 : 0 : tree _q150 = _q121_pops[0];
2533 : 0 : if ((_q150 == _q41 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q41, 0) && types_match (_q150, _q41)))
2534 : : {
2535 : 0 : if (integer_zerop (_q81))
2536 : : {
2537 : 0 : {
2538 : 0 : tree _p1_pops[1];
2539 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
2540 : : {
2541 : 0 : tree _q180 = _p1_pops[0];
2542 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
2543 : : {
2544 : 0 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
2545 : : {
2546 : 0 : {
2547 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q91 };
2548 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2549 : : )
2550 : : {
2551 : 0 : {
2552 : 0 : res_ops[0] = captures[0];
2553 : 0 : res_ops[1] = captures[1];
2554 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
2555 : 0 : return true;
2556 : : }
2557 : : }
2558 : : }
2559 : : }
2560 : : }
2561 : : }
2562 : : }
2563 : : }
2564 : : }
2565 : : }
2566 : : }
2567 : : }
2568 : : }
2569 : : }
2570 : 0 : break;
2571 : : }
2572 : : default:;
2573 : : }
2574 : : }
2575 : : break;
2576 : : default:;
2577 : : }
2578 : : }
2579 : : }
2580 : : }
2581 : 0 : if ((_q90 == _q41 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q41, 0) && types_match (_q90, _q41)))
2582 : : {
2583 : 0 : {
2584 : 0 : tree _q91_pops[1];
2585 : 0 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
2586 : : {
2587 : 0 : tree _q110 = _q91_pops[0];
2588 : 0 : switch (TREE_CODE (_q110))
2589 : : {
2590 : 0 : case SSA_NAME:
2591 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
2592 : : {
2593 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2594 : 0 : switch (gimple_assign_rhs_code (_a6))
2595 : : {
2596 : 0 : case MINUS_EXPR:
2597 : 0 : {
2598 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
2599 : 0 : _q120 = do_valueize (valueize, _q120);
2600 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
2601 : 0 : _q121 = do_valueize (valueize, _q121);
2602 : 0 : {
2603 : 0 : tree _q120_pops[1];
2604 : 0 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
2605 : : {
2606 : 0 : tree _q130 = _q120_pops[0];
2607 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
2608 : : {
2609 : 0 : {
2610 : 0 : tree _q121_pops[1];
2611 : 0 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
2612 : : {
2613 : 0 : tree _q150 = _q121_pops[0];
2614 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
2615 : : {
2616 : 0 : if (integer_zerop (_q81))
2617 : : {
2618 : 0 : {
2619 : 0 : tree _p1_pops[1];
2620 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
2621 : : {
2622 : 0 : tree _q180 = _p1_pops[0];
2623 : 0 : if ((_q180 == _q41 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q41, 0) && types_match (_q180, _q41)))
2624 : : {
2625 : 0 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
2626 : : {
2627 : 0 : {
2628 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q91 };
2629 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2630 : : )
2631 : : {
2632 : 0 : {
2633 : 0 : res_ops[0] = captures[0];
2634 : 0 : res_ops[1] = captures[1];
2635 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
2636 : 0 : return true;
2637 : : }
2638 : : }
2639 : : }
2640 : : }
2641 : : }
2642 : : }
2643 : : }
2644 : : }
2645 : : }
2646 : : }
2647 : : }
2648 : : }
2649 : : }
2650 : : }
2651 : 0 : break;
2652 : : }
2653 : : default:;
2654 : : }
2655 : : }
2656 : : break;
2657 : : default:;
2658 : : }
2659 : : }
2660 : : }
2661 : : }
2662 : 23838495 : break;
2663 : : }
2664 : : default:;
2665 : : }
2666 : : }
2667 : : break;
2668 : : default:;
2669 : : }
2670 : : break;
2671 : : }
2672 : : default:;
2673 : : }
2674 : : }
2675 : : break;
2676 : : default:;
2677 : : }
2678 : : }
2679 : 23838495 : break;
2680 : : }
2681 : : default:;
2682 : : }
2683 : : }
2684 : : break;
2685 : : default:;
2686 : : }
2687 : : break;
2688 : : }
2689 : : default:;
2690 : : }
2691 : : }
2692 : : break;
2693 : : default:;
2694 : : }
2695 : : }
2696 : : }
2697 : 23838495 : break;
2698 : : }
2699 : 0 : case NE_EXPR:
2700 : 0 : {
2701 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
2702 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
2703 : 0 : || is_gimple_min_invariant (_q20)))
2704 : : {
2705 : 0 : _q20 = do_valueize (valueize, _q20);
2706 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
2707 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
2708 : 0 : || is_gimple_min_invariant (_q21)))
2709 : : {
2710 : 0 : _q21 = do_valueize (valueize, _q21);
2711 : 0 : if (tree_swap_operands_p (_q20, _q21))
2712 : 0 : std::swap (_q20, _q21);
2713 : 0 : switch (TREE_CODE (_q20))
2714 : : {
2715 : 0 : case SSA_NAME:
2716 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
2717 : : {
2718 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2719 : 0 : switch (gimple_assign_rhs_code (_a2))
2720 : : {
2721 : 0 : case IMAGPART_EXPR:
2722 : 0 : {
2723 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
2724 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
2725 : 0 : || is_gimple_min_invariant (_q30)))
2726 : : {
2727 : 0 : _q30 = do_valueize (valueize, _q30);
2728 : 0 : switch (TREE_CODE (_q30))
2729 : : {
2730 : 0 : case SSA_NAME:
2731 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
2732 : : {
2733 : 0 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
2734 : 0 : switch (gimple_call_combined_fn (_c3))
2735 : : {
2736 : 0 : case CFN_SUB_OVERFLOW:
2737 : 0 : if (gimple_call_num_args (_c3) == 2)
2738 : : {
2739 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
2740 : 0 : _q40 = do_valueize (valueize, _q40);
2741 : 0 : tree _q41 = gimple_call_arg (_c3, 1);
2742 : 0 : _q41 = do_valueize (valueize, _q41);
2743 : 0 : if (integer_zerop (_q21))
2744 : : {
2745 : 0 : {
2746 : 0 : tree _p1_pops[1];
2747 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
2748 : : {
2749 : 0 : tree _q80 = _p1_pops[0];
2750 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
2751 : : {
2752 : 0 : switch (TREE_CODE (_p2))
2753 : : {
2754 : 0 : case SSA_NAME:
2755 : 0 : if (gimple *_d4 = get_def (valueize, _p2))
2756 : : {
2757 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2758 : 0 : switch (gimple_assign_rhs_code (_a4))
2759 : : {
2760 : 0 : case REALPART_EXPR:
2761 : 0 : {
2762 : 0 : tree _q100 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
2763 : 0 : if ((TREE_CODE (_q100) == SSA_NAME
2764 : 0 : || is_gimple_min_invariant (_q100)))
2765 : : {
2766 : 0 : _q100 = do_valueize (valueize, _q100);
2767 : 0 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
2768 : : {
2769 : 0 : {
2770 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
2771 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2772 : : )
2773 : : {
2774 : 0 : if (types_match (type, captures[0], captures[1])
2775 : : )
2776 : : {
2777 : 0 : {
2778 : 0 : res_ops[0] = captures[0];
2779 : 0 : res_ops[1] = captures[1];
2780 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 85, __FILE__, __LINE__, false);
2781 : 0 : return true;
2782 : : }
2783 : : }
2784 : : }
2785 : : }
2786 : : }
2787 : : }
2788 : : break;
2789 : : }
2790 : : default:;
2791 : : }
2792 : : }
2793 : : break;
2794 : : default:;
2795 : : }
2796 : : }
2797 : : }
2798 : : }
2799 : : }
2800 : : }
2801 : : break;
2802 : : default:;
2803 : : }
2804 : : }
2805 : : break;
2806 : : default:;
2807 : : }
2808 : : }
2809 : : break;
2810 : : }
2811 : : default:;
2812 : : }
2813 : : }
2814 : : break;
2815 : : default:;
2816 : : }
2817 : : }
2818 : : }
2819 : 23838495 : break;
2820 : : }
2821 : : default:;
2822 : : }
2823 : : break;
2824 : : }
2825 : : default:;
2826 : : }
2827 : 3323418 : else if (gphi *_a1 = dyn_cast <gphi *> (_d1))
2828 : : {
2829 : 3323418 : basic_block _b1 = gimple_bb (_a1);
2830 : 3323418 : tree _p1, _p2;
2831 : 3323418 : gcond *_cond_1 = match_cond_with_binary_phi (_a1, &_p1, &_p2);
2832 : 3323418 : if (_cond_1)
2833 : : {
2834 : 713951 : tree _cond_lhs_1 = gimple_cond_lhs (_cond_1);
2835 : 713951 : tree _cond_rhs_1 = gimple_cond_rhs (_cond_1);
2836 : 713951 : tree _p0 = build2 (gimple_cond_code (_cond_1), boolean_type_node, _cond_lhs_1, _cond_rhs_1);
2837 : 713951 : switch (TREE_CODE (_p0))
2838 : : {
2839 : 0 : case SSA_NAME:
2840 : 0 : if (gimple *_d2 = get_def (valueize, _p0))
2841 : : {
2842 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2843 : 0 : switch (gimple_assign_rhs_code (_a2))
2844 : : {
2845 : 0 : case LT_EXPR:
2846 : 0 : {
2847 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
2848 : 0 : _q20 = do_valueize (valueize, _q20);
2849 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
2850 : 0 : _q21 = do_valueize (valueize, _q21);
2851 : 0 : switch (TREE_CODE (_q20))
2852 : : {
2853 : 0 : case SSA_NAME:
2854 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
2855 : : {
2856 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2857 : 0 : switch (gimple_assign_rhs_code (_a3))
2858 : : {
2859 : 0 : case BIT_AND_EXPR:
2860 : 0 : {
2861 : 0 : tree _q30 = gimple_assign_rhs1 (_a3);
2862 : 0 : _q30 = do_valueize (valueize, _q30);
2863 : 0 : tree _q31 = gimple_assign_rhs2 (_a3);
2864 : 0 : _q31 = do_valueize (valueize, _q31);
2865 : 0 : if (tree_swap_operands_p (_q30, _q31))
2866 : 0 : std::swap (_q30, _q31);
2867 : 0 : switch (TREE_CODE (_q30))
2868 : : {
2869 : 0 : case SSA_NAME:
2870 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
2871 : : {
2872 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2873 : 0 : switch (gimple_assign_rhs_code (_a4))
2874 : : {
2875 : 0 : case BIT_XOR_EXPR:
2876 : 0 : {
2877 : 0 : tree _q40 = gimple_assign_rhs1 (_a4);
2878 : 0 : _q40 = do_valueize (valueize, _q40);
2879 : 0 : tree _q41 = gimple_assign_rhs2 (_a4);
2880 : 0 : _q41 = do_valueize (valueize, _q41);
2881 : 0 : if (tree_swap_operands_p (_q40, _q41))
2882 : 0 : std::swap (_q40, _q41);
2883 : 0 : switch (TREE_CODE (_q31))
2884 : : {
2885 : 0 : case SSA_NAME:
2886 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
2887 : : {
2888 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2889 : 0 : switch (gimple_assign_rhs_code (_a5))
2890 : : {
2891 : 0 : case BIT_XOR_EXPR:
2892 : 0 : {
2893 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
2894 : 0 : _q70 = do_valueize (valueize, _q70);
2895 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
2896 : 0 : _q71 = do_valueize (valueize, _q71);
2897 : 0 : if (tree_swap_operands_p (_q70, _q71))
2898 : 0 : std::swap (_q70, _q71);
2899 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
2900 : : {
2901 : 0 : {
2902 : 0 : tree _q71_pops[1];
2903 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
2904 : : {
2905 : 0 : tree _q90 = _q71_pops[0];
2906 : 0 : switch (TREE_CODE (_q90))
2907 : : {
2908 : 0 : case SSA_NAME:
2909 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
2910 : : {
2911 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2912 : 0 : switch (gimple_assign_rhs_code (_a6))
2913 : : {
2914 : 0 : case MINUS_EXPR:
2915 : 0 : {
2916 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
2917 : 0 : _q100 = do_valueize (valueize, _q100);
2918 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
2919 : 0 : _q101 = do_valueize (valueize, _q101);
2920 : 0 : {
2921 : 0 : tree _q100_pops[1];
2922 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
2923 : : {
2924 : 0 : tree _q110 = _q100_pops[0];
2925 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
2926 : : {
2927 : 0 : {
2928 : 0 : tree _q101_pops[1];
2929 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
2930 : : {
2931 : 0 : tree _q130 = _q101_pops[0];
2932 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
2933 : : {
2934 : 0 : if (integer_zerop (_q21))
2935 : : {
2936 : 0 : {
2937 : 0 : tree _p1_pops[1];
2938 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
2939 : : {
2940 : 0 : tree _q160 = _p1_pops[0];
2941 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
2942 : : {
2943 : 0 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
2944 : : {
2945 : 0 : {
2946 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
2947 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
2948 : : )
2949 : : {
2950 : 0 : {
2951 : 0 : res_ops[0] = captures[0];
2952 : 0 : res_ops[1] = captures[1];
2953 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
2954 : 0 : return true;
2955 : : }
2956 : : }
2957 : : }
2958 : : }
2959 : : }
2960 : : }
2961 : : }
2962 : : }
2963 : : }
2964 : : }
2965 : : }
2966 : : }
2967 : : }
2968 : : }
2969 : 0 : break;
2970 : : }
2971 : : default:;
2972 : : }
2973 : : }
2974 : : break;
2975 : : default:;
2976 : : }
2977 : : }
2978 : : }
2979 : : }
2980 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
2981 : : {
2982 : 0 : {
2983 : 0 : tree _q71_pops[1];
2984 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
2985 : : {
2986 : 0 : tree _q90 = _q71_pops[0];
2987 : 0 : switch (TREE_CODE (_q90))
2988 : : {
2989 : 0 : case SSA_NAME:
2990 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
2991 : : {
2992 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2993 : 0 : switch (gimple_assign_rhs_code (_a6))
2994 : : {
2995 : 0 : case MINUS_EXPR:
2996 : 0 : {
2997 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
2998 : 0 : _q100 = do_valueize (valueize, _q100);
2999 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
3000 : 0 : _q101 = do_valueize (valueize, _q101);
3001 : 0 : {
3002 : 0 : tree _q100_pops[1];
3003 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
3004 : : {
3005 : 0 : tree _q110 = _q100_pops[0];
3006 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
3007 : : {
3008 : 0 : {
3009 : 0 : tree _q101_pops[1];
3010 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
3011 : : {
3012 : 0 : tree _q130 = _q101_pops[0];
3013 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
3014 : : {
3015 : 0 : if (integer_zerop (_q21))
3016 : : {
3017 : 0 : {
3018 : 0 : tree _p1_pops[1];
3019 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
3020 : : {
3021 : 0 : tree _q160 = _p1_pops[0];
3022 : 0 : if ((_q160 == _q41 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q41, 0) && types_match (_q160, _q41)))
3023 : : {
3024 : 0 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
3025 : : {
3026 : 0 : {
3027 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
3028 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3029 : : )
3030 : : {
3031 : 0 : {
3032 : 0 : res_ops[0] = captures[0];
3033 : 0 : res_ops[1] = captures[1];
3034 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
3035 : 0 : return true;
3036 : : }
3037 : : }
3038 : : }
3039 : : }
3040 : : }
3041 : : }
3042 : : }
3043 : : }
3044 : : }
3045 : : }
3046 : : }
3047 : : }
3048 : : }
3049 : : }
3050 : 0 : break;
3051 : : }
3052 : : default:;
3053 : : }
3054 : : }
3055 : : break;
3056 : : default:;
3057 : : }
3058 : : }
3059 : : }
3060 : : }
3061 : 0 : break;
3062 : : }
3063 : : default:;
3064 : : }
3065 : : }
3066 : : break;
3067 : 0 : default:;
3068 : : }
3069 : 0 : {
3070 : 0 : tree _q41_pops[1];
3071 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
3072 : : {
3073 : 0 : tree _q60 = _q41_pops[0];
3074 : 0 : switch (TREE_CODE (_q60))
3075 : : {
3076 : 0 : case SSA_NAME:
3077 : 0 : if (gimple *_d5 = get_def (valueize, _q60))
3078 : : {
3079 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3080 : 0 : switch (gimple_assign_rhs_code (_a5))
3081 : : {
3082 : 0 : case MINUS_EXPR:
3083 : 0 : {
3084 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
3085 : 0 : _q70 = do_valueize (valueize, _q70);
3086 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
3087 : 0 : _q71 = do_valueize (valueize, _q71);
3088 : 0 : {
3089 : 0 : tree _q70_pops[1];
3090 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
3091 : : {
3092 : 0 : tree _q80 = _q70_pops[0];
3093 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
3094 : : {
3095 : 0 : {
3096 : 0 : tree _q71_pops[1];
3097 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
3098 : : {
3099 : 0 : tree _q100 = _q71_pops[0];
3100 : 0 : switch (TREE_CODE (_q31))
3101 : : {
3102 : 0 : case SSA_NAME:
3103 : 0 : if (gimple *_d6 = get_def (valueize, _q31))
3104 : : {
3105 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3106 : 0 : switch (gimple_assign_rhs_code (_a6))
3107 : : {
3108 : 0 : case BIT_XOR_EXPR:
3109 : 0 : {
3110 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
3111 : 0 : _q120 = do_valueize (valueize, _q120);
3112 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
3113 : 0 : _q121 = do_valueize (valueize, _q121);
3114 : 0 : if (tree_swap_operands_p (_q120, _q121))
3115 : 0 : std::swap (_q120, _q121);
3116 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
3117 : : {
3118 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
3119 : : {
3120 : 0 : if (integer_zerop (_q21))
3121 : : {
3122 : 0 : {
3123 : 0 : tree _p1_pops[1];
3124 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
3125 : : {
3126 : 0 : tree _q160 = _p1_pops[0];
3127 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
3128 : : {
3129 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
3130 : : {
3131 : 0 : {
3132 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
3133 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3134 : : )
3135 : : {
3136 : 0 : {
3137 : 0 : res_ops[0] = captures[0];
3138 : 0 : res_ops[1] = captures[1];
3139 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
3140 : 0 : return true;
3141 : : }
3142 : : }
3143 : : }
3144 : : }
3145 : : }
3146 : : }
3147 : : }
3148 : : }
3149 : : }
3150 : : }
3151 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
3152 : : {
3153 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
3154 : : {
3155 : 0 : if (integer_zerop (_q21))
3156 : : {
3157 : 0 : {
3158 : 0 : tree _p1_pops[1];
3159 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
3160 : : {
3161 : 0 : tree _q160 = _p1_pops[0];
3162 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
3163 : : {
3164 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
3165 : : {
3166 : 0 : {
3167 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
3168 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3169 : : )
3170 : : {
3171 : 0 : {
3172 : 0 : res_ops[0] = captures[0];
3173 : 0 : res_ops[1] = captures[1];
3174 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
3175 : 0 : return true;
3176 : : }
3177 : : }
3178 : : }
3179 : : }
3180 : : }
3181 : : }
3182 : : }
3183 : : }
3184 : : }
3185 : : }
3186 : 0 : break;
3187 : : }
3188 : : default:;
3189 : : }
3190 : : }
3191 : : break;
3192 : : default:;
3193 : : }
3194 : : }
3195 : : }
3196 : : }
3197 : : }
3198 : : }
3199 : 0 : break;
3200 : : }
3201 : : default:;
3202 : : }
3203 : : }
3204 : : break;
3205 : : default:;
3206 : : }
3207 : : }
3208 : : }
3209 : 0 : break;
3210 : : }
3211 : : default:;
3212 : : }
3213 : : }
3214 : : break;
3215 : : default:;
3216 : : }
3217 : 3323414 : break;
3218 : : }
3219 : : default:;
3220 : : }
3221 : : }
3222 : : break;
3223 : : default:;
3224 : : }
3225 : : break;
3226 : : }
3227 : 0 : case GE_EXPR:
3228 : 0 : {
3229 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
3230 : 0 : _q20 = do_valueize (valueize, _q20);
3231 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
3232 : 0 : _q21 = do_valueize (valueize, _q21);
3233 : 0 : switch (TREE_CODE (_q20))
3234 : : {
3235 : 0 : case SSA_NAME:
3236 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
3237 : : {
3238 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
3239 : 0 : switch (gimple_assign_rhs_code (_a3))
3240 : : {
3241 : 0 : case BIT_AND_EXPR:
3242 : 0 : {
3243 : 0 : tree _q30 = gimple_assign_rhs1 (_a3);
3244 : 0 : _q30 = do_valueize (valueize, _q30);
3245 : 0 : tree _q31 = gimple_assign_rhs2 (_a3);
3246 : 0 : _q31 = do_valueize (valueize, _q31);
3247 : 0 : if (tree_swap_operands_p (_q30, _q31))
3248 : 0 : std::swap (_q30, _q31);
3249 : 0 : switch (TREE_CODE (_q30))
3250 : : {
3251 : 0 : case SSA_NAME:
3252 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
3253 : : {
3254 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3255 : 0 : switch (gimple_assign_rhs_code (_a4))
3256 : : {
3257 : 0 : case BIT_XOR_EXPR:
3258 : 0 : {
3259 : 0 : tree _q40 = gimple_assign_rhs1 (_a4);
3260 : 0 : _q40 = do_valueize (valueize, _q40);
3261 : 0 : tree _q41 = gimple_assign_rhs2 (_a4);
3262 : 0 : _q41 = do_valueize (valueize, _q41);
3263 : 0 : if (tree_swap_operands_p (_q40, _q41))
3264 : 0 : std::swap (_q40, _q41);
3265 : 0 : switch (TREE_CODE (_q31))
3266 : : {
3267 : 0 : case SSA_NAME:
3268 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
3269 : : {
3270 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3271 : 0 : switch (gimple_assign_rhs_code (_a5))
3272 : : {
3273 : 0 : case BIT_XOR_EXPR:
3274 : 0 : {
3275 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
3276 : 0 : _q70 = do_valueize (valueize, _q70);
3277 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
3278 : 0 : _q71 = do_valueize (valueize, _q71);
3279 : 0 : if (tree_swap_operands_p (_q70, _q71))
3280 : 0 : std::swap (_q70, _q71);
3281 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
3282 : : {
3283 : 0 : {
3284 : 0 : tree _q71_pops[1];
3285 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
3286 : : {
3287 : 0 : tree _q90 = _q71_pops[0];
3288 : 0 : switch (TREE_CODE (_q90))
3289 : : {
3290 : 0 : case SSA_NAME:
3291 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
3292 : : {
3293 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3294 : 0 : switch (gimple_assign_rhs_code (_a6))
3295 : : {
3296 : 0 : case MINUS_EXPR:
3297 : 0 : {
3298 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
3299 : 0 : _q100 = do_valueize (valueize, _q100);
3300 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
3301 : 0 : _q101 = do_valueize (valueize, _q101);
3302 : 0 : {
3303 : 0 : tree _q100_pops[1];
3304 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
3305 : : {
3306 : 0 : tree _q110 = _q100_pops[0];
3307 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
3308 : : {
3309 : 0 : {
3310 : 0 : tree _q101_pops[1];
3311 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
3312 : : {
3313 : 0 : tree _q130 = _q101_pops[0];
3314 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
3315 : : {
3316 : 0 : if (integer_zerop (_q21))
3317 : : {
3318 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
3319 : : {
3320 : 0 : {
3321 : 0 : tree _p2_pops[1];
3322 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
3323 : : {
3324 : 0 : tree _q170 = _p2_pops[0];
3325 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
3326 : : {
3327 : 0 : {
3328 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
3329 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3330 : : )
3331 : : {
3332 : 0 : {
3333 : 0 : res_ops[0] = captures[0];
3334 : 0 : res_ops[1] = captures[1];
3335 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
3336 : 0 : return true;
3337 : : }
3338 : : }
3339 : : }
3340 : : }
3341 : : }
3342 : : }
3343 : : }
3344 : : }
3345 : : }
3346 : : }
3347 : : }
3348 : : }
3349 : : }
3350 : : }
3351 : 0 : break;
3352 : : }
3353 : : default:;
3354 : : }
3355 : : }
3356 : : break;
3357 : : default:;
3358 : : }
3359 : : }
3360 : : }
3361 : : }
3362 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
3363 : : {
3364 : 0 : {
3365 : 0 : tree _q71_pops[1];
3366 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
3367 : : {
3368 : 0 : tree _q90 = _q71_pops[0];
3369 : 0 : switch (TREE_CODE (_q90))
3370 : : {
3371 : 0 : case SSA_NAME:
3372 : 0 : if (gimple *_d6 = get_def (valueize, _q90))
3373 : : {
3374 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3375 : 0 : switch (gimple_assign_rhs_code (_a6))
3376 : : {
3377 : 0 : case MINUS_EXPR:
3378 : 0 : {
3379 : 0 : tree _q100 = gimple_assign_rhs1 (_a6);
3380 : 0 : _q100 = do_valueize (valueize, _q100);
3381 : 0 : tree _q101 = gimple_assign_rhs2 (_a6);
3382 : 0 : _q101 = do_valueize (valueize, _q101);
3383 : 0 : {
3384 : 0 : tree _q100_pops[1];
3385 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
3386 : : {
3387 : 0 : tree _q110 = _q100_pops[0];
3388 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
3389 : : {
3390 : 0 : {
3391 : 0 : tree _q101_pops[1];
3392 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
3393 : : {
3394 : 0 : tree _q130 = _q101_pops[0];
3395 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
3396 : : {
3397 : 0 : if (integer_zerop (_q21))
3398 : : {
3399 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
3400 : : {
3401 : 0 : {
3402 : 0 : tree _p2_pops[1];
3403 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
3404 : : {
3405 : 0 : tree _q170 = _p2_pops[0];
3406 : 0 : if ((_q170 == _q41 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q41, 0) && types_match (_q170, _q41)))
3407 : : {
3408 : 0 : {
3409 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
3410 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3411 : : )
3412 : : {
3413 : 0 : {
3414 : 0 : res_ops[0] = captures[0];
3415 : 0 : res_ops[1] = captures[1];
3416 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
3417 : 0 : return true;
3418 : : }
3419 : : }
3420 : : }
3421 : : }
3422 : : }
3423 : : }
3424 : : }
3425 : : }
3426 : : }
3427 : : }
3428 : : }
3429 : : }
3430 : : }
3431 : : }
3432 : 0 : break;
3433 : : }
3434 : : default:;
3435 : : }
3436 : : }
3437 : : break;
3438 : : default:;
3439 : : }
3440 : : }
3441 : : }
3442 : : }
3443 : 0 : break;
3444 : : }
3445 : : default:;
3446 : : }
3447 : : }
3448 : : break;
3449 : 0 : default:;
3450 : : }
3451 : 0 : {
3452 : 0 : tree _q41_pops[1];
3453 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
3454 : : {
3455 : 0 : tree _q60 = _q41_pops[0];
3456 : 0 : switch (TREE_CODE (_q60))
3457 : : {
3458 : 0 : case SSA_NAME:
3459 : 0 : if (gimple *_d5 = get_def (valueize, _q60))
3460 : : {
3461 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3462 : 0 : switch (gimple_assign_rhs_code (_a5))
3463 : : {
3464 : 0 : case MINUS_EXPR:
3465 : 0 : {
3466 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
3467 : 0 : _q70 = do_valueize (valueize, _q70);
3468 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
3469 : 0 : _q71 = do_valueize (valueize, _q71);
3470 : 0 : {
3471 : 0 : tree _q70_pops[1];
3472 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
3473 : : {
3474 : 0 : tree _q80 = _q70_pops[0];
3475 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
3476 : : {
3477 : 0 : {
3478 : 0 : tree _q71_pops[1];
3479 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
3480 : : {
3481 : 0 : tree _q100 = _q71_pops[0];
3482 : 0 : switch (TREE_CODE (_q31))
3483 : : {
3484 : 0 : case SSA_NAME:
3485 : 0 : if (gimple *_d6 = get_def (valueize, _q31))
3486 : : {
3487 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3488 : 0 : switch (gimple_assign_rhs_code (_a6))
3489 : : {
3490 : 0 : case BIT_XOR_EXPR:
3491 : 0 : {
3492 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
3493 : 0 : _q120 = do_valueize (valueize, _q120);
3494 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
3495 : 0 : _q121 = do_valueize (valueize, _q121);
3496 : 0 : if (tree_swap_operands_p (_q120, _q121))
3497 : 0 : std::swap (_q120, _q121);
3498 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
3499 : : {
3500 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
3501 : : {
3502 : 0 : if (integer_zerop (_q21))
3503 : : {
3504 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
3505 : : {
3506 : 0 : {
3507 : 0 : tree _p2_pops[1];
3508 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
3509 : : {
3510 : 0 : tree _q170 = _p2_pops[0];
3511 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
3512 : : {
3513 : 0 : {
3514 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
3515 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3516 : : )
3517 : : {
3518 : 0 : {
3519 : 0 : res_ops[0] = captures[0];
3520 : 0 : res_ops[1] = captures[1];
3521 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
3522 : 0 : return true;
3523 : : }
3524 : : }
3525 : : }
3526 : : }
3527 : : }
3528 : : }
3529 : : }
3530 : : }
3531 : : }
3532 : : }
3533 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
3534 : : {
3535 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
3536 : : {
3537 : 0 : if (integer_zerop (_q21))
3538 : : {
3539 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
3540 : : {
3541 : 0 : {
3542 : 0 : tree _p2_pops[1];
3543 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
3544 : : {
3545 : 0 : tree _q170 = _p2_pops[0];
3546 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
3547 : : {
3548 : 0 : {
3549 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
3550 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3551 : : )
3552 : : {
3553 : 0 : {
3554 : 0 : res_ops[0] = captures[0];
3555 : 0 : res_ops[1] = captures[1];
3556 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
3557 : 0 : return true;
3558 : : }
3559 : : }
3560 : : }
3561 : : }
3562 : : }
3563 : : }
3564 : : }
3565 : : }
3566 : : }
3567 : : }
3568 : 0 : break;
3569 : : }
3570 : : default:;
3571 : : }
3572 : : }
3573 : : break;
3574 : : default:;
3575 : : }
3576 : : }
3577 : : }
3578 : : }
3579 : : }
3580 : : }
3581 : 0 : break;
3582 : : }
3583 : : default:;
3584 : : }
3585 : : }
3586 : : break;
3587 : : default:;
3588 : : }
3589 : : }
3590 : : }
3591 : 0 : break;
3592 : : }
3593 : : default:;
3594 : : }
3595 : : }
3596 : : break;
3597 : : default:;
3598 : : }
3599 : 3323414 : break;
3600 : : }
3601 : : default:;
3602 : : }
3603 : : }
3604 : : break;
3605 : : default:;
3606 : : }
3607 : : break;
3608 : : }
3609 : 0 : case BIT_AND_EXPR:
3610 : 0 : {
3611 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
3612 : 0 : _q20 = do_valueize (valueize, _q20);
3613 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
3614 : 0 : _q21 = do_valueize (valueize, _q21);
3615 : 0 : if (tree_swap_operands_p (_q20, _q21))
3616 : 0 : std::swap (_q20, _q21);
3617 : 0 : switch (TREE_CODE (_q20))
3618 : : {
3619 : 0 : case SSA_NAME:
3620 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
3621 : : {
3622 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
3623 : 0 : switch (gimple_assign_rhs_code (_a3))
3624 : : {
3625 : 0 : case LT_EXPR:
3626 : 0 : {
3627 : 0 : tree _q30 = gimple_assign_rhs1 (_a3);
3628 : 0 : _q30 = do_valueize (valueize, _q30);
3629 : 0 : tree _q31 = gimple_assign_rhs2 (_a3);
3630 : 0 : _q31 = do_valueize (valueize, _q31);
3631 : 0 : switch (TREE_CODE (_q30))
3632 : : {
3633 : 0 : case SSA_NAME:
3634 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
3635 : : {
3636 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3637 : 0 : switch (gimple_assign_rhs_code (_a4))
3638 : : {
3639 : 0 : case BIT_XOR_EXPR:
3640 : 0 : {
3641 : 0 : tree _q40 = gimple_assign_rhs1 (_a4);
3642 : 0 : _q40 = do_valueize (valueize, _q40);
3643 : 0 : tree _q41 = gimple_assign_rhs2 (_a4);
3644 : 0 : _q41 = do_valueize (valueize, _q41);
3645 : 0 : if (tree_swap_operands_p (_q40, _q41))
3646 : 0 : std::swap (_q40, _q41);
3647 : 0 : {
3648 : 0 : tree _q41_pops[1];
3649 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
3650 : : {
3651 : 0 : tree _q60 = _q41_pops[0];
3652 : 0 : switch (TREE_CODE (_q60))
3653 : : {
3654 : 0 : case SSA_NAME:
3655 : 0 : if (gimple *_d5 = get_def (valueize, _q60))
3656 : : {
3657 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3658 : 0 : switch (gimple_assign_rhs_code (_a5))
3659 : : {
3660 : 0 : case MINUS_EXPR:
3661 : 0 : {
3662 : 0 : tree _q70 = gimple_assign_rhs1 (_a5);
3663 : 0 : _q70 = do_valueize (valueize, _q70);
3664 : 0 : tree _q71 = gimple_assign_rhs2 (_a5);
3665 : 0 : _q71 = do_valueize (valueize, _q71);
3666 : 0 : {
3667 : 0 : tree _q70_pops[1];
3668 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
3669 : : {
3670 : 0 : tree _q80 = _q70_pops[0];
3671 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
3672 : : {
3673 : 0 : {
3674 : 0 : tree _q71_pops[1];
3675 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
3676 : : {
3677 : 0 : tree _q100 = _q71_pops[0];
3678 : 0 : if (integer_zerop (_q31))
3679 : : {
3680 : 0 : switch (TREE_CODE (_q21))
3681 : : {
3682 : 0 : case SSA_NAME:
3683 : 0 : if (gimple *_d6 = get_def (valueize, _q21))
3684 : : {
3685 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3686 : 0 : switch (gimple_assign_rhs_code (_a6))
3687 : : {
3688 : 0 : case LT_EXPR:
3689 : 0 : {
3690 : 0 : tree _q130 = gimple_assign_rhs1 (_a6);
3691 : 0 : _q130 = do_valueize (valueize, _q130);
3692 : 0 : tree _q131 = gimple_assign_rhs2 (_a6);
3693 : 0 : _q131 = do_valueize (valueize, _q131);
3694 : 0 : switch (TREE_CODE (_q130))
3695 : : {
3696 : 0 : case SSA_NAME:
3697 : 0 : if (gimple *_d7 = get_def (valueize, _q130))
3698 : : {
3699 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3700 : 0 : switch (gimple_assign_rhs_code (_a7))
3701 : : {
3702 : 0 : case BIT_XOR_EXPR:
3703 : 0 : {
3704 : 0 : tree _q140 = gimple_assign_rhs1 (_a7);
3705 : 0 : _q140 = do_valueize (valueize, _q140);
3706 : 0 : tree _q141 = gimple_assign_rhs2 (_a7);
3707 : 0 : _q141 = do_valueize (valueize, _q141);
3708 : 0 : if (tree_swap_operands_p (_q140, _q141))
3709 : 0 : std::swap (_q140, _q141);
3710 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
3711 : : {
3712 : 0 : if ((_q141 == _q100 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q100, 0) && types_match (_q141, _q100)))
3713 : : {
3714 : 0 : if (integer_zerop (_q131))
3715 : : {
3716 : 0 : {
3717 : 0 : tree _p1_pops[1];
3718 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
3719 : : {
3720 : 0 : tree _q180 = _p1_pops[0];
3721 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
3722 : : {
3723 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
3724 : : {
3725 : 0 : {
3726 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
3727 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3728 : : )
3729 : : {
3730 : 0 : {
3731 : 0 : res_ops[0] = captures[0];
3732 : 0 : res_ops[1] = captures[1];
3733 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
3734 : 0 : return true;
3735 : : }
3736 : : }
3737 : : }
3738 : : }
3739 : : }
3740 : : }
3741 : : }
3742 : : }
3743 : : }
3744 : : }
3745 : 0 : if ((_q140 == _q100 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q100, 0) && types_match (_q140, _q100)))
3746 : : {
3747 : 0 : if ((_q141 == _q40 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q40, 0) && types_match (_q141, _q40)))
3748 : : {
3749 : 0 : if (integer_zerop (_q131))
3750 : : {
3751 : 0 : {
3752 : 0 : tree _p1_pops[1];
3753 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
3754 : : {
3755 : 0 : tree _q180 = _p1_pops[0];
3756 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
3757 : : {
3758 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
3759 : : {
3760 : 0 : {
3761 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
3762 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3763 : : )
3764 : : {
3765 : 0 : {
3766 : 0 : res_ops[0] = captures[0];
3767 : 0 : res_ops[1] = captures[1];
3768 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
3769 : 0 : return true;
3770 : : }
3771 : : }
3772 : : }
3773 : : }
3774 : : }
3775 : : }
3776 : : }
3777 : : }
3778 : : }
3779 : : }
3780 : 0 : break;
3781 : : }
3782 : : default:;
3783 : : }
3784 : : }
3785 : : break;
3786 : : default:;
3787 : : }
3788 : : break;
3789 : : }
3790 : : default:;
3791 : : }
3792 : : }
3793 : : break;
3794 : : default:;
3795 : : }
3796 : : }
3797 : : }
3798 : : }
3799 : : }
3800 : : }
3801 : : }
3802 : 0 : break;
3803 : : }
3804 : : default:;
3805 : : }
3806 : : }
3807 : : break;
3808 : : default:;
3809 : : }
3810 : : }
3811 : : }
3812 : 0 : if (integer_zerop (_q31))
3813 : : {
3814 : 0 : switch (TREE_CODE (_q21))
3815 : : {
3816 : 0 : case SSA_NAME:
3817 : 0 : if (gimple *_d5 = get_def (valueize, _q21))
3818 : : {
3819 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3820 : 0 : switch (gimple_assign_rhs_code (_a5))
3821 : : {
3822 : 0 : case LT_EXPR:
3823 : 0 : {
3824 : 0 : tree _q80 = gimple_assign_rhs1 (_a5);
3825 : 0 : _q80 = do_valueize (valueize, _q80);
3826 : 0 : tree _q81 = gimple_assign_rhs2 (_a5);
3827 : 0 : _q81 = do_valueize (valueize, _q81);
3828 : 0 : switch (TREE_CODE (_q80))
3829 : : {
3830 : 0 : case SSA_NAME:
3831 : 0 : if (gimple *_d6 = get_def (valueize, _q80))
3832 : : {
3833 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
3834 : 0 : switch (gimple_assign_rhs_code (_a6))
3835 : : {
3836 : 0 : case BIT_XOR_EXPR:
3837 : 0 : {
3838 : 0 : tree _q90 = gimple_assign_rhs1 (_a6);
3839 : 0 : _q90 = do_valueize (valueize, _q90);
3840 : 0 : tree _q91 = gimple_assign_rhs2 (_a6);
3841 : 0 : _q91 = do_valueize (valueize, _q91);
3842 : 0 : if (tree_swap_operands_p (_q90, _q91))
3843 : 0 : std::swap (_q90, _q91);
3844 : 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
3845 : : {
3846 : 0 : {
3847 : 0 : tree _q91_pops[1];
3848 : 0 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
3849 : : {
3850 : 0 : tree _q110 = _q91_pops[0];
3851 : 0 : switch (TREE_CODE (_q110))
3852 : : {
3853 : 0 : case SSA_NAME:
3854 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
3855 : : {
3856 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3857 : 0 : switch (gimple_assign_rhs_code (_a7))
3858 : : {
3859 : 0 : case MINUS_EXPR:
3860 : 0 : {
3861 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
3862 : 0 : _q120 = do_valueize (valueize, _q120);
3863 : 0 : tree _q121 = gimple_assign_rhs2 (_a7);
3864 : 0 : _q121 = do_valueize (valueize, _q121);
3865 : 0 : {
3866 : 0 : tree _q120_pops[1];
3867 : 0 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
3868 : : {
3869 : 0 : tree _q130 = _q120_pops[0];
3870 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
3871 : : {
3872 : 0 : {
3873 : 0 : tree _q121_pops[1];
3874 : 0 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
3875 : : {
3876 : 0 : tree _q150 = _q121_pops[0];
3877 : 0 : if ((_q150 == _q41 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q41, 0) && types_match (_q150, _q41)))
3878 : : {
3879 : 0 : if (integer_zerop (_q81))
3880 : : {
3881 : 0 : {
3882 : 0 : tree _p1_pops[1];
3883 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
3884 : : {
3885 : 0 : tree _q180 = _p1_pops[0];
3886 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
3887 : : {
3888 : 0 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
3889 : : {
3890 : 0 : {
3891 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q91 };
3892 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3893 : : )
3894 : : {
3895 : 0 : {
3896 : 0 : res_ops[0] = captures[0];
3897 : 0 : res_ops[1] = captures[1];
3898 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
3899 : 0 : return true;
3900 : : }
3901 : : }
3902 : : }
3903 : : }
3904 : : }
3905 : : }
3906 : : }
3907 : : }
3908 : : }
3909 : : }
3910 : : }
3911 : : }
3912 : : }
3913 : : }
3914 : 0 : break;
3915 : : }
3916 : : default:;
3917 : : }
3918 : : }
3919 : : break;
3920 : : default:;
3921 : : }
3922 : : }
3923 : : }
3924 : : }
3925 : 0 : if ((_q90 == _q41 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q41, 0) && types_match (_q90, _q41)))
3926 : : {
3927 : 0 : {
3928 : 0 : tree _q91_pops[1];
3929 : 0 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
3930 : : {
3931 : 0 : tree _q110 = _q91_pops[0];
3932 : 0 : switch (TREE_CODE (_q110))
3933 : : {
3934 : 0 : case SSA_NAME:
3935 : 0 : if (gimple *_d7 = get_def (valueize, _q110))
3936 : : {
3937 : 0 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
3938 : 0 : switch (gimple_assign_rhs_code (_a7))
3939 : : {
3940 : 0 : case MINUS_EXPR:
3941 : 0 : {
3942 : 0 : tree _q120 = gimple_assign_rhs1 (_a7);
3943 : 0 : _q120 = do_valueize (valueize, _q120);
3944 : 0 : tree _q121 = gimple_assign_rhs2 (_a7);
3945 : 0 : _q121 = do_valueize (valueize, _q121);
3946 : 0 : {
3947 : 0 : tree _q120_pops[1];
3948 : 0 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
3949 : : {
3950 : 0 : tree _q130 = _q120_pops[0];
3951 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
3952 : : {
3953 : 0 : {
3954 : 0 : tree _q121_pops[1];
3955 : 0 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
3956 : : {
3957 : 0 : tree _q150 = _q121_pops[0];
3958 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
3959 : : {
3960 : 0 : if (integer_zerop (_q81))
3961 : : {
3962 : 0 : {
3963 : 0 : tree _p1_pops[1];
3964 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
3965 : : {
3966 : 0 : tree _q180 = _p1_pops[0];
3967 : 0 : if ((_q180 == _q41 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q41, 0) && types_match (_q180, _q41)))
3968 : : {
3969 : 0 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
3970 : : {
3971 : 0 : {
3972 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q91 };
3973 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
3974 : : )
3975 : : {
3976 : 0 : {
3977 : 0 : res_ops[0] = captures[0];
3978 : 0 : res_ops[1] = captures[1];
3979 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
3980 : 0 : return true;
3981 : : }
3982 : : }
3983 : : }
3984 : : }
3985 : : }
3986 : : }
3987 : : }
3988 : : }
3989 : : }
3990 : : }
3991 : : }
3992 : : }
3993 : : }
3994 : : }
3995 : 0 : break;
3996 : : }
3997 : : default:;
3998 : : }
3999 : : }
4000 : : break;
4001 : : default:;
4002 : : }
4003 : : }
4004 : : }
4005 : : }
4006 : 3323414 : break;
4007 : : }
4008 : : default:;
4009 : : }
4010 : : }
4011 : : break;
4012 : : default:;
4013 : : }
4014 : : break;
4015 : : }
4016 : : default:;
4017 : : }
4018 : : }
4019 : : break;
4020 : : default:;
4021 : : }
4022 : : }
4023 : 3323414 : break;
4024 : : }
4025 : : default:;
4026 : : }
4027 : : }
4028 : : break;
4029 : : default:;
4030 : : }
4031 : : break;
4032 : : }
4033 : : default:;
4034 : : }
4035 : : }
4036 : : break;
4037 : : default:;
4038 : : }
4039 : 3323414 : break;
4040 : : }
4041 : 0 : case NE_EXPR:
4042 : 0 : {
4043 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
4044 : 0 : _q20 = do_valueize (valueize, _q20);
4045 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
4046 : 0 : _q21 = do_valueize (valueize, _q21);
4047 : 0 : if (tree_swap_operands_p (_q20, _q21))
4048 : 0 : std::swap (_q20, _q21);
4049 : 0 : switch (TREE_CODE (_q20))
4050 : : {
4051 : 0 : case SSA_NAME:
4052 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
4053 : : {
4054 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
4055 : 0 : switch (gimple_assign_rhs_code (_a3))
4056 : : {
4057 : 0 : case IMAGPART_EXPR:
4058 : 0 : {
4059 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a3), 0);
4060 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
4061 : 0 : || is_gimple_min_invariant (_q30)))
4062 : : {
4063 : 0 : _q30 = do_valueize (valueize, _q30);
4064 : 0 : switch (TREE_CODE (_q30))
4065 : : {
4066 : 0 : case SSA_NAME:
4067 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
4068 : : {
4069 : 0 : if (gcall *_c4 = dyn_cast <gcall *> (_d4))
4070 : 0 : switch (gimple_call_combined_fn (_c4))
4071 : : {
4072 : 0 : case CFN_SUB_OVERFLOW:
4073 : 0 : if (gimple_call_num_args (_c4) == 2)
4074 : : {
4075 : 0 : tree _q40 = gimple_call_arg (_c4, 0);
4076 : 0 : _q40 = do_valueize (valueize, _q40);
4077 : 0 : tree _q41 = gimple_call_arg (_c4, 1);
4078 : 0 : _q41 = do_valueize (valueize, _q41);
4079 : 0 : if (integer_zerop (_q21))
4080 : : {
4081 : 0 : {
4082 : 0 : tree _p1_pops[1];
4083 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
4084 : : {
4085 : 0 : tree _q80 = _p1_pops[0];
4086 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4087 : : {
4088 : 0 : switch (TREE_CODE (_p2))
4089 : : {
4090 : 0 : case SSA_NAME:
4091 : 0 : if (gimple *_d5 = get_def (valueize, _p2))
4092 : : {
4093 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4094 : 0 : switch (gimple_assign_rhs_code (_a5))
4095 : : {
4096 : 0 : case REALPART_EXPR:
4097 : 0 : {
4098 : 0 : tree _q100 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
4099 : 0 : if ((TREE_CODE (_q100) == SSA_NAME
4100 : 0 : || is_gimple_min_invariant (_q100)))
4101 : : {
4102 : 0 : _q100 = do_valueize (valueize, _q100);
4103 : 0 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
4104 : : {
4105 : 0 : {
4106 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
4107 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4108 : : )
4109 : : {
4110 : 0 : if (types_match (type, captures[0], captures[1])
4111 : : )
4112 : : {
4113 : 0 : {
4114 : 0 : res_ops[0] = captures[0];
4115 : 0 : res_ops[1] = captures[1];
4116 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 85, __FILE__, __LINE__, false);
4117 : 0 : return true;
4118 : : }
4119 : : }
4120 : : }
4121 : : }
4122 : : }
4123 : : }
4124 : : break;
4125 : : }
4126 : : default:;
4127 : : }
4128 : : }
4129 : : break;
4130 : : default:;
4131 : : }
4132 : : }
4133 : : }
4134 : : }
4135 : : }
4136 : : }
4137 : : break;
4138 : : default:;
4139 : : }
4140 : : }
4141 : : break;
4142 : : default:;
4143 : : }
4144 : : }
4145 : : break;
4146 : : }
4147 : : default:;
4148 : : }
4149 : : }
4150 : : break;
4151 : : default:;
4152 : : }
4153 : 3323414 : break;
4154 : : }
4155 : : default:;
4156 : : }
4157 : : }
4158 : : break;
4159 : 42457 : case LT_EXPR:
4160 : 42457 : {
4161 : 42457 : tree _q20 = TREE_OPERAND (_p0, 0);
4162 : 42457 : if ((TREE_CODE (_q20) == SSA_NAME
4163 : 42457 : || is_gimple_min_invariant (_q20)))
4164 : : {
4165 : 42457 : _q20 = do_valueize (valueize, _q20);
4166 : 42457 : tree _q21 = TREE_OPERAND (_p0, 1);
4167 : 42457 : if ((TREE_CODE (_q21) == SSA_NAME
4168 : 42457 : || is_gimple_min_invariant (_q21)))
4169 : : {
4170 : 42457 : _q21 = do_valueize (valueize, _q21);
4171 : 42457 : switch (TREE_CODE (_q20))
4172 : : {
4173 : 42457 : case SSA_NAME:
4174 : 42457 : if (gimple *_d2 = get_def (valueize, _q20))
4175 : : {
4176 : 42457 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
4177 : 34435 : switch (gimple_assign_rhs_code (_a2))
4178 : : {
4179 : 34 : case BIT_AND_EXPR:
4180 : 34 : {
4181 : 34 : tree _q30 = gimple_assign_rhs1 (_a2);
4182 : 34 : _q30 = do_valueize (valueize, _q30);
4183 : 34 : tree _q31 = gimple_assign_rhs2 (_a2);
4184 : 34 : _q31 = do_valueize (valueize, _q31);
4185 : 34 : if (tree_swap_operands_p (_q30, _q31))
4186 : 0 : std::swap (_q30, _q31);
4187 : 34 : switch (TREE_CODE (_q30))
4188 : : {
4189 : 34 : case SSA_NAME:
4190 : 34 : if (gimple *_d3 = get_def (valueize, _q30))
4191 : : {
4192 : 34 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
4193 : 43 : switch (gimple_assign_rhs_code (_a3))
4194 : : {
4195 : 6 : case BIT_XOR_EXPR:
4196 : 6 : {
4197 : 6 : tree _q40 = gimple_assign_rhs1 (_a3);
4198 : 6 : _q40 = do_valueize (valueize, _q40);
4199 : 6 : tree _q41 = gimple_assign_rhs2 (_a3);
4200 : 6 : _q41 = do_valueize (valueize, _q41);
4201 : 6 : if (tree_swap_operands_p (_q40, _q41))
4202 : 0 : std::swap (_q40, _q41);
4203 : 6 : switch (TREE_CODE (_q31))
4204 : : {
4205 : 6 : case SSA_NAME:
4206 : 6 : if (gimple *_d4 = get_def (valueize, _q31))
4207 : : {
4208 : 6 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
4209 : 6 : switch (gimple_assign_rhs_code (_a4))
4210 : : {
4211 : 4 : case BIT_XOR_EXPR:
4212 : 4 : {
4213 : 4 : tree _q70 = gimple_assign_rhs1 (_a4);
4214 : 4 : _q70 = do_valueize (valueize, _q70);
4215 : 4 : tree _q71 = gimple_assign_rhs2 (_a4);
4216 : 4 : _q71 = do_valueize (valueize, _q71);
4217 : 4 : if (tree_swap_operands_p (_q70, _q71))
4218 : 0 : std::swap (_q70, _q71);
4219 : 4 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4220 : : {
4221 : 4 : {
4222 : 4 : tree _q71_pops[1];
4223 : 4 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
4224 : : {
4225 : 4 : tree _q90 = _q71_pops[0];
4226 : 4 : switch (TREE_CODE (_q90))
4227 : : {
4228 : 4 : case SSA_NAME:
4229 : 4 : if (gimple *_d5 = get_def (valueize, _q90))
4230 : : {
4231 : 4 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4232 : 4 : switch (gimple_assign_rhs_code (_a5))
4233 : : {
4234 : 4 : case MINUS_EXPR:
4235 : 4 : {
4236 : 4 : tree _q100 = gimple_assign_rhs1 (_a5);
4237 : 4 : _q100 = do_valueize (valueize, _q100);
4238 : 4 : tree _q101 = gimple_assign_rhs2 (_a5);
4239 : 4 : _q101 = do_valueize (valueize, _q101);
4240 : 4 : {
4241 : 4 : tree _q100_pops[1];
4242 : 4 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
4243 : : {
4244 : 4 : tree _q110 = _q100_pops[0];
4245 : 4 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
4246 : : {
4247 : 4 : {
4248 : 4 : tree _q101_pops[1];
4249 : 4 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
4250 : : {
4251 : 4 : tree _q130 = _q101_pops[0];
4252 : 4 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
4253 : : {
4254 : 4 : if (integer_zerop (_q21))
4255 : : {
4256 : 4 : {
4257 : 4 : tree _p1_pops[1];
4258 : 4 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
4259 : : {
4260 : 4 : tree _q160 = _p1_pops[0];
4261 : 4 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
4262 : : {
4263 : 4 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
4264 : : {
4265 : 4 : {
4266 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
4267 : 4 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4268 : : )
4269 : : {
4270 : 4 : {
4271 : 4 : res_ops[0] = captures[0];
4272 : 4 : res_ops[1] = captures[1];
4273 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
4274 : 4 : return true;
4275 : : }
4276 : : }
4277 : : }
4278 : : }
4279 : : }
4280 : : }
4281 : : }
4282 : : }
4283 : : }
4284 : : }
4285 : : }
4286 : : }
4287 : : }
4288 : : }
4289 : 0 : break;
4290 : : }
4291 : : default:;
4292 : : }
4293 : : }
4294 : : break;
4295 : : default:;
4296 : : }
4297 : : }
4298 : : }
4299 : : }
4300 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
4301 : : {
4302 : 0 : {
4303 : 0 : tree _q71_pops[1];
4304 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
4305 : : {
4306 : 0 : tree _q90 = _q71_pops[0];
4307 : 0 : switch (TREE_CODE (_q90))
4308 : : {
4309 : 0 : case SSA_NAME:
4310 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
4311 : : {
4312 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4313 : 0 : switch (gimple_assign_rhs_code (_a5))
4314 : : {
4315 : 0 : case MINUS_EXPR:
4316 : 0 : {
4317 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
4318 : 0 : _q100 = do_valueize (valueize, _q100);
4319 : 0 : tree _q101 = gimple_assign_rhs2 (_a5);
4320 : 0 : _q101 = do_valueize (valueize, _q101);
4321 : 0 : {
4322 : 0 : tree _q100_pops[1];
4323 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
4324 : : {
4325 : 0 : tree _q110 = _q100_pops[0];
4326 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
4327 : : {
4328 : 0 : {
4329 : 0 : tree _q101_pops[1];
4330 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
4331 : : {
4332 : 0 : tree _q130 = _q101_pops[0];
4333 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
4334 : : {
4335 : 0 : if (integer_zerop (_q21))
4336 : : {
4337 : 0 : {
4338 : 0 : tree _p1_pops[1];
4339 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
4340 : : {
4341 : 0 : tree _q160 = _p1_pops[0];
4342 : 0 : if ((_q160 == _q41 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q41, 0) && types_match (_q160, _q41)))
4343 : : {
4344 : 0 : if ((_p2 == _q71 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q71, 0) && types_match (_p2, _q71)))
4345 : : {
4346 : 0 : {
4347 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
4348 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4349 : : )
4350 : : {
4351 : 0 : {
4352 : 0 : res_ops[0] = captures[0];
4353 : 0 : res_ops[1] = captures[1];
4354 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
4355 : 0 : return true;
4356 : : }
4357 : : }
4358 : : }
4359 : : }
4360 : : }
4361 : : }
4362 : : }
4363 : : }
4364 : : }
4365 : : }
4366 : : }
4367 : : }
4368 : : }
4369 : : }
4370 : 0 : break;
4371 : : }
4372 : : default:;
4373 : : }
4374 : : }
4375 : : break;
4376 : : default:;
4377 : : }
4378 : : }
4379 : : }
4380 : : }
4381 : 2 : break;
4382 : : }
4383 : : default:;
4384 : : }
4385 : : }
4386 : : break;
4387 : 2 : default:;
4388 : : }
4389 : 2 : {
4390 : 2 : tree _q41_pops[1];
4391 : 2 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
4392 : : {
4393 : 2 : tree _q60 = _q41_pops[0];
4394 : 2 : switch (TREE_CODE (_q60))
4395 : : {
4396 : 2 : case SSA_NAME:
4397 : 2 : if (gimple *_d4 = get_def (valueize, _q60))
4398 : : {
4399 : 2 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
4400 : 2 : switch (gimple_assign_rhs_code (_a4))
4401 : : {
4402 : 0 : case MINUS_EXPR:
4403 : 0 : {
4404 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
4405 : 0 : _q70 = do_valueize (valueize, _q70);
4406 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
4407 : 0 : _q71 = do_valueize (valueize, _q71);
4408 : 0 : {
4409 : 0 : tree _q70_pops[1];
4410 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
4411 : : {
4412 : 0 : tree _q80 = _q70_pops[0];
4413 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4414 : : {
4415 : 0 : {
4416 : 0 : tree _q71_pops[1];
4417 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
4418 : : {
4419 : 0 : tree _q100 = _q71_pops[0];
4420 : 0 : switch (TREE_CODE (_q31))
4421 : : {
4422 : 0 : case SSA_NAME:
4423 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
4424 : : {
4425 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4426 : 0 : switch (gimple_assign_rhs_code (_a5))
4427 : : {
4428 : 0 : case BIT_XOR_EXPR:
4429 : 0 : {
4430 : 0 : tree _q120 = gimple_assign_rhs1 (_a5);
4431 : 0 : _q120 = do_valueize (valueize, _q120);
4432 : 0 : tree _q121 = gimple_assign_rhs2 (_a5);
4433 : 0 : _q121 = do_valueize (valueize, _q121);
4434 : 0 : if (tree_swap_operands_p (_q120, _q121))
4435 : 0 : std::swap (_q120, _q121);
4436 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
4437 : : {
4438 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
4439 : : {
4440 : 0 : if (integer_zerop (_q21))
4441 : : {
4442 : 0 : {
4443 : 0 : tree _p1_pops[1];
4444 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
4445 : : {
4446 : 0 : tree _q160 = _p1_pops[0];
4447 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
4448 : : {
4449 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
4450 : : {
4451 : 0 : {
4452 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
4453 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4454 : : )
4455 : : {
4456 : 0 : {
4457 : 0 : res_ops[0] = captures[0];
4458 : 0 : res_ops[1] = captures[1];
4459 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
4460 : 0 : return true;
4461 : : }
4462 : : }
4463 : : }
4464 : : }
4465 : : }
4466 : : }
4467 : : }
4468 : : }
4469 : : }
4470 : : }
4471 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
4472 : : {
4473 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
4474 : : {
4475 : 0 : if (integer_zerop (_q21))
4476 : : {
4477 : 0 : {
4478 : 0 : tree _p1_pops[1];
4479 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
4480 : : {
4481 : 0 : tree _q160 = _p1_pops[0];
4482 : 0 : if ((_q160 == _q40 && ! TREE_SIDE_EFFECTS (_q160)) || (operand_equal_p (_q160, _q40, 0) && types_match (_q160, _q40)))
4483 : : {
4484 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
4485 : : {
4486 : 0 : {
4487 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
4488 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4489 : : )
4490 : : {
4491 : 0 : {
4492 : 0 : res_ops[0] = captures[0];
4493 : 0 : res_ops[1] = captures[1];
4494 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 82, __FILE__, __LINE__, false);
4495 : 0 : return true;
4496 : : }
4497 : : }
4498 : : }
4499 : : }
4500 : : }
4501 : : }
4502 : : }
4503 : : }
4504 : : }
4505 : : }
4506 : 0 : break;
4507 : : }
4508 : : default:;
4509 : : }
4510 : : }
4511 : : break;
4512 : : default:;
4513 : : }
4514 : : }
4515 : : }
4516 : : }
4517 : : }
4518 : : }
4519 : 0 : break;
4520 : : }
4521 : : default:;
4522 : : }
4523 : : }
4524 : : break;
4525 : : default:;
4526 : : }
4527 : : }
4528 : : }
4529 : 2 : break;
4530 : : }
4531 : : default:;
4532 : : }
4533 : : }
4534 : : break;
4535 : : default:;
4536 : : }
4537 : 3323414 : break;
4538 : : }
4539 : : default:;
4540 : : }
4541 : : }
4542 : : break;
4543 : : default:;
4544 : : }
4545 : : }
4546 : : }
4547 : : break;
4548 : : }
4549 : 8542 : case GE_EXPR:
4550 : 8542 : {
4551 : 8542 : tree _q20 = TREE_OPERAND (_p0, 0);
4552 : 8542 : if ((TREE_CODE (_q20) == SSA_NAME
4553 : 8542 : || is_gimple_min_invariant (_q20)))
4554 : : {
4555 : 8542 : _q20 = do_valueize (valueize, _q20);
4556 : 8542 : tree _q21 = TREE_OPERAND (_p0, 1);
4557 : 8542 : if ((TREE_CODE (_q21) == SSA_NAME
4558 : 8542 : || is_gimple_min_invariant (_q21)))
4559 : : {
4560 : 8542 : _q21 = do_valueize (valueize, _q21);
4561 : 8542 : switch (TREE_CODE (_q20))
4562 : : {
4563 : 8536 : case SSA_NAME:
4564 : 8536 : if (gimple *_d2 = get_def (valueize, _q20))
4565 : : {
4566 : 8536 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
4567 : 9157 : switch (gimple_assign_rhs_code (_a2))
4568 : : {
4569 : 17 : case BIT_AND_EXPR:
4570 : 17 : {
4571 : 17 : tree _q30 = gimple_assign_rhs1 (_a2);
4572 : 17 : _q30 = do_valueize (valueize, _q30);
4573 : 17 : tree _q31 = gimple_assign_rhs2 (_a2);
4574 : 17 : _q31 = do_valueize (valueize, _q31);
4575 : 17 : if (tree_swap_operands_p (_q30, _q31))
4576 : 0 : std::swap (_q30, _q31);
4577 : 17 : switch (TREE_CODE (_q30))
4578 : : {
4579 : 17 : case SSA_NAME:
4580 : 17 : if (gimple *_d3 = get_def (valueize, _q30))
4581 : : {
4582 : 17 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
4583 : 17 : switch (gimple_assign_rhs_code (_a3))
4584 : : {
4585 : 0 : case BIT_XOR_EXPR:
4586 : 0 : {
4587 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
4588 : 0 : _q40 = do_valueize (valueize, _q40);
4589 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
4590 : 0 : _q41 = do_valueize (valueize, _q41);
4591 : 0 : if (tree_swap_operands_p (_q40, _q41))
4592 : 0 : std::swap (_q40, _q41);
4593 : 0 : switch (TREE_CODE (_q31))
4594 : : {
4595 : 0 : case SSA_NAME:
4596 : 0 : if (gimple *_d4 = get_def (valueize, _q31))
4597 : : {
4598 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
4599 : 0 : switch (gimple_assign_rhs_code (_a4))
4600 : : {
4601 : 0 : case BIT_XOR_EXPR:
4602 : 0 : {
4603 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
4604 : 0 : _q70 = do_valueize (valueize, _q70);
4605 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
4606 : 0 : _q71 = do_valueize (valueize, _q71);
4607 : 0 : if (tree_swap_operands_p (_q70, _q71))
4608 : 0 : std::swap (_q70, _q71);
4609 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4610 : : {
4611 : 0 : {
4612 : 0 : tree _q71_pops[1];
4613 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
4614 : : {
4615 : 0 : tree _q90 = _q71_pops[0];
4616 : 0 : switch (TREE_CODE (_q90))
4617 : : {
4618 : 0 : case SSA_NAME:
4619 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
4620 : : {
4621 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4622 : 0 : switch (gimple_assign_rhs_code (_a5))
4623 : : {
4624 : 0 : case MINUS_EXPR:
4625 : 0 : {
4626 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
4627 : 0 : _q100 = do_valueize (valueize, _q100);
4628 : 0 : tree _q101 = gimple_assign_rhs2 (_a5);
4629 : 0 : _q101 = do_valueize (valueize, _q101);
4630 : 0 : {
4631 : 0 : tree _q100_pops[1];
4632 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
4633 : : {
4634 : 0 : tree _q110 = _q100_pops[0];
4635 : 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
4636 : : {
4637 : 0 : {
4638 : 0 : tree _q101_pops[1];
4639 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
4640 : : {
4641 : 0 : tree _q130 = _q101_pops[0];
4642 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
4643 : : {
4644 : 0 : if (integer_zerop (_q21))
4645 : : {
4646 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
4647 : : {
4648 : 0 : {
4649 : 0 : tree _p2_pops[1];
4650 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
4651 : : {
4652 : 0 : tree _q170 = _p2_pops[0];
4653 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
4654 : : {
4655 : 0 : {
4656 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q71 };
4657 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4658 : : )
4659 : : {
4660 : 0 : {
4661 : 0 : res_ops[0] = captures[0];
4662 : 0 : res_ops[1] = captures[1];
4663 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
4664 : 0 : return true;
4665 : : }
4666 : : }
4667 : : }
4668 : : }
4669 : : }
4670 : : }
4671 : : }
4672 : : }
4673 : : }
4674 : : }
4675 : : }
4676 : : }
4677 : : }
4678 : : }
4679 : 0 : break;
4680 : : }
4681 : : default:;
4682 : : }
4683 : : }
4684 : : break;
4685 : : default:;
4686 : : }
4687 : : }
4688 : : }
4689 : : }
4690 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
4691 : : {
4692 : 0 : {
4693 : 0 : tree _q71_pops[1];
4694 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
4695 : : {
4696 : 0 : tree _q90 = _q71_pops[0];
4697 : 0 : switch (TREE_CODE (_q90))
4698 : : {
4699 : 0 : case SSA_NAME:
4700 : 0 : if (gimple *_d5 = get_def (valueize, _q90))
4701 : : {
4702 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4703 : 0 : switch (gimple_assign_rhs_code (_a5))
4704 : : {
4705 : 0 : case MINUS_EXPR:
4706 : 0 : {
4707 : 0 : tree _q100 = gimple_assign_rhs1 (_a5);
4708 : 0 : _q100 = do_valueize (valueize, _q100);
4709 : 0 : tree _q101 = gimple_assign_rhs2 (_a5);
4710 : 0 : _q101 = do_valueize (valueize, _q101);
4711 : 0 : {
4712 : 0 : tree _q100_pops[1];
4713 : 0 : if (gimple_nop_convert (_q100, _q100_pops, valueize))
4714 : : {
4715 : 0 : tree _q110 = _q100_pops[0];
4716 : 0 : if ((_q110 == _q41 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q41, 0) && types_match (_q110, _q41)))
4717 : : {
4718 : 0 : {
4719 : 0 : tree _q101_pops[1];
4720 : 0 : if (gimple_nop_convert (_q101, _q101_pops, valueize))
4721 : : {
4722 : 0 : tree _q130 = _q101_pops[0];
4723 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
4724 : : {
4725 : 0 : if (integer_zerop (_q21))
4726 : : {
4727 : 0 : if ((_p1 == _q71 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q71, 0) && types_match (_p1, _q71)))
4728 : : {
4729 : 0 : {
4730 : 0 : tree _p2_pops[1];
4731 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
4732 : : {
4733 : 0 : tree _q170 = _p2_pops[0];
4734 : 0 : if ((_q170 == _q41 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q41, 0) && types_match (_q170, _q41)))
4735 : : {
4736 : 0 : {
4737 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q71 };
4738 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4739 : : )
4740 : : {
4741 : 0 : {
4742 : 0 : res_ops[0] = captures[0];
4743 : 0 : res_ops[1] = captures[1];
4744 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
4745 : 0 : return true;
4746 : : }
4747 : : }
4748 : : }
4749 : : }
4750 : : }
4751 : : }
4752 : : }
4753 : : }
4754 : : }
4755 : : }
4756 : : }
4757 : : }
4758 : : }
4759 : : }
4760 : 0 : break;
4761 : : }
4762 : : default:;
4763 : : }
4764 : : }
4765 : : break;
4766 : : default:;
4767 : : }
4768 : : }
4769 : : }
4770 : : }
4771 : 0 : break;
4772 : : }
4773 : : default:;
4774 : : }
4775 : : }
4776 : : break;
4777 : 0 : default:;
4778 : : }
4779 : 0 : {
4780 : 0 : tree _q41_pops[1];
4781 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
4782 : : {
4783 : 0 : tree _q60 = _q41_pops[0];
4784 : 0 : switch (TREE_CODE (_q60))
4785 : : {
4786 : 0 : case SSA_NAME:
4787 : 0 : if (gimple *_d4 = get_def (valueize, _q60))
4788 : : {
4789 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
4790 : 0 : switch (gimple_assign_rhs_code (_a4))
4791 : : {
4792 : 0 : case MINUS_EXPR:
4793 : 0 : {
4794 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
4795 : 0 : _q70 = do_valueize (valueize, _q70);
4796 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
4797 : 0 : _q71 = do_valueize (valueize, _q71);
4798 : 0 : {
4799 : 0 : tree _q70_pops[1];
4800 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
4801 : : {
4802 : 0 : tree _q80 = _q70_pops[0];
4803 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4804 : : {
4805 : 0 : {
4806 : 0 : tree _q71_pops[1];
4807 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
4808 : : {
4809 : 0 : tree _q100 = _q71_pops[0];
4810 : 0 : switch (TREE_CODE (_q31))
4811 : : {
4812 : 0 : case SSA_NAME:
4813 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
4814 : : {
4815 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
4816 : 0 : switch (gimple_assign_rhs_code (_a5))
4817 : : {
4818 : 0 : case BIT_XOR_EXPR:
4819 : 0 : {
4820 : 0 : tree _q120 = gimple_assign_rhs1 (_a5);
4821 : 0 : _q120 = do_valueize (valueize, _q120);
4822 : 0 : tree _q121 = gimple_assign_rhs2 (_a5);
4823 : 0 : _q121 = do_valueize (valueize, _q121);
4824 : 0 : if (tree_swap_operands_p (_q120, _q121))
4825 : 0 : std::swap (_q120, _q121);
4826 : 0 : if ((_q120 == _q40 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q40, 0) && types_match (_q120, _q40)))
4827 : : {
4828 : 0 : if ((_q121 == _q100 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q100, 0) && types_match (_q121, _q100)))
4829 : : {
4830 : 0 : if (integer_zerop (_q21))
4831 : : {
4832 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
4833 : : {
4834 : 0 : {
4835 : 0 : tree _p2_pops[1];
4836 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
4837 : : {
4838 : 0 : tree _q170 = _p2_pops[0];
4839 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
4840 : : {
4841 : 0 : {
4842 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
4843 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4844 : : )
4845 : : {
4846 : 0 : {
4847 : 0 : res_ops[0] = captures[0];
4848 : 0 : res_ops[1] = captures[1];
4849 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
4850 : 0 : return true;
4851 : : }
4852 : : }
4853 : : }
4854 : : }
4855 : : }
4856 : : }
4857 : : }
4858 : : }
4859 : : }
4860 : : }
4861 : 0 : if ((_q120 == _q100 && ! TREE_SIDE_EFFECTS (_q120)) || (operand_equal_p (_q120, _q100, 0) && types_match (_q120, _q100)))
4862 : : {
4863 : 0 : if ((_q121 == _q40 && ! TREE_SIDE_EFFECTS (_q121)) || (operand_equal_p (_q121, _q40, 0) && types_match (_q121, _q40)))
4864 : : {
4865 : 0 : if (integer_zerop (_q21))
4866 : : {
4867 : 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
4868 : : {
4869 : 0 : {
4870 : 0 : tree _p2_pops[1];
4871 : 0 : if (gimple_signed_integer_sat_val (_p2, _p2_pops, valueize))
4872 : : {
4873 : 0 : tree _q170 = _p2_pops[0];
4874 : 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
4875 : : {
4876 : 0 : {
4877 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
4878 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
4879 : : )
4880 : : {
4881 : 0 : {
4882 : 0 : res_ops[0] = captures[0];
4883 : 0 : res_ops[1] = captures[1];
4884 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 83, __FILE__, __LINE__, false);
4885 : 0 : return true;
4886 : : }
4887 : : }
4888 : : }
4889 : : }
4890 : : }
4891 : : }
4892 : : }
4893 : : }
4894 : : }
4895 : : }
4896 : 0 : break;
4897 : : }
4898 : : default:;
4899 : : }
4900 : : }
4901 : : break;
4902 : : default:;
4903 : : }
4904 : : }
4905 : : }
4906 : : }
4907 : : }
4908 : : }
4909 : 0 : break;
4910 : : }
4911 : : default:;
4912 : : }
4913 : : }
4914 : : break;
4915 : : default:;
4916 : : }
4917 : : }
4918 : : }
4919 : 0 : break;
4920 : : }
4921 : : default:;
4922 : : }
4923 : : }
4924 : : break;
4925 : : default:;
4926 : : }
4927 : 3323414 : break;
4928 : : }
4929 : : default:;
4930 : : }
4931 : : }
4932 : : break;
4933 : : default:;
4934 : : }
4935 : : }
4936 : : }
4937 : : break;
4938 : : }
4939 : 0 : case BIT_AND_EXPR:
4940 : 0 : {
4941 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4942 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
4943 : 0 : || is_gimple_min_invariant (_q20)))
4944 : : {
4945 : 0 : _q20 = do_valueize (valueize, _q20);
4946 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4947 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
4948 : 0 : || is_gimple_min_invariant (_q21)))
4949 : : {
4950 : 0 : _q21 = do_valueize (valueize, _q21);
4951 : 0 : if (tree_swap_operands_p (_q20, _q21))
4952 : 0 : std::swap (_q20, _q21);
4953 : 0 : switch (TREE_CODE (_q20))
4954 : : {
4955 : 0 : case SSA_NAME:
4956 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
4957 : : {
4958 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
4959 : 0 : switch (gimple_assign_rhs_code (_a2))
4960 : : {
4961 : 0 : case LT_EXPR:
4962 : 0 : {
4963 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
4964 : 0 : _q30 = do_valueize (valueize, _q30);
4965 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
4966 : 0 : _q31 = do_valueize (valueize, _q31);
4967 : 0 : switch (TREE_CODE (_q30))
4968 : : {
4969 : 0 : case SSA_NAME:
4970 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
4971 : : {
4972 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
4973 : 0 : switch (gimple_assign_rhs_code (_a3))
4974 : : {
4975 : 0 : case BIT_XOR_EXPR:
4976 : 0 : {
4977 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
4978 : 0 : _q40 = do_valueize (valueize, _q40);
4979 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
4980 : 0 : _q41 = do_valueize (valueize, _q41);
4981 : 0 : if (tree_swap_operands_p (_q40, _q41))
4982 : 0 : std::swap (_q40, _q41);
4983 : 0 : {
4984 : 0 : tree _q41_pops[1];
4985 : 0 : if (gimple_nop_convert (_q41, _q41_pops, valueize))
4986 : : {
4987 : 0 : tree _q60 = _q41_pops[0];
4988 : 0 : switch (TREE_CODE (_q60))
4989 : : {
4990 : 0 : case SSA_NAME:
4991 : 0 : if (gimple *_d4 = get_def (valueize, _q60))
4992 : : {
4993 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
4994 : 0 : switch (gimple_assign_rhs_code (_a4))
4995 : : {
4996 : 0 : case MINUS_EXPR:
4997 : 0 : {
4998 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
4999 : 0 : _q70 = do_valueize (valueize, _q70);
5000 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
5001 : 0 : _q71 = do_valueize (valueize, _q71);
5002 : 0 : {
5003 : 0 : tree _q70_pops[1];
5004 : 0 : if (gimple_nop_convert (_q70, _q70_pops, valueize))
5005 : : {
5006 : 0 : tree _q80 = _q70_pops[0];
5007 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
5008 : : {
5009 : 0 : {
5010 : 0 : tree _q71_pops[1];
5011 : 0 : if (gimple_nop_convert (_q71, _q71_pops, valueize))
5012 : : {
5013 : 0 : tree _q100 = _q71_pops[0];
5014 : 0 : if (integer_zerop (_q31))
5015 : : {
5016 : 0 : switch (TREE_CODE (_q21))
5017 : : {
5018 : 0 : case SSA_NAME:
5019 : 0 : if (gimple *_d5 = get_def (valueize, _q21))
5020 : : {
5021 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
5022 : 0 : switch (gimple_assign_rhs_code (_a5))
5023 : : {
5024 : 0 : case LT_EXPR:
5025 : 0 : {
5026 : 0 : tree _q130 = gimple_assign_rhs1 (_a5);
5027 : 0 : _q130 = do_valueize (valueize, _q130);
5028 : 0 : tree _q131 = gimple_assign_rhs2 (_a5);
5029 : 0 : _q131 = do_valueize (valueize, _q131);
5030 : 0 : switch (TREE_CODE (_q130))
5031 : : {
5032 : 0 : case SSA_NAME:
5033 : 0 : if (gimple *_d6 = get_def (valueize, _q130))
5034 : : {
5035 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
5036 : 0 : switch (gimple_assign_rhs_code (_a6))
5037 : : {
5038 : 0 : case BIT_XOR_EXPR:
5039 : 0 : {
5040 : 0 : tree _q140 = gimple_assign_rhs1 (_a6);
5041 : 0 : _q140 = do_valueize (valueize, _q140);
5042 : 0 : tree _q141 = gimple_assign_rhs2 (_a6);
5043 : 0 : _q141 = do_valueize (valueize, _q141);
5044 : 0 : if (tree_swap_operands_p (_q140, _q141))
5045 : 0 : std::swap (_q140, _q141);
5046 : 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
5047 : : {
5048 : 0 : if ((_q141 == _q100 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q100, 0) && types_match (_q141, _q100)))
5049 : : {
5050 : 0 : if (integer_zerop (_q131))
5051 : : {
5052 : 0 : {
5053 : 0 : tree _p1_pops[1];
5054 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
5055 : : {
5056 : 0 : tree _q180 = _p1_pops[0];
5057 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
5058 : : {
5059 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
5060 : : {
5061 : 0 : {
5062 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
5063 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
5064 : : )
5065 : : {
5066 : 0 : {
5067 : 0 : res_ops[0] = captures[0];
5068 : 0 : res_ops[1] = captures[1];
5069 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
5070 : 0 : return true;
5071 : : }
5072 : : }
5073 : : }
5074 : : }
5075 : : }
5076 : : }
5077 : : }
5078 : : }
5079 : : }
5080 : : }
5081 : 0 : if ((_q140 == _q100 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q100, 0) && types_match (_q140, _q100)))
5082 : : {
5083 : 0 : if ((_q141 == _q40 && ! TREE_SIDE_EFFECTS (_q141)) || (operand_equal_p (_q141, _q40, 0) && types_match (_q141, _q40)))
5084 : : {
5085 : 0 : if (integer_zerop (_q131))
5086 : : {
5087 : 0 : {
5088 : 0 : tree _p1_pops[1];
5089 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
5090 : : {
5091 : 0 : tree _q180 = _p1_pops[0];
5092 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
5093 : : {
5094 : 0 : if ((_p2 == _q41 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q41, 0) && types_match (_p2, _q41)))
5095 : : {
5096 : 0 : {
5097 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q100, _q41 };
5098 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
5099 : : )
5100 : : {
5101 : 0 : {
5102 : 0 : res_ops[0] = captures[0];
5103 : 0 : res_ops[1] = captures[1];
5104 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
5105 : 0 : return true;
5106 : : }
5107 : : }
5108 : : }
5109 : : }
5110 : : }
5111 : : }
5112 : : }
5113 : : }
5114 : : }
5115 : : }
5116 : 0 : break;
5117 : : }
5118 : : default:;
5119 : : }
5120 : : }
5121 : : break;
5122 : : default:;
5123 : : }
5124 : : break;
5125 : : }
5126 : : default:;
5127 : : }
5128 : : }
5129 : : break;
5130 : : default:;
5131 : : }
5132 : : }
5133 : : }
5134 : : }
5135 : : }
5136 : : }
5137 : : }
5138 : 0 : break;
5139 : : }
5140 : : default:;
5141 : : }
5142 : : }
5143 : : break;
5144 : : default:;
5145 : : }
5146 : : }
5147 : : }
5148 : 0 : if (integer_zerop (_q31))
5149 : : {
5150 : 0 : switch (TREE_CODE (_q21))
5151 : : {
5152 : 0 : case SSA_NAME:
5153 : 0 : if (gimple *_d4 = get_def (valueize, _q21))
5154 : : {
5155 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
5156 : 0 : switch (gimple_assign_rhs_code (_a4))
5157 : : {
5158 : 0 : case LT_EXPR:
5159 : 0 : {
5160 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
5161 : 0 : _q80 = do_valueize (valueize, _q80);
5162 : 0 : tree _q81 = gimple_assign_rhs2 (_a4);
5163 : 0 : _q81 = do_valueize (valueize, _q81);
5164 : 0 : switch (TREE_CODE (_q80))
5165 : : {
5166 : 0 : case SSA_NAME:
5167 : 0 : if (gimple *_d5 = get_def (valueize, _q80))
5168 : : {
5169 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
5170 : 0 : switch (gimple_assign_rhs_code (_a5))
5171 : : {
5172 : 0 : case BIT_XOR_EXPR:
5173 : 0 : {
5174 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
5175 : 0 : _q90 = do_valueize (valueize, _q90);
5176 : 0 : tree _q91 = gimple_assign_rhs2 (_a5);
5177 : 0 : _q91 = do_valueize (valueize, _q91);
5178 : 0 : if (tree_swap_operands_p (_q90, _q91))
5179 : 0 : std::swap (_q90, _q91);
5180 : 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
5181 : : {
5182 : 0 : {
5183 : 0 : tree _q91_pops[1];
5184 : 0 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
5185 : : {
5186 : 0 : tree _q110 = _q91_pops[0];
5187 : 0 : switch (TREE_CODE (_q110))
5188 : : {
5189 : 0 : case SSA_NAME:
5190 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
5191 : : {
5192 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
5193 : 0 : switch (gimple_assign_rhs_code (_a6))
5194 : : {
5195 : 0 : case MINUS_EXPR:
5196 : 0 : {
5197 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
5198 : 0 : _q120 = do_valueize (valueize, _q120);
5199 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
5200 : 0 : _q121 = do_valueize (valueize, _q121);
5201 : 0 : {
5202 : 0 : tree _q120_pops[1];
5203 : 0 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
5204 : : {
5205 : 0 : tree _q130 = _q120_pops[0];
5206 : 0 : if ((_q130 == _q40 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q40, 0) && types_match (_q130, _q40)))
5207 : : {
5208 : 0 : {
5209 : 0 : tree _q121_pops[1];
5210 : 0 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
5211 : : {
5212 : 0 : tree _q150 = _q121_pops[0];
5213 : 0 : if ((_q150 == _q41 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q41, 0) && types_match (_q150, _q41)))
5214 : : {
5215 : 0 : if (integer_zerop (_q81))
5216 : : {
5217 : 0 : {
5218 : 0 : tree _p1_pops[1];
5219 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
5220 : : {
5221 : 0 : tree _q180 = _p1_pops[0];
5222 : 0 : if ((_q180 == _q40 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q40, 0) && types_match (_q180, _q40)))
5223 : : {
5224 : 0 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
5225 : : {
5226 : 0 : {
5227 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q91 };
5228 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
5229 : : )
5230 : : {
5231 : 0 : {
5232 : 0 : res_ops[0] = captures[0];
5233 : 0 : res_ops[1] = captures[1];
5234 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
5235 : 0 : return true;
5236 : : }
5237 : : }
5238 : : }
5239 : : }
5240 : : }
5241 : : }
5242 : : }
5243 : : }
5244 : : }
5245 : : }
5246 : : }
5247 : : }
5248 : : }
5249 : : }
5250 : 0 : break;
5251 : : }
5252 : : default:;
5253 : : }
5254 : : }
5255 : : break;
5256 : : default:;
5257 : : }
5258 : : }
5259 : : }
5260 : : }
5261 : 0 : if ((_q90 == _q41 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q41, 0) && types_match (_q90, _q41)))
5262 : : {
5263 : 0 : {
5264 : 0 : tree _q91_pops[1];
5265 : 0 : if (gimple_nop_convert (_q91, _q91_pops, valueize))
5266 : : {
5267 : 0 : tree _q110 = _q91_pops[0];
5268 : 0 : switch (TREE_CODE (_q110))
5269 : : {
5270 : 0 : case SSA_NAME:
5271 : 0 : if (gimple *_d6 = get_def (valueize, _q110))
5272 : : {
5273 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
5274 : 0 : switch (gimple_assign_rhs_code (_a6))
5275 : : {
5276 : 0 : case MINUS_EXPR:
5277 : 0 : {
5278 : 0 : tree _q120 = gimple_assign_rhs1 (_a6);
5279 : 0 : _q120 = do_valueize (valueize, _q120);
5280 : 0 : tree _q121 = gimple_assign_rhs2 (_a6);
5281 : 0 : _q121 = do_valueize (valueize, _q121);
5282 : 0 : {
5283 : 0 : tree _q120_pops[1];
5284 : 0 : if (gimple_nop_convert (_q120, _q120_pops, valueize))
5285 : : {
5286 : 0 : tree _q130 = _q120_pops[0];
5287 : 0 : if ((_q130 == _q41 && ! TREE_SIDE_EFFECTS (_q130)) || (operand_equal_p (_q130, _q41, 0) && types_match (_q130, _q41)))
5288 : : {
5289 : 0 : {
5290 : 0 : tree _q121_pops[1];
5291 : 0 : if (gimple_nop_convert (_q121, _q121_pops, valueize))
5292 : : {
5293 : 0 : tree _q150 = _q121_pops[0];
5294 : 0 : if ((_q150 == _q40 && ! TREE_SIDE_EFFECTS (_q150)) || (operand_equal_p (_q150, _q40, 0) && types_match (_q150, _q40)))
5295 : : {
5296 : 0 : if (integer_zerop (_q81))
5297 : : {
5298 : 0 : {
5299 : 0 : tree _p1_pops[1];
5300 : 0 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
5301 : : {
5302 : 0 : tree _q180 = _p1_pops[0];
5303 : 0 : if ((_q180 == _q41 && ! TREE_SIDE_EFFECTS (_q180)) || (operand_equal_p (_q180, _q41, 0) && types_match (_q180, _q41)))
5304 : : {
5305 : 0 : if ((_p2 == _q91 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q91, 0) && types_match (_p2, _q91)))
5306 : : {
5307 : 0 : {
5308 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q91 };
5309 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
5310 : : )
5311 : : {
5312 : 0 : {
5313 : 0 : res_ops[0] = captures[0];
5314 : 0 : res_ops[1] = captures[1];
5315 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 84, __FILE__, __LINE__, false);
5316 : 0 : return true;
5317 : : }
5318 : : }
5319 : : }
5320 : : }
5321 : : }
5322 : : }
5323 : : }
5324 : : }
5325 : : }
5326 : : }
5327 : : }
5328 : : }
5329 : : }
5330 : : }
5331 : 0 : break;
5332 : : }
5333 : : default:;
5334 : : }
5335 : : }
5336 : : break;
5337 : : default:;
5338 : : }
5339 : : }
5340 : : }
5341 : : }
5342 : 3323414 : break;
5343 : : }
5344 : : default:;
5345 : : }
5346 : : }
5347 : : break;
5348 : : default:;
5349 : : }
5350 : : break;
5351 : : }
5352 : : default:;
5353 : : }
5354 : : }
5355 : : break;
5356 : : default:;
5357 : : }
5358 : : }
5359 : 3323414 : break;
5360 : : }
5361 : : default:;
5362 : : }
5363 : : }
5364 : : break;
5365 : : default:;
5366 : : }
5367 : : break;
5368 : : }
5369 : : default:;
5370 : : }
5371 : : }
5372 : : break;
5373 : : default:;
5374 : : }
5375 : : }
5376 : : }
5377 : 3323414 : break;
5378 : : }
5379 : 251059 : case NE_EXPR:
5380 : 251059 : {
5381 : 251059 : tree _q20 = TREE_OPERAND (_p0, 0);
5382 : 251059 : if ((TREE_CODE (_q20) == SSA_NAME
5383 : 251059 : || is_gimple_min_invariant (_q20)))
5384 : : {
5385 : 251059 : _q20 = do_valueize (valueize, _q20);
5386 : 251059 : tree _q21 = TREE_OPERAND (_p0, 1);
5387 : 251059 : if ((TREE_CODE (_q21) == SSA_NAME
5388 : 251059 : || is_gimple_min_invariant (_q21)))
5389 : : {
5390 : 251059 : _q21 = do_valueize (valueize, _q21);
5391 : 251059 : if (tree_swap_operands_p (_q20, _q21))
5392 : 0 : std::swap (_q20, _q21);
5393 : 251059 : switch (TREE_CODE (_q20))
5394 : : {
5395 : 250804 : case SSA_NAME:
5396 : 250804 : if (gimple *_d2 = get_def (valueize, _q20))
5397 : : {
5398 : 250804 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
5399 : 328829 : switch (gimple_assign_rhs_code (_a2))
5400 : : {
5401 : 33761 : case IMAGPART_EXPR:
5402 : 33761 : {
5403 : 33761 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
5404 : 33761 : if ((TREE_CODE (_q30) == SSA_NAME
5405 : 33761 : || is_gimple_min_invariant (_q30)))
5406 : : {
5407 : 33761 : _q30 = do_valueize (valueize, _q30);
5408 : 33761 : switch (TREE_CODE (_q30))
5409 : : {
5410 : 33761 : case SSA_NAME:
5411 : 33761 : if (gimple *_d3 = get_def (valueize, _q30))
5412 : : {
5413 : 33761 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
5414 : 33749 : switch (gimple_call_combined_fn (_c3))
5415 : : {
5416 : 12361 : case CFN_SUB_OVERFLOW:
5417 : 12361 : if (gimple_call_num_args (_c3) == 2)
5418 : : {
5419 : 12361 : tree _q40 = gimple_call_arg (_c3, 0);
5420 : 12361 : _q40 = do_valueize (valueize, _q40);
5421 : 12361 : tree _q41 = gimple_call_arg (_c3, 1);
5422 : 12361 : _q41 = do_valueize (valueize, _q41);
5423 : 12361 : if (integer_zerop (_q21))
5424 : : {
5425 : 12361 : {
5426 : 12361 : tree _p1_pops[1];
5427 : 12361 : if (gimple_signed_integer_sat_val (_p1, _p1_pops, valueize))
5428 : : {
5429 : 0 : tree _q80 = _p1_pops[0];
5430 : 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
5431 : : {
5432 : 0 : switch (TREE_CODE (_p2))
5433 : : {
5434 : 0 : case SSA_NAME:
5435 : 0 : if (gimple *_d4 = get_def (valueize, _p2))
5436 : : {
5437 : 12361 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
5438 : 0 : switch (gimple_assign_rhs_code (_a4))
5439 : : {
5440 : 0 : case REALPART_EXPR:
5441 : 0 : {
5442 : 0 : tree _q100 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
5443 : 0 : if ((TREE_CODE (_q100) == SSA_NAME
5444 : 0 : || is_gimple_min_invariant (_q100)))
5445 : : {
5446 : 0 : _q100 = do_valueize (valueize, _q100);
5447 : 0 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
5448 : : {
5449 : 0 : {
5450 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
5451 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
5452 : : )
5453 : : {
5454 : 0 : if (types_match (type, captures[0], captures[1])
5455 : : )
5456 : : {
5457 : 0 : {
5458 : 0 : res_ops[0] = captures[0];
5459 : 0 : res_ops[1] = captures[1];
5460 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 85, __FILE__, __LINE__, false);
5461 : 0 : return true;
5462 : : }
5463 : : }
5464 : : }
5465 : : }
5466 : : }
5467 : : }
5468 : : break;
5469 : : }
5470 : : default:;
5471 : : }
5472 : : }
5473 : : break;
5474 : : default:;
5475 : : }
5476 : : }
5477 : : }
5478 : : }
5479 : : }
5480 : : }
5481 : : break;
5482 : : default:;
5483 : : }
5484 : : }
5485 : : break;
5486 : : default:;
5487 : : }
5488 : : }
5489 : : break;
5490 : : }
5491 : : default:;
5492 : : }
5493 : : }
5494 : : break;
5495 : : default:;
5496 : : }
5497 : : }
5498 : : }
5499 : 3323414 : break;
5500 : : }
5501 : : default:;
5502 : : }
5503 : : }
5504 : : }
5505 : : }
5506 : : break;
5507 : : default:;
5508 : : }
5509 : : return false;
5510 : : }
5511 : :
5512 : : bool
5513 : 39048 : gimple_simplify_486 (gimple_match_op *res_op, gimple_seq *seq,
5514 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5515 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5516 : : const enum tree_code ARG_UNUSED (cmp),
5517 : : const enum tree_code ARG_UNUSED (eqcmp))
5518 : : {
5519 : 39048 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5520 : 39048 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5521 : : )
5522 : : {
5523 : 39048 : {
5524 : 39048 : tree ty = TREE_TYPE (captures[0]);
5525 : 39048 : unsigned prec = TYPE_PRECISION (ty);
5526 : 39048 : wide_int mask = wi::to_wide (captures[2], prec);
5527 : 39048 : wide_int rhs = wi::to_wide (captures[3], prec);
5528 : 39048 : signop sgn = TYPE_SIGN (ty);
5529 : 102810 : if ((mask & (mask + 1)) == 0 && wi::gt_p (rhs, 0, sgn)
5530 : 126778 : && (rhs & (rhs + 1)) == 0 && wi::ge_p (mask, rhs, sgn)
5531 : : )
5532 : : {
5533 : 1392 : gimple_seq *lseq = seq;
5534 : 1392 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1424;
5535 : 1392 : {
5536 : 1392 : res_op->set_op (eqcmp, type, 2);
5537 : 1392 : {
5538 : 1392 : tree _o1[2], _r1;
5539 : 1392 : _o1[0] = captures[1];
5540 : 1392 : _o1[1] = wide_int_to_tree (ty, mask - rhs);
5541 : 1392 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5542 : 1392 : tem_op.resimplify (lseq, valueize);
5543 : 1392 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5544 : 1392 : if (!_r1) goto next_after_fail1424;
5545 : 446 : res_op->ops[0] = _r1;
5546 : : }
5547 : 446 : res_op->ops[1] = build_zero_cst (ty);
5548 : 446 : res_op->resimplify (lseq, valueize);
5549 : 446 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 730, __FILE__, __LINE__, true);
5550 : 446 : return true;
5551 : : }
5552 : 38602 : next_after_fail1424:;
5553 : : }
5554 : 39048 : }
5555 : : }
5556 : : return false;
5557 : : }
5558 : :
5559 : : bool
5560 : 36 : gimple_simplify_492 (gimple_match_op *res_op, gimple_seq *seq,
5561 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5562 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5563 : : const combined_fn ARG_UNUSED (logs),
5564 : : const combined_fn ARG_UNUSED (exps),
5565 : : const enum tree_code ARG_UNUSED (cmp))
5566 : : {
5567 : 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5568 : 36 : if (flag_unsafe_math_optimizations
5569 : : )
5570 : : {
5571 : 36 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
5572 : 36 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
5573 : 36 : && ! flag_trapping_math
5574 : 72 : && ! flag_errno_math
5575 : : )
5576 : : {
5577 : 36 : gimple_seq *lseq = seq;
5578 : 36 : if (lseq
5579 : 18 : && (!single_use (captures[0])))
5580 : 18 : lseq = NULL;
5581 : 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1430;
5582 : 36 : {
5583 : 36 : res_op->set_op (cmp, type, 2);
5584 : 36 : res_op->ops[0] = captures[1];
5585 : 36 : {
5586 : 36 : tree _o1[1], _r1;
5587 : 36 : _o1[0] = captures[2];
5588 : 36 : gimple_match_op tem_op (res_op->cond.any_else (), logs, TREE_TYPE (_o1[0]), _o1[0]);
5589 : 36 : tem_op.resimplify (NULL, valueize);
5590 : 36 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
5591 : 36 : if (!_r1) goto next_after_fail1430;
5592 : 36 : res_op->ops[1] = _r1;
5593 : : }
5594 : 36 : res_op->resimplify (lseq, valueize);
5595 : 36 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 732, __FILE__, __LINE__, true);
5596 : 36 : return true;
5597 : : }
5598 : : next_after_fail1430:;
5599 : : }
5600 : : }
5601 : : return false;
5602 : : }
5603 : :
5604 : : bool
5605 : 9290 : gimple_simplify_497 (gimple_match_op *res_op, gimple_seq *seq,
5606 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5607 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5608 : : {
5609 : 9290 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5610 : 18580 : if (INTEGRAL_TYPE_P (type)
5611 : 9290 : && wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))
5612 : 6847 : && wi::ltu_p (wi::to_wide (captures[2]), element_precision (type))
5613 : 6847 : && wi::to_widest (captures[2]) >= wi::to_widest (captures[1])
5614 : 27870 : && wi::to_widest (captures[1]) <= wi::ctz (get_nonzero_bits (captures[0]))
5615 : : )
5616 : : {
5617 : 19 : gimple_seq *lseq = seq;
5618 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1439;
5619 : 19 : {
5620 : 19 : res_op->set_op (LSHIFT_EXPR, type, 2);
5621 : 19 : {
5622 : 19 : tree _o1[1], _r1;
5623 : 19 : _o1[0] = captures[0];
5624 : 19 : if (type != TREE_TYPE (_o1[0]) /* XXX */
5625 : 19 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
5626 : : {
5627 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
5628 : 3 : tem_op.resimplify (lseq, valueize);
5629 : 3 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5630 : 3 : if (!_r1) goto next_after_fail1439;
5631 : : }
5632 : : else
5633 : : _r1 = _o1[0];
5634 : 19 : res_op->ops[0] = _r1;
5635 : : }
5636 : 19 : {
5637 : 19 : tree _o1[2], _r1;
5638 : 19 : _o1[0] = captures[2];
5639 : 19 : _o1[1] = captures[1];
5640 : 19 : gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5641 : 19 : tem_op.resimplify (lseq, valueize);
5642 : 19 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5643 : 19 : if (!_r1) goto next_after_fail1439;
5644 : 19 : res_op->ops[1] = _r1;
5645 : : }
5646 : 19 : res_op->resimplify (lseq, valueize);
5647 : 19 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 741, __FILE__, __LINE__, true);
5648 : 19 : return true;
5649 : : }
5650 : : next_after_fail1439:;
5651 : : }
5652 : : return false;
5653 : : }
5654 : :
5655 : : bool
5656 : 29009 : gimple_simplify_506 (gimple_match_op *res_op, gimple_seq *seq,
5657 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5658 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5659 : : const enum tree_code ARG_UNUSED (bit_op),
5660 : : const enum tree_code ARG_UNUSED (shift))
5661 : : {
5662 : 29009 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5663 : 29009 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
5664 : : )
5665 : : {
5666 : 29009 : {
5667 : 29009 : tree mask = int_const_binop (shift, fold_convert (type, captures[3]), captures[4]);
5668 : 29009 : if (mask
5669 : : )
5670 : : {
5671 : 28986 : gimple_seq *lseq = seq;
5672 : 28986 : if (lseq
5673 : 9075 : && (!single_use (captures[0])
5674 : 1406 : || !single_use (captures[1])))
5675 : 27580 : lseq = NULL;
5676 : 28986 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1451;
5677 : 28986 : {
5678 : 28986 : res_op->set_op (bit_op, type, 2);
5679 : 28986 : {
5680 : 28986 : tree _o1[2], _r1;
5681 : 28986 : {
5682 : 28986 : tree _o2[1], _r2;
5683 : 28986 : _o2[0] = captures[2];
5684 : 28986 : if (type != TREE_TYPE (_o2[0]) /* XXX */
5685 : 28986 : && !useless_type_conversion_p (type, TREE_TYPE (_o2[0])))
5686 : : {
5687 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o2[0]);
5688 : 0 : tem_op.resimplify (lseq, valueize);
5689 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5690 : 0 : if (!_r2) goto next_after_fail1451;
5691 : : }
5692 : : else
5693 : : _r2 = _o2[0];
5694 : 28986 : _o1[0] = _r2;
5695 : : }
5696 : 28986 : _o1[1] = captures[4];
5697 : 28986 : gimple_match_op tem_op (res_op->cond.any_else (), shift, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5698 : 28986 : tem_op.resimplify (lseq, valueize);
5699 : 28986 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5700 : 28986 : if (!_r1) goto next_after_fail1451;
5701 : 1532 : res_op->ops[0] = _r1;
5702 : : }
5703 : 1532 : res_op->ops[1] = mask;
5704 : 1532 : res_op->resimplify (lseq, valueize);
5705 : 1532 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 751, __FILE__, __LINE__, true);
5706 : 1532 : return true;
5707 : : }
5708 : : next_after_fail1451:;
5709 : : }
5710 : : }
5711 : : }
5712 : : return false;
5713 : : }
5714 : :
5715 : : bool
5716 : 15261 : gimple_simplify_512 (gimple_match_op *res_op, gimple_seq *seq,
5717 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5718 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5719 : : const enum tree_code ARG_UNUSED (eqne))
5720 : : {
5721 : 15261 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5722 : 15261 : if ((integer_zerop (captures[1]) || integer_onep (captures[1]))
5723 : : )
5724 : : {
5725 : 15261 : if ((eqne == EQ_EXPR) ^ integer_zerop (captures[1])
5726 : : )
5727 : : {
5728 : 7853 : gimple_seq *lseq = seq;
5729 : 7853 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1462;
5730 : 7853 : {
5731 : 7853 : res_op->set_op (NOP_EXPR, type, 1);
5732 : 7853 : res_op->ops[0] = captures[0];
5733 : 7853 : res_op->resimplify (lseq, valueize);
5734 : 7853 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 762, __FILE__, __LINE__, true);
5735 : 7853 : return true;
5736 : : }
5737 : 0 : next_after_fail1462:;
5738 : : }
5739 : : else
5740 : : {
5741 : 7408 : if (types_match (type, TREE_TYPE (captures[0]))
5742 : : )
5743 : : {
5744 : 1897 : gimple_seq *lseq = seq;
5745 : 1897 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1463;
5746 : 1897 : {
5747 : 1897 : res_op->set_op (BIT_XOR_EXPR, type, 2);
5748 : 1897 : res_op->ops[0] = captures[0];
5749 : 1897 : res_op->ops[1] = build_one_cst (type);
5750 : 1897 : res_op->resimplify (lseq, valueize);
5751 : 1897 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 763, __FILE__, __LINE__, true);
5752 : 1897 : return true;
5753 : : }
5754 : 0 : next_after_fail1463:;
5755 : : }
5756 : : }
5757 : : }
5758 : : return false;
5759 : : }
5760 : :
5761 : : bool
5762 : 1199 : gimple_simplify_517 (gimple_match_op *res_op, gimple_seq *seq,
5763 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5764 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5765 : : const enum tree_code ARG_UNUSED (maxmin))
5766 : : {
5767 : 1199 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5768 : 1199 : if (optimize
5769 : 1199 : && FLOAT_TYPE_P (type)
5770 : 48 : && FLOAT_TYPE_P (TREE_TYPE (captures[0]))
5771 : 48 : && types_match (type, TREE_TYPE (captures[1]))
5772 : 48 : && types_match (type, TREE_TYPE (captures[2]))
5773 : 1247 : && element_precision (type) < element_precision (TREE_TYPE (captures[0]))
5774 : : )
5775 : : {
5776 : 48 : gimple_seq *lseq = seq;
5777 : 48 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1468;
5778 : 48 : {
5779 : 48 : res_op->set_op (maxmin, type, 2);
5780 : 48 : res_op->ops[0] = captures[1];
5781 : 48 : res_op->ops[1] = captures[2];
5782 : 48 : res_op->resimplify (lseq, valueize);
5783 : 48 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 768, __FILE__, __LINE__, true);
5784 : 48 : return true;
5785 : : }
5786 : 0 : next_after_fail1468:;
5787 : : }
5788 : : return false;
5789 : : }
5790 : :
5791 : : bool
5792 : 20 : gimple_simplify_523 (gimple_match_op *res_op, gimple_seq *seq,
5793 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5794 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5795 : : const combined_fn ARG_UNUSED (copysigns),
5796 : : const combined_fn ARG_UNUSED (coss))
5797 : : {
5798 : 20 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5799 : 20 : gimple_seq *lseq = seq;
5800 : 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1486;
5801 : 20 : {
5802 : 20 : res_op->set_op (coss, type, 1);
5803 : 20 : res_op->ops[0] = captures[0];
5804 : 20 : res_op->resimplify (lseq, valueize);
5805 : 20 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 774, __FILE__, __LINE__, true);
5806 : : return true;
5807 : : }
5808 : 0 : next_after_fail1486:;
5809 : 0 : return false;
5810 : : }
5811 : :
5812 : : bool
5813 : 2 : gimple_simplify_526 (gimple_match_op *res_op, gimple_seq *seq,
5814 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5815 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5816 : : const combined_fn ARG_UNUSED (copysigns),
5817 : : const combined_fn ARG_UNUSED (pows))
5818 : : {
5819 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5820 : 2 : {
5821 : 2 : HOST_WIDE_INT n;
5822 : 2 : if (real_isinteger (&TREE_REAL_CST (captures[2]), &n) && (n & 1) == 0
5823 : : )
5824 : : {
5825 : 2 : gimple_seq *lseq = seq;
5826 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1489;
5827 : 2 : {
5828 : 2 : res_op->set_op (pows, type, 2);
5829 : 2 : res_op->ops[0] = captures[0];
5830 : 2 : res_op->ops[1] = captures[2];
5831 : 2 : res_op->resimplify (lseq, valueize);
5832 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 777, __FILE__, __LINE__, true);
5833 : 2 : return true;
5834 : : }
5835 : 0 : next_after_fail1489:;
5836 : : }
5837 : : }
5838 : 0 : return false;
5839 : : }
5840 : :
5841 : : bool
5842 : 8 : gimple_simplify_527 (gimple_match_op *res_op, gimple_seq *seq,
5843 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5844 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5845 : : const combined_fn ARG_UNUSED (pow))
5846 : : {
5847 : 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5848 : 8 : if (flag_unsafe_math_optimizations
5849 : : )
5850 : : {
5851 : 8 : if (! HONOR_INFINITIES (type)
5852 : 8 : && ! flag_trapping_math
5853 : 16 : && ! flag_errno_math
5854 : : )
5855 : : {
5856 : 8 : gimple_seq *lseq = seq;
5857 : 8 : if (lseq
5858 : 4 : && (!single_use (captures[0])))
5859 : 4 : lseq = NULL;
5860 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1490;
5861 : 8 : {
5862 : 8 : res_op->set_op (pow, type, 2);
5863 : 8 : res_op->ops[0] = captures[2];
5864 : 8 : {
5865 : 8 : tree _o1[1], _r1;
5866 : 8 : _o1[0] = captures[3];
5867 : 8 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5868 : 8 : tem_op.resimplify (lseq, valueize);
5869 : 8 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5870 : 8 : if (!_r1) goto next_after_fail1490;
5871 : 4 : res_op->ops[1] = _r1;
5872 : : }
5873 : 4 : res_op->resimplify (lseq, valueize);
5874 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 778, __FILE__, __LINE__, true);
5875 : 4 : return true;
5876 : : }
5877 : : next_after_fail1490:;
5878 : : }
5879 : : }
5880 : : return false;
5881 : : }
5882 : :
5883 : : bool
5884 : 0 : gimple_simplify_531 (gimple_match_op *res_op, gimple_seq *seq,
5885 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5886 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5887 : : {
5888 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5889 : 0 : gimple_seq *lseq = seq;
5890 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1495;
5891 : 0 : {
5892 : 0 : tree tem;
5893 : 0 : tem = captures[0];
5894 : 0 : res_op->set_value (tem);
5895 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 783, __FILE__, __LINE__, true);
5896 : : return true;
5897 : : }
5898 : 0 : next_after_fail1495:;
5899 : 0 : return false;
5900 : : }
5901 : :
5902 : : bool
5903 : 9 : gimple_simplify_534 (gimple_match_op *res_op, gimple_seq *seq,
5904 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5905 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5906 : : const combined_fn ARG_UNUSED (HYPOT))
5907 : : {
5908 : 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5909 : 9 : gimple_seq *lseq = seq;
5910 : 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1498;
5911 : 9 : {
5912 : 9 : res_op->set_op (ABS_EXPR, type, 1);
5913 : 9 : res_op->ops[0] = captures[0];
5914 : 9 : res_op->resimplify (lseq, valueize);
5915 : 9 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 786, __FILE__, __LINE__, true);
5916 : : return true;
5917 : : }
5918 : 0 : next_after_fail1498:;
5919 : 0 : return false;
5920 : : }
5921 : :
5922 : : bool
5923 : 12049 : gimple_simplify_537 (gimple_match_op *res_op, gimple_seq *seq,
5924 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5925 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5926 : : {
5927 : 12049 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5928 : 12049 : if (ANY_INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_SANITIZED (type)
5929 : : )
5930 : : {
5931 : 12049 : {
5932 : 12049 : tree ptrdifftype = TREE_TYPE (captures[0]);
5933 : 12049 : gimple_seq *lseq = seq;
5934 : 12049 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1501;
5935 : 12049 : {
5936 : 12049 : res_op->set_op (NOP_EXPR, type, 1);
5937 : 12049 : {
5938 : 12049 : tree _o1[2], _r1;
5939 : 12049 : _o1[0] = captures[2];
5940 : 12049 : _o1[1] = captures[1];
5941 : 12049 : (*res_op).set_op (POINTER_DIFF_EXPR, ptrdifftype, 2);
5942 : 12049 : (*res_op).ops[0] = _o1[0];
5943 : 12049 : (*res_op).ops[1] = _o1[1];
5944 : 12049 : (*res_op).resimplify (lseq, valueize);
5945 : : }
5946 : 12049 : if (type != res_op->type
5947 : 12049 : && !useless_type_conversion_p (type, res_op->type))
5948 : : {
5949 : 4295 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1501;
5950 : 462 : res_op->set_op (NOP_EXPR, type, 1);
5951 : 462 : res_op->resimplify (lseq, valueize);
5952 : : }
5953 : 8216 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 789, __FILE__, __LINE__, true);
5954 : 8216 : return true;
5955 : : }
5956 : : next_after_fail1501:;
5957 : : }
5958 : : }
5959 : : return false;
5960 : : }
5961 : :
5962 : : bool
5963 : 9906809 : gimple_simplify_543 (gimple_match_op *res_op, gimple_seq *seq,
5964 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5965 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5966 : : {
5967 : 9906809 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5968 : 9906809 : {
5969 : 9906809 : bool wascmp;
5970 : 9906809 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
5971 : 9906809 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
5972 : : )
5973 : : {
5974 : 1744 : gimple_seq *lseq = seq;
5975 : 1744 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1508;
5976 : 1744 : {
5977 : 1744 : tree tem;
5978 : 1744 : tem = wascmp ? constant_boolean_node (false, type) : build_zero_cst (type);
5979 : 1744 : res_op->set_value (tem);
5980 : 1744 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 796, __FILE__, __LINE__, true);
5981 : 1744 : return true;
5982 : : }
5983 : 0 : next_after_fail1508:;
5984 : : }
5985 : : }
5986 : 9905065 : return false;
5987 : : }
5988 : :
5989 : : bool
5990 : 19 : gimple_simplify_546 (gimple_match_op *res_op, gimple_seq *seq,
5991 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5992 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5993 : : {
5994 : 19 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5995 : 19 : gimple_seq *lseq = seq;
5996 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1511;
5997 : 19 : {
5998 : 19 : res_op->set_op (BIT_AND_EXPR, type, 2);
5999 : 19 : res_op->ops[0] = captures[0];
6000 : 19 : res_op->ops[1] = captures[1];
6001 : 19 : res_op->resimplify (lseq, valueize);
6002 : 19 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 799, __FILE__, __LINE__, true);
6003 : : return true;
6004 : : }
6005 : 0 : next_after_fail1511:;
6006 : 0 : return false;
6007 : : }
6008 : :
6009 : : bool
6010 : 4 : gimple_simplify_549 (gimple_match_op *res_op, gimple_seq *seq,
6011 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6012 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6013 : : {
6014 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6015 : 4 : gimple_seq *lseq = seq;
6016 : 4 : if (lseq
6017 : 2 : && (!single_use (captures[3])
6018 : 2 : || !single_use (captures[4])))
6019 : 2 : lseq = NULL;
6020 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1514;
6021 : 4 : {
6022 : 4 : res_op->set_op (BIT_AND_EXPR, type, 2);
6023 : 4 : res_op->ops[0] = captures[0];
6024 : 4 : {
6025 : 4 : tree _o1[1], _r1;
6026 : 4 : _o1[0] = captures[5];
6027 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
6028 : 4 : tem_op.resimplify (lseq, valueize);
6029 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6030 : 4 : if (!_r1) goto next_after_fail1514;
6031 : 2 : res_op->ops[1] = _r1;
6032 : : }
6033 : 2 : res_op->resimplify (lseq, valueize);
6034 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 802, __FILE__, __LINE__, true);
6035 : : return true;
6036 : : }
6037 : : next_after_fail1514:;
6038 : : return false;
6039 : : }
6040 : :
6041 : : bool
6042 : 935 : gimple_simplify_555 (gimple_match_op *res_op, gimple_seq *seq,
6043 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6044 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6045 : : {
6046 : 935 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6047 : 935 : if (INTEGRAL_TYPE_P (type)
6048 : 935 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6049 : 935 : && TREE_CODE (TREE_TYPE (captures[0])) != BOOLEAN_TYPE
6050 : 1870 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
6051 : 487 : || TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0])))
6052 : : )
6053 : : {
6054 : 935 : gimple_seq *lseq = seq;
6055 : 935 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1520;
6056 : 935 : {
6057 : 935 : res_op->set_op (MULT_EXPR, type, 2);
6058 : 935 : {
6059 : 935 : tree _o1[1], _r1;
6060 : 935 : _o1[0] = captures[0];
6061 : 935 : if (type != TREE_TYPE (_o1[0]) /* XXX */
6062 : 935 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
6063 : : {
6064 : 8 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
6065 : 8 : tem_op.resimplify (lseq, valueize);
6066 : 8 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6067 : 8 : if (!_r1) goto next_after_fail1520;
6068 : : }
6069 : : else
6070 : : _r1 = _o1[0];
6071 : 935 : res_op->ops[0] = _r1;
6072 : : }
6073 : 935 : res_op->ops[1] = captures[1];
6074 : 935 : res_op->resimplify (lseq, valueize);
6075 : 935 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 807, __FILE__, __LINE__, true);
6076 : 935 : return true;
6077 : : }
6078 : : next_after_fail1520:;
6079 : : }
6080 : : return false;
6081 : : }
6082 : :
6083 : : bool
6084 : 0 : gimple_simplify_563 (gimple_match_op *res_op, gimple_seq *seq,
6085 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6086 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6087 : : const enum tree_code ARG_UNUSED (cmp))
6088 : : {
6089 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6090 : 0 : if (!canonicalize_math_p ()
6091 : : )
6092 : : {
6093 : 0 : if (INTEGRAL_TYPE_P (type)
6094 : 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6095 : : )
6096 : : {
6097 : 0 : gimple_seq *lseq = seq;
6098 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1528;
6099 : 0 : {
6100 : 0 : res_op->set_op (COND_EXPR, type, 3);
6101 : 0 : res_op->ops[0] = captures[0];
6102 : 0 : res_op->ops[1] = captures[3];
6103 : 0 : res_op->ops[2] = build_zero_cst (type);
6104 : 0 : res_op->resimplify (lseq, valueize);
6105 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
6106 : 0 : return true;
6107 : : }
6108 : 0 : next_after_fail1528:;
6109 : : }
6110 : : }
6111 : : return false;
6112 : : }
6113 : :
6114 : : bool
6115 : 866 : gimple_simplify_569 (gimple_match_op *res_op, gimple_seq *seq,
6116 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6117 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6118 : : const enum tree_code ARG_UNUSED (eqne))
6119 : : {
6120 : 866 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6121 : 866 : if (eqne == EQ_EXPR
6122 : : )
6123 : : {
6124 : 6 : gimple_seq *lseq = seq;
6125 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1539;
6126 : 6 : {
6127 : 6 : tree tem;
6128 : 6 : tem = constant_boolean_node (false, type);
6129 : 6 : res_op->set_value (tem);
6130 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
6131 : 6 : return true;
6132 : : }
6133 : 0 : next_after_fail1539:;
6134 : : }
6135 : : else
6136 : : {
6137 : 860 : if (eqne == NE_EXPR
6138 : : )
6139 : : {
6140 : 860 : gimple_seq *lseq = seq;
6141 : 860 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1540;
6142 : 860 : {
6143 : 860 : tree tem;
6144 : 860 : tem = captures[0];
6145 : 860 : res_op->set_value (tem);
6146 : 860 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 823, __FILE__, __LINE__, true);
6147 : 860 : return true;
6148 : : }
6149 : 0 : next_after_fail1540:;
6150 : : }
6151 : : }
6152 : : return false;
6153 : : }
6154 : :
6155 : : bool
6156 : 8 : gimple_simplify_574 (gimple_match_op *res_op, gimple_seq *seq,
6157 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6158 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6159 : : const enum tree_code ARG_UNUSED (eqne))
6160 : : {
6161 : 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6162 : 8 : if (eqne == EQ_EXPR
6163 : : )
6164 : : {
6165 : 0 : gimple_seq *lseq = seq;
6166 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1564;
6167 : 0 : {
6168 : 0 : tree tem;
6169 : 0 : tem = constant_boolean_node (false, type);
6170 : 0 : res_op->set_value (tem);
6171 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
6172 : 0 : return true;
6173 : : }
6174 : 0 : next_after_fail1564:;
6175 : : }
6176 : : else
6177 : : {
6178 : 8 : if (eqne == NE_EXPR
6179 : : )
6180 : : {
6181 : 8 : gimple_seq *lseq = seq;
6182 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1565;
6183 : 8 : {
6184 : 8 : tree tem;
6185 : 8 : tem = captures[0];
6186 : 8 : res_op->set_value (tem);
6187 : 8 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 823, __FILE__, __LINE__, true);
6188 : 8 : return true;
6189 : : }
6190 : 0 : next_after_fail1565:;
6191 : : }
6192 : : }
6193 : : return false;
6194 : : }
6195 : :
6196 : : bool
6197 : 414 : gimple_simplify_578 (gimple_match_op *res_op, gimple_seq *seq,
6198 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6199 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6200 : : const enum tree_code ARG_UNUSED (code2),
6201 : : const enum tree_code ARG_UNUSED (code1))
6202 : : {
6203 : 414 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6204 : 414 : if ((TREE_CODE (captures[2]) == INTEGER_CST
6205 : 370 : && TREE_CODE (captures[5]) == INTEGER_CST)
6206 : 649 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
6207 : 43 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
6208 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
6209 : 43 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
6210 : 279 : && bitwise_equal_p (captures[2], captures[5]))
6211 : : )
6212 : : {
6213 : 146 : {
6214 : 146 : bool one_before = false;
6215 : 146 : bool one_after = false;
6216 : 146 : int cmp = 0;
6217 : 146 : bool allbits = true;
6218 : 146 : if (TREE_CODE (captures[2]) == INTEGER_CST
6219 : 135 : && TREE_CODE (captures[5]) == INTEGER_CST)
6220 : : {
6221 : 135 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
6222 : 135 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
6223 : 135 : auto t2 = wi::to_wide (captures[5]);
6224 : 135 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
6225 : 135 : if (cmp < 0
6226 : 135 : && t1 == t2 - 1)
6227 : : one_before = true;
6228 : 135 : if (cmp > 0
6229 : 135 : && t1 == t2 + 1)
6230 : : one_after = true;
6231 : : }
6232 : 146 : bool val;
6233 : 146 : switch (code2)
6234 : : {
6235 : 56 : case EQ_EXPR: val = (cmp == 0); break;
6236 : 0 : case NE_EXPR: val = (cmp != 0); break;
6237 : 0 : case LT_EXPR: val = (cmp < 0); break;
6238 : 66 : case GT_EXPR: val = (cmp > 0); break;
6239 : 10 : case LE_EXPR: val = (cmp <= 0); break;
6240 : 14 : case GE_EXPR: val = (cmp >= 0); break;
6241 : 0 : default: gcc_unreachable ();
6242 : : }
6243 : 146 : if (code1 == EQ_EXPR && val
6244 : : )
6245 : : {
6246 : 25 : gimple_seq *lseq = seq;
6247 : 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1570;
6248 : 25 : {
6249 : 25 : tree tem;
6250 : 25 : tem = captures[0];
6251 : 25 : res_op->set_value (tem);
6252 : 25 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
6253 : 25 : return true;
6254 : : }
6255 : 0 : next_after_fail1570:;
6256 : : }
6257 : : else
6258 : : {
6259 : 121 : if (code1 == EQ_EXPR && !val
6260 : : )
6261 : : {
6262 : 2 : gimple_seq *lseq = seq;
6263 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1571;
6264 : 2 : {
6265 : 2 : tree tem;
6266 : 2 : tem = constant_boolean_node (false, type);
6267 : 2 : res_op->set_value (tem);
6268 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
6269 : 2 : return true;
6270 : : }
6271 : 0 : next_after_fail1571:;
6272 : : }
6273 : : else
6274 : : {
6275 : 119 : if (code1 == NE_EXPR && !val && allbits
6276 : : )
6277 : : {
6278 : 0 : gimple_seq *lseq = seq;
6279 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1572;
6280 : 0 : {
6281 : 0 : tree tem;
6282 : 0 : tem = captures[3];
6283 : 0 : res_op->set_value (tem);
6284 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
6285 : 0 : return true;
6286 : : }
6287 : 0 : next_after_fail1572:;
6288 : 0 : }
6289 : : else
6290 : : {
6291 : 119 : if ((code1 == NE_EXPR
6292 : 119 : && code2 == GE_EXPR
6293 : 14 : && cmp == 0
6294 : 14 : && allbits)
6295 : 133 : && ((VECTOR_BOOLEAN_TYPE_P (type)
6296 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
6297 : 14 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
6298 : : )
6299 : : {
6300 : 14 : gimple_seq *lseq = seq;
6301 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1573;
6302 : 14 : {
6303 : 14 : res_op->set_op (GT_EXPR, type, 2);
6304 : 14 : res_op->ops[0] = captures[4];
6305 : 14 : {
6306 : 14 : tree _o1[1], _r1;
6307 : 14 : _o1[0] = captures[2];
6308 : 14 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6309 : 14 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6310 : : {
6311 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6312 : 14 : tem_op.resimplify (lseq, valueize);
6313 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6314 : 14 : if (!_r1) goto next_after_fail1573;
6315 : : }
6316 : : else
6317 : : _r1 = _o1[0];
6318 : 14 : res_op->ops[1] = _r1;
6319 : : }
6320 : 14 : res_op->resimplify (lseq, valueize);
6321 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 829, __FILE__, __LINE__, true);
6322 : 14 : return true;
6323 : : }
6324 : : next_after_fail1573:;
6325 : : }
6326 : : else
6327 : : {
6328 : 105 : if ((code1 == NE_EXPR
6329 : 105 : && code2 == LE_EXPR
6330 : 7 : && cmp == 0
6331 : 7 : && allbits)
6332 : 105 : && ((VECTOR_BOOLEAN_TYPE_P (type)
6333 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
6334 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
6335 : : )
6336 : : {
6337 : 0 : gimple_seq *lseq = seq;
6338 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1574;
6339 : 0 : {
6340 : 0 : res_op->set_op (LT_EXPR, type, 2);
6341 : 0 : res_op->ops[0] = captures[4];
6342 : 0 : {
6343 : 0 : tree _o1[1], _r1;
6344 : 0 : _o1[0] = captures[2];
6345 : 0 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6346 : 0 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6347 : : {
6348 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6349 : 0 : tem_op.resimplify (lseq, valueize);
6350 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6351 : 0 : if (!_r1) goto next_after_fail1574;
6352 : : }
6353 : : else
6354 : : _r1 = _o1[0];
6355 : 0 : res_op->ops[1] = _r1;
6356 : : }
6357 : 0 : res_op->resimplify (lseq, valueize);
6358 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
6359 : 0 : return true;
6360 : : }
6361 : : next_after_fail1574:;
6362 : : }
6363 : : else
6364 : : {
6365 : 105 : if ((code1 == NE_EXPR
6366 : 105 : && code2 == GT_EXPR
6367 : : && one_after
6368 : 59 : && allbits)
6369 : 152 : && ((VECTOR_BOOLEAN_TYPE_P (type)
6370 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
6371 : 47 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
6372 : : )
6373 : : {
6374 : 47 : gimple_seq *lseq = seq;
6375 : 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1575;
6376 : 47 : {
6377 : 47 : res_op->set_op (GT_EXPR, type, 2);
6378 : 47 : res_op->ops[0] = captures[4];
6379 : 47 : {
6380 : 47 : tree _o1[1], _r1;
6381 : 47 : _o1[0] = captures[2];
6382 : 47 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6383 : 47 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6384 : : {
6385 : 47 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6386 : 47 : tem_op.resimplify (lseq, valueize);
6387 : 47 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6388 : 47 : if (!_r1) goto next_after_fail1575;
6389 : : }
6390 : : else
6391 : : _r1 = _o1[0];
6392 : 47 : res_op->ops[1] = _r1;
6393 : : }
6394 : 47 : res_op->resimplify (lseq, valueize);
6395 : 47 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 831, __FILE__, __LINE__, true);
6396 : 47 : return true;
6397 : : }
6398 : : next_after_fail1575:;
6399 : : }
6400 : : else
6401 : : {
6402 : 58 : if ((code1 == NE_EXPR
6403 : 58 : && code2 == LT_EXPR
6404 : : && one_before
6405 : 0 : && allbits)
6406 : 58 : && ((VECTOR_BOOLEAN_TYPE_P (type)
6407 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
6408 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
6409 : : )
6410 : : {
6411 : 0 : gimple_seq *lseq = seq;
6412 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1576;
6413 : 0 : {
6414 : 0 : res_op->set_op (LT_EXPR, type, 2);
6415 : 0 : res_op->ops[0] = captures[4];
6416 : 0 : {
6417 : 0 : tree _o1[1], _r1;
6418 : 0 : _o1[0] = captures[2];
6419 : 0 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6420 : 0 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6421 : : {
6422 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6423 : 0 : tem_op.resimplify (lseq, valueize);
6424 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6425 : 0 : if (!_r1) goto next_after_fail1576;
6426 : : }
6427 : : else
6428 : : _r1 = _o1[0];
6429 : 0 : res_op->ops[1] = _r1;
6430 : : }
6431 : 0 : res_op->resimplify (lseq, valueize);
6432 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 832, __FILE__, __LINE__, true);
6433 : 0 : return true;
6434 : : }
6435 : : next_after_fail1576:;
6436 : : }
6437 : : }
6438 : : }
6439 : : }
6440 : : }
6441 : : }
6442 : : }
6443 : : }
6444 : : }
6445 : : return false;
6446 : : }
6447 : :
6448 : : bool
6449 : 4 : gimple_simplify_608 (gimple_match_op *res_op, gimple_seq *seq,
6450 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6451 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6452 : : {
6453 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6454 : 4 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
6455 : : )
6456 : : {
6457 : 4 : gimple_seq *lseq = seq;
6458 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1619;
6459 : 4 : {
6460 : 4 : res_op->set_op (NOP_EXPR, type, 1);
6461 : 4 : {
6462 : 4 : tree _o1[2], _r1;
6463 : 4 : _o1[0] = captures[0];
6464 : 4 : _o1[1] = captures[1];
6465 : 4 : (*res_op).set_op (BIT_XOR_EXPR, TREE_TYPE (_o1[0]), 2);
6466 : 4 : (*res_op).ops[0] = _o1[0];
6467 : 4 : (*res_op).ops[1] = _o1[1];
6468 : 4 : (*res_op).resimplify (lseq, valueize);
6469 : : }
6470 : 4 : if (type != res_op->type
6471 : 4 : && !useless_type_conversion_p (type, res_op->type))
6472 : : {
6473 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1619;
6474 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6475 : 0 : res_op->resimplify (lseq, valueize);
6476 : : }
6477 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 862, __FILE__, __LINE__, true);
6478 : 4 : return true;
6479 : : }
6480 : : next_after_fail1619:;
6481 : : }
6482 : : return false;
6483 : : }
6484 : :
6485 : : bool
6486 : 1107 : gimple_simplify_615 (gimple_match_op *res_op, gimple_seq *seq,
6487 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6488 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6489 : : const enum tree_code ARG_UNUSED (minmax))
6490 : : {
6491 : 1107 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6492 : 1107 : gimple_seq *lseq = seq;
6493 : 1107 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1627;
6494 : 1107 : {
6495 : 1107 : tree tem;
6496 : 1107 : tem = captures[0];
6497 : 1107 : res_op->set_value (tem);
6498 : 1107 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 868, __FILE__, __LINE__, true);
6499 : : return true;
6500 : : }
6501 : 0 : next_after_fail1627:;
6502 : 0 : return false;
6503 : : }
6504 : :
6505 : : bool
6506 : 28 : gimple_simplify_619 (gimple_match_op *res_op, gimple_seq *seq,
6507 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6508 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6509 : : const enum tree_code ARG_UNUSED (minmax),
6510 : : const enum tree_code ARG_UNUSED (cmp))
6511 : : {
6512 : 28 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6513 : 28 : {
6514 : 28 : poly_int64 off0, off1;
6515 : 28 : tree base0, base1;
6516 : 28 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
6517 : : off0, off1,
6518 : :
6519 : : );
6520 : 28 : if (equal == 1
6521 : : )
6522 : : {
6523 : 0 : if (minmax == MIN_EXPR
6524 : : )
6525 : : {
6526 : 0 : if (known_le (off0, off1)
6527 : : )
6528 : : {
6529 : 0 : gimple_seq *lseq = seq;
6530 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1631;
6531 : 0 : {
6532 : 0 : tree tem;
6533 : 0 : tem = captures[0];
6534 : 0 : res_op->set_value (tem);
6535 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 871, __FILE__, __LINE__, true);
6536 : 0 : return true;
6537 : : }
6538 : 0 : next_after_fail1631:;
6539 : : }
6540 : : else
6541 : : {
6542 : 0 : if (known_gt (off0, off1)
6543 : : )
6544 : : {
6545 : 0 : gimple_seq *lseq = seq;
6546 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1632;
6547 : 0 : {
6548 : 0 : tree tem;
6549 : 0 : tem = captures[2];
6550 : 0 : res_op->set_value (tem);
6551 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
6552 : 0 : return true;
6553 : : }
6554 : 0 : next_after_fail1632:;
6555 : : }
6556 : : }
6557 : : }
6558 : : else
6559 : : {
6560 : 0 : if (known_ge (off0, off1)
6561 : : )
6562 : : {
6563 : 0 : gimple_seq *lseq = seq;
6564 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1633;
6565 : 0 : {
6566 : 0 : tree tem;
6567 : 0 : tem = captures[0];
6568 : 0 : res_op->set_value (tem);
6569 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 873, __FILE__, __LINE__, true);
6570 : 0 : return true;
6571 : : }
6572 : 0 : next_after_fail1633:;
6573 : : }
6574 : : else
6575 : : {
6576 : 0 : if (known_lt (off0, off1)
6577 : : )
6578 : : {
6579 : 0 : gimple_seq *lseq = seq;
6580 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1634;
6581 : 0 : {
6582 : 0 : tree tem;
6583 : 0 : tem = captures[2];
6584 : 0 : res_op->set_value (tem);
6585 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 874, __FILE__, __LINE__, true);
6586 : 0 : return true;
6587 : : }
6588 : 0 : next_after_fail1634:;
6589 : : }
6590 : : }
6591 : : }
6592 : : }
6593 : : }
6594 : 28 : return false;
6595 : : }
6596 : :
6597 : : bool
6598 : 147379 : gimple_simplify_633 (gimple_match_op *res_op, gimple_seq *seq,
6599 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6600 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6601 : : {
6602 : 147379 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6603 : 294758 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6604 : 147379 : && TYPE_MAX_VALUE (TREE_TYPE (captures[1]))
6605 : 147379 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (TREE_TYPE (captures[0])))
6606 : 214561 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
6607 : : )
6608 : : {
6609 : 52833 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
6610 : : )
6611 : : {
6612 : 29347 : gimple_seq *lseq = seq;
6613 : 29347 : if (lseq
6614 : 9951 : && (!single_use (captures[0])))
6615 : 28633 : lseq = NULL;
6616 : 29347 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1658;
6617 : 29347 : {
6618 : 29347 : res_op->set_op (NOP_EXPR, type, 1);
6619 : 29347 : {
6620 : 29347 : tree _o1[2], _r1;
6621 : 29347 : _o1[0] = captures[1];
6622 : 29347 : {
6623 : 29347 : tree _o2[2], _r2;
6624 : 29347 : _o2[0] = TYPE_MAX_VALUE (TREE_TYPE (captures[1]));
6625 : 29347 : _o2[1] = captures[2];
6626 : 29347 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6627 : 29347 : tem_op.resimplify (NULL, valueize);
6628 : 29347 : _r2 = maybe_push_res_to_seq (&tem_op, NULL);
6629 : 29347 : if (!_r2) goto next_after_fail1658;
6630 : 29347 : _o1[1] = _r2;
6631 : : }
6632 : 29347 : (*res_op).set_op (GT_EXPR, boolean_type_node, 2);
6633 : 29347 : (*res_op).ops[0] = _o1[0];
6634 : 29347 : (*res_op).ops[1] = _o1[1];
6635 : 29347 : (*res_op).resimplify (lseq, valueize);
6636 : : }
6637 : 29347 : if (type != res_op->type
6638 : 29347 : && !useless_type_conversion_p (type, res_op->type))
6639 : : {
6640 : 29347 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1658;
6641 : 815 : res_op->set_op (NOP_EXPR, type, 1);
6642 : 815 : res_op->resimplify (lseq, valueize);
6643 : : }
6644 : 815 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
6645 : 815 : return true;
6646 : : }
6647 : : next_after_fail1658:;
6648 : : }
6649 : : else
6650 : : {
6651 : 23486 : if (TYPE_MIN_VALUE (TREE_TYPE (captures[1]))
6652 : : )
6653 : : {
6654 : 23486 : if (integer_minus_onep (captures[2])
6655 : : )
6656 : : {
6657 : 1445 : gimple_seq *lseq = seq;
6658 : 1445 : if (lseq
6659 : 504 : && (!single_use (captures[0])))
6660 : 1403 : lseq = NULL;
6661 : 1445 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1659;
6662 : 1445 : {
6663 : 1445 : res_op->set_op (NOP_EXPR, type, 1);
6664 : 1445 : {
6665 : 1445 : tree _o1[2], _r1;
6666 : 1445 : _o1[0] = captures[1];
6667 : 1445 : _o1[1] = TYPE_MIN_VALUE (TREE_TYPE (captures[1]));
6668 : 1445 : (*res_op).set_op (EQ_EXPR, boolean_type_node, 2);
6669 : 1445 : (*res_op).ops[0] = _o1[0];
6670 : 1445 : (*res_op).ops[1] = _o1[1];
6671 : 1445 : (*res_op).resimplify (lseq, valueize);
6672 : : }
6673 : 1445 : if (type != res_op->type
6674 : 1445 : && !useless_type_conversion_p (type, res_op->type))
6675 : : {
6676 : 1445 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1659;
6677 : 42 : res_op->set_op (NOP_EXPR, type, 1);
6678 : 42 : res_op->resimplify (lseq, valueize);
6679 : : }
6680 : 42 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 887, __FILE__, __LINE__, true);
6681 : 42 : return true;
6682 : : }
6683 : : next_after_fail1659:;
6684 : : }
6685 : : else
6686 : : {
6687 : 22041 : {
6688 : 22041 : tree div = fold_convert (TREE_TYPE (captures[1]), captures[2]);
6689 : 44082 : tree lo = int_const_binop (TRUNC_DIV_EXPR,
6690 : 22041 : TYPE_MIN_VALUE (TREE_TYPE (captures[1])), div);
6691 : 44082 : tree hi = int_const_binop (TRUNC_DIV_EXPR,
6692 : 22041 : TYPE_MAX_VALUE (TREE_TYPE (captures[1])), div);
6693 : 22041 : tree etype = range_check_type (TREE_TYPE (captures[1]));
6694 : 22041 : if (etype)
6695 : : {
6696 : 22041 : if (wi::neg_p (wi::to_wide (div)))
6697 : 1440 : std::swap (lo, hi);
6698 : 22041 : lo = fold_convert (etype, lo);
6699 : 22041 : hi = fold_convert (etype, hi);
6700 : 22041 : hi = int_const_binop (MINUS_EXPR, hi, lo);
6701 : : }
6702 : 22041 : if (etype
6703 : : )
6704 : : {
6705 : 22041 : gimple_seq *lseq = seq;
6706 : 22041 : if (lseq
6707 : 7416 : && (!single_use (captures[0])))
6708 : 21453 : lseq = NULL;
6709 : 22041 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1660;
6710 : 22041 : {
6711 : 22041 : res_op->set_op (NOP_EXPR, type, 1);
6712 : 22041 : {
6713 : 22041 : tree _o1[2], _r1;
6714 : 22041 : {
6715 : 22041 : tree _o2[2], _r2;
6716 : 22041 : {
6717 : 22041 : tree _o3[1], _r3;
6718 : 22041 : _o3[0] = captures[1];
6719 : 22041 : if (etype != TREE_TYPE (_o3[0]) /* XXX */
6720 : 22041 : && !useless_type_conversion_p (etype, TREE_TYPE (_o3[0])))
6721 : : {
6722 : 22041 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, etype, _o3[0]);
6723 : 22041 : tem_op.resimplify (lseq, valueize);
6724 : 22041 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
6725 : 22041 : if (!_r3) goto next_after_fail1660;
6726 : : }
6727 : : else
6728 : : _r3 = _o3[0];
6729 : 588 : _o2[0] = _r3;
6730 : : }
6731 : 588 : _o2[1] = lo;
6732 : 588 : gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6733 : 588 : tem_op.resimplify (lseq, valueize);
6734 : 588 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6735 : 588 : if (!_r2) goto next_after_fail1660;
6736 : 588 : _o1[0] = _r2;
6737 : : }
6738 : 588 : _o1[1] = hi;
6739 : 588 : (*res_op).set_op (GT_EXPR, boolean_type_node, 2);
6740 : 588 : (*res_op).ops[0] = _o1[0];
6741 : 588 : (*res_op).ops[1] = _o1[1];
6742 : 588 : (*res_op).resimplify (lseq, valueize);
6743 : : }
6744 : 588 : if (type != res_op->type
6745 : 588 : && !useless_type_conversion_p (type, res_op->type))
6746 : : {
6747 : 588 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1660;
6748 : 588 : res_op->set_op (NOP_EXPR, type, 1);
6749 : 588 : res_op->resimplify (lseq, valueize);
6750 : : }
6751 : 588 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 888, __FILE__, __LINE__, true);
6752 : 588 : return true;
6753 : : }
6754 : : next_after_fail1660:;
6755 : : }
6756 : : }
6757 : : }
6758 : : }
6759 : : }
6760 : : }
6761 : : return false;
6762 : : }
6763 : :
6764 : : bool
6765 : 41 : gimple_simplify_667 (gimple_match_op *res_op, gimple_seq *seq,
6766 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6767 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6768 : : const combined_fn ARG_UNUSED (sins),
6769 : : const combined_fn ARG_UNUSED (atans),
6770 : : const combined_fn ARG_UNUSED (sqrts),
6771 : : const combined_fn ARG_UNUSED (copysigns))
6772 : : {
6773 : 41 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6774 : 41 : {
6775 : 41 : REAL_VALUE_TYPE r_cst;
6776 : 41 : build_sinatan_real (&r_cst, type);
6777 : 41 : tree t_cst = build_real (type, r_cst);
6778 : 41 : tree t_one = build_one_cst (type);
6779 : 41 : if (SCALAR_FLOAT_TYPE_P (type)
6780 : : )
6781 : : {
6782 : 41 : gimple_seq *lseq = seq;
6783 : 41 : if (lseq
6784 : 21 : && (!single_use (captures[0])))
6785 : 34 : lseq = NULL;
6786 : 41 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1694;
6787 : 41 : {
6788 : 41 : res_op->set_op (COND_EXPR, type, 3);
6789 : 41 : {
6790 : 41 : tree _o1[2], _r1;
6791 : 41 : {
6792 : 41 : tree _o2[1], _r2;
6793 : 41 : _o2[0] = captures[1];
6794 : 41 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6795 : 41 : tem_op.resimplify (lseq, valueize);
6796 : 41 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6797 : 41 : if (!_r2) goto next_after_fail1694;
6798 : 7 : _o1[0] = _r2;
6799 : : }
6800 : 7 : _o1[1] = t_cst;
6801 : 7 : gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
6802 : 7 : tem_op.resimplify (lseq, valueize);
6803 : 7 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6804 : 7 : if (!_r1) goto next_after_fail1694;
6805 : 7 : res_op->ops[0] = _r1;
6806 : : }
6807 : 7 : {
6808 : 7 : tree _o1[2], _r1;
6809 : 7 : _o1[0] = captures[1];
6810 : 7 : {
6811 : 7 : tree _o2[1], _r2;
6812 : 7 : {
6813 : 7 : tree _o3[2], _r3;
6814 : 7 : {
6815 : 7 : tree _o4[2], _r4;
6816 : 7 : _o4[0] = captures[1];
6817 : 7 : _o4[1] = captures[1];
6818 : 7 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o4[0]), _o4[0], _o4[1]);
6819 : 7 : tem_op.resimplify (lseq, valueize);
6820 : 7 : _r4 = maybe_push_res_to_seq (&tem_op, lseq);
6821 : 7 : if (!_r4) goto next_after_fail1694;
6822 : 7 : _o3[0] = _r4;
6823 : : }
6824 : 7 : _o3[1] = t_one;
6825 : 7 : gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
6826 : 7 : tem_op.resimplify (lseq, valueize);
6827 : 7 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
6828 : 7 : if (!_r3) goto next_after_fail1694;
6829 : 7 : _o2[0] = _r3;
6830 : : }
6831 : 7 : gimple_match_op tem_op (res_op->cond.any_else (), sqrts, TREE_TYPE (_o2[0]), _o2[0]);
6832 : 7 : tem_op.resimplify (lseq, valueize);
6833 : 7 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6834 : 7 : if (!_r2) goto next_after_fail1694;
6835 : 7 : _o1[1] = _r2;
6836 : : }
6837 : 7 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6838 : 7 : tem_op.resimplify (lseq, valueize);
6839 : 7 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6840 : 7 : if (!_r1) goto next_after_fail1694;
6841 : 7 : res_op->ops[1] = _r1;
6842 : : }
6843 : 7 : {
6844 : 7 : tree _o1[2], _r1;
6845 : 7 : _o1[0] = t_one;
6846 : 7 : _o1[1] = captures[1];
6847 : 7 : gimple_match_op tem_op (res_op->cond.any_else (), copysigns, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6848 : 7 : tem_op.resimplify (lseq, valueize);
6849 : 7 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6850 : 7 : if (!_r1) goto next_after_fail1694;
6851 : 7 : res_op->ops[2] = _r1;
6852 : : }
6853 : 7 : res_op->resimplify (lseq, valueize);
6854 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 917, __FILE__, __LINE__, true);
6855 : 7 : return true;
6856 : : }
6857 : 34 : next_after_fail1694:;
6858 : : }
6859 : : }
6860 : 34 : return false;
6861 : : }
6862 : :
6863 : : bool
6864 : 0 : gimple_simplify_700 (gimple_match_op *res_op, gimple_seq *seq,
6865 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6866 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6867 : : const enum tree_code ARG_UNUSED (rot),
6868 : : const combined_fn ARG_UNUSED (popcount))
6869 : : {
6870 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6871 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6872 : 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6873 : 0 : && (
6874 : : 1
6875 : : || !TREE_SIDE_EFFECTS (captures[3]))
6876 : : )
6877 : : {
6878 : 0 : {
6879 : 0 : tree type0 = TREE_TYPE (captures[0]);
6880 : 0 : tree type1 = TREE_TYPE (captures[1]);
6881 : 0 : unsigned int prec0 = TYPE_PRECISION (type0);
6882 : 0 : unsigned int prec1 = TYPE_PRECISION (type1);
6883 : 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
6884 : : )
6885 : : {
6886 : 0 : gimple_seq *lseq = seq;
6887 : 0 : if (lseq
6888 : 0 : && (!single_use (captures[1])))
6889 : 0 : lseq = NULL;
6890 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1729;
6891 : 0 : {
6892 : 0 : res_op->set_op (popcount, type, 1);
6893 : 0 : {
6894 : 0 : tree _o1[1], _r1;
6895 : 0 : _o1[0] = captures[2];
6896 : 0 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
6897 : 0 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
6898 : : {
6899 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
6900 : 0 : tem_op.resimplify (lseq, valueize);
6901 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6902 : 0 : if (!_r1) goto next_after_fail1729;
6903 : : }
6904 : : else
6905 : : _r1 = _o1[0];
6906 : 0 : res_op->ops[0] = _r1;
6907 : : }
6908 : 0 : res_op->resimplify (lseq, valueize);
6909 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 949, __FILE__, __LINE__, true);
6910 : 0 : return true;
6911 : : }
6912 : : next_after_fail1729:;
6913 : : }
6914 : : }
6915 : : }
6916 : : return false;
6917 : : }
6918 : :
6919 : : bool
6920 : 281 : gimple_simplify_708 (gimple_match_op *res_op, gimple_seq *seq,
6921 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6922 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6923 : : const combined_fn ARG_UNUSED (PARITY))
6924 : : {
6925 : 281 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6926 : 562 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6927 : 281 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6928 : 281 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
6929 : 416 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
6930 : 24 : || ((TYPE_PRECISION (TREE_TYPE (captures[0]))
6931 : 24 : - TYPE_PRECISION (TREE_TYPE (captures[1]))) & 1) == 0)
6932 : : )
6933 : : {
6934 : 135 : {
6935 : 135 : combined_fn cfn = CFN_LAST;
6936 : 135 : tree type0 = TREE_TYPE (captures[1]);
6937 : 135 : if (TREE_CODE (type0) == BITINT_TYPE)
6938 : : {
6939 : 8 : if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
6940 : : cfn = CFN_PARITY;
6941 : : else
6942 : 0 : type0
6943 : 0 : = build_nonstandard_integer_type (TYPE_PRECISION (type0),
6944 : : 1);
6945 : : }
6946 : 135 : type0 = unsigned_type_for (type0);
6947 : 135 : if (cfn == CFN_LAST
6948 : 135 : && direct_internal_fn_supported_p (IFN_PARITY, type0,
6949 : : OPTIMIZE_FOR_BOTH))
6950 : : cfn = CFN_PARITY;
6951 : 81 : if (cfn == CFN_LAST
6952 : 77 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > BITS_PER_WORD
6953 : 81 : && !direct_internal_fn_supported_p (IFN_PARITY,
6954 : 0 : TREE_TYPE (captures[0]),
6955 : : OPTIMIZE_FOR_BOTH))
6956 : : {
6957 : 0 : if (TYPE_PRECISION (type0)
6958 : 0 : == TYPE_PRECISION (unsigned_type_node))
6959 : : cfn = CFN_BUILT_IN_PARITY;
6960 : 0 : else if (TYPE_PRECISION (type0)
6961 : 0 : == TYPE_PRECISION (long_long_unsigned_type_node))
6962 : : cfn = CFN_BUILT_IN_PARITYLL;
6963 : : }
6964 : 135 : if (cfn == CFN_PARITY
6965 : : )
6966 : : {
6967 : 58 : gimple_seq *lseq = seq;
6968 : 58 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1740;
6969 : 58 : {
6970 : 58 : res_op->set_op (CFN_PARITY, type, 1);
6971 : 58 : {
6972 : 58 : tree _o1[1], _r1;
6973 : 58 : _o1[0] = captures[1];
6974 : 58 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
6975 : 58 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
6976 : : {
6977 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
6978 : 2 : tem_op.resimplify (lseq, valueize);
6979 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6980 : 2 : if (!_r1) goto next_after_fail1740;
6981 : : }
6982 : : else
6983 : : _r1 = _o1[0];
6984 : 57 : res_op->ops[0] = _r1;
6985 : : }
6986 : 57 : res_op->resimplify (lseq, valueize);
6987 : 57 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 958, __FILE__, __LINE__, true);
6988 : 57 : return true;
6989 : : }
6990 : : next_after_fail1740:;
6991 : : }
6992 : : else
6993 : : {
6994 : 77 : if (cfn == CFN_BUILT_IN_PARITY
6995 : : )
6996 : : {
6997 : 0 : gimple_seq *lseq = seq;
6998 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1741;
6999 : 0 : {
7000 : 0 : res_op->set_op (CFN_BUILT_IN_PARITY, type, 1);
7001 : 0 : {
7002 : 0 : tree _o1[1], _r1;
7003 : 0 : _o1[0] = captures[1];
7004 : 0 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
7005 : 0 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
7006 : : {
7007 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
7008 : 0 : tem_op.resimplify (lseq, valueize);
7009 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7010 : 0 : if (!_r1) goto next_after_fail1741;
7011 : : }
7012 : : else
7013 : : _r1 = _o1[0];
7014 : 0 : res_op->ops[0] = _r1;
7015 : : }
7016 : 0 : res_op->resimplify (lseq, valueize);
7017 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 959, __FILE__, __LINE__, true);
7018 : 0 : return true;
7019 : : }
7020 : : next_after_fail1741:;
7021 : : }
7022 : : else
7023 : : {
7024 : 77 : if (cfn == CFN_BUILT_IN_PARITYLL
7025 : : )
7026 : : {
7027 : 0 : gimple_seq *lseq = seq;
7028 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1742;
7029 : 0 : {
7030 : 0 : res_op->set_op (CFN_BUILT_IN_PARITYLL, type, 1);
7031 : 0 : {
7032 : 0 : tree _o1[1], _r1;
7033 : 0 : _o1[0] = captures[1];
7034 : 0 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
7035 : 0 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
7036 : : {
7037 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
7038 : 0 : tem_op.resimplify (lseq, valueize);
7039 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7040 : 0 : if (!_r1) goto next_after_fail1742;
7041 : : }
7042 : : else
7043 : : _r1 = _o1[0];
7044 : 0 : res_op->ops[0] = _r1;
7045 : : }
7046 : 0 : res_op->resimplify (lseq, valueize);
7047 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7048 : 0 : return true;
7049 : : }
7050 : : next_after_fail1742:;
7051 : : }
7052 : : }
7053 : : }
7054 : : }
7055 : : }
7056 : : return false;
7057 : : }
7058 : :
7059 : : bool
7060 : 0 : gimple_simplify_CFN_COS (gimple_match_op *res_op, gimple_seq *seq,
7061 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7062 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7063 : : {
7064 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7065 : 0 : switch (TREE_CODE (_p0))
7066 : : {
7067 : 0 : case SSA_NAME:
7068 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
7069 : : {
7070 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7071 : 0 : switch (gimple_assign_rhs_code (_a1))
7072 : : {
7073 : 0 : case NEGATE_EXPR:
7074 : 0 : {
7075 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7076 : 0 : _q20 = do_valueize (valueize, _q20);
7077 : 0 : {
7078 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7079 : 0 : const combined_fn coss = CFN_COS;
7080 : 0 : gimple_seq *lseq = seq;
7081 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1790;
7082 : 0 : {
7083 : 0 : res_op->set_op (coss, type, 1);
7084 : 0 : res_op->ops[0] = captures[0];
7085 : 0 : res_op->resimplify (lseq, valueize);
7086 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
7087 : 0 : return true;
7088 : : }
7089 : 0 : next_after_fail1790:;
7090 : : }
7091 : 0 : break;
7092 : : }
7093 : 0 : case ABS_EXPR:
7094 : 0 : {
7095 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7096 : 0 : _q20 = do_valueize (valueize, _q20);
7097 : 0 : {
7098 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7099 : 0 : const combined_fn coss = CFN_COS;
7100 : 0 : gimple_seq *lseq = seq;
7101 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1791;
7102 : 0 : {
7103 : 0 : res_op->set_op (coss, type, 1);
7104 : 0 : res_op->ops[0] = captures[0];
7105 : 0 : res_op->resimplify (lseq, valueize);
7106 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
7107 : 0 : return true;
7108 : : }
7109 : 0 : next_after_fail1791:;
7110 : : }
7111 : 0 : break;
7112 : : }
7113 : : default:;
7114 : : }
7115 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
7116 : 0 : switch (gimple_call_combined_fn (_c1))
7117 : : {
7118 : 0 : case CFN_BUILT_IN_COPYSIGN:
7119 : 0 : if (gimple_call_num_args (_c1) == 2)
7120 : : {
7121 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7122 : 0 : _q20 = do_valueize (valueize, _q20);
7123 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7124 : 0 : _q21 = do_valueize (valueize, _q21);
7125 : 0 : {
7126 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7127 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_COS))
7128 : 0 : return true;
7129 : : }
7130 : : }
7131 : : break;
7132 : 0 : case CFN_ATAN:
7133 : 0 : if (gimple_call_num_args (_c1) == 1)
7134 : : {
7135 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7136 : 0 : _q20 = do_valueize (valueize, _q20);
7137 : 0 : {
7138 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
7139 : 0 : if (gimple_simplify_524 (res_op, seq, valueize, type, captures, CFN_COS, CFN_ATAN, CFN_SQRT, CFN_COPYSIGN))
7140 : 0 : return true;
7141 : : }
7142 : : }
7143 : : break;
7144 : 0 : case CFN_BUILT_IN_COPYSIGNF:
7145 : 0 : if (gimple_call_num_args (_c1) == 2)
7146 : : {
7147 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7148 : 0 : _q20 = do_valueize (valueize, _q20);
7149 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7150 : 0 : _q21 = do_valueize (valueize, _q21);
7151 : 0 : {
7152 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7153 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_COS))
7154 : 0 : return true;
7155 : : }
7156 : : }
7157 : : break;
7158 : 0 : case CFN_BUILT_IN_COPYSIGNL:
7159 : 0 : if (gimple_call_num_args (_c1) == 2)
7160 : : {
7161 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7162 : 0 : _q20 = do_valueize (valueize, _q20);
7163 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7164 : 0 : _q21 = do_valueize (valueize, _q21);
7165 : 0 : {
7166 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7167 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_COS))
7168 : 0 : return true;
7169 : : }
7170 : : }
7171 : : break;
7172 : 0 : case CFN_COPYSIGN:
7173 : 0 : if (gimple_call_num_args (_c1) == 2)
7174 : : {
7175 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7176 : 0 : _q20 = do_valueize (valueize, _q20);
7177 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7178 : 0 : _q21 = do_valueize (valueize, _q21);
7179 : 0 : {
7180 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7181 : 0 : if (gimple_simplify_523 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_COS))
7182 : 0 : return true;
7183 : : }
7184 : : }
7185 : : break;
7186 : : default:;
7187 : : }
7188 : : }
7189 : : break;
7190 : : default:;
7191 : : }
7192 : : return false;
7193 : : }
7194 : :
7195 : : bool
7196 : 489 : gimple_simplify_CFN_BUILT_IN_CCOS (gimple_match_op *res_op, gimple_seq *seq,
7197 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7198 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7199 : : {
7200 : 489 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7201 : 489 : switch (TREE_CODE (_p0))
7202 : : {
7203 : 466 : case SSA_NAME:
7204 : 466 : if (gimple *_d1 = get_def (valueize, _p0))
7205 : : {
7206 : 295 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7207 : 347 : switch (gimple_assign_rhs_code (_a1))
7208 : : {
7209 : 18 : case NEGATE_EXPR:
7210 : 18 : {
7211 : 18 : tree _q20 = gimple_assign_rhs1 (_a1);
7212 : 18 : _q20 = do_valueize (valueize, _q20);
7213 : 18 : {
7214 : 18 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7215 : 18 : gimple_seq *lseq = seq;
7216 : 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1813;
7217 : 18 : {
7218 : 18 : res_op->set_op (CFN_BUILT_IN_CCOS, type, 1);
7219 : 18 : res_op->ops[0] = captures[0];
7220 : 18 : res_op->resimplify (lseq, valueize);
7221 : 18 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
7222 : 18 : return true;
7223 : : }
7224 : 0 : next_after_fail1813:;
7225 : : }
7226 : 0 : break;
7227 : : }
7228 : : default:;
7229 : : }
7230 : : }
7231 : : break;
7232 : : default:;
7233 : : }
7234 : : return false;
7235 : : }
7236 : :
7237 : : bool
7238 : 116 : gimple_simplify_CFN_BUILT_IN_CCOSHL (gimple_match_op *res_op, gimple_seq *seq,
7239 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7240 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7241 : : {
7242 : 116 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7243 : 116 : switch (TREE_CODE (_p0))
7244 : : {
7245 : 108 : case SSA_NAME:
7246 : 108 : if (gimple *_d1 = get_def (valueize, _p0))
7247 : : {
7248 : 71 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7249 : 58 : switch (gimple_assign_rhs_code (_a1))
7250 : : {
7251 : 14 : case NEGATE_EXPR:
7252 : 14 : {
7253 : 14 : tree _q20 = gimple_assign_rhs1 (_a1);
7254 : 14 : _q20 = do_valueize (valueize, _q20);
7255 : 14 : {
7256 : 14 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7257 : 14 : gimple_seq *lseq = seq;
7258 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1817;
7259 : 14 : {
7260 : 14 : res_op->set_op (CFN_BUILT_IN_CCOSHL, type, 1);
7261 : 14 : res_op->ops[0] = captures[0];
7262 : 14 : res_op->resimplify (lseq, valueize);
7263 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
7264 : 14 : return true;
7265 : : }
7266 : 0 : next_after_fail1817:;
7267 : : }
7268 : 0 : break;
7269 : : }
7270 : : default:;
7271 : : }
7272 : : }
7273 : : break;
7274 : : default:;
7275 : : }
7276 : : return false;
7277 : : }
7278 : :
7279 : : bool
7280 : 2244814 : gimple_simplify_BIT_NOT_EXPR (gimple_match_op *res_op, gimple_seq *seq,
7281 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7282 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7283 : : {
7284 : 2244814 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7285 : 2244814 : switch (TREE_CODE (_p0))
7286 : : {
7287 : 2152007 : case SSA_NAME:
7288 : 2152007 : if (gimple *_d1 = get_def (valueize, _p0))
7289 : : {
7290 : 1537713 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7291 : 1350980 : switch (gimple_assign_rhs_code (_a1))
7292 : : {
7293 : 13914 : case BIT_AND_EXPR:
7294 : 13914 : {
7295 : 13914 : tree _q20 = gimple_assign_rhs1 (_a1);
7296 : 13914 : _q20 = do_valueize (valueize, _q20);
7297 : 13914 : tree _q21 = gimple_assign_rhs2 (_a1);
7298 : 13914 : _q21 = do_valueize (valueize, _q21);
7299 : 13914 : if (tree_swap_operands_p (_q20, _q21))
7300 : 578 : std::swap (_q20, _q21);
7301 : 13914 : switch (TREE_CODE (_q20))
7302 : : {
7303 : 13914 : case SSA_NAME:
7304 : 13914 : if (gimple *_d2 = get_def (valueize, _q20))
7305 : : {
7306 : 13585 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7307 : 9232 : switch (gimple_assign_rhs_code (_a2))
7308 : : {
7309 : 140 : case BIT_NOT_EXPR:
7310 : 140 : {
7311 : 140 : tree _q30 = gimple_assign_rhs1 (_a2);
7312 : 140 : _q30 = do_valueize (valueize, _q30);
7313 : 140 : {
7314 : 140 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
7315 : 140 : if (gimple_simplify_600 (res_op, seq, valueize, type, captures))
7316 : 81 : return true;
7317 : : }
7318 : 59 : break;
7319 : : }
7320 : : default:;
7321 : : }
7322 : : }
7323 : : break;
7324 : 13833 : default:;
7325 : : }
7326 : 13833 : switch (TREE_CODE (_q21))
7327 : : {
7328 : 11402 : case SSA_NAME:
7329 : 11402 : if (gimple *_d2 = get_def (valueize, _q21))
7330 : : {
7331 : 11083 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7332 : 6298 : switch (gimple_assign_rhs_code (_a2))
7333 : : {
7334 : 213 : case BIT_NOT_EXPR:
7335 : 213 : {
7336 : 213 : tree _q40 = gimple_assign_rhs1 (_a2);
7337 : 213 : _q40 = do_valueize (valueize, _q40);
7338 : 213 : {
7339 : 213 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
7340 : 213 : if (gimple_simplify_600 (res_op, seq, valueize, type, captures))
7341 : 118 : return true;
7342 : : }
7343 : 95 : break;
7344 : : }
7345 : : default:;
7346 : : }
7347 : : }
7348 : : break;
7349 : : default:;
7350 : : }
7351 : 2244814 : break;
7352 : : }
7353 : 16183 : case BIT_IOR_EXPR:
7354 : 16183 : {
7355 : 16183 : tree _q20 = gimple_assign_rhs1 (_a1);
7356 : 16183 : _q20 = do_valueize (valueize, _q20);
7357 : 16183 : tree _q21 = gimple_assign_rhs2 (_a1);
7358 : 16183 : _q21 = do_valueize (valueize, _q21);
7359 : 16183 : if (tree_swap_operands_p (_q20, _q21))
7360 : 760 : std::swap (_q20, _q21);
7361 : 16183 : switch (TREE_CODE (_q20))
7362 : : {
7363 : 16183 : case SSA_NAME:
7364 : 16183 : if (gimple *_d2 = get_def (valueize, _q20))
7365 : : {
7366 : 15598 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7367 : 13082 : switch (gimple_assign_rhs_code (_a2))
7368 : : {
7369 : 28 : case BIT_NOT_EXPR:
7370 : 28 : {
7371 : 28 : tree _q30 = gimple_assign_rhs1 (_a2);
7372 : 28 : _q30 = do_valueize (valueize, _q30);
7373 : 28 : {
7374 : 28 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
7375 : 28 : if (gimple_simplify_601 (res_op, seq, valueize, type, captures))
7376 : 0 : return true;
7377 : : }
7378 : 28 : break;
7379 : : }
7380 : : default:;
7381 : : }
7382 : : }
7383 : : break;
7384 : 16183 : default:;
7385 : : }
7386 : 16183 : switch (TREE_CODE (_q21))
7387 : : {
7388 : 15370 : case SSA_NAME:
7389 : 15370 : if (gimple *_d2 = get_def (valueize, _q21))
7390 : : {
7391 : 15020 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7392 : 11592 : switch (gimple_assign_rhs_code (_a2))
7393 : : {
7394 : 30 : case BIT_NOT_EXPR:
7395 : 30 : {
7396 : 30 : tree _q40 = gimple_assign_rhs1 (_a2);
7397 : 30 : _q40 = do_valueize (valueize, _q40);
7398 : 30 : {
7399 : 30 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
7400 : 30 : if (gimple_simplify_601 (res_op, seq, valueize, type, captures))
7401 : 15 : return true;
7402 : : }
7403 : 15 : break;
7404 : : }
7405 : : default:;
7406 : : }
7407 : : }
7408 : : break;
7409 : : default:;
7410 : : }
7411 : 2244814 : break;
7412 : : }
7413 : 51504 : case MINUS_EXPR:
7414 : 51504 : {
7415 : 51504 : tree _q20 = gimple_assign_rhs1 (_a1);
7416 : 51504 : _q20 = do_valueize (valueize, _q20);
7417 : 51504 : tree _q21 = gimple_assign_rhs2 (_a1);
7418 : 51504 : _q21 = do_valueize (valueize, _q21);
7419 : 51504 : switch (TREE_CODE (_q20))
7420 : : {
7421 : 51504 : case SSA_NAME:
7422 : 51504 : if (gimple *_d2 = get_def (valueize, _q20))
7423 : : {
7424 : 51488 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7425 : 96662 : switch (gimple_assign_rhs_code (_a2))
7426 : : {
7427 : 5 : case BIT_NOT_EXPR:
7428 : 5 : {
7429 : 5 : tree _q30 = gimple_assign_rhs1 (_a2);
7430 : 5 : _q30 = do_valueize (valueize, _q30);
7431 : 5 : {
7432 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
7433 : 5 : gimple_seq *lseq = seq;
7434 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1833;
7435 : 5 : {
7436 : 5 : res_op->set_op (PLUS_EXPR, type, 2);
7437 : 5 : res_op->ops[0] = captures[0];
7438 : 5 : res_op->ops[1] = captures[1];
7439 : 5 : res_op->resimplify (lseq, valueize);
7440 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1008, __FILE__, __LINE__, true);
7441 : 5 : return true;
7442 : : }
7443 : 0 : next_after_fail1833:;
7444 : : }
7445 : 0 : break;
7446 : : }
7447 : : default:;
7448 : : }
7449 : : }
7450 : : break;
7451 : 51499 : default:;
7452 : : }
7453 : 51499 : {
7454 : 51499 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7455 : 51499 : gimple_seq *lseq = seq;
7456 : 51499 : if (lseq
7457 : 449 : && (!single_use (captures[0])))
7458 : 51460 : lseq = NULL;
7459 : 51499 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1834;
7460 : 51499 : {
7461 : 51499 : res_op->set_op (PLUS_EXPR, type, 2);
7462 : 51499 : {
7463 : 51499 : tree _o1[1], _r1;
7464 : 51499 : _o1[0] = captures[1];
7465 : 51499 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7466 : 51499 : tem_op.resimplify (lseq, valueize);
7467 : 51499 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7468 : 51499 : if (!_r1) goto next_after_fail1834;
7469 : 87 : res_op->ops[0] = _r1;
7470 : : }
7471 : 87 : res_op->ops[1] = captures[2];
7472 : 87 : res_op->resimplify (lseq, valueize);
7473 : 87 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
7474 : 87 : return true;
7475 : : }
7476 : 51412 : next_after_fail1834:;
7477 : : }
7478 : 51412 : if (integer_each_onep (_q21))
7479 : : {
7480 : 1 : {
7481 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7482 : 1 : if (gimple_simplify_602 (res_op, seq, valueize, type, captures))
7483 : 1 : return true;
7484 : : }
7485 : : }
7486 : : break;
7487 : : }
7488 : 104255 : case PLUS_EXPR:
7489 : 104255 : {
7490 : 104255 : tree _q20 = gimple_assign_rhs1 (_a1);
7491 : 104255 : _q20 = do_valueize (valueize, _q20);
7492 : 104255 : tree _q21 = gimple_assign_rhs2 (_a1);
7493 : 104255 : _q21 = do_valueize (valueize, _q21);
7494 : 104255 : if (tree_swap_operands_p (_q20, _q21))
7495 : 9532 : std::swap (_q20, _q21);
7496 : 104255 : switch (TREE_CODE (_q20))
7497 : : {
7498 : 104255 : case SSA_NAME:
7499 : 104255 : if (gimple *_d2 = get_def (valueize, _q20))
7500 : : {
7501 : 104140 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7502 : 121469 : switch (gimple_assign_rhs_code (_a2))
7503 : : {
7504 : 127 : case BIT_NOT_EXPR:
7505 : 127 : {
7506 : 127 : tree _q30 = gimple_assign_rhs1 (_a2);
7507 : 127 : _q30 = do_valueize (valueize, _q30);
7508 : 127 : {
7509 : 127 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
7510 : 127 : if (gimple_simplify_603 (res_op, seq, valueize, type, captures))
7511 : 127 : return true;
7512 : : }
7513 : 0 : break;
7514 : : }
7515 : : default:;
7516 : : }
7517 : : }
7518 : : break;
7519 : 104128 : default:;
7520 : : }
7521 : 104128 : switch (TREE_CODE (_q21))
7522 : : {
7523 : 97173 : case SSA_NAME:
7524 : 97173 : if (gimple *_d2 = get_def (valueize, _q21))
7525 : : {
7526 : 97110 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7527 : 103050 : switch (gimple_assign_rhs_code (_a2))
7528 : : {
7529 : 16 : case BIT_NOT_EXPR:
7530 : 16 : {
7531 : 16 : tree _q40 = gimple_assign_rhs1 (_a2);
7532 : 16 : _q40 = do_valueize (valueize, _q40);
7533 : 16 : {
7534 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7535 : 16 : if (gimple_simplify_603 (res_op, seq, valueize, type, captures))
7536 : 16 : return true;
7537 : : }
7538 : 0 : break;
7539 : : }
7540 : : default:;
7541 : : }
7542 : : }
7543 : : break;
7544 : 6955 : case INTEGER_CST:
7545 : 6955 : {
7546 : 6955 : {
7547 : 6955 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7548 : 6955 : if ((INTEGRAL_TYPE_P (type)
7549 : 6955 : && TYPE_UNSIGNED (type))
7550 : 13380 : || (!TYPE_OVERFLOW_SANITIZED (type)
7551 : 6425 : && may_negate_without_overflow_p (captures[2]))
7552 : : )
7553 : : {
7554 : 6685 : gimple_seq *lseq = seq;
7555 : 6685 : if (lseq
7556 : 1939 : && (!single_use (captures[0])))
7557 : 6640 : lseq = NULL;
7558 : 6685 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1835;
7559 : 6685 : {
7560 : 6685 : res_op->set_op (PLUS_EXPR, type, 2);
7561 : 6685 : {
7562 : 6685 : tree _o1[1], _r1;
7563 : 6685 : _o1[0] = captures[1];
7564 : 6685 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7565 : 6685 : tem_op.resimplify (lseq, valueize);
7566 : 6685 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7567 : 6685 : if (!_r1) goto next_after_fail1835;
7568 : 102 : res_op->ops[0] = _r1;
7569 : : }
7570 : 102 : res_op->ops[1] = const_unop (NEGATE_EXPR, type, captures[2]);
7571 : 102 : res_op->resimplify (lseq, valueize);
7572 : 102 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
7573 : 102 : return true;
7574 : : }
7575 : 6853 : next_after_fail1835:;
7576 : : }
7577 : : }
7578 : 6853 : break;
7579 : : }
7580 : 104010 : default:;
7581 : : }
7582 : 104010 : if (integer_all_onesp (_q21))
7583 : : {
7584 : 111 : {
7585 : 111 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7586 : 111 : if (gimple_simplify_604 (res_op, seq, valueize, type, captures))
7587 : 111 : return true;
7588 : : }
7589 : : }
7590 : 2244814 : break;
7591 : : }
7592 : 13677 : case RSHIFT_EXPR:
7593 : 13677 : {
7594 : 13677 : tree _q20 = gimple_assign_rhs1 (_a1);
7595 : 13677 : _q20 = do_valueize (valueize, _q20);
7596 : 13677 : tree _q21 = gimple_assign_rhs2 (_a1);
7597 : 13677 : _q21 = do_valueize (valueize, _q21);
7598 : 13677 : {
7599 : 13677 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7600 : 13677 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[1]))
7601 : : )
7602 : : {
7603 : 2715 : gimple_seq *lseq = seq;
7604 : 2715 : if (lseq
7605 : 965 : && (!single_use (captures[0])))
7606 : 1846 : lseq = NULL;
7607 : 2715 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1836;
7608 : 2715 : {
7609 : 2715 : res_op->set_op (RSHIFT_EXPR, type, 2);
7610 : 2715 : {
7611 : 2715 : tree _o1[1], _r1;
7612 : 2715 : _o1[0] = captures[1];
7613 : 2715 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7614 : 2715 : tem_op.resimplify (NULL, valueize);
7615 : 2715 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
7616 : 2715 : if (!_r1) goto next_after_fail1836;
7617 : 0 : res_op->ops[0] = _r1;
7618 : : }
7619 : 0 : res_op->ops[1] = captures[2];
7620 : 0 : res_op->resimplify (lseq, valueize);
7621 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
7622 : 0 : return true;
7623 : : }
7624 : 13321 : next_after_fail1836:;
7625 : : }
7626 : : else
7627 : : {
7628 : 21924 : if (INTEGRAL_TYPE_P (type)
7629 : 21924 : && !wi::neg_p (tree_nonzero_bits (captures[1]))
7630 : : )
7631 : : {
7632 : 1259 : {
7633 : 1259 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
7634 : 1259 : gimple_seq *lseq = seq;
7635 : 1259 : if (lseq
7636 : 402 : && (!single_use (captures[0])))
7637 : 901 : lseq = NULL;
7638 : 1259 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1837;
7639 : 1259 : {
7640 : 1259 : res_op->set_op (NOP_EXPR, type, 1);
7641 : 1259 : {
7642 : 1259 : tree _o1[2], _r1;
7643 : 1259 : {
7644 : 1259 : tree _o2[1], _r2;
7645 : 1259 : {
7646 : 1259 : tree _o3[1], _r3;
7647 : 1259 : _o3[0] = captures[1];
7648 : 1259 : if (stype != TREE_TYPE (_o3[0]) /* XXX */
7649 : 1259 : && !useless_type_conversion_p (stype, TREE_TYPE (_o3[0])))
7650 : : {
7651 : 1259 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o3[0]);
7652 : 1259 : tem_op.resimplify (lseq, valueize);
7653 : 1259 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
7654 : 1259 : if (!_r3) goto next_after_fail1837;
7655 : : }
7656 : : else
7657 : : _r3 = _o3[0];
7658 : 1028 : _o2[0] = _r3;
7659 : : }
7660 : 1028 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
7661 : 1028 : tem_op.resimplify (NULL, valueize);
7662 : 1028 : _r2 = maybe_push_res_to_seq (&tem_op, NULL);
7663 : 1028 : if (!_r2) goto next_after_fail1837;
7664 : 1026 : _o1[0] = _r2;
7665 : : }
7666 : 1026 : _o1[1] = captures[2];
7667 : 1026 : (*res_op).set_op (RSHIFT_EXPR, TREE_TYPE (_o1[0]), 2);
7668 : 1026 : (*res_op).ops[0] = _o1[0];
7669 : 1026 : (*res_op).ops[1] = _o1[1];
7670 : 1026 : (*res_op).resimplify (lseq, valueize);
7671 : : }
7672 : 1026 : if (type != res_op->type
7673 : 1026 : && !useless_type_conversion_p (type, res_op->type))
7674 : : {
7675 : 1026 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1837;
7676 : 356 : res_op->set_op (NOP_EXPR, type, 1);
7677 : 356 : res_op->resimplify (lseq, valueize);
7678 : : }
7679 : 356 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
7680 : 356 : return true;
7681 : : }
7682 : 13321 : next_after_fail1837:;
7683 : : }
7684 : : }
7685 : : }
7686 : : }
7687 : 13321 : switch (TREE_CODE (_q20))
7688 : : {
7689 : 11302 : case SSA_NAME:
7690 : 11302 : if (gimple *_d2 = get_def (valueize, _q20))
7691 : : {
7692 : 10921 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7693 : 9461 : switch (gimple_assign_rhs_code (_a2))
7694 : : {
7695 : 4825 : CASE_CONVERT:
7696 : 4825 : {
7697 : 4825 : tree _q30 = gimple_assign_rhs1 (_a2);
7698 : 4825 : _q30 = do_valueize (valueize, _q30);
7699 : 4825 : switch (TREE_CODE (_q30))
7700 : : {
7701 : 4825 : case SSA_NAME:
7702 : 4825 : if (gimple *_d3 = get_def (valueize, _q30))
7703 : : {
7704 : 4792 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
7705 : 1749 : switch (gimple_assign_rhs_code (_a3))
7706 : : {
7707 : 10 : case BIT_NOT_EXPR:
7708 : 10 : {
7709 : 10 : tree _q40 = gimple_assign_rhs1 (_a3);
7710 : 10 : _q40 = do_valueize (valueize, _q40);
7711 : 10 : {
7712 : 10 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
7713 : 10 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures))
7714 : 0 : return true;
7715 : : }
7716 : 10 : break;
7717 : : }
7718 : : default:;
7719 : : }
7720 : : }
7721 : : break;
7722 : : default:;
7723 : : }
7724 : : break;
7725 : : }
7726 : 124 : case BIT_NOT_EXPR:
7727 : 124 : {
7728 : 124 : tree _q30 = gimple_assign_rhs1 (_a2);
7729 : 124 : _q30 = do_valueize (valueize, _q30);
7730 : 124 : {
7731 : 124 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
7732 : 124 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures))
7733 : 0 : return true;
7734 : : }
7735 : 124 : break;
7736 : : }
7737 : : default:;
7738 : : }
7739 : : }
7740 : : break;
7741 : : default:;
7742 : : }
7743 : : break;
7744 : : }
7745 : 3501 : case BIT_NOT_EXPR:
7746 : 3501 : {
7747 : 3501 : tree _q20 = gimple_assign_rhs1 (_a1);
7748 : 3501 : _q20 = do_valueize (valueize, _q20);
7749 : 3501 : {
7750 : 3501 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7751 : 3501 : gimple_seq *lseq = seq;
7752 : 3501 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1838;
7753 : 3501 : {
7754 : 3501 : tree tem;
7755 : 3501 : tem = captures[0];
7756 : 3501 : res_op->set_value (tem);
7757 : 3501 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1013, __FILE__, __LINE__, true);
7758 : 3501 : return true;
7759 : : }
7760 : 0 : next_after_fail1838:;
7761 : : }
7762 : 0 : break;
7763 : : }
7764 : 172286 : CASE_CONVERT:
7765 : 172286 : {
7766 : 172286 : tree _q20 = gimple_assign_rhs1 (_a1);
7767 : 172286 : _q20 = do_valueize (valueize, _q20);
7768 : 172286 : switch (TREE_CODE (_q20))
7769 : : {
7770 : 172214 : case SSA_NAME:
7771 : 172214 : if (gimple *_d2 = get_def (valueize, _q20))
7772 : : {
7773 : 160909 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7774 : 166925 : switch (gimple_assign_rhs_code (_a2))
7775 : : {
7776 : 263 : case NEGATE_EXPR:
7777 : 263 : {
7778 : 263 : tree _q30 = gimple_assign_rhs1 (_a2);
7779 : 263 : _q30 = do_valueize (valueize, _q30);
7780 : 263 : {
7781 : 263 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
7782 : 263 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures))
7783 : 19 : return true;
7784 : : }
7785 : 244 : break;
7786 : : }
7787 : 4278 : case MINUS_EXPR:
7788 : 4278 : {
7789 : 4278 : tree _q30 = gimple_assign_rhs1 (_a2);
7790 : 4278 : _q30 = do_valueize (valueize, _q30);
7791 : 4278 : tree _q31 = gimple_assign_rhs2 (_a2);
7792 : 4278 : _q31 = do_valueize (valueize, _q31);
7793 : 4278 : if (integer_each_onep (_q31))
7794 : : {
7795 : 0 : {
7796 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
7797 : 0 : if (gimple_simplify_602 (res_op, seq, valueize, type, captures))
7798 : 0 : return true;
7799 : : }
7800 : : }
7801 : : break;
7802 : : }
7803 : 38233 : case PLUS_EXPR:
7804 : 38233 : {
7805 : 38233 : tree _q30 = gimple_assign_rhs1 (_a2);
7806 : 38233 : _q30 = do_valueize (valueize, _q30);
7807 : 38233 : tree _q31 = gimple_assign_rhs2 (_a2);
7808 : 38233 : _q31 = do_valueize (valueize, _q31);
7809 : 38233 : if (tree_swap_operands_p (_q30, _q31))
7810 : 461 : std::swap (_q30, _q31);
7811 : 38233 : if (integer_all_onesp (_q31))
7812 : : {
7813 : 938 : {
7814 : 938 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
7815 : 938 : if (gimple_simplify_604 (res_op, seq, valueize, type, captures))
7816 : 53 : return true;
7817 : : }
7818 : : }
7819 : 2244814 : break;
7820 : : }
7821 : 1319 : case BIT_XOR_EXPR:
7822 : 1319 : {
7823 : 1319 : tree _q30 = gimple_assign_rhs1 (_a2);
7824 : 1319 : _q30 = do_valueize (valueize, _q30);
7825 : 1319 : tree _q31 = gimple_assign_rhs2 (_a2);
7826 : 1319 : _q31 = do_valueize (valueize, _q31);
7827 : 1319 : if (tree_swap_operands_p (_q30, _q31))
7828 : 56 : std::swap (_q30, _q31);
7829 : 1319 : switch (TREE_CODE (_q31))
7830 : : {
7831 : 561 : case INTEGER_CST:
7832 : 561 : {
7833 : 561 : {
7834 : 561 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
7835 : 561 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures))
7836 : 0 : return true;
7837 : : }
7838 : 561 : break;
7839 : : }
7840 : 1319 : default:;
7841 : : }
7842 : 1319 : switch (TREE_CODE (_q30))
7843 : : {
7844 : 1319 : case SSA_NAME:
7845 : 1319 : if (gimple *_d3 = get_def (valueize, _q30))
7846 : : {
7847 : 1319 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
7848 : 1626 : switch (gimple_assign_rhs_code (_a3))
7849 : : {
7850 : 0 : case BIT_NOT_EXPR:
7851 : 0 : {
7852 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
7853 : 0 : _q40 = do_valueize (valueize, _q40);
7854 : 0 : {
7855 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q31 };
7856 : 0 : if (gimple_simplify_608 (res_op, seq, valueize, type, captures))
7857 : 0 : return true;
7858 : : }
7859 : 0 : break;
7860 : : }
7861 : : default:;
7862 : : }
7863 : : }
7864 : : break;
7865 : 1319 : default:;
7866 : : }
7867 : 1319 : switch (TREE_CODE (_q31))
7868 : : {
7869 : 758 : case SSA_NAME:
7870 : 758 : if (gimple *_d3 = get_def (valueize, _q31))
7871 : : {
7872 : 750 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
7873 : 1061 : switch (gimple_assign_rhs_code (_a3))
7874 : : {
7875 : 0 : case BIT_NOT_EXPR:
7876 : 0 : {
7877 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
7878 : 0 : _q50 = do_valueize (valueize, _q50);
7879 : 0 : {
7880 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
7881 : 0 : if (gimple_simplify_608 (res_op, seq, valueize, type, captures))
7882 : 0 : return true;
7883 : : }
7884 : 0 : break;
7885 : : }
7886 : : default:;
7887 : : }
7888 : : }
7889 : : break;
7890 : : default:;
7891 : : }
7892 : 2244814 : break;
7893 : : }
7894 : 42896 : case RSHIFT_EXPR:
7895 : 42896 : {
7896 : 42896 : tree _q30 = gimple_assign_rhs1 (_a2);
7897 : 42896 : _q30 = do_valueize (valueize, _q30);
7898 : 42896 : tree _q31 = gimple_assign_rhs2 (_a2);
7899 : 42896 : _q31 = do_valueize (valueize, _q31);
7900 : 42896 : switch (TREE_CODE (_q30))
7901 : : {
7902 : 42660 : case SSA_NAME:
7903 : 42660 : if (gimple *_d3 = get_def (valueize, _q30))
7904 : : {
7905 : 42543 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
7906 : 42109 : switch (gimple_assign_rhs_code (_a3))
7907 : : {
7908 : 953 : CASE_CONVERT:
7909 : 953 : {
7910 : 953 : tree _q40 = gimple_assign_rhs1 (_a3);
7911 : 953 : _q40 = do_valueize (valueize, _q40);
7912 : 953 : switch (TREE_CODE (_q40))
7913 : : {
7914 : 953 : case SSA_NAME:
7915 : 953 : if (gimple *_d4 = get_def (valueize, _q40))
7916 : : {
7917 : 941 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
7918 : 1348 : switch (gimple_assign_rhs_code (_a4))
7919 : : {
7920 : 0 : case BIT_NOT_EXPR:
7921 : 0 : {
7922 : 0 : tree _q50 = gimple_assign_rhs1 (_a4);
7923 : 0 : _q50 = do_valueize (valueize, _q50);
7924 : 0 : {
7925 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
7926 : 0 : if (gimple_simplify_609 (res_op, seq, valueize, type, captures))
7927 : 0 : return true;
7928 : : }
7929 : 0 : break;
7930 : : }
7931 : : default:;
7932 : : }
7933 : : }
7934 : : break;
7935 : : default:;
7936 : : }
7937 : : break;
7938 : : }
7939 : 39294 : case BIT_NOT_EXPR:
7940 : 39294 : {
7941 : 39294 : tree _q40 = gimple_assign_rhs1 (_a3);
7942 : 39294 : _q40 = do_valueize (valueize, _q40);
7943 : 39294 : {
7944 : 39294 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
7945 : 39294 : if (gimple_simplify_609 (res_op, seq, valueize, type, captures))
7946 : 0 : return true;
7947 : : }
7948 : 39294 : break;
7949 : : }
7950 : : default:;
7951 : : }
7952 : : }
7953 : : break;
7954 : : default:;
7955 : : }
7956 : : break;
7957 : : }
7958 : 2 : case LROTATE_EXPR:
7959 : 2 : {
7960 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
7961 : 2 : _q30 = do_valueize (valueize, _q30);
7962 : 2 : tree _q31 = gimple_assign_rhs2 (_a2);
7963 : 2 : _q31 = do_valueize (valueize, _q31);
7964 : 2 : switch (TREE_CODE (_q30))
7965 : : {
7966 : 2 : case SSA_NAME:
7967 : 2 : if (gimple *_d3 = get_def (valueize, _q30))
7968 : : {
7969 : 2 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
7970 : 2 : switch (gimple_assign_rhs_code (_a3))
7971 : : {
7972 : 1 : CASE_CONVERT:
7973 : 1 : {
7974 : 1 : tree _q40 = gimple_assign_rhs1 (_a3);
7975 : 1 : _q40 = do_valueize (valueize, _q40);
7976 : 1 : switch (TREE_CODE (_q40))
7977 : : {
7978 : 1 : case SSA_NAME:
7979 : 1 : if (gimple *_d4 = get_def (valueize, _q40))
7980 : : {
7981 : 1 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
7982 : 1 : switch (gimple_assign_rhs_code (_a4))
7983 : : {
7984 : 1 : case BIT_NOT_EXPR:
7985 : 1 : {
7986 : 1 : tree _q50 = gimple_assign_rhs1 (_a4);
7987 : 1 : _q50 = do_valueize (valueize, _q50);
7988 : 1 : {
7989 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
7990 : 1 : if (gimple_simplify_610 (res_op, seq, valueize, type, captures, LROTATE_EXPR))
7991 : 1 : return true;
7992 : : }
7993 : 0 : break;
7994 : : }
7995 : : default:;
7996 : : }
7997 : : }
7998 : : break;
7999 : : default:;
8000 : : }
8001 : : break;
8002 : : }
8003 : 1 : case BIT_NOT_EXPR:
8004 : 1 : {
8005 : 1 : tree _q40 = gimple_assign_rhs1 (_a3);
8006 : 1 : _q40 = do_valueize (valueize, _q40);
8007 : 1 : {
8008 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
8009 : 1 : if (gimple_simplify_610 (res_op, seq, valueize, type, captures, LROTATE_EXPR))
8010 : 1 : return true;
8011 : : }
8012 : 0 : break;
8013 : : }
8014 : : default:;
8015 : : }
8016 : : }
8017 : : break;
8018 : : default:;
8019 : : }
8020 : : break;
8021 : : }
8022 : 4 : case RROTATE_EXPR:
8023 : 4 : {
8024 : 4 : tree _q30 = gimple_assign_rhs1 (_a2);
8025 : 4 : _q30 = do_valueize (valueize, _q30);
8026 : 4 : tree _q31 = gimple_assign_rhs2 (_a2);
8027 : 4 : _q31 = do_valueize (valueize, _q31);
8028 : 4 : switch (TREE_CODE (_q30))
8029 : : {
8030 : 4 : case SSA_NAME:
8031 : 4 : if (gimple *_d3 = get_def (valueize, _q30))
8032 : : {
8033 : 4 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
8034 : 8 : switch (gimple_assign_rhs_code (_a3))
8035 : : {
8036 : 0 : CASE_CONVERT:
8037 : 0 : {
8038 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
8039 : 0 : _q40 = do_valueize (valueize, _q40);
8040 : 0 : switch (TREE_CODE (_q40))
8041 : : {
8042 : 0 : case SSA_NAME:
8043 : 0 : if (gimple *_d4 = get_def (valueize, _q40))
8044 : : {
8045 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
8046 : 0 : switch (gimple_assign_rhs_code (_a4))
8047 : : {
8048 : 0 : case BIT_NOT_EXPR:
8049 : 0 : {
8050 : 0 : tree _q50 = gimple_assign_rhs1 (_a4);
8051 : 0 : _q50 = do_valueize (valueize, _q50);
8052 : 0 : {
8053 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
8054 : 0 : if (gimple_simplify_610 (res_op, seq, valueize, type, captures, RROTATE_EXPR))
8055 : 0 : return true;
8056 : : }
8057 : 0 : break;
8058 : : }
8059 : : default:;
8060 : : }
8061 : : }
8062 : : break;
8063 : : default:;
8064 : : }
8065 : : break;
8066 : : }
8067 : 0 : case BIT_NOT_EXPR:
8068 : 0 : {
8069 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
8070 : 0 : _q40 = do_valueize (valueize, _q40);
8071 : 0 : {
8072 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
8073 : 0 : if (gimple_simplify_610 (res_op, seq, valueize, type, captures, RROTATE_EXPR))
8074 : 0 : return true;
8075 : : }
8076 : 0 : break;
8077 : : }
8078 : : default:;
8079 : : }
8080 : : }
8081 : : break;
8082 : : default:;
8083 : : }
8084 : : break;
8085 : : }
8086 : : default:;
8087 : : }
8088 : : }
8089 : : break;
8090 : : default:;
8091 : : }
8092 : : break;
8093 : : }
8094 : 1201 : case NEGATE_EXPR:
8095 : 1201 : {
8096 : 1201 : tree _q20 = gimple_assign_rhs1 (_a1);
8097 : 1201 : _q20 = do_valueize (valueize, _q20);
8098 : 1201 : {
8099 : 1201 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8100 : 1201 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures))
8101 : 1201 : return true;
8102 : : }
8103 : 0 : break;
8104 : : }
8105 : 22395 : case BIT_XOR_EXPR:
8106 : 22395 : {
8107 : 22395 : tree _q20 = gimple_assign_rhs1 (_a1);
8108 : 22395 : _q20 = do_valueize (valueize, _q20);
8109 : 22395 : tree _q21 = gimple_assign_rhs2 (_a1);
8110 : 22395 : _q21 = do_valueize (valueize, _q21);
8111 : 22395 : if (tree_swap_operands_p (_q20, _q21))
8112 : 1425 : std::swap (_q20, _q21);
8113 : 22395 : switch (TREE_CODE (_q21))
8114 : : {
8115 : 451 : case INTEGER_CST:
8116 : 451 : {
8117 : 451 : {
8118 : 451 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8119 : 451 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures))
8120 : 451 : return true;
8121 : : }
8122 : 0 : break;
8123 : : }
8124 : 21944 : default:;
8125 : : }
8126 : 21944 : switch (TREE_CODE (_q20))
8127 : : {
8128 : 21944 : case SSA_NAME:
8129 : 21944 : if (gimple *_d2 = get_def (valueize, _q20))
8130 : : {
8131 : 20556 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8132 : 18360 : switch (gimple_assign_rhs_code (_a2))
8133 : : {
8134 : 0 : case BIT_NOT_EXPR:
8135 : 0 : {
8136 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
8137 : 0 : _q30 = do_valueize (valueize, _q30);
8138 : 0 : {
8139 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
8140 : 0 : if (gimple_simplify_608 (res_op, seq, valueize, type, captures))
8141 : 0 : return true;
8142 : : }
8143 : 0 : break;
8144 : : }
8145 : : default:;
8146 : : }
8147 : : }
8148 : : break;
8149 : 21944 : default:;
8150 : : }
8151 : 21944 : switch (TREE_CODE (_q21))
8152 : : {
8153 : 21854 : case SSA_NAME:
8154 : 21854 : if (gimple *_d2 = get_def (valueize, _q21))
8155 : : {
8156 : 20179 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8157 : 17395 : switch (gimple_assign_rhs_code (_a2))
8158 : : {
8159 : 4 : case BIT_NOT_EXPR:
8160 : 4 : {
8161 : 4 : tree _q40 = gimple_assign_rhs1 (_a2);
8162 : 4 : _q40 = do_valueize (valueize, _q40);
8163 : 4 : {
8164 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
8165 : 4 : if (gimple_simplify_608 (res_op, seq, valueize, type, captures))
8166 : 4 : return true;
8167 : : }
8168 : 0 : break;
8169 : : }
8170 : : default:;
8171 : : }
8172 : : }
8173 : : break;
8174 : 21940 : default:;
8175 : : }
8176 : 21940 : if (gimple_truth_valued_p (_q20, valueize))
8177 : : {
8178 : 306 : if (gimple_truth_valued_p (_q21, valueize))
8179 : : {
8180 : 306 : {
8181 : 306 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8182 : 612 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
8183 : 602 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == 1
8184 : : )
8185 : : {
8186 : 296 : gimple_seq *lseq = seq;
8187 : 296 : if (lseq
8188 : 218 : && (!single_use (captures[0])))
8189 : 80 : lseq = NULL;
8190 : 296 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1839;
8191 : 296 : {
8192 : 296 : res_op->set_op (NOP_EXPR, type, 1);
8193 : 296 : {
8194 : 296 : tree _o1[2], _r1;
8195 : 296 : _o1[0] = captures[1];
8196 : 296 : _o1[1] = captures[2];
8197 : 296 : (*res_op).set_op (EQ_EXPR, boolean_type_node, 2);
8198 : 296 : (*res_op).ops[0] = _o1[0];
8199 : 296 : (*res_op).ops[1] = _o1[1];
8200 : 296 : (*res_op).resimplify (lseq, valueize);
8201 : : }
8202 : 296 : if (type != res_op->type
8203 : 296 : && !useless_type_conversion_p (type, res_op->type))
8204 : : {
8205 : 4 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1839;
8206 : 2 : res_op->set_op (NOP_EXPR, type, 1);
8207 : 2 : res_op->resimplify (lseq, valueize);
8208 : : }
8209 : 294 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
8210 : 294 : return true;
8211 : : }
8212 : 12 : next_after_fail1839:;
8213 : : }
8214 : : }
8215 : : }
8216 : : }
8217 : 2244814 : break;
8218 : : }
8219 : 1548 : case MIN_EXPR:
8220 : 1548 : {
8221 : 1548 : tree _q20 = gimple_assign_rhs1 (_a1);
8222 : 1548 : _q20 = do_valueize (valueize, _q20);
8223 : 1548 : tree _q21 = gimple_assign_rhs2 (_a1);
8224 : 1548 : _q21 = do_valueize (valueize, _q21);
8225 : 1548 : if (tree_swap_operands_p (_q20, _q21))
8226 : 2 : std::swap (_q20, _q21);
8227 : 1548 : switch (TREE_CODE (_q20))
8228 : : {
8229 : 1548 : case SSA_NAME:
8230 : 1548 : if (gimple *_d2 = get_def (valueize, _q20))
8231 : : {
8232 : 1548 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8233 : 36 : switch (gimple_assign_rhs_code (_a2))
8234 : : {
8235 : 2 : case BIT_NOT_EXPR:
8236 : 2 : {
8237 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
8238 : 2 : _q30 = do_valueize (valueize, _q30);
8239 : 2 : {
8240 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
8241 : 2 : if (gimple_simplify_611 (res_op, seq, valueize, type, captures, MIN_EXPR, MAX_EXPR))
8242 : 1 : return true;
8243 : : }
8244 : 1 : break;
8245 : : }
8246 : : default:;
8247 : : }
8248 : : }
8249 : : break;
8250 : 1547 : default:;
8251 : : }
8252 : 1547 : switch (TREE_CODE (_q21))
8253 : : {
8254 : 26 : case SSA_NAME:
8255 : 26 : if (gimple *_d2 = get_def (valueize, _q21))
8256 : : {
8257 : 26 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8258 : 14 : switch (gimple_assign_rhs_code (_a2))
8259 : : {
8260 : 0 : case BIT_NOT_EXPR:
8261 : 0 : {
8262 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
8263 : 0 : _q40 = do_valueize (valueize, _q40);
8264 : 0 : {
8265 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
8266 : 0 : if (gimple_simplify_611 (res_op, seq, valueize, type, captures, MIN_EXPR, MAX_EXPR))
8267 : 0 : return true;
8268 : : }
8269 : 0 : break;
8270 : : }
8271 : : default:;
8272 : : }
8273 : : }
8274 : : break;
8275 : : default:;
8276 : : }
8277 : 2244814 : break;
8278 : : }
8279 : 19980 : case MAX_EXPR:
8280 : 19980 : {
8281 : 19980 : tree _q20 = gimple_assign_rhs1 (_a1);
8282 : 19980 : _q20 = do_valueize (valueize, _q20);
8283 : 19980 : tree _q21 = gimple_assign_rhs2 (_a1);
8284 : 19980 : _q21 = do_valueize (valueize, _q21);
8285 : 19980 : if (tree_swap_operands_p (_q20, _q21))
8286 : 2 : std::swap (_q20, _q21);
8287 : 19980 : switch (TREE_CODE (_q20))
8288 : : {
8289 : 19980 : case SSA_NAME:
8290 : 19980 : if (gimple *_d2 = get_def (valueize, _q20))
8291 : : {
8292 : 19980 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8293 : 19316 : switch (gimple_assign_rhs_code (_a2))
8294 : : {
8295 : 2 : case BIT_NOT_EXPR:
8296 : 2 : {
8297 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
8298 : 2 : _q30 = do_valueize (valueize, _q30);
8299 : 2 : {
8300 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
8301 : 2 : if (gimple_simplify_611 (res_op, seq, valueize, type, captures, MAX_EXPR, MIN_EXPR))
8302 : 1 : return true;
8303 : : }
8304 : 1 : break;
8305 : : }
8306 : : default:;
8307 : : }
8308 : : }
8309 : : break;
8310 : 19979 : default:;
8311 : : }
8312 : 19979 : switch (TREE_CODE (_q21))
8313 : : {
8314 : 26 : case SSA_NAME:
8315 : 26 : if (gimple *_d2 = get_def (valueize, _q21))
8316 : : {
8317 : 26 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8318 : 14 : switch (gimple_assign_rhs_code (_a2))
8319 : : {
8320 : 0 : case BIT_NOT_EXPR:
8321 : 0 : {
8322 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
8323 : 0 : _q40 = do_valueize (valueize, _q40);
8324 : 0 : {
8325 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
8326 : 0 : if (gimple_simplify_611 (res_op, seq, valueize, type, captures, MAX_EXPR, MIN_EXPR))
8327 : 0 : return true;
8328 : : }
8329 : 0 : break;
8330 : : }
8331 : : default:;
8332 : : }
8333 : : }
8334 : : break;
8335 : : default:;
8336 : : }
8337 : 2244814 : break;
8338 : : }
8339 : 2 : case LROTATE_EXPR:
8340 : 2 : {
8341 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
8342 : 2 : _q20 = do_valueize (valueize, _q20);
8343 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
8344 : 2 : _q21 = do_valueize (valueize, _q21);
8345 : 2 : switch (TREE_CODE (_q20))
8346 : : {
8347 : 2 : case SSA_NAME:
8348 : 2 : if (gimple *_d2 = get_def (valueize, _q20))
8349 : : {
8350 : 2 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8351 : 2 : switch (gimple_assign_rhs_code (_a2))
8352 : : {
8353 : 1 : CASE_CONVERT:
8354 : 1 : {
8355 : 1 : tree _q30 = gimple_assign_rhs1 (_a2);
8356 : 1 : _q30 = do_valueize (valueize, _q30);
8357 : 1 : switch (TREE_CODE (_q30))
8358 : : {
8359 : 1 : case SSA_NAME:
8360 : 1 : if (gimple *_d3 = get_def (valueize, _q30))
8361 : : {
8362 : 1 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
8363 : 1 : switch (gimple_assign_rhs_code (_a3))
8364 : : {
8365 : 1 : case BIT_NOT_EXPR:
8366 : 1 : {
8367 : 1 : tree _q40 = gimple_assign_rhs1 (_a3);
8368 : 1 : _q40 = do_valueize (valueize, _q40);
8369 : 1 : {
8370 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
8371 : 1 : if (gimple_simplify_612 (res_op, seq, valueize, type, captures, LROTATE_EXPR))
8372 : 1 : return true;
8373 : : }
8374 : 0 : break;
8375 : : }
8376 : : default:;
8377 : : }
8378 : : }
8379 : : break;
8380 : : default:;
8381 : : }
8382 : : break;
8383 : : }
8384 : 1 : case BIT_NOT_EXPR:
8385 : 1 : {
8386 : 1 : tree _q30 = gimple_assign_rhs1 (_a2);
8387 : 1 : _q30 = do_valueize (valueize, _q30);
8388 : 1 : {
8389 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
8390 : 1 : if (gimple_simplify_612 (res_op, seq, valueize, type, captures, LROTATE_EXPR))
8391 : 1 : return true;
8392 : : }
8393 : 0 : break;
8394 : : }
8395 : : default:;
8396 : : }
8397 : : }
8398 : : break;
8399 : : default:;
8400 : : }
8401 : : break;
8402 : : }
8403 : 1 : case RROTATE_EXPR:
8404 : 1 : {
8405 : 1 : tree _q20 = gimple_assign_rhs1 (_a1);
8406 : 1 : _q20 = do_valueize (valueize, _q20);
8407 : 1 : tree _q21 = gimple_assign_rhs2 (_a1);
8408 : 1 : _q21 = do_valueize (valueize, _q21);
8409 : 1 : switch (TREE_CODE (_q20))
8410 : : {
8411 : 1 : case SSA_NAME:
8412 : 1 : if (gimple *_d2 = get_def (valueize, _q20))
8413 : : {
8414 : 1 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8415 : 1 : switch (gimple_assign_rhs_code (_a2))
8416 : : {
8417 : 0 : CASE_CONVERT:
8418 : 0 : {
8419 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
8420 : 0 : _q30 = do_valueize (valueize, _q30);
8421 : 0 : switch (TREE_CODE (_q30))
8422 : : {
8423 : 0 : case SSA_NAME:
8424 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
8425 : : {
8426 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
8427 : 0 : switch (gimple_assign_rhs_code (_a3))
8428 : : {
8429 : 0 : case BIT_NOT_EXPR:
8430 : 0 : {
8431 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
8432 : 0 : _q40 = do_valueize (valueize, _q40);
8433 : 0 : {
8434 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
8435 : 0 : if (gimple_simplify_612 (res_op, seq, valueize, type, captures, RROTATE_EXPR))
8436 : 0 : return true;
8437 : : }
8438 : 0 : break;
8439 : : }
8440 : : default:;
8441 : : }
8442 : : }
8443 : : break;
8444 : : default:;
8445 : : }
8446 : : break;
8447 : : }
8448 : 1 : case BIT_NOT_EXPR:
8449 : 1 : {
8450 : 1 : tree _q30 = gimple_assign_rhs1 (_a2);
8451 : 1 : _q30 = do_valueize (valueize, _q30);
8452 : 1 : {
8453 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
8454 : 1 : if (gimple_simplify_612 (res_op, seq, valueize, type, captures, RROTATE_EXPR))
8455 : 1 : return true;
8456 : : }
8457 : 0 : break;
8458 : : }
8459 : : default:;
8460 : : }
8461 : : }
8462 : : break;
8463 : : default:;
8464 : : }
8465 : : break;
8466 : : }
8467 : 2 : case VEC_COND_EXPR:
8468 : 2 : {
8469 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
8470 : 2 : _q20 = do_valueize (valueize, _q20);
8471 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
8472 : 2 : _q21 = do_valueize (valueize, _q21);
8473 : 2 : tree _q22 = gimple_assign_rhs3 (_a1);
8474 : 2 : _q22 = do_valueize (valueize, _q22);
8475 : 2 : {
8476 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
8477 : 2 : gimple_seq *lseq = seq;
8478 : 2 : if (lseq
8479 : 1 : && (!single_use (captures[0])))
8480 : 1 : lseq = NULL;
8481 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1840;
8482 : 2 : {
8483 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
8484 : 2 : res_op->ops[0] = captures[1];
8485 : 2 : {
8486 : 2 : tree _o1[1], _r1;
8487 : 2 : _o1[0] = captures[2];
8488 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
8489 : 2 : tem_op.resimplify (NULL, valueize);
8490 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
8491 : 2 : if (!_r1) goto next_after_fail1840;
8492 : 2 : res_op->ops[1] = _r1;
8493 : : }
8494 : 2 : {
8495 : 2 : tree _o1[1], _r1;
8496 : 2 : _o1[0] = captures[3];
8497 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
8498 : 2 : tem_op.resimplify (NULL, valueize);
8499 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
8500 : 2 : if (!_r1) goto next_after_fail1840;
8501 : 2 : res_op->ops[2] = _r1;
8502 : : }
8503 : 2 : res_op->resimplify (lseq, valueize);
8504 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
8505 : 2 : return true;
8506 : : }
8507 : 0 : next_after_fail1840:;
8508 : : }
8509 : 0 : break;
8510 : : }
8511 : 19012 : case LT_EXPR:
8512 : 19012 : {
8513 : 19012 : tree _q20 = gimple_assign_rhs1 (_a1);
8514 : 19012 : _q20 = do_valueize (valueize, _q20);
8515 : 19012 : tree _q21 = gimple_assign_rhs2 (_a1);
8516 : 19012 : _q21 = do_valueize (valueize, _q21);
8517 : 19012 : {
8518 : 19012 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8519 : 19012 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR))
8520 : 16968 : return true;
8521 : : }
8522 : 2044 : break;
8523 : : }
8524 : 17571 : case LE_EXPR:
8525 : 17571 : {
8526 : 17571 : tree _q20 = gimple_assign_rhs1 (_a1);
8527 : 17571 : _q20 = do_valueize (valueize, _q20);
8528 : 17571 : tree _q21 = gimple_assign_rhs2 (_a1);
8529 : 17571 : _q21 = do_valueize (valueize, _q21);
8530 : 17571 : {
8531 : 17571 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8532 : 17571 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR))
8533 : 16386 : return true;
8534 : : }
8535 : 1185 : break;
8536 : : }
8537 : 99632 : case EQ_EXPR:
8538 : 99632 : {
8539 : 99632 : tree _q20 = gimple_assign_rhs1 (_a1);
8540 : 99632 : _q20 = do_valueize (valueize, _q20);
8541 : 99632 : tree _q21 = gimple_assign_rhs2 (_a1);
8542 : 99632 : _q21 = do_valueize (valueize, _q21);
8543 : 99632 : if (tree_swap_operands_p (_q20, _q21))
8544 : 1518 : std::swap (_q20, _q21);
8545 : 99632 : {
8546 : 99632 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8547 : 99632 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR))
8548 : 99632 : return true;
8549 : : }
8550 : 0 : break;
8551 : : }
8552 : 64080 : case NE_EXPR:
8553 : 64080 : {
8554 : 64080 : tree _q20 = gimple_assign_rhs1 (_a1);
8555 : 64080 : _q20 = do_valueize (valueize, _q20);
8556 : 64080 : tree _q21 = gimple_assign_rhs2 (_a1);
8557 : 64080 : _q21 = do_valueize (valueize, _q21);
8558 : 64080 : if (tree_swap_operands_p (_q20, _q21))
8559 : 450 : std::swap (_q20, _q21);
8560 : 64080 : {
8561 : 64080 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8562 : 64080 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR))
8563 : 64080 : return true;
8564 : : }
8565 : 0 : break;
8566 : : }
8567 : 8140 : case GE_EXPR:
8568 : 8140 : {
8569 : 8140 : tree _q20 = gimple_assign_rhs1 (_a1);
8570 : 8140 : _q20 = do_valueize (valueize, _q20);
8571 : 8140 : tree _q21 = gimple_assign_rhs2 (_a1);
8572 : 8140 : _q21 = do_valueize (valueize, _q21);
8573 : 8140 : {
8574 : 8140 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8575 : 8140 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR))
8576 : 6746 : return true;
8577 : : }
8578 : 1394 : break;
8579 : : }
8580 : 16142 : case GT_EXPR:
8581 : 16142 : {
8582 : 16142 : tree _q20 = gimple_assign_rhs1 (_a1);
8583 : 16142 : _q20 = do_valueize (valueize, _q20);
8584 : 16142 : tree _q21 = gimple_assign_rhs2 (_a1);
8585 : 16142 : _q21 = do_valueize (valueize, _q21);
8586 : 16142 : {
8587 : 16142 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8588 : 16142 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR))
8589 : 14566 : return true;
8590 : : }
8591 : 1576 : break;
8592 : : }
8593 : 79 : case UNORDERED_EXPR:
8594 : 79 : {
8595 : 79 : tree _q20 = gimple_assign_rhs1 (_a1);
8596 : 79 : _q20 = do_valueize (valueize, _q20);
8597 : 79 : tree _q21 = gimple_assign_rhs2 (_a1);
8598 : 79 : _q21 = do_valueize (valueize, _q21);
8599 : 79 : if (tree_swap_operands_p (_q20, _q21))
8600 : 0 : std::swap (_q20, _q21);
8601 : 79 : {
8602 : 79 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8603 : 79 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR))
8604 : 79 : return true;
8605 : : }
8606 : 0 : break;
8607 : : }
8608 : 65 : case ORDERED_EXPR:
8609 : 65 : {
8610 : 65 : tree _q20 = gimple_assign_rhs1 (_a1);
8611 : 65 : _q20 = do_valueize (valueize, _q20);
8612 : 65 : tree _q21 = gimple_assign_rhs2 (_a1);
8613 : 65 : _q21 = do_valueize (valueize, _q21);
8614 : 65 : if (tree_swap_operands_p (_q20, _q21))
8615 : 0 : std::swap (_q20, _q21);
8616 : 65 : {
8617 : 65 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8618 : 65 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR))
8619 : 65 : return true;
8620 : : }
8621 : 0 : break;
8622 : : }
8623 : 2623 : case UNLT_EXPR:
8624 : 2623 : {
8625 : 2623 : tree _q20 = gimple_assign_rhs1 (_a1);
8626 : 2623 : _q20 = do_valueize (valueize, _q20);
8627 : 2623 : tree _q21 = gimple_assign_rhs2 (_a1);
8628 : 2623 : _q21 = do_valueize (valueize, _q21);
8629 : 2623 : {
8630 : 2623 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8631 : 2623 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR))
8632 : 0 : return true;
8633 : : }
8634 : 2623 : break;
8635 : : }
8636 : 7714 : case UNLE_EXPR:
8637 : 7714 : {
8638 : 7714 : tree _q20 = gimple_assign_rhs1 (_a1);
8639 : 7714 : _q20 = do_valueize (valueize, _q20);
8640 : 7714 : tree _q21 = gimple_assign_rhs2 (_a1);
8641 : 7714 : _q21 = do_valueize (valueize, _q21);
8642 : 7714 : {
8643 : 7714 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8644 : 7714 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR))
8645 : 8 : return true;
8646 : : }
8647 : 7706 : break;
8648 : : }
8649 : 12179 : case UNGT_EXPR:
8650 : 12179 : {
8651 : 12179 : tree _q20 = gimple_assign_rhs1 (_a1);
8652 : 12179 : _q20 = do_valueize (valueize, _q20);
8653 : 12179 : tree _q21 = gimple_assign_rhs2 (_a1);
8654 : 12179 : _q21 = do_valueize (valueize, _q21);
8655 : 12179 : {
8656 : 12179 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8657 : 12179 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR))
8658 : 0 : return true;
8659 : : }
8660 : 12179 : break;
8661 : : }
8662 : 1954 : case UNGE_EXPR:
8663 : 1954 : {
8664 : 1954 : tree _q20 = gimple_assign_rhs1 (_a1);
8665 : 1954 : _q20 = do_valueize (valueize, _q20);
8666 : 1954 : tree _q21 = gimple_assign_rhs2 (_a1);
8667 : 1954 : _q21 = do_valueize (valueize, _q21);
8668 : 1954 : {
8669 : 1954 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8670 : 1954 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR))
8671 : 23 : return true;
8672 : : }
8673 : 1931 : break;
8674 : : }
8675 : 1452 : case UNEQ_EXPR:
8676 : 1452 : {
8677 : 1452 : tree _q20 = gimple_assign_rhs1 (_a1);
8678 : 1452 : _q20 = do_valueize (valueize, _q20);
8679 : 1452 : tree _q21 = gimple_assign_rhs2 (_a1);
8680 : 1452 : _q21 = do_valueize (valueize, _q21);
8681 : 1452 : if (tree_swap_operands_p (_q20, _q21))
8682 : 8 : std::swap (_q20, _q21);
8683 : 1452 : {
8684 : 1452 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8685 : 1452 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR))
8686 : 0 : return true;
8687 : : }
8688 : 1452 : break;
8689 : : }
8690 : 80 : case LTGT_EXPR:
8691 : 80 : {
8692 : 80 : tree _q20 = gimple_assign_rhs1 (_a1);
8693 : 80 : _q20 = do_valueize (valueize, _q20);
8694 : 80 : tree _q21 = gimple_assign_rhs2 (_a1);
8695 : 80 : _q21 = do_valueize (valueize, _q21);
8696 : 80 : if (tree_swap_operands_p (_q20, _q21))
8697 : 0 : std::swap (_q20, _q21);
8698 : 80 : {
8699 : 80 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8700 : 80 : if (gimple_simplify_613 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR))
8701 : 0 : return true;
8702 : : }
8703 : 80 : break;
8704 : : }
8705 : : default:;
8706 : : }
8707 : : }
8708 : : break;
8709 : : default:;
8710 : : }
8711 : : return false;
8712 : : }
8713 : :
8714 : : bool
8715 : 945 : gimple_simplify_CFN_BUILT_IN_TANF (gimple_match_op *res_op, gimple_seq *seq,
8716 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8717 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8718 : : {
8719 : 945 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8720 : 945 : switch (TREE_CODE (_p0))
8721 : : {
8722 : 904 : case SSA_NAME:
8723 : 904 : if (gimple *_d1 = get_def (valueize, _p0))
8724 : : {
8725 : 585 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8726 : 56 : switch (gimple_call_combined_fn (_c1))
8727 : : {
8728 : 2 : case CFN_BUILT_IN_ATANF:
8729 : 2 : if (gimple_call_num_args (_c1) == 1)
8730 : : {
8731 : 2 : tree _q20 = gimple_call_arg (_c1, 0);
8732 : 2 : _q20 = do_valueize (valueize, _q20);
8733 : 2 : {
8734 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8735 : 2 : if (gimple_simplify_666 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_ATANF))
8736 : 2 : return true;
8737 : : }
8738 : : }
8739 : : break;
8740 : : default:;
8741 : : }
8742 : : }
8743 : : break;
8744 : : default:;
8745 : : }
8746 : : return false;
8747 : : }
8748 : :
8749 : : bool
8750 : 1072 : gimple_simplify_CFN_BUILT_IN_TAN (gimple_match_op *res_op, gimple_seq *seq,
8751 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8752 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8753 : : {
8754 : 1072 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8755 : 1072 : switch (TREE_CODE (_p0))
8756 : : {
8757 : 1019 : case SSA_NAME:
8758 : 1019 : if (gimple *_d1 = get_def (valueize, _p0))
8759 : : {
8760 : 622 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8761 : 57 : switch (gimple_call_combined_fn (_c1))
8762 : : {
8763 : 3 : case CFN_BUILT_IN_ATAN:
8764 : 3 : if (gimple_call_num_args (_c1) == 1)
8765 : : {
8766 : 3 : tree _q20 = gimple_call_arg (_c1, 0);
8767 : 3 : _q20 = do_valueize (valueize, _q20);
8768 : 3 : {
8769 : 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8770 : 3 : if (gimple_simplify_666 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_ATAN))
8771 : 3 : return true;
8772 : : }
8773 : : }
8774 : : break;
8775 : : default:;
8776 : : }
8777 : : }
8778 : : break;
8779 : : default:;
8780 : : }
8781 : : return false;
8782 : : }
8783 : :
8784 : : bool
8785 : 1105 : gimple_simplify_CFN_BUILT_IN_TANL (gimple_match_op *res_op, gimple_seq *seq,
8786 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8787 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8788 : : {
8789 : 1105 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8790 : 1105 : switch (TREE_CODE (_p0))
8791 : : {
8792 : 1062 : case SSA_NAME:
8793 : 1062 : if (gimple *_d1 = get_def (valueize, _p0))
8794 : : {
8795 : 613 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8796 : 50 : switch (gimple_call_combined_fn (_c1))
8797 : : {
8798 : 2 : case CFN_BUILT_IN_ATANL:
8799 : 2 : if (gimple_call_num_args (_c1) == 1)
8800 : : {
8801 : 2 : tree _q20 = gimple_call_arg (_c1, 0);
8802 : 2 : _q20 = do_valueize (valueize, _q20);
8803 : 2 : {
8804 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8805 : 2 : if (gimple_simplify_666 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_ATANL))
8806 : 2 : return true;
8807 : : }
8808 : : }
8809 : : break;
8810 : : default:;
8811 : : }
8812 : : }
8813 : : break;
8814 : : default:;
8815 : : }
8816 : : return false;
8817 : : }
8818 : :
8819 : : bool
8820 : 0 : gimple_simplify_CFN_TAN (gimple_match_op *res_op, gimple_seq *seq,
8821 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8822 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8823 : : {
8824 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8825 : 0 : switch (TREE_CODE (_p0))
8826 : : {
8827 : 0 : case SSA_NAME:
8828 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8829 : : {
8830 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8831 : 0 : switch (gimple_call_combined_fn (_c1))
8832 : : {
8833 : 0 : case CFN_ATAN:
8834 : 0 : if (gimple_call_num_args (_c1) == 1)
8835 : : {
8836 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8837 : 0 : _q20 = do_valueize (valueize, _q20);
8838 : 0 : {
8839 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8840 : 0 : if (gimple_simplify_666 (res_op, seq, valueize, type, captures, CFN_TAN, CFN_ATAN))
8841 : 0 : return true;
8842 : : }
8843 : : }
8844 : : break;
8845 : : default:;
8846 : : }
8847 : : }
8848 : : break;
8849 : : default:;
8850 : : }
8851 : : return false;
8852 : : }
8853 : :
8854 : : bool
8855 : 5243 : gimple_simplify_CFN_BUILT_IN_SINF (gimple_match_op *res_op, gimple_seq *seq,
8856 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8857 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8858 : : {
8859 : 5243 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8860 : 5243 : switch (TREE_CODE (_p0))
8861 : : {
8862 : 5092 : case SSA_NAME:
8863 : 5092 : if (gimple *_d1 = get_def (valueize, _p0))
8864 : : {
8865 : 2787 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8866 : 128 : switch (gimple_call_combined_fn (_c1))
8867 : : {
8868 : 12 : case CFN_BUILT_IN_ATANF:
8869 : 12 : if (gimple_call_num_args (_c1) == 1)
8870 : : {
8871 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8872 : 12 : _q20 = do_valueize (valueize, _q20);
8873 : 12 : {
8874 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8875 : 12 : if (gimple_simplify_667 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_ATANF, CFN_BUILT_IN_SQRTF, CFN_BUILT_IN_COPYSIGNF))
8876 : 2 : return true;
8877 : : }
8878 : : }
8879 : : break;
8880 : : default:;
8881 : : }
8882 : : }
8883 : : break;
8884 : : default:;
8885 : : }
8886 : : return false;
8887 : : }
8888 : :
8889 : : bool
8890 : 3913 : gimple_simplify_CFN_BUILT_IN_SINL (gimple_match_op *res_op, gimple_seq *seq,
8891 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8892 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8893 : : {
8894 : 3913 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8895 : 3913 : switch (TREE_CODE (_p0))
8896 : : {
8897 : 3782 : case SSA_NAME:
8898 : 3782 : if (gimple *_d1 = get_def (valueize, _p0))
8899 : : {
8900 : 2065 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8901 : 138 : switch (gimple_call_combined_fn (_c1))
8902 : : {
8903 : 12 : case CFN_BUILT_IN_ATANL:
8904 : 12 : if (gimple_call_num_args (_c1) == 1)
8905 : : {
8906 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8907 : 12 : _q20 = do_valueize (valueize, _q20);
8908 : 12 : {
8909 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8910 : 12 : if (gimple_simplify_667 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_ATANL, CFN_BUILT_IN_SQRTL, CFN_BUILT_IN_COPYSIGNL))
8911 : 2 : return true;
8912 : : }
8913 : : }
8914 : : break;
8915 : : default:;
8916 : : }
8917 : : }
8918 : : break;
8919 : : default:;
8920 : : }
8921 : : return false;
8922 : : }
8923 : :
8924 : : bool
8925 : 1077 : gimple_simplify_CFN_BUILT_IN_SINHL (gimple_match_op *res_op, gimple_seq *seq,
8926 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8927 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8928 : : {
8929 : 1077 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8930 : 1077 : switch (TREE_CODE (_p0))
8931 : : {
8932 : 1025 : case SSA_NAME:
8933 : 1025 : if (gimple *_d1 = get_def (valueize, _p0))
8934 : : {
8935 : 575 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8936 : 16 : switch (gimple_call_combined_fn (_c1))
8937 : : {
8938 : 16 : case CFN_BUILT_IN_ATANHL:
8939 : 16 : if (gimple_call_num_args (_c1) == 1)
8940 : : {
8941 : 16 : tree _q20 = gimple_call_arg (_c1, 0);
8942 : 16 : _q20 = do_valueize (valueize, _q20);
8943 : 16 : {
8944 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8945 : 16 : if (gimple_simplify_668 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_ATANHL, CFN_BUILT_IN_SQRTL))
8946 : 1 : return true;
8947 : : }
8948 : : }
8949 : : break;
8950 : : default:;
8951 : : }
8952 : : }
8953 : : break;
8954 : : default:;
8955 : : }
8956 : : return false;
8957 : : }
8958 : :
8959 : : bool
8960 : 0 : gimple_simplify_CFN_BUILT_IN_TRUNCF64 (gimple_match_op *res_op, gimple_seq *seq,
8961 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8962 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8963 : : {
8964 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8965 : 0 : switch (TREE_CODE (_p0))
8966 : : {
8967 : 0 : case SSA_NAME:
8968 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8969 : : {
8970 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8971 : 0 : switch (gimple_call_combined_fn (_c1))
8972 : : {
8973 : 0 : case CFN_BUILT_IN_TRUNCF64:
8974 : 0 : if (gimple_call_num_args (_c1) == 1)
8975 : : {
8976 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8977 : 0 : _q20 = do_valueize (valueize, _q20);
8978 : 0 : {
8979 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8980 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64))
8981 : 0 : return true;
8982 : : }
8983 : : }
8984 : : break;
8985 : : default:;
8986 : : }
8987 : : }
8988 : : break;
8989 : 0 : default:;
8990 : : }
8991 : 0 : if (integer_valued_real_p (_p0))
8992 : : {
8993 : 0 : {
8994 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8995 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64))
8996 : 0 : return true;
8997 : : }
8998 : : }
8999 : : return false;
9000 : : }
9001 : :
9002 : : bool
9003 : 2658 : gimple_simplify_CFN_BUILT_IN_FLOORF (gimple_match_op *res_op, gimple_seq *seq,
9004 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9005 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9006 : : {
9007 : 2658 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9008 : 2658 : switch (TREE_CODE (_p0))
9009 : : {
9010 : 2553 : case SSA_NAME:
9011 : 2553 : if (gimple *_d1 = get_def (valueize, _p0))
9012 : : {
9013 : 1654 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9014 : 0 : switch (gimple_call_combined_fn (_c1))
9015 : : {
9016 : 0 : case CFN_BUILT_IN_FLOORF:
9017 : 0 : if (gimple_call_num_args (_c1) == 1)
9018 : : {
9019 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9020 : 0 : _q20 = do_valueize (valueize, _q20);
9021 : 0 : {
9022 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9023 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF))
9024 : 0 : return true;
9025 : : }
9026 : : }
9027 : : break;
9028 : : default:;
9029 : : }
9030 : : }
9031 : : break;
9032 : 2658 : default:;
9033 : : }
9034 : 2658 : if (integer_valued_real_p (_p0))
9035 : : {
9036 : 10 : {
9037 : 10 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9038 : 10 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF))
9039 : 10 : return true;
9040 : : }
9041 : : }
9042 : 2648 : if (tree_expr_nonnegative_p (_p0))
9043 : : {
9044 : 31 : {
9045 : 31 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9046 : 31 : if (gimple_simplify_673 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_TRUNCF))
9047 : 31 : return true;
9048 : : }
9049 : : }
9050 : : return false;
9051 : : }
9052 : :
9053 : : bool
9054 : 0 : gimple_simplify_CFN_BUILT_IN_FLOORF64X (gimple_match_op *res_op, gimple_seq *seq,
9055 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9056 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9057 : : {
9058 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9059 : 0 : switch (TREE_CODE (_p0))
9060 : : {
9061 : 0 : case SSA_NAME:
9062 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9063 : : {
9064 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9065 : 0 : switch (gimple_call_combined_fn (_c1))
9066 : : {
9067 : 0 : case CFN_BUILT_IN_FLOORF64X:
9068 : 0 : if (gimple_call_num_args (_c1) == 1)
9069 : : {
9070 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9071 : 0 : _q20 = do_valueize (valueize, _q20);
9072 : 0 : {
9073 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9074 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X))
9075 : 0 : return true;
9076 : : }
9077 : : }
9078 : : break;
9079 : : default:;
9080 : : }
9081 : : }
9082 : : break;
9083 : 0 : default:;
9084 : : }
9085 : 0 : if (integer_valued_real_p (_p0))
9086 : : {
9087 : 0 : {
9088 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9089 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X))
9090 : 0 : return true;
9091 : : }
9092 : : }
9093 : 0 : if (tree_expr_nonnegative_p (_p0))
9094 : : {
9095 : 0 : {
9096 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9097 : 0 : if (gimple_simplify_673 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X, CFN_BUILT_IN_TRUNCF64X))
9098 : 0 : return true;
9099 : : }
9100 : : }
9101 : : return false;
9102 : : }
9103 : :
9104 : : bool
9105 : 0 : gimple_simplify_CFN_BUILT_IN_CEILF64 (gimple_match_op *res_op, gimple_seq *seq,
9106 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9107 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9108 : : {
9109 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9110 : 0 : switch (TREE_CODE (_p0))
9111 : : {
9112 : 0 : case SSA_NAME:
9113 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9114 : : {
9115 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9116 : 0 : switch (gimple_call_combined_fn (_c1))
9117 : : {
9118 : 0 : case CFN_BUILT_IN_CEILF64:
9119 : 0 : if (gimple_call_num_args (_c1) == 1)
9120 : : {
9121 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9122 : 0 : _q20 = do_valueize (valueize, _q20);
9123 : 0 : {
9124 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9125 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64))
9126 : 0 : return true;
9127 : : }
9128 : : }
9129 : : break;
9130 : : default:;
9131 : : }
9132 : : }
9133 : : break;
9134 : 0 : default:;
9135 : : }
9136 : 0 : if (integer_valued_real_p (_p0))
9137 : : {
9138 : 0 : {
9139 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9140 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64))
9141 : 0 : return true;
9142 : : }
9143 : : }
9144 : : return false;
9145 : : }
9146 : :
9147 : : bool
9148 : 2350 : gimple_simplify_CFN_BUILT_IN_ROUND (gimple_match_op *res_op, gimple_seq *seq,
9149 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9150 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9151 : : {
9152 : 2350 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9153 : 2350 : switch (TREE_CODE (_p0))
9154 : : {
9155 : 2293 : case SSA_NAME:
9156 : 2293 : if (gimple *_d1 = get_def (valueize, _p0))
9157 : : {
9158 : 1307 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9159 : 1622 : switch (gimple_assign_rhs_code (_a1))
9160 : : {
9161 : 106 : CASE_CONVERT:
9162 : 106 : {
9163 : 106 : tree _q20 = gimple_assign_rhs1 (_a1);
9164 : 106 : _q20 = do_valueize (valueize, _q20);
9165 : 106 : if (gimple_float_value_p (_q20, valueize))
9166 : : {
9167 : 70 : {
9168 : 70 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9169 : 70 : if (gimple_simplify_671 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND, CFN_BUILT_IN_ROUNDF))
9170 : 35 : return true;
9171 : : }
9172 : : }
9173 : : break;
9174 : : }
9175 : : default:;
9176 : : }
9177 : 335 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9178 : 0 : switch (gimple_call_combined_fn (_c1))
9179 : : {
9180 : 0 : case CFN_BUILT_IN_ROUND:
9181 : 0 : if (gimple_call_num_args (_c1) == 1)
9182 : : {
9183 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9184 : 0 : _q20 = do_valueize (valueize, _q20);
9185 : 0 : {
9186 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9187 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND))
9188 : 0 : return true;
9189 : : }
9190 : : }
9191 : : break;
9192 : : default:;
9193 : : }
9194 : : }
9195 : : break;
9196 : 2315 : default:;
9197 : : }
9198 : 2315 : if (integer_valued_real_p (_p0))
9199 : : {
9200 : 40 : {
9201 : 40 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9202 : 40 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND))
9203 : 40 : return true;
9204 : : }
9205 : : }
9206 : : return false;
9207 : : }
9208 : :
9209 : : bool
9210 : 1077 : gimple_simplify_CFN_BUILT_IN_NEARBYINT (gimple_match_op *res_op, gimple_seq *seq,
9211 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9212 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9213 : : {
9214 : 1077 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9215 : 1077 : switch (TREE_CODE (_p0))
9216 : : {
9217 : 940 : case SSA_NAME:
9218 : 940 : if (gimple *_d1 = get_def (valueize, _p0))
9219 : : {
9220 : 582 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9221 : 238 : switch (gimple_assign_rhs_code (_a1))
9222 : : {
9223 : 128 : CASE_CONVERT:
9224 : 128 : {
9225 : 128 : tree _q20 = gimple_assign_rhs1 (_a1);
9226 : 128 : _q20 = do_valueize (valueize, _q20);
9227 : 128 : if (gimple_float_value_p (_q20, valueize))
9228 : : {
9229 : 84 : {
9230 : 84 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9231 : 84 : if (gimple_simplify_671 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINT, CFN_BUILT_IN_NEARBYINTF))
9232 : 42 : return true;
9233 : : }
9234 : : }
9235 : : break;
9236 : : }
9237 : : default:;
9238 : : }
9239 : 390 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9240 : 0 : switch (gimple_call_combined_fn (_c1))
9241 : : {
9242 : 0 : case CFN_BUILT_IN_NEARBYINT:
9243 : 0 : if (gimple_call_num_args (_c1) == 1)
9244 : : {
9245 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9246 : 0 : _q20 = do_valueize (valueize, _q20);
9247 : 0 : {
9248 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9249 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINT))
9250 : 0 : return true;
9251 : : }
9252 : : }
9253 : : break;
9254 : : default:;
9255 : : }
9256 : : }
9257 : : break;
9258 : 1035 : default:;
9259 : : }
9260 : 1035 : if (integer_valued_real_p (_p0))
9261 : : {
9262 : 62 : {
9263 : 62 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9264 : 62 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINT))
9265 : 62 : return true;
9266 : : }
9267 : : }
9268 : : return false;
9269 : : }
9270 : :
9271 : : bool
9272 : 1528 : gimple_simplify_CFN_BUILT_IN_RINT (gimple_match_op *res_op, gimple_seq *seq,
9273 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9274 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9275 : : {
9276 : 1528 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9277 : 1528 : switch (TREE_CODE (_p0))
9278 : : {
9279 : 1125 : case SSA_NAME:
9280 : 1125 : if (gimple *_d1 = get_def (valueize, _p0))
9281 : : {
9282 : 704 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9283 : 634 : switch (gimple_assign_rhs_code (_a1))
9284 : : {
9285 : 104 : CASE_CONVERT:
9286 : 104 : {
9287 : 104 : tree _q20 = gimple_assign_rhs1 (_a1);
9288 : 104 : _q20 = do_valueize (valueize, _q20);
9289 : 104 : if (gimple_float_value_p (_q20, valueize))
9290 : : {
9291 : 60 : {
9292 : 60 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9293 : 60 : if (gimple_simplify_671 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINT, CFN_BUILT_IN_RINTF))
9294 : 30 : return true;
9295 : : }
9296 : : }
9297 : : break;
9298 : : }
9299 : : default:;
9300 : : }
9301 : 326 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9302 : 0 : switch (gimple_call_combined_fn (_c1))
9303 : : {
9304 : 0 : case CFN_BUILT_IN_RINT:
9305 : 0 : if (gimple_call_num_args (_c1) == 1)
9306 : : {
9307 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9308 : 0 : _q20 = do_valueize (valueize, _q20);
9309 : 0 : {
9310 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9311 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINT))
9312 : 0 : return true;
9313 : : }
9314 : : }
9315 : : break;
9316 : : default:;
9317 : : }
9318 : : }
9319 : : break;
9320 : 1498 : default:;
9321 : : }
9322 : 1498 : if (integer_valued_real_p (_p0))
9323 : : {
9324 : 28 : {
9325 : 28 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9326 : 28 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINT))
9327 : 28 : return true;
9328 : : }
9329 : : }
9330 : : return false;
9331 : : }
9332 : :
9333 : : bool
9334 : 235 : gimple_simplify_CFN_RINT (gimple_match_op *res_op, gimple_seq *seq,
9335 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9336 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9337 : : {
9338 : 235 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9339 : 235 : switch (TREE_CODE (_p0))
9340 : : {
9341 : 235 : case SSA_NAME:
9342 : 235 : if (gimple *_d1 = get_def (valueize, _p0))
9343 : : {
9344 : 135 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9345 : 0 : switch (gimple_call_combined_fn (_c1))
9346 : : {
9347 : 0 : case CFN_RINT:
9348 : 0 : if (gimple_call_num_args (_c1) == 1)
9349 : : {
9350 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9351 : 0 : _q20 = do_valueize (valueize, _q20);
9352 : 0 : {
9353 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9354 : 0 : if (gimple_simplify_669 (res_op, seq, valueize, type, captures, CFN_RINT))
9355 : 0 : return true;
9356 : : }
9357 : : }
9358 : : break;
9359 : : default:;
9360 : : }
9361 : : }
9362 : : break;
9363 : 235 : default:;
9364 : : }
9365 : 235 : if (integer_valued_real_p (_p0))
9366 : : {
9367 : 0 : {
9368 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9369 : 0 : if (gimple_simplify_670 (res_op, seq, valueize, type, captures, CFN_RINT))
9370 : 0 : return true;
9371 : : }
9372 : : }
9373 : : return false;
9374 : : }
9375 : :
9376 : : bool
9377 : 1121 : gimple_simplify_CFN_BUILT_IN_LCEILL (gimple_match_op *res_op, gimple_seq *seq,
9378 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9379 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9380 : : {
9381 : 1121 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9382 : 1121 : switch (TREE_CODE (_p0))
9383 : : {
9384 : 1055 : case SSA_NAME:
9385 : 1055 : if (gimple *_d1 = get_def (valueize, _p0))
9386 : : {
9387 : 686 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9388 : 366 : switch (gimple_assign_rhs_code (_a1))
9389 : : {
9390 : 336 : CASE_CONVERT:
9391 : 336 : {
9392 : 336 : tree _q20 = gimple_assign_rhs1 (_a1);
9393 : 336 : _q20 = do_valueize (valueize, _q20);
9394 : 336 : if (gimple_double_value_p (_q20, valueize))
9395 : : {
9396 : 120 : {
9397 : 120 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9398 : 120 : if (gimple_simplify_676 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL, CFN_BUILT_IN_LCEIL))
9399 : 120 : return true;
9400 : : }
9401 : : }
9402 : 216 : if (gimple_float_value_p (_q20, valueize))
9403 : : {
9404 : 216 : {
9405 : 216 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9406 : 216 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL, CFN_BUILT_IN_LCEILF))
9407 : 216 : return true;
9408 : : }
9409 : : }
9410 : : break;
9411 : : }
9412 : : default:;
9413 : : }
9414 : : }
9415 : : break;
9416 : 785 : default:;
9417 : : }
9418 : 785 : if (integer_valued_real_p (_p0))
9419 : : {
9420 : 20 : {
9421 : 20 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9422 : 20 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL))
9423 : 20 : return true;
9424 : : }
9425 : : }
9426 : : return false;
9427 : : }
9428 : :
9429 : : bool
9430 : 246 : gimple_simplify_CFN_BUILT_IN_LLROUNDL (gimple_match_op *res_op, gimple_seq *seq,
9431 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9432 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9433 : : {
9434 : 246 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9435 : 246 : switch (TREE_CODE (_p0))
9436 : : {
9437 : 212 : case SSA_NAME:
9438 : 212 : if (gimple *_d1 = get_def (valueize, _p0))
9439 : : {
9440 : 83 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9441 : 0 : switch (gimple_assign_rhs_code (_a1))
9442 : : {
9443 : 0 : CASE_CONVERT:
9444 : 0 : {
9445 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9446 : 0 : _q20 = do_valueize (valueize, _q20);
9447 : 0 : if (gimple_double_value_p (_q20, valueize))
9448 : : {
9449 : 0 : {
9450 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9451 : 0 : if (gimple_simplify_676 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL, CFN_BUILT_IN_LLROUND))
9452 : 0 : return true;
9453 : : }
9454 : : }
9455 : 0 : if (gimple_float_value_p (_q20, valueize))
9456 : : {
9457 : 0 : {
9458 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9459 : 0 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL, CFN_BUILT_IN_LLROUNDF))
9460 : 0 : return true;
9461 : : }
9462 : : }
9463 : : break;
9464 : : }
9465 : : default:;
9466 : : }
9467 : : }
9468 : : break;
9469 : 246 : default:;
9470 : : }
9471 : 246 : if (integer_valued_real_p (_p0))
9472 : : {
9473 : 21 : {
9474 : 21 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9475 : 21 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL))
9476 : 21 : return true;
9477 : : }
9478 : : }
9479 : 225 : {
9480 : 225 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9481 : 225 : if (gimple_simplify_681 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUNDL, CFN_BUILT_IN_LROUNDL, CFN_BUILT_IN_LLROUNDL))
9482 : 190 : return true;
9483 : : }
9484 : 35 : return false;
9485 : : }
9486 : :
9487 : : bool
9488 : 1386 : gimple_simplify_CFN_BUILT_IN_LCEIL (gimple_match_op *res_op, gimple_seq *seq,
9489 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9490 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9491 : : {
9492 : 1386 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9493 : 1386 : switch (TREE_CODE (_p0))
9494 : : {
9495 : 1271 : case SSA_NAME:
9496 : 1271 : if (gimple *_d1 = get_def (valueize, _p0))
9497 : : {
9498 : 835 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9499 : 264 : switch (gimple_assign_rhs_code (_a1))
9500 : : {
9501 : 234 : CASE_CONVERT:
9502 : 234 : {
9503 : 234 : tree _q20 = gimple_assign_rhs1 (_a1);
9504 : 234 : _q20 = do_valueize (valueize, _q20);
9505 : 234 : if (gimple_float_value_p (_q20, valueize))
9506 : : {
9507 : 168 : {
9508 : 168 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9509 : 168 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEIL, CFN_BUILT_IN_LCEILF))
9510 : 168 : return true;
9511 : : }
9512 : : }
9513 : : break;
9514 : : }
9515 : : default:;
9516 : : }
9517 : : }
9518 : : break;
9519 : 1218 : default:;
9520 : : }
9521 : 1218 : if (integer_valued_real_p (_p0))
9522 : : {
9523 : 20 : {
9524 : 20 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9525 : 20 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEIL))
9526 : 20 : return true;
9527 : : }
9528 : : }
9529 : : return false;
9530 : : }
9531 : :
9532 : : bool
9533 : 229 : gimple_simplify_CFN_BUILT_IN_IRINT (gimple_match_op *res_op, gimple_seq *seq,
9534 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9535 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9536 : : {
9537 : 229 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9538 : 229 : switch (TREE_CODE (_p0))
9539 : : {
9540 : 225 : case SSA_NAME:
9541 : 225 : if (gimple *_d1 = get_def (valueize, _p0))
9542 : : {
9543 : 125 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9544 : 184 : switch (gimple_assign_rhs_code (_a1))
9545 : : {
9546 : 0 : CASE_CONVERT:
9547 : 0 : {
9548 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9549 : 0 : _q20 = do_valueize (valueize, _q20);
9550 : 0 : if (gimple_float_value_p (_q20, valueize))
9551 : : {
9552 : 0 : {
9553 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9554 : 0 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IRINT, CFN_BUILT_IN_IRINTF))
9555 : 0 : return true;
9556 : : }
9557 : : }
9558 : : break;
9559 : : }
9560 : : default:;
9561 : : }
9562 : : }
9563 : : break;
9564 : 229 : default:;
9565 : : }
9566 : 229 : if (integer_valued_real_p (_p0))
9567 : : {
9568 : 0 : {
9569 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9570 : 0 : if (gimple_simplify_682 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IRINT))
9571 : 0 : return true;
9572 : : }
9573 : : }
9574 : 229 : {
9575 : 229 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9576 : 229 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IRINT, CFN_BUILT_IN_LRINT, CFN_BUILT_IN_LLRINT))
9577 : 0 : return true;
9578 : : }
9579 : 229 : return false;
9580 : : }
9581 : :
9582 : : bool
9583 : 2089 : gimple_simplify_CFN_BUILT_IN_LCEILF (gimple_match_op *res_op, gimple_seq *seq,
9584 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9585 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9586 : : {
9587 : 2089 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9588 : 2089 : if (integer_valued_real_p (_p0))
9589 : : {
9590 : 20 : {
9591 : 20 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9592 : 20 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILF))
9593 : 20 : return true;
9594 : : }
9595 : : }
9596 : : return false;
9597 : : }
9598 : :
9599 : : bool
9600 : 4695 : gimple_simplify_CFN_BUILT_IN_IROUNDF (gimple_match_op *res_op, gimple_seq *seq,
9601 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9602 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9603 : : {
9604 : 4695 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9605 : 4695 : if (integer_valued_real_p (_p0))
9606 : : {
9607 : 37 : {
9608 : 37 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9609 : 37 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUNDF))
9610 : 37 : return true;
9611 : : }
9612 : : }
9613 : 4658 : {
9614 : 4658 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9615 : 4658 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUNDF, CFN_BUILT_IN_LROUNDF, CFN_BUILT_IN_LLROUNDF))
9616 : 4 : return true;
9617 : : }
9618 : 4654 : return false;
9619 : : }
9620 : :
9621 : : bool
9622 : 450 : gimple_simplify_CFN_BUILT_IN_LLRINTF (gimple_match_op *res_op, gimple_seq *seq,
9623 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9624 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9625 : : {
9626 : 450 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9627 : 450 : if (integer_valued_real_p (_p0))
9628 : : {
9629 : 28 : {
9630 : 28 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9631 : 28 : if (gimple_simplify_682 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLRINTF))
9632 : 20 : return true;
9633 : : }
9634 : : }
9635 : 430 : {
9636 : 430 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9637 : 430 : if (gimple_simplify_681 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IRINTF, CFN_BUILT_IN_LRINTF, CFN_BUILT_IN_LLRINTF))
9638 : 348 : return true;
9639 : : }
9640 : 82 : return false;
9641 : : }
9642 : :
9643 : : bool
9644 : 4337 : gimple_simplify_CFN_BUILT_IN_CTZ (gimple_match_op *res_op, gimple_seq *seq,
9645 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9646 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9647 : : {
9648 : 4337 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9649 : 4337 : switch (TREE_CODE (_p0))
9650 : : {
9651 : 4173 : case SSA_NAME:
9652 : 4173 : if (gimple *_d1 = get_def (valueize, _p0))
9653 : : {
9654 : 2227 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9655 : 1881 : switch (gimple_assign_rhs_code (_a1))
9656 : : {
9657 : 0 : case NEGATE_EXPR:
9658 : 0 : {
9659 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9660 : 0 : _q20 = do_valueize (valueize, _q20);
9661 : 0 : {
9662 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9663 : 0 : if (gimple_simplify_696 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CTZ))
9664 : 0 : return true;
9665 : : }
9666 : 0 : break;
9667 : : }
9668 : 0 : case ABS_EXPR:
9669 : 0 : {
9670 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9671 : 0 : _q20 = do_valueize (valueize, _q20);
9672 : 0 : {
9673 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9674 : 0 : if (gimple_simplify_697 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CTZ))
9675 : 0 : return true;
9676 : : }
9677 : 0 : break;
9678 : : }
9679 : 990 : CASE_CONVERT:
9680 : 990 : {
9681 : 990 : tree _q20 = gimple_assign_rhs1 (_a1);
9682 : 990 : _q20 = do_valueize (valueize, _q20);
9683 : 990 : {
9684 : 990 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9685 : 990 : if (gimple_simplify_698 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CTZ))
9686 : 0 : return true;
9687 : : }
9688 : 990 : break;
9689 : : }
9690 : : default:;
9691 : : }
9692 : : }
9693 : : break;
9694 : 4337 : default:;
9695 : : }
9696 : 4337 : {
9697 : 4337 : tree _p0_pops[1];
9698 : 4337 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
9699 : : {
9700 : 563 : tree _q20 = _p0_pops[0];
9701 : 563 : switch (TREE_CODE (_q20))
9702 : : {
9703 : 563 : case SSA_NAME:
9704 : 563 : if (gimple *_d1 = get_def (valueize, _q20))
9705 : : {
9706 : 486 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9707 : 274 : switch (gimple_assign_rhs_code (_a1))
9708 : : {
9709 : 2 : case NEGATE_EXPR:
9710 : 2 : {
9711 : 2 : tree _q30 = gimple_assign_rhs1 (_a1);
9712 : 2 : _q30 = do_valueize (valueize, _q30);
9713 : 2 : {
9714 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9715 : 2 : if (gimple_simplify_694 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CTZ))
9716 : 1 : return true;
9717 : : }
9718 : 1 : break;
9719 : : }
9720 : 2 : case ABS_EXPR:
9721 : 2 : {
9722 : 2 : tree _q30 = gimple_assign_rhs1 (_a1);
9723 : 2 : _q30 = do_valueize (valueize, _q30);
9724 : 2 : {
9725 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9726 : 2 : if (gimple_simplify_695 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CTZ))
9727 : 1 : return true;
9728 : : }
9729 : 1 : break;
9730 : : }
9731 : : default:;
9732 : : }
9733 : : }
9734 : : break;
9735 : : default:;
9736 : : }
9737 : : }
9738 : : }
9739 : 4335 : return false;
9740 : : }
9741 : :
9742 : : bool
9743 : 0 : gimple_simplify_CFN_BUILT_IN_POPCOUNTIMAX (gimple_match_op *res_op, gimple_seq *seq,
9744 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9745 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9746 : : {
9747 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9748 : 0 : switch (TREE_CODE (_p0))
9749 : : {
9750 : 0 : case SSA_NAME:
9751 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9752 : : {
9753 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9754 : 0 : switch (gimple_assign_rhs_code (_a1))
9755 : : {
9756 : 0 : CASE_CONVERT:
9757 : 0 : {
9758 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9759 : 0 : _q20 = do_valueize (valueize, _q20);
9760 : 0 : switch (TREE_CODE (_q20))
9761 : : {
9762 : 0 : case SSA_NAME:
9763 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
9764 : : {
9765 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9766 : 0 : switch (gimple_assign_rhs_code (_a2))
9767 : : {
9768 : 0 : case LROTATE_EXPR:
9769 : 0 : {
9770 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
9771 : 0 : _q30 = do_valueize (valueize, _q30);
9772 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
9773 : 0 : _q31 = do_valueize (valueize, _q31);
9774 : 0 : {
9775 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
9776 : 0 : if (gimple_simplify_700 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX))
9777 : 0 : return true;
9778 : : }
9779 : 0 : break;
9780 : : }
9781 : 0 : case RROTATE_EXPR:
9782 : 0 : {
9783 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
9784 : 0 : _q30 = do_valueize (valueize, _q30);
9785 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
9786 : 0 : _q31 = do_valueize (valueize, _q31);
9787 : 0 : {
9788 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
9789 : 0 : if (gimple_simplify_700 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX))
9790 : 0 : return true;
9791 : : }
9792 : 0 : break;
9793 : : }
9794 : : default:;
9795 : : }
9796 : 0 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
9797 : 0 : switch (gimple_call_combined_fn (_c2))
9798 : : {
9799 : 0 : case CFN_BUILT_IN_BSWAP128:
9800 : 0 : if (gimple_call_num_args (_c2) == 1)
9801 : : {
9802 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
9803 : 0 : _q30 = do_valueize (valueize, _q30);
9804 : 0 : {
9805 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9806 : 0 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_POPCOUNTIMAX))
9807 : 0 : return true;
9808 : : }
9809 : : }
9810 : : break;
9811 : 0 : case CFN_BUILT_IN_BSWAP16:
9812 : 0 : if (gimple_call_num_args (_c2) == 1)
9813 : : {
9814 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
9815 : 0 : _q30 = do_valueize (valueize, _q30);
9816 : 0 : {
9817 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9818 : 0 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_POPCOUNTIMAX))
9819 : 0 : return true;
9820 : : }
9821 : : }
9822 : : break;
9823 : 0 : case CFN_BUILT_IN_BSWAP32:
9824 : 0 : if (gimple_call_num_args (_c2) == 1)
9825 : : {
9826 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
9827 : 0 : _q30 = do_valueize (valueize, _q30);
9828 : 0 : {
9829 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9830 : 0 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_POPCOUNTIMAX))
9831 : 0 : return true;
9832 : : }
9833 : : }
9834 : : break;
9835 : 0 : case CFN_BUILT_IN_BSWAP64:
9836 : 0 : if (gimple_call_num_args (_c2) == 1)
9837 : : {
9838 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
9839 : 0 : _q30 = do_valueize (valueize, _q30);
9840 : 0 : {
9841 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
9842 : 0 : if (gimple_simplify_699 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_POPCOUNTIMAX))
9843 : 0 : return true;
9844 : : }
9845 : : }
9846 : : break;
9847 : : default:;
9848 : : }
9849 : : }
9850 : : break;
9851 : 0 : default:;
9852 : : }
9853 : 0 : {
9854 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9855 : 0 : if (gimple_simplify_701 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTIMAX))
9856 : 0 : return true;
9857 : : }
9858 : 0 : break;
9859 : : }
9860 : 0 : case LROTATE_EXPR:
9861 : 0 : {
9862 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9863 : 0 : _q20 = do_valueize (valueize, _q20);
9864 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
9865 : 0 : _q21 = do_valueize (valueize, _q21);
9866 : 0 : {
9867 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
9868 : 0 : if (gimple_simplify_703 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX))
9869 : 0 : return true;
9870 : : }
9871 : 0 : break;
9872 : : }
9873 : 0 : case RROTATE_EXPR:
9874 : 0 : {
9875 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9876 : 0 : _q20 = do_valueize (valueize, _q20);
9877 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
9878 : 0 : _q21 = do_valueize (valueize, _q21);
9879 : 0 : {
9880 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
9881 : 0 : if (gimple_simplify_703 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX))
9882 : 0 : return true;
9883 : : }
9884 : 0 : break;
9885 : : }
9886 : : default:;
9887 : : }
9888 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9889 : 0 : switch (gimple_call_combined_fn (_c1))
9890 : : {
9891 : 0 : case CFN_BUILT_IN_BSWAP128:
9892 : 0 : if (gimple_call_num_args (_c1) == 1)
9893 : : {
9894 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9895 : 0 : _q20 = do_valueize (valueize, _q20);
9896 : 0 : {
9897 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9898 : 0 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_POPCOUNTIMAX))
9899 : 0 : return true;
9900 : : }
9901 : : }
9902 : : break;
9903 : 0 : case CFN_BUILT_IN_BSWAP16:
9904 : 0 : if (gimple_call_num_args (_c1) == 1)
9905 : : {
9906 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9907 : 0 : _q20 = do_valueize (valueize, _q20);
9908 : 0 : {
9909 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9910 : 0 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_POPCOUNTIMAX))
9911 : 0 : return true;
9912 : : }
9913 : : }
9914 : : break;
9915 : 0 : case CFN_BUILT_IN_BSWAP32:
9916 : 0 : if (gimple_call_num_args (_c1) == 1)
9917 : : {
9918 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9919 : 0 : _q20 = do_valueize (valueize, _q20);
9920 : 0 : {
9921 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9922 : 0 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_POPCOUNTIMAX))
9923 : 0 : return true;
9924 : : }
9925 : : }
9926 : : break;
9927 : 0 : case CFN_BUILT_IN_BSWAP64:
9928 : 0 : if (gimple_call_num_args (_c1) == 1)
9929 : : {
9930 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9931 : 0 : _q20 = do_valueize (valueize, _q20);
9932 : 0 : {
9933 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
9934 : 0 : if (gimple_simplify_702 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_POPCOUNTIMAX))
9935 : 0 : return true;
9936 : : }
9937 : : }
9938 : : break;
9939 : : default:;
9940 : : }
9941 : : }
9942 : : break;
9943 : 0 : default:;
9944 : : }
9945 : 0 : {
9946 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9947 : 0 : if (gimple_simplify_704 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTIMAX))
9948 : 0 : return true;
9949 : : }
9950 : 0 : return false;
9951 : : }
9952 : :
9953 : : bool
9954 : 369 : gimple_simplify_CFN_BUILT_IN_FFSL (gimple_match_op *res_op, gimple_seq *seq,
9955 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9956 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9957 : : {
9958 : 369 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9959 : 369 : switch (TREE_CODE (_p0))
9960 : : {
9961 : 358 : case SSA_NAME:
9962 : 358 : if (gimple *_d1 = get_def (valueize, _p0))
9963 : : {
9964 : 189 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9965 : 101 : switch (gimple_assign_rhs_code (_a1))
9966 : : {
9967 : 85 : CASE_CONVERT:
9968 : 85 : {
9969 : 85 : tree _q20 = gimple_assign_rhs1 (_a1);
9970 : 85 : _q20 = do_valueize (valueize, _q20);
9971 : 85 : {
9972 : 85 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9973 : 85 : if (gimple_simplify_712 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FFSL))
9974 : 1 : return true;
9975 : : }
9976 : 84 : break;
9977 : : }
9978 : : default:;
9979 : : }
9980 : : }
9981 : : break;
9982 : 368 : default:;
9983 : : }
9984 : 368 : if (tree_expr_nonzero_p (_p0))
9985 : : {
9986 : 14 : {
9987 : 14 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9988 : 14 : if (gimple_simplify_711 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FFSL, CFN_BUILT_IN_CTZL))
9989 : 14 : return true;
9990 : : }
9991 : : }
9992 : : return false;
9993 : : }
9994 : :
9995 : : bool
9996 : 1225 : gimple_simplify_CFN_REDUC_XOR (gimple_match_op *res_op, gimple_seq *seq,
9997 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9998 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9999 : : {
10000 : 1225 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10001 : 1225 : switch (TREE_CODE (_p0))
10002 : : {
10003 : 1225 : case SSA_NAME:
10004 : 1225 : if (gimple *_d1 = get_def (valueize, _p0))
10005 : : {
10006 : 484 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10007 : 513 : switch (gimple_assign_rhs_code (_a1))
10008 : : {
10009 : 62 : case VIEW_CONVERT_EXPR:
10010 : 62 : {
10011 : 62 : tree _q20 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
10012 : 62 : if ((TREE_CODE (_q20) == SSA_NAME
10013 : 62 : || is_gimple_min_invariant (_q20)))
10014 : : {
10015 : 62 : _q20 = do_valueize (valueize, _q20);
10016 : 62 : switch (TREE_CODE (_q20))
10017 : : {
10018 : 62 : case SSA_NAME:
10019 : 62 : if (gimple *_d2 = get_def (valueize, _q20))
10020 : : {
10021 : 56 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10022 : 91 : switch (gimple_assign_rhs_code (_a2))
10023 : : {
10024 : 0 : case BIT_AND_EXPR:
10025 : 0 : {
10026 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10027 : 0 : _q30 = do_valueize (valueize, _q30);
10028 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
10029 : 0 : _q31 = do_valueize (valueize, _q31);
10030 : 0 : if (tree_swap_operands_p (_q30, _q31))
10031 : 0 : std::swap (_q30, _q31);
10032 : 0 : switch (TREE_CODE (_q31))
10033 : : {
10034 : 0 : case VECTOR_CST:
10035 : 0 : {
10036 : 0 : {
10037 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10038 : 0 : if (gimple_simplify_715 (res_op, seq, valueize, type, captures, CFN_REDUC_XOR))
10039 : 0 : return true;
10040 : : }
10041 : 0 : break;
10042 : : }
10043 : : default:;
10044 : : }
10045 : 1225 : break;
10046 : : }
10047 : : default:;
10048 : : }
10049 : : }
10050 : : break;
10051 : : default:;
10052 : : }
10053 : : }
10054 : : break;
10055 : : }
10056 : 0 : case BIT_AND_EXPR:
10057 : 0 : {
10058 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10059 : 0 : _q20 = do_valueize (valueize, _q20);
10060 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10061 : 0 : _q21 = do_valueize (valueize, _q21);
10062 : 0 : if (tree_swap_operands_p (_q20, _q21))
10063 : 0 : std::swap (_q20, _q21);
10064 : 0 : switch (TREE_CODE (_q21))
10065 : : {
10066 : 0 : case VECTOR_CST:
10067 : 0 : {
10068 : 0 : {
10069 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10070 : 0 : if (gimple_simplify_715 (res_op, seq, valueize, type, captures, CFN_REDUC_XOR))
10071 : 0 : return true;
10072 : : }
10073 : 0 : break;
10074 : : }
10075 : : default:;
10076 : : }
10077 : 1225 : break;
10078 : : }
10079 : 3 : case CONSTRUCTOR:
10080 : 3 : {
10081 : 3 : {
10082 : 3 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10083 : 3 : if (gimple_simplify_716 (res_op, seq, valueize, type, captures, CFN_REDUC_XOR))
10084 : 3 : return true;
10085 : : }
10086 : 0 : break;
10087 : : }
10088 : 208 : case BIT_XOR_EXPR:
10089 : 208 : {
10090 : 208 : tree _q20 = gimple_assign_rhs1 (_a1);
10091 : 208 : _q20 = do_valueize (valueize, _q20);
10092 : 208 : tree _q21 = gimple_assign_rhs2 (_a1);
10093 : 208 : _q21 = do_valueize (valueize, _q21);
10094 : 208 : if (tree_swap_operands_p (_q20, _q21))
10095 : 8 : std::swap (_q20, _q21);
10096 : 208 : switch (TREE_CODE (_q21))
10097 : : {
10098 : 4 : case VECTOR_CST:
10099 : 4 : {
10100 : 4 : {
10101 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10102 : 4 : gimple_seq *lseq = seq;
10103 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2056;
10104 : 4 : {
10105 : 4 : res_op->set_op (BIT_XOR_EXPR, type, 2);
10106 : 4 : {
10107 : 4 : tree _o1[1], _r1;
10108 : 4 : _o1[0] = captures[0];
10109 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_REDUC_XOR, type, _o1[0]);
10110 : 4 : tem_op.resimplify (lseq, valueize);
10111 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10112 : 4 : if (!_r1) goto next_after_fail2056;
10113 : 2 : res_op->ops[0] = _r1;
10114 : : }
10115 : 2 : {
10116 : 2 : tree _o1[1], _r1;
10117 : 2 : _o1[0] = captures[1];
10118 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_REDUC_XOR, type, _o1[0]);
10119 : 2 : tem_op.resimplify (lseq, valueize);
10120 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10121 : 2 : if (!_r1) goto next_after_fail2056;
10122 : 2 : res_op->ops[1] = _r1;
10123 : : }
10124 : 2 : res_op->resimplify (lseq, valueize);
10125 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1052, __FILE__, __LINE__, true);
10126 : 2 : return true;
10127 : : }
10128 : 2 : next_after_fail2056:;
10129 : : }
10130 : 2 : break;
10131 : : }
10132 : : default:;
10133 : : }
10134 : 1225 : break;
10135 : : }
10136 : : default:;
10137 : : }
10138 : : }
10139 : : break;
10140 : : default:;
10141 : : }
10142 : : return false;
10143 : : }
10144 : :
10145 : : bool
10146 : 33321918 : gimple_simplify_POINTER_PLUS_EXPR (gimple_match_op *res_op, gimple_seq *seq,
10147 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10148 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
10149 : : {
10150 : 33321918 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10151 : 33321918 : if (integer_zerop (_p1))
10152 : : {
10153 : 2162921 : {
10154 : 2162921 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10155 : 2162921 : gimple_seq *lseq = seq;
10156 : 2162921 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2158;
10157 : 2162921 : {
10158 : 2162921 : tree tem;
10159 : 2162921 : tem = captures[0];
10160 : 2162921 : res_op->set_value (tem);
10161 : 2162921 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
10162 : 2162921 : return true;
10163 : : }
10164 : 0 : next_after_fail2158:;
10165 : : }
10166 : : }
10167 : 31158997 : switch (TREE_CODE (_p0))
10168 : : {
10169 : 22924351 : case SSA_NAME:
10170 : 22924351 : if (gimple *_d1 = get_def (valueize, _p0))
10171 : : {
10172 : 17213997 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10173 : 15498871 : switch (gimple_assign_rhs_code (_a1))
10174 : : {
10175 : 2230602 : case POINTER_PLUS_EXPR:
10176 : 2230602 : {
10177 : 2230602 : tree _q20 = gimple_assign_rhs1 (_a1);
10178 : 2230602 : _q20 = do_valueize (valueize, _q20);
10179 : 2230602 : tree _q21 = gimple_assign_rhs2 (_a1);
10180 : 2230602 : _q21 = do_valueize (valueize, _q21);
10181 : 2230602 : {
10182 : 2230602 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10183 : 2230602 : gimple_seq *lseq = seq;
10184 : 2230602 : if (lseq
10185 : 262071 : && (!single_use (captures[0])))
10186 : 2211109 : lseq = NULL;
10187 : 2230602 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2159;
10188 : 2230602 : {
10189 : 2230602 : res_op->set_op (POINTER_PLUS_EXPR, type, 2);
10190 : 2230602 : res_op->ops[0] = captures[1];
10191 : 2230602 : {
10192 : 2230602 : tree _o1[2], _r1;
10193 : 2230602 : _o1[0] = captures[2];
10194 : 2230602 : _o1[1] = captures[3];
10195 : 2230602 : gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10196 : 2230602 : tem_op.resimplify (lseq, valueize);
10197 : 2230602 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10198 : 2230602 : if (!_r1) goto next_after_fail2159;
10199 : 1055798 : res_op->ops[1] = _r1;
10200 : : }
10201 : 1055798 : res_op->resimplify (lseq, valueize);
10202 : 1055798 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
10203 : 1055798 : return true;
10204 : : }
10205 : 1174804 : next_after_fail2159:;
10206 : : }
10207 : 1174804 : break;
10208 : : }
10209 : : default:;
10210 : : }
10211 : : }
10212 : : break;
10213 : 30103199 : default:;
10214 : : }
10215 : 30103199 : if (integer_zerop (_p0))
10216 : : {
10217 : 14643 : {
10218 : 14643 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
10219 : 14643 : gimple_seq *lseq = seq;
10220 : 14643 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2160;
10221 : 14643 : {
10222 : 14643 : res_op->set_op (NOP_EXPR, type, 1);
10223 : 14643 : res_op->ops[0] = captures[0];
10224 : 14643 : res_op->resimplify (lseq, valueize);
10225 : 14643 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
10226 : 14643 : return true;
10227 : : }
10228 : 0 : next_after_fail2160:;
10229 : : }
10230 : : }
10231 : 30088556 : switch (TREE_CODE (_p1))
10232 : : {
10233 : 20664377 : case SSA_NAME:
10234 : 20664377 : if (gimple *_d1 = get_def (valueize, _p1))
10235 : : {
10236 : 12257038 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10237 : 11373974 : switch (gimple_assign_rhs_code (_a1))
10238 : : {
10239 : 3526432 : CASE_CONVERT:
10240 : 3526432 : {
10241 : 3526432 : tree _q30 = gimple_assign_rhs1 (_a1);
10242 : 3526432 : _q30 = do_valueize (valueize, _q30);
10243 : 3526432 : switch (TREE_CODE (_q30))
10244 : : {
10245 : 3526430 : case SSA_NAME:
10246 : 3526430 : if (gimple *_d2 = get_def (valueize, _q30))
10247 : : {
10248 : 3393162 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10249 : 3784364 : switch (gimple_assign_rhs_code (_a2))
10250 : : {
10251 : 34045 : case MINUS_EXPR:
10252 : 34045 : {
10253 : 34045 : tree _q40 = gimple_assign_rhs1 (_a2);
10254 : 34045 : _q40 = do_valueize (valueize, _q40);
10255 : 34045 : tree _q41 = gimple_assign_rhs2 (_a2);
10256 : 34045 : _q41 = do_valueize (valueize, _q41);
10257 : 34045 : switch (TREE_CODE (_q40))
10258 : : {
10259 : 13787 : case SSA_NAME:
10260 : 13787 : if (gimple *_d3 = get_def (valueize, _q40))
10261 : : {
10262 : 12993 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10263 : 14324 : switch (gimple_assign_rhs_code (_a3))
10264 : : {
10265 : 331 : CASE_CONVERT:
10266 : 331 : {
10267 : 331 : tree _q50 = gimple_assign_rhs1 (_a3);
10268 : 331 : _q50 = do_valueize (valueize, _q50);
10269 : 331 : switch (TREE_CODE (_q41))
10270 : : {
10271 : 288 : case SSA_NAME:
10272 : 288 : if (gimple *_d4 = get_def (valueize, _q41))
10273 : : {
10274 : 288 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
10275 : 269 : switch (gimple_assign_rhs_code (_a4))
10276 : : {
10277 : 199 : CASE_CONVERT:
10278 : 199 : {
10279 : 199 : tree _q70 = gimple_assign_rhs1 (_a4);
10280 : 199 : _q70 = do_valueize (valueize, _q70);
10281 : 199 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
10282 : : {
10283 : 112 : {
10284 : 112 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q50 };
10285 : 112 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
10286 : 224 : && ((
10287 : : 1
10288 : 112 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
10289 : : || (
10290 : :
10291 : : && type == TREE_TYPE (captures[3])))
10292 : : )
10293 : : {
10294 : 112 : gimple_seq *lseq = seq;
10295 : 112 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2161;
10296 : 112 : {
10297 : 112 : tree tem;
10298 : 112 : tem = captures[3];
10299 : 112 : res_op->set_value (tem);
10300 : 112 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
10301 : 112 : return true;
10302 : : }
10303 : 0 : next_after_fail2161:;
10304 : : }
10305 : : }
10306 : : }
10307 : : break;
10308 : : }
10309 : : default:;
10310 : : }
10311 : : }
10312 : : break;
10313 : : default:;
10314 : : }
10315 : : break;
10316 : : }
10317 : : default:;
10318 : : }
10319 : : }
10320 : : break;
10321 : : default:;
10322 : : }
10323 : : break;
10324 : : }
10325 : 223113 : case POINTER_DIFF_EXPR:
10326 : 223113 : {
10327 : 223113 : tree _q40 = gimple_assign_rhs1 (_a2);
10328 : 223113 : _q40 = do_valueize (valueize, _q40);
10329 : 223113 : tree _q41 = gimple_assign_rhs2 (_a2);
10330 : 223113 : _q41 = do_valueize (valueize, _q41);
10331 : 223113 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
10332 : : {
10333 : 4329 : {
10334 : 4329 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
10335 : 4329 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
10336 : : )
10337 : : {
10338 : 4329 : gimple_seq *lseq = seq;
10339 : 4329 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2162;
10340 : 4329 : {
10341 : 4329 : res_op->set_op (NOP_EXPR, type, 1);
10342 : 4329 : res_op->ops[0] = captures[3];
10343 : 4329 : res_op->resimplify (lseq, valueize);
10344 : 4329 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
10345 : 4329 : return true;
10346 : : }
10347 : 0 : next_after_fail2162:;
10348 : : }
10349 : : }
10350 : : }
10351 : : break;
10352 : : }
10353 : : default:;
10354 : : }
10355 : : }
10356 : : break;
10357 : : default:;
10358 : : }
10359 : : break;
10360 : : }
10361 : 72416 : case MINUS_EXPR:
10362 : 72416 : {
10363 : 72416 : tree _q30 = gimple_assign_rhs1 (_a1);
10364 : 72416 : _q30 = do_valueize (valueize, _q30);
10365 : 72416 : tree _q31 = gimple_assign_rhs2 (_a1);
10366 : 72416 : _q31 = do_valueize (valueize, _q31);
10367 : 72416 : switch (TREE_CODE (_q30))
10368 : : {
10369 : 67088 : case SSA_NAME:
10370 : 67088 : if (gimple *_d2 = get_def (valueize, _q30))
10371 : : {
10372 : 66673 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10373 : 92701 : switch (gimple_assign_rhs_code (_a2))
10374 : : {
10375 : 25785 : CASE_CONVERT:
10376 : 25785 : {
10377 : 25785 : tree _q40 = gimple_assign_rhs1 (_a2);
10378 : 25785 : _q40 = do_valueize (valueize, _q40);
10379 : 25785 : switch (TREE_CODE (_q31))
10380 : : {
10381 : 25712 : case SSA_NAME:
10382 : 25712 : if (gimple *_d3 = get_def (valueize, _q31))
10383 : : {
10384 : 25637 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10385 : 25575 : switch (gimple_assign_rhs_code (_a3))
10386 : : {
10387 : 25273 : CASE_CONVERT:
10388 : 25273 : {
10389 : 25273 : tree _q60 = gimple_assign_rhs1 (_a3);
10390 : 25273 : _q60 = do_valueize (valueize, _q60);
10391 : 25273 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
10392 : : {
10393 : 110 : {
10394 : 110 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p1, _q40 };
10395 : 110 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
10396 : 110 : && ((
10397 : : 1
10398 : 110 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
10399 : : || (
10400 : :
10401 : : && type == TREE_TYPE (captures[3])))
10402 : : )
10403 : : {
10404 : 110 : gimple_seq *lseq = seq;
10405 : 110 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2163;
10406 : 110 : {
10407 : 110 : tree tem;
10408 : 110 : tem = captures[3];
10409 : 110 : res_op->set_value (tem);
10410 : 110 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
10411 : 110 : return true;
10412 : : }
10413 : 0 : next_after_fail2163:;
10414 : : }
10415 : : }
10416 : : }
10417 : : break;
10418 : : }
10419 : : default:;
10420 : : }
10421 : : }
10422 : : break;
10423 : : default:;
10424 : : }
10425 : : break;
10426 : : }
10427 : : default:;
10428 : : }
10429 : : }
10430 : : break;
10431 : 5328 : case INTEGER_CST:
10432 : 5328 : {
10433 : 5328 : switch (TREE_CODE (_q31))
10434 : : {
10435 : 5328 : case SSA_NAME:
10436 : 5328 : if (gimple *_d2 = get_def (valueize, _q31))
10437 : : {
10438 : 4584 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10439 : 2782 : switch (gimple_assign_rhs_code (_a2))
10440 : : {
10441 : 150 : case BIT_AND_EXPR:
10442 : 150 : {
10443 : 150 : tree _q50 = gimple_assign_rhs1 (_a2);
10444 : 150 : _q50 = do_valueize (valueize, _q50);
10445 : 150 : tree _q51 = gimple_assign_rhs2 (_a2);
10446 : 150 : _q51 = do_valueize (valueize, _q51);
10447 : 150 : if (tree_swap_operands_p (_q50, _q51))
10448 : 0 : std::swap (_q50, _q51);
10449 : 150 : switch (TREE_CODE (_q50))
10450 : : {
10451 : 150 : case SSA_NAME:
10452 : 150 : if (gimple *_d3 = get_def (valueize, _q50))
10453 : : {
10454 : 150 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10455 : 184 : switch (gimple_assign_rhs_code (_a3))
10456 : : {
10457 : 116 : CASE_CONVERT:
10458 : 116 : {
10459 : 116 : tree _q60 = gimple_assign_rhs1 (_a3);
10460 : 116 : _q60 = do_valueize (valueize, _q60);
10461 : 116 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
10462 : : {
10463 : 74 : switch (TREE_CODE (_q51))
10464 : : {
10465 : 74 : case INTEGER_CST:
10466 : 74 : {
10467 : 74 : {
10468 : 74 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q51 };
10469 : 74 : if (tree_int_cst_min_precision (captures[3], UNSIGNED) <= tree_ctz (captures[2])
10470 : : )
10471 : : {
10472 : 2 : {
10473 : 2 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[3]));
10474 : 2 : gimple_seq *lseq = seq;
10475 : 2 : if (lseq
10476 : 1 : && (!single_use (captures[1])))
10477 : 1 : lseq = NULL;
10478 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2164;
10479 : 2 : {
10480 : 2 : res_op->set_op (POINTER_PLUS_EXPR, type, 2);
10481 : 2 : {
10482 : 2 : tree _o1[2], _r1;
10483 : 2 : _o1[0] = captures[0];
10484 : 2 : _o1[1] = algn;
10485 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10486 : 2 : tem_op.resimplify (lseq, valueize);
10487 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10488 : 2 : if (!_r1) goto next_after_fail2164;
10489 : 1 : res_op->ops[0] = _r1;
10490 : : }
10491 : 1 : res_op->ops[1] = captures[2];
10492 : 1 : res_op->resimplify (lseq, valueize);
10493 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
10494 : 1 : return true;
10495 : : }
10496 : 73 : next_after_fail2164:;
10497 : : }
10498 : : }
10499 : : }
10500 : 73 : break;
10501 : : }
10502 : : default:;
10503 : : }
10504 : : }
10505 : 115 : switch (TREE_CODE (_q60))
10506 : : {
10507 : 115 : case SSA_NAME:
10508 : 115 : if (gimple *_d4 = get_def (valueize, _q60))
10509 : : {
10510 : 103 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
10511 : 44 : switch (gimple_assign_rhs_code (_a4))
10512 : : {
10513 : 40 : case POINTER_PLUS_EXPR:
10514 : 40 : {
10515 : 40 : tree _q70 = gimple_assign_rhs1 (_a4);
10516 : 40 : _q70 = do_valueize (valueize, _q70);
10517 : 40 : tree _q71 = gimple_assign_rhs2 (_a4);
10518 : 40 : _q71 = do_valueize (valueize, _q71);
10519 : 40 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
10520 : : {
10521 : 40 : switch (TREE_CODE (_q71))
10522 : : {
10523 : 40 : case INTEGER_CST:
10524 : 40 : {
10525 : 40 : switch (TREE_CODE (_q51))
10526 : : {
10527 : 40 : case INTEGER_CST:
10528 : 40 : {
10529 : 40 : {
10530 : 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q71, _q51 };
10531 : 40 : {
10532 : 40 : auto mask_width = tree_int_cst_min_precision (captures[4], UNSIGNED);
10533 : 40 : if (mask_width <= tree_ctz (captures[2]) && mask_width <= tree_ctz (captures[3])
10534 : : )
10535 : : {
10536 : 4 : {
10537 : 4 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[4]));
10538 : 4 : gimple_seq *lseq = seq;
10539 : 4 : if (lseq
10540 : 2 : && (!single_use (captures[1])))
10541 : 2 : lseq = NULL;
10542 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2165;
10543 : 4 : {
10544 : 4 : res_op->set_op (POINTER_PLUS_EXPR, type, 2);
10545 : 4 : {
10546 : 4 : tree _o1[2], _r1;
10547 : 4 : _o1[0] = captures[0];
10548 : 4 : _o1[1] = algn;
10549 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10550 : 4 : tem_op.resimplify (lseq, valueize);
10551 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10552 : 4 : if (!_r1) goto next_after_fail2165;
10553 : 2 : res_op->ops[0] = _r1;
10554 : : }
10555 : 2 : res_op->ops[1] = captures[2];
10556 : 2 : res_op->resimplify (lseq, valueize);
10557 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
10558 : 2 : return true;
10559 : : }
10560 : 38 : next_after_fail2165:;
10561 : : }
10562 : : }
10563 : : }
10564 : : }
10565 : 38 : break;
10566 : : }
10567 : : default:;
10568 : : }
10569 : : break;
10570 : : }
10571 : : default:;
10572 : : }
10573 : : }
10574 : : break;
10575 : : }
10576 : : default:;
10577 : : }
10578 : : }
10579 : : break;
10580 : : default:;
10581 : : }
10582 : : break;
10583 : : }
10584 : : default:;
10585 : : }
10586 : : }
10587 : : break;
10588 : : default:;
10589 : : }
10590 : 33321918 : break;
10591 : : }
10592 : : default:;
10593 : : }
10594 : : }
10595 : : break;
10596 : : default:;
10597 : : }
10598 : : break;
10599 : : }
10600 : : default:;
10601 : : }
10602 : : break;
10603 : : }
10604 : 0 : case POINTER_DIFF_EXPR:
10605 : 0 : {
10606 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
10607 : 0 : _q30 = do_valueize (valueize, _q30);
10608 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
10609 : 0 : _q31 = do_valueize (valueize, _q31);
10610 : 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
10611 : : {
10612 : 0 : {
10613 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
10614 : 0 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
10615 : : )
10616 : : {
10617 : 0 : gimple_seq *lseq = seq;
10618 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2166;
10619 : 0 : {
10620 : 0 : res_op->set_op (NOP_EXPR, type, 1);
10621 : 0 : res_op->ops[0] = captures[3];
10622 : 0 : res_op->resimplify (lseq, valueize);
10623 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
10624 : 0 : return true;
10625 : : }
10626 : 0 : next_after_fail2166:;
10627 : : }
10628 : : }
10629 : : }
10630 : : break;
10631 : : }
10632 : 182809 : case NEGATE_EXPR:
10633 : 182809 : {
10634 : 182809 : tree _q30 = gimple_assign_rhs1 (_a1);
10635 : 182809 : _q30 = do_valueize (valueize, _q30);
10636 : 182809 : switch (TREE_CODE (_q30))
10637 : : {
10638 : 182809 : case SSA_NAME:
10639 : 182809 : if (gimple *_d2 = get_def (valueize, _q30))
10640 : : {
10641 : 176216 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10642 : 164686 : switch (gimple_assign_rhs_code (_a2))
10643 : : {
10644 : 140 : case BIT_AND_EXPR:
10645 : 140 : {
10646 : 140 : tree _q40 = gimple_assign_rhs1 (_a2);
10647 : 140 : _q40 = do_valueize (valueize, _q40);
10648 : 140 : tree _q41 = gimple_assign_rhs2 (_a2);
10649 : 140 : _q41 = do_valueize (valueize, _q41);
10650 : 140 : if (tree_swap_operands_p (_q40, _q41))
10651 : 0 : std::swap (_q40, _q41);
10652 : 140 : switch (TREE_CODE (_q40))
10653 : : {
10654 : 140 : case SSA_NAME:
10655 : 140 : if (gimple *_d3 = get_def (valueize, _q40))
10656 : : {
10657 : 140 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10658 : 170 : switch (gimple_assign_rhs_code (_a3))
10659 : : {
10660 : 96 : CASE_CONVERT:
10661 : 96 : {
10662 : 96 : tree _q50 = gimple_assign_rhs1 (_a3);
10663 : 96 : _q50 = do_valueize (valueize, _q50);
10664 : 96 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
10665 : : {
10666 : 0 : switch (TREE_CODE (_q41))
10667 : : {
10668 : 0 : case INTEGER_CST:
10669 : 0 : {
10670 : 0 : {
10671 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10672 : 0 : {
10673 : 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1]));
10674 : 0 : gimple_seq *lseq = seq;
10675 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2167;
10676 : 0 : {
10677 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
10678 : 0 : res_op->ops[0] = captures[0];
10679 : 0 : res_op->ops[1] = algn;
10680 : 0 : res_op->resimplify (lseq, valueize);
10681 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
10682 : 0 : return true;
10683 : : }
10684 : 0 : next_after_fail2167:;
10685 : : }
10686 : : }
10687 : 0 : break;
10688 : : }
10689 : : default:;
10690 : : }
10691 : : }
10692 : 96 : switch (TREE_CODE (_q50))
10693 : : {
10694 : 96 : case SSA_NAME:
10695 : 96 : if (gimple *_d4 = get_def (valueize, _q50))
10696 : : {
10697 : 96 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
10698 : 112 : switch (gimple_assign_rhs_code (_a4))
10699 : : {
10700 : 74 : case POINTER_PLUS_EXPR:
10701 : 74 : {
10702 : 74 : tree _q60 = gimple_assign_rhs1 (_a4);
10703 : 74 : _q60 = do_valueize (valueize, _q60);
10704 : 74 : tree _q61 = gimple_assign_rhs2 (_a4);
10705 : 74 : _q61 = do_valueize (valueize, _q61);
10706 : 74 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
10707 : : {
10708 : 74 : switch (TREE_CODE (_q61))
10709 : : {
10710 : 74 : case INTEGER_CST:
10711 : 74 : {
10712 : 74 : switch (TREE_CODE (_q41))
10713 : : {
10714 : 74 : case INTEGER_CST:
10715 : 74 : {
10716 : 74 : {
10717 : 74 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q61, _q41 };
10718 : 74 : if (tree_int_cst_min_precision (captures[2], UNSIGNED) <= tree_ctz (captures[1])
10719 : : )
10720 : : {
10721 : 2 : {
10722 : 2 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[2]));
10723 : 2 : gimple_seq *lseq = seq;
10724 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2168;
10725 : 2 : {
10726 : 2 : res_op->set_op (BIT_AND_EXPR, type, 2);
10727 : 2 : res_op->ops[0] = captures[0];
10728 : 2 : res_op->ops[1] = algn;
10729 : 2 : res_op->resimplify (lseq, valueize);
10730 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
10731 : 2 : return true;
10732 : : }
10733 : 0 : next_after_fail2168:;
10734 : : }
10735 : : }
10736 : : }
10737 : 72 : break;
10738 : : }
10739 : : default:;
10740 : : }
10741 : : break;
10742 : : }
10743 : : default:;
10744 : : }
10745 : : }
10746 : : break;
10747 : : }
10748 : : default:;
10749 : : }
10750 : : }
10751 : : break;
10752 : : default:;
10753 : : }
10754 : : break;
10755 : : }
10756 : : default:;
10757 : : }
10758 : : }
10759 : : break;
10760 : : default:;
10761 : : }
10762 : 33321918 : break;
10763 : : }
10764 : : default:;
10765 : : }
10766 : : }
10767 : : break;
10768 : : default:;
10769 : : }
10770 : : break;
10771 : : }
10772 : : default:;
10773 : : }
10774 : : }
10775 : : break;
10776 : : default:;
10777 : : }
10778 : : return false;
10779 : : }
10780 : :
10781 : : bool
10782 : 129526508 : gimple_simplify_NE_EXPR (gimple_match_op *res_op, gimple_seq *seq,
10783 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10784 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
10785 : : {
10786 : 129526508 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10787 : 129526508 : switch (TREE_CODE (_p1))
10788 : : {
10789 : 22847434 : case SSA_NAME:
10790 : 22847434 : if (gimple *_d1 = get_def (valueize, _p1))
10791 : : {
10792 : 7166134 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10793 : 10122382 : switch (gimple_assign_rhs_code (_a1))
10794 : : {
10795 : 13234 : case NEGATE_EXPR:
10796 : 13234 : {
10797 : 13234 : tree _q30 = gimple_assign_rhs1 (_a1);
10798 : 13234 : _q30 = do_valueize (valueize, _q30);
10799 : 13234 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10800 : : {
10801 : 270 : {
10802 : 270 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10803 : 270 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, NE_EXPR))
10804 : 12 : return true;
10805 : : }
10806 : : }
10807 : : break;
10808 : : }
10809 : : default:;
10810 : : }
10811 : : }
10812 : : break;
10813 : 129526496 : default:;
10814 : : }
10815 : 129526496 : switch (TREE_CODE (_p0))
10816 : : {
10817 : 126785918 : case SSA_NAME:
10818 : 126785918 : if (gimple *_d1 = get_def (valueize, _p0))
10819 : : {
10820 : 42867680 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10821 : 47010250 : switch (gimple_assign_rhs_code (_a1))
10822 : : {
10823 : 13870 : case NEGATE_EXPR:
10824 : 13870 : {
10825 : 13870 : tree _q20 = gimple_assign_rhs1 (_a1);
10826 : 13870 : _q20 = do_valueize (valueize, _q20);
10827 : 13870 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10828 : : {
10829 : 101 : {
10830 : 101 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10831 : 101 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, NE_EXPR))
10832 : 35 : return true;
10833 : : }
10834 : : }
10835 : : break;
10836 : : }
10837 : 0 : case CEIL_MOD_EXPR:
10838 : 0 : {
10839 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10840 : 0 : _q20 = do_valueize (valueize, _q20);
10841 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10842 : 0 : _q21 = do_valueize (valueize, _q21);
10843 : 0 : if (integer_pow2p (_q21))
10844 : : {
10845 : 0 : if (integer_zerop (_p1))
10846 : : {
10847 : 0 : {
10848 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10849 : 0 : if (gimple_simplify_231 (res_op, seq, valueize, type, captures, NE_EXPR, CEIL_MOD_EXPR))
10850 : 0 : return true;
10851 : : }
10852 : : }
10853 : : }
10854 : : break;
10855 : : }
10856 : 1831 : case FLOOR_MOD_EXPR:
10857 : 1831 : {
10858 : 1831 : tree _q20 = gimple_assign_rhs1 (_a1);
10859 : 1831 : _q20 = do_valueize (valueize, _q20);
10860 : 1831 : tree _q21 = gimple_assign_rhs2 (_a1);
10861 : 1831 : _q21 = do_valueize (valueize, _q21);
10862 : 1831 : if (integer_pow2p (_q21))
10863 : : {
10864 : 0 : if (integer_zerop (_p1))
10865 : : {
10866 : 0 : {
10867 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10868 : 0 : if (gimple_simplify_231 (res_op, seq, valueize, type, captures, NE_EXPR, FLOOR_MOD_EXPR))
10869 : 0 : return true;
10870 : : }
10871 : : }
10872 : : }
10873 : : break;
10874 : : }
10875 : 0 : case ROUND_MOD_EXPR:
10876 : 0 : {
10877 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10878 : 0 : _q20 = do_valueize (valueize, _q20);
10879 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10880 : 0 : _q21 = do_valueize (valueize, _q21);
10881 : 0 : if (integer_pow2p (_q21))
10882 : : {
10883 : 0 : if (integer_zerop (_p1))
10884 : : {
10885 : 0 : {
10886 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10887 : 0 : if (gimple_simplify_231 (res_op, seq, valueize, type, captures, NE_EXPR, ROUND_MOD_EXPR))
10888 : 0 : return true;
10889 : : }
10890 : : }
10891 : : }
10892 : : break;
10893 : : }
10894 : 97014 : case TRUNC_MOD_EXPR:
10895 : 97014 : {
10896 : 97014 : tree _q20 = gimple_assign_rhs1 (_a1);
10897 : 97014 : _q20 = do_valueize (valueize, _q20);
10898 : 97014 : tree _q21 = gimple_assign_rhs2 (_a1);
10899 : 97014 : _q21 = do_valueize (valueize, _q21);
10900 : 97014 : if (integer_pow2p (_q21))
10901 : : {
10902 : 3733 : if (integer_zerop (_p1))
10903 : : {
10904 : 1421 : {
10905 : 1421 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10906 : 1421 : if (gimple_simplify_231 (res_op, seq, valueize, type, captures, NE_EXPR, TRUNC_MOD_EXPR))
10907 : 585 : return true;
10908 : : }
10909 : : }
10910 : : }
10911 : : break;
10912 : : }
10913 : : default:;
10914 : : }
10915 : : }
10916 : : break;
10917 : 129525876 : default:;
10918 : : }
10919 : 129525876 : {
10920 : 129525876 : tree _p0_pops[1];
10921 : 129525876 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
10922 : : {
10923 : 625427 : tree _q20 = _p0_pops[0];
10924 : 625427 : switch (TREE_CODE (_q20))
10925 : : {
10926 : 614877 : case SSA_NAME:
10927 : 614877 : if (gimple *_d1 = get_def (valueize, _q20))
10928 : : {
10929 : 597334 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10930 : 608159 : switch (gimple_assign_rhs_code (_a1))
10931 : : {
10932 : 97 : case LSHIFT_EXPR:
10933 : 97 : {
10934 : 97 : tree _q30 = gimple_assign_rhs1 (_a1);
10935 : 97 : _q30 = do_valueize (valueize, _q30);
10936 : 97 : tree _q31 = gimple_assign_rhs2 (_a1);
10937 : 97 : _q31 = do_valueize (valueize, _q31);
10938 : 97 : {
10939 : 97 : tree _p1_pops[1];
10940 : 97 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
10941 : : {
10942 : 0 : tree _q60 = _p1_pops[0];
10943 : 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
10944 : : {
10945 : 0 : {
10946 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10947 : 0 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
10948 : 0 : return true;
10949 : : }
10950 : : }
10951 : : }
10952 : : }
10953 : 97 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
10954 : : {
10955 : 0 : {
10956 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10957 : 0 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
10958 : 0 : return true;
10959 : : }
10960 : : }
10961 : : break;
10962 : : }
10963 : : default:;
10964 : : }
10965 : : }
10966 : : break;
10967 : 625427 : default:;
10968 : : }
10969 : 625427 : switch (TREE_CODE (_p1))
10970 : : {
10971 : 185100 : case SSA_NAME:
10972 : 185100 : if (gimple *_d1 = get_def (valueize, _p1))
10973 : : {
10974 : 149963 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10975 : 194499 : switch (gimple_assign_rhs_code (_a1))
10976 : : {
10977 : 0 : case LSHIFT_EXPR:
10978 : 0 : {
10979 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
10980 : 0 : _q40 = do_valueize (valueize, _q40);
10981 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
10982 : 0 : _q41 = do_valueize (valueize, _q41);
10983 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
10984 : : {
10985 : 0 : {
10986 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
10987 : 0 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
10988 : 0 : return true;
10989 : : }
10990 : : }
10991 : : break;
10992 : : }
10993 : : default:;
10994 : : }
10995 : : }
10996 : : break;
10997 : 625427 : default:;
10998 : : }
10999 : 625427 : {
11000 : 625427 : tree _p1_pops[1];
11001 : 625427 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
11002 : : {
11003 : 22717 : tree _q40 = _p1_pops[0];
11004 : 22717 : switch (TREE_CODE (_q40))
11005 : : {
11006 : 19130 : case SSA_NAME:
11007 : 19130 : if (gimple *_d1 = get_def (valueize, _q40))
11008 : : {
11009 : 18613 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11010 : 27504 : switch (gimple_assign_rhs_code (_a1))
11011 : : {
11012 : 0 : case LSHIFT_EXPR:
11013 : 0 : {
11014 : 0 : tree _q50 = gimple_assign_rhs1 (_a1);
11015 : 0 : _q50 = do_valueize (valueize, _q50);
11016 : 0 : tree _q51 = gimple_assign_rhs2 (_a1);
11017 : 0 : _q51 = do_valueize (valueize, _q51);
11018 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11019 : : {
11020 : 0 : {
11021 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
11022 : 0 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
11023 : 0 : return true;
11024 : : }
11025 : : }
11026 : : break;
11027 : : }
11028 : : default:;
11029 : : }
11030 : : }
11031 : : break;
11032 : : default:;
11033 : : }
11034 : : }
11035 : : }
11036 : 625427 : switch (TREE_CODE (_q20))
11037 : : {
11038 : 614877 : case SSA_NAME:
11039 : 614877 : if (gimple *_d1 = get_def (valueize, _q20))
11040 : : {
11041 : 597334 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11042 : 608159 : switch (gimple_assign_rhs_code (_a1))
11043 : : {
11044 : 66025 : case PLUS_EXPR:
11045 : 66025 : {
11046 : 66025 : tree _q30 = gimple_assign_rhs1 (_a1);
11047 : 66025 : _q30 = do_valueize (valueize, _q30);
11048 : 66025 : tree _q31 = gimple_assign_rhs2 (_a1);
11049 : 66025 : _q31 = do_valueize (valueize, _q31);
11050 : 66025 : if (tree_swap_operands_p (_q30, _q31))
11051 : 1713 : std::swap (_q30, _q31);
11052 : 66025 : switch (TREE_CODE (_q31))
11053 : : {
11054 : 26266 : case SSA_NAME:
11055 : 26266 : if (gimple *_d2 = get_def (valueize, _q31))
11056 : : {
11057 : 26093 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11058 : 25649 : switch (gimple_assign_rhs_code (_a2))
11059 : : {
11060 : 11296 : CASE_CONVERT:
11061 : 11296 : {
11062 : 11296 : tree _q50 = gimple_assign_rhs1 (_a2);
11063 : 11296 : _q50 = do_valueize (valueize, _q50);
11064 : 11296 : switch (TREE_CODE (_p1))
11065 : : {
11066 : 4220 : case SSA_NAME:
11067 : 4220 : if (gimple *_d3 = get_def (valueize, _p1))
11068 : : {
11069 : 4174 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11070 : 7231 : switch (gimple_assign_rhs_code (_a3))
11071 : : {
11072 : 302 : CASE_CONVERT:
11073 : 302 : {
11074 : 302 : tree _q70 = gimple_assign_rhs1 (_a3);
11075 : 302 : _q70 = do_valueize (valueize, _q70);
11076 : 302 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
11077 : : {
11078 : 0 : {
11079 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
11080 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11081 : 0 : return true;
11082 : : }
11083 : : }
11084 : : break;
11085 : : }
11086 : : default:;
11087 : : }
11088 : : }
11089 : : break;
11090 : : default:;
11091 : : }
11092 : : break;
11093 : : }
11094 : : default:;
11095 : : }
11096 : : }
11097 : : break;
11098 : 66025 : default:;
11099 : : }
11100 : 66025 : switch (TREE_CODE (_q30))
11101 : : {
11102 : 66025 : case SSA_NAME:
11103 : 66025 : if (gimple *_d2 = get_def (valueize, _q30))
11104 : : {
11105 : 63135 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11106 : 57308 : switch (gimple_assign_rhs_code (_a2))
11107 : : {
11108 : 29046 : CASE_CONVERT:
11109 : 29046 : {
11110 : 29046 : tree _q40 = gimple_assign_rhs1 (_a2);
11111 : 29046 : _q40 = do_valueize (valueize, _q40);
11112 : 29046 : switch (TREE_CODE (_p1))
11113 : : {
11114 : 15511 : case SSA_NAME:
11115 : 15511 : if (gimple *_d3 = get_def (valueize, _p1))
11116 : : {
11117 : 9490 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11118 : 9932 : switch (gimple_assign_rhs_code (_a3))
11119 : : {
11120 : 1128 : CASE_CONVERT:
11121 : 1128 : {
11122 : 1128 : tree _q70 = gimple_assign_rhs1 (_a3);
11123 : 1128 : _q70 = do_valueize (valueize, _q70);
11124 : 1128 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
11125 : : {
11126 : 0 : {
11127 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
11128 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11129 : 0 : return true;
11130 : : }
11131 : : }
11132 : : break;
11133 : : }
11134 : : default:;
11135 : : }
11136 : : }
11137 : : break;
11138 : 29046 : default:;
11139 : : }
11140 : 29046 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
11141 : : {
11142 : 40 : {
11143 : 40 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
11144 : 40 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11145 : 29 : return true;
11146 : : }
11147 : : }
11148 : : break;
11149 : : }
11150 : : default:;
11151 : : }
11152 : : }
11153 : : break;
11154 : 65996 : default:;
11155 : : }
11156 : 65996 : switch (TREE_CODE (_q31))
11157 : : {
11158 : 26250 : case SSA_NAME:
11159 : 26250 : if (gimple *_d2 = get_def (valueize, _q31))
11160 : : {
11161 : 26077 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11162 : 25625 : switch (gimple_assign_rhs_code (_a2))
11163 : : {
11164 : 11296 : CASE_CONVERT:
11165 : 11296 : {
11166 : 11296 : tree _q50 = gimple_assign_rhs1 (_a2);
11167 : 11296 : _q50 = do_valueize (valueize, _q50);
11168 : 11296 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
11169 : : {
11170 : 15 : {
11171 : 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
11172 : 15 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11173 : 11 : return true;
11174 : : }
11175 : : }
11176 : : break;
11177 : : }
11178 : : default:;
11179 : : }
11180 : : }
11181 : : break;
11182 : 65985 : default:;
11183 : : }
11184 : 65985 : switch (TREE_CODE (_p1))
11185 : : {
11186 : 36122 : case SSA_NAME:
11187 : 36122 : if (gimple *_d2 = get_def (valueize, _p1))
11188 : : {
11189 : 29787 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11190 : 44756 : switch (gimple_assign_rhs_code (_a2))
11191 : : {
11192 : 2753 : CASE_CONVERT:
11193 : 2753 : {
11194 : 2753 : tree _q60 = gimple_assign_rhs1 (_a2);
11195 : 2753 : _q60 = do_valueize (valueize, _q60);
11196 : 2753 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
11197 : : {
11198 : 28 : {
11199 : 28 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
11200 : 28 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11201 : 26 : return true;
11202 : : }
11203 : : }
11204 : 2727 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11205 : : {
11206 : 4 : {
11207 : 4 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
11208 : 4 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11209 : 4 : return true;
11210 : : }
11211 : : }
11212 : : break;
11213 : : }
11214 : : default:;
11215 : : }
11216 : : }
11217 : : break;
11218 : 65955 : default:;
11219 : : }
11220 : 65955 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
11221 : : {
11222 : 0 : {
11223 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
11224 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11225 : 0 : return true;
11226 : : }
11227 : : }
11228 : 65955 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
11229 : : {
11230 : 0 : {
11231 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
11232 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11233 : 0 : return true;
11234 : : }
11235 : : }
11236 : 129525806 : break;
11237 : : }
11238 : : default:;
11239 : : }
11240 : : }
11241 : : break;
11242 : : default:;
11243 : : }
11244 : : }
11245 : : }
11246 : 129525806 : {
11247 : 129525806 : tree _p1_pops[1];
11248 : 129525806 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
11249 : : {
11250 : 209931 : tree _q30 = _p1_pops[0];
11251 : 209931 : switch (TREE_CODE (_q30))
11252 : : {
11253 : 192233 : case SSA_NAME:
11254 : 192233 : if (gimple *_d1 = get_def (valueize, _q30))
11255 : : {
11256 : 177029 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11257 : 217226 : switch (gimple_assign_rhs_code (_a1))
11258 : : {
11259 : 142 : case LSHIFT_EXPR:
11260 : 142 : {
11261 : 142 : tree _q40 = gimple_assign_rhs1 (_a1);
11262 : 142 : _q40 = do_valueize (valueize, _q40);
11263 : 142 : tree _q41 = gimple_assign_rhs2 (_a1);
11264 : 142 : _q41 = do_valueize (valueize, _q41);
11265 : 142 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
11266 : : {
11267 : 0 : {
11268 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
11269 : 0 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
11270 : 0 : return true;
11271 : : }
11272 : : }
11273 : : break;
11274 : : }
11275 : : default:;
11276 : : }
11277 : : }
11278 : : break;
11279 : : default:;
11280 : : }
11281 : : }
11282 : : }
11283 : 129525806 : switch (TREE_CODE (_p0))
11284 : : {
11285 : 126785228 : case SSA_NAME:
11286 : 126785228 : if (gimple *_d1 = get_def (valueize, _p0))
11287 : : {
11288 : 42866990 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11289 : 47009560 : switch (gimple_assign_rhs_code (_a1))
11290 : : {
11291 : 11863 : case LSHIFT_EXPR:
11292 : 11863 : {
11293 : 11863 : tree _q20 = gimple_assign_rhs1 (_a1);
11294 : 11863 : _q20 = do_valueize (valueize, _q20);
11295 : 11863 : tree _q21 = gimple_assign_rhs2 (_a1);
11296 : 11863 : _q21 = do_valueize (valueize, _q21);
11297 : 11863 : {
11298 : 11863 : tree _p1_pops[1];
11299 : 11863 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
11300 : : {
11301 : 9 : tree _q50 = _p1_pops[0];
11302 : 9 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11303 : : {
11304 : 9 : {
11305 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11306 : 9 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
11307 : 3 : return true;
11308 : : }
11309 : : }
11310 : : }
11311 : : }
11312 : 11860 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
11313 : : {
11314 : 32 : {
11315 : 32 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
11316 : 32 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
11317 : 4 : return true;
11318 : : }
11319 : : }
11320 : 11856 : if (gimple_zero_one_valued_p (_q20, valueize))
11321 : : {
11322 : 1317 : switch (TREE_CODE (_q21))
11323 : : {
11324 : 428 : case INTEGER_CST:
11325 : 428 : {
11326 : 428 : if (integer_zerop (_p1))
11327 : : {
11328 : 172 : {
11329 : 172 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
11330 : 172 : if (tree_fits_shwi_p (captures[1])
11331 : 172 : && tree_to_shwi (captures[1]) > 0
11332 : 344 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
11333 : : )
11334 : : {
11335 : 172 : gimple_seq *lseq = seq;
11336 : 172 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2424;
11337 : 172 : {
11338 : 172 : res_op->set_op (NOP_EXPR, type, 1);
11339 : 172 : res_op->ops[0] = captures[0];
11340 : 172 : res_op->resimplify (lseq, valueize);
11341 : 172 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1155, __FILE__, __LINE__, true);
11342 : 172 : return true;
11343 : : }
11344 : 0 : next_after_fail2424:;
11345 : : }
11346 : : }
11347 : : }
11348 : : break;
11349 : : }
11350 : : default:;
11351 : : }
11352 : : }
11353 : : break;
11354 : : }
11355 : : default:;
11356 : : }
11357 : : }
11358 : : break;
11359 : 129525627 : default:;
11360 : : }
11361 : 129525627 : switch (TREE_CODE (_p1))
11362 : : {
11363 : 22847310 : case SSA_NAME:
11364 : 22847310 : if (gimple *_d1 = get_def (valueize, _p1))
11365 : : {
11366 : 7166036 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11367 : 10122294 : switch (gimple_assign_rhs_code (_a1))
11368 : : {
11369 : 2941 : case LSHIFT_EXPR:
11370 : 2941 : {
11371 : 2941 : tree _q30 = gimple_assign_rhs1 (_a1);
11372 : 2941 : _q30 = do_valueize (valueize, _q30);
11373 : 2941 : tree _q31 = gimple_assign_rhs2 (_a1);
11374 : 2941 : _q31 = do_valueize (valueize, _q31);
11375 : 2941 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
11376 : : {
11377 : 5 : {
11378 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
11379 : 5 : if (gimple_simplify_325 (res_op, seq, valueize, type, captures))
11380 : 1 : return true;
11381 : : }
11382 : : }
11383 : : break;
11384 : : }
11385 : : default:;
11386 : : }
11387 : : }
11388 : : break;
11389 : 129525626 : default:;
11390 : : }
11391 : 129525626 : switch (TREE_CODE (_p0))
11392 : : {
11393 : 126785048 : case SSA_NAME:
11394 : 126785048 : if (gimple *_d1 = get_def (valueize, _p0))
11395 : : {
11396 : 42866811 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11397 : 47009381 : switch (gimple_assign_rhs_code (_a1))
11398 : : {
11399 : 383818 : case VIEW_CONVERT_EXPR:
11400 : 383818 : {
11401 : 383818 : tree _q20 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
11402 : 383818 : if ((TREE_CODE (_q20) == SSA_NAME
11403 : 383818 : || is_gimple_min_invariant (_q20)))
11404 : : {
11405 : 382970 : _q20 = do_valueize (valueize, _q20);
11406 : 382970 : if (gimple_zero_one_valued_p (_q20, valueize))
11407 : : {
11408 : 5884 : if (integer_zerop (_p1))
11409 : : {
11410 : 5469 : {
11411 : 5469 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11412 : 5469 : if (gimple_simplify_236 (res_op, seq, valueize, type, captures, NE_EXPR))
11413 : 4967 : return true;
11414 : : }
11415 : : }
11416 : : }
11417 : : }
11418 : : break;
11419 : : }
11420 : 101443 : case MULT_EXPR:
11421 : 101443 : {
11422 : 101443 : tree _q20 = gimple_assign_rhs1 (_a1);
11423 : 101443 : _q20 = do_valueize (valueize, _q20);
11424 : 101443 : tree _q21 = gimple_assign_rhs2 (_a1);
11425 : 101443 : _q21 = do_valueize (valueize, _q21);
11426 : 101443 : if (tree_swap_operands_p (_q20, _q21))
11427 : 1313 : std::swap (_q20, _q21);
11428 : 101443 : switch (TREE_CODE (_p1))
11429 : : {
11430 : 41038 : case SSA_NAME:
11431 : 41038 : if (gimple *_d2 = get_def (valueize, _p1))
11432 : : {
11433 : 33513 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11434 : 45427 : switch (gimple_assign_rhs_code (_a2))
11435 : : {
11436 : 5480 : case MULT_EXPR:
11437 : 5480 : {
11438 : 5480 : tree _q50 = gimple_assign_rhs1 (_a2);
11439 : 5480 : _q50 = do_valueize (valueize, _q50);
11440 : 5480 : tree _q51 = gimple_assign_rhs2 (_a2);
11441 : 5480 : _q51 = do_valueize (valueize, _q51);
11442 : 5480 : if (tree_swap_operands_p (_q50, _q51))
11443 : 372 : std::swap (_q50, _q51);
11444 : 5480 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11445 : : {
11446 : 2711 : {
11447 : 2711 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11448 : 2711 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, NE_EXPR))
11449 : 191 : return true;
11450 : : }
11451 : : }
11452 : 5289 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11453 : : {
11454 : 198 : {
11455 : 198 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
11456 : 198 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, NE_EXPR))
11457 : 0 : return true;
11458 : : }
11459 : : }
11460 : 5289 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11461 : : {
11462 : 75 : {
11463 : 75 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
11464 : 75 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, NE_EXPR))
11465 : 0 : return true;
11466 : : }
11467 : : }
11468 : 5289 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11469 : : {
11470 : 633 : {
11471 : 633 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
11472 : 633 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, NE_EXPR))
11473 : 1 : return true;
11474 : : }
11475 : : }
11476 : 101251 : break;
11477 : : }
11478 : : default:;
11479 : : }
11480 : : }
11481 : : break;
11482 : 101251 : default:;
11483 : : }
11484 : 101251 : switch (TREE_CODE (_q21))
11485 : : {
11486 : 71079 : case INTEGER_CST:
11487 : 71079 : {
11488 : 71079 : switch (TREE_CODE (_p1))
11489 : : {
11490 : 31072 : case SSA_NAME:
11491 : 31072 : if (gimple *_d2 = get_def (valueize, _p1))
11492 : : {
11493 : 23998 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11494 : 32238 : switch (gimple_assign_rhs_code (_a2))
11495 : : {
11496 : 3166 : case MULT_EXPR:
11497 : 3166 : {
11498 : 3166 : tree _q50 = gimple_assign_rhs1 (_a2);
11499 : 3166 : _q50 = do_valueize (valueize, _q50);
11500 : 3166 : tree _q51 = gimple_assign_rhs2 (_a2);
11501 : 3166 : _q51 = do_valueize (valueize, _q51);
11502 : 3166 : if (tree_swap_operands_p (_q50, _q51))
11503 : 290 : std::swap (_q50, _q51);
11504 : 3166 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11505 : : {
11506 : 1517 : {
11507 : 1517 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11508 : 1517 : if (gimple_simplify_238 (res_op, seq, valueize, type, captures, NE_EXPR))
11509 : 6 : return true;
11510 : : }
11511 : : }
11512 : 129490998 : break;
11513 : : }
11514 : : default:;
11515 : : }
11516 : : }
11517 : : break;
11518 : : default:;
11519 : : }
11520 : : break;
11521 : : }
11522 : : default:;
11523 : : }
11524 : 129490998 : break;
11525 : : }
11526 : 2412195 : CASE_CONVERT:
11527 : 2412195 : {
11528 : 2412195 : tree _q20 = gimple_assign_rhs1 (_a1);
11529 : 2412195 : _q20 = do_valueize (valueize, _q20);
11530 : 2412195 : switch (TREE_CODE (_q20))
11531 : : {
11532 : 2401153 : case SSA_NAME:
11533 : 2401153 : if (gimple *_d2 = get_def (valueize, _q20))
11534 : : {
11535 : 2363553 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11536 : 2758946 : switch (gimple_assign_rhs_code (_a2))
11537 : : {
11538 : 80721 : case EXACT_DIV_EXPR:
11539 : 80721 : {
11540 : 80721 : tree _q30 = gimple_assign_rhs1 (_a2);
11541 : 80721 : _q30 = do_valueize (valueize, _q30);
11542 : 80721 : tree _q31 = gimple_assign_rhs2 (_a2);
11543 : 80721 : _q31 = do_valueize (valueize, _q31);
11544 : 80721 : switch (TREE_CODE (_q31))
11545 : : {
11546 : 80721 : case INTEGER_CST:
11547 : 80721 : {
11548 : 80721 : switch (TREE_CODE (_p1))
11549 : : {
11550 : 4605 : case SSA_NAME:
11551 : 4605 : if (gimple *_d3 = get_def (valueize, _p1))
11552 : : {
11553 : 4533 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11554 : 8273 : switch (gimple_assign_rhs_code (_a3))
11555 : : {
11556 : 255 : CASE_CONVERT:
11557 : 255 : {
11558 : 255 : tree _q60 = gimple_assign_rhs1 (_a3);
11559 : 255 : _q60 = do_valueize (valueize, _q60);
11560 : 255 : switch (TREE_CODE (_q60))
11561 : : {
11562 : 255 : case SSA_NAME:
11563 : 255 : if (gimple *_d4 = get_def (valueize, _q60))
11564 : : {
11565 : 255 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
11566 : 255 : switch (gimple_assign_rhs_code (_a4))
11567 : : {
11568 : 255 : case EXACT_DIV_EXPR:
11569 : 255 : {
11570 : 255 : tree _q70 = gimple_assign_rhs1 (_a4);
11571 : 255 : _q70 = do_valueize (valueize, _q70);
11572 : 255 : tree _q71 = gimple_assign_rhs2 (_a4);
11573 : 255 : _q71 = do_valueize (valueize, _q71);
11574 : 255 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
11575 : : {
11576 : 255 : {
11577 : 255 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
11578 : 255 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, NE_EXPR))
11579 : 17 : return true;
11580 : : }
11581 : : }
11582 : : break;
11583 : : }
11584 : : default:;
11585 : : }
11586 : : }
11587 : : break;
11588 : : default:;
11589 : : }
11590 : : break;
11591 : : }
11592 : : default:;
11593 : : }
11594 : : }
11595 : : break;
11596 : : default:;
11597 : : }
11598 : : break;
11599 : : }
11600 : : default:;
11601 : : }
11602 : : break;
11603 : : }
11604 : : default:;
11605 : : }
11606 : : }
11607 : : break;
11608 : 2412178 : default:;
11609 : : }
11610 : 2412178 : switch (TREE_CODE (_p1))
11611 : : {
11612 : 591755 : case SSA_NAME:
11613 : 591755 : if (gimple *_d2 = get_def (valueize, _p1))
11614 : : {
11615 : 536225 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11616 : 639073 : switch (gimple_assign_rhs_code (_a2))
11617 : : {
11618 : 100231 : case PLUS_EXPR:
11619 : 100231 : {
11620 : 100231 : tree _q40 = gimple_assign_rhs1 (_a2);
11621 : 100231 : _q40 = do_valueize (valueize, _q40);
11622 : 100231 : tree _q41 = gimple_assign_rhs2 (_a2);
11623 : 100231 : _q41 = do_valueize (valueize, _q41);
11624 : 100231 : if (tree_swap_operands_p (_q40, _q41))
11625 : 765 : std::swap (_q40, _q41);
11626 : 100231 : switch (TREE_CODE (_q41))
11627 : : {
11628 : 9212 : case SSA_NAME:
11629 : 9212 : if (gimple *_d3 = get_def (valueize, _q41))
11630 : : {
11631 : 8712 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11632 : 7307 : switch (gimple_assign_rhs_code (_a3))
11633 : : {
11634 : 5236 : CASE_CONVERT:
11635 : 5236 : {
11636 : 5236 : tree _q60 = gimple_assign_rhs1 (_a3);
11637 : 5236 : _q60 = do_valueize (valueize, _q60);
11638 : 5236 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11639 : : {
11640 : 19 : {
11641 : 19 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
11642 : 19 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
11643 : 1 : return true;
11644 : : }
11645 : : }
11646 : : break;
11647 : : }
11648 : : default:;
11649 : : }
11650 : : }
11651 : : break;
11652 : 100230 : default:;
11653 : : }
11654 : 100230 : switch (TREE_CODE (_q40))
11655 : : {
11656 : 100230 : case SSA_NAME:
11657 : 100230 : if (gimple *_d3 = get_def (valueize, _q40))
11658 : : {
11659 : 97515 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11660 : 43036 : switch (gimple_assign_rhs_code (_a3))
11661 : : {
11662 : 30237 : CASE_CONVERT:
11663 : 30237 : {
11664 : 30237 : tree _q50 = gimple_assign_rhs1 (_a3);
11665 : 30237 : _q50 = do_valueize (valueize, _q50);
11666 : 30237 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11667 : : {
11668 : 328 : {
11669 : 328 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
11670 : 328 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
11671 : 70 : return true;
11672 : : }
11673 : : }
11674 : : break;
11675 : : }
11676 : : default:;
11677 : : }
11678 : : }
11679 : : break;
11680 : 100160 : default:;
11681 : : }
11682 : 100160 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
11683 : : {
11684 : 0 : {
11685 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
11686 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
11687 : 0 : return true;
11688 : : }
11689 : : }
11690 : 100160 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
11691 : : {
11692 : 0 : {
11693 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
11694 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
11695 : 0 : return true;
11696 : : }
11697 : : }
11698 : 2412107 : break;
11699 : : }
11700 : : default:;
11701 : : }
11702 : : }
11703 : : break;
11704 : 2412107 : default:;
11705 : : }
11706 : 2412107 : {
11707 : 2412107 : tree _p1_pops[1];
11708 : 2412107 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
11709 : : {
11710 : 29450 : tree _q40 = _p1_pops[0];
11711 : 29450 : switch (TREE_CODE (_q40))
11712 : : {
11713 : 25863 : case SSA_NAME:
11714 : 25863 : if (gimple *_d2 = get_def (valueize, _q40))
11715 : : {
11716 : 25191 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11717 : 32865 : switch (gimple_assign_rhs_code (_a2))
11718 : : {
11719 : 7115 : case PLUS_EXPR:
11720 : 7115 : {
11721 : 7115 : tree _q50 = gimple_assign_rhs1 (_a2);
11722 : 7115 : _q50 = do_valueize (valueize, _q50);
11723 : 7115 : tree _q51 = gimple_assign_rhs2 (_a2);
11724 : 7115 : _q51 = do_valueize (valueize, _q51);
11725 : 7115 : if (tree_swap_operands_p (_q50, _q51))
11726 : 208 : std::swap (_q50, _q51);
11727 : 7115 : switch (TREE_CODE (_q51))
11728 : : {
11729 : 3288 : case SSA_NAME:
11730 : 3288 : if (gimple *_d3 = get_def (valueize, _q51))
11731 : : {
11732 : 3263 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11733 : 3157 : switch (gimple_assign_rhs_code (_a3))
11734 : : {
11735 : 2216 : CASE_CONVERT:
11736 : 2216 : {
11737 : 2216 : tree _q70 = gimple_assign_rhs1 (_a3);
11738 : 2216 : _q70 = do_valueize (valueize, _q70);
11739 : 2216 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
11740 : : {
11741 : 0 : {
11742 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
11743 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11744 : 0 : return true;
11745 : : }
11746 : : }
11747 : : break;
11748 : : }
11749 : : default:;
11750 : : }
11751 : : }
11752 : : break;
11753 : 7115 : default:;
11754 : : }
11755 : 7115 : switch (TREE_CODE (_q50))
11756 : : {
11757 : 7115 : case SSA_NAME:
11758 : 7115 : if (gimple *_d3 = get_def (valueize, _q50))
11759 : : {
11760 : 6773 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11761 : 5564 : switch (gimple_assign_rhs_code (_a3))
11762 : : {
11763 : 2468 : CASE_CONVERT:
11764 : 2468 : {
11765 : 2468 : tree _q60 = gimple_assign_rhs1 (_a3);
11766 : 2468 : _q60 = do_valueize (valueize, _q60);
11767 : 2468 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11768 : : {
11769 : 27 : {
11770 : 27 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
11771 : 27 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11772 : 0 : return true;
11773 : : }
11774 : : }
11775 : : break;
11776 : : }
11777 : : default:;
11778 : : }
11779 : : }
11780 : : break;
11781 : 7115 : default:;
11782 : : }
11783 : 7115 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11784 : : {
11785 : 88 : {
11786 : 88 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
11787 : 88 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11788 : 88 : return true;
11789 : : }
11790 : : }
11791 : 7027 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11792 : : {
11793 : 29 : {
11794 : 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
11795 : 29 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
11796 : 29 : return true;
11797 : : }
11798 : : }
11799 : 2411990 : break;
11800 : : }
11801 : : default:;
11802 : : }
11803 : : }
11804 : : break;
11805 : : default:;
11806 : : }
11807 : : }
11808 : : }
11809 : 2411990 : break;
11810 : : }
11811 : 27738 : case EXACT_DIV_EXPR:
11812 : 27738 : {
11813 : 27738 : tree _q20 = gimple_assign_rhs1 (_a1);
11814 : 27738 : _q20 = do_valueize (valueize, _q20);
11815 : 27738 : tree _q21 = gimple_assign_rhs2 (_a1);
11816 : 27738 : _q21 = do_valueize (valueize, _q21);
11817 : 27738 : switch (TREE_CODE (_q21))
11818 : : {
11819 : 27738 : case INTEGER_CST:
11820 : 27738 : {
11821 : 27738 : switch (TREE_CODE (_p1))
11822 : : {
11823 : 6891 : case SSA_NAME:
11824 : 6891 : if (gimple *_d2 = get_def (valueize, _p1))
11825 : : {
11826 : 4955 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11827 : 2400 : switch (gimple_assign_rhs_code (_a2))
11828 : : {
11829 : 1560 : case EXACT_DIV_EXPR:
11830 : 1560 : {
11831 : 1560 : tree _q50 = gimple_assign_rhs1 (_a2);
11832 : 1560 : _q50 = do_valueize (valueize, _q50);
11833 : 1560 : tree _q51 = gimple_assign_rhs2 (_a2);
11834 : 1560 : _q51 = do_valueize (valueize, _q51);
11835 : 1560 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11836 : : {
11837 : 1520 : {
11838 : 1520 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
11839 : 1520 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, NE_EXPR))
11840 : 1520 : return true;
11841 : : }
11842 : : }
11843 : : break;
11844 : : }
11845 : : default:;
11846 : : }
11847 : : }
11848 : : break;
11849 : : default:;
11850 : : }
11851 : : break;
11852 : : }
11853 : : default:;
11854 : : }
11855 : : break;
11856 : : }
11857 : 20445 : case TRUNC_DIV_EXPR:
11858 : 20445 : {
11859 : 20445 : tree _q20 = gimple_assign_rhs1 (_a1);
11860 : 20445 : _q20 = do_valueize (valueize, _q20);
11861 : 20445 : tree _q21 = gimple_assign_rhs2 (_a1);
11862 : 20445 : _q21 = do_valueize (valueize, _q21);
11863 : 20445 : switch (TREE_CODE (_q21))
11864 : : {
11865 : 11207 : case INTEGER_CST:
11866 : 11207 : {
11867 : 11207 : switch (TREE_CODE (_p1))
11868 : : {
11869 : 9362 : case INTEGER_CST:
11870 : 9362 : {
11871 : 9362 : {
11872 : 9362 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11873 : 9362 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, NE_EXPR))
11874 : 575 : return true;
11875 : : }
11876 : 8787 : break;
11877 : : }
11878 : : default:;
11879 : : }
11880 : : break;
11881 : : }
11882 : : default:;
11883 : : }
11884 : : break;
11885 : : }
11886 : 1616512 : case PLUS_EXPR:
11887 : 1616512 : {
11888 : 1616512 : tree _q20 = gimple_assign_rhs1 (_a1);
11889 : 1616512 : _q20 = do_valueize (valueize, _q20);
11890 : 1616512 : tree _q21 = gimple_assign_rhs2 (_a1);
11891 : 1616512 : _q21 = do_valueize (valueize, _q21);
11892 : 1616512 : if (tree_swap_operands_p (_q20, _q21))
11893 : 9302 : std::swap (_q20, _q21);
11894 : 1616512 : switch (TREE_CODE (_p1))
11895 : : {
11896 : 535173 : case SSA_NAME:
11897 : 535173 : if (gimple *_d2 = get_def (valueize, _p1))
11898 : : {
11899 : 456214 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11900 : 553126 : switch (gimple_assign_rhs_code (_a2))
11901 : : {
11902 : 216523 : case PLUS_EXPR:
11903 : 216523 : {
11904 : 216523 : tree _q50 = gimple_assign_rhs1 (_a2);
11905 : 216523 : _q50 = do_valueize (valueize, _q50);
11906 : 216523 : tree _q51 = gimple_assign_rhs2 (_a2);
11907 : 216523 : _q51 = do_valueize (valueize, _q51);
11908 : 216523 : if (tree_swap_operands_p (_q50, _q51))
11909 : 1149 : std::swap (_q50, _q51);
11910 : 216523 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11911 : : {
11912 : 12240 : {
11913 : 12240 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11914 : 24480 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11915 : 24381 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11916 : 10554 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11917 : : )
11918 : : {
11919 : 12141 : gimple_seq *lseq = seq;
11920 : 12141 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2425;
11921 : 12141 : {
11922 : 12141 : res_op->set_op (NE_EXPR, type, 2);
11923 : 12141 : res_op->ops[0] = captures[0];
11924 : 12141 : res_op->ops[1] = captures[2];
11925 : 12141 : res_op->resimplify (lseq, valueize);
11926 : 12141 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1093, __FILE__, __LINE__, true);
11927 : 12141 : return true;
11928 : : }
11929 : 0 : next_after_fail2425:;
11930 : : }
11931 : : }
11932 : : }
11933 : 204382 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11934 : : {
11935 : 88 : {
11936 : 88 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
11937 : 176 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11938 : 176 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11939 : 12 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11940 : : )
11941 : : {
11942 : 88 : gimple_seq *lseq = seq;
11943 : 88 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2426;
11944 : 88 : {
11945 : 88 : res_op->set_op (NE_EXPR, type, 2);
11946 : 88 : res_op->ops[0] = captures[0];
11947 : 88 : res_op->ops[1] = captures[2];
11948 : 88 : res_op->resimplify (lseq, valueize);
11949 : 88 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1093, __FILE__, __LINE__, true);
11950 : 88 : return true;
11951 : : }
11952 : 0 : next_after_fail2426:;
11953 : : }
11954 : : }
11955 : : }
11956 : 204294 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11957 : : {
11958 : 3 : {
11959 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
11960 : 6 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11961 : 6 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11962 : 3 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11963 : : )
11964 : : {
11965 : 3 : gimple_seq *lseq = seq;
11966 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2427;
11967 : 3 : {
11968 : 3 : res_op->set_op (NE_EXPR, type, 2);
11969 : 3 : res_op->ops[0] = captures[0];
11970 : 3 : res_op->ops[1] = captures[2];
11971 : 3 : res_op->resimplify (lseq, valueize);
11972 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1093, __FILE__, __LINE__, true);
11973 : 3 : return true;
11974 : : }
11975 : 0 : next_after_fail2427:;
11976 : : }
11977 : : }
11978 : : }
11979 : 204291 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11980 : : {
11981 : 326 : {
11982 : 326 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
11983 : 652 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11984 : 553 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11985 : 188 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11986 : : )
11987 : : {
11988 : 227 : gimple_seq *lseq = seq;
11989 : 227 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2428;
11990 : 227 : {
11991 : 227 : res_op->set_op (NE_EXPR, type, 2);
11992 : 227 : res_op->ops[0] = captures[0];
11993 : 227 : res_op->ops[1] = captures[2];
11994 : 227 : res_op->resimplify (lseq, valueize);
11995 : 227 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1093, __FILE__, __LINE__, true);
11996 : 227 : return true;
11997 : : }
11998 : 0 : next_after_fail2428:;
11999 : : }
12000 : : }
12001 : : }
12002 : 1604053 : break;
12003 : : }
12004 : : default:;
12005 : : }
12006 : : }
12007 : : break;
12008 : 1604053 : default:;
12009 : : }
12010 : 1604053 : switch (TREE_CODE (_q21))
12011 : : {
12012 : 192433 : case SSA_NAME:
12013 : 192433 : if (gimple *_d2 = get_def (valueize, _q21))
12014 : : {
12015 : 185380 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12016 : 187521 : switch (gimple_assign_rhs_code (_a2))
12017 : : {
12018 : 44047 : CASE_CONVERT:
12019 : 44047 : {
12020 : 44047 : tree _q40 = gimple_assign_rhs1 (_a2);
12021 : 44047 : _q40 = do_valueize (valueize, _q40);
12022 : 44047 : switch (TREE_CODE (_p1))
12023 : : {
12024 : 17817 : case SSA_NAME:
12025 : 17817 : if (gimple *_d3 = get_def (valueize, _p1))
12026 : : {
12027 : 15282 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12028 : 16313 : switch (gimple_assign_rhs_code (_a3))
12029 : : {
12030 : 1952 : CASE_CONVERT:
12031 : 1952 : {
12032 : 1952 : tree _q60 = gimple_assign_rhs1 (_a3);
12033 : 1952 : _q60 = do_valueize (valueize, _q60);
12034 : 1952 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
12035 : : {
12036 : 12 : {
12037 : 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
12038 : 12 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12039 : 10 : return true;
12040 : : }
12041 : : }
12042 : : break;
12043 : : }
12044 : : default:;
12045 : : }
12046 : : }
12047 : : break;
12048 : : default:;
12049 : : }
12050 : : break;
12051 : : }
12052 : : default:;
12053 : : }
12054 : : }
12055 : : break;
12056 : 1604043 : default:;
12057 : : }
12058 : 1604043 : switch (TREE_CODE (_q20))
12059 : : {
12060 : 1604040 : case SSA_NAME:
12061 : 1604040 : if (gimple *_d2 = get_def (valueize, _q20))
12062 : : {
12063 : 1545048 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12064 : 623269 : switch (gimple_assign_rhs_code (_a2))
12065 : : {
12066 : 159258 : CASE_CONVERT:
12067 : 159258 : {
12068 : 159258 : tree _q30 = gimple_assign_rhs1 (_a2);
12069 : 159258 : _q30 = do_valueize (valueize, _q30);
12070 : 159258 : switch (TREE_CODE (_p1))
12071 : : {
12072 : 113830 : case SSA_NAME:
12073 : 113830 : if (gimple *_d3 = get_def (valueize, _p1))
12074 : : {
12075 : 66758 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12076 : 65411 : switch (gimple_assign_rhs_code (_a3))
12077 : : {
12078 : 3600 : CASE_CONVERT:
12079 : 3600 : {
12080 : 3600 : tree _q60 = gimple_assign_rhs1 (_a3);
12081 : 3600 : _q60 = do_valueize (valueize, _q60);
12082 : 3600 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12083 : : {
12084 : 4 : {
12085 : 4 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
12086 : 4 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12087 : 4 : return true;
12088 : : }
12089 : : }
12090 : : break;
12091 : : }
12092 : : default:;
12093 : : }
12094 : : }
12095 : : break;
12096 : 159254 : default:;
12097 : : }
12098 : 159254 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12099 : : {
12100 : 0 : {
12101 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
12102 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12103 : 0 : return true;
12104 : : }
12105 : : }
12106 : : break;
12107 : : }
12108 : : default:;
12109 : : }
12110 : : }
12111 : : break;
12112 : 1604039 : default:;
12113 : : }
12114 : 1604039 : switch (TREE_CODE (_q21))
12115 : : {
12116 : 192419 : case SSA_NAME:
12117 : 192419 : if (gimple *_d2 = get_def (valueize, _q21))
12118 : : {
12119 : 185366 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12120 : 187507 : switch (gimple_assign_rhs_code (_a2))
12121 : : {
12122 : 44033 : CASE_CONVERT:
12123 : 44033 : {
12124 : 44033 : tree _q40 = gimple_assign_rhs1 (_a2);
12125 : 44033 : _q40 = do_valueize (valueize, _q40);
12126 : 44033 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
12127 : : {
12128 : 0 : {
12129 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
12130 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12131 : 0 : return true;
12132 : : }
12133 : : }
12134 : : break;
12135 : : }
12136 : : default:;
12137 : : }
12138 : : }
12139 : : break;
12140 : 1604039 : default:;
12141 : : }
12142 : 1604039 : switch (TREE_CODE (_p1))
12143 : : {
12144 : 522700 : case SSA_NAME:
12145 : 522700 : if (gimple *_d2 = get_def (valueize, _p1))
12146 : : {
12147 : 443741 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12148 : 540653 : switch (gimple_assign_rhs_code (_a2))
12149 : : {
12150 : 53489 : CASE_CONVERT:
12151 : 53489 : {
12152 : 53489 : tree _q50 = gimple_assign_rhs1 (_a2);
12153 : 53489 : _q50 = do_valueize (valueize, _q50);
12154 : 53489 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12155 : : {
12156 : 0 : {
12157 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
12158 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12159 : 0 : return true;
12160 : : }
12161 : : }
12162 : 53489 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12163 : : {
12164 : 0 : {
12165 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
12166 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12167 : 0 : return true;
12168 : : }
12169 : : }
12170 : : break;
12171 : : }
12172 : : default:;
12173 : : }
12174 : : }
12175 : : break;
12176 : 1604039 : default:;
12177 : : }
12178 : 1604039 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
12179 : : {
12180 : 50931 : {
12181 : 50931 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
12182 : 50931 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12183 : 3888 : return true;
12184 : : }
12185 : : }
12186 : 1600151 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12187 : : {
12188 : 435 : {
12189 : 435 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
12190 : 435 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12191 : 277 : return true;
12192 : : }
12193 : : }
12194 : 129490998 : break;
12195 : : }
12196 : 296614 : case POINTER_PLUS_EXPR:
12197 : 296614 : {
12198 : 296614 : tree _q20 = gimple_assign_rhs1 (_a1);
12199 : 296614 : _q20 = do_valueize (valueize, _q20);
12200 : 296614 : tree _q21 = gimple_assign_rhs2 (_a1);
12201 : 296614 : _q21 = do_valueize (valueize, _q21);
12202 : 296614 : switch (TREE_CODE (_p1))
12203 : : {
12204 : 215932 : case SSA_NAME:
12205 : 215932 : if (gimple *_d2 = get_def (valueize, _p1))
12206 : : {
12207 : 209550 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12208 : 167236 : switch (gimple_assign_rhs_code (_a2))
12209 : : {
12210 : 64837 : case POINTER_PLUS_EXPR:
12211 : 64837 : {
12212 : 64837 : tree _q50 = gimple_assign_rhs1 (_a2);
12213 : 64837 : _q50 = do_valueize (valueize, _q50);
12214 : 64837 : tree _q51 = gimple_assign_rhs2 (_a2);
12215 : 64837 : _q51 = do_valueize (valueize, _q51);
12216 : 64837 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12217 : : {
12218 : 6423 : {
12219 : 6423 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
12220 : 6423 : if (gimple_simplify_242 (res_op, seq, valueize, type, captures, NE_EXPR))
12221 : 6423 : return true;
12222 : : }
12223 : : }
12224 : : break;
12225 : : }
12226 : : default:;
12227 : : }
12228 : : }
12229 : : break;
12230 : 290191 : default:;
12231 : : }
12232 : 290191 : switch (TREE_CODE (_q20))
12233 : : {
12234 : 275129 : case SSA_NAME:
12235 : 275129 : if (gimple *_d2 = get_def (valueize, _q20))
12236 : : {
12237 : 258048 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12238 : 201826 : switch (gimple_assign_rhs_code (_a2))
12239 : : {
12240 : 665 : CASE_CONVERT:
12241 : 665 : {
12242 : 665 : tree _q30 = gimple_assign_rhs1 (_a2);
12243 : 665 : _q30 = do_valueize (valueize, _q30);
12244 : 665 : switch (TREE_CODE (_p1))
12245 : : {
12246 : 653 : case SSA_NAME:
12247 : 653 : if (gimple *_d3 = get_def (valueize, _p1))
12248 : : {
12249 : 624 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12250 : 667 : switch (gimple_assign_rhs_code (_a3))
12251 : : {
12252 : 23 : CASE_CONVERT:
12253 : 23 : {
12254 : 23 : tree _q60 = gimple_assign_rhs1 (_a3);
12255 : 23 : _q60 = do_valueize (valueize, _q60);
12256 : 23 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12257 : : {
12258 : 0 : {
12259 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
12260 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
12261 : 0 : return true;
12262 : : }
12263 : : }
12264 : : break;
12265 : : }
12266 : : default:;
12267 : : }
12268 : : }
12269 : : break;
12270 : 665 : default:;
12271 : : }
12272 : 665 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12273 : : {
12274 : 0 : {
12275 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
12276 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
12277 : 0 : return true;
12278 : : }
12279 : : }
12280 : : break;
12281 : : }
12282 : : default:;
12283 : : }
12284 : : }
12285 : : break;
12286 : 290191 : default:;
12287 : : }
12288 : 290191 : switch (TREE_CODE (_p1))
12289 : : {
12290 : 209509 : case SSA_NAME:
12291 : 209509 : if (gimple *_d2 = get_def (valueize, _p1))
12292 : : {
12293 : 203127 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12294 : 160813 : switch (gimple_assign_rhs_code (_a2))
12295 : : {
12296 : 3809 : CASE_CONVERT:
12297 : 3809 : {
12298 : 3809 : tree _q50 = gimple_assign_rhs1 (_a2);
12299 : 3809 : _q50 = do_valueize (valueize, _q50);
12300 : 3809 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12301 : : {
12302 : 0 : {
12303 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
12304 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
12305 : 0 : return true;
12306 : : }
12307 : : }
12308 : : break;
12309 : : }
12310 : : default:;
12311 : : }
12312 : : }
12313 : : break;
12314 : 290191 : default:;
12315 : : }
12316 : 290191 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12317 : : {
12318 : 22620 : {
12319 : 22620 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
12320 : 22620 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
12321 : 3530 : return true;
12322 : : }
12323 : : }
12324 : : break;
12325 : : }
12326 : 212597 : case MINUS_EXPR:
12327 : 212597 : {
12328 : 212597 : tree _q20 = gimple_assign_rhs1 (_a1);
12329 : 212597 : _q20 = do_valueize (valueize, _q20);
12330 : 212597 : tree _q21 = gimple_assign_rhs2 (_a1);
12331 : 212597 : _q21 = do_valueize (valueize, _q21);
12332 : 212597 : switch (TREE_CODE (_p1))
12333 : : {
12334 : 64915 : case SSA_NAME:
12335 : 64915 : if (gimple *_d2 = get_def (valueize, _p1))
12336 : : {
12337 : 61071 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12338 : 60747 : switch (gimple_assign_rhs_code (_a2))
12339 : : {
12340 : 28132 : case MINUS_EXPR:
12341 : 28132 : {
12342 : 28132 : tree _q50 = gimple_assign_rhs1 (_a2);
12343 : 28132 : _q50 = do_valueize (valueize, _q50);
12344 : 28132 : tree _q51 = gimple_assign_rhs2 (_a2);
12345 : 28132 : _q51 = do_valueize (valueize, _q51);
12346 : 28132 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12347 : : {
12348 : 742 : {
12349 : 742 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
12350 : 1484 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
12351 : 957 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
12352 : 202 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
12353 : : )
12354 : : {
12355 : 215 : gimple_seq *lseq = seq;
12356 : 215 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2429;
12357 : 215 : {
12358 : 215 : res_op->set_op (NE_EXPR, type, 2);
12359 : 215 : res_op->ops[0] = captures[0];
12360 : 215 : res_op->ops[1] = captures[2];
12361 : 215 : res_op->resimplify (lseq, valueize);
12362 : 215 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1094, __FILE__, __LINE__, true);
12363 : 215 : return true;
12364 : : }
12365 : 0 : next_after_fail2429:;
12366 : : }
12367 : : }
12368 : : }
12369 : 27917 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12370 : : {
12371 : 516 : {
12372 : 516 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
12373 : 1032 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
12374 : 516 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
12375 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
12376 : : )
12377 : : {
12378 : 0 : gimple_seq *lseq = seq;
12379 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2430;
12380 : 0 : {
12381 : 0 : res_op->set_op (NE_EXPR, type, 2);
12382 : 0 : res_op->ops[0] = captures[2];
12383 : 0 : res_op->ops[1] = captures[1];
12384 : 0 : res_op->resimplify (lseq, valueize);
12385 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1095, __FILE__, __LINE__, true);
12386 : 0 : return true;
12387 : : }
12388 : 0 : next_after_fail2430:;
12389 : : }
12390 : : }
12391 : : }
12392 : : break;
12393 : : }
12394 : : default:;
12395 : : }
12396 : : }
12397 : : break;
12398 : 212382 : default:;
12399 : : }
12400 : 212382 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12401 : : {
12402 : 2561 : {
12403 : 2561 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
12404 : 2561 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, NE_EXPR))
12405 : 88 : return true;
12406 : : }
12407 : : }
12408 : : break;
12409 : : }
12410 : 99718 : case POINTER_DIFF_EXPR:
12411 : 99718 : {
12412 : 99718 : tree _q20 = gimple_assign_rhs1 (_a1);
12413 : 99718 : _q20 = do_valueize (valueize, _q20);
12414 : 99718 : tree _q21 = gimple_assign_rhs2 (_a1);
12415 : 99718 : _q21 = do_valueize (valueize, _q21);
12416 : 99718 : switch (TREE_CODE (_p1))
12417 : : {
12418 : 11551 : case SSA_NAME:
12419 : 11551 : if (gimple *_d2 = get_def (valueize, _p1))
12420 : : {
12421 : 11406 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12422 : 10630 : switch (gimple_assign_rhs_code (_a2))
12423 : : {
12424 : 9978 : case POINTER_DIFF_EXPR:
12425 : 9978 : {
12426 : 9978 : tree _q50 = gimple_assign_rhs1 (_a2);
12427 : 9978 : _q50 = do_valueize (valueize, _q50);
12428 : 9978 : tree _q51 = gimple_assign_rhs2 (_a2);
12429 : 9978 : _q51 = do_valueize (valueize, _q51);
12430 : 9978 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12431 : : {
12432 : 269 : {
12433 : 269 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
12434 : 269 : if (gimple_simplify_245 (res_op, seq, valueize, type, captures, NE_EXPR))
12435 : 269 : return true;
12436 : : }
12437 : : }
12438 : 9709 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12439 : : {
12440 : 0 : {
12441 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
12442 : 0 : if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR))
12443 : 0 : return true;
12444 : : }
12445 : : }
12446 : : break;
12447 : : }
12448 : : default:;
12449 : : }
12450 : : }
12451 : : break;
12452 : : default:;
12453 : : }
12454 : : break;
12455 : : }
12456 : : default:;
12457 : : }
12458 : : }
12459 : : break;
12460 : 129490998 : default:;
12461 : : }
12462 : 129490998 : {
12463 : 129490998 : tree _p0_pops[1];
12464 : 129490998 : if (gimple_logical_inverted_value (_p0, _p0_pops, valueize))
12465 : : {
12466 : 695272 : tree _q20 = _p0_pops[0];
12467 : 695272 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12468 : : {
12469 : 0 : if (gimple_truth_valued_p (_p1, valueize))
12470 : : {
12471 : 0 : {
12472 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
12473 : 0 : if (gimple_simplify_234 (res_op, seq, valueize, type, captures, NE_EXPR))
12474 : 0 : return true;
12475 : : }
12476 : : }
12477 : : }
12478 : : }
12479 : : }
12480 : 129490998 : if (gimple_truth_valued_p (_p0, valueize))
12481 : : {
12482 : 33375695 : {
12483 : 33375695 : tree _p1_pops[1];
12484 : 33375695 : if (gimple_logical_inverted_value (_p1, _p1_pops, valueize))
12485 : : {
12486 : 5823 : tree _q30 = _p1_pops[0];
12487 : 5823 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12488 : : {
12489 : 0 : {
12490 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
12491 : 0 : if (gimple_simplify_234 (res_op, seq, valueize, type, captures, NE_EXPR))
12492 : 0 : return true;
12493 : : }
12494 : : }
12495 : : }
12496 : : }
12497 : : }
12498 : 129490998 : switch (TREE_CODE (_p1))
12499 : : {
12500 : 22822350 : case SSA_NAME:
12501 : 22822350 : if (gimple *_d1 = get_def (valueize, _p1))
12502 : : {
12503 : 7141101 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12504 : 10096510 : switch (gimple_assign_rhs_code (_a1))
12505 : : {
12506 : 632698 : case PLUS_EXPR:
12507 : 632698 : {
12508 : 632698 : tree _q30 = gimple_assign_rhs1 (_a1);
12509 : 632698 : _q30 = do_valueize (valueize, _q30);
12510 : 632698 : tree _q31 = gimple_assign_rhs2 (_a1);
12511 : 632698 : _q31 = do_valueize (valueize, _q31);
12512 : 632698 : if (tree_swap_operands_p (_q30, _q31))
12513 : 4313 : std::swap (_q30, _q31);
12514 : 632698 : switch (TREE_CODE (_q31))
12515 : : {
12516 : 103906 : case SSA_NAME:
12517 : 103906 : if (gimple *_d2 = get_def (valueize, _q31))
12518 : : {
12519 : 97531 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12520 : 97696 : switch (gimple_assign_rhs_code (_a2))
12521 : : {
12522 : 16906 : CASE_CONVERT:
12523 : 16906 : {
12524 : 16906 : tree _q50 = gimple_assign_rhs1 (_a2);
12525 : 16906 : _q50 = do_valueize (valueize, _q50);
12526 : 16906 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
12527 : : {
12528 : 0 : {
12529 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
12530 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12531 : 0 : return true;
12532 : : }
12533 : : }
12534 : : break;
12535 : : }
12536 : : default:;
12537 : : }
12538 : : }
12539 : : break;
12540 : 632698 : default:;
12541 : : }
12542 : 632698 : switch (TREE_CODE (_q30))
12543 : : {
12544 : 632698 : case SSA_NAME:
12545 : 632698 : if (gimple *_d2 = get_def (valueize, _q30))
12546 : : {
12547 : 569359 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12548 : 327820 : switch (gimple_assign_rhs_code (_a2))
12549 : : {
12550 : 185231 : CASE_CONVERT:
12551 : 185231 : {
12552 : 185231 : tree _q40 = gimple_assign_rhs1 (_a2);
12553 : 185231 : _q40 = do_valueize (valueize, _q40);
12554 : 185231 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
12555 : : {
12556 : 0 : {
12557 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
12558 : 0 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12559 : 0 : return true;
12560 : : }
12561 : : }
12562 : : break;
12563 : : }
12564 : : default:;
12565 : : }
12566 : : }
12567 : : break;
12568 : 632698 : default:;
12569 : : }
12570 : 632698 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
12571 : : {
12572 : 819 : {
12573 : 819 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
12574 : 819 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12575 : 72 : return true;
12576 : : }
12577 : : }
12578 : 632626 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12579 : : {
12580 : 2050 : {
12581 : 2050 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
12582 : 2050 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, NE_EXPR))
12583 : 556 : return true;
12584 : : }
12585 : : }
12586 : 129490370 : break;
12587 : : }
12588 : : default:;
12589 : : }
12590 : : }
12591 : : break;
12592 : 129490370 : default:;
12593 : : }
12594 : 129490370 : {
12595 : 129490370 : tree _p1_pops[1];
12596 : 129490370 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
12597 : : {
12598 : 209778 : tree _q30 = _p1_pops[0];
12599 : 209778 : switch (TREE_CODE (_q30))
12600 : : {
12601 : 192080 : case SSA_NAME:
12602 : 192080 : if (gimple *_d1 = get_def (valueize, _q30))
12603 : : {
12604 : 176880 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12605 : 217088 : switch (gimple_assign_rhs_code (_a1))
12606 : : {
12607 : 66600 : case PLUS_EXPR:
12608 : 66600 : {
12609 : 66600 : tree _q40 = gimple_assign_rhs1 (_a1);
12610 : 66600 : _q40 = do_valueize (valueize, _q40);
12611 : 66600 : tree _q41 = gimple_assign_rhs2 (_a1);
12612 : 66600 : _q41 = do_valueize (valueize, _q41);
12613 : 66600 : if (tree_swap_operands_p (_q40, _q41))
12614 : 555 : std::swap (_q40, _q41);
12615 : 66600 : switch (TREE_CODE (_q41))
12616 : : {
12617 : 9244 : case SSA_NAME:
12618 : 9244 : if (gimple *_d2 = get_def (valueize, _q41))
12619 : : {
12620 : 8846 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12621 : 8089 : switch (gimple_assign_rhs_code (_a2))
12622 : : {
12623 : 5079 : CASE_CONVERT:
12624 : 5079 : {
12625 : 5079 : tree _q60 = gimple_assign_rhs1 (_a2);
12626 : 5079 : _q60 = do_valueize (valueize, _q60);
12627 : 5079 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
12628 : : {
12629 : 306 : {
12630 : 306 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
12631 : 306 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
12632 : 3 : return true;
12633 : : }
12634 : : }
12635 : : break;
12636 : : }
12637 : : default:;
12638 : : }
12639 : : }
12640 : : break;
12641 : 66597 : default:;
12642 : : }
12643 : 66597 : switch (TREE_CODE (_q40))
12644 : : {
12645 : 66597 : case SSA_NAME:
12646 : 66597 : if (gimple *_d2 = get_def (valueize, _q40))
12647 : : {
12648 : 56895 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12649 : 42204 : switch (gimple_assign_rhs_code (_a2))
12650 : : {
12651 : 33255 : CASE_CONVERT:
12652 : 33255 : {
12653 : 33255 : tree _q50 = gimple_assign_rhs1 (_a2);
12654 : 33255 : _q50 = do_valueize (valueize, _q50);
12655 : 33255 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
12656 : : {
12657 : 204 : {
12658 : 204 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
12659 : 204 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
12660 : 18 : return true;
12661 : : }
12662 : : }
12663 : : break;
12664 : : }
12665 : : default:;
12666 : : }
12667 : : }
12668 : : break;
12669 : 66579 : default:;
12670 : : }
12671 : 66579 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
12672 : : {
12673 : 0 : {
12674 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
12675 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
12676 : 0 : return true;
12677 : : }
12678 : : }
12679 : 66579 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
12680 : : {
12681 : 0 : {
12682 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
12683 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, NE_EXPR))
12684 : 0 : return true;
12685 : : }
12686 : : }
12687 : 129490349 : break;
12688 : : }
12689 : : default:;
12690 : : }
12691 : : }
12692 : : break;
12693 : : default:;
12694 : : }
12695 : : }
12696 : : }
12697 : 129490349 : switch (TREE_CODE (_p0))
12698 : : {
12699 : 126749771 : case SSA_NAME:
12700 : 126749771 : if (gimple *_d1 = get_def (valueize, _p0))
12701 : : {
12702 : 42831534 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12703 : 46969585 : switch (gimple_assign_rhs_code (_a1))
12704 : : {
12705 : 2411954 : CASE_CONVERT:
12706 : 2411954 : {
12707 : 2411954 : tree _q20 = gimple_assign_rhs1 (_a1);
12708 : 2411954 : _q20 = do_valueize (valueize, _q20);
12709 : 2411954 : switch (TREE_CODE (_p1))
12710 : : {
12711 : 591531 : case SSA_NAME:
12712 : 591531 : if (gimple *_d2 = get_def (valueize, _p1))
12713 : : {
12714 : 536001 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12715 : 638849 : switch (gimple_assign_rhs_code (_a2))
12716 : : {
12717 : 2769 : case POINTER_PLUS_EXPR:
12718 : 2769 : {
12719 : 2769 : tree _q40 = gimple_assign_rhs1 (_a2);
12720 : 2769 : _q40 = do_valueize (valueize, _q40);
12721 : 2769 : tree _q41 = gimple_assign_rhs2 (_a2);
12722 : 2769 : _q41 = do_valueize (valueize, _q41);
12723 : 2769 : switch (TREE_CODE (_q40))
12724 : : {
12725 : 2741 : case SSA_NAME:
12726 : 2741 : if (gimple *_d3 = get_def (valueize, _q40))
12727 : : {
12728 : 2627 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12729 : 539 : switch (gimple_assign_rhs_code (_a3))
12730 : : {
12731 : 57 : CASE_CONVERT:
12732 : 57 : {
12733 : 57 : tree _q50 = gimple_assign_rhs1 (_a3);
12734 : 57 : _q50 = do_valueize (valueize, _q50);
12735 : 57 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12736 : : {
12737 : 10 : {
12738 : 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
12739 : 10 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
12740 : 10 : return true;
12741 : : }
12742 : : }
12743 : : break;
12744 : : }
12745 : : default:;
12746 : : }
12747 : : }
12748 : : break;
12749 : 2759 : default:;
12750 : : }
12751 : 2759 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12752 : : {
12753 : 0 : {
12754 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
12755 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
12756 : 0 : return true;
12757 : : }
12758 : : }
12759 : : break;
12760 : : }
12761 : : default:;
12762 : : }
12763 : : }
12764 : : break;
12765 : 2411944 : default:;
12766 : : }
12767 : 2411944 : {
12768 : 2411944 : tree _p1_pops[1];
12769 : 2411944 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
12770 : : {
12771 : 29333 : tree _q40 = _p1_pops[0];
12772 : 29333 : switch (TREE_CODE (_q40))
12773 : : {
12774 : 25746 : case SSA_NAME:
12775 : 25746 : if (gimple *_d2 = get_def (valueize, _q40))
12776 : : {
12777 : 25074 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12778 : 32748 : switch (gimple_assign_rhs_code (_a2))
12779 : : {
12780 : 337 : case POINTER_PLUS_EXPR:
12781 : 337 : {
12782 : 337 : tree _q50 = gimple_assign_rhs1 (_a2);
12783 : 337 : _q50 = do_valueize (valueize, _q50);
12784 : 337 : tree _q51 = gimple_assign_rhs2 (_a2);
12785 : 337 : _q51 = do_valueize (valueize, _q51);
12786 : 337 : switch (TREE_CODE (_q50))
12787 : : {
12788 : 337 : case SSA_NAME:
12789 : 337 : if (gimple *_d3 = get_def (valueize, _q50))
12790 : : {
12791 : 335 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12792 : 230 : switch (gimple_assign_rhs_code (_a3))
12793 : : {
12794 : 0 : CASE_CONVERT:
12795 : 0 : {
12796 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
12797 : 0 : _q60 = do_valueize (valueize, _q60);
12798 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
12799 : : {
12800 : 0 : {
12801 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
12802 : 0 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
12803 : 0 : return true;
12804 : : }
12805 : : }
12806 : : break;
12807 : : }
12808 : : default:;
12809 : : }
12810 : : }
12811 : : break;
12812 : 337 : default:;
12813 : : }
12814 : 337 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12815 : : {
12816 : 6 : {
12817 : 6 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
12818 : 6 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
12819 : 6 : return true;
12820 : : }
12821 : : }
12822 : : break;
12823 : : }
12824 : : default:;
12825 : : }
12826 : : }
12827 : : break;
12828 : : default:;
12829 : : }
12830 : : }
12831 : : }
12832 : 2411938 : break;
12833 : : }
12834 : : default:;
12835 : : }
12836 : : }
12837 : : break;
12838 : 129490333 : default:;
12839 : : }
12840 : 129490333 : {
12841 : 129490333 : tree _p0_pops[1];
12842 : 129490333 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
12843 : : {
12844 : 625136 : tree _q20 = _p0_pops[0];
12845 : 625136 : switch (TREE_CODE (_q20))
12846 : : {
12847 : 614586 : case SSA_NAME:
12848 : 614586 : if (gimple *_d1 = get_def (valueize, _q20))
12849 : : {
12850 : 597059 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12851 : 608040 : switch (gimple_assign_rhs_code (_a1))
12852 : : {
12853 : 808 : case POINTER_PLUS_EXPR:
12854 : 808 : {
12855 : 808 : tree _q30 = gimple_assign_rhs1 (_a1);
12856 : 808 : _q30 = do_valueize (valueize, _q30);
12857 : 808 : tree _q31 = gimple_assign_rhs2 (_a1);
12858 : 808 : _q31 = do_valueize (valueize, _q31);
12859 : 808 : switch (TREE_CODE (_q30))
12860 : : {
12861 : 798 : case SSA_NAME:
12862 : 798 : if (gimple *_d2 = get_def (valueize, _q30))
12863 : : {
12864 : 774 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12865 : 771 : switch (gimple_assign_rhs_code (_a2))
12866 : : {
12867 : 0 : CASE_CONVERT:
12868 : 0 : {
12869 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
12870 : 0 : _q40 = do_valueize (valueize, _q40);
12871 : 0 : switch (TREE_CODE (_p1))
12872 : : {
12873 : 0 : case SSA_NAME:
12874 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
12875 : : {
12876 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12877 : 0 : switch (gimple_assign_rhs_code (_a3))
12878 : : {
12879 : 0 : CASE_CONVERT:
12880 : 0 : {
12881 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
12882 : 0 : _q70 = do_valueize (valueize, _q70);
12883 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12884 : : {
12885 : 0 : {
12886 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
12887 : 0 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
12888 : 0 : return true;
12889 : : }
12890 : : }
12891 : : break;
12892 : : }
12893 : : default:;
12894 : : }
12895 : : }
12896 : : break;
12897 : 0 : default:;
12898 : : }
12899 : 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
12900 : : {
12901 : 0 : {
12902 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
12903 : 0 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
12904 : 0 : return true;
12905 : : }
12906 : : }
12907 : : break;
12908 : : }
12909 : : default:;
12910 : : }
12911 : : }
12912 : : break;
12913 : 808 : default:;
12914 : : }
12915 : 808 : switch (TREE_CODE (_p1))
12916 : : {
12917 : 806 : case SSA_NAME:
12918 : 806 : if (gimple *_d2 = get_def (valueize, _p1))
12919 : : {
12920 : 790 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12921 : 739 : switch (gimple_assign_rhs_code (_a2))
12922 : : {
12923 : 275 : CASE_CONVERT:
12924 : 275 : {
12925 : 275 : tree _q60 = gimple_assign_rhs1 (_a2);
12926 : 275 : _q60 = do_valueize (valueize, _q60);
12927 : 275 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12928 : : {
12929 : 3 : {
12930 : 3 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
12931 : 3 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
12932 : 2 : return true;
12933 : : }
12934 : : }
12935 : : break;
12936 : : }
12937 : : default:;
12938 : : }
12939 : : }
12940 : : break;
12941 : 806 : default:;
12942 : : }
12943 : 806 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12944 : : {
12945 : 0 : {
12946 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
12947 : 0 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
12948 : 0 : return true;
12949 : : }
12950 : : }
12951 : : break;
12952 : : }
12953 : : default:;
12954 : : }
12955 : : }
12956 : : break;
12957 : : default:;
12958 : : }
12959 : : }
12960 : : }
12961 : 129490331 : switch (TREE_CODE (_p1))
12962 : : {
12963 : 22821683 : case SSA_NAME:
12964 : 22821683 : if (gimple *_d1 = get_def (valueize, _p1))
12965 : : {
12966 : 7140434 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12967 : 10095843 : switch (gimple_assign_rhs_code (_a1))
12968 : : {
12969 : 355411 : case POINTER_PLUS_EXPR:
12970 : 355411 : {
12971 : 355411 : tree _q30 = gimple_assign_rhs1 (_a1);
12972 : 355411 : _q30 = do_valueize (valueize, _q30);
12973 : 355411 : tree _q31 = gimple_assign_rhs2 (_a1);
12974 : 355411 : _q31 = do_valueize (valueize, _q31);
12975 : 355411 : switch (TREE_CODE (_q30))
12976 : : {
12977 : 354278 : case SSA_NAME:
12978 : 354278 : if (gimple *_d2 = get_def (valueize, _q30))
12979 : : {
12980 : 308527 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12981 : 235941 : switch (gimple_assign_rhs_code (_a2))
12982 : : {
12983 : 573 : CASE_CONVERT:
12984 : 573 : {
12985 : 573 : tree _q40 = gimple_assign_rhs1 (_a2);
12986 : 573 : _q40 = do_valueize (valueize, _q40);
12987 : 573 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
12988 : : {
12989 : 0 : {
12990 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
12991 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
12992 : 0 : return true;
12993 : : }
12994 : : }
12995 : : break;
12996 : : }
12997 : : default:;
12998 : : }
12999 : : }
13000 : : break;
13001 : 355411 : default:;
13002 : : }
13003 : 355411 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13004 : : {
13005 : 32916 : {
13006 : 32916 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
13007 : 32916 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, NE_EXPR))
13008 : 10164 : return true;
13009 : : }
13010 : : }
13011 : : break;
13012 : : }
13013 : : default:;
13014 : : }
13015 : : }
13016 : : break;
13017 : 129480167 : default:;
13018 : : }
13019 : 129480167 : {
13020 : 129480167 : tree _p1_pops[1];
13021 : 129480167 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
13022 : : {
13023 : 209749 : tree _q30 = _p1_pops[0];
13024 : 209749 : switch (TREE_CODE (_q30))
13025 : : {
13026 : 192051 : case SSA_NAME:
13027 : 192051 : if (gimple *_d1 = get_def (valueize, _q30))
13028 : : {
13029 : 176851 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13030 : 217061 : switch (gimple_assign_rhs_code (_a1))
13031 : : {
13032 : 1046 : case POINTER_PLUS_EXPR:
13033 : 1046 : {
13034 : 1046 : tree _q40 = gimple_assign_rhs1 (_a1);
13035 : 1046 : _q40 = do_valueize (valueize, _q40);
13036 : 1046 : tree _q41 = gimple_assign_rhs2 (_a1);
13037 : 1046 : _q41 = do_valueize (valueize, _q41);
13038 : 1046 : switch (TREE_CODE (_q40))
13039 : : {
13040 : 1046 : case SSA_NAME:
13041 : 1046 : if (gimple *_d2 = get_def (valueize, _q40))
13042 : : {
13043 : 1024 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13044 : 1420 : switch (gimple_assign_rhs_code (_a2))
13045 : : {
13046 : 0 : CASE_CONVERT:
13047 : 0 : {
13048 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
13049 : 0 : _q50 = do_valueize (valueize, _q50);
13050 : 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
13051 : : {
13052 : 0 : {
13053 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
13054 : 0 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
13055 : 0 : return true;
13056 : : }
13057 : : }
13058 : : break;
13059 : : }
13060 : : default:;
13061 : : }
13062 : : }
13063 : : break;
13064 : 1046 : default:;
13065 : : }
13066 : 1046 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
13067 : : {
13068 : 0 : {
13069 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
13070 : 0 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, NE_EXPR))
13071 : 0 : return true;
13072 : : }
13073 : : }
13074 : : break;
13075 : : }
13076 : : default:;
13077 : : }
13078 : : }
13079 : : break;
13080 : : default:;
13081 : : }
13082 : : }
13083 : : }
13084 : 129480167 : switch (TREE_CODE (_p0))
13085 : : {
13086 : 126739589 : case SSA_NAME:
13087 : 126739589 : if (gimple *_d1 = get_def (valueize, _p0))
13088 : : {
13089 : 42821372 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13090 : 46954531 : switch (gimple_assign_rhs_code (_a1))
13091 : : {
13092 : 286065 : case POINTER_PLUS_EXPR:
13093 : 286065 : {
13094 : 286065 : tree _q20 = gimple_assign_rhs1 (_a1);
13095 : 286065 : _q20 = do_valueize (valueize, _q20);
13096 : 286065 : tree _q21 = gimple_assign_rhs2 (_a1);
13097 : 286065 : _q21 = do_valueize (valueize, _q21);
13098 : 286065 : switch (TREE_CODE (_p1))
13099 : : {
13100 : 205597 : case SSA_NAME:
13101 : 205597 : if (gimple *_d2 = get_def (valueize, _p1))
13102 : : {
13103 : 199236 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13104 : 156124 : switch (gimple_assign_rhs_code (_a2))
13105 : : {
13106 : 522 : case ADDR_EXPR:
13107 : 522 : {
13108 : 522 : {
13109 : 522 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
13110 : 522 : if (gimple_simplify_248 (res_op, seq, valueize, type, captures, NE_EXPR))
13111 : 129 : return true;
13112 : : }
13113 : 393 : break;
13114 : : }
13115 : : default:;
13116 : : }
13117 : : }
13118 : : break;
13119 : 70210 : case ADDR_EXPR:
13120 : 70210 : {
13121 : 70210 : {
13122 : 70210 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
13123 : 70210 : if (gimple_simplify_248 (res_op, seq, valueize, type, captures, NE_EXPR))
13124 : 3417 : return true;
13125 : : }
13126 : 66793 : break;
13127 : : }
13128 : 282519 : default:;
13129 : : }
13130 : 282519 : switch (TREE_CODE (_q20))
13131 : : {
13132 : 271089 : case SSA_NAME:
13133 : 271089 : if (gimple *_d2 = get_def (valueize, _q20))
13134 : : {
13135 : 254029 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13136 : 197078 : switch (gimple_assign_rhs_code (_a2))
13137 : : {
13138 : 1130 : case ADDR_EXPR:
13139 : 1130 : {
13140 : 1130 : switch (TREE_CODE (_p1))
13141 : : {
13142 : 1041 : case SSA_NAME:
13143 : 1041 : if (gimple *_d3 = get_def (valueize, _p1))
13144 : : {
13145 : 1021 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13146 : 486 : switch (gimple_assign_rhs_code (_a3))
13147 : : {
13148 : 385 : case POINTER_PLUS_EXPR:
13149 : 385 : {
13150 : 385 : tree _q50 = gimple_assign_rhs1 (_a3);
13151 : 385 : _q50 = do_valueize (valueize, _q50);
13152 : 385 : tree _q51 = gimple_assign_rhs2 (_a3);
13153 : 385 : _q51 = do_valueize (valueize, _q51);
13154 : 385 : switch (TREE_CODE (_q50))
13155 : : {
13156 : 385 : case SSA_NAME:
13157 : 385 : if (gimple *_d4 = get_def (valueize, _q50))
13158 : : {
13159 : 319 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13160 : 98 : switch (gimple_assign_rhs_code (_a4))
13161 : : {
13162 : 13 : case ADDR_EXPR:
13163 : 13 : {
13164 : 13 : {
13165 : 13 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
13166 : 13 : if (gimple_simplify_249 (res_op, seq, valueize, type, captures, NE_EXPR))
13167 : 13 : return true;
13168 : : }
13169 : 0 : break;
13170 : : }
13171 : : default:;
13172 : : }
13173 : : }
13174 : : break;
13175 : 0 : case ADDR_EXPR:
13176 : 0 : {
13177 : 0 : {
13178 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
13179 : 0 : if (gimple_simplify_249 (res_op, seq, valueize, type, captures, NE_EXPR))
13180 : 0 : return true;
13181 : : }
13182 : 0 : break;
13183 : : }
13184 : : default:;
13185 : : }
13186 : : break;
13187 : : }
13188 : : default:;
13189 : : }
13190 : : }
13191 : : break;
13192 : : default:;
13193 : : }
13194 : : break;
13195 : : }
13196 : : default:;
13197 : : }
13198 : : }
13199 : : break;
13200 : 11423 : case ADDR_EXPR:
13201 : 11423 : {
13202 : 11423 : switch (TREE_CODE (_p1))
13203 : : {
13204 : 11407 : case SSA_NAME:
13205 : 11407 : if (gimple *_d2 = get_def (valueize, _p1))
13206 : : {
13207 : 10485 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13208 : 1746 : switch (gimple_assign_rhs_code (_a2))
13209 : : {
13210 : 782 : case POINTER_PLUS_EXPR:
13211 : 782 : {
13212 : 782 : tree _q50 = gimple_assign_rhs1 (_a2);
13213 : 782 : _q50 = do_valueize (valueize, _q50);
13214 : 782 : tree _q51 = gimple_assign_rhs2 (_a2);
13215 : 782 : _q51 = do_valueize (valueize, _q51);
13216 : 782 : switch (TREE_CODE (_q50))
13217 : : {
13218 : 758 : case SSA_NAME:
13219 : 758 : if (gimple *_d3 = get_def (valueize, _q50))
13220 : : {
13221 : 741 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13222 : 72 : switch (gimple_assign_rhs_code (_a3))
13223 : : {
13224 : 0 : case ADDR_EXPR:
13225 : 0 : {
13226 : 0 : {
13227 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
13228 : 0 : if (gimple_simplify_249 (res_op, seq, valueize, type, captures, NE_EXPR))
13229 : 0 : return true;
13230 : : }
13231 : 0 : break;
13232 : : }
13233 : : default:;
13234 : : }
13235 : : }
13236 : : break;
13237 : 24 : case ADDR_EXPR:
13238 : 24 : {
13239 : 24 : {
13240 : 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
13241 : 24 : if (gimple_simplify_249 (res_op, seq, valueize, type, captures, NE_EXPR))
13242 : 8 : return true;
13243 : : }
13244 : 16 : break;
13245 : : }
13246 : : default:;
13247 : : }
13248 : : break;
13249 : : }
13250 : : default:;
13251 : : }
13252 : : }
13253 : : break;
13254 : : default:;
13255 : : }
13256 : : break;
13257 : : }
13258 : : default:;
13259 : : }
13260 : : break;
13261 : : }
13262 : 51147 : case ADDR_EXPR:
13263 : 51147 : {
13264 : 51147 : switch (TREE_CODE (_p1))
13265 : : {
13266 : 26633 : case SSA_NAME:
13267 : 26633 : if (gimple *_d2 = get_def (valueize, _p1))
13268 : : {
13269 : 25630 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13270 : 34522 : switch (gimple_assign_rhs_code (_a2))
13271 : : {
13272 : 884 : case POINTER_PLUS_EXPR:
13273 : 884 : {
13274 : 884 : tree _q30 = gimple_assign_rhs1 (_a2);
13275 : 884 : _q30 = do_valueize (valueize, _q30);
13276 : 884 : tree _q31 = gimple_assign_rhs2 (_a2);
13277 : 884 : _q31 = do_valueize (valueize, _q31);
13278 : 884 : {
13279 : 884 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
13280 : 884 : if (gimple_simplify_248 (res_op, seq, valueize, type, captures, NE_EXPR))
13281 : 304 : return true;
13282 : : }
13283 : 580 : break;
13284 : : }
13285 : : default:;
13286 : : }
13287 : : }
13288 : : break;
13289 : : default:;
13290 : : }
13291 : : break;
13292 : : }
13293 : : default:;
13294 : : }
13295 : : }
13296 : : break;
13297 : 114363 : case ADDR_EXPR:
13298 : 114363 : {
13299 : 114363 : switch (TREE_CODE (_p1))
13300 : : {
13301 : 0 : case SSA_NAME:
13302 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
13303 : : {
13304 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13305 : 0 : switch (gimple_assign_rhs_code (_a1))
13306 : : {
13307 : 0 : case POINTER_PLUS_EXPR:
13308 : 0 : {
13309 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
13310 : 0 : _q30 = do_valueize (valueize, _q30);
13311 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
13312 : 0 : _q31 = do_valueize (valueize, _q31);
13313 : 0 : {
13314 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
13315 : 0 : if (gimple_simplify_248 (res_op, seq, valueize, type, captures, NE_EXPR))
13316 : 0 : return true;
13317 : : }
13318 : 0 : break;
13319 : : }
13320 : : default:;
13321 : : }
13322 : : }
13323 : : break;
13324 : : default:;
13325 : : }
13326 : : break;
13327 : : }
13328 : 129476296 : default:;
13329 : : }
13330 : 129476296 : switch (TREE_CODE (_p1))
13331 : : {
13332 : 22811065 : case SSA_NAME:
13333 : 22811065 : if (gimple *_d1 = get_def (valueize, _p1))
13334 : : {
13335 : 7129816 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13336 : 10085096 : switch (gimple_assign_rhs_code (_a1))
13337 : : {
13338 : 163252 : case MINUS_EXPR:
13339 : 163252 : {
13340 : 163252 : tree _q30 = gimple_assign_rhs1 (_a1);
13341 : 163252 : _q30 = do_valueize (valueize, _q30);
13342 : 163252 : tree _q31 = gimple_assign_rhs2 (_a1);
13343 : 163252 : _q31 = do_valueize (valueize, _q31);
13344 : 163252 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13345 : : {
13346 : 6044 : {
13347 : 6044 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
13348 : 6044 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, NE_EXPR))
13349 : 1543 : return true;
13350 : : }
13351 : : }
13352 : : break;
13353 : : }
13354 : : default:;
13355 : : }
13356 : : }
13357 : : break;
13358 : 129474753 : default:;
13359 : : }
13360 : 129474753 : switch (TREE_CODE (_p0))
13361 : : {
13362 : 126734175 : case SSA_NAME:
13363 : 126734175 : if (gimple *_d1 = get_def (valueize, _p0))
13364 : : {
13365 : 42815958 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13366 : 46947504 : switch (gimple_assign_rhs_code (_a1))
13367 : : {
13368 : 19870 : case TRUNC_DIV_EXPR:
13369 : 19870 : {
13370 : 19870 : tree _q20 = gimple_assign_rhs1 (_a1);
13371 : 19870 : _q20 = do_valueize (valueize, _q20);
13372 : 19870 : tree _q21 = gimple_assign_rhs2 (_a1);
13373 : 19870 : _q21 = do_valueize (valueize, _q21);
13374 : 19870 : if (integer_zerop (_p1))
13375 : : {
13376 : 8344 : {
13377 : 8344 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13378 : 8344 : if (gimple_simplify_250 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR))
13379 : 229 : return true;
13380 : : }
13381 : : }
13382 : : break;
13383 : : }
13384 : 2411935 : CASE_CONVERT:
13385 : 2411935 : {
13386 : 2411935 : tree _q20 = gimple_assign_rhs1 (_a1);
13387 : 2411935 : _q20 = do_valueize (valueize, _q20);
13388 : 2411935 : switch (TREE_CODE (_p1))
13389 : : {
13390 : 591512 : case SSA_NAME:
13391 : 591512 : if (gimple *_d2 = get_def (valueize, _p1))
13392 : : {
13393 : 535982 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13394 : 638830 : switch (gimple_assign_rhs_code (_a2))
13395 : : {
13396 : 89174 : CASE_CONVERT:
13397 : 89174 : {
13398 : 89174 : tree _q40 = gimple_assign_rhs1 (_a2);
13399 : 89174 : _q40 = do_valueize (valueize, _q40);
13400 : 89174 : switch (TREE_CODE (_q40))
13401 : : {
13402 : 85587 : case SSA_NAME:
13403 : 85587 : if (gimple *_d3 = get_def (valueize, _q40))
13404 : : {
13405 : 84730 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13406 : 98118 : switch (gimple_assign_rhs_code (_a3))
13407 : : {
13408 : 411 : case MINUS_EXPR:
13409 : 411 : {
13410 : 411 : tree _q50 = gimple_assign_rhs1 (_a3);
13411 : 411 : _q50 = do_valueize (valueize, _q50);
13412 : 411 : tree _q51 = gimple_assign_rhs2 (_a3);
13413 : 411 : _q51 = do_valueize (valueize, _q51);
13414 : 411 : switch (TREE_CODE (_q50))
13415 : : {
13416 : 3 : case INTEGER_CST:
13417 : 3 : {
13418 : 3 : switch (TREE_CODE (_q51))
13419 : : {
13420 : 3 : case SSA_NAME:
13421 : 3 : if (gimple *_d4 = get_def (valueize, _q51))
13422 : : {
13423 : 2 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13424 : 2 : switch (gimple_assign_rhs_code (_a4))
13425 : : {
13426 : 2 : CASE_CONVERT:
13427 : 2 : {
13428 : 2 : tree _q70 = gimple_assign_rhs1 (_a4);
13429 : 2 : _q70 = do_valueize (valueize, _q70);
13430 : 2 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
13431 : : {
13432 : 0 : {
13433 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
13434 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13435 : 0 : return true;
13436 : : }
13437 : : }
13438 : : break;
13439 : : }
13440 : : default:;
13441 : : }
13442 : : }
13443 : : break;
13444 : : default:;
13445 : : }
13446 : : break;
13447 : : }
13448 : : default:;
13449 : : }
13450 : : break;
13451 : : }
13452 : : default:;
13453 : : }
13454 : : }
13455 : : break;
13456 : : default:;
13457 : : }
13458 : : break;
13459 : : }
13460 : : default:;
13461 : : }
13462 : : }
13463 : : break;
13464 : 2411935 : default:;
13465 : : }
13466 : 2411935 : switch (TREE_CODE (_q20))
13467 : : {
13468 : 2400893 : case SSA_NAME:
13469 : 2400893 : if (gimple *_d2 = get_def (valueize, _q20))
13470 : : {
13471 : 2363309 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13472 : 2758835 : switch (gimple_assign_rhs_code (_a2))
13473 : : {
13474 : 8511 : case MINUS_EXPR:
13475 : 8511 : {
13476 : 8511 : tree _q30 = gimple_assign_rhs1 (_a2);
13477 : 8511 : _q30 = do_valueize (valueize, _q30);
13478 : 8511 : tree _q31 = gimple_assign_rhs2 (_a2);
13479 : 8511 : _q31 = do_valueize (valueize, _q31);
13480 : 8511 : switch (TREE_CODE (_q30))
13481 : : {
13482 : 1418 : case INTEGER_CST:
13483 : 1418 : {
13484 : 1418 : switch (TREE_CODE (_q31))
13485 : : {
13486 : 1418 : case SSA_NAME:
13487 : 1418 : if (gimple *_d3 = get_def (valueize, _q31))
13488 : : {
13489 : 1319 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13490 : 1166 : switch (gimple_assign_rhs_code (_a3))
13491 : : {
13492 : 486 : CASE_CONVERT:
13493 : 486 : {
13494 : 486 : tree _q50 = gimple_assign_rhs1 (_a3);
13495 : 486 : _q50 = do_valueize (valueize, _q50);
13496 : 486 : switch (TREE_CODE (_p1))
13497 : : {
13498 : 20 : case SSA_NAME:
13499 : 20 : if (gimple *_d4 = get_def (valueize, _p1))
13500 : : {
13501 : 20 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13502 : 10 : switch (gimple_assign_rhs_code (_a4))
13503 : : {
13504 : 2 : CASE_CONVERT:
13505 : 2 : {
13506 : 2 : tree _q70 = gimple_assign_rhs1 (_a4);
13507 : 2 : _q70 = do_valueize (valueize, _q70);
13508 : 2 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
13509 : : {
13510 : 0 : {
13511 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
13512 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13513 : 0 : return true;
13514 : : }
13515 : : }
13516 : : break;
13517 : : }
13518 : : default:;
13519 : : }
13520 : : }
13521 : : break;
13522 : 486 : default:;
13523 : : }
13524 : 486 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
13525 : : {
13526 : 0 : {
13527 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
13528 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13529 : 0 : return true;
13530 : : }
13531 : : }
13532 : : break;
13533 : : }
13534 : : default:;
13535 : : }
13536 : : }
13537 : : break;
13538 : 1418 : default:;
13539 : : }
13540 : 1418 : switch (TREE_CODE (_p1))
13541 : : {
13542 : 424 : case SSA_NAME:
13543 : 424 : if (gimple *_d3 = get_def (valueize, _p1))
13544 : : {
13545 : 408 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13546 : 629 : switch (gimple_assign_rhs_code (_a3))
13547 : : {
13548 : 2 : CASE_CONVERT:
13549 : 2 : {
13550 : 2 : tree _q60 = gimple_assign_rhs1 (_a3);
13551 : 2 : _q60 = do_valueize (valueize, _q60);
13552 : 2 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
13553 : : {
13554 : 0 : {
13555 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
13556 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13557 : 0 : return true;
13558 : : }
13559 : : }
13560 : : break;
13561 : : }
13562 : : default:;
13563 : : }
13564 : : }
13565 : : break;
13566 : 1418 : default:;
13567 : : }
13568 : 1418 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
13569 : : {
13570 : 0 : {
13571 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
13572 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13573 : 0 : return true;
13574 : : }
13575 : : }
13576 : : break;
13577 : : }
13578 : : default:;
13579 : : }
13580 : : break;
13581 : : }
13582 : : default:;
13583 : : }
13584 : : }
13585 : : break;
13586 : 2411935 : default:;
13587 : : }
13588 : 2411935 : switch (TREE_CODE (_p1))
13589 : : {
13590 : 591512 : case SSA_NAME:
13591 : 591512 : if (gimple *_d2 = get_def (valueize, _p1))
13592 : : {
13593 : 535982 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13594 : 638830 : switch (gimple_assign_rhs_code (_a2))
13595 : : {
13596 : 89174 : CASE_CONVERT:
13597 : 89174 : {
13598 : 89174 : tree _q40 = gimple_assign_rhs1 (_a2);
13599 : 89174 : _q40 = do_valueize (valueize, _q40);
13600 : 89174 : switch (TREE_CODE (_q40))
13601 : : {
13602 : 85587 : case SSA_NAME:
13603 : 85587 : if (gimple *_d3 = get_def (valueize, _q40))
13604 : : {
13605 : 84730 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13606 : 98118 : switch (gimple_assign_rhs_code (_a3))
13607 : : {
13608 : 411 : case MINUS_EXPR:
13609 : 411 : {
13610 : 411 : tree _q50 = gimple_assign_rhs1 (_a3);
13611 : 411 : _q50 = do_valueize (valueize, _q50);
13612 : 411 : tree _q51 = gimple_assign_rhs2 (_a3);
13613 : 411 : _q51 = do_valueize (valueize, _q51);
13614 : 411 : switch (TREE_CODE (_q50))
13615 : : {
13616 : 3 : case INTEGER_CST:
13617 : 3 : {
13618 : 3 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13619 : : {
13620 : 0 : {
13621 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
13622 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13623 : 0 : return true;
13624 : : }
13625 : : }
13626 : : break;
13627 : : }
13628 : : default:;
13629 : : }
13630 : : break;
13631 : : }
13632 : : default:;
13633 : : }
13634 : : }
13635 : : break;
13636 : : default:;
13637 : : }
13638 : : break;
13639 : : }
13640 : 88214 : case MINUS_EXPR:
13641 : 88214 : {
13642 : 88214 : tree _q40 = gimple_assign_rhs1 (_a2);
13643 : 88214 : _q40 = do_valueize (valueize, _q40);
13644 : 88214 : tree _q41 = gimple_assign_rhs2 (_a2);
13645 : 88214 : _q41 = do_valueize (valueize, _q41);
13646 : 88214 : switch (TREE_CODE (_q40))
13647 : : {
13648 : 1634 : case INTEGER_CST:
13649 : 1634 : {
13650 : 1634 : switch (TREE_CODE (_q41))
13651 : : {
13652 : 1634 : case SSA_NAME:
13653 : 1634 : if (gimple *_d3 = get_def (valueize, _q41))
13654 : : {
13655 : 1598 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13656 : 1306 : switch (gimple_assign_rhs_code (_a3))
13657 : : {
13658 : 1074 : CASE_CONVERT:
13659 : 1074 : {
13660 : 1074 : tree _q60 = gimple_assign_rhs1 (_a3);
13661 : 1074 : _q60 = do_valueize (valueize, _q60);
13662 : 1074 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13663 : : {
13664 : 0 : {
13665 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
13666 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13667 : 0 : return true;
13668 : : }
13669 : : }
13670 : : break;
13671 : : }
13672 : : default:;
13673 : : }
13674 : : }
13675 : : break;
13676 : 1634 : default:;
13677 : : }
13678 : 1634 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
13679 : : {
13680 : 0 : {
13681 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
13682 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13683 : 0 : return true;
13684 : : }
13685 : : }
13686 : : break;
13687 : : }
13688 : : default:;
13689 : : }
13690 : : break;
13691 : : }
13692 : : default:;
13693 : : }
13694 : : }
13695 : : break;
13696 : : default:;
13697 : : }
13698 : : break;
13699 : : }
13700 : 212188 : case MINUS_EXPR:
13701 : 212188 : {
13702 : 212188 : tree _q20 = gimple_assign_rhs1 (_a1);
13703 : 212188 : _q20 = do_valueize (valueize, _q20);
13704 : 212188 : tree _q21 = gimple_assign_rhs2 (_a1);
13705 : 212188 : _q21 = do_valueize (valueize, _q21);
13706 : 212188 : switch (TREE_CODE (_q20))
13707 : : {
13708 : 9872 : case INTEGER_CST:
13709 : 9872 : {
13710 : 9872 : switch (TREE_CODE (_q21))
13711 : : {
13712 : 9872 : case SSA_NAME:
13713 : 9872 : if (gimple *_d2 = get_def (valueize, _q21))
13714 : : {
13715 : 9841 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13716 : 8254 : switch (gimple_assign_rhs_code (_a2))
13717 : : {
13718 : 7517 : CASE_CONVERT:
13719 : 7517 : {
13720 : 7517 : tree _q40 = gimple_assign_rhs1 (_a2);
13721 : 7517 : _q40 = do_valueize (valueize, _q40);
13722 : 7517 : switch (TREE_CODE (_p1))
13723 : : {
13724 : 327 : case SSA_NAME:
13725 : 327 : if (gimple *_d3 = get_def (valueize, _p1))
13726 : : {
13727 : 308 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13728 : 272 : switch (gimple_assign_rhs_code (_a3))
13729 : : {
13730 : 67 : CASE_CONVERT:
13731 : 67 : {
13732 : 67 : tree _q60 = gimple_assign_rhs1 (_a3);
13733 : 67 : _q60 = do_valueize (valueize, _q60);
13734 : 67 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
13735 : : {
13736 : 0 : {
13737 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
13738 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13739 : 0 : return true;
13740 : : }
13741 : : }
13742 : : break;
13743 : : }
13744 : : default:;
13745 : : }
13746 : : }
13747 : : break;
13748 : 7517 : default:;
13749 : : }
13750 : 7517 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
13751 : : {
13752 : 0 : {
13753 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
13754 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13755 : 0 : return true;
13756 : : }
13757 : : }
13758 : : break;
13759 : : }
13760 : : default:;
13761 : : }
13762 : : }
13763 : : break;
13764 : 9872 : default:;
13765 : : }
13766 : 9872 : switch (TREE_CODE (_p1))
13767 : : {
13768 : 1953 : case SSA_NAME:
13769 : 1953 : if (gimple *_d2 = get_def (valueize, _p1))
13770 : : {
13771 : 1916 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13772 : 1692 : switch (gimple_assign_rhs_code (_a2))
13773 : : {
13774 : 1022 : CASE_CONVERT:
13775 : 1022 : {
13776 : 1022 : tree _q50 = gimple_assign_rhs1 (_a2);
13777 : 1022 : _q50 = do_valueize (valueize, _q50);
13778 : 1022 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13779 : : {
13780 : 0 : {
13781 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13782 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13783 : 0 : return true;
13784 : : }
13785 : : }
13786 : : break;
13787 : : }
13788 : : default:;
13789 : : }
13790 : : }
13791 : : break;
13792 : 9872 : default:;
13793 : : }
13794 : 9872 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
13795 : : {
13796 : 0 : {
13797 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13798 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13799 : 0 : return true;
13800 : : }
13801 : : }
13802 : : break;
13803 : : }
13804 : : default:;
13805 : : }
13806 : : break;
13807 : : }
13808 : : default:;
13809 : : }
13810 : : }
13811 : : break;
13812 : 129474524 : default:;
13813 : : }
13814 : 129474524 : switch (TREE_CODE (_p1))
13815 : : {
13816 : 22809522 : case SSA_NAME:
13817 : 22809522 : if (gimple *_d1 = get_def (valueize, _p1))
13818 : : {
13819 : 7128273 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13820 : 10083553 : switch (gimple_assign_rhs_code (_a1))
13821 : : {
13822 : 393006 : CASE_CONVERT:
13823 : 393006 : {
13824 : 393006 : tree _q30 = gimple_assign_rhs1 (_a1);
13825 : 393006 : _q30 = do_valueize (valueize, _q30);
13826 : 393006 : switch (TREE_CODE (_q30))
13827 : : {
13828 : 375308 : case SSA_NAME:
13829 : 375308 : if (gimple *_d2 = get_def (valueize, _q30))
13830 : : {
13831 : 355397 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13832 : 423124 : switch (gimple_assign_rhs_code (_a2))
13833 : : {
13834 : 6342 : case MINUS_EXPR:
13835 : 6342 : {
13836 : 6342 : tree _q40 = gimple_assign_rhs1 (_a2);
13837 : 6342 : _q40 = do_valueize (valueize, _q40);
13838 : 6342 : tree _q41 = gimple_assign_rhs2 (_a2);
13839 : 6342 : _q41 = do_valueize (valueize, _q41);
13840 : 6342 : switch (TREE_CODE (_q40))
13841 : : {
13842 : 2102 : case INTEGER_CST:
13843 : 2102 : {
13844 : 2102 : switch (TREE_CODE (_q41))
13845 : : {
13846 : 2102 : case SSA_NAME:
13847 : 2102 : if (gimple *_d3 = get_def (valueize, _q41))
13848 : : {
13849 : 1860 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13850 : 1147 : switch (gimple_assign_rhs_code (_a3))
13851 : : {
13852 : 940 : CASE_CONVERT:
13853 : 940 : {
13854 : 940 : tree _q60 = gimple_assign_rhs1 (_a3);
13855 : 940 : _q60 = do_valueize (valueize, _q60);
13856 : 940 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
13857 : : {
13858 : 0 : {
13859 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
13860 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13861 : 0 : return true;
13862 : : }
13863 : : }
13864 : : break;
13865 : : }
13866 : : default:;
13867 : : }
13868 : : }
13869 : : break;
13870 : 2102 : default:;
13871 : : }
13872 : 2102 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
13873 : : {
13874 : 0 : {
13875 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
13876 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13877 : 0 : return true;
13878 : : }
13879 : : }
13880 : : break;
13881 : : }
13882 : : default:;
13883 : : }
13884 : : break;
13885 : : }
13886 : : default:;
13887 : : }
13888 : : }
13889 : : break;
13890 : : default:;
13891 : : }
13892 : : break;
13893 : : }
13894 : 161709 : case MINUS_EXPR:
13895 : 161709 : {
13896 : 161709 : tree _q30 = gimple_assign_rhs1 (_a1);
13897 : 161709 : _q30 = do_valueize (valueize, _q30);
13898 : 161709 : tree _q31 = gimple_assign_rhs2 (_a1);
13899 : 161709 : _q31 = do_valueize (valueize, _q31);
13900 : 161709 : switch (TREE_CODE (_q30))
13901 : : {
13902 : 3393 : case INTEGER_CST:
13903 : 3393 : {
13904 : 3393 : switch (TREE_CODE (_q31))
13905 : : {
13906 : 3393 : case SSA_NAME:
13907 : 3393 : if (gimple *_d2 = get_def (valueize, _q31))
13908 : : {
13909 : 3209 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13910 : 2505 : switch (gimple_assign_rhs_code (_a2))
13911 : : {
13912 : 1366 : CASE_CONVERT:
13913 : 1366 : {
13914 : 1366 : tree _q50 = gimple_assign_rhs1 (_a2);
13915 : 1366 : _q50 = do_valueize (valueize, _q50);
13916 : 1366 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
13917 : : {
13918 : 0 : {
13919 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
13920 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13921 : 0 : return true;
13922 : : }
13923 : : }
13924 : : break;
13925 : : }
13926 : : default:;
13927 : : }
13928 : : }
13929 : : break;
13930 : 3393 : default:;
13931 : : }
13932 : 3393 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
13933 : : {
13934 : 0 : {
13935 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
13936 : 0 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, NE_EXPR))
13937 : 0 : return true;
13938 : : }
13939 : : }
13940 : : break;
13941 : : }
13942 : : default:;
13943 : : }
13944 : : break;
13945 : : }
13946 : : default:;
13947 : : }
13948 : : }
13949 : : break;
13950 : 129474524 : default:;
13951 : : }
13952 : 129474524 : switch (TREE_CODE (_p0))
13953 : : {
13954 : 126733946 : case SSA_NAME:
13955 : 126733946 : if (gimple *_d1 = get_def (valueize, _p0))
13956 : : {
13957 : 42815729 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13958 : 46947275 : switch (gimple_assign_rhs_code (_a1))
13959 : : {
13960 : 222766 : case LT_EXPR:
13961 : 222766 : {
13962 : 222766 : tree _q20 = gimple_assign_rhs1 (_a1);
13963 : 222766 : _q20 = do_valueize (valueize, _q20);
13964 : 222766 : tree _q21 = gimple_assign_rhs2 (_a1);
13965 : 222766 : _q21 = do_valueize (valueize, _q21);
13966 : 222766 : switch (TREE_CODE (_p1))
13967 : : {
13968 : 1286 : case SSA_NAME:
13969 : 1286 : if (gimple *_d2 = get_def (valueize, _p1))
13970 : : {
13971 : 1265 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13972 : 1095 : switch (gimple_assign_rhs_code (_a2))
13973 : : {
13974 : 23 : case GT_EXPR:
13975 : 23 : {
13976 : 23 : tree _q50 = gimple_assign_rhs1 (_a2);
13977 : 23 : _q50 = do_valueize (valueize, _q50);
13978 : 23 : tree _q51 = gimple_assign_rhs2 (_a2);
13979 : 23 : _q51 = do_valueize (valueize, _q51);
13980 : 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13981 : : {
13982 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13983 : : {
13984 : 14 : {
13985 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13986 : 14 : const enum tree_code cmp1 = LT_EXPR;
13987 : 14 : const enum tree_code cmp2 = GT_EXPR;
13988 : 14 : const enum tree_code rcmp = NE_EXPR;
13989 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
13990 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
13991 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
13992 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
13993 : : )
13994 : : {
13995 : 14 : gimple_seq *lseq = seq;
13996 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2431;
13997 : 14 : {
13998 : 14 : res_op->set_op (rcmp, type, 2);
13999 : 14 : res_op->ops[0] = captures[0];
14000 : 14 : res_op->ops[1] = captures[1];
14001 : 14 : res_op->resimplify (lseq, valueize);
14002 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14003 : 14 : return true;
14004 : : }
14005 : 0 : next_after_fail2431:;
14006 : : }
14007 : : }
14008 : : }
14009 : : }
14010 : : break;
14011 : : }
14012 : 113 : case EQ_EXPR:
14013 : 113 : {
14014 : 113 : tree _q50 = gimple_assign_rhs1 (_a2);
14015 : 113 : _q50 = do_valueize (valueize, _q50);
14016 : 113 : tree _q51 = gimple_assign_rhs2 (_a2);
14017 : 113 : _q51 = do_valueize (valueize, _q51);
14018 : 113 : if (tree_swap_operands_p (_q50, _q51))
14019 : 0 : std::swap (_q50, _q51);
14020 : 113 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14021 : : {
14022 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14023 : : {
14024 : 14 : {
14025 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14026 : 14 : const enum tree_code cmp1 = LT_EXPR;
14027 : 14 : const enum tree_code cmp2 = EQ_EXPR;
14028 : 14 : const enum tree_code rcmp = LE_EXPR;
14029 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14030 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14031 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14032 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14033 : : )
14034 : : {
14035 : 14 : gimple_seq *lseq = seq;
14036 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2432;
14037 : 14 : {
14038 : 14 : res_op->set_op (rcmp, type, 2);
14039 : 14 : res_op->ops[0] = captures[0];
14040 : 14 : res_op->ops[1] = captures[1];
14041 : 14 : res_op->resimplify (lseq, valueize);
14042 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14043 : 14 : return true;
14044 : : }
14045 : 0 : next_after_fail2432:;
14046 : : }
14047 : : }
14048 : : }
14049 : : }
14050 : 129469385 : break;
14051 : : }
14052 : 115 : case NE_EXPR:
14053 : 115 : {
14054 : 115 : tree _q50 = gimple_assign_rhs1 (_a2);
14055 : 115 : _q50 = do_valueize (valueize, _q50);
14056 : 115 : tree _q51 = gimple_assign_rhs2 (_a2);
14057 : 115 : _q51 = do_valueize (valueize, _q51);
14058 : 115 : if (tree_swap_operands_p (_q50, _q51))
14059 : 13 : std::swap (_q50, _q51);
14060 : 115 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14061 : : {
14062 : 53 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14063 : : {
14064 : 14 : {
14065 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14066 : 14 : const enum tree_code cmp1 = LT_EXPR;
14067 : 14 : const enum tree_code cmp2 = NE_EXPR;
14068 : 14 : const enum tree_code rcmp = GT_EXPR;
14069 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14070 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14071 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14072 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14073 : : )
14074 : : {
14075 : 14 : gimple_seq *lseq = seq;
14076 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2433;
14077 : 14 : {
14078 : 14 : res_op->set_op (rcmp, type, 2);
14079 : 14 : res_op->ops[0] = captures[0];
14080 : 14 : res_op->ops[1] = captures[1];
14081 : 14 : res_op->resimplify (lseq, valueize);
14082 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14083 : 14 : return true;
14084 : : }
14085 : 0 : next_after_fail2433:;
14086 : : }
14087 : : }
14088 : : }
14089 : : }
14090 : 129469385 : break;
14091 : : }
14092 : : default:;
14093 : : }
14094 : : }
14095 : : break;
14096 : : default:;
14097 : : }
14098 : : break;
14099 : : }
14100 : 107016 : case LE_EXPR:
14101 : 107016 : {
14102 : 107016 : tree _q20 = gimple_assign_rhs1 (_a1);
14103 : 107016 : _q20 = do_valueize (valueize, _q20);
14104 : 107016 : tree _q21 = gimple_assign_rhs2 (_a1);
14105 : 107016 : _q21 = do_valueize (valueize, _q21);
14106 : 107016 : switch (TREE_CODE (_p1))
14107 : : {
14108 : 2542 : case SSA_NAME:
14109 : 2542 : if (gimple *_d2 = get_def (valueize, _p1))
14110 : : {
14111 : 2513 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14112 : 2499 : switch (gimple_assign_rhs_code (_a2))
14113 : : {
14114 : 72 : case GE_EXPR:
14115 : 72 : {
14116 : 72 : tree _q50 = gimple_assign_rhs1 (_a2);
14117 : 72 : _q50 = do_valueize (valueize, _q50);
14118 : 72 : tree _q51 = gimple_assign_rhs2 (_a2);
14119 : 72 : _q51 = do_valueize (valueize, _q51);
14120 : 72 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14121 : : {
14122 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14123 : : {
14124 : 14 : {
14125 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14126 : 14 : const enum tree_code cmp1 = LE_EXPR;
14127 : 14 : const enum tree_code cmp2 = GE_EXPR;
14128 : 14 : const enum tree_code rcmp = NE_EXPR;
14129 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14130 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14131 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14132 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14133 : : )
14134 : : {
14135 : 14 : gimple_seq *lseq = seq;
14136 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2434;
14137 : 14 : {
14138 : 14 : res_op->set_op (rcmp, type, 2);
14139 : 14 : res_op->ops[0] = captures[0];
14140 : 14 : res_op->ops[1] = captures[1];
14141 : 14 : res_op->resimplify (lseq, valueize);
14142 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14143 : 14 : return true;
14144 : : }
14145 : 0 : next_after_fail2434:;
14146 : : }
14147 : : }
14148 : : }
14149 : : }
14150 : : break;
14151 : : }
14152 : 213 : case EQ_EXPR:
14153 : 213 : {
14154 : 213 : tree _q50 = gimple_assign_rhs1 (_a2);
14155 : 213 : _q50 = do_valueize (valueize, _q50);
14156 : 213 : tree _q51 = gimple_assign_rhs2 (_a2);
14157 : 213 : _q51 = do_valueize (valueize, _q51);
14158 : 213 : if (tree_swap_operands_p (_q50, _q51))
14159 : 13 : std::swap (_q50, _q51);
14160 : 213 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14161 : : {
14162 : 53 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14163 : : {
14164 : 14 : {
14165 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14166 : 14 : const enum tree_code cmp1 = LE_EXPR;
14167 : 14 : const enum tree_code cmp2 = EQ_EXPR;
14168 : 14 : const enum tree_code rcmp = LT_EXPR;
14169 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14170 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14171 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14172 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14173 : : )
14174 : : {
14175 : 14 : gimple_seq *lseq = seq;
14176 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2435;
14177 : 14 : {
14178 : 14 : res_op->set_op (rcmp, type, 2);
14179 : 14 : res_op->ops[0] = captures[0];
14180 : 14 : res_op->ops[1] = captures[1];
14181 : 14 : res_op->resimplify (lseq, valueize);
14182 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14183 : 14 : return true;
14184 : : }
14185 : 0 : next_after_fail2435:;
14186 : : }
14187 : : }
14188 : : }
14189 : : }
14190 : 129469385 : break;
14191 : : }
14192 : 77 : case NE_EXPR:
14193 : 77 : {
14194 : 77 : tree _q50 = gimple_assign_rhs1 (_a2);
14195 : 77 : _q50 = do_valueize (valueize, _q50);
14196 : 77 : tree _q51 = gimple_assign_rhs2 (_a2);
14197 : 77 : _q51 = do_valueize (valueize, _q51);
14198 : 77 : if (tree_swap_operands_p (_q50, _q51))
14199 : 0 : std::swap (_q50, _q51);
14200 : 77 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14201 : : {
14202 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14203 : : {
14204 : 14 : {
14205 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14206 : 14 : const enum tree_code cmp1 = LE_EXPR;
14207 : 14 : const enum tree_code cmp2 = NE_EXPR;
14208 : 14 : const enum tree_code rcmp = GE_EXPR;
14209 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14210 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14211 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14212 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14213 : : )
14214 : : {
14215 : 14 : gimple_seq *lseq = seq;
14216 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2436;
14217 : 14 : {
14218 : 14 : res_op->set_op (rcmp, type, 2);
14219 : 14 : res_op->ops[0] = captures[0];
14220 : 14 : res_op->ops[1] = captures[1];
14221 : 14 : res_op->resimplify (lseq, valueize);
14222 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14223 : 14 : return true;
14224 : : }
14225 : 0 : next_after_fail2436:;
14226 : : }
14227 : : }
14228 : : }
14229 : : }
14230 : 129469385 : break;
14231 : : }
14232 : : default:;
14233 : : }
14234 : : }
14235 : : break;
14236 : : default:;
14237 : : }
14238 : : break;
14239 : : }
14240 : 251491 : case GT_EXPR:
14241 : 251491 : {
14242 : 251491 : tree _q20 = gimple_assign_rhs1 (_a1);
14243 : 251491 : _q20 = do_valueize (valueize, _q20);
14244 : 251491 : tree _q21 = gimple_assign_rhs2 (_a1);
14245 : 251491 : _q21 = do_valueize (valueize, _q21);
14246 : 251491 : switch (TREE_CODE (_p1))
14247 : : {
14248 : 1507 : case SSA_NAME:
14249 : 1507 : if (gimple *_d2 = get_def (valueize, _p1))
14250 : : {
14251 : 1480 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14252 : 1400 : switch (gimple_assign_rhs_code (_a2))
14253 : : {
14254 : 182 : case GT_EXPR:
14255 : 182 : {
14256 : 182 : tree _q50 = gimple_assign_rhs1 (_a2);
14257 : 182 : _q50 = do_valueize (valueize, _q50);
14258 : 182 : tree _q51 = gimple_assign_rhs2 (_a2);
14259 : 182 : _q51 = do_valueize (valueize, _q51);
14260 : 182 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14261 : : {
14262 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14263 : : {
14264 : 0 : {
14265 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14266 : 0 : const enum tree_code cmp1 = LT_EXPR;
14267 : 0 : const enum tree_code cmp2 = GT_EXPR;
14268 : 0 : const enum tree_code rcmp = NE_EXPR;
14269 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14270 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14271 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14272 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14273 : : )
14274 : : {
14275 : 0 : gimple_seq *lseq = seq;
14276 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2437;
14277 : 0 : {
14278 : 0 : res_op->set_op (rcmp, type, 2);
14279 : 0 : res_op->ops[0] = captures[0];
14280 : 0 : res_op->ops[1] = captures[1];
14281 : 0 : res_op->resimplify (lseq, valueize);
14282 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14283 : 0 : return true;
14284 : : }
14285 : 0 : next_after_fail2437:;
14286 : : }
14287 : : }
14288 : 0 : {
14289 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14290 : 0 : const enum tree_code cmp1 = LT_EXPR;
14291 : 0 : const enum tree_code cmp2 = GT_EXPR;
14292 : 0 : const enum tree_code rcmp = NE_EXPR;
14293 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14294 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14295 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14296 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14297 : : )
14298 : : {
14299 : 0 : gimple_seq *lseq = seq;
14300 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2438;
14301 : 0 : {
14302 : 0 : res_op->set_op (rcmp, type, 2);
14303 : 0 : res_op->ops[0] = captures[0];
14304 : 0 : res_op->ops[1] = captures[1];
14305 : 0 : res_op->resimplify (lseq, valueize);
14306 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14307 : 0 : return true;
14308 : : }
14309 : 0 : next_after_fail2438:;
14310 : : }
14311 : : }
14312 : : }
14313 : : }
14314 : : break;
14315 : : }
14316 : 128 : case EQ_EXPR:
14317 : 128 : {
14318 : 128 : tree _q50 = gimple_assign_rhs1 (_a2);
14319 : 128 : _q50 = do_valueize (valueize, _q50);
14320 : 128 : tree _q51 = gimple_assign_rhs2 (_a2);
14321 : 128 : _q51 = do_valueize (valueize, _q51);
14322 : 128 : if (tree_swap_operands_p (_q50, _q51))
14323 : 0 : std::swap (_q50, _q51);
14324 : 128 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14325 : : {
14326 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14327 : : {
14328 : 0 : {
14329 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14330 : 0 : const enum tree_code cmp1 = LT_EXPR;
14331 : 0 : const enum tree_code cmp2 = EQ_EXPR;
14332 : 0 : const enum tree_code rcmp = LE_EXPR;
14333 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14334 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14335 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14336 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14337 : : )
14338 : : {
14339 : 0 : gimple_seq *lseq = seq;
14340 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2439;
14341 : 0 : {
14342 : 0 : res_op->set_op (rcmp, type, 2);
14343 : 0 : res_op->ops[0] = captures[0];
14344 : 0 : res_op->ops[1] = captures[1];
14345 : 0 : res_op->resimplify (lseq, valueize);
14346 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14347 : 0 : return true;
14348 : : }
14349 : 0 : next_after_fail2439:;
14350 : : }
14351 : : }
14352 : : }
14353 : : }
14354 : 129469385 : break;
14355 : : }
14356 : 191 : case NE_EXPR:
14357 : 191 : {
14358 : 191 : tree _q50 = gimple_assign_rhs1 (_a2);
14359 : 191 : _q50 = do_valueize (valueize, _q50);
14360 : 191 : tree _q51 = gimple_assign_rhs2 (_a2);
14361 : 191 : _q51 = do_valueize (valueize, _q51);
14362 : 191 : if (tree_swap_operands_p (_q50, _q51))
14363 : 13 : std::swap (_q50, _q51);
14364 : 191 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14365 : : {
14366 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14367 : : {
14368 : 0 : {
14369 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14370 : 0 : const enum tree_code cmp1 = LT_EXPR;
14371 : 0 : const enum tree_code cmp2 = NE_EXPR;
14372 : 0 : const enum tree_code rcmp = GT_EXPR;
14373 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14374 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14375 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14376 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14377 : : )
14378 : : {
14379 : 0 : gimple_seq *lseq = seq;
14380 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2440;
14381 : 0 : {
14382 : 0 : res_op->set_op (rcmp, type, 2);
14383 : 0 : res_op->ops[0] = captures[0];
14384 : 0 : res_op->ops[1] = captures[1];
14385 : 0 : res_op->resimplify (lseq, valueize);
14386 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14387 : 0 : return true;
14388 : : }
14389 : 0 : next_after_fail2440:;
14390 : : }
14391 : : }
14392 : : }
14393 : : }
14394 : 129469385 : break;
14395 : : }
14396 : 121 : case LT_EXPR:
14397 : 121 : {
14398 : 121 : tree _q50 = gimple_assign_rhs1 (_a2);
14399 : 121 : _q50 = do_valueize (valueize, _q50);
14400 : 121 : tree _q51 = gimple_assign_rhs2 (_a2);
14401 : 121 : _q51 = do_valueize (valueize, _q51);
14402 : 121 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14403 : : {
14404 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14405 : : {
14406 : 14 : {
14407 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14408 : 14 : const enum tree_code cmp1 = LT_EXPR;
14409 : 14 : const enum tree_code cmp2 = GT_EXPR;
14410 : 14 : const enum tree_code rcmp = NE_EXPR;
14411 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14412 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14413 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14414 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14415 : : )
14416 : : {
14417 : 14 : gimple_seq *lseq = seq;
14418 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2441;
14419 : 14 : {
14420 : 14 : res_op->set_op (rcmp, type, 2);
14421 : 14 : res_op->ops[0] = captures[0];
14422 : 14 : res_op->ops[1] = captures[1];
14423 : 14 : res_op->resimplify (lseq, valueize);
14424 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14425 : 14 : return true;
14426 : : }
14427 : 0 : next_after_fail2441:;
14428 : : }
14429 : : }
14430 : : }
14431 : : }
14432 : : break;
14433 : : }
14434 : : default:;
14435 : : }
14436 : : }
14437 : : break;
14438 : : default:;
14439 : : }
14440 : : break;
14441 : : }
14442 : 124479 : case GE_EXPR:
14443 : 124479 : {
14444 : 124479 : tree _q20 = gimple_assign_rhs1 (_a1);
14445 : 124479 : _q20 = do_valueize (valueize, _q20);
14446 : 124479 : tree _q21 = gimple_assign_rhs2 (_a1);
14447 : 124479 : _q21 = do_valueize (valueize, _q21);
14448 : 124479 : switch (TREE_CODE (_p1))
14449 : : {
14450 : 2317 : case SSA_NAME:
14451 : 2317 : if (gimple *_d2 = get_def (valueize, _p1))
14452 : : {
14453 : 2283 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14454 : 2181 : switch (gimple_assign_rhs_code (_a2))
14455 : : {
14456 : 166 : case GE_EXPR:
14457 : 166 : {
14458 : 166 : tree _q50 = gimple_assign_rhs1 (_a2);
14459 : 166 : _q50 = do_valueize (valueize, _q50);
14460 : 166 : tree _q51 = gimple_assign_rhs2 (_a2);
14461 : 166 : _q51 = do_valueize (valueize, _q51);
14462 : 166 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14463 : : {
14464 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14465 : : {
14466 : 0 : {
14467 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14468 : 0 : const enum tree_code cmp1 = LE_EXPR;
14469 : 0 : const enum tree_code cmp2 = GE_EXPR;
14470 : 0 : const enum tree_code rcmp = NE_EXPR;
14471 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14472 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14473 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14474 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14475 : : )
14476 : : {
14477 : 0 : gimple_seq *lseq = seq;
14478 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2442;
14479 : 0 : {
14480 : 0 : res_op->set_op (rcmp, type, 2);
14481 : 0 : res_op->ops[0] = captures[0];
14482 : 0 : res_op->ops[1] = captures[1];
14483 : 0 : res_op->resimplify (lseq, valueize);
14484 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14485 : 0 : return true;
14486 : : }
14487 : 0 : next_after_fail2442:;
14488 : : }
14489 : : }
14490 : 0 : {
14491 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14492 : 0 : const enum tree_code cmp1 = LE_EXPR;
14493 : 0 : const enum tree_code cmp2 = GE_EXPR;
14494 : 0 : const enum tree_code rcmp = NE_EXPR;
14495 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14496 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14497 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14498 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14499 : : )
14500 : : {
14501 : 0 : gimple_seq *lseq = seq;
14502 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2443;
14503 : 0 : {
14504 : 0 : res_op->set_op (rcmp, type, 2);
14505 : 0 : res_op->ops[0] = captures[0];
14506 : 0 : res_op->ops[1] = captures[1];
14507 : 0 : res_op->resimplify (lseq, valueize);
14508 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14509 : 0 : return true;
14510 : : }
14511 : 0 : next_after_fail2443:;
14512 : : }
14513 : : }
14514 : : }
14515 : : }
14516 : : break;
14517 : : }
14518 : 212 : case EQ_EXPR:
14519 : 212 : {
14520 : 212 : tree _q50 = gimple_assign_rhs1 (_a2);
14521 : 212 : _q50 = do_valueize (valueize, _q50);
14522 : 212 : tree _q51 = gimple_assign_rhs2 (_a2);
14523 : 212 : _q51 = do_valueize (valueize, _q51);
14524 : 212 : if (tree_swap_operands_p (_q50, _q51))
14525 : 13 : std::swap (_q50, _q51);
14526 : 212 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14527 : : {
14528 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14529 : : {
14530 : 0 : {
14531 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14532 : 0 : const enum tree_code cmp1 = LE_EXPR;
14533 : 0 : const enum tree_code cmp2 = EQ_EXPR;
14534 : 0 : const enum tree_code rcmp = LT_EXPR;
14535 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14536 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14537 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14538 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14539 : : )
14540 : : {
14541 : 0 : gimple_seq *lseq = seq;
14542 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2444;
14543 : 0 : {
14544 : 0 : res_op->set_op (rcmp, type, 2);
14545 : 0 : res_op->ops[0] = captures[0];
14546 : 0 : res_op->ops[1] = captures[1];
14547 : 0 : res_op->resimplify (lseq, valueize);
14548 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14549 : 0 : return true;
14550 : : }
14551 : 0 : next_after_fail2444:;
14552 : : }
14553 : : }
14554 : : }
14555 : : }
14556 : 129469385 : break;
14557 : : }
14558 : 30 : case NE_EXPR:
14559 : 30 : {
14560 : 30 : tree _q50 = gimple_assign_rhs1 (_a2);
14561 : 30 : _q50 = do_valueize (valueize, _q50);
14562 : 30 : tree _q51 = gimple_assign_rhs2 (_a2);
14563 : 30 : _q51 = do_valueize (valueize, _q51);
14564 : 30 : if (tree_swap_operands_p (_q50, _q51))
14565 : 0 : std::swap (_q50, _q51);
14566 : 30 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14567 : : {
14568 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14569 : : {
14570 : 0 : {
14571 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14572 : 0 : const enum tree_code cmp1 = LE_EXPR;
14573 : 0 : const enum tree_code cmp2 = NE_EXPR;
14574 : 0 : const enum tree_code rcmp = GE_EXPR;
14575 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14576 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14577 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14578 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14579 : : )
14580 : : {
14581 : 0 : gimple_seq *lseq = seq;
14582 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2445;
14583 : 0 : {
14584 : 0 : res_op->set_op (rcmp, type, 2);
14585 : 0 : res_op->ops[0] = captures[0];
14586 : 0 : res_op->ops[1] = captures[1];
14587 : 0 : res_op->resimplify (lseq, valueize);
14588 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14589 : 0 : return true;
14590 : : }
14591 : 0 : next_after_fail2445:;
14592 : : }
14593 : : }
14594 : : }
14595 : : }
14596 : 129469385 : break;
14597 : : }
14598 : 74 : case LE_EXPR:
14599 : 74 : {
14600 : 74 : tree _q50 = gimple_assign_rhs1 (_a2);
14601 : 74 : _q50 = do_valueize (valueize, _q50);
14602 : 74 : tree _q51 = gimple_assign_rhs2 (_a2);
14603 : 74 : _q51 = do_valueize (valueize, _q51);
14604 : 74 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14605 : : {
14606 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14607 : : {
14608 : 14 : {
14609 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14610 : 14 : const enum tree_code cmp1 = LE_EXPR;
14611 : 14 : const enum tree_code cmp2 = GE_EXPR;
14612 : 14 : const enum tree_code rcmp = NE_EXPR;
14613 : 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14614 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14615 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14616 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14617 : : )
14618 : : {
14619 : 14 : gimple_seq *lseq = seq;
14620 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2446;
14621 : 14 : {
14622 : 14 : res_op->set_op (rcmp, type, 2);
14623 : 14 : res_op->ops[0] = captures[0];
14624 : 14 : res_op->ops[1] = captures[1];
14625 : 14 : res_op->resimplify (lseq, valueize);
14626 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14627 : 14 : return true;
14628 : : }
14629 : 0 : next_after_fail2446:;
14630 : : }
14631 : : }
14632 : : }
14633 : : }
14634 : : break;
14635 : : }
14636 : : default:;
14637 : : }
14638 : : }
14639 : : break;
14640 : : default:;
14641 : : }
14642 : : break;
14643 : : }
14644 : 527761 : case EQ_EXPR:
14645 : 527761 : {
14646 : 527761 : tree _q20 = gimple_assign_rhs1 (_a1);
14647 : 527761 : _q20 = do_valueize (valueize, _q20);
14648 : 527761 : tree _q21 = gimple_assign_rhs2 (_a1);
14649 : 527761 : _q21 = do_valueize (valueize, _q21);
14650 : 527761 : if (tree_swap_operands_p (_q20, _q21))
14651 : 10010 : std::swap (_q20, _q21);
14652 : 527761 : switch (TREE_CODE (_p1))
14653 : : {
14654 : 7076 : case SSA_NAME:
14655 : 7076 : if (gimple *_d2 = get_def (valueize, _p1))
14656 : : {
14657 : 6986 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14658 : 7254 : switch (gimple_assign_rhs_code (_a2))
14659 : : {
14660 : 10 : case LT_EXPR:
14661 : 10 : {
14662 : 10 : tree _q50 = gimple_assign_rhs1 (_a2);
14663 : 10 : _q50 = do_valueize (valueize, _q50);
14664 : 10 : tree _q51 = gimple_assign_rhs2 (_a2);
14665 : 10 : _q51 = do_valueize (valueize, _q51);
14666 : 10 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14667 : : {
14668 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14669 : : {
14670 : 0 : {
14671 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14672 : 0 : const enum tree_code cmp1 = LT_EXPR;
14673 : 0 : const enum tree_code cmp2 = EQ_EXPR;
14674 : 0 : const enum tree_code rcmp = LE_EXPR;
14675 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14676 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14677 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14678 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14679 : : )
14680 : : {
14681 : 0 : gimple_seq *lseq = seq;
14682 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2447;
14683 : 0 : {
14684 : 0 : res_op->set_op (rcmp, type, 2);
14685 : 0 : res_op->ops[0] = captures[0];
14686 : 0 : res_op->ops[1] = captures[1];
14687 : 0 : res_op->resimplify (lseq, valueize);
14688 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14689 : 0 : return true;
14690 : : }
14691 : 0 : next_after_fail2447:;
14692 : : }
14693 : : }
14694 : : }
14695 : : }
14696 : : break;
14697 : : }
14698 : 132 : case LE_EXPR:
14699 : 132 : {
14700 : 132 : tree _q50 = gimple_assign_rhs1 (_a2);
14701 : 132 : _q50 = do_valueize (valueize, _q50);
14702 : 132 : tree _q51 = gimple_assign_rhs2 (_a2);
14703 : 132 : _q51 = do_valueize (valueize, _q51);
14704 : 132 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14705 : : {
14706 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14707 : : {
14708 : 0 : {
14709 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14710 : 0 : const enum tree_code cmp1 = LE_EXPR;
14711 : 0 : const enum tree_code cmp2 = EQ_EXPR;
14712 : 0 : const enum tree_code rcmp = LT_EXPR;
14713 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14714 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14715 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14716 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14717 : : )
14718 : : {
14719 : 0 : gimple_seq *lseq = seq;
14720 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2448;
14721 : 0 : {
14722 : 0 : res_op->set_op (rcmp, type, 2);
14723 : 0 : res_op->ops[0] = captures[0];
14724 : 0 : res_op->ops[1] = captures[1];
14725 : 0 : res_op->resimplify (lseq, valueize);
14726 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14727 : 0 : return true;
14728 : : }
14729 : 0 : next_after_fail2448:;
14730 : : }
14731 : : }
14732 : : }
14733 : : }
14734 : : break;
14735 : : }
14736 : 16 : case GT_EXPR:
14737 : 16 : {
14738 : 16 : tree _q50 = gimple_assign_rhs1 (_a2);
14739 : 16 : _q50 = do_valueize (valueize, _q50);
14740 : 16 : tree _q51 = gimple_assign_rhs2 (_a2);
14741 : 16 : _q51 = do_valueize (valueize, _q51);
14742 : 16 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14743 : : {
14744 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14745 : : {
14746 : 0 : {
14747 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14748 : 0 : const enum tree_code cmp1 = LT_EXPR;
14749 : 0 : const enum tree_code cmp2 = EQ_EXPR;
14750 : 0 : const enum tree_code rcmp = LE_EXPR;
14751 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14752 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14753 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14754 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14755 : : )
14756 : : {
14757 : 0 : gimple_seq *lseq = seq;
14758 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2449;
14759 : 0 : {
14760 : 0 : res_op->set_op (rcmp, type, 2);
14761 : 0 : res_op->ops[0] = captures[0];
14762 : 0 : res_op->ops[1] = captures[1];
14763 : 0 : res_op->resimplify (lseq, valueize);
14764 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14765 : 0 : return true;
14766 : : }
14767 : 0 : next_after_fail2449:;
14768 : : }
14769 : : }
14770 : : }
14771 : : }
14772 : : break;
14773 : : }
14774 : 30 : case GE_EXPR:
14775 : 30 : {
14776 : 30 : tree _q50 = gimple_assign_rhs1 (_a2);
14777 : 30 : _q50 = do_valueize (valueize, _q50);
14778 : 30 : tree _q51 = gimple_assign_rhs2 (_a2);
14779 : 30 : _q51 = do_valueize (valueize, _q51);
14780 : 30 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14781 : : {
14782 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14783 : : {
14784 : 0 : {
14785 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14786 : 0 : const enum tree_code cmp1 = LE_EXPR;
14787 : 0 : const enum tree_code cmp2 = EQ_EXPR;
14788 : 0 : const enum tree_code rcmp = LT_EXPR;
14789 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14790 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14791 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14792 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14793 : : )
14794 : : {
14795 : 0 : gimple_seq *lseq = seq;
14796 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2450;
14797 : 0 : {
14798 : 0 : res_op->set_op (rcmp, type, 2);
14799 : 0 : res_op->ops[0] = captures[0];
14800 : 0 : res_op->ops[1] = captures[1];
14801 : 0 : res_op->resimplify (lseq, valueize);
14802 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14803 : 0 : return true;
14804 : : }
14805 : 0 : next_after_fail2450:;
14806 : : }
14807 : : }
14808 : : }
14809 : : }
14810 : : break;
14811 : : }
14812 : : default:;
14813 : : }
14814 : : }
14815 : : break;
14816 : : default:;
14817 : : }
14818 : 129469385 : break;
14819 : : }
14820 : 484707 : case NE_EXPR:
14821 : 484707 : {
14822 : 484707 : tree _q20 = gimple_assign_rhs1 (_a1);
14823 : 484707 : _q20 = do_valueize (valueize, _q20);
14824 : 484707 : tree _q21 = gimple_assign_rhs2 (_a1);
14825 : 484707 : _q21 = do_valueize (valueize, _q21);
14826 : 484707 : if (tree_swap_operands_p (_q20, _q21))
14827 : 6278 : std::swap (_q20, _q21);
14828 : 484707 : switch (TREE_CODE (_p1))
14829 : : {
14830 : 23281 : case SSA_NAME:
14831 : 23281 : if (gimple *_d2 = get_def (valueize, _p1))
14832 : : {
14833 : 23056 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14834 : 29764 : switch (gimple_assign_rhs_code (_a2))
14835 : : {
14836 : 14 : case LT_EXPR:
14837 : 14 : {
14838 : 14 : tree _q50 = gimple_assign_rhs1 (_a2);
14839 : 14 : _q50 = do_valueize (valueize, _q50);
14840 : 14 : tree _q51 = gimple_assign_rhs2 (_a2);
14841 : 14 : _q51 = do_valueize (valueize, _q51);
14842 : 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14843 : : {
14844 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14845 : : {
14846 : 0 : {
14847 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14848 : 0 : const enum tree_code cmp1 = LT_EXPR;
14849 : 0 : const enum tree_code cmp2 = NE_EXPR;
14850 : 0 : const enum tree_code rcmp = GT_EXPR;
14851 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14852 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14853 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14854 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14855 : : )
14856 : : {
14857 : 0 : gimple_seq *lseq = seq;
14858 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2451;
14859 : 0 : {
14860 : 0 : res_op->set_op (rcmp, type, 2);
14861 : 0 : res_op->ops[0] = captures[0];
14862 : 0 : res_op->ops[1] = captures[1];
14863 : 0 : res_op->resimplify (lseq, valueize);
14864 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14865 : 0 : return true;
14866 : : }
14867 : 0 : next_after_fail2451:;
14868 : : }
14869 : : }
14870 : : }
14871 : : }
14872 : : break;
14873 : : }
14874 : 1210 : case LE_EXPR:
14875 : 1210 : {
14876 : 1210 : tree _q50 = gimple_assign_rhs1 (_a2);
14877 : 1210 : _q50 = do_valueize (valueize, _q50);
14878 : 1210 : tree _q51 = gimple_assign_rhs2 (_a2);
14879 : 1210 : _q51 = do_valueize (valueize, _q51);
14880 : 1210 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14881 : : {
14882 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14883 : : {
14884 : 0 : {
14885 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14886 : 0 : const enum tree_code cmp1 = LE_EXPR;
14887 : 0 : const enum tree_code cmp2 = NE_EXPR;
14888 : 0 : const enum tree_code rcmp = GE_EXPR;
14889 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14890 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14891 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14892 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14893 : : )
14894 : : {
14895 : 0 : gimple_seq *lseq = seq;
14896 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2452;
14897 : 0 : {
14898 : 0 : res_op->set_op (rcmp, type, 2);
14899 : 0 : res_op->ops[0] = captures[0];
14900 : 0 : res_op->ops[1] = captures[1];
14901 : 0 : res_op->resimplify (lseq, valueize);
14902 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14903 : 0 : return true;
14904 : : }
14905 : 0 : next_after_fail2452:;
14906 : : }
14907 : : }
14908 : : }
14909 : : }
14910 : : break;
14911 : : }
14912 : 1254 : case GT_EXPR:
14913 : 1254 : {
14914 : 1254 : tree _q50 = gimple_assign_rhs1 (_a2);
14915 : 1254 : _q50 = do_valueize (valueize, _q50);
14916 : 1254 : tree _q51 = gimple_assign_rhs2 (_a2);
14917 : 1254 : _q51 = do_valueize (valueize, _q51);
14918 : 1254 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14919 : : {
14920 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14921 : : {
14922 : 0 : {
14923 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14924 : 0 : const enum tree_code cmp1 = LT_EXPR;
14925 : 0 : const enum tree_code cmp2 = NE_EXPR;
14926 : 0 : const enum tree_code rcmp = GT_EXPR;
14927 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14928 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14929 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14930 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14931 : : )
14932 : : {
14933 : 0 : gimple_seq *lseq = seq;
14934 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2453;
14935 : 0 : {
14936 : 0 : res_op->set_op (rcmp, type, 2);
14937 : 0 : res_op->ops[0] = captures[0];
14938 : 0 : res_op->ops[1] = captures[1];
14939 : 0 : res_op->resimplify (lseq, valueize);
14940 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14941 : 0 : return true;
14942 : : }
14943 : 0 : next_after_fail2453:;
14944 : : }
14945 : : }
14946 : : }
14947 : : }
14948 : : break;
14949 : : }
14950 : 6 : case GE_EXPR:
14951 : 6 : {
14952 : 6 : tree _q50 = gimple_assign_rhs1 (_a2);
14953 : 6 : _q50 = do_valueize (valueize, _q50);
14954 : 6 : tree _q51 = gimple_assign_rhs2 (_a2);
14955 : 6 : _q51 = do_valueize (valueize, _q51);
14956 : 6 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14957 : : {
14958 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14959 : : {
14960 : 0 : {
14961 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14962 : 0 : const enum tree_code cmp1 = LE_EXPR;
14963 : 0 : const enum tree_code cmp2 = NE_EXPR;
14964 : 0 : const enum tree_code rcmp = GE_EXPR;
14965 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
14966 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
14967 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
14968 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
14969 : : )
14970 : : {
14971 : 0 : gimple_seq *lseq = seq;
14972 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2454;
14973 : 0 : {
14974 : 0 : res_op->set_op (rcmp, type, 2);
14975 : 0 : res_op->ops[0] = captures[0];
14976 : 0 : res_op->ops[1] = captures[1];
14977 : 0 : res_op->resimplify (lseq, valueize);
14978 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
14979 : 0 : return true;
14980 : : }
14981 : 0 : next_after_fail2454:;
14982 : : }
14983 : : }
14984 : : }
14985 : : }
14986 : : break;
14987 : : }
14988 : : default:;
14989 : : }
14990 : : }
14991 : : break;
14992 : : default:;
14993 : : }
14994 : 129469385 : break;
14995 : : }
14996 : 33361 : case MIN_EXPR:
14997 : 33361 : {
14998 : 33361 : tree _q20 = gimple_assign_rhs1 (_a1);
14999 : 33361 : _q20 = do_valueize (valueize, _q20);
15000 : 33361 : tree _q21 = gimple_assign_rhs2 (_a1);
15001 : 33361 : _q21 = do_valueize (valueize, _q21);
15002 : 33361 : if (tree_swap_operands_p (_q20, _q21))
15003 : 4546 : std::swap (_q20, _q21);
15004 : 33361 : switch (TREE_CODE (_p1))
15005 : : {
15006 : 5827 : case SSA_NAME:
15007 : 5827 : if (gimple *_d2 = get_def (valueize, _p1))
15008 : : {
15009 : 5578 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15010 : 6470 : switch (gimple_assign_rhs_code (_a2))
15011 : : {
15012 : 0 : case MAX_EXPR:
15013 : 0 : {
15014 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
15015 : 0 : _q50 = do_valueize (valueize, _q50);
15016 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
15017 : 0 : _q51 = do_valueize (valueize, _q51);
15018 : 0 : if (tree_swap_operands_p (_q50, _q51))
15019 : 0 : std::swap (_q50, _q51);
15020 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15021 : : {
15022 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15023 : : {
15024 : 0 : {
15025 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15026 : 0 : if (!HONOR_NANS (captures[0])
15027 : : )
15028 : : {
15029 : 0 : gimple_seq *lseq = seq;
15030 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2455;
15031 : 0 : {
15032 : 0 : res_op->set_op (NE_EXPR, type, 2);
15033 : 0 : res_op->ops[0] = captures[0];
15034 : 0 : res_op->ops[1] = captures[1];
15035 : 0 : res_op->resimplify (lseq, valueize);
15036 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
15037 : 0 : return true;
15038 : : }
15039 : 0 : next_after_fail2455:;
15040 : : }
15041 : : }
15042 : : }
15043 : : }
15044 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15045 : : {
15046 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15047 : : {
15048 : 0 : {
15049 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
15050 : 0 : if (!HONOR_NANS (captures[0])
15051 : : )
15052 : : {
15053 : 0 : gimple_seq *lseq = seq;
15054 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2456;
15055 : 0 : {
15056 : 0 : res_op->set_op (NE_EXPR, type, 2);
15057 : 0 : res_op->ops[0] = captures[0];
15058 : 0 : res_op->ops[1] = captures[1];
15059 : 0 : res_op->resimplify (lseq, valueize);
15060 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
15061 : 0 : return true;
15062 : : }
15063 : 0 : next_after_fail2456:;
15064 : : }
15065 : : }
15066 : : }
15067 : : }
15068 : 33361 : break;
15069 : : }
15070 : : default:;
15071 : : }
15072 : : }
15073 : : break;
15074 : 33361 : default:;
15075 : : }
15076 : 33361 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15077 : : {
15078 : 16 : {
15079 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15080 : 16 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR))
15081 : 16 : return true;
15082 : : }
15083 : : }
15084 : 33345 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
15085 : : {
15086 : 2966 : {
15087 : 2966 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
15088 : 2966 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR))
15089 : 2406 : return true;
15090 : : }
15091 : : }
15092 : 129469385 : break;
15093 : : }
15094 : 12993 : case MAX_EXPR:
15095 : 12993 : {
15096 : 12993 : tree _q20 = gimple_assign_rhs1 (_a1);
15097 : 12993 : _q20 = do_valueize (valueize, _q20);
15098 : 12993 : tree _q21 = gimple_assign_rhs2 (_a1);
15099 : 12993 : _q21 = do_valueize (valueize, _q21);
15100 : 12993 : if (tree_swap_operands_p (_q20, _q21))
15101 : 75 : std::swap (_q20, _q21);
15102 : 12993 : switch (TREE_CODE (_p1))
15103 : : {
15104 : 7560 : case SSA_NAME:
15105 : 7560 : if (gimple *_d2 = get_def (valueize, _p1))
15106 : : {
15107 : 6380 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15108 : 6624 : switch (gimple_assign_rhs_code (_a2))
15109 : : {
15110 : 2 : case MIN_EXPR:
15111 : 2 : {
15112 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
15113 : 2 : _q50 = do_valueize (valueize, _q50);
15114 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
15115 : 2 : _q51 = do_valueize (valueize, _q51);
15116 : 2 : if (tree_swap_operands_p (_q50, _q51))
15117 : 0 : std::swap (_q50, _q51);
15118 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15119 : : {
15120 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15121 : : {
15122 : 2 : {
15123 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15124 : 2 : if (!HONOR_NANS (captures[0])
15125 : : )
15126 : : {
15127 : 2 : gimple_seq *lseq = seq;
15128 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2457;
15129 : 2 : {
15130 : 2 : res_op->set_op (NE_EXPR, type, 2);
15131 : 2 : res_op->ops[0] = captures[0];
15132 : 2 : res_op->ops[1] = captures[1];
15133 : 2 : res_op->resimplify (lseq, valueize);
15134 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
15135 : 2 : return true;
15136 : : }
15137 : 0 : next_after_fail2457:;
15138 : : }
15139 : : }
15140 : : }
15141 : : }
15142 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15143 : : {
15144 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15145 : : {
15146 : 0 : {
15147 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15148 : 0 : if (!HONOR_NANS (captures[0])
15149 : : )
15150 : : {
15151 : 0 : gimple_seq *lseq = seq;
15152 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2458;
15153 : 0 : {
15154 : 0 : res_op->set_op (NE_EXPR, type, 2);
15155 : 0 : res_op->ops[0] = captures[0];
15156 : 0 : res_op->ops[1] = captures[1];
15157 : 0 : res_op->resimplify (lseq, valueize);
15158 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
15159 : 0 : return true;
15160 : : }
15161 : 0 : next_after_fail2458:;
15162 : : }
15163 : : }
15164 : : }
15165 : : }
15166 : 12991 : break;
15167 : : }
15168 : : default:;
15169 : : }
15170 : : }
15171 : : break;
15172 : 12991 : default:;
15173 : : }
15174 : 12991 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15175 : : {
15176 : 29 : {
15177 : 29 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15178 : 29 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR))
15179 : 29 : return true;
15180 : : }
15181 : : }
15182 : 12962 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
15183 : : {
15184 : 2942 : {
15185 : 2942 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
15186 : 2942 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR))
15187 : 2574 : return true;
15188 : : }
15189 : : }
15190 : 129469385 : break;
15191 : : }
15192 : : default:;
15193 : : }
15194 : : }
15195 : : break;
15196 : 129469385 : default:;
15197 : : }
15198 : 129469385 : if (gimple_with_possible_nonzero_bits (_p0, valueize))
15199 : : {
15200 : 120881227 : if (gimple_with_known_nonzero_bits (_p1, valueize))
15201 : : {
15202 : 111570308 : {
15203 : 111570308 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
15204 : 111570308 : if (gimple_simplify_252 (res_op, seq, valueize, type, captures, NE_EXPR))
15205 : 2362 : return true;
15206 : : }
15207 : : }
15208 : : }
15209 : 129467023 : if (gimple_with_known_nonzero_bits (_p0, valueize))
15210 : : {
15211 : 96287296 : if (gimple_with_possible_nonzero_bits (_p1, valueize))
15212 : : {
15213 : 96287296 : {
15214 : 96287296 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
15215 : 96287296 : if (gimple_simplify_252 (res_op, seq, valueize, type, captures, NE_EXPR))
15216 : 1519 : return true;
15217 : : }
15218 : : }
15219 : : }
15220 : 129465504 : switch (TREE_CODE (_p1))
15221 : : {
15222 : 22809252 : case SSA_NAME:
15223 : 22809252 : if (gimple *_d1 = get_def (valueize, _p1))
15224 : : {
15225 : 7128017 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15226 : 10083272 : switch (gimple_assign_rhs_code (_a1))
15227 : : {
15228 : 5073 : case MIN_EXPR:
15229 : 5073 : {
15230 : 5073 : tree _q30 = gimple_assign_rhs1 (_a1);
15231 : 5073 : _q30 = do_valueize (valueize, _q30);
15232 : 5073 : tree _q31 = gimple_assign_rhs2 (_a1);
15233 : 5073 : _q31 = do_valueize (valueize, _q31);
15234 : 5073 : if (tree_swap_operands_p (_q30, _q31))
15235 : 932 : std::swap (_q30, _q31);
15236 : 5073 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
15237 : : {
15238 : 150 : {
15239 : 150 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
15240 : 150 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR))
15241 : 150 : return true;
15242 : : }
15243 : : }
15244 : 4923 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
15245 : : {
15246 : 52 : {
15247 : 52 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
15248 : 52 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR))
15249 : 52 : return true;
15250 : : }
15251 : : }
15252 : 129465199 : break;
15253 : : }
15254 : 5856 : case MAX_EXPR:
15255 : 5856 : {
15256 : 5856 : tree _q30 = gimple_assign_rhs1 (_a1);
15257 : 5856 : _q30 = do_valueize (valueize, _q30);
15258 : 5856 : tree _q31 = gimple_assign_rhs2 (_a1);
15259 : 5856 : _q31 = do_valueize (valueize, _q31);
15260 : 5856 : if (tree_swap_operands_p (_q30, _q31))
15261 : 24 : std::swap (_q30, _q31);
15262 : 5856 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
15263 : : {
15264 : 89 : {
15265 : 89 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
15266 : 89 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR))
15267 : 89 : return true;
15268 : : }
15269 : : }
15270 : 5767 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
15271 : : {
15272 : 14 : {
15273 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
15274 : 14 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR))
15275 : 14 : return true;
15276 : : }
15277 : : }
15278 : 129465199 : break;
15279 : : }
15280 : : default:;
15281 : : }
15282 : : }
15283 : : break;
15284 : 129465199 : default:;
15285 : : }
15286 : 129465199 : switch (TREE_CODE (_p0))
15287 : : {
15288 : 126724621 : case SSA_NAME:
15289 : 126724621 : if (gimple *_d1 = get_def (valueize, _p0))
15290 : : {
15291 : 42807839 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15292 : 46940220 : switch (gimple_assign_rhs_code (_a1))
15293 : : {
15294 : 30882 : case MIN_EXPR:
15295 : 30882 : {
15296 : 30882 : tree _q20 = gimple_assign_rhs1 (_a1);
15297 : 30882 : _q20 = do_valueize (valueize, _q20);
15298 : 30882 : tree _q21 = gimple_assign_rhs2 (_a1);
15299 : 30882 : _q21 = do_valueize (valueize, _q21);
15300 : 30882 : if (tree_swap_operands_p (_q20, _q21))
15301 : 4529 : std::swap (_q20, _q21);
15302 : 30882 : switch (TREE_CODE (_q21))
15303 : : {
15304 : 4583 : case INTEGER_CST:
15305 : 4583 : {
15306 : 4583 : switch (TREE_CODE (_p1))
15307 : : {
15308 : 3456 : case INTEGER_CST:
15309 : 3456 : {
15310 : 3456 : {
15311 : 3456 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15312 : 3456 : if (gimple_simplify_255 (res_op, seq, valueize, type, captures, NE_EXPR))
15313 : 3456 : return true;
15314 : : }
15315 : 0 : break;
15316 : : }
15317 : : default:;
15318 : : }
15319 : : break;
15320 : : }
15321 : : default:;
15322 : : }
15323 : 129456151 : break;
15324 : : }
15325 : 10388 : case MAX_EXPR:
15326 : 10388 : {
15327 : 10388 : tree _q20 = gimple_assign_rhs1 (_a1);
15328 : 10388 : _q20 = do_valueize (valueize, _q20);
15329 : 10388 : tree _q21 = gimple_assign_rhs2 (_a1);
15330 : 10388 : _q21 = do_valueize (valueize, _q21);
15331 : 10388 : if (tree_swap_operands_p (_q20, _q21))
15332 : 75 : std::swap (_q20, _q21);
15333 : 10388 : switch (TREE_CODE (_q21))
15334 : : {
15335 : 8425 : case INTEGER_CST:
15336 : 8425 : {
15337 : 8425 : switch (TREE_CODE (_p1))
15338 : : {
15339 : 1263 : case INTEGER_CST:
15340 : 1263 : {
15341 : 1263 : {
15342 : 1263 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15343 : 1263 : if (gimple_simplify_256 (res_op, seq, valueize, type, captures, NE_EXPR))
15344 : 1263 : return true;
15345 : : }
15346 : 0 : break;
15347 : : }
15348 : : default:;
15349 : : }
15350 : : break;
15351 : : }
15352 : 9125 : default:;
15353 : : }
15354 : 9125 : if (integer_zerop (_p1))
15355 : : {
15356 : 337 : {
15357 : 337 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15358 : 337 : if (gimple_simplify_257 (res_op, seq, valueize, type, captures, NE_EXPR))
15359 : 47 : return true;
15360 : : }
15361 : : }
15362 : 129456151 : break;
15363 : : }
15364 : 2840484 : case BIT_AND_EXPR:
15365 : 2840484 : {
15366 : 2840484 : tree _q20 = gimple_assign_rhs1 (_a1);
15367 : 2840484 : _q20 = do_valueize (valueize, _q20);
15368 : 2840484 : tree _q21 = gimple_assign_rhs2 (_a1);
15369 : 2840484 : _q21 = do_valueize (valueize, _q21);
15370 : 2840484 : if (tree_swap_operands_p (_q20, _q21))
15371 : 68258 : std::swap (_q20, _q21);
15372 : 2840484 : switch (TREE_CODE (_q20))
15373 : : {
15374 : 2840484 : case SSA_NAME:
15375 : 2840484 : if (gimple *_d2 = get_def (valueize, _q20))
15376 : : {
15377 : 2748991 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15378 : 3373271 : switch (gimple_assign_rhs_code (_a2))
15379 : : {
15380 : 50642 : case LSHIFT_EXPR:
15381 : 50642 : {
15382 : 50642 : tree _q30 = gimple_assign_rhs1 (_a2);
15383 : 50642 : _q30 = do_valueize (valueize, _q30);
15384 : 50642 : tree _q31 = gimple_assign_rhs2 (_a2);
15385 : 50642 : _q31 = do_valueize (valueize, _q31);
15386 : 50642 : if (integer_pow2p (_q30))
15387 : : {
15388 : 46929 : if (integer_pow2p (_q21))
15389 : : {
15390 : 3246 : if (integer_zerop (_p1))
15391 : : {
15392 : 3246 : {
15393 : 3246 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
15394 : 3246 : if (gimple_simplify_258 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
15395 : 3246 : return true;
15396 : : }
15397 : : }
15398 : : }
15399 : : }
15400 : 47396 : switch (TREE_CODE (_q31))
15401 : : {
15402 : 1026 : case INTEGER_CST:
15403 : 1026 : {
15404 : 1026 : switch (TREE_CODE (_q21))
15405 : : {
15406 : 992 : case INTEGER_CST:
15407 : 992 : {
15408 : 992 : switch (TREE_CODE (_p1))
15409 : : {
15410 : 992 : case INTEGER_CST:
15411 : 992 : {
15412 : 992 : {
15413 : 992 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
15414 : 992 : if (gimple_simplify_259 (res_op, seq, valueize, type, captures, NE_EXPR))
15415 : 37 : return true;
15416 : : }
15417 : 955 : break;
15418 : : }
15419 : : default:;
15420 : : }
15421 : : break;
15422 : : }
15423 : : default:;
15424 : : }
15425 : : break;
15426 : : }
15427 : 47359 : default:;
15428 : : }
15429 : 47359 : if (integer_onep (_q30))
15430 : : {
15431 : 46272 : if (integer_pow2p (_q21))
15432 : : {
15433 : 0 : if (integer_zerop (_p1))
15434 : : {
15435 : 0 : {
15436 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
15437 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
15438 : 0 : return true;
15439 : : }
15440 : : }
15441 : : }
15442 : : }
15443 : : break;
15444 : : }
15445 : 44620 : case RSHIFT_EXPR:
15446 : 44620 : {
15447 : 44620 : tree _q30 = gimple_assign_rhs1 (_a2);
15448 : 44620 : _q30 = do_valueize (valueize, _q30);
15449 : 44620 : tree _q31 = gimple_assign_rhs2 (_a2);
15450 : 44620 : _q31 = do_valueize (valueize, _q31);
15451 : 44620 : if (integer_pow2p (_q30))
15452 : : {
15453 : 1511 : if (integer_pow2p (_q21))
15454 : : {
15455 : 582 : if (integer_zerop (_p1))
15456 : : {
15457 : 582 : {
15458 : 582 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
15459 : 582 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
15460 : 582 : return true;
15461 : : }
15462 : : }
15463 : : }
15464 : : }
15465 : 44038 : switch (TREE_CODE (_q31))
15466 : : {
15467 : 10375 : case INTEGER_CST:
15468 : 10375 : {
15469 : 10375 : switch (TREE_CODE (_q21))
15470 : : {
15471 : 9915 : case INTEGER_CST:
15472 : 9915 : {
15473 : 9915 : switch (TREE_CODE (_p1))
15474 : : {
15475 : 8175 : case INTEGER_CST:
15476 : 8175 : {
15477 : 8175 : {
15478 : 8175 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
15479 : 8175 : if (gimple_simplify_262 (res_op, seq, valueize, type, captures, NE_EXPR))
15480 : 250 : return true;
15481 : : }
15482 : 7925 : break;
15483 : : }
15484 : : default:;
15485 : : }
15486 : : break;
15487 : : }
15488 : : default:;
15489 : : }
15490 : : break;
15491 : : }
15492 : : default:;
15493 : : }
15494 : : break;
15495 : : }
15496 : : default:;
15497 : : }
15498 : : }
15499 : : break;
15500 : 2836369 : default:;
15501 : : }
15502 : 2836369 : {
15503 : 2836369 : tree _q20_pops[1];
15504 : 2836369 : if (gimple_nop_convert (_q20, _q20_pops, valueize))
15505 : : {
15506 : 55963 : tree _q30 = _q20_pops[0];
15507 : 55963 : switch (TREE_CODE (_q30))
15508 : : {
15509 : 55946 : case SSA_NAME:
15510 : 55946 : if (gimple *_d2 = get_def (valueize, _q30))
15511 : : {
15512 : 54668 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15513 : 69056 : switch (gimple_assign_rhs_code (_a2))
15514 : : {
15515 : 15442 : case LSHIFT_EXPR:
15516 : 15442 : {
15517 : 15442 : tree _q40 = gimple_assign_rhs1 (_a2);
15518 : 15442 : _q40 = do_valueize (valueize, _q40);
15519 : 15442 : tree _q41 = gimple_assign_rhs2 (_a2);
15520 : 15442 : _q41 = do_valueize (valueize, _q41);
15521 : 15442 : if (integer_onep (_q40))
15522 : : {
15523 : 15442 : if (integer_pow2p (_q21))
15524 : : {
15525 : 6 : if (integer_zerop (_p1))
15526 : : {
15527 : 6 : {
15528 : 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
15529 : 6 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
15530 : 6 : return true;
15531 : : }
15532 : : }
15533 : : }
15534 : : }
15535 : : break;
15536 : : }
15537 : : default:;
15538 : : }
15539 : : }
15540 : : break;
15541 : : default:;
15542 : : }
15543 : : }
15544 : : }
15545 : 2836363 : break;
15546 : : }
15547 : 11684 : case LSHIFT_EXPR:
15548 : 11684 : {
15549 : 11684 : tree _q20 = gimple_assign_rhs1 (_a1);
15550 : 11684 : _q20 = do_valueize (valueize, _q20);
15551 : 11684 : tree _q21 = gimple_assign_rhs2 (_a1);
15552 : 11684 : _q21 = do_valueize (valueize, _q21);
15553 : 11684 : switch (TREE_CODE (_q20))
15554 : : {
15555 : 1022 : case INTEGER_CST:
15556 : 1022 : {
15557 : 1022 : switch (TREE_CODE (_p1))
15558 : : {
15559 : 592 : case INTEGER_CST:
15560 : 592 : {
15561 : 592 : {
15562 : 592 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15563 : 592 : if (gimple_simplify_263 (res_op, seq, valueize, type, captures, NE_EXPR))
15564 : 57 : return true;
15565 : : }
15566 : 535 : break;
15567 : : }
15568 : : default:;
15569 : : }
15570 : : break;
15571 : : }
15572 : : default:;
15573 : : }
15574 : : break;
15575 : : }
15576 : 662 : case LROTATE_EXPR:
15577 : 662 : {
15578 : 662 : tree _q20 = gimple_assign_rhs1 (_a1);
15579 : 662 : _q20 = do_valueize (valueize, _q20);
15580 : 662 : tree _q21 = gimple_assign_rhs2 (_a1);
15581 : 662 : _q21 = do_valueize (valueize, _q21);
15582 : 662 : switch (TREE_CODE (_p1))
15583 : : {
15584 : 66 : case SSA_NAME:
15585 : 66 : if (gimple *_d2 = get_def (valueize, _p1))
15586 : : {
15587 : 65 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15588 : 130 : switch (gimple_assign_rhs_code (_a2))
15589 : : {
15590 : 0 : case LROTATE_EXPR:
15591 : 0 : {
15592 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
15593 : 0 : _q50 = do_valueize (valueize, _q50);
15594 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
15595 : 0 : _q51 = do_valueize (valueize, _q51);
15596 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15597 : : {
15598 : 0 : {
15599 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
15600 : 0 : if (gimple_simplify_264 (res_op, seq, valueize, type, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR))
15601 : 0 : return true;
15602 : : }
15603 : : }
15604 : : break;
15605 : : }
15606 : : default:;
15607 : : }
15608 : : }
15609 : : break;
15610 : 662 : default:;
15611 : : }
15612 : 662 : switch (TREE_CODE (_q21))
15613 : : {
15614 : 0 : case INTEGER_CST:
15615 : 0 : {
15616 : 0 : switch (TREE_CODE (_p1))
15617 : : {
15618 : 0 : case INTEGER_CST:
15619 : 0 : {
15620 : 0 : {
15621 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15622 : 0 : if (gimple_simplify_265 (res_op, seq, valueize, type, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR))
15623 : 0 : return true;
15624 : : }
15625 : 0 : break;
15626 : : }
15627 : : default:;
15628 : : }
15629 : : break;
15630 : : }
15631 : 662 : default:;
15632 : : }
15633 : 662 : switch (TREE_CODE (_p1))
15634 : : {
15635 : 596 : case INTEGER_CST:
15636 : 596 : {
15637 : 596 : {
15638 : 596 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15639 : 596 : if (gimple_simplify_266 (res_op, seq, valueize, type, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR))
15640 : 0 : return true;
15641 : : }
15642 : 596 : break;
15643 : : }
15644 : : default:;
15645 : : }
15646 : : break;
15647 : : }
15648 : 830 : case RROTATE_EXPR:
15649 : 830 : {
15650 : 830 : tree _q20 = gimple_assign_rhs1 (_a1);
15651 : 830 : _q20 = do_valueize (valueize, _q20);
15652 : 830 : tree _q21 = gimple_assign_rhs2 (_a1);
15653 : 830 : _q21 = do_valueize (valueize, _q21);
15654 : 830 : switch (TREE_CODE (_p1))
15655 : : {
15656 : 232 : case SSA_NAME:
15657 : 232 : if (gimple *_d2 = get_def (valueize, _p1))
15658 : : {
15659 : 231 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15660 : 462 : switch (gimple_assign_rhs_code (_a2))
15661 : : {
15662 : 0 : case RROTATE_EXPR:
15663 : 0 : {
15664 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
15665 : 0 : _q50 = do_valueize (valueize, _q50);
15666 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
15667 : 0 : _q51 = do_valueize (valueize, _q51);
15668 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15669 : : {
15670 : 0 : {
15671 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
15672 : 0 : if (gimple_simplify_264 (res_op, seq, valueize, type, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR))
15673 : 0 : return true;
15674 : : }
15675 : : }
15676 : : break;
15677 : : }
15678 : : default:;
15679 : : }
15680 : : }
15681 : : break;
15682 : 830 : default:;
15683 : : }
15684 : 830 : switch (TREE_CODE (_q21))
15685 : : {
15686 : 242 : case INTEGER_CST:
15687 : 242 : {
15688 : 242 : switch (TREE_CODE (_p1))
15689 : : {
15690 : 10 : case INTEGER_CST:
15691 : 10 : {
15692 : 10 : {
15693 : 10 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15694 : 10 : if (gimple_simplify_265 (res_op, seq, valueize, type, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR))
15695 : 10 : return true;
15696 : : }
15697 : 0 : break;
15698 : : }
15699 : : default:;
15700 : : }
15701 : : break;
15702 : : }
15703 : 820 : default:;
15704 : : }
15705 : 820 : switch (TREE_CODE (_p1))
15706 : : {
15707 : 588 : case INTEGER_CST:
15708 : 588 : {
15709 : 588 : {
15710 : 588 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15711 : 588 : if (gimple_simplify_266 (res_op, seq, valueize, type, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR))
15712 : 0 : return true;
15713 : : }
15714 : 588 : break;
15715 : : }
15716 : : default:;
15717 : : }
15718 : : break;
15719 : : }
15720 : 103 : case VEC_COND_EXPR:
15721 : 103 : {
15722 : 103 : tree _q20 = gimple_assign_rhs1 (_a1);
15723 : 103 : _q20 = do_valueize (valueize, _q20);
15724 : 103 : tree _q21 = gimple_assign_rhs2 (_a1);
15725 : 103 : _q21 = do_valueize (valueize, _q21);
15726 : 103 : tree _q22 = gimple_assign_rhs3 (_a1);
15727 : 103 : _q22 = do_valueize (valueize, _q22);
15728 : 103 : switch (TREE_CODE (_p1))
15729 : : {
15730 : 46 : case SSA_NAME:
15731 : 46 : if (gimple *_d2 = get_def (valueize, _p1))
15732 : : {
15733 : 46 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15734 : 64 : switch (gimple_assign_rhs_code (_a2))
15735 : : {
15736 : 28 : case VEC_COND_EXPR:
15737 : 28 : {
15738 : 28 : tree _q60 = gimple_assign_rhs1 (_a2);
15739 : 28 : _q60 = do_valueize (valueize, _q60);
15740 : 28 : tree _q61 = gimple_assign_rhs2 (_a2);
15741 : 28 : _q61 = do_valueize (valueize, _q61);
15742 : 28 : tree _q62 = gimple_assign_rhs3 (_a2);
15743 : 28 : _q62 = do_valueize (valueize, _q62);
15744 : 28 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15745 : : {
15746 : 0 : {
15747 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
15748 : 0 : if (VECTOR_TYPE_P (type)
15749 : 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
15750 : 0 : || types_match (type, TREE_TYPE (captures[2]))
15751 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
15752 : : || (optimize_vectors_before_lowering_p ()
15753 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
15754 : : )
15755 : : {
15756 : 0 : gimple_seq *lseq = seq;
15757 : 0 : if (lseq
15758 : 0 : && (!single_use (captures[0])
15759 : 0 : || !single_use (captures[4])))
15760 : 0 : lseq = NULL;
15761 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2459;
15762 : 0 : {
15763 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
15764 : 0 : res_op->ops[0] = captures[1];
15765 : 0 : {
15766 : 0 : tree _o1[2], _r1;
15767 : 0 : _o1[0] = captures[2];
15768 : 0 : _o1[1] = captures[5];
15769 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o1[0], _o1[1]);
15770 : 0 : tem_op.resimplify (NULL, valueize);
15771 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15772 : 0 : if (!_r1) goto next_after_fail2459;
15773 : 0 : res_op->ops[1] = _r1;
15774 : : }
15775 : 0 : {
15776 : 0 : tree _o1[2], _r1;
15777 : 0 : _o1[0] = captures[3];
15778 : 0 : _o1[1] = captures[6];
15779 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o1[0], _o1[1]);
15780 : 0 : tem_op.resimplify (NULL, valueize);
15781 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15782 : 0 : if (!_r1) goto next_after_fail2459;
15783 : 0 : res_op->ops[2] = _r1;
15784 : : }
15785 : 0 : res_op->resimplify (lseq, valueize);
15786 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
15787 : 0 : return true;
15788 : : }
15789 : 0 : next_after_fail2459:;
15790 : : }
15791 : : }
15792 : : }
15793 : : break;
15794 : : }
15795 : : default:;
15796 : : }
15797 : : }
15798 : : break;
15799 : 103 : default:;
15800 : : }
15801 : 103 : {
15802 : 103 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
15803 : 103 : if (VECTOR_TYPE_P (type)
15804 : 103 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
15805 : 91 : || types_match (type, TREE_TYPE (captures[2]))
15806 : 91 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
15807 : : || (optimize_vectors_before_lowering_p ()
15808 : 20 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
15809 : : )
15810 : : {
15811 : 91 : gimple_seq *lseq = seq;
15812 : 91 : if (lseq
15813 : 26 : && (!single_use (captures[0])))
15814 : 65 : lseq = NULL;
15815 : 91 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2460;
15816 : 91 : {
15817 : 91 : res_op->set_op (VEC_COND_EXPR, type, 3);
15818 : 91 : res_op->ops[0] = captures[1];
15819 : 91 : {
15820 : 91 : tree _o1[2], _r1;
15821 : 91 : _o1[0] = captures[2];
15822 : 91 : _o1[1] = captures[4];
15823 : 91 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o1[0], _o1[1]);
15824 : 91 : tem_op.resimplify (NULL, valueize);
15825 : 91 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15826 : 91 : if (!_r1) goto next_after_fail2460;
15827 : 45 : res_op->ops[1] = _r1;
15828 : : }
15829 : 45 : {
15830 : 45 : tree _o1[2], _r1;
15831 : 45 : _o1[0] = captures[3];
15832 : 45 : _o1[1] = captures[4];
15833 : 45 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o1[0], _o1[1]);
15834 : 45 : tem_op.resimplify (NULL, valueize);
15835 : 45 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15836 : 45 : if (!_r1) goto next_after_fail2460;
15837 : 45 : res_op->ops[2] = _r1;
15838 : : }
15839 : 45 : res_op->resimplify (lseq, valueize);
15840 : 45 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
15841 : 45 : return true;
15842 : : }
15843 : 58 : next_after_fail2460:;
15844 : : }
15845 : : }
15846 : 58 : break;
15847 : : }
15848 : : default:;
15849 : : }
15850 : 13773450 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
15851 : 7754492 : switch (gimple_call_combined_fn (_c1))
15852 : : {
15853 : 1 : case CFN_BUILT_IN_BSWAP128:
15854 : 1 : if (gimple_call_num_args (_c1) == 1)
15855 : : {
15856 : 1 : tree _q20 = gimple_call_arg (_c1, 0);
15857 : 1 : _q20 = do_valueize (valueize, _q20);
15858 : 1 : switch (TREE_CODE (_p1))
15859 : : {
15860 : 1 : case SSA_NAME:
15861 : 1 : if (gimple *_d2 = get_def (valueize, _p1))
15862 : : {
15863 : 1 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15864 : 1 : switch (gimple_call_combined_fn (_c2))
15865 : : {
15866 : 0 : case CFN_BUILT_IN_BSWAP128:
15867 : 0 : if (gimple_call_num_args (_c2) == 1)
15868 : : {
15869 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
15870 : 0 : _q40 = do_valueize (valueize, _q40);
15871 : 0 : {
15872 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15873 : 0 : if (gimple_simplify_268 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128))
15874 : 0 : return true;
15875 : : }
15876 : : }
15877 : : break;
15878 : : default:;
15879 : : }
15880 : : }
15881 : : break;
15882 : 0 : case INTEGER_CST:
15883 : 0 : {
15884 : 0 : {
15885 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
15886 : 0 : if (gimple_simplify_269 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128))
15887 : 0 : return true;
15888 : : }
15889 : 0 : break;
15890 : : }
15891 : : default:;
15892 : : }
15893 : : }
15894 : : break;
15895 : 56 : case CFN_BUILT_IN_BSWAP16:
15896 : 56 : if (gimple_call_num_args (_c1) == 1)
15897 : : {
15898 : 56 : tree _q20 = gimple_call_arg (_c1, 0);
15899 : 56 : _q20 = do_valueize (valueize, _q20);
15900 : 56 : switch (TREE_CODE (_p1))
15901 : : {
15902 : 33 : case SSA_NAME:
15903 : 33 : if (gimple *_d2 = get_def (valueize, _p1))
15904 : : {
15905 : 33 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15906 : 1 : switch (gimple_call_combined_fn (_c2))
15907 : : {
15908 : 0 : case CFN_BUILT_IN_BSWAP16:
15909 : 0 : if (gimple_call_num_args (_c2) == 1)
15910 : : {
15911 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
15912 : 0 : _q40 = do_valueize (valueize, _q40);
15913 : 0 : {
15914 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15915 : 0 : if (gimple_simplify_268 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16))
15916 : 0 : return true;
15917 : : }
15918 : : }
15919 : : break;
15920 : : default:;
15921 : : }
15922 : : }
15923 : : break;
15924 : 23 : case INTEGER_CST:
15925 : 23 : {
15926 : 23 : {
15927 : 23 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
15928 : 23 : if (gimple_simplify_269 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16))
15929 : 23 : return true;
15930 : : }
15931 : 0 : break;
15932 : : }
15933 : : default:;
15934 : : }
15935 : : }
15936 : : break;
15937 : 99 : case CFN_BUILT_IN_BSWAP32:
15938 : 99 : if (gimple_call_num_args (_c1) == 1)
15939 : : {
15940 : 99 : tree _q20 = gimple_call_arg (_c1, 0);
15941 : 99 : _q20 = do_valueize (valueize, _q20);
15942 : 99 : switch (TREE_CODE (_p1))
15943 : : {
15944 : 81 : case SSA_NAME:
15945 : 81 : if (gimple *_d2 = get_def (valueize, _p1))
15946 : : {
15947 : 81 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15948 : 43 : switch (gimple_call_combined_fn (_c2))
15949 : : {
15950 : 0 : case CFN_BUILT_IN_BSWAP32:
15951 : 0 : if (gimple_call_num_args (_c2) == 1)
15952 : : {
15953 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
15954 : 0 : _q40 = do_valueize (valueize, _q40);
15955 : 0 : {
15956 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15957 : 0 : if (gimple_simplify_268 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32))
15958 : 0 : return true;
15959 : : }
15960 : : }
15961 : : break;
15962 : : default:;
15963 : : }
15964 : : }
15965 : : break;
15966 : 18 : case INTEGER_CST:
15967 : 18 : {
15968 : 18 : {
15969 : 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
15970 : 18 : if (gimple_simplify_269 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32))
15971 : 18 : return true;
15972 : : }
15973 : 0 : break;
15974 : : }
15975 : : default:;
15976 : : }
15977 : : }
15978 : : break;
15979 : 49 : case CFN_BUILT_IN_BSWAP64:
15980 : 49 : if (gimple_call_num_args (_c1) == 1)
15981 : : {
15982 : 49 : tree _q20 = gimple_call_arg (_c1, 0);
15983 : 49 : _q20 = do_valueize (valueize, _q20);
15984 : 49 : switch (TREE_CODE (_p1))
15985 : : {
15986 : 41 : case SSA_NAME:
15987 : 41 : if (gimple *_d2 = get_def (valueize, _p1))
15988 : : {
15989 : 41 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15990 : 1 : switch (gimple_call_combined_fn (_c2))
15991 : : {
15992 : 0 : case CFN_BUILT_IN_BSWAP64:
15993 : 0 : if (gimple_call_num_args (_c2) == 1)
15994 : : {
15995 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
15996 : 0 : _q40 = do_valueize (valueize, _q40);
15997 : 0 : {
15998 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15999 : 0 : if (gimple_simplify_268 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64))
16000 : 0 : return true;
16001 : : }
16002 : : }
16003 : : break;
16004 : : default:;
16005 : : }
16006 : : }
16007 : : break;
16008 : 8 : case INTEGER_CST:
16009 : 8 : {
16010 : 8 : {
16011 : 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
16012 : 8 : if (gimple_simplify_269 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64))
16013 : 8 : return true;
16014 : : }
16015 : 0 : break;
16016 : : }
16017 : : default:;
16018 : : }
16019 : : }
16020 : : break;
16021 : : default:;
16022 : : }
16023 : : }
16024 : : break;
16025 : 129456151 : default:;
16026 : : }
16027 : 129456151 : switch (TREE_CODE (_p1))
16028 : : {
16029 : 22808947 : case SSA_NAME:
16030 : 22808947 : if (gimple *_d1 = get_def (valueize, _p1))
16031 : : {
16032 : 7127712 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16033 : 10082967 : switch (gimple_assign_rhs_code (_a1))
16034 : : {
16035 : 468 : case VEC_COND_EXPR:
16036 : 468 : {
16037 : 468 : tree _q30 = gimple_assign_rhs1 (_a1);
16038 : 468 : _q30 = do_valueize (valueize, _q30);
16039 : 468 : tree _q31 = gimple_assign_rhs2 (_a1);
16040 : 468 : _q31 = do_valueize (valueize, _q31);
16041 : 468 : tree _q32 = gimple_assign_rhs3 (_a1);
16042 : 468 : _q32 = do_valueize (valueize, _q32);
16043 : 468 : {
16044 : 468 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
16045 : 468 : if (VECTOR_TYPE_P (type)
16046 : 468 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
16047 : 468 : || types_match (type, TREE_TYPE (captures[3]))
16048 : 468 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
16049 : : || (optimize_vectors_before_lowering_p ()
16050 : 42 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
16051 : : )
16052 : : {
16053 : 468 : gimple_seq *lseq = seq;
16054 : 468 : if (lseq
16055 : 254 : && (!single_use (captures[1])))
16056 : 226 : lseq = NULL;
16057 : 468 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2461;
16058 : 468 : {
16059 : 468 : res_op->set_op (VEC_COND_EXPR, type, 3);
16060 : 468 : res_op->ops[0] = captures[2];
16061 : 468 : {
16062 : 468 : tree _o1[2], _r1;
16063 : 468 : _o1[0] = captures[0];
16064 : 468 : _o1[1] = captures[3];
16065 : 468 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o1[0], _o1[1]);
16066 : 468 : tem_op.resimplify (NULL, valueize);
16067 : 468 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16068 : 468 : if (!_r1) goto next_after_fail2461;
16069 : 40 : res_op->ops[1] = _r1;
16070 : : }
16071 : 40 : {
16072 : 40 : tree _o1[2], _r1;
16073 : 40 : _o1[0] = captures[0];
16074 : 40 : _o1[1] = captures[4];
16075 : 40 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o1[0], _o1[1]);
16076 : 40 : tem_op.resimplify (NULL, valueize);
16077 : 40 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16078 : 40 : if (!_r1) goto next_after_fail2461;
16079 : 0 : res_op->ops[2] = _r1;
16080 : : }
16081 : 0 : res_op->resimplify (lseq, valueize);
16082 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
16083 : 0 : return true;
16084 : : }
16085 : 468 : next_after_fail2461:;
16086 : : }
16087 : : }
16088 : 468 : break;
16089 : : }
16090 : : default:;
16091 : : }
16092 : : }
16093 : : break;
16094 : 129456151 : default:;
16095 : : }
16096 : 129456151 : switch (TREE_CODE (_p0))
16097 : : {
16098 : 126715573 : case SSA_NAME:
16099 : 126715573 : if (gimple *_d1 = get_def (valueize, _p0))
16100 : : {
16101 : 42798791 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16102 : 46931221 : switch (gimple_assign_rhs_code (_a1))
16103 : : {
16104 : 10463 : case COND_EXPR:
16105 : 10463 : {
16106 : 10463 : tree _q20 = gimple_assign_rhs1 (_a1);
16107 : 10463 : _q20 = do_valueize (valueize, _q20);
16108 : 10463 : tree _q21 = gimple_assign_rhs2 (_a1);
16109 : 10463 : _q21 = do_valueize (valueize, _q21);
16110 : 10463 : tree _q22 = gimple_assign_rhs3 (_a1);
16111 : 10463 : _q22 = do_valueize (valueize, _q22);
16112 : 10463 : switch (TREE_CODE (_p1))
16113 : : {
16114 : 1510 : case SSA_NAME:
16115 : 1510 : if (gimple *_d2 = get_def (valueize, _p1))
16116 : : {
16117 : 1449 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16118 : 2181 : switch (gimple_assign_rhs_code (_a2))
16119 : : {
16120 : 101 : case COND_EXPR:
16121 : 101 : {
16122 : 101 : tree _q60 = gimple_assign_rhs1 (_a2);
16123 : 101 : _q60 = do_valueize (valueize, _q60);
16124 : 101 : tree _q61 = gimple_assign_rhs2 (_a2);
16125 : 101 : _q61 = do_valueize (valueize, _q61);
16126 : 101 : tree _q62 = gimple_assign_rhs3 (_a2);
16127 : 101 : _q62 = do_valueize (valueize, _q62);
16128 : 101 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
16129 : : {
16130 : 71 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
16131 : : {
16132 : 71 : {
16133 : 71 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
16134 : 71 : const enum tree_code eqne = NE_EXPR;
16135 : 71 : if (!HONOR_NANS (captures[1])
16136 : 3 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
16137 : 74 : && types_match (type, TREE_TYPE (captures[0]))
16138 : : )
16139 : : {
16140 : 3 : gimple_seq *lseq = seq;
16141 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2462;
16142 : 3 : {
16143 : 3 : res_op->set_op (COND_EXPR, type, 3);
16144 : 3 : {
16145 : 3 : tree _o1[2], _r1;
16146 : 3 : {
16147 : 3 : tree _o2[2], _r2;
16148 : 3 : _o2[0] = captures[0];
16149 : 3 : if (COMPARISON_CLASS_P (_o2[0]))
16150 : : {
16151 : 0 : if (!seq) return false;
16152 : 0 : _o2[0] = gimple_build (seq, TREE_CODE (_o2[0]), TREE_TYPE (_o2[0]), TREE_OPERAND (_o2[0], 0), TREE_OPERAND (_o2[0], 1));
16153 : : }
16154 : 3 : _o2[1] = captures[3];
16155 : 3 : if (COMPARISON_CLASS_P (_o2[1]))
16156 : : {
16157 : 0 : if (!seq) return false;
16158 : 0 : _o2[1] = gimple_build (seq, TREE_CODE (_o2[1]), TREE_TYPE (_o2[1]), TREE_OPERAND (_o2[1], 0), TREE_OPERAND (_o2[1], 1));
16159 : : }
16160 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16161 : 3 : tem_op.resimplify (lseq, valueize);
16162 : 3 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16163 : 3 : if (!_r2) goto next_after_fail2462;
16164 : 2 : _o1[0] = _r2;
16165 : : }
16166 : 2 : {
16167 : 2 : tree _o2[2], _r2;
16168 : 2 : _o2[0] = captures[1];
16169 : 2 : _o2[1] = captures[2];
16170 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o2[0], _o2[1]);
16171 : 2 : tem_op.resimplify (lseq, valueize);
16172 : 2 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16173 : 2 : if (!_r2) goto next_after_fail2462;
16174 : 2 : _o1[1] = _r2;
16175 : : }
16176 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16177 : 2 : tem_op.resimplify (lseq, valueize);
16178 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16179 : 2 : if (!_r1) goto next_after_fail2462;
16180 : 2 : res_op->ops[0] = _r1;
16181 : : }
16182 : 2 : res_op->ops[1] = constant_boolean_node (eqne == NE_EXPR, type);
16183 : 2 : res_op->ops[2] = constant_boolean_node (eqne != NE_EXPR, type);
16184 : 2 : res_op->resimplify (lseq, valueize);
16185 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1149, __FILE__, __LINE__, true);
16186 : 2 : return true;
16187 : : }
16188 : 69 : next_after_fail2462:;
16189 : : }
16190 : : }
16191 : : }
16192 : : }
16193 : 99 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
16194 : : {
16195 : 2 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
16196 : : {
16197 : 2 : {
16198 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
16199 : 2 : const enum tree_code eqne = NE_EXPR;
16200 : 2 : if (!HONOR_NANS (captures[1])
16201 : 2 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
16202 : 4 : && types_match (type, TREE_TYPE (captures[0]))
16203 : : )
16204 : : {
16205 : 2 : gimple_seq *lseq = seq;
16206 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2463;
16207 : 2 : {
16208 : 2 : res_op->set_op (COND_EXPR, type, 3);
16209 : 2 : {
16210 : 2 : tree _o1[2], _r1;
16211 : 2 : {
16212 : 2 : tree _o2[2], _r2;
16213 : 2 : _o2[0] = captures[0];
16214 : 2 : if (COMPARISON_CLASS_P (_o2[0]))
16215 : : {
16216 : 0 : if (!seq) return false;
16217 : 0 : _o2[0] = gimple_build (seq, TREE_CODE (_o2[0]), TREE_TYPE (_o2[0]), TREE_OPERAND (_o2[0], 0), TREE_OPERAND (_o2[0], 1));
16218 : : }
16219 : 2 : _o2[1] = captures[3];
16220 : 2 : if (COMPARISON_CLASS_P (_o2[1]))
16221 : : {
16222 : 0 : if (!seq) return false;
16223 : 0 : _o2[1] = gimple_build (seq, TREE_CODE (_o2[1]), TREE_TYPE (_o2[1]), TREE_OPERAND (_o2[1], 0), TREE_OPERAND (_o2[1], 1));
16224 : : }
16225 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16226 : 2 : tem_op.resimplify (lseq, valueize);
16227 : 2 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16228 : 2 : if (!_r2) goto next_after_fail2463;
16229 : 1 : _o1[0] = _r2;
16230 : : }
16231 : 1 : {
16232 : 1 : tree _o2[2], _r2;
16233 : 1 : _o2[0] = captures[1];
16234 : 1 : _o2[1] = captures[2];
16235 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o2[0], _o2[1]);
16236 : 1 : tem_op.resimplify (lseq, valueize);
16237 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16238 : 1 : if (!_r2) goto next_after_fail2463;
16239 : 1 : _o1[1] = _r2;
16240 : : }
16241 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16242 : 1 : tem_op.resimplify (lseq, valueize);
16243 : 1 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16244 : 1 : if (!_r1) goto next_after_fail2463;
16245 : 1 : res_op->ops[0] = _r1;
16246 : : }
16247 : 1 : res_op->ops[1] = constant_boolean_node (eqne != NE_EXPR, type);
16248 : 1 : res_op->ops[2] = constant_boolean_node (eqne == NE_EXPR, type);
16249 : 1 : res_op->resimplify (lseq, valueize);
16250 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1150, __FILE__, __LINE__, true);
16251 : 1 : return true;
16252 : : }
16253 : 1 : next_after_fail2463:;
16254 : : }
16255 : : }
16256 : : }
16257 : : }
16258 : : break;
16259 : : }
16260 : : default:;
16261 : : }
16262 : : }
16263 : : break;
16264 : : default:;
16265 : : }
16266 : : break;
16267 : : }
16268 : 58 : case VEC_COND_EXPR:
16269 : 58 : {
16270 : 58 : tree _q20 = gimple_assign_rhs1 (_a1);
16271 : 58 : _q20 = do_valueize (valueize, _q20);
16272 : 58 : tree _q21 = gimple_assign_rhs2 (_a1);
16273 : 58 : _q21 = do_valueize (valueize, _q21);
16274 : 58 : tree _q22 = gimple_assign_rhs3 (_a1);
16275 : 58 : _q22 = do_valueize (valueize, _q22);
16276 : 58 : switch (TREE_CODE (_p1))
16277 : : {
16278 : 46 : case SSA_NAME:
16279 : 46 : if (gimple *_d2 = get_def (valueize, _p1))
16280 : : {
16281 : 46 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16282 : 64 : switch (gimple_assign_rhs_code (_a2))
16283 : : {
16284 : 28 : case VEC_COND_EXPR:
16285 : 28 : {
16286 : 28 : tree _q60 = gimple_assign_rhs1 (_a2);
16287 : 28 : _q60 = do_valueize (valueize, _q60);
16288 : 28 : tree _q61 = gimple_assign_rhs2 (_a2);
16289 : 28 : _q61 = do_valueize (valueize, _q61);
16290 : 28 : tree _q62 = gimple_assign_rhs3 (_a2);
16291 : 28 : _q62 = do_valueize (valueize, _q62);
16292 : 28 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
16293 : : {
16294 : 22 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
16295 : : {
16296 : 22 : {
16297 : 22 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
16298 : 22 : const enum tree_code eqne = NE_EXPR;
16299 : 22 : if (!HONOR_NANS (captures[1])
16300 : 22 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
16301 : 44 : && types_match (type, TREE_TYPE (captures[0]))
16302 : : )
16303 : : {
16304 : 22 : gimple_seq *lseq = seq;
16305 : 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2464;
16306 : 22 : {
16307 : 22 : res_op->set_op (VEC_COND_EXPR, type, 3);
16308 : 22 : {
16309 : 22 : tree _o1[2], _r1;
16310 : 22 : {
16311 : 22 : tree _o2[2], _r2;
16312 : 22 : _o2[0] = captures[0];
16313 : 22 : _o2[1] = captures[3];
16314 : 22 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16315 : 22 : tem_op.resimplify (lseq, valueize);
16316 : 22 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16317 : 22 : if (!_r2) goto next_after_fail2464;
16318 : 11 : _o1[0] = _r2;
16319 : : }
16320 : 11 : {
16321 : 11 : tree _o2[2], _r2;
16322 : 11 : _o2[0] = captures[1];
16323 : 11 : _o2[1] = captures[2];
16324 : 11 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o2[0], _o2[1]);
16325 : 11 : tem_op.resimplify (lseq, valueize);
16326 : 11 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16327 : 11 : if (!_r2) goto next_after_fail2464;
16328 : 11 : _o1[1] = _r2;
16329 : : }
16330 : 11 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16331 : 11 : tem_op.resimplify (lseq, valueize);
16332 : 11 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16333 : 11 : if (!_r1) goto next_after_fail2464;
16334 : 11 : res_op->ops[0] = _r1;
16335 : : }
16336 : 11 : res_op->ops[1] = constant_boolean_node (eqne == NE_EXPR, type);
16337 : 11 : res_op->ops[2] = constant_boolean_node (eqne != NE_EXPR, type);
16338 : 11 : res_op->resimplify (lseq, valueize);
16339 : 11 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1149, __FILE__, __LINE__, true);
16340 : 11 : return true;
16341 : : }
16342 : 11 : next_after_fail2464:;
16343 : : }
16344 : : }
16345 : : }
16346 : : }
16347 : 17 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
16348 : : {
16349 : 6 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
16350 : : {
16351 : 6 : {
16352 : 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
16353 : 6 : const enum tree_code eqne = NE_EXPR;
16354 : 6 : if (!HONOR_NANS (captures[1])
16355 : 6 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
16356 : 12 : && types_match (type, TREE_TYPE (captures[0]))
16357 : : )
16358 : : {
16359 : 6 : gimple_seq *lseq = seq;
16360 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2465;
16361 : 6 : {
16362 : 6 : res_op->set_op (VEC_COND_EXPR, type, 3);
16363 : 6 : {
16364 : 6 : tree _o1[2], _r1;
16365 : 6 : {
16366 : 6 : tree _o2[2], _r2;
16367 : 6 : _o2[0] = captures[0];
16368 : 6 : _o2[1] = captures[3];
16369 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16370 : 6 : tem_op.resimplify (lseq, valueize);
16371 : 6 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16372 : 6 : if (!_r2) goto next_after_fail2465;
16373 : 3 : _o1[0] = _r2;
16374 : : }
16375 : 3 : {
16376 : 3 : tree _o2[2], _r2;
16377 : 3 : _o2[0] = captures[1];
16378 : 3 : _o2[1] = captures[2];
16379 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o2[0], _o2[1]);
16380 : 3 : tem_op.resimplify (lseq, valueize);
16381 : 3 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16382 : 3 : if (!_r2) goto next_after_fail2465;
16383 : 3 : _o1[1] = _r2;
16384 : : }
16385 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16386 : 3 : tem_op.resimplify (lseq, valueize);
16387 : 3 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16388 : 3 : if (!_r1) goto next_after_fail2465;
16389 : 3 : res_op->ops[0] = _r1;
16390 : : }
16391 : 3 : res_op->ops[1] = constant_boolean_node (eqne != NE_EXPR, type);
16392 : 3 : res_op->ops[2] = constant_boolean_node (eqne == NE_EXPR, type);
16393 : 3 : res_op->resimplify (lseq, valueize);
16394 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1150, __FILE__, __LINE__, true);
16395 : 3 : return true;
16396 : : }
16397 : 3 : next_after_fail2465:;
16398 : : }
16399 : : }
16400 : : }
16401 : : }
16402 : : break;
16403 : : }
16404 : : default:;
16405 : : }
16406 : : }
16407 : : break;
16408 : : default:;
16409 : : }
16410 : : break;
16411 : : }
16412 : 222724 : case LT_EXPR:
16413 : 222724 : {
16414 : 222724 : tree _q20 = gimple_assign_rhs1 (_a1);
16415 : 222724 : _q20 = do_valueize (valueize, _q20);
16416 : 222724 : tree _q21 = gimple_assign_rhs2 (_a1);
16417 : 222724 : _q21 = do_valueize (valueize, _q21);
16418 : 222724 : if (integer_zerop (_p1))
16419 : : {
16420 : 213215 : {
16421 : 213215 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16422 : 213215 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR))
16423 : 175125 : return true;
16424 : : }
16425 : : }
16426 : 47599 : if (integer_truep (_p1))
16427 : : {
16428 : 8265 : {
16429 : 8265 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16430 : 8265 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR))
16431 : 6936 : return true;
16432 : : }
16433 : : }
16434 : : break;
16435 : : }
16436 : 106974 : case LE_EXPR:
16437 : 106974 : {
16438 : 106974 : tree _q20 = gimple_assign_rhs1 (_a1);
16439 : 106974 : _q20 = do_valueize (valueize, _q20);
16440 : 106974 : tree _q21 = gimple_assign_rhs2 (_a1);
16441 : 106974 : _q21 = do_valueize (valueize, _q21);
16442 : 106974 : if (integer_zerop (_p1))
16443 : : {
16444 : 96197 : {
16445 : 96197 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16446 : 96197 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR))
16447 : 81312 : return true;
16448 : : }
16449 : : }
16450 : 25662 : if (integer_truep (_p1))
16451 : : {
16452 : 8277 : {
16453 : 8277 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16454 : 8277 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR))
16455 : 7488 : return true;
16456 : : }
16457 : : }
16458 : : break;
16459 : : }
16460 : 527761 : case EQ_EXPR:
16461 : 527761 : {
16462 : 527761 : tree _q20 = gimple_assign_rhs1 (_a1);
16463 : 527761 : _q20 = do_valueize (valueize, _q20);
16464 : 527761 : tree _q21 = gimple_assign_rhs2 (_a1);
16465 : 527761 : _q21 = do_valueize (valueize, _q21);
16466 : 527761 : if (tree_swap_operands_p (_q20, _q21))
16467 : 10010 : std::swap (_q20, _q21);
16468 : 527761 : if (integer_zerop (_p1))
16469 : : {
16470 : 464187 : {
16471 : 464187 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16472 : 464187 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR))
16473 : 393518 : return true;
16474 : : }
16475 : : }
16476 : 134243 : if (integer_truep (_p1))
16477 : : {
16478 : 56498 : {
16479 : 56498 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16480 : 56498 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR))
16481 : 56311 : return true;
16482 : : }
16483 : : }
16484 : 128016499 : break;
16485 : : }
16486 : 484707 : case NE_EXPR:
16487 : 484707 : {
16488 : 484707 : tree _q20 = gimple_assign_rhs1 (_a1);
16489 : 484707 : _q20 = do_valueize (valueize, _q20);
16490 : 484707 : tree _q21 = gimple_assign_rhs2 (_a1);
16491 : 484707 : _q21 = do_valueize (valueize, _q21);
16492 : 484707 : if (tree_swap_operands_p (_q20, _q21))
16493 : 6278 : std::swap (_q20, _q21);
16494 : 484707 : if (integer_zerop (_p1))
16495 : : {
16496 : 442118 : {
16497 : 442118 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16498 : 442118 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR))
16499 : 364872 : return true;
16500 : : }
16501 : : }
16502 : 119835 : if (integer_truep (_p1))
16503 : : {
16504 : 19308 : {
16505 : 19308 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16506 : 19308 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR))
16507 : 18659 : return true;
16508 : : }
16509 : : }
16510 : 128016499 : break;
16511 : : }
16512 : 124465 : case GE_EXPR:
16513 : 124465 : {
16514 : 124465 : tree _q20 = gimple_assign_rhs1 (_a1);
16515 : 124465 : _q20 = do_valueize (valueize, _q20);
16516 : 124465 : tree _q21 = gimple_assign_rhs2 (_a1);
16517 : 124465 : _q21 = do_valueize (valueize, _q21);
16518 : 124465 : if (integer_zerop (_p1))
16519 : : {
16520 : 117941 : {
16521 : 117941 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16522 : 117941 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR))
16523 : 111588 : return true;
16524 : : }
16525 : : }
16526 : 12877 : if (integer_truep (_p1))
16527 : : {
16528 : 4221 : {
16529 : 4221 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16530 : 4221 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR))
16531 : 3189 : return true;
16532 : : }
16533 : : }
16534 : : break;
16535 : : }
16536 : 251477 : case GT_EXPR:
16537 : 251477 : {
16538 : 251477 : tree _q20 = gimple_assign_rhs1 (_a1);
16539 : 251477 : _q20 = do_valueize (valueize, _q20);
16540 : 251477 : tree _q21 = gimple_assign_rhs2 (_a1);
16541 : 251477 : _q21 = do_valueize (valueize, _q21);
16542 : 251477 : if (integer_zerop (_p1))
16543 : : {
16544 : 244507 : {
16545 : 244507 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16546 : 244507 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR))
16547 : 171257 : return true;
16548 : : }
16549 : : }
16550 : 80220 : if (integer_truep (_p1))
16551 : : {
16552 : 5477 : {
16553 : 5477 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16554 : 5477 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR))
16555 : 4560 : return true;
16556 : : }
16557 : : }
16558 : : break;
16559 : : }
16560 : 9320 : case UNORDERED_EXPR:
16561 : 9320 : {
16562 : 9320 : tree _q20 = gimple_assign_rhs1 (_a1);
16563 : 9320 : _q20 = do_valueize (valueize, _q20);
16564 : 9320 : tree _q21 = gimple_assign_rhs2 (_a1);
16565 : 9320 : _q21 = do_valueize (valueize, _q21);
16566 : 9320 : if (tree_swap_operands_p (_q20, _q21))
16567 : 6 : std::swap (_q20, _q21);
16568 : 9320 : if (integer_zerop (_p1))
16569 : : {
16570 : 6074 : {
16571 : 6074 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16572 : 6074 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR))
16573 : 6074 : return true;
16574 : : }
16575 : : }
16576 : 3246 : if (integer_truep (_p1))
16577 : : {
16578 : 47 : {
16579 : 47 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16580 : 47 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR))
16581 : 47 : return true;
16582 : : }
16583 : : }
16584 : 128016499 : break;
16585 : : }
16586 : 141 : case ORDERED_EXPR:
16587 : 141 : {
16588 : 141 : tree _q20 = gimple_assign_rhs1 (_a1);
16589 : 141 : _q20 = do_valueize (valueize, _q20);
16590 : 141 : tree _q21 = gimple_assign_rhs2 (_a1);
16591 : 141 : _q21 = do_valueize (valueize, _q21);
16592 : 141 : if (tree_swap_operands_p (_q20, _q21))
16593 : 0 : std::swap (_q20, _q21);
16594 : 141 : if (integer_zerop (_p1))
16595 : : {
16596 : 91 : {
16597 : 91 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16598 : 91 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR))
16599 : 91 : return true;
16600 : : }
16601 : : }
16602 : 50 : if (integer_truep (_p1))
16603 : : {
16604 : 0 : {
16605 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16606 : 0 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR))
16607 : 0 : return true;
16608 : : }
16609 : : }
16610 : 128016499 : break;
16611 : : }
16612 : 1930 : case UNLT_EXPR:
16613 : 1930 : {
16614 : 1930 : tree _q20 = gimple_assign_rhs1 (_a1);
16615 : 1930 : _q20 = do_valueize (valueize, _q20);
16616 : 1930 : tree _q21 = gimple_assign_rhs2 (_a1);
16617 : 1930 : _q21 = do_valueize (valueize, _q21);
16618 : 1930 : if (integer_zerop (_p1))
16619 : : {
16620 : 1076 : {
16621 : 1076 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16622 : 1076 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR))
16623 : 1076 : return true;
16624 : : }
16625 : : }
16626 : 854 : if (integer_truep (_p1))
16627 : : {
16628 : 854 : {
16629 : 854 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16630 : 854 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR))
16631 : 0 : return true;
16632 : : }
16633 : : }
16634 : : break;
16635 : : }
16636 : 6967 : case UNLE_EXPR:
16637 : 6967 : {
16638 : 6967 : tree _q20 = gimple_assign_rhs1 (_a1);
16639 : 6967 : _q20 = do_valueize (valueize, _q20);
16640 : 6967 : tree _q21 = gimple_assign_rhs2 (_a1);
16641 : 6967 : _q21 = do_valueize (valueize, _q21);
16642 : 6967 : if (integer_zerop (_p1))
16643 : : {
16644 : 2676 : {
16645 : 2676 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16646 : 2676 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR))
16647 : 2676 : return true;
16648 : : }
16649 : : }
16650 : 4291 : if (integer_truep (_p1))
16651 : : {
16652 : 4291 : {
16653 : 4291 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16654 : 4291 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR))
16655 : 3 : return true;
16656 : : }
16657 : : }
16658 : : break;
16659 : : }
16660 : 16057 : case UNGT_EXPR:
16661 : 16057 : {
16662 : 16057 : tree _q20 = gimple_assign_rhs1 (_a1);
16663 : 16057 : _q20 = do_valueize (valueize, _q20);
16664 : 16057 : tree _q21 = gimple_assign_rhs2 (_a1);
16665 : 16057 : _q21 = do_valueize (valueize, _q21);
16666 : 16057 : if (integer_zerop (_p1))
16667 : : {
16668 : 4770 : {
16669 : 4770 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16670 : 4770 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR))
16671 : 4770 : return true;
16672 : : }
16673 : : }
16674 : 11287 : if (integer_truep (_p1))
16675 : : {
16676 : 11127 : {
16677 : 11127 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16678 : 11127 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR))
16679 : 3 : return true;
16680 : : }
16681 : : }
16682 : : break;
16683 : : }
16684 : 4225 : case UNGE_EXPR:
16685 : 4225 : {
16686 : 4225 : tree _q20 = gimple_assign_rhs1 (_a1);
16687 : 4225 : _q20 = do_valueize (valueize, _q20);
16688 : 4225 : tree _q21 = gimple_assign_rhs2 (_a1);
16689 : 4225 : _q21 = do_valueize (valueize, _q21);
16690 : 4225 : if (integer_zerop (_p1))
16691 : : {
16692 : 2963 : {
16693 : 2963 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16694 : 2963 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR))
16695 : 2963 : return true;
16696 : : }
16697 : : }
16698 : 1262 : if (integer_truep (_p1))
16699 : : {
16700 : 1010 : {
16701 : 1010 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16702 : 1010 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR))
16703 : 3 : return true;
16704 : : }
16705 : : }
16706 : : break;
16707 : : }
16708 : 810 : case UNEQ_EXPR:
16709 : 810 : {
16710 : 810 : tree _q20 = gimple_assign_rhs1 (_a1);
16711 : 810 : _q20 = do_valueize (valueize, _q20);
16712 : 810 : tree _q21 = gimple_assign_rhs2 (_a1);
16713 : 810 : _q21 = do_valueize (valueize, _q21);
16714 : 810 : if (tree_swap_operands_p (_q20, _q21))
16715 : 6 : std::swap (_q20, _q21);
16716 : 810 : if (integer_zerop (_p1))
16717 : : {
16718 : 372 : {
16719 : 372 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16720 : 372 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR))
16721 : 372 : return true;
16722 : : }
16723 : : }
16724 : 438 : if (integer_truep (_p1))
16725 : : {
16726 : 438 : {
16727 : 438 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16728 : 438 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR))
16729 : 0 : return true;
16730 : : }
16731 : : }
16732 : 128016499 : break;
16733 : : }
16734 : 3 : case LTGT_EXPR:
16735 : 3 : {
16736 : 3 : tree _q20 = gimple_assign_rhs1 (_a1);
16737 : 3 : _q20 = do_valueize (valueize, _q20);
16738 : 3 : tree _q21 = gimple_assign_rhs2 (_a1);
16739 : 3 : _q21 = do_valueize (valueize, _q21);
16740 : 3 : if (tree_swap_operands_p (_q20, _q21))
16741 : 0 : std::swap (_q20, _q21);
16742 : 3 : if (integer_zerop (_p1))
16743 : : {
16744 : 0 : {
16745 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16746 : 0 : if (gimple_simplify_326 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR))
16747 : 0 : return true;
16748 : : }
16749 : : }
16750 : 3 : if (integer_truep (_p1))
16751 : : {
16752 : 3 : {
16753 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16754 : 3 : if (gimple_simplify_327 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR))
16755 : 3 : return true;
16756 : : }
16757 : : }
16758 : 128016499 : break;
16759 : : }
16760 : 212136 : case MINUS_EXPR:
16761 : 212136 : {
16762 : 212136 : tree _q20 = gimple_assign_rhs1 (_a1);
16763 : 212136 : _q20 = do_valueize (valueize, _q20);
16764 : 212136 : tree _q21 = gimple_assign_rhs2 (_a1);
16765 : 212136 : _q21 = do_valueize (valueize, _q21);
16766 : 212136 : if (integer_zerop (_p1))
16767 : : {
16768 : 112317 : {
16769 : 112317 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16770 : 112317 : if (gimple_simplify_272 (res_op, seq, valueize, type, captures, NE_EXPR))
16771 : 12718 : return true;
16772 : : }
16773 : : }
16774 : : break;
16775 : : }
16776 : 99448 : case POINTER_DIFF_EXPR:
16777 : 99448 : {
16778 : 99448 : tree _q20 = gimple_assign_rhs1 (_a1);
16779 : 99448 : _q20 = do_valueize (valueize, _q20);
16780 : 99448 : tree _q21 = gimple_assign_rhs2 (_a1);
16781 : 99448 : _q21 = do_valueize (valueize, _q21);
16782 : 99448 : if (integer_zerop (_p1))
16783 : : {
16784 : 70117 : {
16785 : 70117 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16786 : 70117 : if (gimple_simplify_273 (res_op, seq, valueize, type, captures, NE_EXPR))
16787 : 11524 : return true;
16788 : : }
16789 : : }
16790 : : break;
16791 : : }
16792 : 101016 : case MULT_EXPR:
16793 : 101016 : {
16794 : 101016 : tree _q20 = gimple_assign_rhs1 (_a1);
16795 : 101016 : _q20 = do_valueize (valueize, _q20);
16796 : 101016 : tree _q21 = gimple_assign_rhs2 (_a1);
16797 : 101016 : _q21 = do_valueize (valueize, _q21);
16798 : 101016 : if (tree_swap_operands_p (_q20, _q21))
16799 : 1307 : std::swap (_q20, _q21);
16800 : 101016 : switch (TREE_CODE (_q21))
16801 : : {
16802 : 70850 : case INTEGER_CST:
16803 : 70850 : {
16804 : 70850 : switch (TREE_CODE (_p1))
16805 : : {
16806 : 39809 : case INTEGER_CST:
16807 : 39809 : {
16808 : 39809 : {
16809 : 39809 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16810 : 39809 : if (gimple_simplify_275 (res_op, seq, valueize, type, captures, NE_EXPR))
16811 : 2497 : return true;
16812 : : }
16813 : 37312 : break;
16814 : : }
16815 : 68353 : default:;
16816 : : }
16817 : 68353 : if (integer_zerop (_p1))
16818 : : {
16819 : 19272 : {
16820 : 19272 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
16821 : 19272 : if (gimple_simplify_274 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
16822 : 0 : return true;
16823 : : }
16824 : : }
16825 : : break;
16826 : : }
16827 : : default:;
16828 : : }
16829 : 128016499 : break;
16830 : : }
16831 : : default:;
16832 : : }
16833 : : }
16834 : : break;
16835 : 128016499 : default:;
16836 : : }
16837 : 128016499 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
16838 : : {
16839 : 95807 : {
16840 : 95807 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
16841 : 95807 : if (gimple_simplify_328 (res_op, seq, valueize, type, captures, NE_EXPR))
16842 : 27995 : return true;
16843 : : }
16844 : : }
16845 : 127988504 : switch (TREE_CODE (_p0))
16846 : : {
16847 : 125255650 : case SSA_NAME:
16848 : 125255650 : if (gimple *_d1 = get_def (valueize, _p0))
16849 : : {
16850 : 41343083 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16851 : 45477888 : switch (gimple_assign_rhs_code (_a1))
16852 : : {
16853 : 2409423 : CASE_CONVERT:
16854 : 2409423 : {
16855 : 2409423 : tree _q20 = gimple_assign_rhs1 (_a1);
16856 : 2409423 : _q20 = do_valueize (valueize, _q20);
16857 : 2409423 : switch (TREE_CODE (_p1))
16858 : : {
16859 : 589667 : case SSA_NAME:
16860 : 589667 : if (gimple *_d2 = get_def (valueize, _p1))
16861 : : {
16862 : 534137 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16863 : 636985 : switch (gimple_assign_rhs_code (_a2))
16864 : : {
16865 : 87375 : CASE_CONVERT:
16866 : 87375 : {
16867 : 87375 : tree _q40 = gimple_assign_rhs1 (_a2);
16868 : 87375 : _q40 = do_valueize (valueize, _q40);
16869 : 87375 : {
16870 : 87375 : tree _q40_pops[1];
16871 : 87375 : if (gimple_maybe_bit_not (_q40, _q40_pops, valueize))
16872 : : {
16873 : 1803 : tree _q50 = _q40_pops[0];
16874 : 1803 : {
16875 : 1803 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
16876 : 1803 : if (gimple_simplify_277 (res_op, seq, valueize, type, captures, NE_EXPR))
16877 : 0 : return true;
16878 : : }
16879 : : }
16880 : : }
16881 : 87375 : break;
16882 : : }
16883 : : default:;
16884 : : }
16885 : : }
16886 : : break;
16887 : 2409423 : default:;
16888 : : }
16889 : 2409423 : {
16890 : 2409423 : tree _q20_pops[1];
16891 : 2409423 : if (gimple_maybe_bit_not (_q20, _q20_pops, valueize))
16892 : : {
16893 : 226965 : tree _q30 = _q20_pops[0];
16894 : 226965 : switch (TREE_CODE (_p1))
16895 : : {
16896 : 40030 : case SSA_NAME:
16897 : 40030 : if (gimple *_d2 = get_def (valueize, _p1))
16898 : : {
16899 : 39035 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16900 : 49192 : switch (gimple_assign_rhs_code (_a2))
16901 : : {
16902 : 3489 : CASE_CONVERT:
16903 : 3489 : {
16904 : 3489 : tree _q50 = gimple_assign_rhs1 (_a2);
16905 : 3489 : _q50 = do_valueize (valueize, _q50);
16906 : 3489 : {
16907 : 3489 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
16908 : 3489 : if (gimple_simplify_277 (res_op, seq, valueize, type, captures, NE_EXPR))
16909 : 0 : return true;
16910 : : }
16911 : 3489 : break;
16912 : : }
16913 : : default:;
16914 : : }
16915 : : }
16916 : : break;
16917 : : default:;
16918 : : }
16919 : : }
16920 : : }
16921 : 2409423 : break;
16922 : : }
16923 : : default:;
16924 : : }
16925 : : }
16926 : : break;
16927 : 127988504 : default:;
16928 : : }
16929 : 127988504 : {
16930 : 127988504 : tree _p1_pops[1];
16931 : 127988504 : if (gimple_maybe_bit_not (_p1, _p1_pops, valueize))
16932 : : {
16933 : 98251867 : tree _q30 = _p1_pops[0];
16934 : 98251867 : {
16935 : 98251867 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
16936 : 98251867 : if (gimple_simplify_277 (res_op, seq, valueize, type, captures, NE_EXPR))
16937 : 28 : return true;
16938 : : }
16939 : : }
16940 : : }
16941 : 127988476 : switch (TREE_CODE (_p0))
16942 : : {
16943 : 125255622 : case SSA_NAME:
16944 : 125255622 : if (gimple *_d1 = get_def (valueize, _p0))
16945 : : {
16946 : 41343055 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16947 : 45477860 : switch (gimple_assign_rhs_code (_a1))
16948 : : {
16949 : 466873 : case BIT_NOT_EXPR:
16950 : 466873 : {
16951 : 466873 : tree _q20 = gimple_assign_rhs1 (_a1);
16952 : 466873 : _q20 = do_valueize (valueize, _q20);
16953 : 466873 : switch (TREE_CODE (_p1))
16954 : : {
16955 : 2322 : case SSA_NAME:
16956 : 2322 : if (gimple *_d2 = get_def (valueize, _p1))
16957 : : {
16958 : 2219 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16959 : 1065 : switch (gimple_assign_rhs_code (_a2))
16960 : : {
16961 : 640 : case BIT_NOT_EXPR:
16962 : 640 : {
16963 : 640 : tree _q40 = gimple_assign_rhs1 (_a2);
16964 : 640 : _q40 = do_valueize (valueize, _q40);
16965 : 640 : {
16966 : 640 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
16967 : 640 : if (gimple_simplify_280 (res_op, seq, valueize, type, captures, NE_EXPR))
16968 : 474 : return true;
16969 : : }
16970 : 166 : break;
16971 : : }
16972 : : default:;
16973 : : }
16974 : : }
16975 : : break;
16976 : 466399 : default:;
16977 : : }
16978 : 466399 : {
16979 : 466399 : tree _p1_pops[1];
16980 : 466399 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
16981 : : {
16982 : 0 : tree _q40 = _p1_pops[0];
16983 : 0 : switch (TREE_CODE (_q40))
16984 : : {
16985 : 0 : case SSA_NAME:
16986 : 0 : if (gimple *_d2 = get_def (valueize, _q40))
16987 : : {
16988 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16989 : 0 : switch (gimple_assign_rhs_code (_a2))
16990 : : {
16991 : 0 : case BIT_NOT_EXPR:
16992 : 0 : {
16993 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
16994 : 0 : _q50 = do_valueize (valueize, _q50);
16995 : 0 : {
16996 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
16997 : 0 : if (gimple_simplify_280 (res_op, seq, valueize, type, captures, NE_EXPR))
16998 : 0 : return true;
16999 : : }
17000 : 0 : break;
17001 : : }
17002 : : default:;
17003 : : }
17004 : : }
17005 : : break;
17006 : : default:;
17007 : : }
17008 : : }
17009 : : }
17010 : 466399 : if (CONSTANT_CLASS_P (_p1))
17011 : : {
17012 : 464551 : {
17013 : 464551 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17014 : 464551 : if (gimple_simplify_279 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
17015 : 439320 : return true;
17016 : : }
17017 : : }
17018 : : break;
17019 : : }
17020 : : default:;
17021 : : }
17022 : : }
17023 : : break;
17024 : 127548682 : default:;
17025 : : }
17026 : 127548682 : {
17027 : 127548682 : tree _p0_pops[1];
17028 : 127548682 : if (gimple_maybe_bit_not (_p0, _p0_pops, valueize))
17029 : : {
17030 : 435944 : tree _q20 = _p0_pops[0];
17031 : 435944 : {
17032 : 435944 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
17033 : 435944 : if (gimple_simplify_277 (res_op, seq, valueize, type, captures, NE_EXPR))
17034 : 0 : return true;
17035 : : }
17036 : : }
17037 : : }
17038 : 127548682 : {
17039 : 127548682 : tree _p0_pops[1];
17040 : 127548682 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
17041 : : {
17042 : 624504 : tree _q20 = _p0_pops[0];
17043 : 624504 : switch (TREE_CODE (_q20))
17044 : : {
17045 : 614143 : case SSA_NAME:
17046 : 614143 : if (gimple *_d1 = get_def (valueize, _q20))
17047 : : {
17048 : 596616 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17049 : 607654 : switch (gimple_assign_rhs_code (_a1))
17050 : : {
17051 : 1843 : case BIT_NOT_EXPR:
17052 : 1843 : {
17053 : 1843 : tree _q30 = gimple_assign_rhs1 (_a1);
17054 : 1843 : _q30 = do_valueize (valueize, _q30);
17055 : 1843 : switch (TREE_CODE (_p1))
17056 : : {
17057 : 53 : case SSA_NAME:
17058 : 53 : if (gimple *_d2 = get_def (valueize, _p1))
17059 : : {
17060 : 53 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17061 : 101 : switch (gimple_assign_rhs_code (_a2))
17062 : : {
17063 : 0 : case BIT_NOT_EXPR:
17064 : 0 : {
17065 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
17066 : 0 : _q50 = do_valueize (valueize, _q50);
17067 : 0 : {
17068 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
17069 : 0 : if (gimple_simplify_278 (res_op, seq, valueize, type, captures, NE_EXPR))
17070 : 0 : return true;
17071 : : }
17072 : 0 : break;
17073 : : }
17074 : : default:;
17075 : : }
17076 : : }
17077 : : break;
17078 : 1843 : default:;
17079 : : }
17080 : 1843 : {
17081 : 1843 : tree _p1_pops[1];
17082 : 1843 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
17083 : : {
17084 : 5 : tree _q50 = _p1_pops[0];
17085 : 5 : switch (TREE_CODE (_q50))
17086 : : {
17087 : 5 : case SSA_NAME:
17088 : 5 : if (gimple *_d2 = get_def (valueize, _q50))
17089 : : {
17090 : 5 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17091 : 5 : switch (gimple_assign_rhs_code (_a2))
17092 : : {
17093 : 5 : case BIT_NOT_EXPR:
17094 : 5 : {
17095 : 5 : tree _q60 = gimple_assign_rhs1 (_a2);
17096 : 5 : _q60 = do_valueize (valueize, _q60);
17097 : 5 : {
17098 : 5 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
17099 : 5 : if (gimple_simplify_278 (res_op, seq, valueize, type, captures, NE_EXPR))
17100 : 0 : return true;
17101 : : }
17102 : 5 : break;
17103 : : }
17104 : : default:;
17105 : : }
17106 : : }
17107 : : break;
17108 : : default:;
17109 : : }
17110 : : }
17111 : : }
17112 : 1843 : if (CONSTANT_CLASS_P (_p1))
17113 : : {
17114 : 1790 : {
17115 : 1790 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
17116 : 1790 : if (gimple_simplify_279 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
17117 : 147 : return true;
17118 : : }
17119 : : }
17120 : : break;
17121 : : }
17122 : : default:;
17123 : : }
17124 : : }
17125 : : break;
17126 : : default:;
17127 : : }
17128 : : }
17129 : : }
17130 : 127548535 : switch (TREE_CODE (_p1))
17131 : : {
17132 : 3629618 : case REAL_CST:
17133 : 3629618 : {
17134 : 3629618 : {
17135 : 3629618 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
17136 : 3629618 : if (gimple_simplify_281 (res_op, seq, valueize, type, captures, NE_EXPR))
17137 : 1760 : return true;
17138 : : }
17139 : 3627858 : break;
17140 : : }
17141 : 127546775 : default:;
17142 : : }
17143 : 127546775 : switch (TREE_CODE (_p0))
17144 : : {
17145 : 124814569 : case SSA_NAME:
17146 : 124814569 : if (gimple *_d1 = get_def (valueize, _p0))
17147 : : {
17148 : 40902302 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17149 : 45037656 : switch (gimple_assign_rhs_code (_a1))
17150 : : {
17151 : 1599440 : case PLUS_EXPR:
17152 : 1599440 : {
17153 : 1599440 : tree _q20 = gimple_assign_rhs1 (_a1);
17154 : 1599440 : _q20 = do_valueize (valueize, _q20);
17155 : 1599440 : tree _q21 = gimple_assign_rhs2 (_a1);
17156 : 1599440 : _q21 = do_valueize (valueize, _q21);
17157 : 1599440 : if (tree_swap_operands_p (_q20, _q21))
17158 : 9227 : std::swap (_q20, _q21);
17159 : 1599440 : switch (TREE_CODE (_q21))
17160 : : {
17161 : 11280 : case REAL_CST:
17162 : 11280 : {
17163 : 11280 : switch (TREE_CODE (_p1))
17164 : : {
17165 : 10458 : case REAL_CST:
17166 : 10458 : {
17167 : 10458 : {
17168 : 10458 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17169 : 10458 : if (gimple_simplify_282 (res_op, seq, valueize, type, captures, PLUS_EXPR, NE_EXPR))
17170 : 17 : return true;
17171 : : }
17172 : 10441 : break;
17173 : : }
17174 : : default:;
17175 : : }
17176 : : break;
17177 : : }
17178 : : default:;
17179 : : }
17180 : 124498146 : break;
17181 : : }
17182 : 199403 : case MINUS_EXPR:
17183 : 199403 : {
17184 : 199403 : tree _q20 = gimple_assign_rhs1 (_a1);
17185 : 199403 : _q20 = do_valueize (valueize, _q20);
17186 : 199403 : tree _q21 = gimple_assign_rhs2 (_a1);
17187 : 199403 : _q21 = do_valueize (valueize, _q21);
17188 : 199403 : switch (TREE_CODE (_q21))
17189 : : {
17190 : 9835 : case REAL_CST:
17191 : 9835 : {
17192 : 9835 : switch (TREE_CODE (_p1))
17193 : : {
17194 : 9366 : case REAL_CST:
17195 : 9366 : {
17196 : 9366 : {
17197 : 9366 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17198 : 9366 : if (gimple_simplify_282 (res_op, seq, valueize, type, captures, MINUS_EXPR, NE_EXPR))
17199 : 9 : return true;
17200 : : }
17201 : 9357 : break;
17202 : : }
17203 : : default:;
17204 : : }
17205 : : break;
17206 : : }
17207 : 199394 : default:;
17208 : : }
17209 : 199394 : switch (TREE_CODE (_q20))
17210 : : {
17211 : 72 : case REAL_CST:
17212 : 72 : {
17213 : 72 : switch (TREE_CODE (_p1))
17214 : : {
17215 : 63 : case REAL_CST:
17216 : 63 : {
17217 : 63 : {
17218 : 63 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17219 : 63 : if (gimple_simplify_283 (res_op, seq, valueize, type, captures, NE_EXPR))
17220 : 0 : return true;
17221 : : }
17222 : 63 : break;
17223 : : }
17224 : : default:;
17225 : : }
17226 : : break;
17227 : : }
17228 : : default:;
17229 : : }
17230 : : break;
17231 : : }
17232 : 14779 : case FLOAT_EXPR:
17233 : 14779 : {
17234 : 14779 : tree _q20 = gimple_assign_rhs1 (_a1);
17235 : 14779 : _q20 = do_valueize (valueize, _q20);
17236 : 14779 : switch (TREE_CODE (_p1))
17237 : : {
17238 : 6484 : case SSA_NAME:
17239 : 6484 : if (gimple *_d2 = get_def (valueize, _p1))
17240 : : {
17241 : 6367 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17242 : 10468 : switch (gimple_assign_rhs_code (_a2))
17243 : : {
17244 : 1774 : case FLOAT_EXPR:
17245 : 1774 : {
17246 : 1774 : tree _q40 = gimple_assign_rhs1 (_a2);
17247 : 1774 : _q40 = do_valueize (valueize, _q40);
17248 : 1774 : {
17249 : 1774 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
17250 : 1774 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
17251 : 180 : return true;
17252 : : }
17253 : 1594 : break;
17254 : : }
17255 : : default:;
17256 : : }
17257 : : }
17258 : : break;
17259 : 8289 : case REAL_CST:
17260 : 8289 : {
17261 : 8289 : {
17262 : 8289 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17263 : 8289 : if (gimple_simplify_287 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
17264 : 95 : return true;
17265 : : }
17266 : 8194 : break;
17267 : : }
17268 : : default:;
17269 : : }
17270 : : break;
17271 : : }
17272 : 26218 : case EXACT_DIV_EXPR:
17273 : 26218 : {
17274 : 26218 : tree _q20 = gimple_assign_rhs1 (_a1);
17275 : 26218 : _q20 = do_valueize (valueize, _q20);
17276 : 26218 : tree _q21 = gimple_assign_rhs2 (_a1);
17277 : 26218 : _q21 = do_valueize (valueize, _q21);
17278 : 26218 : switch (TREE_CODE (_p1))
17279 : : {
17280 : 20847 : case INTEGER_CST:
17281 : 20847 : {
17282 : 20847 : {
17283 : 20847 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17284 : 20847 : if (gimple_simplify_288 (res_op, seq, valueize, type, captures, NE_EXPR))
17285 : 20847 : return true;
17286 : : }
17287 : 0 : break;
17288 : : }
17289 : : default:;
17290 : : }
17291 : : break;
17292 : : }
17293 : 13828 : case NEGATE_EXPR:
17294 : 13828 : {
17295 : 13828 : tree _q20 = gimple_assign_rhs1 (_a1);
17296 : 13828 : _q20 = do_valueize (valueize, _q20);
17297 : 13828 : switch (TREE_CODE (_p1))
17298 : : {
17299 : 6612 : case SSA_NAME:
17300 : 6612 : if (gimple *_d2 = get_def (valueize, _p1))
17301 : : {
17302 : 6526 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17303 : 6226 : switch (gimple_assign_rhs_code (_a2))
17304 : : {
17305 : 201 : case NEGATE_EXPR:
17306 : 201 : {
17307 : 201 : tree _q40 = gimple_assign_rhs1 (_a2);
17308 : 201 : _q40 = do_valueize (valueize, _q40);
17309 : 201 : {
17310 : 201 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17311 : 201 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
17312 : 201 : return true;
17313 : : }
17314 : 0 : break;
17315 : : }
17316 : : default:;
17317 : : }
17318 : : }
17319 : : break;
17320 : 13627 : default:;
17321 : : }
17322 : 13627 : if (CONSTANT_CLASS_P (_p1))
17323 : : {
17324 : 7216 : {
17325 : 7216 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17326 : 7216 : if (gimple_simplify_290 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
17327 : 7216 : return true;
17328 : : }
17329 : : }
17330 : : break;
17331 : : }
17332 : 6204 : case ABS_EXPR:
17333 : 6204 : {
17334 : 6204 : tree _q20 = gimple_assign_rhs1 (_a1);
17335 : 6204 : _q20 = do_valueize (valueize, _q20);
17336 : 6204 : if (zerop (_p1))
17337 : : {
17338 : 708 : {
17339 : 708 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17340 : 708 : const enum tree_code eqne = NE_EXPR;
17341 : 708 : gimple_seq *lseq = seq;
17342 : 708 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2466;
17343 : 708 : {
17344 : 708 : res_op->set_op (eqne, type, 2);
17345 : 708 : res_op->ops[0] = captures[0];
17346 : 708 : res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0]));
17347 : 708 : res_op->resimplify (lseq, valueize);
17348 : 708 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1151, __FILE__, __LINE__, true);
17349 : 708 : return true;
17350 : : }
17351 : 0 : next_after_fail2466:;
17352 : : }
17353 : : }
17354 : : break;
17355 : : }
17356 : 5319 : case ABSU_EXPR:
17357 : 5319 : {
17358 : 5319 : tree _q20 = gimple_assign_rhs1 (_a1);
17359 : 5319 : _q20 = do_valueize (valueize, _q20);
17360 : 5319 : if (zerop (_p1))
17361 : : {
17362 : 18 : {
17363 : 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17364 : 18 : const enum tree_code eqne = NE_EXPR;
17365 : 18 : gimple_seq *lseq = seq;
17366 : 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2467;
17367 : 18 : {
17368 : 18 : res_op->set_op (eqne, type, 2);
17369 : 18 : res_op->ops[0] = captures[0];
17370 : 18 : res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0]));
17371 : 18 : res_op->resimplify (lseq, valueize);
17372 : 18 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1151, __FILE__, __LINE__, true);
17373 : 18 : return true;
17374 : : }
17375 : 0 : next_after_fail2467:;
17376 : : }
17377 : : }
17378 : : break;
17379 : : }
17380 : 2409275 : CASE_CONVERT:
17381 : 2409275 : {
17382 : 2409275 : tree _q20 = gimple_assign_rhs1 (_a1);
17383 : 2409275 : _q20 = do_valueize (valueize, _q20);
17384 : 2409275 : switch (TREE_CODE (_p1))
17385 : : {
17386 : 589667 : case SSA_NAME:
17387 : 589667 : if (gimple *_d2 = get_def (valueize, _p1))
17388 : : {
17389 : 534137 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17390 : 636985 : switch (gimple_assign_rhs_code (_a2))
17391 : : {
17392 : 87375 : CASE_CONVERT:
17393 : 87375 : {
17394 : 87375 : tree _q40 = gimple_assign_rhs1 (_a2);
17395 : 87375 : _q40 = do_valueize (valueize, _q40);
17396 : 87375 : {
17397 : 87375 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
17398 : 87375 : if (gimple_simplify_291 (res_op, seq, valueize, type, captures, NE_EXPR))
17399 : 9955 : return true;
17400 : : }
17401 : 77420 : break;
17402 : : }
17403 : : default:;
17404 : : }
17405 : : }
17406 : : break;
17407 : 2399320 : default:;
17408 : : }
17409 : 2399320 : {
17410 : 2399320 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
17411 : 2399320 : if (gimple_simplify_292 (res_op, seq, valueize, type, captures, NE_EXPR))
17412 : 269705 : return true;
17413 : : }
17414 : 2129615 : switch (TREE_CODE (_q20))
17415 : : {
17416 : 2118762 : case SSA_NAME:
17417 : 2118762 : if (gimple *_d2 = get_def (valueize, _q20))
17418 : : {
17419 : 2082969 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17420 : 2454320 : switch (gimple_assign_rhs_code (_a2))
17421 : : {
17422 : 3958 : case BIT_IOR_EXPR:
17423 : 3958 : {
17424 : 3958 : tree _q30 = gimple_assign_rhs1 (_a2);
17425 : 3958 : _q30 = do_valueize (valueize, _q30);
17426 : 3958 : tree _q31 = gimple_assign_rhs2 (_a2);
17427 : 3958 : _q31 = do_valueize (valueize, _q31);
17428 : 3958 : if (tree_swap_operands_p (_q30, _q31))
17429 : 31 : std::swap (_q30, _q31);
17430 : 3958 : switch (TREE_CODE (_q31))
17431 : : {
17432 : 68 : case INTEGER_CST:
17433 : 68 : {
17434 : 68 : switch (TREE_CODE (_p1))
17435 : : {
17436 : 48 : case INTEGER_CST:
17437 : 48 : {
17438 : 48 : {
17439 : 48 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
17440 : 48 : if (gimple_simplify_293 (res_op, seq, valueize, type, captures, NE_EXPR))
17441 : 0 : return true;
17442 : : }
17443 : 48 : break;
17444 : : }
17445 : : default:;
17446 : : }
17447 : : break;
17448 : : }
17449 : : default:;
17450 : : }
17451 : 124498146 : break;
17452 : : }
17453 : : default:;
17454 : : }
17455 : : }
17456 : : break;
17457 : : default:;
17458 : : }
17459 : : break;
17460 : : }
17461 : 989515 : case BIT_IOR_EXPR:
17462 : 989515 : {
17463 : 989515 : tree _q20 = gimple_assign_rhs1 (_a1);
17464 : 989515 : _q20 = do_valueize (valueize, _q20);
17465 : 989515 : tree _q21 = gimple_assign_rhs2 (_a1);
17466 : 989515 : _q21 = do_valueize (valueize, _q21);
17467 : 989515 : if (tree_swap_operands_p (_q20, _q21))
17468 : 63693 : std::swap (_q20, _q21);
17469 : 989515 : switch (TREE_CODE (_q21))
17470 : : {
17471 : 2247 : case INTEGER_CST:
17472 : 2247 : {
17473 : 2247 : switch (TREE_CODE (_p1))
17474 : : {
17475 : 944 : case INTEGER_CST:
17476 : 944 : {
17477 : 944 : {
17478 : 944 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
17479 : 944 : if (gimple_simplify_293 (res_op, seq, valueize, type, captures, NE_EXPR))
17480 : 112 : return true;
17481 : : }
17482 : 832 : break;
17483 : : }
17484 : : default:;
17485 : : }
17486 : : break;
17487 : : }
17488 : : default:;
17489 : : }
17490 : 124498146 : break;
17491 : : }
17492 : 11254 : case BIT_XOR_EXPR:
17493 : 11254 : {
17494 : 11254 : tree _q20 = gimple_assign_rhs1 (_a1);
17495 : 11254 : _q20 = do_valueize (valueize, _q20);
17496 : 11254 : tree _q21 = gimple_assign_rhs2 (_a1);
17497 : 11254 : _q21 = do_valueize (valueize, _q21);
17498 : 11254 : if (tree_swap_operands_p (_q20, _q21))
17499 : 433 : std::swap (_q20, _q21);
17500 : 11254 : if (integer_zerop (_p1))
17501 : : {
17502 : 7235 : {
17503 : 7235 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
17504 : 7235 : if (gimple_simplify_295 (res_op, seq, valueize, type, captures, NE_EXPR))
17505 : 7235 : return true;
17506 : : }
17507 : : }
17508 : 4019 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17509 : : {
17510 : 0 : {
17511 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
17512 : 0 : if (gimple_simplify_296 (res_op, seq, valueize, type, captures, NE_EXPR))
17513 : 0 : return true;
17514 : : }
17515 : : }
17516 : 4019 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17517 : : {
17518 : 81 : {
17519 : 81 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
17520 : 81 : if (gimple_simplify_296 (res_op, seq, valueize, type, captures, NE_EXPR))
17521 : 81 : return true;
17522 : : }
17523 : : }
17524 : 124498146 : break;
17525 : : }
17526 : : default:;
17527 : : }
17528 : 13765249 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
17529 : 7750551 : switch (gimple_call_combined_fn (_c1))
17530 : : {
17531 : 98 : case CFN_BUILT_IN_SQRTF:
17532 : 98 : if (gimple_call_num_args (_c1) == 1)
17533 : : {
17534 : 98 : tree _q20 = gimple_call_arg (_c1, 0);
17535 : 98 : _q20 = do_valueize (valueize, _q20);
17536 : 98 : switch (TREE_CODE (_p1))
17537 : : {
17538 : 86 : case SSA_NAME:
17539 : 86 : if (gimple *_d2 = get_def (valueize, _p1))
17540 : : {
17541 : 86 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17542 : 86 : switch (gimple_call_combined_fn (_c2))
17543 : : {
17544 : 2 : case CFN_BUILT_IN_SQRTF:
17545 : 2 : if (gimple_call_num_args (_c2) == 1)
17546 : : {
17547 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
17548 : 2 : _q40 = do_valueize (valueize, _q40);
17549 : 2 : {
17550 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17551 : 2 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, NE_EXPR))
17552 : 2 : return true;
17553 : : }
17554 : : }
17555 : : break;
17556 : : default:;
17557 : : }
17558 : : }
17559 : : break;
17560 : 12 : case REAL_CST:
17561 : 12 : {
17562 : 12 : {
17563 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17564 : 12 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, NE_EXPR))
17565 : 12 : return true;
17566 : : }
17567 : 0 : break;
17568 : : }
17569 : : default:;
17570 : : }
17571 : : }
17572 : : break;
17573 : 98 : case CFN_BUILT_IN_SQRTL:
17574 : 98 : if (gimple_call_num_args (_c1) == 1)
17575 : : {
17576 : 98 : tree _q20 = gimple_call_arg (_c1, 0);
17577 : 98 : _q20 = do_valueize (valueize, _q20);
17578 : 98 : switch (TREE_CODE (_p1))
17579 : : {
17580 : 86 : case SSA_NAME:
17581 : 86 : if (gimple *_d2 = get_def (valueize, _p1))
17582 : : {
17583 : 86 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17584 : 86 : switch (gimple_call_combined_fn (_c2))
17585 : : {
17586 : 2 : case CFN_BUILT_IN_SQRTL:
17587 : 2 : if (gimple_call_num_args (_c2) == 1)
17588 : : {
17589 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
17590 : 2 : _q40 = do_valueize (valueize, _q40);
17591 : 2 : {
17592 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17593 : 2 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, NE_EXPR))
17594 : 2 : return true;
17595 : : }
17596 : : }
17597 : : break;
17598 : : default:;
17599 : : }
17600 : : }
17601 : : break;
17602 : 12 : case REAL_CST:
17603 : 12 : {
17604 : 12 : {
17605 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17606 : 12 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, NE_EXPR))
17607 : 12 : return true;
17608 : : }
17609 : 0 : break;
17610 : : }
17611 : : default:;
17612 : : }
17613 : : }
17614 : : break;
17615 : 122 : case CFN_BUILT_IN_SQRT:
17616 : 122 : if (gimple_call_num_args (_c1) == 1)
17617 : : {
17618 : 122 : tree _q20 = gimple_call_arg (_c1, 0);
17619 : 122 : _q20 = do_valueize (valueize, _q20);
17620 : 122 : switch (TREE_CODE (_p1))
17621 : : {
17622 : 110 : case SSA_NAME:
17623 : 110 : if (gimple *_d2 = get_def (valueize, _p1))
17624 : : {
17625 : 110 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17626 : 98 : switch (gimple_call_combined_fn (_c2))
17627 : : {
17628 : 12 : case CFN_BUILT_IN_SQRT:
17629 : 12 : if (gimple_call_num_args (_c2) == 1)
17630 : : {
17631 : 12 : tree _q40 = gimple_call_arg (_c2, 0);
17632 : 12 : _q40 = do_valueize (valueize, _q40);
17633 : 12 : {
17634 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17635 : 12 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, NE_EXPR))
17636 : 4 : return true;
17637 : : }
17638 : : }
17639 : : break;
17640 : : default:;
17641 : : }
17642 : : }
17643 : : break;
17644 : 12 : case REAL_CST:
17645 : 12 : {
17646 : 12 : {
17647 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17648 : 12 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, NE_EXPR))
17649 : 12 : return true;
17650 : : }
17651 : 0 : break;
17652 : : }
17653 : : default:;
17654 : : }
17655 : : }
17656 : : break;
17657 : 0 : case CFN_SQRT:
17658 : 0 : if (gimple_call_num_args (_c1) == 1)
17659 : : {
17660 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17661 : 0 : _q20 = do_valueize (valueize, _q20);
17662 : 0 : switch (TREE_CODE (_p1))
17663 : : {
17664 : 0 : case SSA_NAME:
17665 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17666 : : {
17667 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17668 : 0 : switch (gimple_call_combined_fn (_c2))
17669 : : {
17670 : 0 : case CFN_SQRT:
17671 : 0 : if (gimple_call_num_args (_c2) == 1)
17672 : : {
17673 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17674 : 0 : _q40 = do_valueize (valueize, _q40);
17675 : 0 : {
17676 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17677 : 0 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_SQRT, NE_EXPR))
17678 : 0 : return true;
17679 : : }
17680 : : }
17681 : : break;
17682 : : default:;
17683 : : }
17684 : : }
17685 : : break;
17686 : 0 : case REAL_CST:
17687 : 0 : {
17688 : 0 : {
17689 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17690 : 0 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_SQRT, NE_EXPR))
17691 : 0 : return true;
17692 : : }
17693 : 0 : break;
17694 : : }
17695 : : default:;
17696 : : }
17697 : : }
17698 : : break;
17699 : : default:;
17700 : : }
17701 : : }
17702 : 124498146 : {
17703 : 124498146 : switch (TREE_CODE (_p1))
17704 : : {
17705 : 22579656 : case SSA_NAME:
17706 : 22579656 : if (gimple *_d1 = get_def (valueize, _p1))
17707 : : {
17708 : 7100793 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17709 : 10058431 : switch (gimple_assign_rhs_code (_a1))
17710 : : {
17711 : 23173 : case ADDR_EXPR:
17712 : 23173 : {
17713 : 23173 : {
17714 : 23173 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
17715 : 23173 : if (gimple_simplify_294 (res_op, seq, valueize, type, captures, NE_EXPR))
17716 : 14 : return true;
17717 : : }
17718 : 23159 : break;
17719 : : }
17720 : : default:;
17721 : : }
17722 : : }
17723 : : break;
17724 : 2529736 : case ADDR_EXPR:
17725 : 2529736 : {
17726 : 2529736 : {
17727 : 2529736 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
17728 : 2529736 : if (gimple_simplify_294 (res_op, seq, valueize, type, captures, NE_EXPR))
17729 : 74 : return true;
17730 : : }
17731 : 2529662 : break;
17732 : : }
17733 : : default:;
17734 : : }
17735 : : }
17736 : : break;
17737 : 127230264 : default:;
17738 : : }
17739 : 127230264 : switch (TREE_CODE (_p1))
17740 : : {
17741 : 22777799 : case SSA_NAME:
17742 : 22777799 : if (gimple *_d1 = get_def (valueize, _p1))
17743 : : {
17744 : 7100779 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17745 : 10058403 : switch (gimple_assign_rhs_code (_a1))
17746 : : {
17747 : 9078 : case BIT_XOR_EXPR:
17748 : 9078 : {
17749 : 9078 : tree _q30 = gimple_assign_rhs1 (_a1);
17750 : 9078 : _q30 = do_valueize (valueize, _q30);
17751 : 9078 : tree _q31 = gimple_assign_rhs2 (_a1);
17752 : 9078 : _q31 = do_valueize (valueize, _q31);
17753 : 9078 : if (tree_swap_operands_p (_q30, _q31))
17754 : 322 : std::swap (_q30, _q31);
17755 : 9078 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
17756 : : {
17757 : 0 : {
17758 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
17759 : 0 : if (gimple_simplify_296 (res_op, seq, valueize, type, captures, NE_EXPR))
17760 : 0 : return true;
17761 : : }
17762 : : }
17763 : 9078 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
17764 : : {
17765 : 18 : {
17766 : 18 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
17767 : 18 : if (gimple_simplify_296 (res_op, seq, valueize, type, captures, NE_EXPR))
17768 : 18 : return true;
17769 : : }
17770 : : }
17771 : 127230246 : break;
17772 : : }
17773 : : default:;
17774 : : }
17775 : : }
17776 : : break;
17777 : 127230246 : default:;
17778 : : }
17779 : 127230246 : switch (TREE_CODE (_p0))
17780 : : {
17781 : 124498040 : case SSA_NAME:
17782 : 124498040 : if (gimple *_d1 = get_def (valueize, _p0))
17783 : : {
17784 : 40585843 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17785 : 44721259 : switch (gimple_assign_rhs_code (_a1))
17786 : : {
17787 : 2836233 : case BIT_AND_EXPR:
17788 : 2836233 : {
17789 : 2836233 : tree _q20 = gimple_assign_rhs1 (_a1);
17790 : 2836233 : _q20 = do_valueize (valueize, _q20);
17791 : 2836233 : tree _q21 = gimple_assign_rhs2 (_a1);
17792 : 2836233 : _q21 = do_valueize (valueize, _q21);
17793 : 2836233 : if (tree_swap_operands_p (_q20, _q21))
17794 : 68258 : std::swap (_q20, _q21);
17795 : 2836233 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17796 : : {
17797 : 568 : {
17798 : 568 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
17799 : 568 : if (gimple_simplify_297 (res_op, seq, valueize, type, captures, NE_EXPR))
17800 : 447 : return true;
17801 : : }
17802 : : }
17803 : 2835786 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17804 : : {
17805 : 13255 : {
17806 : 13255 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
17807 : 13255 : if (gimple_simplify_297 (res_op, seq, valueize, type, captures, NE_EXPR))
17808 : 4 : return true;
17809 : : }
17810 : : }
17811 : 127229795 : break;
17812 : : }
17813 : : default:;
17814 : : }
17815 : : }
17816 : : break;
17817 : 127229795 : default:;
17818 : : }
17819 : 127229795 : switch (TREE_CODE (_p1))
17820 : : {
17821 : 22777330 : case SSA_NAME:
17822 : 22777330 : if (gimple *_d1 = get_def (valueize, _p1))
17823 : : {
17824 : 7100317 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17825 : 10057958 : switch (gimple_assign_rhs_code (_a1))
17826 : : {
17827 : 21603 : case BIT_AND_EXPR:
17828 : 21603 : {
17829 : 21603 : tree _q30 = gimple_assign_rhs1 (_a1);
17830 : 21603 : _q30 = do_valueize (valueize, _q30);
17831 : 21603 : tree _q31 = gimple_assign_rhs2 (_a1);
17832 : 21603 : _q31 = do_valueize (valueize, _q31);
17833 : 21603 : if (tree_swap_operands_p (_q30, _q31))
17834 : 237 : std::swap (_q30, _q31);
17835 : 21603 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
17836 : : {
17837 : 719 : {
17838 : 719 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
17839 : 719 : if (gimple_simplify_297 (res_op, seq, valueize, type, captures, NE_EXPR))
17840 : 118 : return true;
17841 : : }
17842 : : }
17843 : 21485 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
17844 : : {
17845 : 148 : {
17846 : 148 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
17847 : 148 : if (gimple_simplify_297 (res_op, seq, valueize, type, captures, NE_EXPR))
17848 : 3 : return true;
17849 : : }
17850 : : }
17851 : 127229674 : break;
17852 : : }
17853 : : default:;
17854 : : }
17855 : : }
17856 : : break;
17857 : 127229674 : default:;
17858 : : }
17859 : 127229674 : switch (TREE_CODE (_p0))
17860 : : {
17861 : 124497468 : case SSA_NAME:
17862 : 124497468 : if (gimple *_d1 = get_def (valueize, _p0))
17863 : : {
17864 : 40585279 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17865 : 44720739 : switch (gimple_assign_rhs_code (_a1))
17866 : : {
17867 : 2129595 : CASE_CONVERT:
17868 : 2129595 : {
17869 : 2129595 : tree _q20 = gimple_assign_rhs1 (_a1);
17870 : 2129595 : _q20 = do_valueize (valueize, _q20);
17871 : 2129595 : switch (TREE_CODE (_q20))
17872 : : {
17873 : 2118742 : case SSA_NAME:
17874 : 2118742 : if (gimple *_d2 = get_def (valueize, _q20))
17875 : : {
17876 : 2082949 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17877 : 2454302 : switch (gimple_assign_rhs_code (_a2))
17878 : : {
17879 : 11189 : case BIT_AND_EXPR:
17880 : 11189 : {
17881 : 11189 : tree _q30 = gimple_assign_rhs1 (_a2);
17882 : 11189 : _q30 = do_valueize (valueize, _q30);
17883 : 11189 : tree _q31 = gimple_assign_rhs2 (_a2);
17884 : 11189 : _q31 = do_valueize (valueize, _q31);
17885 : 11189 : if (tree_swap_operands_p (_q30, _q31))
17886 : 83 : std::swap (_q30, _q31);
17887 : 11189 : switch (TREE_CODE (_q30))
17888 : : {
17889 : 11189 : case SSA_NAME:
17890 : 11189 : if (gimple *_d3 = get_def (valueize, _q30))
17891 : : {
17892 : 10912 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17893 : 15345 : switch (gimple_assign_rhs_code (_a3))
17894 : : {
17895 : 145 : CASE_CONVERT:
17896 : 145 : {
17897 : 145 : tree _q40 = gimple_assign_rhs1 (_a3);
17898 : 145 : _q40 = do_valueize (valueize, _q40);
17899 : 145 : switch (TREE_CODE (_q31))
17900 : : {
17901 : 75 : case INTEGER_CST:
17902 : 75 : {
17903 : 75 : switch (TREE_CODE (_p1))
17904 : : {
17905 : 2 : case SSA_NAME:
17906 : 2 : if (gimple *_d4 = get_def (valueize, _p1))
17907 : : {
17908 : 2 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17909 : 3 : switch (gimple_assign_rhs_code (_a4))
17910 : : {
17911 : 1 : CASE_CONVERT:
17912 : 1 : {
17913 : 1 : tree _q70 = gimple_assign_rhs1 (_a4);
17914 : 1 : _q70 = do_valueize (valueize, _q70);
17915 : 1 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
17916 : : {
17917 : 0 : {
17918 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
17919 : 0 : if (gimple_simplify_298 (res_op, seq, valueize, type, captures, NE_EXPR))
17920 : 0 : return true;
17921 : : }
17922 : : }
17923 : : break;
17924 : : }
17925 : : default:;
17926 : : }
17927 : : }
17928 : : break;
17929 : : default:;
17930 : : }
17931 : : break;
17932 : : }
17933 : : default:;
17934 : : }
17935 : : break;
17936 : : }
17937 : : default:;
17938 : : }
17939 : : }
17940 : : break;
17941 : : default:;
17942 : : }
17943 : 2129595 : break;
17944 : : }
17945 : : default:;
17946 : : }
17947 : : }
17948 : : break;
17949 : 2129595 : default:;
17950 : : }
17951 : 2129595 : switch (TREE_CODE (_p1))
17952 : : {
17953 : 579692 : case SSA_NAME:
17954 : 579692 : if (gimple *_d2 = get_def (valueize, _p1))
17955 : : {
17956 : 524162 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17957 : 627010 : switch (gimple_assign_rhs_code (_a2))
17958 : : {
17959 : 77420 : CASE_CONVERT:
17960 : 77420 : {
17961 : 77420 : tree _q40 = gimple_assign_rhs1 (_a2);
17962 : 77420 : _q40 = do_valueize (valueize, _q40);
17963 : 77420 : switch (TREE_CODE (_q40))
17964 : : {
17965 : 74022 : case SSA_NAME:
17966 : 74022 : if (gimple *_d3 = get_def (valueize, _q40))
17967 : : {
17968 : 73238 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17969 : 81997 : switch (gimple_assign_rhs_code (_a3))
17970 : : {
17971 : 1009 : case BIT_AND_EXPR:
17972 : 1009 : {
17973 : 1009 : tree _q50 = gimple_assign_rhs1 (_a3);
17974 : 1009 : _q50 = do_valueize (valueize, _q50);
17975 : 1009 : tree _q51 = gimple_assign_rhs2 (_a3);
17976 : 1009 : _q51 = do_valueize (valueize, _q51);
17977 : 1009 : if (tree_swap_operands_p (_q50, _q51))
17978 : 2 : std::swap (_q50, _q51);
17979 : 1009 : switch (TREE_CODE (_q50))
17980 : : {
17981 : 1009 : case SSA_NAME:
17982 : 1009 : if (gimple *_d4 = get_def (valueize, _q50))
17983 : : {
17984 : 991 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17985 : 1075 : switch (gimple_assign_rhs_code (_a4))
17986 : : {
17987 : 0 : CASE_CONVERT:
17988 : 0 : {
17989 : 0 : tree _q60 = gimple_assign_rhs1 (_a4);
17990 : 0 : _q60 = do_valueize (valueize, _q60);
17991 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
17992 : : {
17993 : 0 : switch (TREE_CODE (_q51))
17994 : : {
17995 : 0 : case INTEGER_CST:
17996 : 0 : {
17997 : 0 : {
17998 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
17999 : 0 : if (gimple_simplify_298 (res_op, seq, valueize, type, captures, NE_EXPR))
18000 : 0 : return true;
18001 : : }
18002 : 0 : break;
18003 : : }
18004 : : default:;
18005 : : }
18006 : : }
18007 : : break;
18008 : : }
18009 : : default:;
18010 : : }
18011 : : }
18012 : : break;
18013 : : default:;
18014 : : }
18015 : 127229609 : break;
18016 : : }
18017 : : default:;
18018 : : }
18019 : : }
18020 : : break;
18021 : : default:;
18022 : : }
18023 : : break;
18024 : : }
18025 : : default:;
18026 : : }
18027 : : }
18028 : : break;
18029 : : default:;
18030 : : }
18031 : : break;
18032 : : }
18033 : 989403 : case BIT_IOR_EXPR:
18034 : 989403 : {
18035 : 989403 : tree _q20 = gimple_assign_rhs1 (_a1);
18036 : 989403 : _q20 = do_valueize (valueize, _q20);
18037 : 989403 : tree _q21 = gimple_assign_rhs2 (_a1);
18038 : 989403 : _q21 = do_valueize (valueize, _q21);
18039 : 989403 : if (tree_swap_operands_p (_q20, _q21))
18040 : 63646 : std::swap (_q20, _q21);
18041 : 989403 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
18042 : : {
18043 : 305 : {
18044 : 305 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18045 : 305 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, NE_EXPR))
18046 : 65 : return true;
18047 : : }
18048 : : }
18049 : 989338 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18050 : : {
18051 : 186 : {
18052 : 186 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
18053 : 186 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, NE_EXPR))
18054 : 0 : return true;
18055 : : }
18056 : : }
18057 : 127229609 : break;
18058 : : }
18059 : : default:;
18060 : : }
18061 : : }
18062 : : break;
18063 : 127229609 : default:;
18064 : : }
18065 : 127229609 : switch (TREE_CODE (_p1))
18066 : : {
18067 : 22777209 : case SSA_NAME:
18068 : 22777209 : if (gimple *_d1 = get_def (valueize, _p1))
18069 : : {
18070 : 7100196 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18071 : 10057837 : switch (gimple_assign_rhs_code (_a1))
18072 : : {
18073 : 6630 : case BIT_IOR_EXPR:
18074 : 6630 : {
18075 : 6630 : tree _q30 = gimple_assign_rhs1 (_a1);
18076 : 6630 : _q30 = do_valueize (valueize, _q30);
18077 : 6630 : tree _q31 = gimple_assign_rhs2 (_a1);
18078 : 6630 : _q31 = do_valueize (valueize, _q31);
18079 : 6630 : if (tree_swap_operands_p (_q30, _q31))
18080 : 302 : std::swap (_q30, _q31);
18081 : 6630 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
18082 : : {
18083 : 167 : {
18084 : 167 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
18085 : 167 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, NE_EXPR))
18086 : 0 : return true;
18087 : : }
18088 : : }
18089 : 6630 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
18090 : : {
18091 : 804 : {
18092 : 804 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
18093 : 804 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, NE_EXPR))
18094 : 0 : return true;
18095 : : }
18096 : : }
18097 : 127229609 : break;
18098 : : }
18099 : : default:;
18100 : : }
18101 : : }
18102 : : break;
18103 : 127229609 : default:;
18104 : : }
18105 : 127229609 : switch (TREE_CODE (_p0))
18106 : : {
18107 : 124497403 : case SSA_NAME:
18108 : 124497403 : if (gimple *_d1 = get_def (valueize, _p0))
18109 : : {
18110 : 40585214 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18111 : 44720674 : switch (gimple_assign_rhs_code (_a1))
18112 : : {
18113 : 2129595 : CASE_CONVERT:
18114 : 2129595 : {
18115 : 2129595 : tree _q20 = gimple_assign_rhs1 (_a1);
18116 : 2129595 : _q20 = do_valueize (valueize, _q20);
18117 : 2129595 : switch (TREE_CODE (_q20))
18118 : : {
18119 : 2118742 : case SSA_NAME:
18120 : 2118742 : if (gimple *_d2 = get_def (valueize, _q20))
18121 : : {
18122 : 2082949 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18123 : 2454302 : switch (gimple_assign_rhs_code (_a2))
18124 : : {
18125 : 1948 : case BIT_XOR_EXPR:
18126 : 1948 : {
18127 : 1948 : tree _q30 = gimple_assign_rhs1 (_a2);
18128 : 1948 : _q30 = do_valueize (valueize, _q30);
18129 : 1948 : tree _q31 = gimple_assign_rhs2 (_a2);
18130 : 1948 : _q31 = do_valueize (valueize, _q31);
18131 : 1948 : if (tree_swap_operands_p (_q30, _q31))
18132 : 43 : std::swap (_q30, _q31);
18133 : 1948 : switch (TREE_CODE (_q31))
18134 : : {
18135 : 1079 : case INTEGER_CST:
18136 : 1079 : {
18137 : 1079 : switch (TREE_CODE (_p1))
18138 : : {
18139 : 1067 : case INTEGER_CST:
18140 : 1067 : {
18141 : 1067 : {
18142 : 1067 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
18143 : 1067 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR))
18144 : 1 : return true;
18145 : : }
18146 : 1066 : break;
18147 : : }
18148 : : default:;
18149 : : }
18150 : : break;
18151 : : }
18152 : : default:;
18153 : : }
18154 : 127229540 : break;
18155 : : }
18156 : : default:;
18157 : : }
18158 : : }
18159 : : break;
18160 : : default:;
18161 : : }
18162 : : break;
18163 : : }
18164 : 3938 : case BIT_XOR_EXPR:
18165 : 3938 : {
18166 : 3938 : tree _q20 = gimple_assign_rhs1 (_a1);
18167 : 3938 : _q20 = do_valueize (valueize, _q20);
18168 : 3938 : tree _q21 = gimple_assign_rhs2 (_a1);
18169 : 3938 : _q21 = do_valueize (valueize, _q21);
18170 : 3938 : if (tree_swap_operands_p (_q20, _q21))
18171 : 250 : std::swap (_q20, _q21);
18172 : 3938 : switch (TREE_CODE (_q21))
18173 : : {
18174 : 299 : case INTEGER_CST:
18175 : 299 : {
18176 : 299 : switch (TREE_CODE (_p1))
18177 : : {
18178 : 68 : case INTEGER_CST:
18179 : 68 : {
18180 : 68 : {
18181 : 68 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
18182 : 68 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR))
18183 : 68 : return true;
18184 : : }
18185 : 0 : break;
18186 : : }
18187 : : default:;
18188 : : }
18189 : : break;
18190 : : }
18191 : : default:;
18192 : : }
18193 : 127229540 : break;
18194 : : }
18195 : : default:;
18196 : : }
18197 : : }
18198 : : break;
18199 : 127229540 : default:;
18200 : : }
18201 : 127229540 : {
18202 : 127229540 : tree _p0_pops[1];
18203 : 127229540 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
18204 : : {
18205 : 451267 : tree _q20 = _p0_pops[0];
18206 : 451267 : if (integer_zerop (_p1))
18207 : : {
18208 : 213629 : {
18209 : 213629 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
18210 : 213629 : if (gimple_simplify_301 (res_op, seq, valueize, type, captures, NE_EXPR))
18211 : 122 : return true;
18212 : : }
18213 : : }
18214 : : }
18215 : : }
18216 : 127229418 : if (integer_zerop (_p1))
18217 : : {
18218 : 72755358 : {
18219 : 72755358 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
18220 : 72755358 : if (gimple_simplify_301 (res_op, seq, valueize, type, captures, NE_EXPR))
18221 : 39854 : return true;
18222 : : }
18223 : : }
18224 : 127189564 : switch (TREE_CODE (_p0))
18225 : : {
18226 : 124487493 : case SSA_NAME:
18227 : 124487493 : if (gimple *_d1 = get_def (valueize, _p0))
18228 : : {
18229 : 40579636 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18230 : 44716490 : switch (gimple_assign_rhs_code (_a1))
18231 : : {
18232 : 2835776 : case BIT_AND_EXPR:
18233 : 2835776 : {
18234 : 2835776 : tree _q20 = gimple_assign_rhs1 (_a1);
18235 : 2835776 : _q20 = do_valueize (valueize, _q20);
18236 : 2835776 : tree _q21 = gimple_assign_rhs2 (_a1);
18237 : 2835776 : _q21 = do_valueize (valueize, _q21);
18238 : 2835776 : if (tree_swap_operands_p (_q20, _q21))
18239 : 68258 : std::swap (_q20, _q21);
18240 : 2835776 : switch (TREE_CODE (_p1))
18241 : : {
18242 : 45498 : case SSA_NAME:
18243 : 45498 : if (gimple *_d2 = get_def (valueize, _p1))
18244 : : {
18245 : 44034 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18246 : 52879 : switch (gimple_assign_rhs_code (_a2))
18247 : : {
18248 : 1211 : case BIT_AND_EXPR:
18249 : 1211 : {
18250 : 1211 : tree _q50 = gimple_assign_rhs1 (_a2);
18251 : 1211 : _q50 = do_valueize (valueize, _q50);
18252 : 1211 : tree _q51 = gimple_assign_rhs2 (_a2);
18253 : 1211 : _q51 = do_valueize (valueize, _q51);
18254 : 1211 : if (tree_swap_operands_p (_q50, _q51))
18255 : 33 : std::swap (_q50, _q51);
18256 : 1211 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18257 : : {
18258 : 878 : {
18259 : 878 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
18260 : 878 : if (gimple_simplify_302 (res_op, seq, valueize, type, captures, NE_EXPR))
18261 : 38 : return true;
18262 : : }
18263 : : }
18264 : 1173 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18265 : : {
18266 : 29 : {
18267 : 29 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
18268 : 29 : if (gimple_simplify_302 (res_op, seq, valueize, type, captures, NE_EXPR))
18269 : 0 : return true;
18270 : : }
18271 : : }
18272 : 1173 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18273 : : {
18274 : 2 : {
18275 : 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
18276 : 2 : if (gimple_simplify_302 (res_op, seq, valueize, type, captures, NE_EXPR))
18277 : 0 : return true;
18278 : : }
18279 : : }
18280 : 1173 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18281 : : {
18282 : 22 : {
18283 : 22 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
18284 : 22 : if (gimple_simplify_302 (res_op, seq, valueize, type, captures, NE_EXPR))
18285 : 0 : return true;
18286 : : }
18287 : : }
18288 : 2835738 : break;
18289 : : }
18290 : : default:;
18291 : : }
18292 : : }
18293 : : break;
18294 : 2835738 : default:;
18295 : : }
18296 : 2835738 : if (integer_pow2p (_q21))
18297 : : {
18298 : 903092 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
18299 : : {
18300 : 623 : {
18301 : 623 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
18302 : 623 : if (gimple_simplify_303 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
18303 : 623 : return true;
18304 : : }
18305 : : }
18306 : : }
18307 : 2835115 : switch (TREE_CODE (_q20))
18308 : : {
18309 : 2835115 : case SSA_NAME:
18310 : 2835115 : if (gimple *_d2 = get_def (valueize, _q20))
18311 : : {
18312 : 2743645 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18313 : 3368099 : switch (gimple_assign_rhs_code (_a2))
18314 : : {
18315 : 102462 : CASE_CONVERT:
18316 : 102462 : {
18317 : 102462 : tree _q30 = gimple_assign_rhs1 (_a2);
18318 : 102462 : _q30 = do_valueize (valueize, _q30);
18319 : 102462 : if (integer_pow2p (_q21))
18320 : : {
18321 : 23698 : if (integer_zerop (_p1))
18322 : : {
18323 : 23547 : {
18324 : 23547 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
18325 : 23547 : if (gimple_simplify_304 (res_op, seq, valueize, type, captures, NE_EXPR, LT_EXPR))
18326 : 18 : return true;
18327 : : }
18328 : : }
18329 : : }
18330 : : break;
18331 : : }
18332 : : default:;
18333 : : }
18334 : : }
18335 : : break;
18336 : 2835097 : default:;
18337 : : }
18338 : 2835097 : if (integer_pow2p (_q21))
18339 : : {
18340 : 902451 : if (integer_zerop (_p1))
18341 : : {
18342 : 895739 : {
18343 : 895739 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
18344 : 895739 : if (gimple_simplify_305 (res_op, seq, valueize, type, captures, NE_EXPR, LT_EXPR))
18345 : 1217 : return true;
18346 : : }
18347 : : }
18348 : : }
18349 : 127132059 : break;
18350 : : }
18351 : 9672 : case GE_EXPR:
18352 : 9672 : {
18353 : 9672 : tree _q20 = gimple_assign_rhs1 (_a1);
18354 : 9672 : _q20 = do_valueize (valueize, _q20);
18355 : 9672 : tree _q21 = gimple_assign_rhs2 (_a1);
18356 : 9672 : _q21 = do_valueize (valueize, _q21);
18357 : 9672 : if (integer_zerop (_q21))
18358 : : {
18359 : 2383 : switch (TREE_CODE (_p1))
18360 : : {
18361 : 72 : case SSA_NAME:
18362 : 72 : if (gimple *_d2 = get_def (valueize, _p1))
18363 : : {
18364 : 68 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18365 : 4 : switch (gimple_assign_rhs_code (_a2))
18366 : : {
18367 : 2 : case GE_EXPR:
18368 : 2 : {
18369 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
18370 : 2 : _q50 = do_valueize (valueize, _q50);
18371 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
18372 : 2 : _q51 = do_valueize (valueize, _q51);
18373 : 2 : if (integer_zerop (_q51))
18374 : : {
18375 : 2 : {
18376 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
18377 : 2 : if (gimple_simplify_306 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR, LT_EXPR))
18378 : 1 : return true;
18379 : : }
18380 : : }
18381 : : break;
18382 : : }
18383 : 2 : case LT_EXPR:
18384 : 2 : {
18385 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
18386 : 2 : _q50 = do_valueize (valueize, _q50);
18387 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
18388 : 2 : _q51 = do_valueize (valueize, _q51);
18389 : 2 : if (integer_zerop (_q51))
18390 : : {
18391 : 2 : {
18392 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
18393 : 2 : if (gimple_simplify_307 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR))
18394 : 1 : return true;
18395 : : }
18396 : : }
18397 : : break;
18398 : : }
18399 : : default:;
18400 : : }
18401 : : }
18402 : : break;
18403 : : default:;
18404 : : }
18405 : : }
18406 : : break;
18407 : : }
18408 : 40647 : case LT_EXPR:
18409 : 40647 : {
18410 : 40647 : tree _q20 = gimple_assign_rhs1 (_a1);
18411 : 40647 : _q20 = do_valueize (valueize, _q20);
18412 : 40647 : tree _q21 = gimple_assign_rhs2 (_a1);
18413 : 40647 : _q21 = do_valueize (valueize, _q21);
18414 : 40647 : if (integer_zerop (_q21))
18415 : : {
18416 : 29677 : switch (TREE_CODE (_p1))
18417 : : {
18418 : 245 : case SSA_NAME:
18419 : 245 : if (gimple *_d2 = get_def (valueize, _p1))
18420 : : {
18421 : 239 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18422 : 105 : switch (gimple_assign_rhs_code (_a2))
18423 : : {
18424 : 30 : case LT_EXPR:
18425 : 30 : {
18426 : 30 : tree _q50 = gimple_assign_rhs1 (_a2);
18427 : 30 : _q50 = do_valueize (valueize, _q50);
18428 : 30 : tree _q51 = gimple_assign_rhs2 (_a2);
18429 : 30 : _q51 = do_valueize (valueize, _q51);
18430 : 30 : if (integer_zerop (_q51))
18431 : : {
18432 : 30 : {
18433 : 30 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
18434 : 30 : if (gimple_simplify_306 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR, LT_EXPR))
18435 : 15 : return true;
18436 : : }
18437 : : }
18438 : : break;
18439 : : }
18440 : 60 : case GE_EXPR:
18441 : 60 : {
18442 : 60 : tree _q50 = gimple_assign_rhs1 (_a2);
18443 : 60 : _q50 = do_valueize (valueize, _q50);
18444 : 60 : tree _q51 = gimple_assign_rhs2 (_a2);
18445 : 60 : _q51 = do_valueize (valueize, _q51);
18446 : 60 : if (integer_zerop (_q51))
18447 : : {
18448 : 60 : {
18449 : 60 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
18450 : 60 : if (gimple_simplify_308 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR))
18451 : 3 : return true;
18452 : : }
18453 : : }
18454 : : break;
18455 : : }
18456 : : default:;
18457 : : }
18458 : : }
18459 : : break;
18460 : : default:;
18461 : : }
18462 : : }
18463 : : break;
18464 : : }
18465 : 2129220 : CASE_CONVERT:
18466 : 2129220 : {
18467 : 2129220 : tree _q20 = gimple_assign_rhs1 (_a1);
18468 : 2129220 : _q20 = do_valueize (valueize, _q20);
18469 : 2129220 : switch (TREE_CODE (_q20))
18470 : : {
18471 : 2118387 : case SSA_NAME:
18472 : 2118387 : if (gimple *_d2 = get_def (valueize, _q20))
18473 : : {
18474 : 2082594 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18475 : 2453901 : switch (gimple_assign_rhs_code (_a2))
18476 : : {
18477 : 161 : case ADDR_EXPR:
18478 : 161 : {
18479 : 161 : switch (TREE_CODE (_p1))
18480 : : {
18481 : 161 : case SSA_NAME:
18482 : 161 : if (gimple *_d3 = get_def (valueize, _p1))
18483 : : {
18484 : 161 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18485 : 305 : switch (gimple_assign_rhs_code (_a3))
18486 : : {
18487 : 17 : CASE_CONVERT:
18488 : 17 : {
18489 : 17 : tree _q40 = gimple_assign_rhs1 (_a3);
18490 : 17 : _q40 = do_valueize (valueize, _q40);
18491 : 17 : switch (TREE_CODE (_q40))
18492 : : {
18493 : 17 : case SSA_NAME:
18494 : 17 : if (gimple *_d4 = get_def (valueize, _q40))
18495 : : {
18496 : 17 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
18497 : 34 : switch (gimple_assign_rhs_code (_a4))
18498 : : {
18499 : 17 : case ADDR_EXPR:
18500 : 17 : {
18501 : 17 : {
18502 : 17 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18503 : 17 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18504 : 0 : return true;
18505 : : }
18506 : 17 : break;
18507 : : }
18508 : : default:;
18509 : : }
18510 : : }
18511 : : break;
18512 : 0 : case ADDR_EXPR:
18513 : 0 : {
18514 : 0 : {
18515 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18516 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18517 : 0 : return true;
18518 : : }
18519 : 0 : break;
18520 : : }
18521 : : default:;
18522 : : }
18523 : : break;
18524 : : }
18525 : 0 : case ADDR_EXPR:
18526 : 0 : {
18527 : 0 : {
18528 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18529 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18530 : 0 : return true;
18531 : : }
18532 : 0 : break;
18533 : : }
18534 : : default:;
18535 : : }
18536 : : }
18537 : : break;
18538 : 0 : case ADDR_EXPR:
18539 : 0 : {
18540 : 0 : {
18541 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18542 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18543 : 0 : return true;
18544 : : }
18545 : 0 : break;
18546 : : }
18547 : : default:;
18548 : : }
18549 : : break;
18550 : : }
18551 : : default:;
18552 : : }
18553 : : }
18554 : : break;
18555 : 10341 : case ADDR_EXPR:
18556 : 10341 : {
18557 : 10341 : switch (TREE_CODE (_p1))
18558 : : {
18559 : 10301 : case SSA_NAME:
18560 : 10301 : if (gimple *_d2 = get_def (valueize, _p1))
18561 : : {
18562 : 9651 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18563 : 17629 : switch (gimple_assign_rhs_code (_a2))
18564 : : {
18565 : 621 : CASE_CONVERT:
18566 : 621 : {
18567 : 621 : tree _q40 = gimple_assign_rhs1 (_a2);
18568 : 621 : _q40 = do_valueize (valueize, _q40);
18569 : 621 : switch (TREE_CODE (_q40))
18570 : : {
18571 : 444 : case SSA_NAME:
18572 : 444 : if (gimple *_d3 = get_def (valueize, _q40))
18573 : : {
18574 : 390 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18575 : 736 : switch (gimple_assign_rhs_code (_a3))
18576 : : {
18577 : 0 : case ADDR_EXPR:
18578 : 0 : {
18579 : 0 : {
18580 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18581 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18582 : 0 : return true;
18583 : : }
18584 : 0 : break;
18585 : : }
18586 : : default:;
18587 : : }
18588 : : }
18589 : : break;
18590 : 177 : case ADDR_EXPR:
18591 : 177 : {
18592 : 177 : {
18593 : 177 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18594 : 177 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18595 : 102 : return true;
18596 : : }
18597 : 75 : break;
18598 : : }
18599 : : default:;
18600 : : }
18601 : : break;
18602 : : }
18603 : 0 : case ADDR_EXPR:
18604 : 0 : {
18605 : 0 : {
18606 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18607 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18608 : 0 : return true;
18609 : : }
18610 : 0 : break;
18611 : : }
18612 : : default:;
18613 : : }
18614 : : }
18615 : : break;
18616 : 0 : case ADDR_EXPR:
18617 : 0 : {
18618 : 0 : {
18619 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18620 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, NE_EXPR))
18621 : 0 : return true;
18622 : : }
18623 : 0 : break;
18624 : : }
18625 : : default:;
18626 : : }
18627 : : break;
18628 : : }
18629 : : default:;
18630 : : }
18631 : : break;
18632 : : }
18633 : 50726 : case ADDR_EXPR:
18634 : 50726 : {
18635 : 50726 : switch (TREE_CODE (_p1))
18636 : : {
18637 : 26212 : case SSA_NAME:
18638 : 26212 : if (gimple *_d2 = get_def (valueize, _p1))
18639 : : {
18640 : 25209 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18641 : 33984 : switch (gimple_assign_rhs_code (_a2))
18642 : : {
18643 : 78 : CASE_CONVERT:
18644 : 78 : {
18645 : 78 : tree _q30 = gimple_assign_rhs1 (_a2);
18646 : 78 : _q30 = do_valueize (valueize, _q30);
18647 : 78 : switch (TREE_CODE (_q30))
18648 : : {
18649 : 78 : case SSA_NAME:
18650 : 78 : if (gimple *_d3 = get_def (valueize, _q30))
18651 : : {
18652 : 78 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18653 : 21 : switch (gimple_assign_rhs_code (_a3))
18654 : : {
18655 : 0 : case ADDR_EXPR:
18656 : 0 : {
18657 : 0 : {
18658 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18659 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18660 : 0 : return true;
18661 : : }
18662 : 0 : break;
18663 : : }
18664 : : default:;
18665 : : }
18666 : : }
18667 : : break;
18668 : 0 : case ADDR_EXPR:
18669 : 0 : {
18670 : 0 : {
18671 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18672 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18673 : 0 : return true;
18674 : : }
18675 : 0 : break;
18676 : : }
18677 : : default:;
18678 : : }
18679 : : break;
18680 : : }
18681 : 1974 : case ADDR_EXPR:
18682 : 1974 : {
18683 : 1974 : {
18684 : 1974 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18685 : 1974 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18686 : 44 : return true;
18687 : : }
18688 : 1930 : break;
18689 : : }
18690 : : default:;
18691 : : }
18692 : : }
18693 : : break;
18694 : 1822 : case ADDR_EXPR:
18695 : 1822 : {
18696 : 1822 : {
18697 : 1822 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18698 : 1822 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18699 : 116 : return true;
18700 : : }
18701 : 1706 : break;
18702 : : }
18703 : : default:;
18704 : : }
18705 : : break;
18706 : : }
18707 : : default:;
18708 : : }
18709 : : }
18710 : : break;
18711 : 76504 : case ADDR_EXPR:
18712 : 76504 : {
18713 : 76504 : switch (TREE_CODE (_p1))
18714 : : {
18715 : 0 : case SSA_NAME:
18716 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
18717 : : {
18718 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18719 : 0 : switch (gimple_assign_rhs_code (_a1))
18720 : : {
18721 : 0 : CASE_CONVERT:
18722 : 0 : {
18723 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
18724 : 0 : _q30 = do_valueize (valueize, _q30);
18725 : 0 : switch (TREE_CODE (_q30))
18726 : : {
18727 : 0 : case SSA_NAME:
18728 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
18729 : : {
18730 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18731 : 0 : switch (gimple_assign_rhs_code (_a2))
18732 : : {
18733 : 0 : case ADDR_EXPR:
18734 : 0 : {
18735 : 0 : {
18736 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18737 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18738 : 0 : return true;
18739 : : }
18740 : 0 : break;
18741 : : }
18742 : : default:;
18743 : : }
18744 : : }
18745 : : break;
18746 : 0 : case ADDR_EXPR:
18747 : 0 : {
18748 : 0 : {
18749 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18750 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18751 : 0 : return true;
18752 : : }
18753 : 0 : break;
18754 : : }
18755 : : default:;
18756 : : }
18757 : : break;
18758 : : }
18759 : 0 : case ADDR_EXPR:
18760 : 0 : {
18761 : 0 : {
18762 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18763 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18764 : 0 : return true;
18765 : : }
18766 : 0 : break;
18767 : : }
18768 : : default:;
18769 : : }
18770 : : }
18771 : : break;
18772 : 59525 : case ADDR_EXPR:
18773 : 59525 : {
18774 : 59525 : {
18775 : 59525 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18776 : 59525 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, NE_EXPR))
18777 : 55327 : return true;
18778 : : }
18779 : 4198 : break;
18780 : : }
18781 : : default:;
18782 : : }
18783 : : break;
18784 : : }
18785 : 127132059 : default:;
18786 : : }
18787 : 127132059 : {
18788 : 127132059 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
18789 : 127132059 : if (gimple_simplify_311 (res_op, seq, valueize, type, captures, NE_EXPR))
18790 : 7602 : return true;
18791 : : }
18792 : 127124457 : switch (TREE_CODE (_p0))
18793 : : {
18794 : 124477713 : case SSA_NAME:
18795 : 124477713 : if (gimple *_d1 = get_def (valueize, _p0))
18796 : : {
18797 : 40573308 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18798 : 44712832 : switch (gimple_assign_rhs_code (_a1))
18799 : : {
18800 : 2129098 : CASE_CONVERT:
18801 : 2129098 : {
18802 : 2129098 : tree _q20 = gimple_assign_rhs1 (_a1);
18803 : 2129098 : _q20 = do_valueize (valueize, _q20);
18804 : 2129098 : switch (TREE_CODE (_p1))
18805 : : {
18806 : 1514796 : case INTEGER_CST:
18807 : 1514796 : {
18808 : 1514796 : {
18809 : 1514796 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
18810 : 1514796 : if (gimple_simplify_312 (res_op, seq, valueize, type, captures, NE_EXPR))
18811 : 23793 : return true;
18812 : : }
18813 : 1491003 : break;
18814 : : }
18815 : 2105305 : default:;
18816 : : }
18817 : 2105305 : switch (TREE_CODE (_q20))
18818 : : {
18819 : 2094574 : case SSA_NAME:
18820 : 2094574 : if (gimple *_d2 = get_def (valueize, _q20))
18821 : : {
18822 : 2060276 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18823 : 2417475 : switch (gimple_assign_rhs_code (_a2))
18824 : : {
18825 : 39424 : case NE_EXPR:
18826 : 39424 : {
18827 : 39424 : tree _q30 = gimple_assign_rhs1 (_a2);
18828 : 39424 : _q30 = do_valueize (valueize, _q30);
18829 : 39424 : tree _q31 = gimple_assign_rhs2 (_a2);
18830 : 39424 : _q31 = do_valueize (valueize, _q31);
18831 : 39424 : if (tree_swap_operands_p (_q30, _q31))
18832 : 1298 : std::swap (_q30, _q31);
18833 : 39424 : switch (TREE_CODE (_q31))
18834 : : {
18835 : 19980 : case INTEGER_CST:
18836 : 19980 : {
18837 : 19980 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
18838 : : {
18839 : 43 : {
18840 : 43 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
18841 : 43 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
18842 : 34 : return true;
18843 : : }
18844 : : }
18845 : : break;
18846 : : }
18847 : : default:;
18848 : : }
18849 : 127100585 : break;
18850 : : }
18851 : 30167 : case EQ_EXPR:
18852 : 30167 : {
18853 : 30167 : tree _q30 = gimple_assign_rhs1 (_a2);
18854 : 30167 : _q30 = do_valueize (valueize, _q30);
18855 : 30167 : tree _q31 = gimple_assign_rhs2 (_a2);
18856 : 30167 : _q31 = do_valueize (valueize, _q31);
18857 : 30167 : if (tree_swap_operands_p (_q30, _q31))
18858 : 8 : std::swap (_q30, _q31);
18859 : 30167 : switch (TREE_CODE (_q31))
18860 : : {
18861 : 23698 : case INTEGER_CST:
18862 : 23698 : {
18863 : 23698 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
18864 : : {
18865 : 52 : {
18866 : 52 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
18867 : 52 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
18868 : 45 : return true;
18869 : : }
18870 : : }
18871 : : break;
18872 : : }
18873 : : default:;
18874 : : }
18875 : 127100585 : break;
18876 : : }
18877 : : default:;
18878 : : }
18879 : : }
18880 : : break;
18881 : : default:;
18882 : : }
18883 : : break;
18884 : : }
18885 : : default:;
18886 : : }
18887 : : }
18888 : : break;
18889 : 127100585 : default:;
18890 : : }
18891 : 127100585 : switch (TREE_CODE (_p1))
18892 : : {
18893 : 22776795 : case SSA_NAME:
18894 : 22776795 : if (gimple *_d1 = get_def (valueize, _p1))
18895 : : {
18896 : 7099846 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18897 : 10057535 : switch (gimple_assign_rhs_code (_a1))
18898 : : {
18899 : 381150 : CASE_CONVERT:
18900 : 381150 : {
18901 : 381150 : tree _q30 = gimple_assign_rhs1 (_a1);
18902 : 381150 : _q30 = do_valueize (valueize, _q30);
18903 : 381150 : switch (TREE_CODE (_q30))
18904 : : {
18905 : 363743 : case SSA_NAME:
18906 : 363743 : if (gimple *_d2 = get_def (valueize, _q30))
18907 : : {
18908 : 343905 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18909 : 407003 : switch (gimple_assign_rhs_code (_a2))
18910 : : {
18911 : 1171 : case NE_EXPR:
18912 : 1171 : {
18913 : 1171 : tree _q40 = gimple_assign_rhs1 (_a2);
18914 : 1171 : _q40 = do_valueize (valueize, _q40);
18915 : 1171 : tree _q41 = gimple_assign_rhs2 (_a2);
18916 : 1171 : _q41 = do_valueize (valueize, _q41);
18917 : 1171 : if (tree_swap_operands_p (_q40, _q41))
18918 : 0 : std::swap (_q40, _q41);
18919 : 1171 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
18920 : : {
18921 : 2 : switch (TREE_CODE (_q41))
18922 : : {
18923 : 2 : case INTEGER_CST:
18924 : 2 : {
18925 : 2 : {
18926 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
18927 : 2 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
18928 : 2 : return true;
18929 : : }
18930 : 0 : break;
18931 : : }
18932 : : default:;
18933 : : }
18934 : : }
18935 : 127100576 : break;
18936 : : }
18937 : 1983 : case EQ_EXPR:
18938 : 1983 : {
18939 : 1983 : tree _q40 = gimple_assign_rhs1 (_a2);
18940 : 1983 : _q40 = do_valueize (valueize, _q40);
18941 : 1983 : tree _q41 = gimple_assign_rhs2 (_a2);
18942 : 1983 : _q41 = do_valueize (valueize, _q41);
18943 : 1983 : if (tree_swap_operands_p (_q40, _q41))
18944 : 0 : std::swap (_q40, _q41);
18945 : 1983 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
18946 : : {
18947 : 7 : switch (TREE_CODE (_q41))
18948 : : {
18949 : 7 : case INTEGER_CST:
18950 : 7 : {
18951 : 7 : {
18952 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
18953 : 7 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
18954 : 7 : return true;
18955 : : }
18956 : 0 : break;
18957 : : }
18958 : : default:;
18959 : : }
18960 : : }
18961 : 127100576 : break;
18962 : : }
18963 : : default:;
18964 : : }
18965 : : }
18966 : : break;
18967 : : default:;
18968 : : }
18969 : : break;
18970 : : }
18971 : : default:;
18972 : : }
18973 : : }
18974 : : break;
18975 : 127100576 : default:;
18976 : : }
18977 : 127100576 : if (integer_zerop (_p1))
18978 : : {
18979 : 72684123 : {
18980 : 72684123 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
18981 : 72684123 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
18982 : 72684123 : && types_match (type, TREE_TYPE (captures[0]))
18983 : : )
18984 : : {
18985 : 26430296 : gimple_seq *lseq = seq;
18986 : 26430296 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2468;
18987 : 26430296 : {
18988 : 26430296 : tree tem;
18989 : 26430296 : tem = captures[0];
18990 : 26430296 : res_op->set_value (tem);
18991 : 26430296 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1156, __FILE__, __LINE__, true);
18992 : 26430296 : return true;
18993 : : }
18994 : 0 : next_after_fail2468:;
18995 : : }
18996 : : }
18997 : : }
18998 : 100670280 : switch (TREE_CODE (_p0))
18999 : : {
19000 : 99290496 : case SSA_NAME:
19001 : 99290496 : if (gimple *_d1 = get_def (valueize, _p0))
19002 : : {
19003 : 32597943 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19004 : 39276368 : switch (gimple_assign_rhs_code (_a1))
19005 : : {
19006 : 10277 : case COND_EXPR:
19007 : 10277 : {
19008 : 10277 : tree _q20 = gimple_assign_rhs1 (_a1);
19009 : 10277 : _q20 = do_valueize (valueize, _q20);
19010 : 10277 : tree _q21 = gimple_assign_rhs2 (_a1);
19011 : 10277 : _q21 = do_valueize (valueize, _q21);
19012 : 10277 : tree _q22 = gimple_assign_rhs3 (_a1);
19013 : 10277 : _q22 = do_valueize (valueize, _q22);
19014 : 10277 : {
19015 : 10277 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1 };
19016 : 10277 : if (gimple_simplify_314 (res_op, seq, valueize, type, captures, NE_EXPR))
19017 : 1302 : return true;
19018 : : }
19019 : 8975 : break;
19020 : : }
19021 : : default:;
19022 : : }
19023 : : }
19024 : : break;
19025 : 100668978 : default:;
19026 : : }
19027 : 100668978 : switch (TREE_CODE (_p1))
19028 : : {
19029 : 22776786 : case SSA_NAME:
19030 : 22776786 : if (gimple *_d1 = get_def (valueize, _p1))
19031 : : {
19032 : 7099837 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19033 : 10057526 : switch (gimple_assign_rhs_code (_a1))
19034 : : {
19035 : 3373 : case COND_EXPR:
19036 : 3373 : {
19037 : 3373 : tree _q30 = gimple_assign_rhs1 (_a1);
19038 : 3373 : _q30 = do_valueize (valueize, _q30);
19039 : 3373 : tree _q31 = gimple_assign_rhs2 (_a1);
19040 : 3373 : _q31 = do_valueize (valueize, _q31);
19041 : 3373 : tree _q32 = gimple_assign_rhs3 (_a1);
19042 : 3373 : _q32 = do_valueize (valueize, _q32);
19043 : 3373 : {
19044 : 3373 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q32, _p0 };
19045 : 3373 : if (gimple_simplify_314 (res_op, seq, valueize, type, captures, NE_EXPR))
19046 : 0 : return true;
19047 : : }
19048 : 3373 : break;
19049 : : }
19050 : : default:;
19051 : : }
19052 : : }
19053 : : break;
19054 : 100668978 : default:;
19055 : : }
19056 : 100668978 : switch (TREE_CODE (_p0))
19057 : : {
19058 : 99289194 : case SSA_NAME:
19059 : 99289194 : if (gimple *_d1 = get_def (valueize, _p0))
19060 : : {
19061 : 32596641 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19062 : 39275066 : switch (gimple_assign_rhs_code (_a1))
19063 : : {
19064 : 1564202 : case BIT_AND_EXPR:
19065 : 1564202 : {
19066 : 1564202 : tree _q20 = gimple_assign_rhs1 (_a1);
19067 : 1564202 : _q20 = do_valueize (valueize, _q20);
19068 : 1564202 : tree _q21 = gimple_assign_rhs2 (_a1);
19069 : 1564202 : _q21 = do_valueize (valueize, _q21);
19070 : 1564202 : if (tree_swap_operands_p (_q20, _q21))
19071 : 19983 : std::swap (_q20, _q21);
19072 : 1564202 : switch (TREE_CODE (_q21))
19073 : : {
19074 : 12581 : case VECTOR_CST:
19075 : 12581 : {
19076 : 12581 : if (integer_zerop (_p1))
19077 : : {
19078 : 12581 : {
19079 : 12581 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
19080 : 12581 : const enum tree_code cmp = NE_EXPR;
19081 : 12581 : const enum tree_code icmp = GT_EXPR;
19082 : 12581 : {
19083 : 12581 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
19084 : 12581 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
19085 : : )
19086 : : {
19087 : 10 : {
19088 : 10 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
19089 : 10 : ? optab_vector : optab_default;
19090 : 10 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
19091 : 10 : if (target_supports_op_p (utype, icmp, optab)
19092 : 10 : || (optimize_vectors_before_lowering_p ()
19093 : 0 : && (!target_supports_op_p (type, cmp, optab)
19094 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
19095 : : )
19096 : : {
19097 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
19098 : : )
19099 : : {
19100 : 0 : gimple_seq *lseq = seq;
19101 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2469;
19102 : 0 : {
19103 : 0 : res_op->set_op (icmp, type, 2);
19104 : 0 : res_op->ops[0] = captures[1];
19105 : 0 : res_op->ops[1] = csts;
19106 : 0 : res_op->resimplify (lseq, valueize);
19107 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1153, __FILE__, __LINE__, true);
19108 : 0 : return true;
19109 : : }
19110 : 0 : next_after_fail2469:;
19111 : : }
19112 : : else
19113 : : {
19114 : 0 : gimple_seq *lseq = seq;
19115 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2470;
19116 : 0 : {
19117 : 0 : res_op->set_op (icmp, type, 2);
19118 : 0 : {
19119 : 0 : tree _o1[1], _r1;
19120 : 0 : _o1[0] = captures[1];
19121 : 0 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
19122 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
19123 : : {
19124 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
19125 : 0 : tem_op.resimplify (lseq, valueize);
19126 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
19127 : 0 : if (!_r1) goto next_after_fail2470;
19128 : : }
19129 : : else
19130 : : _r1 = _o1[0];
19131 : 0 : res_op->ops[0] = _r1;
19132 : : }
19133 : 0 : res_op->ops[1] = csts;
19134 : 0 : res_op->resimplify (lseq, valueize);
19135 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1154, __FILE__, __LINE__, true);
19136 : 0 : return true;
19137 : : }
19138 : 12581 : next_after_fail2470:;
19139 : : }
19140 : : }
19141 : : }
19142 : : }
19143 : : }
19144 : : }
19145 : : }
19146 : : break;
19147 : : }
19148 : 1317801 : case INTEGER_CST:
19149 : 1317801 : {
19150 : 1317801 : if (integer_zerop (_p1))
19151 : : {
19152 : 1194058 : {
19153 : 1194058 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
19154 : 1194058 : const enum tree_code cmp = NE_EXPR;
19155 : 1194058 : const enum tree_code icmp = GT_EXPR;
19156 : 1194058 : {
19157 : 1194058 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
19158 : 1194058 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
19159 : : )
19160 : : {
19161 : 1971 : {
19162 : 1971 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
19163 : 1971 : ? optab_vector : optab_default;
19164 : 1971 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
19165 : 1971 : if (target_supports_op_p (utype, icmp, optab)
19166 : 1971 : || (optimize_vectors_before_lowering_p ()
19167 : 1716 : && (!target_supports_op_p (type, cmp, optab)
19168 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
19169 : : )
19170 : : {
19171 : 1716 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
19172 : : )
19173 : : {
19174 : 1240 : gimple_seq *lseq = seq;
19175 : 1240 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2471;
19176 : 1240 : {
19177 : 1240 : res_op->set_op (icmp, type, 2);
19178 : 1240 : res_op->ops[0] = captures[1];
19179 : 1240 : res_op->ops[1] = csts;
19180 : 1240 : res_op->resimplify (lseq, valueize);
19181 : 1240 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1153, __FILE__, __LINE__, true);
19182 : 1240 : return true;
19183 : : }
19184 : 0 : next_after_fail2471:;
19185 : : }
19186 : : else
19187 : : {
19188 : 476 : gimple_seq *lseq = seq;
19189 : 476 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2472;
19190 : 476 : {
19191 : 476 : res_op->set_op (icmp, type, 2);
19192 : 476 : {
19193 : 476 : tree _o1[1], _r1;
19194 : 476 : _o1[0] = captures[1];
19195 : 476 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
19196 : 476 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
19197 : : {
19198 : 476 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
19199 : 476 : tem_op.resimplify (lseq, valueize);
19200 : 476 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
19201 : 476 : if (!_r1) goto next_after_fail2472;
19202 : : }
19203 : : else
19204 : : _r1 = _o1[0];
19205 : 458 : res_op->ops[0] = _r1;
19206 : : }
19207 : 458 : res_op->ops[1] = csts;
19208 : 458 : res_op->resimplify (lseq, valueize);
19209 : 458 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1154, __FILE__, __LINE__, true);
19210 : 458 : return true;
19211 : : }
19212 : 1192360 : next_after_fail2472:;
19213 : : }
19214 : : }
19215 : : }
19216 : : }
19217 : : }
19218 : : }
19219 : : }
19220 : : break;
19221 : : }
19222 : 1562504 : default:;
19223 : : }
19224 : 1562504 : switch (TREE_CODE (_q20))
19225 : : {
19226 : 0 : case VECTOR_CST:
19227 : 0 : {
19228 : 0 : if (integer_zerop (_p1))
19229 : : {
19230 : 0 : {
19231 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
19232 : 0 : const enum tree_code cmp = NE_EXPR;
19233 : 0 : const enum tree_code icmp = GT_EXPR;
19234 : 0 : {
19235 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
19236 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
19237 : : )
19238 : : {
19239 : 0 : {
19240 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
19241 : 0 : ? optab_vector : optab_default;
19242 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
19243 : 0 : if (target_supports_op_p (utype, icmp, optab)
19244 : 0 : || (optimize_vectors_before_lowering_p ()
19245 : 0 : && (!target_supports_op_p (type, cmp, optab)
19246 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
19247 : : )
19248 : : {
19249 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
19250 : : )
19251 : : {
19252 : 0 : gimple_seq *lseq = seq;
19253 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2473;
19254 : 0 : {
19255 : 0 : res_op->set_op (icmp, type, 2);
19256 : 0 : res_op->ops[0] = captures[1];
19257 : 0 : res_op->ops[1] = csts;
19258 : 0 : res_op->resimplify (lseq, valueize);
19259 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1153, __FILE__, __LINE__, true);
19260 : 0 : return true;
19261 : : }
19262 : 0 : next_after_fail2473:;
19263 : : }
19264 : : else
19265 : : {
19266 : 0 : gimple_seq *lseq = seq;
19267 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2474;
19268 : 0 : {
19269 : 0 : res_op->set_op (icmp, type, 2);
19270 : 0 : {
19271 : 0 : tree _o1[1], _r1;
19272 : 0 : _o1[0] = captures[1];
19273 : 0 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
19274 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
19275 : : {
19276 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
19277 : 0 : tem_op.resimplify (lseq, valueize);
19278 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
19279 : 0 : if (!_r1) goto next_after_fail2474;
19280 : : }
19281 : : else
19282 : : _r1 = _o1[0];
19283 : 0 : res_op->ops[0] = _r1;
19284 : : }
19285 : 0 : res_op->ops[1] = csts;
19286 : 0 : res_op->resimplify (lseq, valueize);
19287 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1154, __FILE__, __LINE__, true);
19288 : 0 : return true;
19289 : : }
19290 : 0 : next_after_fail2474:;
19291 : : }
19292 : : }
19293 : : }
19294 : : }
19295 : : }
19296 : : }
19297 : : }
19298 : : break;
19299 : : }
19300 : 0 : case INTEGER_CST:
19301 : 0 : {
19302 : 0 : if (integer_zerop (_p1))
19303 : : {
19304 : 0 : {
19305 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
19306 : 0 : const enum tree_code cmp = NE_EXPR;
19307 : 0 : const enum tree_code icmp = GT_EXPR;
19308 : 0 : {
19309 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
19310 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
19311 : : )
19312 : : {
19313 : 0 : {
19314 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
19315 : 0 : ? optab_vector : optab_default;
19316 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
19317 : 0 : if (target_supports_op_p (utype, icmp, optab)
19318 : 0 : || (optimize_vectors_before_lowering_p ()
19319 : 0 : && (!target_supports_op_p (type, cmp, optab)
19320 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
19321 : : )
19322 : : {
19323 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
19324 : : )
19325 : : {
19326 : 0 : gimple_seq *lseq = seq;
19327 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2475;
19328 : 0 : {
19329 : 0 : res_op->set_op (icmp, type, 2);
19330 : 0 : res_op->ops[0] = captures[1];
19331 : 0 : res_op->ops[1] = csts;
19332 : 0 : res_op->resimplify (lseq, valueize);
19333 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1153, __FILE__, __LINE__, true);
19334 : 0 : return true;
19335 : : }
19336 : 0 : next_after_fail2475:;
19337 : : }
19338 : : else
19339 : : {
19340 : 0 : gimple_seq *lseq = seq;
19341 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2476;
19342 : 0 : {
19343 : 0 : res_op->set_op (icmp, type, 2);
19344 : 0 : {
19345 : 0 : tree _o1[1], _r1;
19346 : 0 : _o1[0] = captures[1];
19347 : 0 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
19348 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
19349 : : {
19350 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
19351 : 0 : tem_op.resimplify (lseq, valueize);
19352 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
19353 : 0 : if (!_r1) goto next_after_fail2476;
19354 : : }
19355 : : else
19356 : : _r1 = _o1[0];
19357 : 0 : res_op->ops[0] = _r1;
19358 : : }
19359 : 0 : res_op->ops[1] = csts;
19360 : 0 : res_op->resimplify (lseq, valueize);
19361 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1154, __FILE__, __LINE__, true);
19362 : 0 : return true;
19363 : : }
19364 : 0 : next_after_fail2476:;
19365 : : }
19366 : : }
19367 : : }
19368 : : }
19369 : : }
19370 : : }
19371 : : }
19372 : : break;
19373 : : }
19374 : : default:;
19375 : : }
19376 : 129526508 : break;
19377 : : }
19378 : 54166 : case RSHIFT_EXPR:
19379 : 54166 : {
19380 : 54166 : tree _q20 = gimple_assign_rhs1 (_a1);
19381 : 54166 : _q20 = do_valueize (valueize, _q20);
19382 : 54166 : tree _q21 = gimple_assign_rhs2 (_a1);
19383 : 54166 : _q21 = do_valueize (valueize, _q21);
19384 : 54166 : switch (TREE_CODE (_q20))
19385 : : {
19386 : 53640 : case SSA_NAME:
19387 : 53640 : if (gimple *_d2 = get_def (valueize, _q20))
19388 : : {
19389 : 52246 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19390 : 37764 : switch (gimple_assign_rhs_code (_a2))
19391 : : {
19392 : 302 : case MULT_EXPR:
19393 : 302 : {
19394 : 302 : tree _q30 = gimple_assign_rhs1 (_a2);
19395 : 302 : _q30 = do_valueize (valueize, _q30);
19396 : 302 : tree _q31 = gimple_assign_rhs2 (_a2);
19397 : 302 : _q31 = do_valueize (valueize, _q31);
19398 : 302 : if (tree_swap_operands_p (_q30, _q31))
19399 : 4 : std::swap (_q30, _q31);
19400 : 302 : switch (TREE_CODE (_q30))
19401 : : {
19402 : 302 : case SSA_NAME:
19403 : 302 : if (gimple *_d3 = get_def (valueize, _q30))
19404 : : {
19405 : 302 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
19406 : 296 : switch (gimple_assign_rhs_code (_a3))
19407 : : {
19408 : 152 : CASE_CONVERT:
19409 : 152 : {
19410 : 152 : tree _q40 = gimple_assign_rhs1 (_a3);
19411 : 152 : _q40 = do_valueize (valueize, _q40);
19412 : 152 : switch (TREE_CODE (_q31))
19413 : : {
19414 : 30 : case SSA_NAME:
19415 : 30 : if (gimple *_d4 = get_def (valueize, _q31))
19416 : : {
19417 : 30 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
19418 : 30 : switch (gimple_assign_rhs_code (_a4))
19419 : : {
19420 : 30 : CASE_CONVERT:
19421 : 30 : {
19422 : 30 : tree _q60 = gimple_assign_rhs1 (_a4);
19423 : 30 : _q60 = do_valueize (valueize, _q60);
19424 : 30 : switch (TREE_CODE (_q21))
19425 : : {
19426 : 30 : case INTEGER_CST:
19427 : 30 : {
19428 : 30 : if (integer_zerop (_p1))
19429 : : {
19430 : 0 : {
19431 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
19432 : 0 : if (gimple_simplify_315 (res_op, seq, valueize, type, captures, NE_EXPR))
19433 : 0 : return true;
19434 : : }
19435 : : }
19436 : : break;
19437 : : }
19438 : : default:;
19439 : : }
19440 : : break;
19441 : : }
19442 : : default:;
19443 : : }
19444 : : }
19445 : : break;
19446 : : default:;
19447 : : }
19448 : : break;
19449 : : }
19450 : : default:;
19451 : : }
19452 : : }
19453 : : break;
19454 : : default:;
19455 : : }
19456 : 129526508 : break;
19457 : : }
19458 : : default:;
19459 : : }
19460 : : }
19461 : : break;
19462 : : default:;
19463 : : }
19464 : : break;
19465 : : }
19466 : 1598279 : case PLUS_EXPR:
19467 : 1598279 : {
19468 : 1598279 : tree _q20 = gimple_assign_rhs1 (_a1);
19469 : 1598279 : _q20 = do_valueize (valueize, _q20);
19470 : 1598279 : tree _q21 = gimple_assign_rhs2 (_a1);
19471 : 1598279 : _q21 = do_valueize (valueize, _q21);
19472 : 1598279 : if (tree_swap_operands_p (_q20, _q21))
19473 : 9227 : std::swap (_q20, _q21);
19474 : 1598279 : switch (TREE_CODE (_q21))
19475 : : {
19476 : 1393621 : case INTEGER_CST:
19477 : 1393621 : {
19478 : 1393621 : switch (TREE_CODE (_p1))
19479 : : {
19480 : 971174 : case INTEGER_CST:
19481 : 971174 : {
19482 : 971174 : {
19483 : 971174 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19484 : 971174 : if (gimple_simplify_316 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR))
19485 : 38499 : return true;
19486 : : }
19487 : 932675 : break;
19488 : : }
19489 : : default:;
19490 : : }
19491 : : break;
19492 : : }
19493 : : default:;
19494 : : }
19495 : 129526508 : break;
19496 : : }
19497 : 198794 : case MINUS_EXPR:
19498 : 198794 : {
19499 : 198794 : tree _q20 = gimple_assign_rhs1 (_a1);
19500 : 198794 : _q20 = do_valueize (valueize, _q20);
19501 : 198794 : tree _q21 = gimple_assign_rhs2 (_a1);
19502 : 198794 : _q21 = do_valueize (valueize, _q21);
19503 : 198794 : switch (TREE_CODE (_q21))
19504 : : {
19505 : 39119 : case INTEGER_CST:
19506 : 39119 : {
19507 : 39119 : switch (TREE_CODE (_p1))
19508 : : {
19509 : 36894 : case INTEGER_CST:
19510 : 36894 : {
19511 : 36894 : {
19512 : 36894 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19513 : 36894 : if (gimple_simplify_316 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR))
19514 : 18 : return true;
19515 : : }
19516 : 36876 : break;
19517 : : }
19518 : : default:;
19519 : : }
19520 : : break;
19521 : : }
19522 : 198776 : default:;
19523 : : }
19524 : 198776 : switch (TREE_CODE (_q20))
19525 : : {
19526 : 4595 : case INTEGER_CST:
19527 : 4595 : {
19528 : 4595 : switch (TREE_CODE (_p1))
19529 : : {
19530 : 2642 : case INTEGER_CST:
19531 : 2642 : {
19532 : 2642 : {
19533 : 2642 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19534 : 2642 : if (gimple_simplify_317 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
19535 : 2642 : return true;
19536 : : }
19537 : 0 : break;
19538 : : }
19539 : : default:;
19540 : : }
19541 : : break;
19542 : : }
19543 : : default:;
19544 : : }
19545 : : break;
19546 : : }
19547 : : default:;
19548 : : }
19549 : 9916020 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
19550 : 5449209 : switch (gimple_call_combined_fn (_c1))
19551 : : {
19552 : 2531 : case CFN_BUILT_IN_CLZ:
19553 : 2531 : if (gimple_call_num_args (_c1) == 1)
19554 : : {
19555 : 2531 : tree _q20 = gimple_call_arg (_c1, 0);
19556 : 2531 : _q20 = do_valueize (valueize, _q20);
19557 : 2531 : switch (TREE_CODE (_p1))
19558 : : {
19559 : 2163 : case INTEGER_CST:
19560 : 2163 : {
19561 : 2163 : {
19562 : 2163 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19563 : 2163 : if (gimple_simplify_318 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZ))
19564 : 1665 : return true;
19565 : : }
19566 : 498 : break;
19567 : : }
19568 : : default:;
19569 : : }
19570 : : }
19571 : : break;
19572 : 290 : case CFN_BUILT_IN_CTZ:
19573 : 290 : if (gimple_call_num_args (_c1) == 1)
19574 : : {
19575 : 290 : tree _q20 = gimple_call_arg (_c1, 0);
19576 : 290 : _q20 = do_valueize (valueize, _q20);
19577 : 290 : switch (TREE_CODE (_p1))
19578 : : {
19579 : 3 : case INTEGER_CST:
19580 : 3 : {
19581 : 3 : {
19582 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19583 : 3 : if (gimple_simplify_320 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_CTZ))
19584 : 3 : return true;
19585 : : }
19586 : 0 : break;
19587 : : }
19588 : : default:;
19589 : : }
19590 : : }
19591 : : break;
19592 : 481 : case CFN_BUILT_IN_FFS:
19593 : 481 : if (gimple_call_num_args (_c1) == 1)
19594 : : {
19595 : 481 : tree _q20 = gimple_call_arg (_c1, 0);
19596 : 481 : _q20 = do_valueize (valueize, _q20);
19597 : 481 : switch (TREE_CODE (_p1))
19598 : : {
19599 : 14 : case INTEGER_CST:
19600 : 14 : {
19601 : 14 : {
19602 : 14 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19603 : 14 : if (gimple_simplify_323 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_FFS))
19604 : 14 : return true;
19605 : : }
19606 : 0 : break;
19607 : : }
19608 : : default:;
19609 : : }
19610 : : }
19611 : : break;
19612 : 3093 : case CFN_REDUC_IOR:
19613 : 3093 : if (gimple_call_num_args (_c1) == 1)
19614 : : {
19615 : 3093 : tree _q20 = gimple_call_arg (_c1, 0);
19616 : 3093 : _q20 = do_valueize (valueize, _q20);
19617 : 3093 : if (integer_zerop (_p1))
19618 : : {
19619 : 3083 : {
19620 : 3083 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19621 : 3083 : if (gimple_simplify_324 (res_op, seq, valueize, type, captures, NE_EXPR))
19622 : 24 : return true;
19623 : : }
19624 : : }
19625 : : }
19626 : : break;
19627 : 0 : case CFN_BUILT_IN_FFSIMAX:
19628 : 0 : if (gimple_call_num_args (_c1) == 1)
19629 : : {
19630 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19631 : 0 : _q20 = do_valueize (valueize, _q20);
19632 : 0 : switch (TREE_CODE (_p1))
19633 : : {
19634 : 0 : case INTEGER_CST:
19635 : 0 : {
19636 : 0 : {
19637 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19638 : 0 : if (gimple_simplify_323 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_FFSIMAX))
19639 : 0 : return true;
19640 : : }
19641 : 0 : break;
19642 : : }
19643 : : default:;
19644 : : }
19645 : : }
19646 : : break;
19647 : 244 : case CFN_BUILT_IN_POPCOUNT:
19648 : 244 : if (gimple_call_num_args (_c1) == 1)
19649 : : {
19650 : 244 : tree _q20 = gimple_call_arg (_c1, 0);
19651 : 244 : _q20 = do_valueize (valueize, _q20);
19652 : 244 : if (integer_zerop (_p1))
19653 : : {
19654 : 3 : {
19655 : 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19656 : 3 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT))
19657 : 3 : return true;
19658 : : }
19659 : : }
19660 : : }
19661 : : break;
19662 : 1687 : case CFN_BUILT_IN_CLZL:
19663 : 1687 : if (gimple_call_num_args (_c1) == 1)
19664 : : {
19665 : 1687 : tree _q20 = gimple_call_arg (_c1, 0);
19666 : 1687 : _q20 = do_valueize (valueize, _q20);
19667 : 1687 : switch (TREE_CODE (_p1))
19668 : : {
19669 : 1525 : case INTEGER_CST:
19670 : 1525 : {
19671 : 1525 : {
19672 : 1525 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19673 : 1525 : if (gimple_simplify_318 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZL))
19674 : 1258 : return true;
19675 : : }
19676 : 267 : break;
19677 : : }
19678 : : default:;
19679 : : }
19680 : : }
19681 : : break;
19682 : 190 : case CFN_BUILT_IN_CTZL:
19683 : 190 : if (gimple_call_num_args (_c1) == 1)
19684 : : {
19685 : 190 : tree _q20 = gimple_call_arg (_c1, 0);
19686 : 190 : _q20 = do_valueize (valueize, _q20);
19687 : 190 : switch (TREE_CODE (_p1))
19688 : : {
19689 : 12 : case INTEGER_CST:
19690 : 12 : {
19691 : 12 : {
19692 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19693 : 12 : if (gimple_simplify_320 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_CTZL))
19694 : 6 : return true;
19695 : : }
19696 : 6 : break;
19697 : : }
19698 : : default:;
19699 : : }
19700 : : }
19701 : : break;
19702 : 141 : case CFN_BUILT_IN_FFSL:
19703 : 141 : if (gimple_call_num_args (_c1) == 1)
19704 : : {
19705 : 141 : tree _q20 = gimple_call_arg (_c1, 0);
19706 : 141 : _q20 = do_valueize (valueize, _q20);
19707 : 141 : switch (TREE_CODE (_p1))
19708 : : {
19709 : 0 : case INTEGER_CST:
19710 : 0 : {
19711 : 0 : {
19712 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19713 : 0 : if (gimple_simplify_323 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_FFSL))
19714 : 0 : return true;
19715 : : }
19716 : 0 : break;
19717 : : }
19718 : : default:;
19719 : : }
19720 : : }
19721 : : break;
19722 : 252 : case CFN_BUILT_IN_POPCOUNTLL:
19723 : 252 : if (gimple_call_num_args (_c1) == 1)
19724 : : {
19725 : 252 : tree _q20 = gimple_call_arg (_c1, 0);
19726 : 252 : _q20 = do_valueize (valueize, _q20);
19727 : 252 : if (integer_zerop (_p1))
19728 : : {
19729 : 1 : {
19730 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19731 : 1 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL))
19732 : 1 : return true;
19733 : : }
19734 : : }
19735 : : }
19736 : : break;
19737 : 0 : case CFN_BUILT_IN_CTZIMAX:
19738 : 0 : if (gimple_call_num_args (_c1) == 1)
19739 : : {
19740 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19741 : 0 : _q20 = do_valueize (valueize, _q20);
19742 : 0 : switch (TREE_CODE (_p1))
19743 : : {
19744 : 0 : case INTEGER_CST:
19745 : 0 : {
19746 : 0 : {
19747 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19748 : 0 : if (gimple_simplify_320 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_CTZIMAX))
19749 : 0 : return true;
19750 : : }
19751 : 0 : break;
19752 : : }
19753 : : default:;
19754 : : }
19755 : : }
19756 : : break;
19757 : 0 : case CFN_POPCOUNT:
19758 : 0 : if (gimple_call_num_args (_c1) == 1)
19759 : : {
19760 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19761 : 0 : _q20 = do_valueize (valueize, _q20);
19762 : 0 : if (integer_zerop (_p1))
19763 : : {
19764 : 0 : {
19765 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19766 : 0 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_POPCOUNT))
19767 : 0 : return true;
19768 : : }
19769 : : }
19770 : : }
19771 : : break;
19772 : 31 : case CFN_CLZ:
19773 : 31 : if (gimple_call_num_args (_c1) == 1)
19774 : : {
19775 : 31 : tree _q20 = gimple_call_arg (_c1, 0);
19776 : 31 : _q20 = do_valueize (valueize, _q20);
19777 : 31 : switch (TREE_CODE (_p1))
19778 : : {
19779 : 31 : case INTEGER_CST:
19780 : 31 : {
19781 : 31 : {
19782 : 31 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19783 : 31 : if (gimple_simplify_318 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR, CFN_CLZ))
19784 : 31 : return true;
19785 : : }
19786 : 0 : break;
19787 : : }
19788 : : default:;
19789 : : }
19790 : : }
19791 : 0 : if (gimple_call_num_args (_c1) == 2)
19792 : : {
19793 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19794 : 0 : _q20 = do_valueize (valueize, _q20);
19795 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
19796 : 0 : _q21 = do_valueize (valueize, _q21);
19797 : 0 : switch (TREE_CODE (_p1))
19798 : : {
19799 : 0 : case INTEGER_CST:
19800 : 0 : {
19801 : 0 : {
19802 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19803 : 0 : if (gimple_simplify_319 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR))
19804 : 0 : return true;
19805 : : }
19806 : 0 : break;
19807 : : }
19808 : : default:;
19809 : : }
19810 : : }
19811 : : break;
19812 : 0 : case CFN_CTZ:
19813 : 0 : if (gimple_call_num_args (_c1) == 1)
19814 : : {
19815 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19816 : 0 : _q20 = do_valueize (valueize, _q20);
19817 : 0 : switch (TREE_CODE (_p1))
19818 : : {
19819 : 0 : case INTEGER_CST:
19820 : 0 : {
19821 : 0 : {
19822 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19823 : 0 : if (gimple_simplify_320 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_CTZ))
19824 : 0 : return true;
19825 : : }
19826 : 0 : break;
19827 : : }
19828 : : default:;
19829 : : }
19830 : : }
19831 : 0 : if (gimple_call_num_args (_c1) == 2)
19832 : : {
19833 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19834 : 0 : _q20 = do_valueize (valueize, _q20);
19835 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
19836 : 0 : _q21 = do_valueize (valueize, _q21);
19837 : 0 : switch (TREE_CODE (_p1))
19838 : : {
19839 : 0 : case INTEGER_CST:
19840 : 0 : {
19841 : 0 : {
19842 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19843 : 0 : if (gimple_simplify_321 (res_op, seq, valueize, type, captures, NE_EXPR))
19844 : 0 : return true;
19845 : : }
19846 : 0 : break;
19847 : : }
19848 : : default:;
19849 : : }
19850 : : }
19851 : : break;
19852 : 0 : case CFN_FFS:
19853 : 0 : if (gimple_call_num_args (_c1) == 1)
19854 : : {
19855 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19856 : 0 : _q20 = do_valueize (valueize, _q20);
19857 : 0 : switch (TREE_CODE (_p1))
19858 : : {
19859 : 0 : case INTEGER_CST:
19860 : 0 : {
19861 : 0 : {
19862 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19863 : 0 : if (gimple_simplify_323 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_FFS))
19864 : 0 : return true;
19865 : : }
19866 : 0 : break;
19867 : : }
19868 : : default:;
19869 : : }
19870 : : }
19871 : : break;
19872 : 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
19873 : 0 : if (gimple_call_num_args (_c1) == 1)
19874 : : {
19875 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19876 : 0 : _q20 = do_valueize (valueize, _q20);
19877 : 0 : if (integer_zerop (_p1))
19878 : : {
19879 : 0 : {
19880 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19881 : 0 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX))
19882 : 0 : return true;
19883 : : }
19884 : : }
19885 : : }
19886 : : break;
19887 : 0 : case CFN_BUILT_IN_CLZIMAX:
19888 : 0 : if (gimple_call_num_args (_c1) == 1)
19889 : : {
19890 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19891 : 0 : _q20 = do_valueize (valueize, _q20);
19892 : 0 : switch (TREE_CODE (_p1))
19893 : : {
19894 : 0 : case INTEGER_CST:
19895 : 0 : {
19896 : 0 : {
19897 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19898 : 0 : if (gimple_simplify_318 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZIMAX))
19899 : 0 : return true;
19900 : : }
19901 : 0 : break;
19902 : : }
19903 : : default:;
19904 : : }
19905 : : }
19906 : : break;
19907 : 215 : case CFN_BUILT_IN_POPCOUNTL:
19908 : 215 : if (gimple_call_num_args (_c1) == 1)
19909 : : {
19910 : 215 : tree _q20 = gimple_call_arg (_c1, 0);
19911 : 215 : _q20 = do_valueize (valueize, _q20);
19912 : 215 : if (integer_zerop (_p1))
19913 : : {
19914 : 1 : {
19915 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19916 : 1 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL))
19917 : 1 : return true;
19918 : : }
19919 : : }
19920 : : }
19921 : : break;
19922 : 334 : case CFN_BUILT_IN_CLZLL:
19923 : 334 : if (gimple_call_num_args (_c1) == 1)
19924 : : {
19925 : 334 : tree _q20 = gimple_call_arg (_c1, 0);
19926 : 334 : _q20 = do_valueize (valueize, _q20);
19927 : 334 : switch (TREE_CODE (_p1))
19928 : : {
19929 : 114 : case INTEGER_CST:
19930 : 114 : {
19931 : 114 : {
19932 : 114 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19933 : 114 : if (gimple_simplify_318 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZLL))
19934 : 0 : return true;
19935 : : }
19936 : 114 : break;
19937 : : }
19938 : : default:;
19939 : : }
19940 : : }
19941 : : break;
19942 : 274 : case CFN_BUILT_IN_CTZLL:
19943 : 274 : if (gimple_call_num_args (_c1) == 1)
19944 : : {
19945 : 274 : tree _q20 = gimple_call_arg (_c1, 0);
19946 : 274 : _q20 = do_valueize (valueize, _q20);
19947 : 274 : switch (TREE_CODE (_p1))
19948 : : {
19949 : 21 : case INTEGER_CST:
19950 : 21 : {
19951 : 21 : {
19952 : 21 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19953 : 21 : if (gimple_simplify_320 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_CTZLL))
19954 : 6 : return true;
19955 : : }
19956 : 15 : break;
19957 : : }
19958 : : default:;
19959 : : }
19960 : : }
19961 : : break;
19962 : 192 : case CFN_BUILT_IN_FFSLL:
19963 : 192 : if (gimple_call_num_args (_c1) == 1)
19964 : : {
19965 : 192 : tree _q20 = gimple_call_arg (_c1, 0);
19966 : 192 : _q20 = do_valueize (valueize, _q20);
19967 : 192 : switch (TREE_CODE (_p1))
19968 : : {
19969 : 0 : case INTEGER_CST:
19970 : 0 : {
19971 : 0 : {
19972 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19973 : 0 : if (gimple_simplify_323 (res_op, seq, valueize, type, captures, NE_EXPR, CFN_BUILT_IN_FFSLL))
19974 : 0 : return true;
19975 : : }
19976 : 0 : break;
19977 : : }
19978 : : default:;
19979 : : }
19980 : : }
19981 : : break;
19982 : : default:;
19983 : : }
19984 : : }
19985 : : break;
19986 : : default:;
19987 : : }
19988 : : return false;
19989 : : }
19990 : :
19991 : : bool
19992 : 1828085 : gimple_simplify_LSHIFT_EXPR (gimple_match_op *res_op, gimple_seq *seq,
19993 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
19994 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
19995 : : {
19996 : 1828085 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
19997 : 1828085 : switch (TREE_CODE (_p1))
19998 : : {
19999 : 686103 : case SSA_NAME:
20000 : 686103 : if (gimple *_d1 = get_def (valueize, _p1))
20001 : : {
20002 : 409360 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20003 : 350573 : switch (gimple_assign_rhs_code (_a1))
20004 : : {
20005 : 686 : case TRUNC_MOD_EXPR:
20006 : 686 : {
20007 : 686 : tree _q30 = gimple_assign_rhs1 (_a1);
20008 : 686 : _q30 = do_valueize (valueize, _q30);
20009 : 686 : tree _q31 = gimple_assign_rhs2 (_a1);
20010 : 686 : _q31 = do_valueize (valueize, _q31);
20011 : 686 : {
20012 : 686 : tree _q31_pops[1];
20013 : 686 : if (gimple_power_of_two_cand (_q31, _q31_pops, valueize))
20014 : : {
20015 : 668 : tree _q50 = _q31_pops[0];
20016 : 668 : {
20017 : 668 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
20018 : 668 : if (gimple_simplify_495 (res_op, seq, valueize, type, captures, LSHIFT_EXPR, TRUNC_MOD_EXPR))
20019 : 92 : return true;
20020 : : }
20021 : : }
20022 : : }
20023 : 594 : break;
20024 : : }
20025 : 0 : case FLOOR_MOD_EXPR:
20026 : 0 : {
20027 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
20028 : 0 : _q30 = do_valueize (valueize, _q30);
20029 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
20030 : 0 : _q31 = do_valueize (valueize, _q31);
20031 : 0 : {
20032 : 0 : tree _q31_pops[1];
20033 : 0 : if (gimple_power_of_two_cand (_q31, _q31_pops, valueize))
20034 : : {
20035 : 0 : tree _q50 = _q31_pops[0];
20036 : 0 : {
20037 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
20038 : 0 : if (gimple_simplify_495 (res_op, seq, valueize, type, captures, LSHIFT_EXPR, FLOOR_MOD_EXPR))
20039 : 0 : return true;
20040 : : }
20041 : : }
20042 : : }
20043 : 0 : break;
20044 : : }
20045 : : default:;
20046 : : }
20047 : : }
20048 : : break;
20049 : 1827993 : default:;
20050 : : }
20051 : 1827993 : if (uniform_integer_cst_p (_p1))
20052 : : {
20053 : 1128854 : {
20054 : 1128854 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20055 : 1128854 : if (gimple_simplify_496 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20056 : 106 : return true;
20057 : : }
20058 : : }
20059 : 1827887 : switch (TREE_CODE (_p0))
20060 : : {
20061 : 1297418 : case SSA_NAME:
20062 : 1297418 : if (gimple *_d1 = get_def (valueize, _p0))
20063 : : {
20064 : 775026 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20065 : 748118 : switch (gimple_assign_rhs_code (_a1))
20066 : : {
20067 : 298287 : CASE_CONVERT:
20068 : 298287 : {
20069 : 298287 : tree _q20 = gimple_assign_rhs1 (_a1);
20070 : 298287 : _q20 = do_valueize (valueize, _q20);
20071 : 298287 : switch (TREE_CODE (_q20))
20072 : : {
20073 : 298287 : case SSA_NAME:
20074 : 298287 : if (gimple *_d2 = get_def (valueize, _q20))
20075 : : {
20076 : 283662 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20077 : 366348 : switch (gimple_assign_rhs_code (_a2))
20078 : : {
20079 : 1185 : case LT_EXPR:
20080 : 1185 : {
20081 : 1185 : tree _q30 = gimple_assign_rhs1 (_a2);
20082 : 1185 : _q30 = do_valueize (valueize, _q30);
20083 : 1185 : tree _q31 = gimple_assign_rhs2 (_a2);
20084 : 1185 : _q31 = do_valueize (valueize, _q31);
20085 : 1185 : if (integer_zerop (_q31))
20086 : : {
20087 : 198 : switch (TREE_CODE (_p1))
20088 : : {
20089 : 198 : case INTEGER_CST:
20090 : 198 : {
20091 : 198 : {
20092 : 198 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
20093 : 198 : if (TYPE_SIGN (TREE_TYPE (captures[0])) == SIGNED
20094 : 198 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])) - 1)
20095 : : )
20096 : : {
20097 : 9 : {
20098 : 9 : wide_int wone = wi::one (TYPE_PRECISION (type));
20099 : 9 : gimple_seq *lseq = seq;
20100 : 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2586;
20101 : 9 : {
20102 : 9 : res_op->set_op (BIT_AND_EXPR, type, 2);
20103 : 9 : {
20104 : 9 : tree _o1[1], _r1;
20105 : 9 : _o1[0] = captures[0];
20106 : 9 : if (type != TREE_TYPE (_o1[0]) /* XXX */
20107 : 9 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
20108 : : {
20109 : 5 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
20110 : 5 : tem_op.resimplify (lseq, valueize);
20111 : 5 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20112 : 5 : if (!_r1) goto next_after_fail2586;
20113 : : }
20114 : : else
20115 : : _r1 = _o1[0];
20116 : 8 : res_op->ops[0] = _r1;
20117 : : }
20118 : 8 : res_op->ops[1] = wide_int_to_tree (type,
20119 : 8 : wi::lshift (wone, wi::to_wide (captures[2])));
20120 : 8 : res_op->resimplify (lseq, valueize);
20121 : 8 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1176, __FILE__, __LINE__, true);
20122 : 8 : return true;
20123 : : }
20124 : 1 : next_after_fail2586:;
20125 : 9 : }
20126 : : }
20127 : : }
20128 : 190 : break;
20129 : : }
20130 : : default:;
20131 : : }
20132 : : }
20133 : : break;
20134 : : }
20135 : 4892 : CASE_CONVERT:
20136 : 4892 : {
20137 : 4892 : tree _q30 = gimple_assign_rhs1 (_a2);
20138 : 4892 : _q30 = do_valueize (valueize, _q30);
20139 : 4892 : switch (TREE_CODE (_q30))
20140 : : {
20141 : 4842 : case SSA_NAME:
20142 : 4842 : if (gimple *_d3 = get_def (valueize, _q30))
20143 : : {
20144 : 4757 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
20145 : 6624 : switch (gimple_assign_rhs_code (_a3))
20146 : : {
20147 : 962 : case RSHIFT_EXPR:
20148 : 962 : {
20149 : 962 : tree _q40 = gimple_assign_rhs1 (_a3);
20150 : 962 : _q40 = do_valueize (valueize, _q40);
20151 : 962 : tree _q41 = gimple_assign_rhs2 (_a3);
20152 : 962 : _q41 = do_valueize (valueize, _q41);
20153 : 962 : switch (TREE_CODE (_q41))
20154 : : {
20155 : 915 : case INTEGER_CST:
20156 : 915 : {
20157 : 915 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
20158 : : {
20159 : 414 : {
20160 : 414 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
20161 : 414 : if (wi::ltu_p (wi::to_wide (captures[2]), element_precision (type))
20162 : 414 : && INTEGRAL_TYPE_P (type)
20163 : 414 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
20164 : 414 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
20165 : 414 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[1]))
20166 : 775 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) >= TYPE_PRECISION (type)
20167 : 343 : || wi::geu_p (wi::to_wide (captures[2]),
20168 : 343 : TYPE_PRECISION (type)
20169 : 404 : - TYPE_PRECISION (TREE_TYPE (captures[0]))))
20170 : : )
20171 : : {
20172 : 353 : gimple_seq *lseq = seq;
20173 : 353 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2587;
20174 : 353 : {
20175 : 353 : res_op->set_op (BIT_AND_EXPR, type, 2);
20176 : 353 : {
20177 : 353 : tree _o1[1], _r1;
20178 : 353 : _o1[0] = captures[1];
20179 : 353 : if (type != TREE_TYPE (_o1[0]) /* XXX */
20180 : 353 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
20181 : : {
20182 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
20183 : 0 : tem_op.resimplify (lseq, valueize);
20184 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20185 : 0 : if (!_r1) goto next_after_fail2587;
20186 : : }
20187 : : else
20188 : : _r1 = _o1[0];
20189 : 353 : res_op->ops[0] = _r1;
20190 : : }
20191 : 353 : {
20192 : 353 : tree _o1[2], _r1;
20193 : 353 : _o1[0] = build_minus_one_cst (type);
20194 : 353 : _o1[1] = captures[2];
20195 : 353 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20196 : 353 : tem_op.resimplify (lseq, valueize);
20197 : 353 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20198 : 353 : if (!_r1) goto next_after_fail2587;
20199 : 353 : res_op->ops[1] = _r1;
20200 : : }
20201 : 353 : res_op->resimplify (lseq, valueize);
20202 : 353 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1177, __FILE__, __LINE__, true);
20203 : 353 : return true;
20204 : : }
20205 : 61 : next_after_fail2587:;
20206 : : }
20207 : : }
20208 : : }
20209 : : break;
20210 : : }
20211 : : default:;
20212 : : }
20213 : : break;
20214 : : }
20215 : : default:;
20216 : : }
20217 : : }
20218 : : break;
20219 : : default:;
20220 : : }
20221 : : break;
20222 : : }
20223 : 6582 : case RSHIFT_EXPR:
20224 : 6582 : {
20225 : 6582 : tree _q30 = gimple_assign_rhs1 (_a2);
20226 : 6582 : _q30 = do_valueize (valueize, _q30);
20227 : 6582 : tree _q31 = gimple_assign_rhs2 (_a2);
20228 : 6582 : _q31 = do_valueize (valueize, _q31);
20229 : 6582 : if (gimple_with_possible_nonzero_bits (_q30, valueize))
20230 : : {
20231 : 6582 : switch (TREE_CODE (_q31))
20232 : : {
20233 : 6351 : case INTEGER_CST:
20234 : 6351 : {
20235 : 6351 : switch (TREE_CODE (_p1))
20236 : : {
20237 : 5632 : case INTEGER_CST:
20238 : 5632 : {
20239 : 5632 : {
20240 : 5632 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
20241 : 5632 : if (gimple_simplify_497 (res_op, seq, valueize, type, captures))
20242 : 3 : return true;
20243 : : }
20244 : 5629 : break;
20245 : : }
20246 : : default:;
20247 : : }
20248 : : break;
20249 : : }
20250 : : default:;
20251 : : }
20252 : : }
20253 : : break;
20254 : : }
20255 : : default:;
20256 : : }
20257 : : }
20258 : : break;
20259 : : default:;
20260 : : }
20261 : : break;
20262 : : }
20263 : 8963 : case RSHIFT_EXPR:
20264 : 8963 : {
20265 : 8963 : tree _q20 = gimple_assign_rhs1 (_a1);
20266 : 8963 : _q20 = do_valueize (valueize, _q20);
20267 : 8963 : tree _q21 = gimple_assign_rhs2 (_a1);
20268 : 8963 : _q21 = do_valueize (valueize, _q21);
20269 : 8963 : switch (TREE_CODE (_q21))
20270 : : {
20271 : 6901 : case INTEGER_CST:
20272 : 6901 : {
20273 : 6901 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
20274 : : {
20275 : 2918 : {
20276 : 2918 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
20277 : 2918 : if (gimple_simplify_498 (res_op, seq, valueize, type, captures))
20278 : 2918 : return true;
20279 : : }
20280 : : }
20281 : : break;
20282 : : }
20283 : 6045 : default:;
20284 : : }
20285 : 6045 : if (gimple_with_possible_nonzero_bits (_q20, valueize))
20286 : : {
20287 : 5718 : switch (TREE_CODE (_q21))
20288 : : {
20289 : 3815 : case INTEGER_CST:
20290 : 3815 : {
20291 : 3815 : switch (TREE_CODE (_p1))
20292 : : {
20293 : 3658 : case INTEGER_CST:
20294 : 3658 : {
20295 : 3658 : {
20296 : 3658 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
20297 : 3658 : if (gimple_simplify_497 (res_op, seq, valueize, type, captures))
20298 : 16 : return true;
20299 : : }
20300 : 3642 : break;
20301 : : }
20302 : : default:;
20303 : : }
20304 : : break;
20305 : : }
20306 : : default:;
20307 : : }
20308 : : }
20309 : : break;
20310 : : }
20311 : : default:;
20312 : : }
20313 : : }
20314 : : break;
20315 : 1824589 : default:;
20316 : : }
20317 : 1824589 : {
20318 : 1824589 : tree _p0_pops[1];
20319 : 1824589 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
20320 : : {
20321 : 25151 : tree _q20 = _p0_pops[0];
20322 : 25151 : switch (TREE_CODE (_q20))
20323 : : {
20324 : 25151 : case SSA_NAME:
20325 : 25151 : if (gimple *_d1 = get_def (valueize, _q20))
20326 : : {
20327 : 23721 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20328 : 22128 : switch (gimple_assign_rhs_code (_a1))
20329 : : {
20330 : 2353 : case RSHIFT_EXPR:
20331 : 2353 : {
20332 : 2353 : tree _q30 = gimple_assign_rhs1 (_a1);
20333 : 2353 : _q30 = do_valueize (valueize, _q30);
20334 : 2353 : tree _q31 = gimple_assign_rhs2 (_a1);
20335 : 2353 : _q31 = do_valueize (valueize, _q31);
20336 : 2353 : switch (TREE_CODE (_q31))
20337 : : {
20338 : 2305 : case INTEGER_CST:
20339 : 2305 : {
20340 : 2305 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
20341 : : {
20342 : 50 : {
20343 : 50 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
20344 : 50 : if (gimple_simplify_498 (res_op, seq, valueize, type, captures))
20345 : 32 : return true;
20346 : : }
20347 : : }
20348 : : break;
20349 : : }
20350 : : default:;
20351 : : }
20352 : : break;
20353 : : }
20354 : : default:;
20355 : : }
20356 : : }
20357 : : break;
20358 : : default:;
20359 : : }
20360 : : }
20361 : : }
20362 : 1824557 : if (integer_onep (_p0))
20363 : : {
20364 : 440328 : switch (TREE_CODE (_p1))
20365 : : {
20366 : 432659 : case SSA_NAME:
20367 : 432659 : if (gimple *_d1 = get_def (valueize, _p1))
20368 : : {
20369 : 230977 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20370 : 194950 : switch (gimple_assign_rhs_code (_a1))
20371 : : {
20372 : 5490 : case MINUS_EXPR:
20373 : 5490 : {
20374 : 5490 : tree _q30 = gimple_assign_rhs1 (_a1);
20375 : 5490 : _q30 = do_valueize (valueize, _q30);
20376 : 5490 : tree _q31 = gimple_assign_rhs2 (_a1);
20377 : 5490 : _q31 = do_valueize (valueize, _q31);
20378 : 5490 : switch (TREE_CODE (_q30))
20379 : : {
20380 : 5070 : case INTEGER_CST:
20381 : 5070 : {
20382 : 5070 : {
20383 : 5070 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
20384 : 5070 : if (INTEGRAL_TYPE_P (type)
20385 : 5084 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
20386 : 5108 : && single_use (captures[1])
20387 : : )
20388 : : {
20389 : 24 : if (TYPE_UNSIGNED (type)
20390 : : )
20391 : : {
20392 : 22 : gimple_seq *lseq = seq;
20393 : 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2588;
20394 : 22 : {
20395 : 22 : res_op->set_op (RSHIFT_EXPR, type, 2);
20396 : 22 : {
20397 : 22 : tree _o1[2], _r1;
20398 : 22 : _o1[0] = captures[0];
20399 : 22 : _o1[1] = captures[2];
20400 : 22 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20401 : 22 : tem_op.resimplify (lseq, valueize);
20402 : 22 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20403 : 22 : if (!_r1) goto next_after_fail2588;
20404 : 22 : res_op->ops[0] = _r1;
20405 : : }
20406 : 22 : res_op->ops[1] = captures[3];
20407 : 22 : res_op->resimplify (lseq, valueize);
20408 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1178, __FILE__, __LINE__, true);
20409 : 22 : return true;
20410 : : }
20411 : 5046 : next_after_fail2588:;
20412 : : }
20413 : : else
20414 : : {
20415 : 2 : {
20416 : 2 : tree utype = unsigned_type_for (type);
20417 : 2 : gimple_seq *lseq = seq;
20418 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2589;
20419 : 2 : {
20420 : 2 : res_op->set_op (NOP_EXPR, type, 1);
20421 : 2 : {
20422 : 2 : tree _o1[2], _r1;
20423 : 2 : {
20424 : 2 : tree _o2[2], _r2;
20425 : 2 : {
20426 : 2 : tree _o3[1], _r3;
20427 : 2 : _o3[0] = captures[0];
20428 : 2 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
20429 : 2 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
20430 : : {
20431 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
20432 : 2 : tem_op.resimplify (lseq, valueize);
20433 : 2 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
20434 : 2 : if (!_r3) goto next_after_fail2589;
20435 : : }
20436 : : else
20437 : : _r3 = _o3[0];
20438 : 2 : _o2[0] = _r3;
20439 : : }
20440 : 2 : _o2[1] = captures[2];
20441 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
20442 : 2 : tem_op.resimplify (lseq, valueize);
20443 : 2 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
20444 : 2 : if (!_r2) goto next_after_fail2589;
20445 : 2 : _o1[0] = _r2;
20446 : : }
20447 : 2 : _o1[1] = captures[3];
20448 : 2 : (*res_op).set_op (RSHIFT_EXPR, TREE_TYPE (_o1[0]), 2);
20449 : 2 : (*res_op).ops[0] = _o1[0];
20450 : 2 : (*res_op).ops[1] = _o1[1];
20451 : 2 : (*res_op).resimplify (lseq, valueize);
20452 : : }
20453 : 2 : if (type != res_op->type
20454 : 2 : && !useless_type_conversion_p (type, res_op->type))
20455 : : {
20456 : 2 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2589;
20457 : 2 : res_op->set_op (NOP_EXPR, type, 1);
20458 : 2 : res_op->resimplify (lseq, valueize);
20459 : : }
20460 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1179, __FILE__, __LINE__, true);
20461 : 2 : return true;
20462 : : }
20463 : 5046 : next_after_fail2589:;
20464 : : }
20465 : : }
20466 : : }
20467 : : }
20468 : 5046 : break;
20469 : : }
20470 : : default:;
20471 : : }
20472 : : break;
20473 : : }
20474 : : default:;
20475 : : }
20476 : : }
20477 : : break;
20478 : : default:;
20479 : : }
20480 : : }
20481 : 1824533 : if (integer_zerop (_p1))
20482 : : {
20483 : 10480 : {
20484 : 10480 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
20485 : 10480 : if (gimple_simplify_499 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20486 : 10480 : return true;
20487 : : }
20488 : : }
20489 : 1814053 : if (integer_zerop (_p0))
20490 : : {
20491 : 2408 : {
20492 : 2408 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20493 : 2408 : if (gimple_simplify_500 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20494 : 2408 : return true;
20495 : : }
20496 : : }
20497 : 1811645 : switch (TREE_CODE (_p1))
20498 : : {
20499 : 683580 : case SSA_NAME:
20500 : 683580 : if (gimple *_d1 = get_def (valueize, _p1))
20501 : : {
20502 : 408088 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20503 : 349370 : switch (gimple_assign_rhs_code (_a1))
20504 : : {
20505 : 63 : case CONSTRUCTOR:
20506 : 63 : {
20507 : 63 : {
20508 : 63 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20509 : 63 : if (gimple_simplify_502 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20510 : 0 : return true;
20511 : : }
20512 : 63 : break;
20513 : : }
20514 : : default:;
20515 : : }
20516 : : }
20517 : 683580 : {
20518 : 683580 : {
20519 : 683580 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20520 : 683580 : if (gimple_simplify_503 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20521 : 3 : return true;
20522 : : }
20523 : : }
20524 : 683577 : break;
20525 : 325 : case VECTOR_CST:
20526 : 325 : {
20527 : 325 : {
20528 : 325 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20529 : 325 : if (gimple_simplify_501 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20530 : 173 : return true;
20531 : : }
20532 : 152 : break;
20533 : : }
20534 : 1811469 : default:;
20535 : : }
20536 : 1811469 : switch (TREE_CODE (_p0))
20537 : : {
20538 : 1283470 : case SSA_NAME:
20539 : 1283470 : if (gimple *_d1 = get_def (valueize, _p0))
20540 : : {
20541 : 763607 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20542 : 737300 : switch (gimple_assign_rhs_code (_a1))
20543 : : {
20544 : 3939 : case LSHIFT_EXPR:
20545 : 3939 : {
20546 : 3939 : tree _q20 = gimple_assign_rhs1 (_a1);
20547 : 3939 : _q20 = do_valueize (valueize, _q20);
20548 : 3939 : tree _q21 = gimple_assign_rhs2 (_a1);
20549 : 3939 : _q21 = do_valueize (valueize, _q21);
20550 : 3939 : switch (TREE_CODE (_q21))
20551 : : {
20552 : 1965 : case INTEGER_CST:
20553 : 1965 : {
20554 : 1965 : switch (TREE_CODE (_p1))
20555 : : {
20556 : 1325 : case INTEGER_CST:
20557 : 1325 : {
20558 : 1325 : {
20559 : 1325 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
20560 : 1325 : if (gimple_simplify_504 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20561 : 1325 : return true;
20562 : : }
20563 : 0 : break;
20564 : : }
20565 : : default:;
20566 : : }
20567 : : break;
20568 : : }
20569 : : default:;
20570 : : }
20571 : : break;
20572 : : }
20573 : 292069 : CASE_CONVERT:
20574 : 292069 : {
20575 : 292069 : tree _q20 = gimple_assign_rhs1 (_a1);
20576 : 292069 : _q20 = do_valueize (valueize, _q20);
20577 : 292069 : switch (TREE_CODE (_q20))
20578 : : {
20579 : 292069 : case SSA_NAME:
20580 : 292069 : if (gimple *_d2 = get_def (valueize, _q20))
20581 : : {
20582 : 277473 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20583 : 359591 : switch (gimple_assign_rhs_code (_a2))
20584 : : {
20585 : 28003 : case BIT_AND_EXPR:
20586 : 28003 : {
20587 : 28003 : tree _q30 = gimple_assign_rhs1 (_a2);
20588 : 28003 : _q30 = do_valueize (valueize, _q30);
20589 : 28003 : tree _q31 = gimple_assign_rhs2 (_a2);
20590 : 28003 : _q31 = do_valueize (valueize, _q31);
20591 : 28003 : if (tree_swap_operands_p (_q30, _q31))
20592 : 53 : std::swap (_q30, _q31);
20593 : 28003 : switch (TREE_CODE (_q31))
20594 : : {
20595 : 27370 : case INTEGER_CST:
20596 : 27370 : {
20597 : 27370 : switch (TREE_CODE (_p1))
20598 : : {
20599 : 11192 : case INTEGER_CST:
20600 : 11192 : {
20601 : 11192 : {
20602 : 11192 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
20603 : 11192 : if (gimple_simplify_505 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LSHIFT_EXPR))
20604 : 154 : return true;
20605 : : }
20606 : 11038 : break;
20607 : : }
20608 : : default:;
20609 : : }
20610 : : break;
20611 : : }
20612 : : default:;
20613 : : }
20614 : 1809212 : break;
20615 : : }
20616 : 471 : case BIT_XOR_EXPR:
20617 : 471 : {
20618 : 471 : tree _q30 = gimple_assign_rhs1 (_a2);
20619 : 471 : _q30 = do_valueize (valueize, _q30);
20620 : 471 : tree _q31 = gimple_assign_rhs2 (_a2);
20621 : 471 : _q31 = do_valueize (valueize, _q31);
20622 : 471 : if (tree_swap_operands_p (_q30, _q31))
20623 : 26 : std::swap (_q30, _q31);
20624 : 471 : switch (TREE_CODE (_q31))
20625 : : {
20626 : 123 : case INTEGER_CST:
20627 : 123 : {
20628 : 123 : switch (TREE_CODE (_p1))
20629 : : {
20630 : 109 : case INTEGER_CST:
20631 : 109 : {
20632 : 109 : {
20633 : 109 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
20634 : 109 : if (gimple_simplify_505 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LSHIFT_EXPR))
20635 : 0 : return true;
20636 : : }
20637 : 109 : break;
20638 : : }
20639 : : default:;
20640 : : }
20641 : : break;
20642 : : }
20643 : : default:;
20644 : : }
20645 : 1809212 : break;
20646 : : }
20647 : 989 : case BIT_IOR_EXPR:
20648 : 989 : {
20649 : 989 : tree _q30 = gimple_assign_rhs1 (_a2);
20650 : 989 : _q30 = do_valueize (valueize, _q30);
20651 : 989 : tree _q31 = gimple_assign_rhs2 (_a2);
20652 : 989 : _q31 = do_valueize (valueize, _q31);
20653 : 989 : if (tree_swap_operands_p (_q30, _q31))
20654 : 29 : std::swap (_q30, _q31);
20655 : 989 : switch (TREE_CODE (_q31))
20656 : : {
20657 : 407 : case INTEGER_CST:
20658 : 407 : {
20659 : 407 : switch (TREE_CODE (_p1))
20660 : : {
20661 : 159 : case INTEGER_CST:
20662 : 159 : {
20663 : 159 : {
20664 : 159 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
20665 : 159 : if (gimple_simplify_505 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LSHIFT_EXPR))
20666 : 0 : return true;
20667 : : }
20668 : 159 : break;
20669 : : }
20670 : : default:;
20671 : : }
20672 : : break;
20673 : : }
20674 : : default:;
20675 : : }
20676 : 1809212 : break;
20677 : : }
20678 : : default:;
20679 : : }
20680 : : }
20681 : : break;
20682 : : default:;
20683 : : }
20684 : : break;
20685 : : }
20686 : 10186 : case BIT_AND_EXPR:
20687 : 10186 : {
20688 : 10186 : tree _q20 = gimple_assign_rhs1 (_a1);
20689 : 10186 : _q20 = do_valueize (valueize, _q20);
20690 : 10186 : tree _q21 = gimple_assign_rhs2 (_a1);
20691 : 10186 : _q21 = do_valueize (valueize, _q21);
20692 : 10186 : if (tree_swap_operands_p (_q20, _q21))
20693 : 298 : std::swap (_q20, _q21);
20694 : 10186 : switch (TREE_CODE (_q21))
20695 : : {
20696 : 6889 : case INTEGER_CST:
20697 : 6889 : {
20698 : 6889 : switch (TREE_CODE (_p1))
20699 : : {
20700 : 3995 : case INTEGER_CST:
20701 : 3995 : {
20702 : 3995 : {
20703 : 3995 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
20704 : 3995 : if (gimple_simplify_506 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LSHIFT_EXPR))
20705 : 623 : return true;
20706 : : }
20707 : 3372 : break;
20708 : : }
20709 : : default:;
20710 : : }
20711 : : break;
20712 : : }
20713 : : default:;
20714 : : }
20715 : 1809212 : break;
20716 : : }
20717 : 9649 : case BIT_XOR_EXPR:
20718 : 9649 : {
20719 : 9649 : tree _q20 = gimple_assign_rhs1 (_a1);
20720 : 9649 : _q20 = do_valueize (valueize, _q20);
20721 : 9649 : tree _q21 = gimple_assign_rhs2 (_a1);
20722 : 9649 : _q21 = do_valueize (valueize, _q21);
20723 : 9649 : if (tree_swap_operands_p (_q20, _q21))
20724 : 777 : std::swap (_q20, _q21);
20725 : 9649 : switch (TREE_CODE (_q21))
20726 : : {
20727 : 608 : case INTEGER_CST:
20728 : 608 : {
20729 : 608 : switch (TREE_CODE (_p1))
20730 : : {
20731 : 608 : case INTEGER_CST:
20732 : 608 : {
20733 : 608 : {
20734 : 608 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
20735 : 608 : if (gimple_simplify_506 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LSHIFT_EXPR))
20736 : 38 : return true;
20737 : : }
20738 : 570 : break;
20739 : : }
20740 : : default:;
20741 : : }
20742 : : break;
20743 : : }
20744 : : default:;
20745 : : }
20746 : 1809212 : break;
20747 : : }
20748 : 13152 : case BIT_IOR_EXPR:
20749 : 13152 : {
20750 : 13152 : tree _q20 = gimple_assign_rhs1 (_a1);
20751 : 13152 : _q20 = do_valueize (valueize, _q20);
20752 : 13152 : tree _q21 = gimple_assign_rhs2 (_a1);
20753 : 13152 : _q21 = do_valueize (valueize, _q21);
20754 : 13152 : if (tree_swap_operands_p (_q20, _q21))
20755 : 484 : std::swap (_q20, _q21);
20756 : 13152 : switch (TREE_CODE (_q21))
20757 : : {
20758 : 1701 : case INTEGER_CST:
20759 : 1701 : {
20760 : 1701 : switch (TREE_CODE (_p1))
20761 : : {
20762 : 582 : case INTEGER_CST:
20763 : 582 : {
20764 : 582 : {
20765 : 582 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
20766 : 582 : if (gimple_simplify_506 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LSHIFT_EXPR))
20767 : 33 : return true;
20768 : : }
20769 : 549 : break;
20770 : : }
20771 : : default:;
20772 : : }
20773 : : break;
20774 : : }
20775 : : default:;
20776 : : }
20777 : 1809212 : break;
20778 : : }
20779 : 399 : case VEC_COND_EXPR:
20780 : 399 : {
20781 : 399 : tree _q20 = gimple_assign_rhs1 (_a1);
20782 : 399 : _q20 = do_valueize (valueize, _q20);
20783 : 399 : tree _q21 = gimple_assign_rhs2 (_a1);
20784 : 399 : _q21 = do_valueize (valueize, _q21);
20785 : 399 : tree _q22 = gimple_assign_rhs3 (_a1);
20786 : 399 : _q22 = do_valueize (valueize, _q22);
20787 : 399 : switch (TREE_CODE (_p1))
20788 : : {
20789 : 33 : case SSA_NAME:
20790 : 33 : if (gimple *_d2 = get_def (valueize, _p1))
20791 : : {
20792 : 33 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20793 : 33 : switch (gimple_assign_rhs_code (_a2))
20794 : : {
20795 : 10 : case VEC_COND_EXPR:
20796 : 10 : {
20797 : 10 : tree _q60 = gimple_assign_rhs1 (_a2);
20798 : 10 : _q60 = do_valueize (valueize, _q60);
20799 : 10 : tree _q61 = gimple_assign_rhs2 (_a2);
20800 : 10 : _q61 = do_valueize (valueize, _q61);
20801 : 10 : tree _q62 = gimple_assign_rhs3 (_a2);
20802 : 10 : _q62 = do_valueize (valueize, _q62);
20803 : 10 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20804 : : {
20805 : 0 : {
20806 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
20807 : 0 : if (VECTOR_TYPE_P (type)
20808 : 0 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
20809 : : || types_match (type, TREE_TYPE (captures[2]))
20810 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
20811 : : || (optimize_vectors_before_lowering_p ()
20812 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
20813 : : )
20814 : : {
20815 : 0 : gimple_seq *lseq = seq;
20816 : 0 : if (lseq
20817 : 0 : && (!single_use (captures[0])
20818 : 0 : || !single_use (captures[4])))
20819 : 0 : lseq = NULL;
20820 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2590;
20821 : 0 : {
20822 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20823 : 0 : res_op->ops[0] = captures[1];
20824 : 0 : {
20825 : 0 : tree _o1[2], _r1;
20826 : 0 : _o1[0] = captures[2];
20827 : 0 : _o1[1] = captures[5];
20828 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20829 : 0 : tem_op.resimplify (NULL, valueize);
20830 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20831 : 0 : if (!_r1) goto next_after_fail2590;
20832 : 0 : res_op->ops[1] = _r1;
20833 : : }
20834 : 0 : {
20835 : 0 : tree _o1[2], _r1;
20836 : 0 : _o1[0] = captures[3];
20837 : 0 : _o1[1] = captures[6];
20838 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20839 : 0 : tem_op.resimplify (NULL, valueize);
20840 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20841 : 0 : if (!_r1) goto next_after_fail2590;
20842 : 0 : res_op->ops[2] = _r1;
20843 : : }
20844 : 0 : res_op->resimplify (lseq, valueize);
20845 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
20846 : 0 : return true;
20847 : : }
20848 : 0 : next_after_fail2590:;
20849 : : }
20850 : : }
20851 : : }
20852 : : break;
20853 : : }
20854 : : default:;
20855 : : }
20856 : : }
20857 : : break;
20858 : 399 : default:;
20859 : : }
20860 : 399 : {
20861 : 399 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
20862 : 399 : if (VECTOR_TYPE_P (type)
20863 : 399 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
20864 : : || types_match (type, TREE_TYPE (captures[2]))
20865 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
20866 : : || (optimize_vectors_before_lowering_p ()
20867 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
20868 : : )
20869 : : {
20870 : 399 : gimple_seq *lseq = seq;
20871 : 399 : if (lseq
20872 : 114 : && (!single_use (captures[0])))
20873 : 324 : lseq = NULL;
20874 : 399 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2591;
20875 : 399 : {
20876 : 399 : res_op->set_op (VEC_COND_EXPR, type, 3);
20877 : 399 : res_op->ops[0] = captures[1];
20878 : 399 : {
20879 : 399 : tree _o1[2], _r1;
20880 : 399 : _o1[0] = captures[2];
20881 : 399 : _o1[1] = captures[4];
20882 : 399 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20883 : 399 : tem_op.resimplify (NULL, valueize);
20884 : 399 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20885 : 399 : if (!_r1) goto next_after_fail2591;
20886 : 99 : res_op->ops[1] = _r1;
20887 : : }
20888 : 99 : {
20889 : 99 : tree _o1[2], _r1;
20890 : 99 : _o1[0] = captures[3];
20891 : 99 : _o1[1] = captures[4];
20892 : 99 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20893 : 99 : tem_op.resimplify (NULL, valueize);
20894 : 99 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20895 : 99 : if (!_r1) goto next_after_fail2591;
20896 : 84 : res_op->ops[2] = _r1;
20897 : : }
20898 : 84 : res_op->resimplify (lseq, valueize);
20899 : 84 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
20900 : 84 : return true;
20901 : : }
20902 : 315 : next_after_fail2591:;
20903 : : }
20904 : : }
20905 : 315 : break;
20906 : : }
20907 : : default:;
20908 : : }
20909 : : }
20910 : : break;
20911 : 1809212 : default:;
20912 : : }
20913 : 1809212 : switch (TREE_CODE (_p1))
20914 : : {
20915 : 683577 : case SSA_NAME:
20916 : 683577 : if (gimple *_d1 = get_def (valueize, _p1))
20917 : : {
20918 : 408086 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20919 : 349368 : switch (gimple_assign_rhs_code (_a1))
20920 : : {
20921 : 67 : case VEC_COND_EXPR:
20922 : 67 : {
20923 : 67 : tree _q30 = gimple_assign_rhs1 (_a1);
20924 : 67 : _q30 = do_valueize (valueize, _q30);
20925 : 67 : tree _q31 = gimple_assign_rhs2 (_a1);
20926 : 67 : _q31 = do_valueize (valueize, _q31);
20927 : 67 : tree _q32 = gimple_assign_rhs3 (_a1);
20928 : 67 : _q32 = do_valueize (valueize, _q32);
20929 : 67 : {
20930 : 67 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
20931 : 67 : if (VECTOR_TYPE_P (type)
20932 : 67 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
20933 : : || types_match (type, TREE_TYPE (captures[3]))
20934 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
20935 : : || (optimize_vectors_before_lowering_p ()
20936 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
20937 : : )
20938 : : {
20939 : 67 : gimple_seq *lseq = seq;
20940 : 67 : if (lseq
20941 : 27 : && (!single_use (captures[1])))
20942 : 42 : lseq = NULL;
20943 : 67 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2592;
20944 : 67 : {
20945 : 67 : res_op->set_op (VEC_COND_EXPR, type, 3);
20946 : 67 : res_op->ops[0] = captures[2];
20947 : 67 : {
20948 : 67 : tree _o1[2], _r1;
20949 : 67 : _o1[0] = captures[0];
20950 : 67 : _o1[1] = captures[3];
20951 : 67 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20952 : 67 : tem_op.resimplify (NULL, valueize);
20953 : 67 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20954 : 67 : if (!_r1) goto next_after_fail2592;
20955 : 14 : res_op->ops[1] = _r1;
20956 : : }
20957 : 14 : {
20958 : 14 : tree _o1[2], _r1;
20959 : 14 : _o1[0] = captures[0];
20960 : 14 : _o1[1] = captures[4];
20961 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20962 : 14 : tem_op.resimplify (NULL, valueize);
20963 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20964 : 14 : if (!_r1) goto next_after_fail2592;
20965 : 14 : res_op->ops[2] = _r1;
20966 : : }
20967 : 14 : res_op->resimplify (lseq, valueize);
20968 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
20969 : 14 : return true;
20970 : : }
20971 : 53 : next_after_fail2592:;
20972 : : }
20973 : : }
20974 : 53 : break;
20975 : : }
20976 : : default:;
20977 : : }
20978 : : }
20979 : : break;
20980 : 1809198 : default:;
20981 : : }
20982 : 1809198 : switch (TREE_CODE (_p0))
20983 : : {
20984 : 1281213 : case SSA_NAME:
20985 : 1281213 : if (gimple *_d1 = get_def (valueize, _p0))
20986 : : {
20987 : 761350 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20988 : 735043 : switch (gimple_assign_rhs_code (_a1))
20989 : : {
20990 : 309 : case VEC_PERM_EXPR:
20991 : 309 : {
20992 : 309 : tree _q20 = gimple_assign_rhs1 (_a1);
20993 : 309 : _q20 = do_valueize (valueize, _q20);
20994 : 309 : tree _q21 = gimple_assign_rhs2 (_a1);
20995 : 309 : _q21 = do_valueize (valueize, _q21);
20996 : 309 : tree _q22 = gimple_assign_rhs3 (_a1);
20997 : 309 : _q22 = do_valueize (valueize, _q22);
20998 : 309 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
20999 : : {
21000 : 80 : switch (TREE_CODE (_p1))
21001 : : {
21002 : 56 : case SSA_NAME:
21003 : 56 : if (gimple *_d2 = get_def (valueize, _p1))
21004 : : {
21005 : 48 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
21006 : 28 : switch (gimple_assign_rhs_code (_a2))
21007 : : {
21008 : 2 : case VEC_PERM_EXPR:
21009 : 2 : {
21010 : 2 : tree _q60 = gimple_assign_rhs1 (_a2);
21011 : 2 : _q60 = do_valueize (valueize, _q60);
21012 : 2 : tree _q61 = gimple_assign_rhs2 (_a2);
21013 : 2 : _q61 = do_valueize (valueize, _q61);
21014 : 2 : tree _q62 = gimple_assign_rhs3 (_a2);
21015 : 2 : _q62 = do_valueize (valueize, _q62);
21016 : 2 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
21017 : : {
21018 : 2 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
21019 : : {
21020 : 2 : {
21021 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
21022 : 2 : if (VECTOR_INTEGER_TYPE_P (type)
21023 : : )
21024 : : {
21025 : 2 : gimple_seq *lseq = seq;
21026 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2593;
21027 : 2 : {
21028 : 2 : res_op->set_op (VEC_PERM_EXPR, type, 3);
21029 : 2 : {
21030 : 2 : tree _o1[2], _r1;
21031 : 2 : _o1[0] = captures[0];
21032 : 2 : _o1[1] = captures[2];
21033 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21034 : 2 : tem_op.resimplify (lseq, valueize);
21035 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21036 : 2 : if (!_r1) goto next_after_fail2593;
21037 : 1 : captures[3] = _r1;
21038 : : }
21039 : 1 : res_op->ops[0] = captures[3];
21040 : 1 : res_op->ops[1] = captures[3];
21041 : 1 : res_op->ops[2] = captures[1];
21042 : 1 : res_op->resimplify (lseq, valueize);
21043 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
21044 : 1 : return true;
21045 : : }
21046 : : next_after_fail2593:;
21047 : : }
21048 : : }
21049 : : }
21050 : : }
21051 : : break;
21052 : : }
21053 : : default:;
21054 : : }
21055 : : }
21056 : : break;
21057 : : default:;
21058 : : }
21059 : : }
21060 : : break;
21061 : : }
21062 : : default:;
21063 : : }
21064 : : }
21065 : : break;
21066 : : default:;
21067 : : }
21068 : : return false;
21069 : : }
21070 : :
21071 : : bool
21072 : 2955 : gimple_simplify_CFN_BUILT_IN_POWL (gimple_match_op *res_op, gimple_seq *seq,
21073 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
21074 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
21075 : : {
21076 : 2955 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
21077 : 2955 : switch (TREE_CODE (_p0))
21078 : : {
21079 : 1277 : case SSA_NAME:
21080 : 1277 : if (gimple *_d1 = get_def (valueize, _p0))
21081 : : {
21082 : 755 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21083 : 455 : switch (gimple_assign_rhs_code (_a1))
21084 : : {
21085 : 2 : case NEGATE_EXPR:
21086 : 2 : {
21087 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
21088 : 2 : _q20 = do_valueize (valueize, _q20);
21089 : 2 : switch (TREE_CODE (_p1))
21090 : : {
21091 : 2 : case REAL_CST:
21092 : 2 : {
21093 : 2 : {
21094 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21095 : 2 : const combined_fn pows = CFN_BUILT_IN_POWL;
21096 : 2 : {
21097 : 2 : HOST_WIDE_INT n;
21098 : 2 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
21099 : : )
21100 : : {
21101 : 2 : gimple_seq *lseq = seq;
21102 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2635;
21103 : 2 : {
21104 : 2 : res_op->set_op (pows, type, 2);
21105 : 2 : res_op->ops[0] = captures[0];
21106 : 2 : res_op->ops[1] = captures[1];
21107 : 2 : res_op->resimplify (lseq, valueize);
21108 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1185, __FILE__, __LINE__, true);
21109 : 2 : return true;
21110 : : }
21111 : 0 : next_after_fail2635:;
21112 : : }
21113 : : }
21114 : : }
21115 : 0 : break;
21116 : : }
21117 : : default:;
21118 : : }
21119 : : break;
21120 : : }
21121 : 31 : case ABS_EXPR:
21122 : 31 : {
21123 : 31 : tree _q20 = gimple_assign_rhs1 (_a1);
21124 : 31 : _q20 = do_valueize (valueize, _q20);
21125 : 31 : switch (TREE_CODE (_p1))
21126 : : {
21127 : 2 : case REAL_CST:
21128 : 2 : {
21129 : 2 : {
21130 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21131 : 2 : const combined_fn pows = CFN_BUILT_IN_POWL;
21132 : 2 : {
21133 : 2 : HOST_WIDE_INT n;
21134 : 2 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
21135 : : )
21136 : : {
21137 : 2 : gimple_seq *lseq = seq;
21138 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2636;
21139 : 2 : {
21140 : 2 : res_op->set_op (pows, type, 2);
21141 : 2 : res_op->ops[0] = captures[0];
21142 : 2 : res_op->ops[1] = captures[1];
21143 : 2 : res_op->resimplify (lseq, valueize);
21144 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1185, __FILE__, __LINE__, true);
21145 : 2 : return true;
21146 : : }
21147 : 0 : next_after_fail2636:;
21148 : : }
21149 : : }
21150 : : }
21151 : 0 : break;
21152 : : }
21153 : : default:;
21154 : : }
21155 : : break;
21156 : : }
21157 : 2 : case RDIV_EXPR:
21158 : 2 : {
21159 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
21160 : 2 : _q20 = do_valueize (valueize, _q20);
21161 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
21162 : 2 : _q21 = do_valueize (valueize, _q21);
21163 : 2 : if (real_onep (_q20))
21164 : : {
21165 : 2 : {
21166 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
21167 : 2 : if (gimple_simplify_527 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
21168 : 1 : return true;
21169 : : }
21170 : : }
21171 : : break;
21172 : : }
21173 : : default:;
21174 : : }
21175 : 348 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21176 : 99 : switch (gimple_call_combined_fn (_c1))
21177 : : {
21178 : 14 : case CFN_BUILT_IN_SQRTL:
21179 : 14 : if (gimple_call_num_args (_c1) == 1)
21180 : : {
21181 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
21182 : 14 : _q20 = do_valueize (valueize, _q20);
21183 : 14 : {
21184 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21185 : 14 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21186 : : )
21187 : : {
21188 : 14 : gimple_seq *lseq = seq;
21189 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2637;
21190 : 14 : {
21191 : 14 : res_op->set_op (CFN_BUILT_IN_POWL, type, 2);
21192 : 14 : res_op->ops[0] = captures[0];
21193 : 14 : {
21194 : 14 : tree _o1[2], _r1;
21195 : 14 : _o1[0] = captures[1];
21196 : 14 : _o1[1] = build_real (type, dconsthalf);
21197 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21198 : 14 : tem_op.resimplify (lseq, valueize);
21199 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21200 : 14 : if (!_r1) goto next_after_fail2637;
21201 : 7 : res_op->ops[1] = _r1;
21202 : : }
21203 : 7 : res_op->resimplify (lseq, valueize);
21204 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1186, __FILE__, __LINE__, true);
21205 : 7 : return true;
21206 : : }
21207 : 7 : next_after_fail2637:;
21208 : : }
21209 : : }
21210 : : }
21211 : : break;
21212 : 12 : case CFN_BUILT_IN_EXP10L:
21213 : 12 : if (gimple_call_num_args (_c1) == 1)
21214 : : {
21215 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21216 : 12 : _q20 = do_valueize (valueize, _q20);
21217 : 12 : {
21218 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21219 : 12 : if (flag_unsafe_math_optimizations
21220 : : )
21221 : : {
21222 : 12 : gimple_seq *lseq = seq;
21223 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2638;
21224 : 12 : {
21225 : 12 : res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1);
21226 : 12 : {
21227 : 12 : tree _o1[2], _r1;
21228 : 12 : _o1[0] = captures[0];
21229 : 12 : _o1[1] = captures[1];
21230 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21231 : 12 : tem_op.resimplify (lseq, valueize);
21232 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21233 : 12 : if (!_r1) goto next_after_fail2638;
21234 : 6 : res_op->ops[0] = _r1;
21235 : : }
21236 : 6 : res_op->resimplify (lseq, valueize);
21237 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
21238 : 6 : return true;
21239 : : }
21240 : 6 : next_after_fail2638:;
21241 : : }
21242 : : }
21243 : : }
21244 : : break;
21245 : 14 : case CFN_BUILT_IN_EXPL:
21246 : 14 : if (gimple_call_num_args (_c1) == 1)
21247 : : {
21248 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
21249 : 14 : _q20 = do_valueize (valueize, _q20);
21250 : 14 : {
21251 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21252 : 14 : if (flag_unsafe_math_optimizations
21253 : : )
21254 : : {
21255 : 14 : gimple_seq *lseq = seq;
21256 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2639;
21257 : 14 : {
21258 : 14 : res_op->set_op (CFN_BUILT_IN_EXPL, type, 1);
21259 : 14 : {
21260 : 14 : tree _o1[2], _r1;
21261 : 14 : _o1[0] = captures[0];
21262 : 14 : _o1[1] = captures[1];
21263 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21264 : 14 : tem_op.resimplify (lseq, valueize);
21265 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21266 : 14 : if (!_r1) goto next_after_fail2639;
21267 : 7 : res_op->ops[0] = _r1;
21268 : : }
21269 : 7 : res_op->resimplify (lseq, valueize);
21270 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
21271 : 7 : return true;
21272 : : }
21273 : 7 : next_after_fail2639:;
21274 : : }
21275 : : }
21276 : : }
21277 : : break;
21278 : 23 : case CFN_BUILT_IN_POWL:
21279 : 23 : if (gimple_call_num_args (_c1) == 2)
21280 : : {
21281 : 23 : tree _q20 = gimple_call_arg (_c1, 0);
21282 : 23 : _q20 = do_valueize (valueize, _q20);
21283 : 23 : tree _q21 = gimple_call_arg (_c1, 1);
21284 : 23 : _q21 = do_valueize (valueize, _q21);
21285 : 23 : if (tree_expr_nonnegative_p (_q20))
21286 : : {
21287 : 12 : {
21288 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21289 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21290 : : )
21291 : : {
21292 : 12 : gimple_seq *lseq = seq;
21293 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2640;
21294 : 12 : {
21295 : 12 : res_op->set_op (CFN_BUILT_IN_POWL, type, 2);
21296 : 12 : res_op->ops[0] = captures[0];
21297 : 12 : {
21298 : 12 : tree _o1[2], _r1;
21299 : 12 : _o1[0] = captures[1];
21300 : 12 : _o1[1] = captures[2];
21301 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21302 : 12 : tem_op.resimplify (lseq, valueize);
21303 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21304 : 12 : if (!_r1) goto next_after_fail2640;
21305 : 6 : res_op->ops[1] = _r1;
21306 : : }
21307 : 6 : res_op->resimplify (lseq, valueize);
21308 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1188, __FILE__, __LINE__, true);
21309 : 6 : return true;
21310 : : }
21311 : 6 : next_after_fail2640:;
21312 : : }
21313 : : }
21314 : : }
21315 : : }
21316 : : break;
21317 : 12 : case CFN_BUILT_IN_POW10L:
21318 : 12 : if (gimple_call_num_args (_c1) == 1)
21319 : : {
21320 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21321 : 12 : _q20 = do_valueize (valueize, _q20);
21322 : 12 : {
21323 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21324 : 12 : if (flag_unsafe_math_optimizations
21325 : : )
21326 : : {
21327 : 12 : gimple_seq *lseq = seq;
21328 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2641;
21329 : 12 : {
21330 : 12 : res_op->set_op (CFN_BUILT_IN_POW10L, type, 1);
21331 : 12 : {
21332 : 12 : tree _o1[2], _r1;
21333 : 12 : _o1[0] = captures[0];
21334 : 12 : _o1[1] = captures[1];
21335 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21336 : 12 : tem_op.resimplify (lseq, valueize);
21337 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21338 : 12 : if (!_r1) goto next_after_fail2641;
21339 : 6 : res_op->ops[0] = _r1;
21340 : : }
21341 : 6 : res_op->resimplify (lseq, valueize);
21342 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
21343 : 6 : return true;
21344 : : }
21345 : 6 : next_after_fail2641:;
21346 : : }
21347 : : }
21348 : : }
21349 : : break;
21350 : 0 : case CFN_BUILT_IN_COPYSIGN:
21351 : 0 : if (gimple_call_num_args (_c1) == 2)
21352 : : {
21353 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21354 : 0 : _q20 = do_valueize (valueize, _q20);
21355 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21356 : 0 : _q21 = do_valueize (valueize, _q21);
21357 : 0 : switch (TREE_CODE (_p1))
21358 : : {
21359 : 0 : case REAL_CST:
21360 : 0 : {
21361 : 0 : {
21362 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21363 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_POWL))
21364 : 0 : return true;
21365 : : }
21366 : 0 : break;
21367 : : }
21368 : : default:;
21369 : : }
21370 : : }
21371 : : break;
21372 : 0 : case CFN_BUILT_IN_COPYSIGNF:
21373 : 0 : if (gimple_call_num_args (_c1) == 2)
21374 : : {
21375 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21376 : 0 : _q20 = do_valueize (valueize, _q20);
21377 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21378 : 0 : _q21 = do_valueize (valueize, _q21);
21379 : 0 : switch (TREE_CODE (_p1))
21380 : : {
21381 : 0 : case REAL_CST:
21382 : 0 : {
21383 : 0 : {
21384 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21385 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_POWL))
21386 : 0 : return true;
21387 : : }
21388 : 0 : break;
21389 : : }
21390 : : default:;
21391 : : }
21392 : : }
21393 : : break;
21394 : 0 : case CFN_BUILT_IN_COPYSIGNL:
21395 : 0 : if (gimple_call_num_args (_c1) == 2)
21396 : : {
21397 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21398 : 0 : _q20 = do_valueize (valueize, _q20);
21399 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21400 : 0 : _q21 = do_valueize (valueize, _q21);
21401 : 0 : switch (TREE_CODE (_p1))
21402 : : {
21403 : 0 : case REAL_CST:
21404 : 0 : {
21405 : 0 : {
21406 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21407 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_POWL))
21408 : 0 : return true;
21409 : : }
21410 : 0 : break;
21411 : : }
21412 : : default:;
21413 : : }
21414 : : }
21415 : : break;
21416 : 12 : case CFN_BUILT_IN_CBRTL:
21417 : 12 : if (gimple_call_num_args (_c1) == 1)
21418 : : {
21419 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21420 : 12 : _q20 = do_valueize (valueize, _q20);
21421 : 12 : if (tree_expr_nonnegative_p (_q20))
21422 : : {
21423 : 12 : {
21424 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21425 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21426 : : )
21427 : : {
21428 : 12 : gimple_seq *lseq = seq;
21429 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2642;
21430 : 12 : {
21431 : 12 : res_op->set_op (CFN_BUILT_IN_POWL, type, 2);
21432 : 12 : res_op->ops[0] = captures[0];
21433 : 12 : {
21434 : 12 : tree _o1[2], _r1;
21435 : 12 : _o1[0] = captures[1];
21436 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
21437 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21438 : 12 : tem_op.resimplify (lseq, valueize);
21439 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21440 : 12 : if (!_r1) goto next_after_fail2642;
21441 : 6 : res_op->ops[1] = _r1;
21442 : : }
21443 : 6 : res_op->resimplify (lseq, valueize);
21444 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1189, __FILE__, __LINE__, true);
21445 : 6 : return true;
21446 : : }
21447 : 6 : next_after_fail2642:;
21448 : : }
21449 : : }
21450 : : }
21451 : : }
21452 : : break;
21453 : 12 : case CFN_BUILT_IN_EXP2L:
21454 : 12 : if (gimple_call_num_args (_c1) == 1)
21455 : : {
21456 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21457 : 12 : _q20 = do_valueize (valueize, _q20);
21458 : 12 : {
21459 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21460 : 12 : if (flag_unsafe_math_optimizations
21461 : : )
21462 : : {
21463 : 12 : gimple_seq *lseq = seq;
21464 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2643;
21465 : 12 : {
21466 : 12 : res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1);
21467 : 12 : {
21468 : 12 : tree _o1[2], _r1;
21469 : 12 : _o1[0] = captures[0];
21470 : 12 : _o1[1] = captures[1];
21471 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21472 : 12 : tem_op.resimplify (lseq, valueize);
21473 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21474 : 12 : if (!_r1) goto next_after_fail2643;
21475 : 6 : res_op->ops[0] = _r1;
21476 : : }
21477 : 6 : res_op->resimplify (lseq, valueize);
21478 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
21479 : 6 : return true;
21480 : : }
21481 : 6 : next_after_fail2643:;
21482 : : }
21483 : : }
21484 : : }
21485 : : break;
21486 : 0 : case CFN_COPYSIGN:
21487 : 0 : if (gimple_call_num_args (_c1) == 2)
21488 : : {
21489 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21490 : 0 : _q20 = do_valueize (valueize, _q20);
21491 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21492 : 0 : _q21 = do_valueize (valueize, _q21);
21493 : 0 : switch (TREE_CODE (_p1))
21494 : : {
21495 : 0 : case REAL_CST:
21496 : 0 : {
21497 : 0 : {
21498 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21499 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_POWL))
21500 : 0 : return true;
21501 : : }
21502 : 0 : break;
21503 : : }
21504 : : default:;
21505 : : }
21506 : : }
21507 : : break;
21508 : : default:;
21509 : : }
21510 : : }
21511 : : break;
21512 : 1604 : case REAL_CST:
21513 : 1604 : {
21514 : 1604 : {
21515 : 1604 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21516 : 1604 : if (gimple_simplify_529 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL, CFN_BUILT_IN_EXPL, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXP2L, CFN_BUILT_IN_LOG2L))
21517 : 2 : return true;
21518 : : }
21519 : 1602 : break;
21520 : : }
21521 : 2904 : default:;
21522 : : }
21523 : 2904 : if (real_zerop (_p0))
21524 : : {
21525 : 195 : {
21526 : 195 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21527 : 195 : if (gimple_simplify_528 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
21528 : 1 : return true;
21529 : : }
21530 : : }
21531 : 2903 : if (real_onep (_p0))
21532 : : {
21533 : 100 : {
21534 : 100 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21535 : 100 : if (gimple_simplify_530 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
21536 : 100 : return true;
21537 : : }
21538 : : }
21539 : 2803 : switch (TREE_CODE (_p1))
21540 : : {
21541 : 1494 : case REAL_CST:
21542 : 1494 : {
21543 : 1494 : {
21544 : 1494 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21545 : 1494 : {
21546 : 1494 : const REAL_VALUE_TYPE *value = TREE_REAL_CST_PTR (captures[1]);
21547 : 1494 : REAL_VALUE_TYPE tmp;
21548 : 1494 : if (real_equal (value, &dconst0)
21549 : : )
21550 : : {
21551 : 6 : gimple_seq *lseq = seq;
21552 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2644;
21553 : 6 : {
21554 : 6 : tree tem;
21555 : 6 : tem = build_real (type, dconst1);
21556 : 6 : res_op->set_value (tem);
21557 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1190, __FILE__, __LINE__, true);
21558 : 7 : return true;
21559 : : }
21560 : 0 : next_after_fail2644:;
21561 : : }
21562 : : else
21563 : : {
21564 : 1488 : if (real_equal (value, &dconst1)
21565 : : )
21566 : : {
21567 : 1 : gimple_seq *lseq = seq;
21568 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2645;
21569 : 1 : {
21570 : 1 : tree tem;
21571 : 1 : tem = captures[0];
21572 : 1 : res_op->set_value (tem);
21573 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
21574 : 1 : return true;
21575 : : }
21576 : 0 : next_after_fail2645:;
21577 : : }
21578 : : else
21579 : : {
21580 : 1487 : if (real_equal (value, &dconstm1)
21581 : : )
21582 : : {
21583 : 0 : gimple_seq *lseq = seq;
21584 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2646;
21585 : 0 : {
21586 : 0 : res_op->set_op (RDIV_EXPR, type, 2);
21587 : 0 : res_op->ops[0] = build_real (type, dconst1);
21588 : 0 : res_op->ops[1] = captures[0];
21589 : 0 : res_op->resimplify (lseq, valueize);
21590 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1192, __FILE__, __LINE__, true);
21591 : 0 : return true;
21592 : : }
21593 : 0 : next_after_fail2646:;
21594 : : }
21595 : : else
21596 : : {
21597 : 1487 : if (flag_unsafe_math_optimizations
21598 : : && canonicalize_math_p ()
21599 : 1699 : && real_equal (value, &dconsthalf)
21600 : : )
21601 : : {
21602 : 0 : gimple_seq *lseq = seq;
21603 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2647;
21604 : 0 : {
21605 : 0 : res_op->set_op (CFN_BUILT_IN_SQRTL, type, 1);
21606 : 0 : res_op->ops[0] = captures[0];
21607 : 0 : res_op->resimplify (lseq, valueize);
21608 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1193, __FILE__, __LINE__, true);
21609 : 0 : return true;
21610 : : }
21611 : 0 : next_after_fail2647:;
21612 : : }
21613 : : else
21614 : : {
21615 : 1487 : if (flag_unsafe_math_optimizations
21616 : : && canonicalize_math_p ()
21617 : 1911 : && (tmp = real_value_truncate (TYPE_MODE (type), dconst_third ()),
21618 : 212 : real_equal (value, &tmp))
21619 : : )
21620 : : {
21621 : 0 : gimple_seq *lseq = seq;
21622 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2648;
21623 : 0 : {
21624 : 0 : res_op->set_op (CFN_BUILT_IN_CBRTL, type, 1);
21625 : 0 : res_op->ops[0] = captures[0];
21626 : 0 : res_op->resimplify (lseq, valueize);
21627 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1194, __FILE__, __LINE__, true);
21628 : 0 : return true;
21629 : : }
21630 : 0 : next_after_fail2648:;
21631 : : }
21632 : : }
21633 : : }
21634 : : }
21635 : : }
21636 : : }
21637 : : }
21638 : 1487 : break;
21639 : : }
21640 : : default:;
21641 : : }
21642 : : return false;
21643 : : }
21644 : :
21645 : : bool
21646 : 335 : gimple_simplify_CFN_BUILT_IN_HYPOT (gimple_match_op *res_op, gimple_seq *seq,
21647 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
21648 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
21649 : : {
21650 : 335 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
21651 : 335 : switch (TREE_CODE (_p0))
21652 : : {
21653 : 298 : case SSA_NAME:
21654 : 298 : if (gimple *_d1 = get_def (valueize, _p0))
21655 : : {
21656 : 185 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21657 : 112 : switch (gimple_assign_rhs_code (_a1))
21658 : : {
21659 : 7 : case NEGATE_EXPR:
21660 : 7 : {
21661 : 7 : tree _q20 = gimple_assign_rhs1 (_a1);
21662 : 7 : _q20 = do_valueize (valueize, _q20);
21663 : 7 : {
21664 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21665 : 7 : const combined_fn hypots = CFN_BUILT_IN_HYPOT;
21666 : 7 : gimple_seq *lseq = seq;
21667 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2696;
21668 : 7 : {
21669 : 7 : res_op->set_op (hypots, type, 2);
21670 : 7 : res_op->ops[0] = captures[0];
21671 : 7 : res_op->ops[1] = captures[1];
21672 : 7 : res_op->resimplify (lseq, valueize);
21673 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1203, __FILE__, __LINE__, true);
21674 : 7 : return true;
21675 : : }
21676 : 0 : next_after_fail2696:;
21677 : : }
21678 : 0 : break;
21679 : : }
21680 : 5 : case ABS_EXPR:
21681 : 5 : {
21682 : 5 : tree _q20 = gimple_assign_rhs1 (_a1);
21683 : 5 : _q20 = do_valueize (valueize, _q20);
21684 : 5 : {
21685 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21686 : 5 : const combined_fn hypots = CFN_BUILT_IN_HYPOT;
21687 : 5 : gimple_seq *lseq = seq;
21688 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2697;
21689 : 5 : {
21690 : 5 : res_op->set_op (hypots, type, 2);
21691 : 5 : res_op->ops[0] = captures[0];
21692 : 5 : res_op->ops[1] = captures[1];
21693 : 5 : res_op->resimplify (lseq, valueize);
21694 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1203, __FILE__, __LINE__, true);
21695 : 5 : return true;
21696 : : }
21697 : 0 : next_after_fail2697:;
21698 : : }
21699 : 0 : break;
21700 : : }
21701 : : default:;
21702 : : }
21703 : : }
21704 : : break;
21705 : 323 : default:;
21706 : : }
21707 : 323 : switch (TREE_CODE (_p1))
21708 : : {
21709 : 284 : case SSA_NAME:
21710 : 284 : if (gimple *_d1 = get_def (valueize, _p1))
21711 : : {
21712 : 173 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21713 : 151 : switch (gimple_assign_rhs_code (_a1))
21714 : : {
21715 : 7 : case NEGATE_EXPR:
21716 : 7 : {
21717 : 7 : tree _q30 = gimple_assign_rhs1 (_a1);
21718 : 7 : _q30 = do_valueize (valueize, _q30);
21719 : 7 : {
21720 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
21721 : 7 : const combined_fn hypots = CFN_BUILT_IN_HYPOT;
21722 : 7 : gimple_seq *lseq = seq;
21723 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2698;
21724 : 7 : {
21725 : 7 : res_op->set_op (hypots, type, 2);
21726 : 7 : res_op->ops[0] = captures[0];
21727 : 7 : res_op->ops[1] = captures[1];
21728 : 7 : res_op->resimplify (lseq, valueize);
21729 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1204, __FILE__, __LINE__, true);
21730 : 7 : return true;
21731 : : }
21732 : 0 : next_after_fail2698:;
21733 : : }
21734 : 0 : break;
21735 : : }
21736 : 5 : case ABS_EXPR:
21737 : 5 : {
21738 : 5 : tree _q30 = gimple_assign_rhs1 (_a1);
21739 : 5 : _q30 = do_valueize (valueize, _q30);
21740 : 5 : {
21741 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
21742 : 5 : const combined_fn hypots = CFN_BUILT_IN_HYPOT;
21743 : 5 : gimple_seq *lseq = seq;
21744 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2699;
21745 : 5 : {
21746 : 5 : res_op->set_op (hypots, type, 2);
21747 : 5 : res_op->ops[0] = captures[0];
21748 : 5 : res_op->ops[1] = captures[1];
21749 : 5 : res_op->resimplify (lseq, valueize);
21750 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1204, __FILE__, __LINE__, true);
21751 : 5 : return true;
21752 : : }
21753 : 0 : next_after_fail2699:;
21754 : : }
21755 : 0 : break;
21756 : : }
21757 : : default:;
21758 : : }
21759 : : }
21760 : : break;
21761 : 311 : default:;
21762 : : }
21763 : 311 : switch (TREE_CODE (_p0))
21764 : : {
21765 : 274 : case SSA_NAME:
21766 : 274 : if (gimple *_d1 = get_def (valueize, _p0))
21767 : : {
21768 : 161 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21769 : 26 : switch (gimple_call_combined_fn (_c1))
21770 : : {
21771 : 4 : case CFN_BUILT_IN_COPYSIGN:
21772 : 4 : if (gimple_call_num_args (_c1) == 2)
21773 : : {
21774 : 4 : tree _q20 = gimple_call_arg (_c1, 0);
21775 : 4 : _q20 = do_valueize (valueize, _q20);
21776 : 4 : tree _q21 = gimple_call_arg (_c1, 1);
21777 : 4 : _q21 = do_valueize (valueize, _q21);
21778 : 4 : {
21779 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21780 : 4 : if (gimple_simplify_532 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_HYPOT))
21781 : 4 : return true;
21782 : : }
21783 : : }
21784 : : break;
21785 : 0 : case CFN_BUILT_IN_COPYSIGNF:
21786 : 0 : if (gimple_call_num_args (_c1) == 2)
21787 : : {
21788 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21789 : 0 : _q20 = do_valueize (valueize, _q20);
21790 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21791 : 0 : _q21 = do_valueize (valueize, _q21);
21792 : 0 : {
21793 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21794 : 0 : if (gimple_simplify_532 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_HYPOT))
21795 : 0 : return true;
21796 : : }
21797 : : }
21798 : : break;
21799 : 0 : case CFN_BUILT_IN_COPYSIGNL:
21800 : 0 : if (gimple_call_num_args (_c1) == 2)
21801 : : {
21802 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21803 : 0 : _q20 = do_valueize (valueize, _q20);
21804 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21805 : 0 : _q21 = do_valueize (valueize, _q21);
21806 : 0 : {
21807 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21808 : 0 : if (gimple_simplify_532 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_HYPOT))
21809 : 0 : return true;
21810 : : }
21811 : : }
21812 : : break;
21813 : 1 : case CFN_COPYSIGN:
21814 : 1 : if (gimple_call_num_args (_c1) == 2)
21815 : : {
21816 : 1 : tree _q20 = gimple_call_arg (_c1, 0);
21817 : 1 : _q20 = do_valueize (valueize, _q20);
21818 : 1 : tree _q21 = gimple_call_arg (_c1, 1);
21819 : 1 : _q21 = do_valueize (valueize, _q21);
21820 : 1 : {
21821 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21822 : 1 : if (gimple_simplify_532 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_HYPOT))
21823 : 1 : return true;
21824 : : }
21825 : : }
21826 : : break;
21827 : : default:;
21828 : : }
21829 : : }
21830 : : break;
21831 : 306 : default:;
21832 : : }
21833 : 306 : switch (TREE_CODE (_p1))
21834 : : {
21835 : 267 : case SSA_NAME:
21836 : 267 : if (gimple *_d1 = get_def (valueize, _p1))
21837 : : {
21838 : 156 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21839 : 22 : switch (gimple_call_combined_fn (_c1))
21840 : : {
21841 : 0 : case CFN_BUILT_IN_COPYSIGN:
21842 : 0 : if (gimple_call_num_args (_c1) == 2)
21843 : : {
21844 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
21845 : 0 : _q30 = do_valueize (valueize, _q30);
21846 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
21847 : 0 : _q31 = do_valueize (valueize, _q31);
21848 : 0 : {
21849 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
21850 : 0 : if (gimple_simplify_533 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_HYPOT))
21851 : 0 : return true;
21852 : : }
21853 : : }
21854 : : break;
21855 : 0 : case CFN_BUILT_IN_COPYSIGNF:
21856 : 0 : if (gimple_call_num_args (_c1) == 2)
21857 : : {
21858 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
21859 : 0 : _q30 = do_valueize (valueize, _q30);
21860 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
21861 : 0 : _q31 = do_valueize (valueize, _q31);
21862 : 0 : {
21863 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
21864 : 0 : if (gimple_simplify_533 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_HYPOT))
21865 : 0 : return true;
21866 : : }
21867 : : }
21868 : : break;
21869 : 0 : case CFN_BUILT_IN_COPYSIGNL:
21870 : 0 : if (gimple_call_num_args (_c1) == 2)
21871 : : {
21872 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
21873 : 0 : _q30 = do_valueize (valueize, _q30);
21874 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
21875 : 0 : _q31 = do_valueize (valueize, _q31);
21876 : 0 : {
21877 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
21878 : 0 : if (gimple_simplify_533 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_HYPOT))
21879 : 0 : return true;
21880 : : }
21881 : : }
21882 : : break;
21883 : 1 : case CFN_COPYSIGN:
21884 : 1 : if (gimple_call_num_args (_c1) == 2)
21885 : : {
21886 : 1 : tree _q30 = gimple_call_arg (_c1, 0);
21887 : 1 : _q30 = do_valueize (valueize, _q30);
21888 : 1 : tree _q31 = gimple_call_arg (_c1, 1);
21889 : 1 : _q31 = do_valueize (valueize, _q31);
21890 : 1 : {
21891 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
21892 : 1 : if (gimple_simplify_533 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_HYPOT))
21893 : 1 : return true;
21894 : : }
21895 : : }
21896 : : break;
21897 : : default:;
21898 : : }
21899 : : }
21900 : : break;
21901 : 305 : default:;
21902 : : }
21903 : 305 : if (real_zerop (_p1))
21904 : : {
21905 : 2 : {
21906 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21907 : 2 : if (gimple_simplify_534 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT))
21908 : 2 : return true;
21909 : : }
21910 : : }
21911 : 303 : if (real_zerop (_p0))
21912 : : {
21913 : 1 : {
21914 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
21915 : 1 : if (gimple_simplify_534 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT))
21916 : 1 : return true;
21917 : : }
21918 : : }
21919 : 302 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
21920 : : {
21921 : 7 : {
21922 : 7 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
21923 : 7 : if (gimple_simplify_535 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT))
21924 : 3 : return true;
21925 : : }
21926 : : }
21927 : : return false;
21928 : : }
21929 : :
21930 : : bool
21931 : 841227 : gimple_simplify_MIN_EXPR (gimple_match_op *res_op, gimple_seq *seq,
21932 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
21933 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
21934 : : {
21935 : 841227 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
21936 : 841227 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
21937 : : {
21938 : 5507 : {
21939 : 5507 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
21940 : 5507 : if (gimple_simplify_614 (res_op, seq, valueize, type, captures, MIN_EXPR))
21941 : 5507 : return true;
21942 : : }
21943 : : }
21944 : 835720 : switch (TREE_CODE (_p0))
21945 : : {
21946 : 818085 : case SSA_NAME:
21947 : 818085 : if (gimple *_d1 = get_def (valueize, _p0))
21948 : : {
21949 : 623326 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21950 : 692831 : switch (gimple_assign_rhs_code (_a1))
21951 : : {
21952 : 9139 : case MIN_EXPR:
21953 : 9139 : {
21954 : 9139 : tree _q20 = gimple_assign_rhs1 (_a1);
21955 : 9139 : _q20 = do_valueize (valueize, _q20);
21956 : 9139 : tree _q21 = gimple_assign_rhs2 (_a1);
21957 : 9139 : _q21 = do_valueize (valueize, _q21);
21958 : 9139 : if (tree_swap_operands_p (_q20, _q21))
21959 : 743 : std::swap (_q20, _q21);
21960 : 9139 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21961 : : {
21962 : 0 : {
21963 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
21964 : 0 : if (gimple_simplify_615 (res_op, seq, valueize, type, captures, MIN_EXPR))
21965 : 0 : return true;
21966 : : }
21967 : : }
21968 : 9139 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
21969 : : {
21970 : 545 : {
21971 : 545 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
21972 : 545 : if (gimple_simplify_615 (res_op, seq, valueize, type, captures, MIN_EXPR))
21973 : 545 : return true;
21974 : : }
21975 : : }
21976 : 835175 : break;
21977 : : }
21978 : : default:;
21979 : : }
21980 : : }
21981 : : break;
21982 : 835175 : default:;
21983 : : }
21984 : 835175 : switch (TREE_CODE (_p1))
21985 : : {
21986 : 550369 : case SSA_NAME:
21987 : 550369 : if (gimple *_d1 = get_def (valueize, _p1))
21988 : : {
21989 : 453189 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21990 : 544374 : switch (gimple_assign_rhs_code (_a1))
21991 : : {
21992 : 15464 : case MIN_EXPR:
21993 : 15464 : {
21994 : 15464 : tree _q30 = gimple_assign_rhs1 (_a1);
21995 : 15464 : _q30 = do_valueize (valueize, _q30);
21996 : 15464 : tree _q31 = gimple_assign_rhs2 (_a1);
21997 : 15464 : _q31 = do_valueize (valueize, _q31);
21998 : 15464 : if (tree_swap_operands_p (_q30, _q31))
21999 : 2647 : std::swap (_q30, _q31);
22000 : 15464 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
22001 : : {
22002 : 38 : {
22003 : 38 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
22004 : 38 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, MIN_EXPR))
22005 : 38 : return true;
22006 : : }
22007 : : }
22008 : 15426 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
22009 : : {
22010 : 1 : {
22011 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
22012 : 1 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, MIN_EXPR))
22013 : 1 : return true;
22014 : : }
22015 : : }
22016 : 835136 : break;
22017 : : }
22018 : : default:;
22019 : : }
22020 : : }
22021 : : break;
22022 : 835136 : default:;
22023 : : }
22024 : 835136 : switch (TREE_CODE (_p0))
22025 : : {
22026 : 817501 : case SSA_NAME:
22027 : 817501 : if (gimple *_d1 = get_def (valueize, _p0))
22028 : : {
22029 : 622742 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22030 : 692221 : switch (gimple_assign_rhs_code (_a1))
22031 : : {
22032 : 3612 : case MAX_EXPR:
22033 : 3612 : {
22034 : 3612 : tree _q20 = gimple_assign_rhs1 (_a1);
22035 : 3612 : _q20 = do_valueize (valueize, _q20);
22036 : 3612 : tree _q21 = gimple_assign_rhs2 (_a1);
22037 : 3612 : _q21 = do_valueize (valueize, _q21);
22038 : 3612 : if (tree_swap_operands_p (_q20, _q21))
22039 : 49 : std::swap (_q20, _q21);
22040 : 3612 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
22041 : : {
22042 : 6 : {
22043 : 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
22044 : 6 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures))
22045 : 6 : return true;
22046 : : }
22047 : : }
22048 : 3606 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
22049 : : {
22050 : 6 : {
22051 : 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
22052 : 6 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures))
22053 : 6 : return true;
22054 : : }
22055 : : }
22056 : 835124 : break;
22057 : : }
22058 : : default:;
22059 : : }
22060 : : }
22061 : : break;
22062 : 835124 : default:;
22063 : : }
22064 : 835124 : switch (TREE_CODE (_p1))
22065 : : {
22066 : 550318 : case SSA_NAME:
22067 : 550318 : if (gimple *_d1 = get_def (valueize, _p1))
22068 : : {
22069 : 453138 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22070 : 544329 : switch (gimple_assign_rhs_code (_a1))
22071 : : {
22072 : 1077 : case MAX_EXPR:
22073 : 1077 : {
22074 : 1077 : tree _q30 = gimple_assign_rhs1 (_a1);
22075 : 1077 : _q30 = do_valueize (valueize, _q30);
22076 : 1077 : tree _q31 = gimple_assign_rhs2 (_a1);
22077 : 1077 : _q31 = do_valueize (valueize, _q31);
22078 : 1077 : if (tree_swap_operands_p (_q30, _q31))
22079 : 45 : std::swap (_q30, _q31);
22080 : 1077 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
22081 : : {
22082 : 0 : {
22083 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
22084 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures))
22085 : 0 : return true;
22086 : : }
22087 : : }
22088 : 1077 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
22089 : : {
22090 : 0 : {
22091 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
22092 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures))
22093 : 0 : return true;
22094 : : }
22095 : : }
22096 : 835122 : break;
22097 : : }
22098 : 140 : case NEGATE_EXPR:
22099 : 140 : {
22100 : 140 : tree _q30 = gimple_assign_rhs1 (_a1);
22101 : 140 : _q30 = do_valueize (valueize, _q30);
22102 : 140 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
22103 : : {
22104 : 6 : {
22105 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22106 : 6 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures))
22107 : 2 : return true;
22108 : : }
22109 : : }
22110 : : break;
22111 : : }
22112 : : default:;
22113 : : }
22114 : : }
22115 : : break;
22116 : 835122 : default:;
22117 : : }
22118 : 835122 : switch (TREE_CODE (_p0))
22119 : : {
22120 : 817487 : case SSA_NAME:
22121 : 817487 : if (gimple *_d1 = get_def (valueize, _p0))
22122 : : {
22123 : 622728 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22124 : 692207 : switch (gimple_assign_rhs_code (_a1))
22125 : : {
22126 : 441 : case NEGATE_EXPR:
22127 : 441 : {
22128 : 441 : tree _q20 = gimple_assign_rhs1 (_a1);
22129 : 441 : _q20 = do_valueize (valueize, _q20);
22130 : 441 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
22131 : : {
22132 : 0 : {
22133 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
22134 : 0 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures))
22135 : 0 : return true;
22136 : : }
22137 : : }
22138 : : break;
22139 : : }
22140 : : default:;
22141 : : }
22142 : : }
22143 : : break;
22144 : 835122 : default:;
22145 : : }
22146 : 835122 : {
22147 : 835122 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22148 : 835122 : if (INTEGRAL_TYPE_P (type)
22149 : 818629 : && TYPE_MIN_VALUE (type)
22150 : 1653751 : && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)
22151 : : )
22152 : : {
22153 : 2229 : gimple_seq *lseq = seq;
22154 : 2229 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2761;
22155 : 2229 : {
22156 : 2229 : tree tem;
22157 : 2229 : tem = captures[1];
22158 : 2229 : res_op->set_value (tem);
22159 : 2229 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1215, __FILE__, __LINE__, true);
22160 : 2229 : return true;
22161 : : }
22162 : 0 : next_after_fail2761:;
22163 : : }
22164 : : else
22165 : : {
22166 : 832893 : if (INTEGRAL_TYPE_P (type)
22167 : 816400 : && TYPE_MAX_VALUE (type)
22168 : 1649293 : && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)
22169 : : )
22170 : : {
22171 : 4431 : gimple_seq *lseq = seq;
22172 : 4431 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2762;
22173 : 4431 : {
22174 : 4431 : tree tem;
22175 : 4431 : tem = captures[0];
22176 : 4431 : res_op->set_value (tem);
22177 : 4431 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1216, __FILE__, __LINE__, true);
22178 : 4431 : return true;
22179 : : }
22180 : 0 : next_after_fail2762:;
22181 : : }
22182 : : }
22183 : : }
22184 : 828462 : switch (TREE_CODE (_p1))
22185 : : {
22186 : 550316 : case SSA_NAME:
22187 : 550316 : if (gimple *_d1 = get_def (valueize, _p1))
22188 : : {
22189 : 453136 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22190 : 544327 : switch (gimple_assign_rhs_code (_a1))
22191 : : {
22192 : 78282 : case PLUS_EXPR:
22193 : 78282 : {
22194 : 78282 : tree _q30 = gimple_assign_rhs1 (_a1);
22195 : 78282 : _q30 = do_valueize (valueize, _q30);
22196 : 78282 : tree _q31 = gimple_assign_rhs2 (_a1);
22197 : 78282 : _q31 = do_valueize (valueize, _q31);
22198 : 78282 : if (tree_swap_operands_p (_q30, _q31))
22199 : 347 : std::swap (_q30, _q31);
22200 : 78282 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
22201 : : {
22202 : 270 : switch (TREE_CODE (_q31))
22203 : : {
22204 : 234 : case INTEGER_CST:
22205 : 234 : {
22206 : 234 : {
22207 : 234 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
22208 : 234 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
22209 : : )
22210 : : {
22211 : 10 : if (tree_int_cst_sgn (captures[2]) > 0
22212 : : )
22213 : : {
22214 : 10 : gimple_seq *lseq = seq;
22215 : 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2763;
22216 : 10 : {
22217 : 10 : tree tem;
22218 : 10 : tem = captures[0];
22219 : 10 : res_op->set_value (tem);
22220 : 10 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1217, __FILE__, __LINE__, true);
22221 : 10 : return true;
22222 : : }
22223 : 0 : next_after_fail2763:;
22224 : : }
22225 : : else
22226 : : {
22227 : 0 : gimple_seq *lseq = seq;
22228 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2764;
22229 : 0 : {
22230 : 0 : tree tem;
22231 : 0 : tem = captures[1];
22232 : 0 : res_op->set_value (tem);
22233 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1218, __FILE__, __LINE__, true);
22234 : 0 : return true;
22235 : : }
22236 : 0 : next_after_fail2764:;
22237 : : }
22238 : : }
22239 : : }
22240 : 224 : break;
22241 : : }
22242 : : default:;
22243 : : }
22244 : : }
22245 : 828452 : break;
22246 : : }
22247 : : default:;
22248 : : }
22249 : : }
22250 : : break;
22251 : 828452 : default:;
22252 : : }
22253 : 828452 : switch (TREE_CODE (_p0))
22254 : : {
22255 : 810817 : case SSA_NAME:
22256 : 810817 : if (gimple *_d1 = get_def (valueize, _p0))
22257 : : {
22258 : 619160 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22259 : 686749 : switch (gimple_assign_rhs_code (_a1))
22260 : : {
22261 : 118189 : case PLUS_EXPR:
22262 : 118189 : {
22263 : 118189 : tree _q20 = gimple_assign_rhs1 (_a1);
22264 : 118189 : _q20 = do_valueize (valueize, _q20);
22265 : 118189 : tree _q21 = gimple_assign_rhs2 (_a1);
22266 : 118189 : _q21 = do_valueize (valueize, _q21);
22267 : 118189 : if (tree_swap_operands_p (_q20, _q21))
22268 : 2148 : std::swap (_q20, _q21);
22269 : 118189 : switch (TREE_CODE (_q21))
22270 : : {
22271 : 76478 : case INTEGER_CST:
22272 : 76478 : {
22273 : 76478 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
22274 : : {
22275 : 134 : {
22276 : 134 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
22277 : 134 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
22278 : : )
22279 : : {
22280 : 4 : if (tree_int_cst_sgn (captures[2]) > 0
22281 : : )
22282 : : {
22283 : 1 : gimple_seq *lseq = seq;
22284 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2765;
22285 : 1 : {
22286 : 1 : tree tem;
22287 : 1 : tem = captures[0];
22288 : 1 : res_op->set_value (tem);
22289 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1217, __FILE__, __LINE__, true);
22290 : 1 : return true;
22291 : : }
22292 : 0 : next_after_fail2765:;
22293 : : }
22294 : : else
22295 : : {
22296 : 3 : gimple_seq *lseq = seq;
22297 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2766;
22298 : 3 : {
22299 : 3 : tree tem;
22300 : 3 : tem = captures[1];
22301 : 3 : res_op->set_value (tem);
22302 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1218, __FILE__, __LINE__, true);
22303 : 3 : return true;
22304 : : }
22305 : 0 : next_after_fail2766:;
22306 : : }
22307 : : }
22308 : : }
22309 : : }
22310 : : break;
22311 : : }
22312 : : default:;
22313 : : }
22314 : 828437 : break;
22315 : : }
22316 : 8581 : case MIN_EXPR:
22317 : 8581 : {
22318 : 8581 : tree _q20 = gimple_assign_rhs1 (_a1);
22319 : 8581 : _q20 = do_valueize (valueize, _q20);
22320 : 8581 : tree _q21 = gimple_assign_rhs2 (_a1);
22321 : 8581 : _q21 = do_valueize (valueize, _q21);
22322 : 8581 : if (tree_swap_operands_p (_q20, _q21))
22323 : 489 : std::swap (_q20, _q21);
22324 : 8581 : switch (TREE_CODE (_p1))
22325 : : {
22326 : 7923 : case SSA_NAME:
22327 : 7923 : if (gimple *_d2 = get_def (valueize, _p1))
22328 : : {
22329 : 7519 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22330 : 11164 : switch (gimple_assign_rhs_code (_a2))
22331 : : {
22332 : 560 : case MAX_EXPR:
22333 : 560 : {
22334 : 560 : tree _q50 = gimple_assign_rhs1 (_a2);
22335 : 560 : _q50 = do_valueize (valueize, _q50);
22336 : 560 : tree _q51 = gimple_assign_rhs2 (_a2);
22337 : 560 : _q51 = do_valueize (valueize, _q51);
22338 : 560 : if (tree_swap_operands_p (_q50, _q51))
22339 : 29 : std::swap (_q50, _q51);
22340 : 560 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
22341 : : {
22342 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
22343 : : {
22344 : 0 : {
22345 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
22346 : 0 : if (!HONOR_NANS (captures[0])
22347 : : )
22348 : : {
22349 : 0 : gimple_seq *lseq = seq;
22350 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2767;
22351 : 0 : {
22352 : 0 : res_op->set_op (MIN_EXPR, type, 2);
22353 : 0 : res_op->ops[0] = captures[0];
22354 : 0 : res_op->ops[1] = captures[1];
22355 : 0 : res_op->resimplify (lseq, valueize);
22356 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
22357 : 0 : return true;
22358 : : }
22359 : 0 : next_after_fail2767:;
22360 : : }
22361 : : }
22362 : : }
22363 : : }
22364 : 560 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
22365 : : {
22366 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
22367 : : {
22368 : 0 : {
22369 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
22370 : 0 : if (!HONOR_NANS (captures[0])
22371 : : )
22372 : : {
22373 : 0 : gimple_seq *lseq = seq;
22374 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2768;
22375 : 0 : {
22376 : 0 : res_op->set_op (MIN_EXPR, type, 2);
22377 : 0 : res_op->ops[0] = captures[0];
22378 : 0 : res_op->ops[1] = captures[1];
22379 : 0 : res_op->resimplify (lseq, valueize);
22380 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
22381 : 0 : return true;
22382 : : }
22383 : 0 : next_after_fail2768:;
22384 : : }
22385 : : }
22386 : : }
22387 : : }
22388 : 828437 : break;
22389 : : }
22390 : : default:;
22391 : : }
22392 : : }
22393 : : break;
22394 : : default:;
22395 : : }
22396 : 828437 : break;
22397 : : }
22398 : 3599 : case MAX_EXPR:
22399 : 3599 : {
22400 : 3599 : tree _q20 = gimple_assign_rhs1 (_a1);
22401 : 3599 : _q20 = do_valueize (valueize, _q20);
22402 : 3599 : tree _q21 = gimple_assign_rhs2 (_a1);
22403 : 3599 : _q21 = do_valueize (valueize, _q21);
22404 : 3599 : if (tree_swap_operands_p (_q20, _q21))
22405 : 43 : std::swap (_q20, _q21);
22406 : 3599 : switch (TREE_CODE (_p1))
22407 : : {
22408 : 585 : case SSA_NAME:
22409 : 585 : if (gimple *_d2 = get_def (valueize, _p1))
22410 : : {
22411 : 584 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22412 : 580 : switch (gimple_assign_rhs_code (_a2))
22413 : : {
22414 : 287 : case MIN_EXPR:
22415 : 287 : {
22416 : 287 : tree _q50 = gimple_assign_rhs1 (_a2);
22417 : 287 : _q50 = do_valueize (valueize, _q50);
22418 : 287 : tree _q51 = gimple_assign_rhs2 (_a2);
22419 : 287 : _q51 = do_valueize (valueize, _q51);
22420 : 287 : if (tree_swap_operands_p (_q50, _q51))
22421 : 18 : std::swap (_q50, _q51);
22422 : 287 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
22423 : : {
22424 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
22425 : : {
22426 : 2 : {
22427 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
22428 : 2 : if (!HONOR_NANS (captures[0])
22429 : : )
22430 : : {
22431 : 2 : gimple_seq *lseq = seq;
22432 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2769;
22433 : 2 : {
22434 : 2 : res_op->set_op (MIN_EXPR, type, 2);
22435 : 2 : res_op->ops[0] = captures[0];
22436 : 2 : res_op->ops[1] = captures[1];
22437 : 2 : res_op->resimplify (lseq, valueize);
22438 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
22439 : 2 : return true;
22440 : : }
22441 : 0 : next_after_fail2769:;
22442 : : }
22443 : : }
22444 : : }
22445 : : }
22446 : 285 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
22447 : : {
22448 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
22449 : : {
22450 : 0 : {
22451 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
22452 : 0 : if (!HONOR_NANS (captures[0])
22453 : : )
22454 : : {
22455 : 0 : gimple_seq *lseq = seq;
22456 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2770;
22457 : 0 : {
22458 : 0 : res_op->set_op (MIN_EXPR, type, 2);
22459 : 0 : res_op->ops[0] = captures[0];
22460 : 0 : res_op->ops[1] = captures[1];
22461 : 0 : res_op->resimplify (lseq, valueize);
22462 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
22463 : 0 : return true;
22464 : : }
22465 : 0 : next_after_fail2770:;
22466 : : }
22467 : : }
22468 : : }
22469 : : }
22470 : 828437 : break;
22471 : : }
22472 : : default:;
22473 : : }
22474 : : }
22475 : : break;
22476 : : default:;
22477 : : }
22478 : 828437 : break;
22479 : : }
22480 : 29295 : CASE_CONVERT:
22481 : 29295 : {
22482 : 29295 : tree _q20 = gimple_assign_rhs1 (_a1);
22483 : 29295 : _q20 = do_valueize (valueize, _q20);
22484 : 29295 : switch (TREE_CODE (_q20))
22485 : : {
22486 : 29295 : case SSA_NAME:
22487 : 29295 : if (gimple *_d2 = get_def (valueize, _q20))
22488 : : {
22489 : 28756 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22490 : 29073 : switch (gimple_assign_rhs_code (_a2))
22491 : : {
22492 : 34 : case ADDR_EXPR:
22493 : 34 : {
22494 : 34 : switch (TREE_CODE (_p1))
22495 : : {
22496 : 34 : case SSA_NAME:
22497 : 34 : if (gimple *_d3 = get_def (valueize, _p1))
22498 : : {
22499 : 34 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
22500 : 34 : switch (gimple_assign_rhs_code (_a3))
22501 : : {
22502 : 28 : CASE_CONVERT:
22503 : 28 : {
22504 : 28 : tree _q40 = gimple_assign_rhs1 (_a3);
22505 : 28 : _q40 = do_valueize (valueize, _q40);
22506 : 28 : switch (TREE_CODE (_q40))
22507 : : {
22508 : 28 : case SSA_NAME:
22509 : 28 : if (gimple *_d4 = get_def (valueize, _q40))
22510 : : {
22511 : 28 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
22512 : 56 : switch (gimple_assign_rhs_code (_a4))
22513 : : {
22514 : 28 : case ADDR_EXPR:
22515 : 28 : {
22516 : 28 : {
22517 : 28 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22518 : 28 : if (gimple_simplify_619 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22519 : 0 : return true;
22520 : : }
22521 : 28 : break;
22522 : : }
22523 : : default:;
22524 : : }
22525 : : }
22526 : : break;
22527 : 0 : case ADDR_EXPR:
22528 : 0 : {
22529 : 0 : {
22530 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22531 : 0 : if (gimple_simplify_619 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22532 : 0 : return true;
22533 : : }
22534 : 0 : break;
22535 : : }
22536 : : default:;
22537 : : }
22538 : : break;
22539 : : }
22540 : 0 : case ADDR_EXPR:
22541 : 0 : {
22542 : 0 : {
22543 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
22544 : 0 : if (gimple_simplify_620 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22545 : 0 : return true;
22546 : : }
22547 : 0 : break;
22548 : : }
22549 : : default:;
22550 : : }
22551 : : }
22552 : : break;
22553 : 0 : case ADDR_EXPR:
22554 : 0 : {
22555 : 0 : {
22556 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
22557 : 0 : if (gimple_simplify_620 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22558 : 0 : return true;
22559 : : }
22560 : 0 : break;
22561 : : }
22562 : : default:;
22563 : : }
22564 : : break;
22565 : : }
22566 : : default:;
22567 : : }
22568 : : }
22569 : : break;
22570 : 0 : case ADDR_EXPR:
22571 : 0 : {
22572 : 0 : switch (TREE_CODE (_p1))
22573 : : {
22574 : 0 : case SSA_NAME:
22575 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22576 : : {
22577 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22578 : 0 : switch (gimple_assign_rhs_code (_a2))
22579 : : {
22580 : 0 : CASE_CONVERT:
22581 : 0 : {
22582 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
22583 : 0 : _q40 = do_valueize (valueize, _q40);
22584 : 0 : switch (TREE_CODE (_q40))
22585 : : {
22586 : 0 : case SSA_NAME:
22587 : 0 : if (gimple *_d3 = get_def (valueize, _q40))
22588 : : {
22589 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
22590 : 0 : switch (gimple_assign_rhs_code (_a3))
22591 : : {
22592 : 0 : case ADDR_EXPR:
22593 : 0 : {
22594 : 0 : {
22595 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22596 : 0 : if (gimple_simplify_619 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22597 : 0 : return true;
22598 : : }
22599 : 0 : break;
22600 : : }
22601 : : default:;
22602 : : }
22603 : : }
22604 : : break;
22605 : 0 : case ADDR_EXPR:
22606 : 0 : {
22607 : 0 : {
22608 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22609 : 0 : if (gimple_simplify_619 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22610 : 0 : return true;
22611 : : }
22612 : 0 : break;
22613 : : }
22614 : : default:;
22615 : : }
22616 : : break;
22617 : : }
22618 : 0 : case ADDR_EXPR:
22619 : 0 : {
22620 : 0 : {
22621 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
22622 : 0 : if (gimple_simplify_620 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22623 : 0 : return true;
22624 : : }
22625 : 0 : break;
22626 : : }
22627 : : default:;
22628 : : }
22629 : : }
22630 : : break;
22631 : 0 : case ADDR_EXPR:
22632 : 0 : {
22633 : 0 : {
22634 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
22635 : 0 : if (gimple_simplify_620 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22636 : 0 : return true;
22637 : : }
22638 : 0 : break;
22639 : : }
22640 : : default:;
22641 : : }
22642 : : break;
22643 : : }
22644 : : default:;
22645 : : }
22646 : : break;
22647 : : }
22648 : 0 : case ADDR_EXPR:
22649 : 0 : {
22650 : 0 : switch (TREE_CODE (_p1))
22651 : : {
22652 : 0 : case SSA_NAME:
22653 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22654 : : {
22655 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22656 : 0 : switch (gimple_assign_rhs_code (_a2))
22657 : : {
22658 : 0 : CASE_CONVERT:
22659 : 0 : {
22660 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
22661 : 0 : _q30 = do_valueize (valueize, _q30);
22662 : 0 : switch (TREE_CODE (_q30))
22663 : : {
22664 : 0 : case SSA_NAME:
22665 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
22666 : : {
22667 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
22668 : 0 : switch (gimple_assign_rhs_code (_a3))
22669 : : {
22670 : 0 : case ADDR_EXPR:
22671 : 0 : {
22672 : 0 : {
22673 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
22674 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22675 : 0 : return true;
22676 : : }
22677 : 0 : break;
22678 : : }
22679 : : default:;
22680 : : }
22681 : : }
22682 : : break;
22683 : 0 : case ADDR_EXPR:
22684 : 0 : {
22685 : 0 : {
22686 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
22687 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22688 : 0 : return true;
22689 : : }
22690 : 0 : break;
22691 : : }
22692 : : default:;
22693 : : }
22694 : : break;
22695 : : }
22696 : 0 : case ADDR_EXPR:
22697 : 0 : {
22698 : 0 : {
22699 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
22700 : 0 : if (gimple_simplify_622 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22701 : 0 : return true;
22702 : : }
22703 : 0 : break;
22704 : : }
22705 : : default:;
22706 : : }
22707 : : }
22708 : : break;
22709 : 0 : case ADDR_EXPR:
22710 : 0 : {
22711 : 0 : {
22712 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
22713 : 0 : if (gimple_simplify_622 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22714 : 0 : return true;
22715 : : }
22716 : 0 : break;
22717 : : }
22718 : : default:;
22719 : : }
22720 : : break;
22721 : : }
22722 : 441 : case NEGATE_EXPR:
22723 : 441 : {
22724 : 441 : tree _q20 = gimple_assign_rhs1 (_a1);
22725 : 441 : _q20 = do_valueize (valueize, _q20);
22726 : 441 : switch (TREE_CODE (_p1))
22727 : : {
22728 : 127 : case SSA_NAME:
22729 : 127 : if (gimple *_d2 = get_def (valueize, _p1))
22730 : : {
22731 : 123 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22732 : 119 : switch (gimple_assign_rhs_code (_a2))
22733 : : {
22734 : 4 : case NEGATE_EXPR:
22735 : 4 : {
22736 : 4 : tree _q40 = gimple_assign_rhs1 (_a2);
22737 : 4 : _q40 = do_valueize (valueize, _q40);
22738 : 4 : {
22739 : 4 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22740 : 4 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
22741 : 4 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
22742 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
22743 : : )
22744 : : {
22745 : 4 : gimple_seq *lseq = seq;
22746 : 4 : if (lseq
22747 : 2 : && (!single_use (captures[0])
22748 : 2 : || !single_use (captures[2])))
22749 : 2 : lseq = NULL;
22750 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2771;
22751 : 4 : {
22752 : 4 : res_op->set_op (NEGATE_EXPR, type, 1);
22753 : 4 : {
22754 : 4 : tree _o1[2], _r1;
22755 : 4 : _o1[0] = captures[1];
22756 : 4 : _o1[1] = captures[3];
22757 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22758 : 4 : tem_op.resimplify (lseq, valueize);
22759 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22760 : 4 : if (!_r1) goto next_after_fail2771;
22761 : 2 : res_op->ops[0] = _r1;
22762 : : }
22763 : 2 : res_op->resimplify (lseq, valueize);
22764 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1219, __FILE__, __LINE__, true);
22765 : 2 : return true;
22766 : : }
22767 : 2 : next_after_fail2771:;
22768 : : }
22769 : : }
22770 : 2 : break;
22771 : : }
22772 : : default:;
22773 : : }
22774 : : }
22775 : : break;
22776 : : default:;
22777 : : }
22778 : : break;
22779 : : }
22780 : 189 : case BIT_NOT_EXPR:
22781 : 189 : {
22782 : 189 : tree _q20 = gimple_assign_rhs1 (_a1);
22783 : 189 : _q20 = do_valueize (valueize, _q20);
22784 : 189 : switch (TREE_CODE (_p1))
22785 : : {
22786 : 183 : case SSA_NAME:
22787 : 183 : if (gimple *_d2 = get_def (valueize, _p1))
22788 : : {
22789 : 183 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22790 : 137 : switch (gimple_assign_rhs_code (_a2))
22791 : : {
22792 : 103 : case BIT_NOT_EXPR:
22793 : 103 : {
22794 : 103 : tree _q40 = gimple_assign_rhs1 (_a2);
22795 : 103 : _q40 = do_valueize (valueize, _q40);
22796 : 103 : {
22797 : 103 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22798 : 103 : if (gimple_simplify_623 (res_op, seq, valueize, type, captures, MIN_EXPR, MAX_EXPR))
22799 : 4 : return true;
22800 : : }
22801 : 99 : break;
22802 : : }
22803 : : default:;
22804 : : }
22805 : : }
22806 : : break;
22807 : : default:;
22808 : : }
22809 : : break;
22810 : : }
22811 : 0 : case VEC_COND_EXPR:
22812 : 0 : {
22813 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22814 : 0 : _q20 = do_valueize (valueize, _q20);
22815 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
22816 : 0 : _q21 = do_valueize (valueize, _q21);
22817 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
22818 : 0 : _q22 = do_valueize (valueize, _q22);
22819 : 0 : switch (TREE_CODE (_p1))
22820 : : {
22821 : 0 : case SSA_NAME:
22822 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22823 : : {
22824 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22825 : 0 : switch (gimple_assign_rhs_code (_a2))
22826 : : {
22827 : 0 : case VEC_COND_EXPR:
22828 : 0 : {
22829 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
22830 : 0 : _q60 = do_valueize (valueize, _q60);
22831 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
22832 : 0 : _q61 = do_valueize (valueize, _q61);
22833 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
22834 : 0 : _q62 = do_valueize (valueize, _q62);
22835 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
22836 : : {
22837 : 0 : {
22838 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
22839 : 0 : if (VECTOR_TYPE_P (type)
22840 : 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
22841 : : || types_match (type, TREE_TYPE (captures[2]))
22842 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
22843 : : || (optimize_vectors_before_lowering_p ()
22844 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
22845 : : )
22846 : : {
22847 : 0 : gimple_seq *lseq = seq;
22848 : 0 : if (lseq
22849 : 0 : && (!single_use (captures[0])
22850 : 0 : || !single_use (captures[4])))
22851 : 0 : lseq = NULL;
22852 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2772;
22853 : 0 : {
22854 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
22855 : 0 : res_op->ops[0] = captures[1];
22856 : 0 : {
22857 : 0 : tree _o1[2], _r1;
22858 : 0 : _o1[0] = captures[2];
22859 : 0 : _o1[1] = captures[5];
22860 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22861 : 0 : tem_op.resimplify (NULL, valueize);
22862 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22863 : 0 : if (!_r1) goto next_after_fail2772;
22864 : 0 : res_op->ops[1] = _r1;
22865 : : }
22866 : 0 : {
22867 : 0 : tree _o1[2], _r1;
22868 : 0 : _o1[0] = captures[3];
22869 : 0 : _o1[1] = captures[6];
22870 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22871 : 0 : tem_op.resimplify (NULL, valueize);
22872 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22873 : 0 : if (!_r1) goto next_after_fail2772;
22874 : 0 : res_op->ops[2] = _r1;
22875 : : }
22876 : 0 : res_op->resimplify (lseq, valueize);
22877 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
22878 : 0 : return true;
22879 : : }
22880 : 0 : next_after_fail2772:;
22881 : : }
22882 : : }
22883 : : }
22884 : : break;
22885 : : }
22886 : : default:;
22887 : : }
22888 : : }
22889 : : break;
22890 : 0 : default:;
22891 : : }
22892 : 0 : {
22893 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
22894 : 0 : if (VECTOR_TYPE_P (type)
22895 : 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
22896 : : || types_match (type, TREE_TYPE (captures[2]))
22897 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
22898 : : || (optimize_vectors_before_lowering_p ()
22899 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
22900 : : )
22901 : : {
22902 : 0 : gimple_seq *lseq = seq;
22903 : 0 : if (lseq
22904 : 0 : && (!single_use (captures[0])))
22905 : 0 : lseq = NULL;
22906 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2773;
22907 : 0 : {
22908 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
22909 : 0 : res_op->ops[0] = captures[1];
22910 : 0 : {
22911 : 0 : tree _o1[2], _r1;
22912 : 0 : _o1[0] = captures[2];
22913 : 0 : _o1[1] = captures[4];
22914 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22915 : 0 : tem_op.resimplify (NULL, valueize);
22916 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22917 : 0 : if (!_r1) goto next_after_fail2773;
22918 : 0 : res_op->ops[1] = _r1;
22919 : : }
22920 : 0 : {
22921 : 0 : tree _o1[2], _r1;
22922 : 0 : _o1[0] = captures[3];
22923 : 0 : _o1[1] = captures[4];
22924 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22925 : 0 : tem_op.resimplify (NULL, valueize);
22926 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
22927 : 0 : if (!_r1) goto next_after_fail2773;
22928 : 0 : res_op->ops[2] = _r1;
22929 : : }
22930 : 0 : res_op->resimplify (lseq, valueize);
22931 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
22932 : 0 : return true;
22933 : : }
22934 : 0 : next_after_fail2773:;
22935 : : }
22936 : : }
22937 : 0 : break;
22938 : : }
22939 : : default:;
22940 : : }
22941 : : }
22942 : : break;
22943 : 94 : case ADDR_EXPR:
22944 : 94 : {
22945 : 94 : switch (TREE_CODE (_p1))
22946 : : {
22947 : 0 : case SSA_NAME:
22948 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
22949 : : {
22950 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22951 : 0 : switch (gimple_assign_rhs_code (_a1))
22952 : : {
22953 : 0 : CASE_CONVERT:
22954 : 0 : {
22955 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
22956 : 0 : _q30 = do_valueize (valueize, _q30);
22957 : 0 : switch (TREE_CODE (_q30))
22958 : : {
22959 : 0 : case SSA_NAME:
22960 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
22961 : : {
22962 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22963 : 0 : switch (gimple_assign_rhs_code (_a2))
22964 : : {
22965 : 0 : case ADDR_EXPR:
22966 : 0 : {
22967 : 0 : {
22968 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
22969 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22970 : 0 : return true;
22971 : : }
22972 : 0 : break;
22973 : : }
22974 : : default:;
22975 : : }
22976 : : }
22977 : : break;
22978 : 0 : case ADDR_EXPR:
22979 : 0 : {
22980 : 0 : {
22981 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
22982 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22983 : 0 : return true;
22984 : : }
22985 : 0 : break;
22986 : : }
22987 : : default:;
22988 : : }
22989 : : break;
22990 : : }
22991 : 0 : case ADDR_EXPR:
22992 : 0 : {
22993 : 0 : {
22994 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
22995 : 0 : if (gimple_simplify_622 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
22996 : 0 : return true;
22997 : : }
22998 : 0 : break;
22999 : : }
23000 : : default:;
23001 : : }
23002 : : }
23003 : : break;
23004 : 94 : case ADDR_EXPR:
23005 : 94 : {
23006 : 94 : {
23007 : 94 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
23008 : 94 : if (gimple_simplify_622 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
23009 : 3 : return true;
23010 : : }
23011 : 91 : break;
23012 : : }
23013 : : default:;
23014 : : }
23015 : : break;
23016 : : }
23017 : 828437 : default:;
23018 : : }
23019 : 828437 : switch (TREE_CODE (_p1))
23020 : : {
23021 : 550294 : case SSA_NAME:
23022 : 550294 : if (gimple *_d1 = get_def (valueize, _p1))
23023 : : {
23024 : 453114 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23025 : 544305 : switch (gimple_assign_rhs_code (_a1))
23026 : : {
23027 : 0 : case VEC_COND_EXPR:
23028 : 0 : {
23029 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
23030 : 0 : _q30 = do_valueize (valueize, _q30);
23031 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
23032 : 0 : _q31 = do_valueize (valueize, _q31);
23033 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
23034 : 0 : _q32 = do_valueize (valueize, _q32);
23035 : 0 : {
23036 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
23037 : 0 : if (VECTOR_TYPE_P (type)
23038 : 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
23039 : : || types_match (type, TREE_TYPE (captures[3]))
23040 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
23041 : : || (optimize_vectors_before_lowering_p ()
23042 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
23043 : : )
23044 : : {
23045 : 0 : gimple_seq *lseq = seq;
23046 : 0 : if (lseq
23047 : 0 : && (!single_use (captures[1])))
23048 : 0 : lseq = NULL;
23049 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2774;
23050 : 0 : {
23051 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23052 : 0 : res_op->ops[0] = captures[2];
23053 : 0 : {
23054 : 0 : tree _o1[2], _r1;
23055 : 0 : _o1[0] = captures[0];
23056 : 0 : _o1[1] = captures[3];
23057 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23058 : 0 : tem_op.resimplify (NULL, valueize);
23059 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23060 : 0 : if (!_r1) goto next_after_fail2774;
23061 : 0 : res_op->ops[1] = _r1;
23062 : : }
23063 : 0 : {
23064 : 0 : tree _o1[2], _r1;
23065 : 0 : _o1[0] = captures[0];
23066 : 0 : _o1[1] = captures[4];
23067 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23068 : 0 : tem_op.resimplify (NULL, valueize);
23069 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23070 : 0 : if (!_r1) goto next_after_fail2774;
23071 : 0 : res_op->ops[2] = _r1;
23072 : : }
23073 : 0 : res_op->resimplify (lseq, valueize);
23074 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
23075 : 0 : return true;
23076 : : }
23077 : 0 : next_after_fail2774:;
23078 : : }
23079 : : }
23080 : 0 : break;
23081 : : }
23082 : : default:;
23083 : : }
23084 : : }
23085 : : break;
23086 : 828437 : default:;
23087 : : }
23088 : 828437 : if (gimple_zero_one_valued_p (_p0, valueize))
23089 : : {
23090 : 29 : if (gimple_zero_one_valued_p (_p1, valueize))
23091 : : {
23092 : 16 : {
23093 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23094 : 16 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, MIN_EXPR, BIT_AND_EXPR))
23095 : 16 : return true;
23096 : : }
23097 : : }
23098 : : }
23099 : : return false;
23100 : : }
23101 : :
23102 : : bool
23103 : 1791 : gimple_simplify_CFN_BUILT_IN_FMAXF (gimple_match_op *res_op, gimple_seq *seq,
23104 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23105 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23106 : : {
23107 : 1791 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23108 : 1791 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
23109 : : {
23110 : 43 : {
23111 : 43 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
23112 : 43 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF))
23113 : 28 : return true;
23114 : : }
23115 : : }
23116 : 1763 : switch (TREE_CODE (_p1))
23117 : : {
23118 : 856 : case REAL_CST:
23119 : 856 : {
23120 : 856 : {
23121 : 856 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23122 : 856 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF))
23123 : 38 : return true;
23124 : : }
23125 : 818 : break;
23126 : : }
23127 : 1725 : default:;
23128 : : }
23129 : 1725 : switch (TREE_CODE (_p0))
23130 : : {
23131 : 460 : case REAL_CST:
23132 : 460 : {
23133 : 460 : {
23134 : 460 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
23135 : 460 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF))
23136 : 60 : return true;
23137 : : }
23138 : 400 : break;
23139 : : }
23140 : 1665 : default:;
23141 : : }
23142 : 1665 : {
23143 : 1665 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23144 : 1665 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF))
23145 : 23 : return true;
23146 : : }
23147 : 1642 : switch (TREE_CODE (_p0))
23148 : : {
23149 : 1096 : case SSA_NAME:
23150 : 1096 : if (gimple *_d1 = get_def (valueize, _p0))
23151 : : {
23152 : 633 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23153 : 485 : switch (gimple_assign_rhs_code (_a1))
23154 : : {
23155 : 40 : case NEGATE_EXPR:
23156 : 40 : {
23157 : 40 : tree _q20 = gimple_assign_rhs1 (_a1);
23158 : 40 : _q20 = do_valueize (valueize, _q20);
23159 : 40 : switch (TREE_CODE (_p1))
23160 : : {
23161 : 0 : case SSA_NAME:
23162 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23163 : : {
23164 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23165 : 0 : switch (gimple_assign_rhs_code (_a2))
23166 : : {
23167 : 0 : case NEGATE_EXPR:
23168 : 0 : {
23169 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23170 : 0 : _q40 = do_valueize (valueize, _q40);
23171 : 0 : {
23172 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
23173 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
23174 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
23175 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
23176 : : )
23177 : : {
23178 : 0 : gimple_seq *lseq = seq;
23179 : 0 : if (lseq
23180 : 0 : && (!single_use (captures[0])
23181 : 0 : || !single_use (captures[2])))
23182 : 0 : lseq = NULL;
23183 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2800;
23184 : 0 : {
23185 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
23186 : 0 : {
23187 : 0 : tree _o1[2], _r1;
23188 : 0 : _o1[0] = captures[1];
23189 : 0 : _o1[1] = captures[3];
23190 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23191 : 0 : tem_op.resimplify (lseq, valueize);
23192 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23193 : 0 : if (!_r1) goto next_after_fail2800;
23194 : 0 : res_op->ops[0] = _r1;
23195 : : }
23196 : 0 : res_op->resimplify (lseq, valueize);
23197 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1219, __FILE__, __LINE__, true);
23198 : 0 : return true;
23199 : : }
23200 : 0 : next_after_fail2800:;
23201 : : }
23202 : : }
23203 : 0 : break;
23204 : : }
23205 : : default:;
23206 : : }
23207 : : }
23208 : : break;
23209 : : default:;
23210 : : }
23211 : : break;
23212 : : }
23213 : : default:;
23214 : : }
23215 : : }
23216 : : break;
23217 : : default:;
23218 : : }
23219 : : return false;
23220 : : }
23221 : :
23222 : : bool
23223 : 0 : gimple_simplify_CFN_BUILT_IN_FMAXF32 (gimple_match_op *res_op, gimple_seq *seq,
23224 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23225 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23226 : : {
23227 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23228 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
23229 : : {
23230 : 0 : {
23231 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
23232 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23233 : 0 : return true;
23234 : : }
23235 : : }
23236 : 0 : switch (TREE_CODE (_p1))
23237 : : {
23238 : 0 : case REAL_CST:
23239 : 0 : {
23240 : 0 : {
23241 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23242 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23243 : 0 : return true;
23244 : : }
23245 : 0 : break;
23246 : : }
23247 : 0 : default:;
23248 : : }
23249 : 0 : switch (TREE_CODE (_p0))
23250 : : {
23251 : 0 : case REAL_CST:
23252 : 0 : {
23253 : 0 : {
23254 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
23255 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23256 : 0 : return true;
23257 : : }
23258 : 0 : break;
23259 : : }
23260 : 0 : default:;
23261 : : }
23262 : 0 : {
23263 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23264 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23265 : 0 : return true;
23266 : : }
23267 : 0 : switch (TREE_CODE (_p0))
23268 : : {
23269 : 0 : case SSA_NAME:
23270 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
23271 : : {
23272 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23273 : 0 : switch (gimple_assign_rhs_code (_a1))
23274 : : {
23275 : 0 : case NEGATE_EXPR:
23276 : 0 : {
23277 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23278 : 0 : _q20 = do_valueize (valueize, _q20);
23279 : 0 : switch (TREE_CODE (_p1))
23280 : : {
23281 : 0 : case SSA_NAME:
23282 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23283 : : {
23284 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23285 : 0 : switch (gimple_assign_rhs_code (_a2))
23286 : : {
23287 : 0 : case NEGATE_EXPR:
23288 : 0 : {
23289 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23290 : 0 : _q40 = do_valueize (valueize, _q40);
23291 : 0 : {
23292 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
23293 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
23294 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
23295 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
23296 : : )
23297 : : {
23298 : 0 : gimple_seq *lseq = seq;
23299 : 0 : if (lseq
23300 : 0 : && (!single_use (captures[0])
23301 : 0 : || !single_use (captures[2])))
23302 : 0 : lseq = NULL;
23303 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2804;
23304 : 0 : {
23305 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
23306 : 0 : {
23307 : 0 : tree _o1[2], _r1;
23308 : 0 : _o1[0] = captures[1];
23309 : 0 : _o1[1] = captures[3];
23310 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF32, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23311 : 0 : tem_op.resimplify (lseq, valueize);
23312 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23313 : 0 : if (!_r1) goto next_after_fail2804;
23314 : 0 : res_op->ops[0] = _r1;
23315 : : }
23316 : 0 : res_op->resimplify (lseq, valueize);
23317 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1219, __FILE__, __LINE__, true);
23318 : 0 : return true;
23319 : : }
23320 : 0 : next_after_fail2804:;
23321 : : }
23322 : : }
23323 : 0 : break;
23324 : : }
23325 : : default:;
23326 : : }
23327 : : }
23328 : : break;
23329 : : default:;
23330 : : }
23331 : : break;
23332 : : }
23333 : : default:;
23334 : : }
23335 : : }
23336 : : break;
23337 : : default:;
23338 : : }
23339 : : return false;
23340 : : }
23341 : :
23342 : : bool
23343 : 0 : gimple_simplify_CFN_BUILT_IN_FMAXF64X (gimple_match_op *res_op, gimple_seq *seq,
23344 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23345 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23346 : : {
23347 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23348 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
23349 : : {
23350 : 0 : {
23351 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
23352 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23353 : 0 : return true;
23354 : : }
23355 : : }
23356 : 0 : switch (TREE_CODE (_p1))
23357 : : {
23358 : 0 : case REAL_CST:
23359 : 0 : {
23360 : 0 : {
23361 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23362 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23363 : 0 : return true;
23364 : : }
23365 : 0 : break;
23366 : : }
23367 : 0 : default:;
23368 : : }
23369 : 0 : switch (TREE_CODE (_p0))
23370 : : {
23371 : 0 : case REAL_CST:
23372 : 0 : {
23373 : 0 : {
23374 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
23375 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23376 : 0 : return true;
23377 : : }
23378 : 0 : break;
23379 : : }
23380 : 0 : default:;
23381 : : }
23382 : 0 : {
23383 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23384 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23385 : 0 : return true;
23386 : : }
23387 : 0 : switch (TREE_CODE (_p0))
23388 : : {
23389 : 0 : case SSA_NAME:
23390 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
23391 : : {
23392 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23393 : 0 : switch (gimple_assign_rhs_code (_a1))
23394 : : {
23395 : 0 : case NEGATE_EXPR:
23396 : 0 : {
23397 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23398 : 0 : _q20 = do_valueize (valueize, _q20);
23399 : 0 : switch (TREE_CODE (_p1))
23400 : : {
23401 : 0 : case SSA_NAME:
23402 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23403 : : {
23404 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23405 : 0 : switch (gimple_assign_rhs_code (_a2))
23406 : : {
23407 : 0 : case NEGATE_EXPR:
23408 : 0 : {
23409 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23410 : 0 : _q40 = do_valueize (valueize, _q40);
23411 : 0 : {
23412 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
23413 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
23414 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
23415 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
23416 : : )
23417 : : {
23418 : 0 : gimple_seq *lseq = seq;
23419 : 0 : if (lseq
23420 : 0 : && (!single_use (captures[0])
23421 : 0 : || !single_use (captures[2])))
23422 : 0 : lseq = NULL;
23423 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2808;
23424 : 0 : {
23425 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
23426 : 0 : {
23427 : 0 : tree _o1[2], _r1;
23428 : 0 : _o1[0] = captures[1];
23429 : 0 : _o1[1] = captures[3];
23430 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF64X, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23431 : 0 : tem_op.resimplify (lseq, valueize);
23432 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23433 : 0 : if (!_r1) goto next_after_fail2808;
23434 : 0 : res_op->ops[0] = _r1;
23435 : : }
23436 : 0 : res_op->resimplify (lseq, valueize);
23437 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1219, __FILE__, __LINE__, true);
23438 : 0 : return true;
23439 : : }
23440 : 0 : next_after_fail2808:;
23441 : : }
23442 : : }
23443 : 0 : break;
23444 : : }
23445 : : default:;
23446 : : }
23447 : : }
23448 : : break;
23449 : : default:;
23450 : : }
23451 : : break;
23452 : : }
23453 : : default:;
23454 : : }
23455 : : }
23456 : : break;
23457 : : default:;
23458 : : }
23459 : : return false;
23460 : : }
23461 : :
23462 : : bool
23463 : 184510 : gimple_simplify_COMPLEX_EXPR (gimple_match_op *res_op, gimple_seq *seq,
23464 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23465 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23466 : : {
23467 : 184510 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23468 : 184510 : switch (TREE_CODE (_p0))
23469 : : {
23470 : 178720 : case SSA_NAME:
23471 : 178720 : if (gimple *_d1 = get_def (valueize, _p0))
23472 : : {
23473 : 132968 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23474 : 126107 : switch (gimple_assign_rhs_code (_a1))
23475 : : {
23476 : 4719 : case REALPART_EXPR:
23477 : 4719 : {
23478 : 4719 : tree _q20 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
23479 : 4719 : if ((TREE_CODE (_q20) == SSA_NAME
23480 : 4719 : || is_gimple_min_invariant (_q20)))
23481 : : {
23482 : 3573 : _q20 = do_valueize (valueize, _q20);
23483 : 3573 : switch (TREE_CODE (_p1))
23484 : : {
23485 : 3299 : case SSA_NAME:
23486 : 3299 : if (gimple *_d2 = get_def (valueize, _p1))
23487 : : {
23488 : 3217 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23489 : 4519 : switch (gimple_assign_rhs_code (_a2))
23490 : : {
23491 : 1660 : case IMAGPART_EXPR:
23492 : 1660 : {
23493 : 1660 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
23494 : 1660 : if ((TREE_CODE (_q40) == SSA_NAME
23495 : 1660 : || is_gimple_min_invariant (_q40)))
23496 : : {
23497 : 1660 : _q40 = do_valueize (valueize, _q40);
23498 : 1660 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
23499 : : {
23500 : 1612 : {
23501 : 1612 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
23502 : 1612 : gimple_seq *lseq = seq;
23503 : 1612 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2812;
23504 : 1612 : {
23505 : 1612 : tree tem;
23506 : 1612 : tem = captures[0];
23507 : 1612 : res_op->set_value (tem);
23508 : 1612 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1225, __FILE__, __LINE__, true);
23509 : 1612 : return true;
23510 : : }
23511 : 0 : next_after_fail2812:;
23512 : : }
23513 : : }
23514 : : }
23515 : : break;
23516 : : }
23517 : : default:;
23518 : : }
23519 : : }
23520 : : break;
23521 : : default:;
23522 : : }
23523 : : }
23524 : : break;
23525 : : }
23526 : : default:;
23527 : : }
23528 : : }
23529 : : break;
23530 : : default:;
23531 : : }
23532 : : return false;
23533 : : }
23534 : :
23535 : : bool
23536 : 228476 : gimple_simplify_UNGT_EXPR (gimple_match_op *res_op, gimple_seq *seq,
23537 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23538 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23539 : : {
23540 : 228476 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23541 : 228476 : switch (TREE_CODE (_p0))
23542 : : {
23543 : 228053 : case SSA_NAME:
23544 : 228053 : if (gimple *_d1 = get_def (valueize, _p0))
23545 : : {
23546 : 82818 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23547 : 88074 : switch (gimple_assign_rhs_code (_a1))
23548 : : {
23549 : 0 : case VEC_COND_EXPR:
23550 : 0 : {
23551 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23552 : 0 : _q20 = do_valueize (valueize, _q20);
23553 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
23554 : 0 : _q21 = do_valueize (valueize, _q21);
23555 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
23556 : 0 : _q22 = do_valueize (valueize, _q22);
23557 : 0 : switch (TREE_CODE (_p1))
23558 : : {
23559 : 0 : case SSA_NAME:
23560 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23561 : : {
23562 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23563 : 0 : switch (gimple_assign_rhs_code (_a2))
23564 : : {
23565 : 0 : case VEC_COND_EXPR:
23566 : 0 : {
23567 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
23568 : 0 : _q60 = do_valueize (valueize, _q60);
23569 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
23570 : 0 : _q61 = do_valueize (valueize, _q61);
23571 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
23572 : 0 : _q62 = do_valueize (valueize, _q62);
23573 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
23574 : : {
23575 : 0 : {
23576 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
23577 : 0 : if (VECTOR_TYPE_P (type)
23578 : 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
23579 : 0 : || types_match (type, TREE_TYPE (captures[2]))
23580 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
23581 : : || (optimize_vectors_before_lowering_p ()
23582 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
23583 : : )
23584 : : {
23585 : 0 : gimple_seq *lseq = seq;
23586 : 0 : if (lseq
23587 : 0 : && (!single_use (captures[0])
23588 : 0 : || !single_use (captures[4])))
23589 : 0 : lseq = NULL;
23590 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2829;
23591 : 0 : {
23592 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23593 : 0 : res_op->ops[0] = captures[1];
23594 : 0 : {
23595 : 0 : tree _o1[2], _r1;
23596 : 0 : _o1[0] = captures[2];
23597 : 0 : _o1[1] = captures[5];
23598 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGT_EXPR, type, _o1[0], _o1[1]);
23599 : 0 : tem_op.resimplify (NULL, valueize);
23600 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23601 : 0 : if (!_r1) goto next_after_fail2829;
23602 : 0 : res_op->ops[1] = _r1;
23603 : : }
23604 : 0 : {
23605 : 0 : tree _o1[2], _r1;
23606 : 0 : _o1[0] = captures[3];
23607 : 0 : _o1[1] = captures[6];
23608 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGT_EXPR, type, _o1[0], _o1[1]);
23609 : 0 : tem_op.resimplify (NULL, valueize);
23610 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23611 : 0 : if (!_r1) goto next_after_fail2829;
23612 : 0 : res_op->ops[2] = _r1;
23613 : : }
23614 : 0 : res_op->resimplify (lseq, valueize);
23615 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
23616 : 0 : return true;
23617 : : }
23618 : 0 : next_after_fail2829:;
23619 : : }
23620 : : }
23621 : : }
23622 : : break;
23623 : : }
23624 : : default:;
23625 : : }
23626 : : }
23627 : : break;
23628 : 0 : default:;
23629 : : }
23630 : 0 : {
23631 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
23632 : 0 : if (VECTOR_TYPE_P (type)
23633 : 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
23634 : 0 : || types_match (type, TREE_TYPE (captures[2]))
23635 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
23636 : : || (optimize_vectors_before_lowering_p ()
23637 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
23638 : : )
23639 : : {
23640 : 0 : gimple_seq *lseq = seq;
23641 : 0 : if (lseq
23642 : 0 : && (!single_use (captures[0])))
23643 : 0 : lseq = NULL;
23644 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2830;
23645 : 0 : {
23646 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23647 : 0 : res_op->ops[0] = captures[1];
23648 : 0 : {
23649 : 0 : tree _o1[2], _r1;
23650 : 0 : _o1[0] = captures[2];
23651 : 0 : _o1[1] = captures[4];
23652 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGT_EXPR, type, _o1[0], _o1[1]);
23653 : 0 : tem_op.resimplify (NULL, valueize);
23654 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23655 : 0 : if (!_r1) goto next_after_fail2830;
23656 : 0 : res_op->ops[1] = _r1;
23657 : : }
23658 : 0 : {
23659 : 0 : tree _o1[2], _r1;
23660 : 0 : _o1[0] = captures[3];
23661 : 0 : _o1[1] = captures[4];
23662 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGT_EXPR, type, _o1[0], _o1[1]);
23663 : 0 : tem_op.resimplify (NULL, valueize);
23664 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23665 : 0 : if (!_r1) goto next_after_fail2830;
23666 : 0 : res_op->ops[2] = _r1;
23667 : : }
23668 : 0 : res_op->resimplify (lseq, valueize);
23669 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
23670 : 0 : return true;
23671 : : }
23672 : 0 : next_after_fail2830:;
23673 : : }
23674 : : }
23675 : 0 : break;
23676 : : }
23677 : : default:;
23678 : : }
23679 : : }
23680 : : break;
23681 : 228476 : default:;
23682 : : }
23683 : 228476 : switch (TREE_CODE (_p1))
23684 : : {
23685 : 13484 : case SSA_NAME:
23686 : 13484 : if (gimple *_d1 = get_def (valueize, _p1))
23687 : : {
23688 : 8195 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23689 : 11544 : switch (gimple_assign_rhs_code (_a1))
23690 : : {
23691 : 0 : case VEC_COND_EXPR:
23692 : 0 : {
23693 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
23694 : 0 : _q30 = do_valueize (valueize, _q30);
23695 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
23696 : 0 : _q31 = do_valueize (valueize, _q31);
23697 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
23698 : 0 : _q32 = do_valueize (valueize, _q32);
23699 : 0 : {
23700 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
23701 : 0 : if (VECTOR_TYPE_P (type)
23702 : 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
23703 : 0 : || types_match (type, TREE_TYPE (captures[3]))
23704 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
23705 : : || (optimize_vectors_before_lowering_p ()
23706 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
23707 : : )
23708 : : {
23709 : 0 : gimple_seq *lseq = seq;
23710 : 0 : if (lseq
23711 : 0 : && (!single_use (captures[1])))
23712 : 0 : lseq = NULL;
23713 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2831;
23714 : 0 : {
23715 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23716 : 0 : res_op->ops[0] = captures[2];
23717 : 0 : {
23718 : 0 : tree _o1[2], _r1;
23719 : 0 : _o1[0] = captures[0];
23720 : 0 : _o1[1] = captures[3];
23721 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGT_EXPR, type, _o1[0], _o1[1]);
23722 : 0 : tem_op.resimplify (NULL, valueize);
23723 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23724 : 0 : if (!_r1) goto next_after_fail2831;
23725 : 0 : res_op->ops[1] = _r1;
23726 : : }
23727 : 0 : {
23728 : 0 : tree _o1[2], _r1;
23729 : 0 : _o1[0] = captures[0];
23730 : 0 : _o1[1] = captures[4];
23731 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNGT_EXPR, type, _o1[0], _o1[1]);
23732 : 0 : tem_op.resimplify (NULL, valueize);
23733 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23734 : 0 : if (!_r1) goto next_after_fail2831;
23735 : 0 : res_op->ops[2] = _r1;
23736 : : }
23737 : 0 : res_op->resimplify (lseq, valueize);
23738 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
23739 : 0 : return true;
23740 : : }
23741 : 0 : next_after_fail2831:;
23742 : : }
23743 : : }
23744 : 0 : break;
23745 : : }
23746 : : default:;
23747 : : }
23748 : : }
23749 : : break;
23750 : 228476 : default:;
23751 : : }
23752 : 228476 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
23753 : : {
23754 : 7 : {
23755 : 7 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
23756 : 7 : if (gimple_simplify_659 (res_op, seq, valueize, type, captures, UNGT_EXPR))
23757 : 7 : return true;
23758 : : }
23759 : : }
23760 : 228469 : switch (TREE_CODE (_p0))
23761 : : {
23762 : 228046 : case SSA_NAME:
23763 : 228046 : if (gimple *_d1 = get_def (valueize, _p0))
23764 : : {
23765 : 82817 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23766 : 88074 : switch (gimple_assign_rhs_code (_a1))
23767 : : {
23768 : 839 : case FLOAT_EXPR:
23769 : 839 : {
23770 : 839 : tree _q20 = gimple_assign_rhs1 (_a1);
23771 : 839 : _q20 = do_valueize (valueize, _q20);
23772 : 839 : switch (TREE_CODE (_p1))
23773 : : {
23774 : 0 : case SSA_NAME:
23775 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23776 : : {
23777 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23778 : 0 : switch (gimple_assign_rhs_code (_a2))
23779 : : {
23780 : 0 : case FLOAT_EXPR:
23781 : 0 : {
23782 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23783 : 0 : _q40 = do_valueize (valueize, _q40);
23784 : 0 : {
23785 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
23786 : 0 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, UNGT_EXPR, GT_EXPR))
23787 : 0 : return true;
23788 : : }
23789 : 0 : break;
23790 : : }
23791 : : default:;
23792 : : }
23793 : : }
23794 : : break;
23795 : : default:;
23796 : : }
23797 : : break;
23798 : : }
23799 : 30 : case NEGATE_EXPR:
23800 : 30 : {
23801 : 30 : tree _q20 = gimple_assign_rhs1 (_a1);
23802 : 30 : _q20 = do_valueize (valueize, _q20);
23803 : 30 : switch (TREE_CODE (_p1))
23804 : : {
23805 : 30 : case SSA_NAME:
23806 : 30 : if (gimple *_d2 = get_def (valueize, _p1))
23807 : : {
23808 : 30 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23809 : 30 : switch (gimple_assign_rhs_code (_a2))
23810 : : {
23811 : 30 : case NEGATE_EXPR:
23812 : 30 : {
23813 : 30 : tree _q40 = gimple_assign_rhs1 (_a2);
23814 : 30 : _q40 = do_valueize (valueize, _q40);
23815 : 30 : {
23816 : 30 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
23817 : 30 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, UNGT_EXPR, UNLT_EXPR))
23818 : 30 : return true;
23819 : : }
23820 : 0 : break;
23821 : : }
23822 : : default:;
23823 : : }
23824 : : }
23825 : : break;
23826 : 0 : default:;
23827 : : }
23828 : 0 : if (CONSTANT_CLASS_P (_p1))
23829 : : {
23830 : 0 : {
23831 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
23832 : 0 : if (gimple_simplify_290 (res_op, seq, valueize, type, captures, UNGT_EXPR, UNLT_EXPR))
23833 : 0 : return true;
23834 : : }
23835 : : }
23836 : : break;
23837 : : }
23838 : : default:;
23839 : : }
23840 : : }
23841 : : break;
23842 : 228439 : default:;
23843 : : }
23844 : 228439 : switch (TREE_CODE (_p1))
23845 : : {
23846 : 214690 : case REAL_CST:
23847 : 214690 : {
23848 : 214690 : {
23849 : 214690 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23850 : 214690 : if (gimple_simplify_658 (res_op, seq, valueize, type, captures, UNGT_EXPR))
23851 : 0 : return true;
23852 : : }
23853 : 214690 : break;
23854 : : }
23855 : : default:;
23856 : : }
23857 : : return false;
23858 : : }
23859 : :
23860 : : bool
23861 : 298437 : gimple_simplify_CFN_MUL_OVERFLOW (gimple_match_op *res_op, gimple_seq *seq,
23862 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23863 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23864 : : {
23865 : 298437 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23866 : 298437 : switch (TREE_CODE (_p0))
23867 : : {
23868 : 273027 : case SSA_NAME:
23869 : 273027 : if (gimple *_d1 = get_def (valueize, _p0))
23870 : : {
23871 : 188441 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23872 : 16772 : switch (gimple_assign_rhs_code (_a1))
23873 : : {
23874 : 9051 : CASE_CONVERT:
23875 : 9051 : {
23876 : 9051 : tree _q20 = gimple_assign_rhs1 (_a1);
23877 : 9051 : _q20 = do_valueize (valueize, _q20);
23878 : 9051 : {
23879 : 9051 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
23880 : 9051 : if (gimple_simplify_661 (res_op, seq, valueize, type, captures, CFN_MUL_OVERFLOW))
23881 : 6383 : return true;
23882 : : }
23883 : 2668 : break;
23884 : : }
23885 : : default:;
23886 : : }
23887 : : }
23888 : : break;
23889 : 292054 : default:;
23890 : : }
23891 : 292054 : switch (TREE_CODE (_p1))
23892 : : {
23893 : 79399 : case SSA_NAME:
23894 : 79399 : if (gimple *_d1 = get_def (valueize, _p1))
23895 : : {
23896 : 51733 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23897 : 4933 : switch (gimple_assign_rhs_code (_a1))
23898 : : {
23899 : 1340 : CASE_CONVERT:
23900 : 1340 : {
23901 : 1340 : tree _q30 = gimple_assign_rhs1 (_a1);
23902 : 1340 : _q30 = do_valueize (valueize, _q30);
23903 : 1340 : {
23904 : 1340 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
23905 : 1340 : if (gimple_simplify_662 (res_op, seq, valueize, type, captures, CFN_MUL_OVERFLOW))
23906 : 24 : return true;
23907 : : }
23908 : 1316 : break;
23909 : : }
23910 : : default:;
23911 : : }
23912 : : }
23913 : : break;
23914 : : default:;
23915 : : }
23916 : : return false;
23917 : : }
23918 : :
23919 : : bool
23920 : 286 : gimple_simplify_CFN_BUILT_IN_POWF128 (gimple_match_op *res_op, gimple_seq *seq,
23921 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23922 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23923 : : {
23924 : 286 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23925 : 286 : switch (TREE_CODE (_p0))
23926 : : {
23927 : 136 : case SSA_NAME:
23928 : 136 : if (gimple *_d1 = get_def (valueize, _p0))
23929 : : {
23930 : 70 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23931 : 114 : switch (gimple_assign_rhs_code (_a1))
23932 : : {
23933 : 0 : case RDIV_EXPR:
23934 : 0 : {
23935 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23936 : 0 : _q20 = do_valueize (valueize, _q20);
23937 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
23938 : 0 : _q21 = do_valueize (valueize, _q21);
23939 : 0 : if (real_onep (_q20))
23940 : : {
23941 : 0 : {
23942 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
23943 : 0 : if (gimple_simplify_527 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF128))
23944 : 0 : return true;
23945 : : }
23946 : : }
23947 : : break;
23948 : : }
23949 : : default:;
23950 : : }
23951 : : }
23952 : : break;
23953 : 286 : default:;
23954 : : }
23955 : 286 : if (real_zerop (_p0))
23956 : : {
23957 : 0 : {
23958 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23959 : 0 : if (gimple_simplify_528 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF128))
23960 : 0 : return true;
23961 : : }
23962 : : }
23963 : : return false;
23964 : : }
23965 : :
23966 : : bool
23967 : 1438 : gimple_simplify_CFN_BUILT_IN_LDEXPF (gimple_match_op *res_op, gimple_seq *seq,
23968 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23969 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23970 : : {
23971 : 1438 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23972 : 1438 : if (real_zerop (_p0))
23973 : : {
23974 : 28 : {
23975 : 28 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23976 : 28 : if (gimple_simplify_674 (res_op, seq, valueize, type, captures))
23977 : 28 : return true;
23978 : : }
23979 : : }
23980 : 1410 : if (integer_zerop (_p1))
23981 : : {
23982 : 7 : {
23983 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23984 : 7 : if (gimple_simplify_675 (res_op, seq, valueize, type, captures))
23985 : 7 : return true;
23986 : : }
23987 : : }
23988 : 1403 : switch (TREE_CODE (_p0))
23989 : : {
23990 : 1024 : case REAL_CST:
23991 : 1024 : {
23992 : 1024 : {
23993 : 1024 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23994 : 1024 : if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))
23995 : : )
23996 : : {
23997 : 56 : gimple_seq *lseq = seq;
23998 : 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2842;
23999 : 56 : {
24000 : 56 : tree tem;
24001 : 56 : tem = captures[0];
24002 : 56 : res_op->set_value (tem);
24003 : 56 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1231, __FILE__, __LINE__, true);
24004 : 56 : return true;
24005 : : }
24006 : 0 : next_after_fail2842:;
24007 : : }
24008 : : }
24009 : 968 : break;
24010 : : }
24011 : : default:;
24012 : : }
24013 : : return false;
24014 : : }
24015 : :
24016 : : bool
24017 : 4421 : gimple_simplify_CFN_BUILT_IN_SCALBNF (gimple_match_op *res_op, gimple_seq *seq,
24018 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24019 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
24020 : : {
24021 : 4421 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
24022 : 4421 : if (real_zerop (_p0))
24023 : : {
24024 : 28 : {
24025 : 28 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
24026 : 28 : if (gimple_simplify_674 (res_op, seq, valueize, type, captures))
24027 : 28 : return true;
24028 : : }
24029 : : }
24030 : 4393 : if (integer_zerop (_p1))
24031 : : {
24032 : 7 : {
24033 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
24034 : 7 : if (gimple_simplify_675 (res_op, seq, valueize, type, captures))
24035 : 7 : return true;
24036 : : }
24037 : : }
24038 : 4386 : switch (TREE_CODE (_p0))
24039 : : {
24040 : 2247 : case REAL_CST:
24041 : 2247 : {
24042 : 2247 : {
24043 : 2247 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
24044 : 2247 : if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))
24045 : : )
24046 : : {
24047 : 71 : gimple_seq *lseq = seq;
24048 : 71 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2846;
24049 : 71 : {
24050 : 71 : tree tem;
24051 : 71 : tem = captures[0];
24052 : 71 : res_op->set_value (tem);
24053 : 71 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1231, __FILE__, __LINE__, true);
24054 : 71 : return true;
24055 : : }
24056 : 0 : next_after_fail2846:;
24057 : : }
24058 : : }
24059 : 2176 : break;
24060 : : }
24061 : : default:;
24062 : : }
24063 : : return false;
24064 : : }
24065 : :
24066 : : bool
24067 : 969 : gimple_simplify_CFN_BUILT_IN_SCALBLN (gimple_match_op *res_op, gimple_seq *seq,
24068 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24069 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
24070 : : {
24071 : 969 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
24072 : 969 : if (real_zerop (_p0))
24073 : : {
24074 : 28 : {
24075 : 28 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
24076 : 28 : if (gimple_simplify_674 (res_op, seq, valueize, type, captures))
24077 : 28 : return true;
24078 : : }
24079 : : }
24080 : 941 : if (integer_zerop (_p1))
24081 : : {
24082 : 7 : {
24083 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
24084 : 7 : if (gimple_simplify_675 (res_op, seq, valueize, type, captures))
24085 : 7 : return true;
24086 : : }
24087 : : }
24088 : 934 : switch (TREE_CODE (_p0))
24089 : : {
24090 : 832 : case REAL_CST:
24091 : 832 : {
24092 : 832 : {
24093 : 832 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
24094 : 832 : if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))
24095 : : )
24096 : : {
24097 : 56 : gimple_seq *lseq = seq;
24098 : 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2850;
24099 : 56 : {
24100 : 56 : tree tem;
24101 : 56 : tem = captures[0];
24102 : 56 : res_op->set_value (tem);
24103 : 56 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1231, __FILE__, __LINE__, true);
24104 : 56 : return true;
24105 : : }
24106 : 0 : next_after_fail2850:;
24107 : : }
24108 : : }
24109 : 776 : break;
24110 : : }
24111 : : default:;
24112 : : }
24113 : : return false;
24114 : : }
24115 : :
24116 : : bool
24117 : 518277437 : gimple_simplify (gimple_match_op *res_op, gimple_seq *seq,
24118 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24119 : : code_helper code, const tree type, tree _p0, tree _p1)
24120 : : {
24121 : 518277437 : switch (code.get_rep())
24122 : : {
24123 : 801899 : case BIT_XOR_EXPR:
24124 : 801899 : return gimple_simplify_BIT_XOR_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24125 : 111797681 : case PLUS_EXPR:
24126 : 111797681 : return gimple_simplify_PLUS_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24127 : 33321918 : case POINTER_PLUS_EXPR:
24128 : 33321918 : return gimple_simplify_POINTER_PLUS_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24129 : 11270333 : case MINUS_EXPR:
24130 : 11270333 : return gimple_simplify_MINUS_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24131 : 4618774 : case BIT_IOR_EXPR:
24132 : 4618774 : return gimple_simplify_BIT_IOR_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24133 : 2730627 : case POINTER_DIFF_EXPR:
24134 : 2730627 : return gimple_simplify_POINTER_DIFF_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24135 : 39727936 : case MULT_EXPR:
24136 : 39727936 : return gimple_simplify_MULT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24137 : 80038307 : case EQ_EXPR:
24138 : 80038307 : return gimple_simplify_EQ_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24139 : 129526508 : case NE_EXPR:
24140 : 129526508 : return gimple_simplify_NE_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24141 : 153205 : case -CFN_BUILT_IN_COPYSIGNF:
24142 : 153205 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF (res_op, seq, valueize, code, type, _p0, _p1);
24143 : 150450 : case -CFN_BUILT_IN_COPYSIGN:
24144 : 150450 : return gimple_simplify_CFN_BUILT_IN_COPYSIGN (res_op, seq, valueize, code, type, _p0, _p1);
24145 : 148825 : case -CFN_BUILT_IN_COPYSIGNL:
24146 : 148825 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNL (res_op, seq, valueize, code, type, _p0, _p1);
24147 : 2475 : case -CFN_BUILT_IN_COPYSIGNF16:
24148 : 2475 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF16 (res_op, seq, valueize, code, type, _p0, _p1);
24149 : 327 : case -CFN_BUILT_IN_COPYSIGNF32:
24150 : 327 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF32 (res_op, seq, valueize, code, type, _p0, _p1);
24151 : 327 : case -CFN_BUILT_IN_COPYSIGNF64:
24152 : 327 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF64 (res_op, seq, valueize, code, type, _p0, _p1);
24153 : 2003 : case -CFN_BUILT_IN_COPYSIGNF128:
24154 : 2003 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF128 (res_op, seq, valueize, code, type, _p0, _p1);
24155 : 327 : case -CFN_BUILT_IN_COPYSIGNF32X:
24156 : 327 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF32X (res_op, seq, valueize, code, type, _p0, _p1);
24157 : 327 : case -CFN_BUILT_IN_COPYSIGNF64X:
24158 : 327 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF64X (res_op, seq, valueize, code, type, _p0, _p1);
24159 : 0 : case -CFN_BUILT_IN_COPYSIGNF128X:
24160 : 0 : return gimple_simplify_CFN_BUILT_IN_COPYSIGNF128X (res_op, seq, valueize, code, type, _p0, _p1);
24161 : 3862 : case -CFN_COPYSIGN:
24162 : 3862 : return gimple_simplify_CFN_COPYSIGN (res_op, seq, valueize, code, type, _p0, _p1);
24163 : 1538920 : case TRUNC_DIV_EXPR:
24164 : 1538920 : return gimple_simplify_TRUNC_DIV_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24165 : 2907 : case CEIL_DIV_EXPR:
24166 : 2907 : return gimple_simplify_CEIL_DIV_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24167 : 14841 : case FLOOR_DIV_EXPR:
24168 : 14841 : return gimple_simplify_FLOOR_DIV_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24169 : 348 : case ROUND_DIV_EXPR:
24170 : 348 : return gimple_simplify_ROUND_DIV_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24171 : 1321257 : case EXACT_DIV_EXPR:
24172 : 1321257 : return gimple_simplify_EXACT_DIV_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24173 : 9606 : case FLOOR_MOD_EXPR:
24174 : 9606 : return gimple_simplify_FLOOR_MOD_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24175 : 583930 : case RDIV_EXPR:
24176 : 583930 : return gimple_simplify_RDIV_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24177 : 15966208 : case LT_EXPR:
24178 : 15966208 : return gimple_simplify_LT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24179 : 14682518 : case LE_EXPR:
24180 : 14682518 : return gimple_simplify_LE_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24181 : 34733766 : case GT_EXPR:
24182 : 34733766 : return gimple_simplify_GT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24183 : 9194096 : case GE_EXPR:
24184 : 9194096 : return gimple_simplify_GE_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24185 : 2235 : case CEIL_MOD_EXPR:
24186 : 2235 : return gimple_simplify_CEIL_MOD_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24187 : 354 : case ROUND_MOD_EXPR:
24188 : 354 : return gimple_simplify_ROUND_MOD_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24189 : 1765609 : case TRUNC_MOD_EXPR:
24190 : 1765609 : return gimple_simplify_TRUNC_MOD_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24191 : 1828085 : case LSHIFT_EXPR:
24192 : 1828085 : return gimple_simplify_LSHIFT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24193 : 3832248 : case RSHIFT_EXPR:
24194 : 3832248 : return gimple_simplify_RSHIFT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24195 : 4896 : case -CFN_BUILT_IN_POWF:
24196 : 4896 : return gimple_simplify_CFN_BUILT_IN_POWF (res_op, seq, valueize, code, type, _p0, _p1);
24197 : 6563 : case -CFN_BUILT_IN_POW:
24198 : 6563 : return gimple_simplify_CFN_BUILT_IN_POW (res_op, seq, valueize, code, type, _p0, _p1);
24199 : 2955 : case -CFN_BUILT_IN_POWL:
24200 : 2955 : return gimple_simplify_CFN_BUILT_IN_POWL (res_op, seq, valueize, code, type, _p0, _p1);
24201 : 0 : case -CFN_POW:
24202 : 0 : return gimple_simplify_CFN_POW (res_op, seq, valueize, code, type, _p0, _p1);
24203 : 2691 : case -CFN_BUILT_IN_POWIF:
24204 : 2691 : return gimple_simplify_CFN_BUILT_IN_POWIF (res_op, seq, valueize, code, type, _p0, _p1);
24205 : 3678 : case -CFN_BUILT_IN_POWI:
24206 : 3678 : return gimple_simplify_CFN_BUILT_IN_POWI (res_op, seq, valueize, code, type, _p0, _p1);
24207 : 91 : case -CFN_BUILT_IN_POWIL:
24208 : 91 : return gimple_simplify_CFN_BUILT_IN_POWIL (res_op, seq, valueize, code, type, _p0, _p1);
24209 : 382 : case -CFN_BUILT_IN_HYPOTF:
24210 : 382 : return gimple_simplify_CFN_BUILT_IN_HYPOTF (res_op, seq, valueize, code, type, _p0, _p1);
24211 : 335 : case -CFN_BUILT_IN_HYPOT:
24212 : 335 : return gimple_simplify_CFN_BUILT_IN_HYPOT (res_op, seq, valueize, code, type, _p0, _p1);
24213 : 195 : case -CFN_BUILT_IN_HYPOTL:
24214 : 195 : return gimple_simplify_CFN_BUILT_IN_HYPOTL (res_op, seq, valueize, code, type, _p0, _p1);
24215 : 0 : case -CFN_HYPOT:
24216 : 0 : return gimple_simplify_CFN_HYPOT (res_op, seq, valueize, code, type, _p0, _p1);
24217 : 9534757 : case BIT_AND_EXPR:
24218 : 9534757 : return gimple_simplify_BIT_AND_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24219 : 841227 : case MIN_EXPR:
24220 : 841227 : return gimple_simplify_MIN_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24221 : 1180082 : case MAX_EXPR:
24222 : 1180082 : return gimple_simplify_MAX_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24223 : 1738 : case -CFN_BUILT_IN_FMINF:
24224 : 1738 : return gimple_simplify_CFN_BUILT_IN_FMINF (res_op, seq, valueize, code, type, _p0, _p1);
24225 : 1800 : case -CFN_BUILT_IN_FMIN:
24226 : 1800 : return gimple_simplify_CFN_BUILT_IN_FMIN (res_op, seq, valueize, code, type, _p0, _p1);
24227 : 1522 : case -CFN_BUILT_IN_FMINL:
24228 : 1522 : return gimple_simplify_CFN_BUILT_IN_FMINL (res_op, seq, valueize, code, type, _p0, _p1);
24229 : 11 : case -CFN_BUILT_IN_FMINF16:
24230 : 11 : return gimple_simplify_CFN_BUILT_IN_FMINF16 (res_op, seq, valueize, code, type, _p0, _p1);
24231 : 0 : case -CFN_BUILT_IN_FMINF32:
24232 : 0 : return gimple_simplify_CFN_BUILT_IN_FMINF32 (res_op, seq, valueize, code, type, _p0, _p1);
24233 : 0 : case -CFN_BUILT_IN_FMINF64:
24234 : 0 : return gimple_simplify_CFN_BUILT_IN_FMINF64 (res_op, seq, valueize, code, type, _p0, _p1);
24235 : 42 : case -CFN_BUILT_IN_FMINF128:
24236 : 42 : return gimple_simplify_CFN_BUILT_IN_FMINF128 (res_op, seq, valueize, code, type, _p0, _p1);
24237 : 0 : case -CFN_BUILT_IN_FMINF32X:
24238 : 0 : return gimple_simplify_CFN_BUILT_IN_FMINF32X (res_op, seq, valueize, code, type, _p0, _p1);
24239 : 0 : case -CFN_BUILT_IN_FMINF64X:
24240 : 0 : return gimple_simplify_CFN_BUILT_IN_FMINF64X (res_op, seq, valueize, code, type, _p0, _p1);
24241 : 0 : case -CFN_BUILT_IN_FMINF128X:
24242 : 0 : return gimple_simplify_CFN_BUILT_IN_FMINF128X (res_op, seq, valueize, code, type, _p0, _p1);
24243 : 0 : case -CFN_FMIN:
24244 : 0 : return gimple_simplify_CFN_FMIN (res_op, seq, valueize, code, type, _p0, _p1);
24245 : 1791 : case -CFN_BUILT_IN_FMAXF:
24246 : 1791 : return gimple_simplify_CFN_BUILT_IN_FMAXF (res_op, seq, valueize, code, type, _p0, _p1);
24247 : 2264 : case -CFN_BUILT_IN_FMAX:
24248 : 2264 : return gimple_simplify_CFN_BUILT_IN_FMAX (res_op, seq, valueize, code, type, _p0, _p1);
24249 : 1722 : case -CFN_BUILT_IN_FMAXL:
24250 : 1722 : return gimple_simplify_CFN_BUILT_IN_FMAXL (res_op, seq, valueize, code, type, _p0, _p1);
24251 : 11 : case -CFN_BUILT_IN_FMAXF16:
24252 : 11 : return gimple_simplify_CFN_BUILT_IN_FMAXF16 (res_op, seq, valueize, code, type, _p0, _p1);
24253 : 0 : case -CFN_BUILT_IN_FMAXF32:
24254 : 0 : return gimple_simplify_CFN_BUILT_IN_FMAXF32 (res_op, seq, valueize, code, type, _p0, _p1);
24255 : 0 : case -CFN_BUILT_IN_FMAXF64:
24256 : 0 : return gimple_simplify_CFN_BUILT_IN_FMAXF64 (res_op, seq, valueize, code, type, _p0, _p1);
24257 : 42 : case -CFN_BUILT_IN_FMAXF128:
24258 : 42 : return gimple_simplify_CFN_BUILT_IN_FMAXF128 (res_op, seq, valueize, code, type, _p0, _p1);
24259 : 0 : case -CFN_BUILT_IN_FMAXF32X:
24260 : 0 : return gimple_simplify_CFN_BUILT_IN_FMAXF32X (res_op, seq, valueize, code, type, _p0, _p1);
24261 : 0 : case -CFN_BUILT_IN_FMAXF64X:
24262 : 0 : return gimple_simplify_CFN_BUILT_IN_FMAXF64X (res_op, seq, valueize, code, type, _p0, _p1);
24263 : 0 : case -CFN_BUILT_IN_FMAXF128X:
24264 : 0 : return gimple_simplify_CFN_BUILT_IN_FMAXF128X (res_op, seq, valueize, code, type, _p0, _p1);
24265 : 0 : case -CFN_FMAX:
24266 : 0 : return gimple_simplify_CFN_FMAX (res_op, seq, valueize, code, type, _p0, _p1);
24267 : 25936 : case LROTATE_EXPR:
24268 : 25936 : return gimple_simplify_LROTATE_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24269 : 96988 : case RROTATE_EXPR:
24270 : 96988 : return gimple_simplify_RROTATE_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24271 : 184510 : case COMPLEX_EXPR:
24272 : 184510 : return gimple_simplify_COMPLEX_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24273 : 155968 : case UNORDERED_EXPR:
24274 : 155968 : return gimple_simplify_UNORDERED_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24275 : 119950 : case ORDERED_EXPR:
24276 : 119950 : return gimple_simplify_ORDERED_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24277 : 31554 : case UNLT_EXPR:
24278 : 31554 : return gimple_simplify_UNLT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24279 : 379662 : case UNLE_EXPR:
24280 : 379662 : return gimple_simplify_UNLE_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24281 : 228476 : case UNGT_EXPR:
24282 : 228476 : return gimple_simplify_UNGT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24283 : 272279 : case UNGE_EXPR:
24284 : 272279 : return gimple_simplify_UNGE_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24285 : 12041 : case UNEQ_EXPR:
24286 : 12041 : return gimple_simplify_UNEQ_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24287 : 1866 : case LTGT_EXPR:
24288 : 1866 : return gimple_simplify_LTGT_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24289 : 250569 : case -CFN_ADD_OVERFLOW:
24290 : 250569 : return gimple_simplify_CFN_ADD_OVERFLOW (res_op, seq, valueize, code, type, _p0, _p1);
24291 : 291793 : case -CFN_SUB_OVERFLOW:
24292 : 291793 : return gimple_simplify_CFN_SUB_OVERFLOW (res_op, seq, valueize, code, type, _p0, _p1);
24293 : 298437 : case -CFN_MUL_OVERFLOW:
24294 : 298437 : return gimple_simplify_CFN_MUL_OVERFLOW (res_op, seq, valueize, code, type, _p0, _p1);
24295 : 12 : case -CFN_BUILT_IN_POWF16:
24296 : 12 : return gimple_simplify_CFN_BUILT_IN_POWF16 (res_op, seq, valueize, code, type, _p0, _p1);
24297 : 0 : case -CFN_BUILT_IN_POWF32:
24298 : 0 : return gimple_simplify_CFN_BUILT_IN_POWF32 (res_op, seq, valueize, code, type, _p0, _p1);
24299 : 0 : case -CFN_BUILT_IN_POWF64:
24300 : 0 : return gimple_simplify_CFN_BUILT_IN_POWF64 (res_op, seq, valueize, code, type, _p0, _p1);
24301 : 286 : case -CFN_BUILT_IN_POWF128:
24302 : 286 : return gimple_simplify_CFN_BUILT_IN_POWF128 (res_op, seq, valueize, code, type, _p0, _p1);
24303 : 0 : case -CFN_BUILT_IN_POWF32X:
24304 : 0 : return gimple_simplify_CFN_BUILT_IN_POWF32X (res_op, seq, valueize, code, type, _p0, _p1);
24305 : 0 : case -CFN_BUILT_IN_POWF64X:
24306 : 0 : return gimple_simplify_CFN_BUILT_IN_POWF64X (res_op, seq, valueize, code, type, _p0, _p1);
24307 : 0 : case -CFN_BUILT_IN_POWF128X:
24308 : 0 : return gimple_simplify_CFN_BUILT_IN_POWF128X (res_op, seq, valueize, code, type, _p0, _p1);
24309 : 1438 : case -CFN_BUILT_IN_LDEXPF:
24310 : 1438 : return gimple_simplify_CFN_BUILT_IN_LDEXPF (res_op, seq, valueize, code, type, _p0, _p1);
24311 : 2518 : case -CFN_BUILT_IN_LDEXP:
24312 : 2518 : return gimple_simplify_CFN_BUILT_IN_LDEXP (res_op, seq, valueize, code, type, _p0, _p1);
24313 : 1856 : case -CFN_BUILT_IN_LDEXPL:
24314 : 1856 : return gimple_simplify_CFN_BUILT_IN_LDEXPL (res_op, seq, valueize, code, type, _p0, _p1);
24315 : 0 : case -CFN_LDEXP:
24316 : 0 : return gimple_simplify_CFN_LDEXP (res_op, seq, valueize, code, type, _p0, _p1);
24317 : 4421 : case -CFN_BUILT_IN_SCALBNF:
24318 : 4421 : return gimple_simplify_CFN_BUILT_IN_SCALBNF (res_op, seq, valueize, code, type, _p0, _p1);
24319 : 3016 : case -CFN_BUILT_IN_SCALBN:
24320 : 3016 : return gimple_simplify_CFN_BUILT_IN_SCALBN (res_op, seq, valueize, code, type, _p0, _p1);
24321 : 1150 : case -CFN_BUILT_IN_SCALBNL:
24322 : 1150 : return gimple_simplify_CFN_BUILT_IN_SCALBNL (res_op, seq, valueize, code, type, _p0, _p1);
24323 : 1068 : case -CFN_BUILT_IN_SCALBLNF:
24324 : 1068 : return gimple_simplify_CFN_BUILT_IN_SCALBLNF (res_op, seq, valueize, code, type, _p0, _p1);
24325 : 969 : case -CFN_BUILT_IN_SCALBLN:
24326 : 969 : return gimple_simplify_CFN_BUILT_IN_SCALBLN (res_op, seq, valueize, code, type, _p0, _p1);
24327 : 926 : case -CFN_BUILT_IN_SCALBLNL:
24328 : 926 : return gimple_simplify_CFN_BUILT_IN_SCALBLNL (res_op, seq, valueize, code, type, _p0, _p1);
24329 : 0 : case TRUTH_ORIF_EXPR:
24330 : 0 : return gimple_simplify_TRUTH_ORIF_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24331 : 0 : case TRUTH_OR_EXPR:
24332 : 0 : return gimple_simplify_TRUTH_OR_EXPR (res_op, seq, valueize, code, type, _p0, _p1);
24333 : 0 : case -CFN_VEC_SHL_INSERT:
24334 : 0 : return gimple_simplify_CFN_VEC_SHL_INSERT (res_op, seq, valueize, code, type, _p0, _p1);
24335 : : default:;
24336 : : }
24337 : : return false;
24338 : : }
24339 : :
24340 : : bool
24341 : 1012 : gimple_simplify_CFN_BUILT_IN_FMAL (gimple_match_op *res_op, gimple_seq *seq,
24342 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24343 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
24344 : : {
24345 : 1012 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
24346 : 1012 : switch (TREE_CODE (_p0))
24347 : : {
24348 : 795 : case SSA_NAME:
24349 : 795 : if (gimple *_d1 = get_def (valueize, _p0))
24350 : : {
24351 : 360 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24352 : 247 : switch (gimple_assign_rhs_code (_a1))
24353 : : {
24354 : 2 : case NEGATE_EXPR:
24355 : 2 : {
24356 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
24357 : 2 : _q20 = do_valueize (valueize, _q20);
24358 : 2 : {
24359 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
24360 : 2 : if (gimple_simplify_685 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL))
24361 : 0 : return true;
24362 : : }
24363 : 2 : switch (TREE_CODE (_p2))
24364 : : {
24365 : 2 : case SSA_NAME:
24366 : 2 : if (gimple *_d2 = get_def (valueize, _p2))
24367 : : {
24368 : 2 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24369 : 0 : switch (gimple_assign_rhs_code (_a2))
24370 : : {
24371 : 0 : case NEGATE_EXPR:
24372 : 0 : {
24373 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
24374 : 0 : _q50 = do_valueize (valueize, _q50);
24375 : 0 : {
24376 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q50 };
24377 : 0 : if (gimple_simplify_686 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL))
24378 : 0 : return true;
24379 : : }
24380 : 0 : break;
24381 : : }
24382 : : default:;
24383 : : }
24384 : : }
24385 : : break;
24386 : : default:;
24387 : : }
24388 : : break;
24389 : : }
24390 : : default:;
24391 : : }
24392 : : }
24393 : : break;
24394 : 1012 : default:;
24395 : : }
24396 : 1012 : switch (TREE_CODE (_p1))
24397 : : {
24398 : 63 : case SSA_NAME:
24399 : 63 : if (gimple *_d1 = get_def (valueize, _p1))
24400 : : {
24401 : 40 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24402 : 36 : switch (gimple_assign_rhs_code (_a1))
24403 : : {
24404 : 2 : case NEGATE_EXPR:
24405 : 2 : {
24406 : 2 : tree _q30 = gimple_assign_rhs1 (_a1);
24407 : 2 : _q30 = do_valueize (valueize, _q30);
24408 : 2 : {
24409 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _p2 };
24410 : 2 : if (gimple_simplify_685 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL))
24411 : 0 : return true;
24412 : : }
24413 : 2 : break;
24414 : : }
24415 : : default:;
24416 : : }
24417 : : }
24418 : : break;
24419 : 1012 : default:;
24420 : : }
24421 : 1012 : switch (TREE_CODE (_p2))
24422 : : {
24423 : 807 : case SSA_NAME:
24424 : 807 : if (gimple *_d1 = get_def (valueize, _p2))
24425 : : {
24426 : 548 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24427 : 545 : switch (gimple_assign_rhs_code (_a1))
24428 : : {
24429 : 0 : case NEGATE_EXPR:
24430 : 0 : {
24431 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
24432 : 0 : _q40 = do_valueize (valueize, _q40);
24433 : 0 : {
24434 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q40 };
24435 : 0 : if (gimple_simplify_687 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL))
24436 : 0 : return true;
24437 : : }
24438 : 0 : break;
24439 : : }
24440 : : default:;
24441 : : }
24442 : : }
24443 : : break;
24444 : 1012 : default:;
24445 : : }
24446 : 1012 : switch (TREE_CODE (_p1))
24447 : : {
24448 : 63 : case SSA_NAME:
24449 : 63 : if (gimple *_d1 = get_def (valueize, _p1))
24450 : : {
24451 : 40 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24452 : 36 : switch (gimple_assign_rhs_code (_a1))
24453 : : {
24454 : 2 : case NEGATE_EXPR:
24455 : 2 : {
24456 : 2 : tree _q30 = gimple_assign_rhs1 (_a1);
24457 : 2 : _q30 = do_valueize (valueize, _q30);
24458 : 2 : switch (TREE_CODE (_p2))
24459 : : {
24460 : 2 : case SSA_NAME:
24461 : 2 : if (gimple *_d2 = get_def (valueize, _p2))
24462 : : {
24463 : 2 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24464 : 0 : switch (gimple_assign_rhs_code (_a2))
24465 : : {
24466 : 0 : case NEGATE_EXPR:
24467 : 0 : {
24468 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
24469 : 0 : _q50 = do_valueize (valueize, _q50);
24470 : 0 : {
24471 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q50 };
24472 : 0 : if (gimple_simplify_686 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL))
24473 : 0 : return true;
24474 : : }
24475 : 0 : break;
24476 : : }
24477 : : default:;
24478 : : }
24479 : : }
24480 : : break;
24481 : : default:;
24482 : : }
24483 : : break;
24484 : : }
24485 : : default:;
24486 : : }
24487 : : }
24488 : : break;
24489 : : default:;
24490 : : }
24491 : : return false;
24492 : : }
24493 : :
24494 : : bool
24495 : 2777 : gimple_simplify_CFN_FMS (gimple_match_op *res_op, gimple_seq *seq,
24496 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24497 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
24498 : : {
24499 : 2777 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
24500 : 2777 : switch (TREE_CODE (_p0))
24501 : : {
24502 : 2777 : case SSA_NAME:
24503 : 2777 : if (gimple *_d1 = get_def (valueize, _p0))
24504 : : {
24505 : 2750 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24506 : 4607 : switch (gimple_assign_rhs_code (_a1))
24507 : : {
24508 : 0 : case NEGATE_EXPR:
24509 : 0 : {
24510 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
24511 : 0 : _q20 = do_valueize (valueize, _q20);
24512 : 0 : {
24513 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
24514 : 0 : if (gimple_simplify_688 (res_op, seq, valueize, type, captures))
24515 : 0 : return true;
24516 : : }
24517 : 0 : switch (TREE_CODE (_p2))
24518 : : {
24519 : 0 : case SSA_NAME:
24520 : 0 : if (gimple *_d2 = get_def (valueize, _p2))
24521 : : {
24522 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24523 : 0 : switch (gimple_assign_rhs_code (_a2))
24524 : : {
24525 : 0 : case NEGATE_EXPR:
24526 : 0 : {
24527 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
24528 : 0 : _q50 = do_valueize (valueize, _q50);
24529 : 0 : {
24530 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q50 };
24531 : 0 : if (gimple_simplify_689 (res_op, seq, valueize, type, captures))
24532 : 0 : return true;
24533 : : }
24534 : 0 : break;
24535 : : }
24536 : : default:;
24537 : : }
24538 : : }
24539 : : break;
24540 : : default:;
24541 : : }
24542 : : break;
24543 : : }
24544 : : default:;
24545 : : }
24546 : : }
24547 : : break;
24548 : 2777 : default:;
24549 : : }
24550 : 2777 : switch (TREE_CODE (_p1))
24551 : : {
24552 : 2761 : case SSA_NAME:
24553 : 2761 : if (gimple *_d1 = get_def (valueize, _p1))
24554 : : {
24555 : 2730 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24556 : 2279 : switch (gimple_assign_rhs_code (_a1))
24557 : : {
24558 : 0 : case NEGATE_EXPR:
24559 : 0 : {
24560 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
24561 : 0 : _q30 = do_valueize (valueize, _q30);
24562 : 0 : {
24563 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _p2 };
24564 : 0 : if (gimple_simplify_688 (res_op, seq, valueize, type, captures))
24565 : 0 : return true;
24566 : : }
24567 : 0 : break;
24568 : : }
24569 : : default:;
24570 : : }
24571 : : }
24572 : : break;
24573 : 2777 : default:;
24574 : : }
24575 : 2777 : switch (TREE_CODE (_p2))
24576 : : {
24577 : 2777 : case SSA_NAME:
24578 : 2777 : if (gimple *_d1 = get_def (valueize, _p2))
24579 : : {
24580 : 2755 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24581 : 4560 : switch (gimple_assign_rhs_code (_a1))
24582 : : {
24583 : 0 : case NEGATE_EXPR:
24584 : 0 : {
24585 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
24586 : 0 : _q40 = do_valueize (valueize, _q40);
24587 : 0 : {
24588 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q40 };
24589 : 0 : if (canonicalize_math_after_vectorization_p ()
24590 : : )
24591 : : {
24592 : 0 : gimple_seq *lseq = seq;
24593 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3070;
24594 : 0 : {
24595 : 0 : res_op->set_op (CFN_FMA, type, 3);
24596 : 0 : res_op->ops[0] = captures[0];
24597 : 0 : res_op->ops[1] = captures[1];
24598 : 0 : res_op->ops[2] = captures[2];
24599 : 0 : res_op->resimplify (lseq, valueize);
24600 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1294, __FILE__, __LINE__, true);
24601 : 0 : return true;
24602 : : }
24603 : 0 : next_after_fail3070:;
24604 : : }
24605 : : }
24606 : 0 : break;
24607 : : }
24608 : : default:;
24609 : : }
24610 : : }
24611 : : break;
24612 : 2777 : default:;
24613 : : }
24614 : 2777 : switch (TREE_CODE (_p1))
24615 : : {
24616 : 2761 : case SSA_NAME:
24617 : 2761 : if (gimple *_d1 = get_def (valueize, _p1))
24618 : : {
24619 : 2730 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24620 : 2279 : switch (gimple_assign_rhs_code (_a1))
24621 : : {
24622 : 0 : case NEGATE_EXPR:
24623 : 0 : {
24624 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
24625 : 0 : _q30 = do_valueize (valueize, _q30);
24626 : 0 : switch (TREE_CODE (_p2))
24627 : : {
24628 : 0 : case SSA_NAME:
24629 : 0 : if (gimple *_d2 = get_def (valueize, _p2))
24630 : : {
24631 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24632 : 0 : switch (gimple_assign_rhs_code (_a2))
24633 : : {
24634 : 0 : case NEGATE_EXPR:
24635 : 0 : {
24636 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
24637 : 0 : _q50 = do_valueize (valueize, _q50);
24638 : 0 : {
24639 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q50 };
24640 : 0 : if (gimple_simplify_689 (res_op, seq, valueize, type, captures))
24641 : 0 : return true;
24642 : : }
24643 : 0 : break;
24644 : : }
24645 : : default:;
24646 : : }
24647 : : }
24648 : : break;
24649 : : default:;
24650 : : }
24651 : : break;
24652 : : }
24653 : : default:;
24654 : : }
24655 : : }
24656 : : break;
24657 : : default:;
24658 : : }
24659 : : return false;
24660 : : }
24661 : :
24662 : : bool
24663 : 0 : gimple_simplify_CFN_VCOND_MASK_LEN (gimple_match_op *res_op, gimple_seq *seq,
24664 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24665 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
24666 : : {
24667 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
24668 : 0 : switch (TREE_CODE (_p2))
24669 : : {
24670 : 0 : case SSA_NAME:
24671 : 0 : if (gimple *_d1 = get_def (valueize, _p2))
24672 : : {
24673 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24674 : 0 : switch (gimple_assign_rhs_code (_a1))
24675 : : {
24676 : 0 : case VIEW_CONVERT_EXPR:
24677 : 0 : {
24678 : 0 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
24679 : 0 : if ((TREE_CODE (_q40) == SSA_NAME
24680 : 0 : || is_gimple_min_invariant (_q40)))
24681 : : {
24682 : 0 : _q40 = do_valueize (valueize, _q40);
24683 : 0 : switch (TREE_CODE (_q40))
24684 : : {
24685 : 0 : case SSA_NAME:
24686 : 0 : if (gimple *_d2 = get_def (valueize, _q40))
24687 : : {
24688 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
24689 : 0 : switch (gimple_call_combined_fn (_c2))
24690 : : {
24691 : 0 : case CFN_FMA:
24692 : 0 : if (gimple_call_num_args (_c2) == 5)
24693 : : {
24694 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
24695 : 0 : _q50 = do_valueize (valueize, _q50);
24696 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
24697 : 0 : _q51 = do_valueize (valueize, _q51);
24698 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
24699 : 0 : _q52 = do_valueize (valueize, _q52);
24700 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
24701 : 0 : _q53 = do_valueize (valueize, _q53);
24702 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
24703 : 0 : _q54 = do_valueize (valueize, _q54);
24704 : 0 : if (tree_swap_operands_p (_q50, _q51))
24705 : 0 : std::swap (_q50, _q51);
24706 : 0 : {
24707 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52, _q53, _q54 };
24708 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_LEN_FMA))
24709 : 0 : return true;
24710 : : }
24711 : : }
24712 : : break;
24713 : 0 : case CFN_FMS:
24714 : 0 : if (gimple_call_num_args (_c2) == 5)
24715 : : {
24716 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
24717 : 0 : _q50 = do_valueize (valueize, _q50);
24718 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
24719 : 0 : _q51 = do_valueize (valueize, _q51);
24720 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
24721 : 0 : _q52 = do_valueize (valueize, _q52);
24722 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
24723 : 0 : _q53 = do_valueize (valueize, _q53);
24724 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
24725 : 0 : _q54 = do_valueize (valueize, _q54);
24726 : 0 : if (tree_swap_operands_p (_q50, _q51))
24727 : 0 : std::swap (_q50, _q51);
24728 : 0 : {
24729 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52, _q53, _q54 };
24730 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_LEN_FMS))
24731 : 0 : return true;
24732 : : }
24733 : : }
24734 : : break;
24735 : 0 : case CFN_FNMA:
24736 : 0 : if (gimple_call_num_args (_c2) == 5)
24737 : : {
24738 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
24739 : 0 : _q50 = do_valueize (valueize, _q50);
24740 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
24741 : 0 : _q51 = do_valueize (valueize, _q51);
24742 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
24743 : 0 : _q52 = do_valueize (valueize, _q52);
24744 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
24745 : 0 : _q53 = do_valueize (valueize, _q53);
24746 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
24747 : 0 : _q54 = do_valueize (valueize, _q54);
24748 : 0 : if (tree_swap_operands_p (_q50, _q51))
24749 : 0 : std::swap (_q50, _q51);
24750 : 0 : {
24751 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52, _q53, _q54 };
24752 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_LEN_FNMA))
24753 : 0 : return true;
24754 : : }
24755 : : }
24756 : : break;
24757 : 0 : case CFN_FNMS:
24758 : 0 : if (gimple_call_num_args (_c2) == 5)
24759 : : {
24760 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
24761 : 0 : _q50 = do_valueize (valueize, _q50);
24762 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
24763 : 0 : _q51 = do_valueize (valueize, _q51);
24764 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
24765 : 0 : _q52 = do_valueize (valueize, _q52);
24766 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
24767 : 0 : _q53 = do_valueize (valueize, _q53);
24768 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
24769 : 0 : _q54 = do_valueize (valueize, _q54);
24770 : 0 : if (tree_swap_operands_p (_q50, _q51))
24771 : 0 : std::swap (_q50, _q51);
24772 : 0 : {
24773 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52, _q53, _q54 };
24774 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_LEN_FNMS))
24775 : 0 : return true;
24776 : : }
24777 : : }
24778 : : break;
24779 : : default:;
24780 : : }
24781 : : }
24782 : : break;
24783 : : default:;
24784 : : }
24785 : : }
24786 : : break;
24787 : : }
24788 : : default:;
24789 : : }
24790 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
24791 : 0 : switch (gimple_call_combined_fn (_c1))
24792 : : {
24793 : 0 : case CFN_FMA:
24794 : 0 : if (gimple_call_num_args (_c1) == 5)
24795 : : {
24796 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
24797 : 0 : _q40 = do_valueize (valueize, _q40);
24798 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
24799 : 0 : _q41 = do_valueize (valueize, _q41);
24800 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
24801 : 0 : _q42 = do_valueize (valueize, _q42);
24802 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
24803 : 0 : _q43 = do_valueize (valueize, _q43);
24804 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
24805 : 0 : _q44 = do_valueize (valueize, _q44);
24806 : 0 : if (tree_swap_operands_p (_q40, _q41))
24807 : 0 : std::swap (_q40, _q41);
24808 : 0 : {
24809 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42, _q43, _q44 };
24810 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_LEN_FMA))
24811 : 0 : return true;
24812 : : }
24813 : : }
24814 : : break;
24815 : 0 : case CFN_FMS:
24816 : 0 : if (gimple_call_num_args (_c1) == 5)
24817 : : {
24818 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
24819 : 0 : _q40 = do_valueize (valueize, _q40);
24820 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
24821 : 0 : _q41 = do_valueize (valueize, _q41);
24822 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
24823 : 0 : _q42 = do_valueize (valueize, _q42);
24824 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
24825 : 0 : _q43 = do_valueize (valueize, _q43);
24826 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
24827 : 0 : _q44 = do_valueize (valueize, _q44);
24828 : 0 : if (tree_swap_operands_p (_q40, _q41))
24829 : 0 : std::swap (_q40, _q41);
24830 : 0 : {
24831 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42, _q43, _q44 };
24832 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_LEN_FMS))
24833 : 0 : return true;
24834 : : }
24835 : : }
24836 : : break;
24837 : 0 : case CFN_FNMA:
24838 : 0 : if (gimple_call_num_args (_c1) == 5)
24839 : : {
24840 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
24841 : 0 : _q40 = do_valueize (valueize, _q40);
24842 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
24843 : 0 : _q41 = do_valueize (valueize, _q41);
24844 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
24845 : 0 : _q42 = do_valueize (valueize, _q42);
24846 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
24847 : 0 : _q43 = do_valueize (valueize, _q43);
24848 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
24849 : 0 : _q44 = do_valueize (valueize, _q44);
24850 : 0 : if (tree_swap_operands_p (_q40, _q41))
24851 : 0 : std::swap (_q40, _q41);
24852 : 0 : {
24853 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42, _q43, _q44 };
24854 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_LEN_FNMA))
24855 : 0 : return true;
24856 : : }
24857 : : }
24858 : : break;
24859 : 0 : case CFN_FNMS:
24860 : 0 : if (gimple_call_num_args (_c1) == 5)
24861 : : {
24862 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
24863 : 0 : _q40 = do_valueize (valueize, _q40);
24864 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
24865 : 0 : _q41 = do_valueize (valueize, _q41);
24866 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
24867 : 0 : _q42 = do_valueize (valueize, _q42);
24868 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
24869 : 0 : _q43 = do_valueize (valueize, _q43);
24870 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
24871 : 0 : _q44 = do_valueize (valueize, _q44);
24872 : 0 : if (tree_swap_operands_p (_q40, _q41))
24873 : 0 : std::swap (_q40, _q41);
24874 : 0 : {
24875 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42, _q43, _q44 };
24876 : 0 : if (gimple_simplify_714 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_LEN_FNMS))
24877 : 0 : return true;
24878 : : }
24879 : : }
24880 : : break;
24881 : : default:;
24882 : : }
24883 : : }
24884 : : break;
24885 : : default:;
24886 : : }
24887 : : return false;
24888 : : }
24889 : :
24890 : : bool
24891 : 6907 : gimple_simplify_CFN_COND_ADD (gimple_match_op *res_op, gimple_seq *seq,
24892 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24893 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2, tree _p3)
24894 : : {
24895 : 6907 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
24896 : 6907 : switch (TREE_CODE (_p2))
24897 : : {
24898 : 1259 : case SSA_NAME:
24899 : 1259 : if (gimple *_d1 = get_def (valueize, _p2))
24900 : : {
24901 : 716 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24902 : 797 : switch (gimple_assign_rhs_code (_a1))
24903 : : {
24904 : 0 : case VEC_COND_EXPR:
24905 : 0 : {
24906 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
24907 : 0 : _q40 = do_valueize (valueize, _q40);
24908 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
24909 : 0 : _q41 = do_valueize (valueize, _q41);
24910 : 0 : tree _q42 = gimple_assign_rhs3 (_a1);
24911 : 0 : _q42 = do_valueize (valueize, _q42);
24912 : 0 : if (zerop (_q42))
24913 : : {
24914 : 0 : if ((_p3 == _p1 && ! TREE_SIDE_EFFECTS (_p3)) || (operand_equal_p (_p3, _p1, 0) && types_match (_p3, _p1)))
24915 : : {
24916 : 0 : {
24917 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42 };
24918 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
24919 : 0 : || (FLOAT_TYPE_P (type)
24920 : 0 : && fold_real_zero_addition_p (type, NULL_TREE, captures[4], 0))
24921 : : )
24922 : : {
24923 : 0 : gimple_seq *lseq = seq;
24924 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3088;
24925 : 0 : {
24926 : 0 : res_op->set_op (CFN_COND_ADD, type, 4);
24927 : 0 : {
24928 : 0 : tree _o1[2], _r1;
24929 : 0 : _o1[0] = captures[0];
24930 : 0 : _o1[1] = captures[2];
24931 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
24932 : 0 : tem_op.resimplify (lseq, valueize);
24933 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24934 : 0 : if (!_r1) goto next_after_fail3088;
24935 : 0 : res_op->ops[0] = _r1;
24936 : : }
24937 : 0 : res_op->ops[1] = captures[1];
24938 : 0 : res_op->ops[2] = captures[3];
24939 : 0 : res_op->ops[3] = captures[1];
24940 : 0 : res_op->resimplify (lseq, valueize);
24941 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1310, __FILE__, __LINE__, true);
24942 : 0 : return true;
24943 : : }
24944 : 0 : next_after_fail3088:;
24945 : : }
24946 : : }
24947 : : }
24948 : : }
24949 : : break;
24950 : : }
24951 : : default:;
24952 : : }
24953 : : }
24954 : : break;
24955 : : default:;
24956 : : }
24957 : : return false;
24958 : : }
24959 : :
24960 : : bool
24961 : 249740 : gimple_simplify (gimple_match_op *res_op, gimple_seq *seq,
24962 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24963 : : code_helper code, const tree type, tree _p0, tree _p1, tree _p2, tree _p3)
24964 : : {
24965 : 249740 : switch (code.get_rep())
24966 : : {
24967 : 903 : case -CFN_COND_MUL:
24968 : 903 : return gimple_simplify_CFN_COND_MUL (res_op, seq, valueize, code, type, _p0, _p1, _p2, _p3);
24969 : 6907 : case -CFN_COND_ADD:
24970 : 6907 : return gimple_simplify_CFN_COND_ADD (res_op, seq, valueize, code, type, _p0, _p1, _p2, _p3);
24971 : : default:;
24972 : : }
24973 : : return false;
24974 : : }
24975 : :
24976 : : bool
24977 : 0 : gimple_simplify_CFN_VCOND_MASK_LEN (gimple_match_op *res_op, gimple_seq *seq,
24978 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
24979 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2, tree _p3, tree _p4)
24980 : : {
24981 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
24982 : 0 : switch (TREE_CODE (_p1))
24983 : : {
24984 : 0 : case SSA_NAME:
24985 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
24986 : : {
24987 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24988 : 0 : switch (gimple_assign_rhs_code (_a1))
24989 : : {
24990 : 0 : case VIEW_CONVERT_EXPR:
24991 : 0 : {
24992 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
24993 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
24994 : 0 : || is_gimple_min_invariant (_q30)))
24995 : : {
24996 : 0 : _q30 = do_valueize (valueize, _q30);
24997 : 0 : switch (TREE_CODE (_q30))
24998 : : {
24999 : 0 : case SSA_NAME:
25000 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
25001 : : {
25002 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25003 : 0 : switch (gimple_assign_rhs_code (_a2))
25004 : : {
25005 : 0 : case NEGATE_EXPR:
25006 : 0 : {
25007 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25008 : 0 : _q40 = do_valueize (valueize, _q40);
25009 : 0 : {
25010 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _p2, _p3, _p4 };
25011 : 0 : {
25012 : 0 : tree op_type = TREE_TYPE (captures[1]);
25013 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NEG), op_type)
25014 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25015 : : )
25016 : : {
25017 : 0 : gimple_seq *lseq = seq;
25018 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3089;
25019 : 0 : {
25020 : 0 : res_op->set_op (CFN_COND_LEN_NEG, type, 5);
25021 : 0 : res_op->ops[0] = captures[0];
25022 : 0 : {
25023 : 0 : tree _o1[1], _r1;
25024 : 0 : _o1[0] = captures[2];
25025 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25026 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25027 : : {
25028 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25029 : 0 : tem_op.resimplify (lseq, valueize);
25030 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25031 : 0 : if (!_r1) goto next_after_fail3089;
25032 : : }
25033 : : else
25034 : : _r1 = _o1[0];
25035 : 0 : res_op->ops[1] = _r1;
25036 : : }
25037 : 0 : res_op->ops[2] = captures[3];
25038 : 0 : res_op->ops[3] = captures[4];
25039 : 0 : res_op->ops[4] = captures[5];
25040 : 0 : res_op->resimplify (lseq, valueize);
25041 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1311, __FILE__, __LINE__, true);
25042 : 0 : return true;
25043 : : }
25044 : 0 : next_after_fail3089:;
25045 : : }
25046 : : }
25047 : : }
25048 : 0 : break;
25049 : : }
25050 : 0 : case BIT_NOT_EXPR:
25051 : 0 : {
25052 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25053 : 0 : _q40 = do_valueize (valueize, _q40);
25054 : 0 : {
25055 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _p2, _p3, _p4 };
25056 : 0 : {
25057 : 0 : tree op_type = TREE_TYPE (captures[1]);
25058 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NOT), op_type)
25059 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25060 : : )
25061 : : {
25062 : 0 : gimple_seq *lseq = seq;
25063 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3090;
25064 : 0 : {
25065 : 0 : res_op->set_op (CFN_COND_LEN_NOT, type, 5);
25066 : 0 : res_op->ops[0] = captures[0];
25067 : 0 : {
25068 : 0 : tree _o1[1], _r1;
25069 : 0 : _o1[0] = captures[2];
25070 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25071 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25072 : : {
25073 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25074 : 0 : tem_op.resimplify (lseq, valueize);
25075 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25076 : 0 : if (!_r1) goto next_after_fail3090;
25077 : : }
25078 : : else
25079 : : _r1 = _o1[0];
25080 : 0 : res_op->ops[1] = _r1;
25081 : : }
25082 : 0 : res_op->ops[2] = captures[3];
25083 : 0 : res_op->ops[3] = captures[4];
25084 : 0 : res_op->ops[4] = captures[5];
25085 : 0 : res_op->resimplify (lseq, valueize);
25086 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1311, __FILE__, __LINE__, true);
25087 : 0 : return true;
25088 : : }
25089 : 0 : next_after_fail3090:;
25090 : : }
25091 : : }
25092 : : }
25093 : 0 : break;
25094 : : }
25095 : : default:;
25096 : : }
25097 : : }
25098 : : break;
25099 : : default:;
25100 : : }
25101 : : }
25102 : : break;
25103 : : }
25104 : 0 : case NEGATE_EXPR:
25105 : 0 : {
25106 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
25107 : 0 : _q30 = do_valueize (valueize, _q30);
25108 : 0 : {
25109 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _p2, _p3, _p4 };
25110 : 0 : {
25111 : 0 : tree op_type = TREE_TYPE (captures[1]);
25112 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NEG), op_type)
25113 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25114 : : )
25115 : : {
25116 : 0 : gimple_seq *lseq = seq;
25117 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3091;
25118 : 0 : {
25119 : 0 : res_op->set_op (CFN_COND_LEN_NEG, type, 5);
25120 : 0 : res_op->ops[0] = captures[0];
25121 : 0 : {
25122 : 0 : tree _o1[1], _r1;
25123 : 0 : _o1[0] = captures[2];
25124 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25125 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25126 : : {
25127 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25128 : 0 : tem_op.resimplify (lseq, valueize);
25129 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25130 : 0 : if (!_r1) goto next_after_fail3091;
25131 : : }
25132 : : else
25133 : : _r1 = _o1[0];
25134 : 0 : res_op->ops[1] = _r1;
25135 : : }
25136 : 0 : res_op->ops[2] = captures[3];
25137 : 0 : res_op->ops[3] = captures[4];
25138 : 0 : res_op->ops[4] = captures[5];
25139 : 0 : res_op->resimplify (lseq, valueize);
25140 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1311, __FILE__, __LINE__, true);
25141 : 0 : return true;
25142 : : }
25143 : 0 : next_after_fail3091:;
25144 : : }
25145 : : }
25146 : : }
25147 : 0 : break;
25148 : : }
25149 : 0 : case BIT_NOT_EXPR:
25150 : 0 : {
25151 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
25152 : 0 : _q30 = do_valueize (valueize, _q30);
25153 : 0 : {
25154 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _p2, _p3, _p4 };
25155 : 0 : {
25156 : 0 : tree op_type = TREE_TYPE (captures[1]);
25157 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NOT), op_type)
25158 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25159 : : )
25160 : : {
25161 : 0 : gimple_seq *lseq = seq;
25162 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3092;
25163 : 0 : {
25164 : 0 : res_op->set_op (CFN_COND_LEN_NOT, type, 5);
25165 : 0 : res_op->ops[0] = captures[0];
25166 : 0 : {
25167 : 0 : tree _o1[1], _r1;
25168 : 0 : _o1[0] = captures[2];
25169 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25170 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25171 : : {
25172 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25173 : 0 : tem_op.resimplify (lseq, valueize);
25174 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25175 : 0 : if (!_r1) goto next_after_fail3092;
25176 : : }
25177 : : else
25178 : : _r1 = _o1[0];
25179 : 0 : res_op->ops[1] = _r1;
25180 : : }
25181 : 0 : res_op->ops[2] = captures[3];
25182 : 0 : res_op->ops[3] = captures[4];
25183 : 0 : res_op->ops[4] = captures[5];
25184 : 0 : res_op->resimplify (lseq, valueize);
25185 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1311, __FILE__, __LINE__, true);
25186 : 0 : return true;
25187 : : }
25188 : 0 : next_after_fail3092:;
25189 : : }
25190 : : }
25191 : : }
25192 : 0 : break;
25193 : : }
25194 : : default:;
25195 : : }
25196 : : }
25197 : : break;
25198 : 0 : default:;
25199 : : }
25200 : 0 : switch (TREE_CODE (_p2))
25201 : : {
25202 : 0 : case SSA_NAME:
25203 : 0 : if (gimple *_d1 = get_def (valueize, _p2))
25204 : : {
25205 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25206 : 0 : switch (gimple_assign_rhs_code (_a1))
25207 : : {
25208 : 0 : case VIEW_CONVERT_EXPR:
25209 : 0 : {
25210 : 0 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
25211 : 0 : if ((TREE_CODE (_q40) == SSA_NAME
25212 : 0 : || is_gimple_min_invariant (_q40)))
25213 : : {
25214 : 0 : _q40 = do_valueize (valueize, _q40);
25215 : 0 : switch (TREE_CODE (_q40))
25216 : : {
25217 : 0 : case SSA_NAME:
25218 : 0 : if (gimple *_d2 = get_def (valueize, _q40))
25219 : : {
25220 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25221 : 0 : switch (gimple_assign_rhs_code (_a2))
25222 : : {
25223 : 0 : case NEGATE_EXPR:
25224 : 0 : {
25225 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
25226 : 0 : _q50 = do_valueize (valueize, _q50);
25227 : 0 : {
25228 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _p3, _p4 };
25229 : 0 : {
25230 : 0 : tree op_type = TREE_TYPE (captures[2]);
25231 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NEG), op_type)
25232 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25233 : : )
25234 : : {
25235 : 0 : gimple_seq *lseq = seq;
25236 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3093;
25237 : 0 : {
25238 : 0 : res_op->set_op (CFN_COND_LEN_NEG, type, 5);
25239 : 0 : {
25240 : 0 : tree _o1[1], _r1;
25241 : 0 : _o1[0] = captures[0];
25242 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
25243 : 0 : tem_op.resimplify (lseq, valueize);
25244 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25245 : 0 : if (!_r1) goto next_after_fail3093;
25246 : 0 : res_op->ops[0] = _r1;
25247 : : }
25248 : 0 : {
25249 : 0 : tree _o1[1], _r1;
25250 : 0 : _o1[0] = captures[3];
25251 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25252 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25253 : : {
25254 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25255 : 0 : tem_op.resimplify (lseq, valueize);
25256 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25257 : 0 : if (!_r1) goto next_after_fail3093;
25258 : : }
25259 : : else
25260 : : _r1 = _o1[0];
25261 : 0 : res_op->ops[1] = _r1;
25262 : : }
25263 : 0 : res_op->ops[2] = captures[1];
25264 : 0 : res_op->ops[3] = captures[4];
25265 : 0 : res_op->ops[4] = captures[5];
25266 : 0 : res_op->resimplify (lseq, valueize);
25267 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1312, __FILE__, __LINE__, true);
25268 : 0 : return true;
25269 : : }
25270 : 0 : next_after_fail3093:;
25271 : : }
25272 : : }
25273 : : }
25274 : 0 : break;
25275 : : }
25276 : 0 : case BIT_NOT_EXPR:
25277 : 0 : {
25278 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
25279 : 0 : _q50 = do_valueize (valueize, _q50);
25280 : 0 : {
25281 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _p3, _p4 };
25282 : 0 : {
25283 : 0 : tree op_type = TREE_TYPE (captures[2]);
25284 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NOT), op_type)
25285 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25286 : : )
25287 : : {
25288 : 0 : gimple_seq *lseq = seq;
25289 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3094;
25290 : 0 : {
25291 : 0 : res_op->set_op (CFN_COND_LEN_NOT, type, 5);
25292 : 0 : {
25293 : 0 : tree _o1[1], _r1;
25294 : 0 : _o1[0] = captures[0];
25295 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
25296 : 0 : tem_op.resimplify (lseq, valueize);
25297 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25298 : 0 : if (!_r1) goto next_after_fail3094;
25299 : 0 : res_op->ops[0] = _r1;
25300 : : }
25301 : 0 : {
25302 : 0 : tree _o1[1], _r1;
25303 : 0 : _o1[0] = captures[3];
25304 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25305 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25306 : : {
25307 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25308 : 0 : tem_op.resimplify (lseq, valueize);
25309 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25310 : 0 : if (!_r1) goto next_after_fail3094;
25311 : : }
25312 : : else
25313 : : _r1 = _o1[0];
25314 : 0 : res_op->ops[1] = _r1;
25315 : : }
25316 : 0 : res_op->ops[2] = captures[1];
25317 : 0 : res_op->ops[3] = captures[4];
25318 : 0 : res_op->ops[4] = captures[5];
25319 : 0 : res_op->resimplify (lseq, valueize);
25320 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1312, __FILE__, __LINE__, true);
25321 : 0 : return true;
25322 : : }
25323 : 0 : next_after_fail3094:;
25324 : : }
25325 : : }
25326 : : }
25327 : 0 : break;
25328 : : }
25329 : : default:;
25330 : : }
25331 : : }
25332 : : break;
25333 : : default:;
25334 : : }
25335 : : }
25336 : : break;
25337 : : }
25338 : 0 : case NEGATE_EXPR:
25339 : 0 : {
25340 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
25341 : 0 : _q40 = do_valueize (valueize, _q40);
25342 : 0 : {
25343 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _p3, _p4 };
25344 : 0 : {
25345 : 0 : tree op_type = TREE_TYPE (captures[2]);
25346 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NEG), op_type)
25347 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25348 : : )
25349 : : {
25350 : 0 : gimple_seq *lseq = seq;
25351 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3095;
25352 : 0 : {
25353 : 0 : res_op->set_op (CFN_COND_LEN_NEG, type, 5);
25354 : 0 : {
25355 : 0 : tree _o1[1], _r1;
25356 : 0 : _o1[0] = captures[0];
25357 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
25358 : 0 : tem_op.resimplify (lseq, valueize);
25359 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25360 : 0 : if (!_r1) goto next_after_fail3095;
25361 : 0 : res_op->ops[0] = _r1;
25362 : : }
25363 : 0 : {
25364 : 0 : tree _o1[1], _r1;
25365 : 0 : _o1[0] = captures[3];
25366 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25367 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25368 : : {
25369 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25370 : 0 : tem_op.resimplify (lseq, valueize);
25371 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25372 : 0 : if (!_r1) goto next_after_fail3095;
25373 : : }
25374 : : else
25375 : : _r1 = _o1[0];
25376 : 0 : res_op->ops[1] = _r1;
25377 : : }
25378 : 0 : res_op->ops[2] = captures[1];
25379 : 0 : res_op->ops[3] = captures[4];
25380 : 0 : res_op->ops[4] = captures[5];
25381 : 0 : res_op->resimplify (lseq, valueize);
25382 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1312, __FILE__, __LINE__, true);
25383 : 0 : return true;
25384 : : }
25385 : 0 : next_after_fail3095:;
25386 : : }
25387 : : }
25388 : : }
25389 : 0 : break;
25390 : : }
25391 : 0 : case BIT_NOT_EXPR:
25392 : 0 : {
25393 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
25394 : 0 : _q40 = do_valueize (valueize, _q40);
25395 : 0 : {
25396 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _p3, _p4 };
25397 : 0 : {
25398 : 0 : tree op_type = TREE_TYPE (captures[2]);
25399 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_NOT), op_type)
25400 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25401 : : )
25402 : : {
25403 : 0 : gimple_seq *lseq = seq;
25404 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3096;
25405 : 0 : {
25406 : 0 : res_op->set_op (CFN_COND_LEN_NOT, type, 5);
25407 : 0 : {
25408 : 0 : tree _o1[1], _r1;
25409 : 0 : _o1[0] = captures[0];
25410 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
25411 : 0 : tem_op.resimplify (lseq, valueize);
25412 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25413 : 0 : if (!_r1) goto next_after_fail3096;
25414 : 0 : res_op->ops[0] = _r1;
25415 : : }
25416 : 0 : {
25417 : 0 : tree _o1[1], _r1;
25418 : 0 : _o1[0] = captures[3];
25419 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
25420 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
25421 : : {
25422 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
25423 : 0 : tem_op.resimplify (lseq, valueize);
25424 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
25425 : 0 : if (!_r1) goto next_after_fail3096;
25426 : : }
25427 : : else
25428 : : _r1 = _o1[0];
25429 : 0 : res_op->ops[1] = _r1;
25430 : : }
25431 : 0 : res_op->ops[2] = captures[1];
25432 : 0 : res_op->ops[3] = captures[4];
25433 : 0 : res_op->ops[4] = captures[5];
25434 : 0 : res_op->resimplify (lseq, valueize);
25435 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1312, __FILE__, __LINE__, true);
25436 : 0 : return true;
25437 : : }
25438 : 0 : next_after_fail3096:;
25439 : : }
25440 : : }
25441 : : }
25442 : 0 : break;
25443 : : }
25444 : : default:;
25445 : : }
25446 : : }
25447 : : break;
25448 : 0 : default:;
25449 : : }
25450 : 0 : switch (TREE_CODE (_p1))
25451 : : {
25452 : 0 : case SSA_NAME:
25453 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
25454 : : {
25455 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25456 : 0 : switch (gimple_assign_rhs_code (_a1))
25457 : : {
25458 : 0 : case VIEW_CONVERT_EXPR:
25459 : 0 : {
25460 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
25461 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
25462 : 0 : || is_gimple_min_invariant (_q30)))
25463 : : {
25464 : 0 : _q30 = do_valueize (valueize, _q30);
25465 : 0 : switch (TREE_CODE (_q30))
25466 : : {
25467 : 0 : case SSA_NAME:
25468 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
25469 : : {
25470 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25471 : 0 : switch (gimple_assign_rhs_code (_a2))
25472 : : {
25473 : 0 : case PLUS_EXPR:
25474 : 0 : {
25475 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25476 : 0 : _q40 = do_valueize (valueize, _q40);
25477 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25478 : 0 : _q41 = do_valueize (valueize, _q41);
25479 : 0 : if (tree_swap_operands_p (_q40, _q41))
25480 : 0 : std::swap (_q40, _q41);
25481 : 0 : {
25482 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25483 : 0 : {
25484 : 0 : tree op_type = TREE_TYPE (captures[1]);
25485 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_ADD), op_type)
25486 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25487 : 0 : && single_use (captures[1])
25488 : : )
25489 : : {
25490 : 0 : gimple_seq *lseq = seq;
25491 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3097;
25492 : 0 : {
25493 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25494 : 0 : {
25495 : 0 : tree _o1[6], _r1;
25496 : 0 : _o1[0] = captures[0];
25497 : 0 : _o1[1] = captures[2];
25498 : 0 : _o1[2] = captures[3];
25499 : 0 : {
25500 : 0 : tree _o2[1], _r2;
25501 : 0 : _o2[0] = captures[4];
25502 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25503 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25504 : : {
25505 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25506 : 0 : tem_op.resimplify (lseq, valueize);
25507 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25508 : 0 : if (!_r2) goto next_after_fail3097;
25509 : : }
25510 : : else
25511 : : _r2 = _o2[0];
25512 : 0 : _o1[3] = _r2;
25513 : : }
25514 : 0 : _o1[4] = captures[5];
25515 : 0 : _o1[5] = captures[6];
25516 : 0 : (*res_op).set_op (CFN_COND_LEN_ADD, TREE_TYPE (_o1[1]), 6);
25517 : 0 : (*res_op).ops[0] = _o1[0];
25518 : 0 : (*res_op).ops[1] = _o1[1];
25519 : 0 : (*res_op).ops[2] = _o1[2];
25520 : 0 : (*res_op).ops[3] = _o1[3];
25521 : 0 : (*res_op).ops[4] = _o1[4];
25522 : 0 : (*res_op).ops[5] = _o1[5];
25523 : 0 : (*res_op).resimplify (lseq, valueize);
25524 : : }
25525 : 0 : if (type != res_op->type
25526 : 0 : && !useless_type_conversion_p (type, res_op->type))
25527 : : {
25528 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3097;
25529 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25530 : 0 : res_op->resimplify (lseq, valueize);
25531 : : }
25532 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
25533 : 0 : return true;
25534 : : }
25535 : 0 : next_after_fail3097:;
25536 : : }
25537 : : }
25538 : : }
25539 : 0 : break;
25540 : : }
25541 : 0 : case MINUS_EXPR:
25542 : 0 : {
25543 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25544 : 0 : _q40 = do_valueize (valueize, _q40);
25545 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25546 : 0 : _q41 = do_valueize (valueize, _q41);
25547 : 0 : {
25548 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25549 : 0 : {
25550 : 0 : tree op_type = TREE_TYPE (captures[1]);
25551 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SUB), op_type)
25552 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25553 : 0 : && single_use (captures[1])
25554 : : )
25555 : : {
25556 : 0 : gimple_seq *lseq = seq;
25557 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3098;
25558 : 0 : {
25559 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25560 : 0 : {
25561 : 0 : tree _o1[6], _r1;
25562 : 0 : _o1[0] = captures[0];
25563 : 0 : _o1[1] = captures[2];
25564 : 0 : _o1[2] = captures[3];
25565 : 0 : {
25566 : 0 : tree _o2[1], _r2;
25567 : 0 : _o2[0] = captures[4];
25568 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25569 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25570 : : {
25571 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25572 : 0 : tem_op.resimplify (lseq, valueize);
25573 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25574 : 0 : if (!_r2) goto next_after_fail3098;
25575 : : }
25576 : : else
25577 : : _r2 = _o2[0];
25578 : 0 : _o1[3] = _r2;
25579 : : }
25580 : 0 : _o1[4] = captures[5];
25581 : 0 : _o1[5] = captures[6];
25582 : 0 : (*res_op).set_op (CFN_COND_LEN_SUB, TREE_TYPE (_o1[1]), 6);
25583 : 0 : (*res_op).ops[0] = _o1[0];
25584 : 0 : (*res_op).ops[1] = _o1[1];
25585 : 0 : (*res_op).ops[2] = _o1[2];
25586 : 0 : (*res_op).ops[3] = _o1[3];
25587 : 0 : (*res_op).ops[4] = _o1[4];
25588 : 0 : (*res_op).ops[5] = _o1[5];
25589 : 0 : (*res_op).resimplify (lseq, valueize);
25590 : : }
25591 : 0 : if (type != res_op->type
25592 : 0 : && !useless_type_conversion_p (type, res_op->type))
25593 : : {
25594 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3098;
25595 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25596 : 0 : res_op->resimplify (lseq, valueize);
25597 : : }
25598 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
25599 : 0 : return true;
25600 : : }
25601 : 0 : next_after_fail3098:;
25602 : : }
25603 : : }
25604 : : }
25605 : 0 : break;
25606 : : }
25607 : 0 : case MULT_EXPR:
25608 : 0 : {
25609 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25610 : 0 : _q40 = do_valueize (valueize, _q40);
25611 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25612 : 0 : _q41 = do_valueize (valueize, _q41);
25613 : 0 : if (tree_swap_operands_p (_q40, _q41))
25614 : 0 : std::swap (_q40, _q41);
25615 : 0 : {
25616 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25617 : 0 : {
25618 : 0 : tree op_type = TREE_TYPE (captures[1]);
25619 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MUL), op_type)
25620 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25621 : 0 : && single_use (captures[1])
25622 : : )
25623 : : {
25624 : 0 : gimple_seq *lseq = seq;
25625 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3099;
25626 : 0 : {
25627 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25628 : 0 : {
25629 : 0 : tree _o1[6], _r1;
25630 : 0 : _o1[0] = captures[0];
25631 : 0 : _o1[1] = captures[2];
25632 : 0 : _o1[2] = captures[3];
25633 : 0 : {
25634 : 0 : tree _o2[1], _r2;
25635 : 0 : _o2[0] = captures[4];
25636 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25637 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25638 : : {
25639 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25640 : 0 : tem_op.resimplify (lseq, valueize);
25641 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25642 : 0 : if (!_r2) goto next_after_fail3099;
25643 : : }
25644 : : else
25645 : : _r2 = _o2[0];
25646 : 0 : _o1[3] = _r2;
25647 : : }
25648 : 0 : _o1[4] = captures[5];
25649 : 0 : _o1[5] = captures[6];
25650 : 0 : (*res_op).set_op (CFN_COND_LEN_MUL, TREE_TYPE (_o1[1]), 6);
25651 : 0 : (*res_op).ops[0] = _o1[0];
25652 : 0 : (*res_op).ops[1] = _o1[1];
25653 : 0 : (*res_op).ops[2] = _o1[2];
25654 : 0 : (*res_op).ops[3] = _o1[3];
25655 : 0 : (*res_op).ops[4] = _o1[4];
25656 : 0 : (*res_op).ops[5] = _o1[5];
25657 : 0 : (*res_op).resimplify (lseq, valueize);
25658 : : }
25659 : 0 : if (type != res_op->type
25660 : 0 : && !useless_type_conversion_p (type, res_op->type))
25661 : : {
25662 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3099;
25663 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25664 : 0 : res_op->resimplify (lseq, valueize);
25665 : : }
25666 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
25667 : 0 : return true;
25668 : : }
25669 : 0 : next_after_fail3099:;
25670 : : }
25671 : : }
25672 : : }
25673 : 0 : break;
25674 : : }
25675 : 0 : case TRUNC_DIV_EXPR:
25676 : 0 : {
25677 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25678 : 0 : _q40 = do_valueize (valueize, _q40);
25679 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25680 : 0 : _q41 = do_valueize (valueize, _q41);
25681 : 0 : {
25682 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25683 : 0 : {
25684 : 0 : tree op_type = TREE_TYPE (captures[1]);
25685 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_DIV), op_type)
25686 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25687 : 0 : && single_use (captures[1])
25688 : : )
25689 : : {
25690 : 0 : gimple_seq *lseq = seq;
25691 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3100;
25692 : 0 : {
25693 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25694 : 0 : {
25695 : 0 : tree _o1[6], _r1;
25696 : 0 : _o1[0] = captures[0];
25697 : 0 : _o1[1] = captures[2];
25698 : 0 : _o1[2] = captures[3];
25699 : 0 : {
25700 : 0 : tree _o2[1], _r2;
25701 : 0 : _o2[0] = captures[4];
25702 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25703 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25704 : : {
25705 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25706 : 0 : tem_op.resimplify (lseq, valueize);
25707 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25708 : 0 : if (!_r2) goto next_after_fail3100;
25709 : : }
25710 : : else
25711 : : _r2 = _o2[0];
25712 : 0 : _o1[3] = _r2;
25713 : : }
25714 : 0 : _o1[4] = captures[5];
25715 : 0 : _o1[5] = captures[6];
25716 : 0 : (*res_op).set_op (CFN_COND_LEN_DIV, TREE_TYPE (_o1[1]), 6);
25717 : 0 : (*res_op).ops[0] = _o1[0];
25718 : 0 : (*res_op).ops[1] = _o1[1];
25719 : 0 : (*res_op).ops[2] = _o1[2];
25720 : 0 : (*res_op).ops[3] = _o1[3];
25721 : 0 : (*res_op).ops[4] = _o1[4];
25722 : 0 : (*res_op).ops[5] = _o1[5];
25723 : 0 : (*res_op).resimplify (lseq, valueize);
25724 : : }
25725 : 0 : if (type != res_op->type
25726 : 0 : && !useless_type_conversion_p (type, res_op->type))
25727 : : {
25728 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3100;
25729 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25730 : 0 : res_op->resimplify (lseq, valueize);
25731 : : }
25732 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
25733 : 0 : return true;
25734 : : }
25735 : 0 : next_after_fail3100:;
25736 : : }
25737 : : }
25738 : : }
25739 : 0 : break;
25740 : : }
25741 : 0 : case TRUNC_MOD_EXPR:
25742 : 0 : {
25743 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25744 : 0 : _q40 = do_valueize (valueize, _q40);
25745 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25746 : 0 : _q41 = do_valueize (valueize, _q41);
25747 : 0 : {
25748 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25749 : 0 : {
25750 : 0 : tree op_type = TREE_TYPE (captures[1]);
25751 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MOD), op_type)
25752 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25753 : 0 : && single_use (captures[1])
25754 : : )
25755 : : {
25756 : 0 : gimple_seq *lseq = seq;
25757 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3101;
25758 : 0 : {
25759 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25760 : 0 : {
25761 : 0 : tree _o1[6], _r1;
25762 : 0 : _o1[0] = captures[0];
25763 : 0 : _o1[1] = captures[2];
25764 : 0 : _o1[2] = captures[3];
25765 : 0 : {
25766 : 0 : tree _o2[1], _r2;
25767 : 0 : _o2[0] = captures[4];
25768 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25769 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25770 : : {
25771 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25772 : 0 : tem_op.resimplify (lseq, valueize);
25773 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25774 : 0 : if (!_r2) goto next_after_fail3101;
25775 : : }
25776 : : else
25777 : : _r2 = _o2[0];
25778 : 0 : _o1[3] = _r2;
25779 : : }
25780 : 0 : _o1[4] = captures[5];
25781 : 0 : _o1[5] = captures[6];
25782 : 0 : (*res_op).set_op (CFN_COND_LEN_MOD, TREE_TYPE (_o1[1]), 6);
25783 : 0 : (*res_op).ops[0] = _o1[0];
25784 : 0 : (*res_op).ops[1] = _o1[1];
25785 : 0 : (*res_op).ops[2] = _o1[2];
25786 : 0 : (*res_op).ops[3] = _o1[3];
25787 : 0 : (*res_op).ops[4] = _o1[4];
25788 : 0 : (*res_op).ops[5] = _o1[5];
25789 : 0 : (*res_op).resimplify (lseq, valueize);
25790 : : }
25791 : 0 : if (type != res_op->type
25792 : 0 : && !useless_type_conversion_p (type, res_op->type))
25793 : : {
25794 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3101;
25795 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25796 : 0 : res_op->resimplify (lseq, valueize);
25797 : : }
25798 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
25799 : 0 : return true;
25800 : : }
25801 : 0 : next_after_fail3101:;
25802 : : }
25803 : : }
25804 : : }
25805 : 0 : break;
25806 : : }
25807 : 0 : case RDIV_EXPR:
25808 : 0 : {
25809 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25810 : 0 : _q40 = do_valueize (valueize, _q40);
25811 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25812 : 0 : _q41 = do_valueize (valueize, _q41);
25813 : 0 : {
25814 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25815 : 0 : {
25816 : 0 : tree op_type = TREE_TYPE (captures[1]);
25817 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_RDIV), op_type)
25818 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25819 : 0 : && single_use (captures[1])
25820 : : )
25821 : : {
25822 : 0 : gimple_seq *lseq = seq;
25823 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3102;
25824 : 0 : {
25825 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25826 : 0 : {
25827 : 0 : tree _o1[6], _r1;
25828 : 0 : _o1[0] = captures[0];
25829 : 0 : _o1[1] = captures[2];
25830 : 0 : _o1[2] = captures[3];
25831 : 0 : {
25832 : 0 : tree _o2[1], _r2;
25833 : 0 : _o2[0] = captures[4];
25834 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25835 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25836 : : {
25837 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25838 : 0 : tem_op.resimplify (lseq, valueize);
25839 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25840 : 0 : if (!_r2) goto next_after_fail3102;
25841 : : }
25842 : : else
25843 : : _r2 = _o2[0];
25844 : 0 : _o1[3] = _r2;
25845 : : }
25846 : 0 : _o1[4] = captures[5];
25847 : 0 : _o1[5] = captures[6];
25848 : 0 : (*res_op).set_op (CFN_COND_LEN_RDIV, TREE_TYPE (_o1[1]), 6);
25849 : 0 : (*res_op).ops[0] = _o1[0];
25850 : 0 : (*res_op).ops[1] = _o1[1];
25851 : 0 : (*res_op).ops[2] = _o1[2];
25852 : 0 : (*res_op).ops[3] = _o1[3];
25853 : 0 : (*res_op).ops[4] = _o1[4];
25854 : 0 : (*res_op).ops[5] = _o1[5];
25855 : 0 : (*res_op).resimplify (lseq, valueize);
25856 : : }
25857 : 0 : if (type != res_op->type
25858 : 0 : && !useless_type_conversion_p (type, res_op->type))
25859 : : {
25860 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3102;
25861 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25862 : 0 : res_op->resimplify (lseq, valueize);
25863 : : }
25864 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
25865 : 0 : return true;
25866 : : }
25867 : 0 : next_after_fail3102:;
25868 : : }
25869 : : }
25870 : : }
25871 : 0 : break;
25872 : : }
25873 : 0 : case MIN_EXPR:
25874 : 0 : {
25875 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25876 : 0 : _q40 = do_valueize (valueize, _q40);
25877 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25878 : 0 : _q41 = do_valueize (valueize, _q41);
25879 : 0 : if (tree_swap_operands_p (_q40, _q41))
25880 : 0 : std::swap (_q40, _q41);
25881 : 0 : {
25882 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25883 : 0 : {
25884 : 0 : tree op_type = TREE_TYPE (captures[1]);
25885 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MIN), op_type)
25886 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25887 : 0 : && single_use (captures[1])
25888 : : )
25889 : : {
25890 : 0 : gimple_seq *lseq = seq;
25891 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3103;
25892 : 0 : {
25893 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25894 : 0 : {
25895 : 0 : tree _o1[6], _r1;
25896 : 0 : _o1[0] = captures[0];
25897 : 0 : _o1[1] = captures[2];
25898 : 0 : _o1[2] = captures[3];
25899 : 0 : {
25900 : 0 : tree _o2[1], _r2;
25901 : 0 : _o2[0] = captures[4];
25902 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25903 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25904 : : {
25905 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25906 : 0 : tem_op.resimplify (lseq, valueize);
25907 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25908 : 0 : if (!_r2) goto next_after_fail3103;
25909 : : }
25910 : : else
25911 : : _r2 = _o2[0];
25912 : 0 : _o1[3] = _r2;
25913 : : }
25914 : 0 : _o1[4] = captures[5];
25915 : 0 : _o1[5] = captures[6];
25916 : 0 : (*res_op).set_op (CFN_COND_LEN_MIN, TREE_TYPE (_o1[1]), 6);
25917 : 0 : (*res_op).ops[0] = _o1[0];
25918 : 0 : (*res_op).ops[1] = _o1[1];
25919 : 0 : (*res_op).ops[2] = _o1[2];
25920 : 0 : (*res_op).ops[3] = _o1[3];
25921 : 0 : (*res_op).ops[4] = _o1[4];
25922 : 0 : (*res_op).ops[5] = _o1[5];
25923 : 0 : (*res_op).resimplify (lseq, valueize);
25924 : : }
25925 : 0 : if (type != res_op->type
25926 : 0 : && !useless_type_conversion_p (type, res_op->type))
25927 : : {
25928 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3103;
25929 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25930 : 0 : res_op->resimplify (lseq, valueize);
25931 : : }
25932 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
25933 : 0 : return true;
25934 : : }
25935 : 0 : next_after_fail3103:;
25936 : : }
25937 : : }
25938 : : }
25939 : 0 : break;
25940 : : }
25941 : 0 : case MAX_EXPR:
25942 : 0 : {
25943 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
25944 : 0 : _q40 = do_valueize (valueize, _q40);
25945 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
25946 : 0 : _q41 = do_valueize (valueize, _q41);
25947 : 0 : if (tree_swap_operands_p (_q40, _q41))
25948 : 0 : std::swap (_q40, _q41);
25949 : 0 : {
25950 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
25951 : 0 : {
25952 : 0 : tree op_type = TREE_TYPE (captures[1]);
25953 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MAX), op_type)
25954 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
25955 : 0 : && single_use (captures[1])
25956 : : )
25957 : : {
25958 : 0 : gimple_seq *lseq = seq;
25959 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3104;
25960 : 0 : {
25961 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25962 : 0 : {
25963 : 0 : tree _o1[6], _r1;
25964 : 0 : _o1[0] = captures[0];
25965 : 0 : _o1[1] = captures[2];
25966 : 0 : _o1[2] = captures[3];
25967 : 0 : {
25968 : 0 : tree _o2[1], _r2;
25969 : 0 : _o2[0] = captures[4];
25970 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
25971 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
25972 : : {
25973 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
25974 : 0 : tem_op.resimplify (lseq, valueize);
25975 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
25976 : 0 : if (!_r2) goto next_after_fail3104;
25977 : : }
25978 : : else
25979 : : _r2 = _o2[0];
25980 : 0 : _o1[3] = _r2;
25981 : : }
25982 : 0 : _o1[4] = captures[5];
25983 : 0 : _o1[5] = captures[6];
25984 : 0 : (*res_op).set_op (CFN_COND_LEN_MAX, TREE_TYPE (_o1[1]), 6);
25985 : 0 : (*res_op).ops[0] = _o1[0];
25986 : 0 : (*res_op).ops[1] = _o1[1];
25987 : 0 : (*res_op).ops[2] = _o1[2];
25988 : 0 : (*res_op).ops[3] = _o1[3];
25989 : 0 : (*res_op).ops[4] = _o1[4];
25990 : 0 : (*res_op).ops[5] = _o1[5];
25991 : 0 : (*res_op).resimplify (lseq, valueize);
25992 : : }
25993 : 0 : if (type != res_op->type
25994 : 0 : && !useless_type_conversion_p (type, res_op->type))
25995 : : {
25996 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3104;
25997 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
25998 : 0 : res_op->resimplify (lseq, valueize);
25999 : : }
26000 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26001 : 0 : return true;
26002 : : }
26003 : 0 : next_after_fail3104:;
26004 : : }
26005 : : }
26006 : : }
26007 : 0 : break;
26008 : : }
26009 : 0 : case BIT_AND_EXPR:
26010 : 0 : {
26011 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
26012 : 0 : _q40 = do_valueize (valueize, _q40);
26013 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
26014 : 0 : _q41 = do_valueize (valueize, _q41);
26015 : 0 : if (tree_swap_operands_p (_q40, _q41))
26016 : 0 : std::swap (_q40, _q41);
26017 : 0 : {
26018 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26019 : 0 : {
26020 : 0 : tree op_type = TREE_TYPE (captures[1]);
26021 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_AND), op_type)
26022 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26023 : 0 : && single_use (captures[1])
26024 : : )
26025 : : {
26026 : 0 : gimple_seq *lseq = seq;
26027 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3105;
26028 : 0 : {
26029 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26030 : 0 : {
26031 : 0 : tree _o1[6], _r1;
26032 : 0 : _o1[0] = captures[0];
26033 : 0 : _o1[1] = captures[2];
26034 : 0 : _o1[2] = captures[3];
26035 : 0 : {
26036 : 0 : tree _o2[1], _r2;
26037 : 0 : _o2[0] = captures[4];
26038 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26039 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26040 : : {
26041 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26042 : 0 : tem_op.resimplify (lseq, valueize);
26043 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26044 : 0 : if (!_r2) goto next_after_fail3105;
26045 : : }
26046 : : else
26047 : : _r2 = _o2[0];
26048 : 0 : _o1[3] = _r2;
26049 : : }
26050 : 0 : _o1[4] = captures[5];
26051 : 0 : _o1[5] = captures[6];
26052 : 0 : (*res_op).set_op (CFN_COND_LEN_AND, TREE_TYPE (_o1[1]), 6);
26053 : 0 : (*res_op).ops[0] = _o1[0];
26054 : 0 : (*res_op).ops[1] = _o1[1];
26055 : 0 : (*res_op).ops[2] = _o1[2];
26056 : 0 : (*res_op).ops[3] = _o1[3];
26057 : 0 : (*res_op).ops[4] = _o1[4];
26058 : 0 : (*res_op).ops[5] = _o1[5];
26059 : 0 : (*res_op).resimplify (lseq, valueize);
26060 : : }
26061 : 0 : if (type != res_op->type
26062 : 0 : && !useless_type_conversion_p (type, res_op->type))
26063 : : {
26064 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3105;
26065 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26066 : 0 : res_op->resimplify (lseq, valueize);
26067 : : }
26068 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26069 : 0 : return true;
26070 : : }
26071 : 0 : next_after_fail3105:;
26072 : : }
26073 : : }
26074 : : }
26075 : 0 : break;
26076 : : }
26077 : 0 : case BIT_IOR_EXPR:
26078 : 0 : {
26079 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
26080 : 0 : _q40 = do_valueize (valueize, _q40);
26081 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
26082 : 0 : _q41 = do_valueize (valueize, _q41);
26083 : 0 : if (tree_swap_operands_p (_q40, _q41))
26084 : 0 : std::swap (_q40, _q41);
26085 : 0 : {
26086 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26087 : 0 : {
26088 : 0 : tree op_type = TREE_TYPE (captures[1]);
26089 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_IOR), op_type)
26090 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26091 : 0 : && single_use (captures[1])
26092 : : )
26093 : : {
26094 : 0 : gimple_seq *lseq = seq;
26095 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3106;
26096 : 0 : {
26097 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26098 : 0 : {
26099 : 0 : tree _o1[6], _r1;
26100 : 0 : _o1[0] = captures[0];
26101 : 0 : _o1[1] = captures[2];
26102 : 0 : _o1[2] = captures[3];
26103 : 0 : {
26104 : 0 : tree _o2[1], _r2;
26105 : 0 : _o2[0] = captures[4];
26106 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26107 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26108 : : {
26109 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26110 : 0 : tem_op.resimplify (lseq, valueize);
26111 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26112 : 0 : if (!_r2) goto next_after_fail3106;
26113 : : }
26114 : : else
26115 : : _r2 = _o2[0];
26116 : 0 : _o1[3] = _r2;
26117 : : }
26118 : 0 : _o1[4] = captures[5];
26119 : 0 : _o1[5] = captures[6];
26120 : 0 : (*res_op).set_op (CFN_COND_LEN_IOR, TREE_TYPE (_o1[1]), 6);
26121 : 0 : (*res_op).ops[0] = _o1[0];
26122 : 0 : (*res_op).ops[1] = _o1[1];
26123 : 0 : (*res_op).ops[2] = _o1[2];
26124 : 0 : (*res_op).ops[3] = _o1[3];
26125 : 0 : (*res_op).ops[4] = _o1[4];
26126 : 0 : (*res_op).ops[5] = _o1[5];
26127 : 0 : (*res_op).resimplify (lseq, valueize);
26128 : : }
26129 : 0 : if (type != res_op->type
26130 : 0 : && !useless_type_conversion_p (type, res_op->type))
26131 : : {
26132 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3106;
26133 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26134 : 0 : res_op->resimplify (lseq, valueize);
26135 : : }
26136 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26137 : 0 : return true;
26138 : : }
26139 : 0 : next_after_fail3106:;
26140 : : }
26141 : : }
26142 : : }
26143 : 0 : break;
26144 : : }
26145 : 0 : case BIT_XOR_EXPR:
26146 : 0 : {
26147 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
26148 : 0 : _q40 = do_valueize (valueize, _q40);
26149 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
26150 : 0 : _q41 = do_valueize (valueize, _q41);
26151 : 0 : if (tree_swap_operands_p (_q40, _q41))
26152 : 0 : std::swap (_q40, _q41);
26153 : 0 : {
26154 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26155 : 0 : {
26156 : 0 : tree op_type = TREE_TYPE (captures[1]);
26157 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_XOR), op_type)
26158 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26159 : 0 : && single_use (captures[1])
26160 : : )
26161 : : {
26162 : 0 : gimple_seq *lseq = seq;
26163 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3107;
26164 : 0 : {
26165 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26166 : 0 : {
26167 : 0 : tree _o1[6], _r1;
26168 : 0 : _o1[0] = captures[0];
26169 : 0 : _o1[1] = captures[2];
26170 : 0 : _o1[2] = captures[3];
26171 : 0 : {
26172 : 0 : tree _o2[1], _r2;
26173 : 0 : _o2[0] = captures[4];
26174 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26175 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26176 : : {
26177 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26178 : 0 : tem_op.resimplify (lseq, valueize);
26179 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26180 : 0 : if (!_r2) goto next_after_fail3107;
26181 : : }
26182 : : else
26183 : : _r2 = _o2[0];
26184 : 0 : _o1[3] = _r2;
26185 : : }
26186 : 0 : _o1[4] = captures[5];
26187 : 0 : _o1[5] = captures[6];
26188 : 0 : (*res_op).set_op (CFN_COND_LEN_XOR, TREE_TYPE (_o1[1]), 6);
26189 : 0 : (*res_op).ops[0] = _o1[0];
26190 : 0 : (*res_op).ops[1] = _o1[1];
26191 : 0 : (*res_op).ops[2] = _o1[2];
26192 : 0 : (*res_op).ops[3] = _o1[3];
26193 : 0 : (*res_op).ops[4] = _o1[4];
26194 : 0 : (*res_op).ops[5] = _o1[5];
26195 : 0 : (*res_op).resimplify (lseq, valueize);
26196 : : }
26197 : 0 : if (type != res_op->type
26198 : 0 : && !useless_type_conversion_p (type, res_op->type))
26199 : : {
26200 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3107;
26201 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26202 : 0 : res_op->resimplify (lseq, valueize);
26203 : : }
26204 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26205 : 0 : return true;
26206 : : }
26207 : 0 : next_after_fail3107:;
26208 : : }
26209 : : }
26210 : : }
26211 : 0 : break;
26212 : : }
26213 : 0 : case LSHIFT_EXPR:
26214 : 0 : {
26215 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
26216 : 0 : _q40 = do_valueize (valueize, _q40);
26217 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
26218 : 0 : _q41 = do_valueize (valueize, _q41);
26219 : 0 : {
26220 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26221 : 0 : {
26222 : 0 : tree op_type = TREE_TYPE (captures[1]);
26223 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHL), op_type)
26224 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26225 : 0 : && single_use (captures[1])
26226 : : )
26227 : : {
26228 : 0 : gimple_seq *lseq = seq;
26229 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3108;
26230 : 0 : {
26231 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26232 : 0 : {
26233 : 0 : tree _o1[6], _r1;
26234 : 0 : _o1[0] = captures[0];
26235 : 0 : _o1[1] = captures[2];
26236 : 0 : _o1[2] = captures[3];
26237 : 0 : {
26238 : 0 : tree _o2[1], _r2;
26239 : 0 : _o2[0] = captures[4];
26240 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26241 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26242 : : {
26243 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26244 : 0 : tem_op.resimplify (lseq, valueize);
26245 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26246 : 0 : if (!_r2) goto next_after_fail3108;
26247 : : }
26248 : : else
26249 : : _r2 = _o2[0];
26250 : 0 : _o1[3] = _r2;
26251 : : }
26252 : 0 : _o1[4] = captures[5];
26253 : 0 : _o1[5] = captures[6];
26254 : 0 : (*res_op).set_op (CFN_COND_LEN_SHL, TREE_TYPE (_o1[1]), 6);
26255 : 0 : (*res_op).ops[0] = _o1[0];
26256 : 0 : (*res_op).ops[1] = _o1[1];
26257 : 0 : (*res_op).ops[2] = _o1[2];
26258 : 0 : (*res_op).ops[3] = _o1[3];
26259 : 0 : (*res_op).ops[4] = _o1[4];
26260 : 0 : (*res_op).ops[5] = _o1[5];
26261 : 0 : (*res_op).resimplify (lseq, valueize);
26262 : : }
26263 : 0 : if (type != res_op->type
26264 : 0 : && !useless_type_conversion_p (type, res_op->type))
26265 : : {
26266 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3108;
26267 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26268 : 0 : res_op->resimplify (lseq, valueize);
26269 : : }
26270 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26271 : 0 : return true;
26272 : : }
26273 : 0 : next_after_fail3108:;
26274 : : }
26275 : : }
26276 : : }
26277 : 0 : break;
26278 : : }
26279 : 0 : case RSHIFT_EXPR:
26280 : 0 : {
26281 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
26282 : 0 : _q40 = do_valueize (valueize, _q40);
26283 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
26284 : 0 : _q41 = do_valueize (valueize, _q41);
26285 : 0 : {
26286 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26287 : 0 : {
26288 : 0 : tree op_type = TREE_TYPE (captures[1]);
26289 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHR), op_type)
26290 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26291 : 0 : && single_use (captures[1])
26292 : : )
26293 : : {
26294 : 0 : gimple_seq *lseq = seq;
26295 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3109;
26296 : 0 : {
26297 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26298 : 0 : {
26299 : 0 : tree _o1[6], _r1;
26300 : 0 : _o1[0] = captures[0];
26301 : 0 : _o1[1] = captures[2];
26302 : 0 : _o1[2] = captures[3];
26303 : 0 : {
26304 : 0 : tree _o2[1], _r2;
26305 : 0 : _o2[0] = captures[4];
26306 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26307 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26308 : : {
26309 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26310 : 0 : tem_op.resimplify (lseq, valueize);
26311 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26312 : 0 : if (!_r2) goto next_after_fail3109;
26313 : : }
26314 : : else
26315 : : _r2 = _o2[0];
26316 : 0 : _o1[3] = _r2;
26317 : : }
26318 : 0 : _o1[4] = captures[5];
26319 : 0 : _o1[5] = captures[6];
26320 : 0 : (*res_op).set_op (CFN_COND_LEN_SHR, TREE_TYPE (_o1[1]), 6);
26321 : 0 : (*res_op).ops[0] = _o1[0];
26322 : 0 : (*res_op).ops[1] = _o1[1];
26323 : 0 : (*res_op).ops[2] = _o1[2];
26324 : 0 : (*res_op).ops[3] = _o1[3];
26325 : 0 : (*res_op).ops[4] = _o1[4];
26326 : 0 : (*res_op).ops[5] = _o1[5];
26327 : 0 : (*res_op).resimplify (lseq, valueize);
26328 : : }
26329 : 0 : if (type != res_op->type
26330 : 0 : && !useless_type_conversion_p (type, res_op->type))
26331 : : {
26332 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3109;
26333 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26334 : 0 : res_op->resimplify (lseq, valueize);
26335 : : }
26336 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26337 : 0 : return true;
26338 : : }
26339 : 0 : next_after_fail3109:;
26340 : : }
26341 : : }
26342 : : }
26343 : 0 : break;
26344 : : }
26345 : : default:;
26346 : : }
26347 : 0 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
26348 : 0 : switch (gimple_call_combined_fn (_c2))
26349 : : {
26350 : 0 : case CFN_FMAX:
26351 : 0 : if (gimple_call_num_args (_c2) == 2)
26352 : : {
26353 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
26354 : 0 : _q40 = do_valueize (valueize, _q40);
26355 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
26356 : 0 : _q41 = do_valueize (valueize, _q41);
26357 : 0 : {
26358 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26359 : 0 : {
26360 : 0 : tree op_type = TREE_TYPE (captures[1]);
26361 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMAX), op_type)
26362 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26363 : 0 : && single_use (captures[1])
26364 : : )
26365 : : {
26366 : 0 : gimple_seq *lseq = seq;
26367 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3110;
26368 : 0 : {
26369 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26370 : 0 : {
26371 : 0 : tree _o1[6], _r1;
26372 : 0 : _o1[0] = captures[0];
26373 : 0 : _o1[1] = captures[2];
26374 : 0 : _o1[2] = captures[3];
26375 : 0 : {
26376 : 0 : tree _o2[1], _r2;
26377 : 0 : _o2[0] = captures[4];
26378 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26379 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26380 : : {
26381 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26382 : 0 : tem_op.resimplify (lseq, valueize);
26383 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26384 : 0 : if (!_r2) goto next_after_fail3110;
26385 : : }
26386 : : else
26387 : : _r2 = _o2[0];
26388 : 0 : _o1[3] = _r2;
26389 : : }
26390 : 0 : _o1[4] = captures[5];
26391 : 0 : _o1[5] = captures[6];
26392 : 0 : (*res_op).set_op (CFN_COND_LEN_FMAX, TREE_TYPE (_o1[1]), 6);
26393 : 0 : (*res_op).ops[0] = _o1[0];
26394 : 0 : (*res_op).ops[1] = _o1[1];
26395 : 0 : (*res_op).ops[2] = _o1[2];
26396 : 0 : (*res_op).ops[3] = _o1[3];
26397 : 0 : (*res_op).ops[4] = _o1[4];
26398 : 0 : (*res_op).ops[5] = _o1[5];
26399 : 0 : (*res_op).resimplify (lseq, valueize);
26400 : : }
26401 : 0 : if (type != res_op->type
26402 : 0 : && !useless_type_conversion_p (type, res_op->type))
26403 : : {
26404 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3110;
26405 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26406 : 0 : res_op->resimplify (lseq, valueize);
26407 : : }
26408 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26409 : 0 : return true;
26410 : : }
26411 : 0 : next_after_fail3110:;
26412 : : }
26413 : : }
26414 : : }
26415 : : }
26416 : : break;
26417 : 0 : case CFN_FMIN:
26418 : 0 : if (gimple_call_num_args (_c2) == 2)
26419 : : {
26420 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
26421 : 0 : _q40 = do_valueize (valueize, _q40);
26422 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
26423 : 0 : _q41 = do_valueize (valueize, _q41);
26424 : 0 : {
26425 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26426 : 0 : {
26427 : 0 : tree op_type = TREE_TYPE (captures[1]);
26428 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMIN), op_type)
26429 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26430 : 0 : && single_use (captures[1])
26431 : : )
26432 : : {
26433 : 0 : gimple_seq *lseq = seq;
26434 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3111;
26435 : 0 : {
26436 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26437 : 0 : {
26438 : 0 : tree _o1[6], _r1;
26439 : 0 : _o1[0] = captures[0];
26440 : 0 : _o1[1] = captures[2];
26441 : 0 : _o1[2] = captures[3];
26442 : 0 : {
26443 : 0 : tree _o2[1], _r2;
26444 : 0 : _o2[0] = captures[4];
26445 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26446 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26447 : : {
26448 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26449 : 0 : tem_op.resimplify (lseq, valueize);
26450 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26451 : 0 : if (!_r2) goto next_after_fail3111;
26452 : : }
26453 : : else
26454 : : _r2 = _o2[0];
26455 : 0 : _o1[3] = _r2;
26456 : : }
26457 : 0 : _o1[4] = captures[5];
26458 : 0 : _o1[5] = captures[6];
26459 : 0 : (*res_op).set_op (CFN_COND_LEN_FMIN, TREE_TYPE (_o1[1]), 6);
26460 : 0 : (*res_op).ops[0] = _o1[0];
26461 : 0 : (*res_op).ops[1] = _o1[1];
26462 : 0 : (*res_op).ops[2] = _o1[2];
26463 : 0 : (*res_op).ops[3] = _o1[3];
26464 : 0 : (*res_op).ops[4] = _o1[4];
26465 : 0 : (*res_op).ops[5] = _o1[5];
26466 : 0 : (*res_op).resimplify (lseq, valueize);
26467 : : }
26468 : 0 : if (type != res_op->type
26469 : 0 : && !useless_type_conversion_p (type, res_op->type))
26470 : : {
26471 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3111;
26472 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26473 : 0 : res_op->resimplify (lseq, valueize);
26474 : : }
26475 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26476 : 0 : return true;
26477 : : }
26478 : 0 : next_after_fail3111:;
26479 : : }
26480 : : }
26481 : : }
26482 : : }
26483 : : break;
26484 : 0 : case CFN_COPYSIGN:
26485 : 0 : if (gimple_call_num_args (_c2) == 2)
26486 : : {
26487 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
26488 : 0 : _q40 = do_valueize (valueize, _q40);
26489 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
26490 : 0 : _q41 = do_valueize (valueize, _q41);
26491 : 0 : {
26492 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2, _p3, _p4 };
26493 : 0 : {
26494 : 0 : tree op_type = TREE_TYPE (captures[1]);
26495 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_COPYSIGN), op_type)
26496 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26497 : 0 : && single_use (captures[1])
26498 : : )
26499 : : {
26500 : 0 : gimple_seq *lseq = seq;
26501 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3112;
26502 : 0 : {
26503 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26504 : 0 : {
26505 : 0 : tree _o1[6], _r1;
26506 : 0 : _o1[0] = captures[0];
26507 : 0 : _o1[1] = captures[2];
26508 : 0 : _o1[2] = captures[3];
26509 : 0 : {
26510 : 0 : tree _o2[1], _r2;
26511 : 0 : _o2[0] = captures[4];
26512 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26513 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26514 : : {
26515 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26516 : 0 : tem_op.resimplify (lseq, valueize);
26517 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26518 : 0 : if (!_r2) goto next_after_fail3112;
26519 : : }
26520 : : else
26521 : : _r2 = _o2[0];
26522 : 0 : _o1[3] = _r2;
26523 : : }
26524 : 0 : _o1[4] = captures[5];
26525 : 0 : _o1[5] = captures[6];
26526 : 0 : (*res_op).set_op (CFN_COND_LEN_COPYSIGN, TREE_TYPE (_o1[1]), 6);
26527 : 0 : (*res_op).ops[0] = _o1[0];
26528 : 0 : (*res_op).ops[1] = _o1[1];
26529 : 0 : (*res_op).ops[2] = _o1[2];
26530 : 0 : (*res_op).ops[3] = _o1[3];
26531 : 0 : (*res_op).ops[4] = _o1[4];
26532 : 0 : (*res_op).ops[5] = _o1[5];
26533 : 0 : (*res_op).resimplify (lseq, valueize);
26534 : : }
26535 : 0 : if (type != res_op->type
26536 : 0 : && !useless_type_conversion_p (type, res_op->type))
26537 : : {
26538 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3112;
26539 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26540 : 0 : res_op->resimplify (lseq, valueize);
26541 : : }
26542 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26543 : 0 : return true;
26544 : : }
26545 : 0 : next_after_fail3112:;
26546 : : }
26547 : : }
26548 : : }
26549 : : }
26550 : : break;
26551 : : default:;
26552 : : }
26553 : : }
26554 : : break;
26555 : : default:;
26556 : : }
26557 : : }
26558 : : break;
26559 : : }
26560 : 0 : case PLUS_EXPR:
26561 : 0 : {
26562 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
26563 : 0 : _q30 = do_valueize (valueize, _q30);
26564 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
26565 : 0 : _q31 = do_valueize (valueize, _q31);
26566 : 0 : if (tree_swap_operands_p (_q30, _q31))
26567 : 0 : std::swap (_q30, _q31);
26568 : 0 : {
26569 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
26570 : 0 : {
26571 : 0 : tree op_type = TREE_TYPE (captures[1]);
26572 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_ADD), op_type)
26573 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26574 : 0 : && single_use (captures[1])
26575 : : )
26576 : : {
26577 : 0 : gimple_seq *lseq = seq;
26578 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3113;
26579 : 0 : {
26580 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26581 : 0 : {
26582 : 0 : tree _o1[6], _r1;
26583 : 0 : _o1[0] = captures[0];
26584 : 0 : _o1[1] = captures[2];
26585 : 0 : _o1[2] = captures[3];
26586 : 0 : {
26587 : 0 : tree _o2[1], _r2;
26588 : 0 : _o2[0] = captures[4];
26589 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26590 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26591 : : {
26592 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26593 : 0 : tem_op.resimplify (lseq, valueize);
26594 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26595 : 0 : if (!_r2) goto next_after_fail3113;
26596 : : }
26597 : : else
26598 : : _r2 = _o2[0];
26599 : 0 : _o1[3] = _r2;
26600 : : }
26601 : 0 : _o1[4] = captures[5];
26602 : 0 : _o1[5] = captures[6];
26603 : 0 : (*res_op).set_op (CFN_COND_LEN_ADD, TREE_TYPE (_o1[1]), 6);
26604 : 0 : (*res_op).ops[0] = _o1[0];
26605 : 0 : (*res_op).ops[1] = _o1[1];
26606 : 0 : (*res_op).ops[2] = _o1[2];
26607 : 0 : (*res_op).ops[3] = _o1[3];
26608 : 0 : (*res_op).ops[4] = _o1[4];
26609 : 0 : (*res_op).ops[5] = _o1[5];
26610 : 0 : (*res_op).resimplify (lseq, valueize);
26611 : : }
26612 : 0 : if (type != res_op->type
26613 : 0 : && !useless_type_conversion_p (type, res_op->type))
26614 : : {
26615 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3113;
26616 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26617 : 0 : res_op->resimplify (lseq, valueize);
26618 : : }
26619 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26620 : 0 : return true;
26621 : : }
26622 : 0 : next_after_fail3113:;
26623 : : }
26624 : : }
26625 : : }
26626 : 0 : break;
26627 : : }
26628 : 0 : case MINUS_EXPR:
26629 : 0 : {
26630 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
26631 : 0 : _q30 = do_valueize (valueize, _q30);
26632 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
26633 : 0 : _q31 = do_valueize (valueize, _q31);
26634 : 0 : {
26635 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
26636 : 0 : {
26637 : 0 : tree op_type = TREE_TYPE (captures[1]);
26638 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SUB), op_type)
26639 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26640 : 0 : && single_use (captures[1])
26641 : : )
26642 : : {
26643 : 0 : gimple_seq *lseq = seq;
26644 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3114;
26645 : 0 : {
26646 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26647 : 0 : {
26648 : 0 : tree _o1[6], _r1;
26649 : 0 : _o1[0] = captures[0];
26650 : 0 : _o1[1] = captures[2];
26651 : 0 : _o1[2] = captures[3];
26652 : 0 : {
26653 : 0 : tree _o2[1], _r2;
26654 : 0 : _o2[0] = captures[4];
26655 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26656 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26657 : : {
26658 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26659 : 0 : tem_op.resimplify (lseq, valueize);
26660 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26661 : 0 : if (!_r2) goto next_after_fail3114;
26662 : : }
26663 : : else
26664 : : _r2 = _o2[0];
26665 : 0 : _o1[3] = _r2;
26666 : : }
26667 : 0 : _o1[4] = captures[5];
26668 : 0 : _o1[5] = captures[6];
26669 : 0 : (*res_op).set_op (CFN_COND_LEN_SUB, TREE_TYPE (_o1[1]), 6);
26670 : 0 : (*res_op).ops[0] = _o1[0];
26671 : 0 : (*res_op).ops[1] = _o1[1];
26672 : 0 : (*res_op).ops[2] = _o1[2];
26673 : 0 : (*res_op).ops[3] = _o1[3];
26674 : 0 : (*res_op).ops[4] = _o1[4];
26675 : 0 : (*res_op).ops[5] = _o1[5];
26676 : 0 : (*res_op).resimplify (lseq, valueize);
26677 : : }
26678 : 0 : if (type != res_op->type
26679 : 0 : && !useless_type_conversion_p (type, res_op->type))
26680 : : {
26681 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3114;
26682 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26683 : 0 : res_op->resimplify (lseq, valueize);
26684 : : }
26685 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26686 : 0 : return true;
26687 : : }
26688 : 0 : next_after_fail3114:;
26689 : : }
26690 : : }
26691 : : }
26692 : 0 : break;
26693 : : }
26694 : 0 : case MULT_EXPR:
26695 : 0 : {
26696 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
26697 : 0 : _q30 = do_valueize (valueize, _q30);
26698 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
26699 : 0 : _q31 = do_valueize (valueize, _q31);
26700 : 0 : if (tree_swap_operands_p (_q30, _q31))
26701 : 0 : std::swap (_q30, _q31);
26702 : 0 : {
26703 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
26704 : 0 : {
26705 : 0 : tree op_type = TREE_TYPE (captures[1]);
26706 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MUL), op_type)
26707 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26708 : 0 : && single_use (captures[1])
26709 : : )
26710 : : {
26711 : 0 : gimple_seq *lseq = seq;
26712 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3115;
26713 : 0 : {
26714 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26715 : 0 : {
26716 : 0 : tree _o1[6], _r1;
26717 : 0 : _o1[0] = captures[0];
26718 : 0 : _o1[1] = captures[2];
26719 : 0 : _o1[2] = captures[3];
26720 : 0 : {
26721 : 0 : tree _o2[1], _r2;
26722 : 0 : _o2[0] = captures[4];
26723 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26724 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26725 : : {
26726 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26727 : 0 : tem_op.resimplify (lseq, valueize);
26728 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26729 : 0 : if (!_r2) goto next_after_fail3115;
26730 : : }
26731 : : else
26732 : : _r2 = _o2[0];
26733 : 0 : _o1[3] = _r2;
26734 : : }
26735 : 0 : _o1[4] = captures[5];
26736 : 0 : _o1[5] = captures[6];
26737 : 0 : (*res_op).set_op (CFN_COND_LEN_MUL, TREE_TYPE (_o1[1]), 6);
26738 : 0 : (*res_op).ops[0] = _o1[0];
26739 : 0 : (*res_op).ops[1] = _o1[1];
26740 : 0 : (*res_op).ops[2] = _o1[2];
26741 : 0 : (*res_op).ops[3] = _o1[3];
26742 : 0 : (*res_op).ops[4] = _o1[4];
26743 : 0 : (*res_op).ops[5] = _o1[5];
26744 : 0 : (*res_op).resimplify (lseq, valueize);
26745 : : }
26746 : 0 : if (type != res_op->type
26747 : 0 : && !useless_type_conversion_p (type, res_op->type))
26748 : : {
26749 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3115;
26750 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26751 : 0 : res_op->resimplify (lseq, valueize);
26752 : : }
26753 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26754 : 0 : return true;
26755 : : }
26756 : 0 : next_after_fail3115:;
26757 : : }
26758 : : }
26759 : : }
26760 : 0 : break;
26761 : : }
26762 : 0 : case TRUNC_DIV_EXPR:
26763 : 0 : {
26764 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
26765 : 0 : _q30 = do_valueize (valueize, _q30);
26766 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
26767 : 0 : _q31 = do_valueize (valueize, _q31);
26768 : 0 : {
26769 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
26770 : 0 : {
26771 : 0 : tree op_type = TREE_TYPE (captures[1]);
26772 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_DIV), op_type)
26773 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26774 : 0 : && single_use (captures[1])
26775 : : )
26776 : : {
26777 : 0 : gimple_seq *lseq = seq;
26778 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3116;
26779 : 0 : {
26780 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26781 : 0 : {
26782 : 0 : tree _o1[6], _r1;
26783 : 0 : _o1[0] = captures[0];
26784 : 0 : _o1[1] = captures[2];
26785 : 0 : _o1[2] = captures[3];
26786 : 0 : {
26787 : 0 : tree _o2[1], _r2;
26788 : 0 : _o2[0] = captures[4];
26789 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26790 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26791 : : {
26792 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26793 : 0 : tem_op.resimplify (lseq, valueize);
26794 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26795 : 0 : if (!_r2) goto next_after_fail3116;
26796 : : }
26797 : : else
26798 : : _r2 = _o2[0];
26799 : 0 : _o1[3] = _r2;
26800 : : }
26801 : 0 : _o1[4] = captures[5];
26802 : 0 : _o1[5] = captures[6];
26803 : 0 : (*res_op).set_op (CFN_COND_LEN_DIV, TREE_TYPE (_o1[1]), 6);
26804 : 0 : (*res_op).ops[0] = _o1[0];
26805 : 0 : (*res_op).ops[1] = _o1[1];
26806 : 0 : (*res_op).ops[2] = _o1[2];
26807 : 0 : (*res_op).ops[3] = _o1[3];
26808 : 0 : (*res_op).ops[4] = _o1[4];
26809 : 0 : (*res_op).ops[5] = _o1[5];
26810 : 0 : (*res_op).resimplify (lseq, valueize);
26811 : : }
26812 : 0 : if (type != res_op->type
26813 : 0 : && !useless_type_conversion_p (type, res_op->type))
26814 : : {
26815 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3116;
26816 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26817 : 0 : res_op->resimplify (lseq, valueize);
26818 : : }
26819 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26820 : 0 : return true;
26821 : : }
26822 : 0 : next_after_fail3116:;
26823 : : }
26824 : : }
26825 : : }
26826 : 0 : break;
26827 : : }
26828 : 0 : case TRUNC_MOD_EXPR:
26829 : 0 : {
26830 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
26831 : 0 : _q30 = do_valueize (valueize, _q30);
26832 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
26833 : 0 : _q31 = do_valueize (valueize, _q31);
26834 : 0 : {
26835 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
26836 : 0 : {
26837 : 0 : tree op_type = TREE_TYPE (captures[1]);
26838 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MOD), op_type)
26839 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26840 : 0 : && single_use (captures[1])
26841 : : )
26842 : : {
26843 : 0 : gimple_seq *lseq = seq;
26844 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3117;
26845 : 0 : {
26846 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26847 : 0 : {
26848 : 0 : tree _o1[6], _r1;
26849 : 0 : _o1[0] = captures[0];
26850 : 0 : _o1[1] = captures[2];
26851 : 0 : _o1[2] = captures[3];
26852 : 0 : {
26853 : 0 : tree _o2[1], _r2;
26854 : 0 : _o2[0] = captures[4];
26855 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26856 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26857 : : {
26858 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26859 : 0 : tem_op.resimplify (lseq, valueize);
26860 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26861 : 0 : if (!_r2) goto next_after_fail3117;
26862 : : }
26863 : : else
26864 : : _r2 = _o2[0];
26865 : 0 : _o1[3] = _r2;
26866 : : }
26867 : 0 : _o1[4] = captures[5];
26868 : 0 : _o1[5] = captures[6];
26869 : 0 : (*res_op).set_op (CFN_COND_LEN_MOD, TREE_TYPE (_o1[1]), 6);
26870 : 0 : (*res_op).ops[0] = _o1[0];
26871 : 0 : (*res_op).ops[1] = _o1[1];
26872 : 0 : (*res_op).ops[2] = _o1[2];
26873 : 0 : (*res_op).ops[3] = _o1[3];
26874 : 0 : (*res_op).ops[4] = _o1[4];
26875 : 0 : (*res_op).ops[5] = _o1[5];
26876 : 0 : (*res_op).resimplify (lseq, valueize);
26877 : : }
26878 : 0 : if (type != res_op->type
26879 : 0 : && !useless_type_conversion_p (type, res_op->type))
26880 : : {
26881 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3117;
26882 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26883 : 0 : res_op->resimplify (lseq, valueize);
26884 : : }
26885 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26886 : 0 : return true;
26887 : : }
26888 : 0 : next_after_fail3117:;
26889 : : }
26890 : : }
26891 : : }
26892 : 0 : break;
26893 : : }
26894 : 0 : case RDIV_EXPR:
26895 : 0 : {
26896 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
26897 : 0 : _q30 = do_valueize (valueize, _q30);
26898 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
26899 : 0 : _q31 = do_valueize (valueize, _q31);
26900 : 0 : {
26901 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
26902 : 0 : {
26903 : 0 : tree op_type = TREE_TYPE (captures[1]);
26904 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_RDIV), op_type)
26905 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26906 : 0 : && single_use (captures[1])
26907 : : )
26908 : : {
26909 : 0 : gimple_seq *lseq = seq;
26910 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3118;
26911 : 0 : {
26912 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26913 : 0 : {
26914 : 0 : tree _o1[6], _r1;
26915 : 0 : _o1[0] = captures[0];
26916 : 0 : _o1[1] = captures[2];
26917 : 0 : _o1[2] = captures[3];
26918 : 0 : {
26919 : 0 : tree _o2[1], _r2;
26920 : 0 : _o2[0] = captures[4];
26921 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26922 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26923 : : {
26924 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26925 : 0 : tem_op.resimplify (lseq, valueize);
26926 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26927 : 0 : if (!_r2) goto next_after_fail3118;
26928 : : }
26929 : : else
26930 : : _r2 = _o2[0];
26931 : 0 : _o1[3] = _r2;
26932 : : }
26933 : 0 : _o1[4] = captures[5];
26934 : 0 : _o1[5] = captures[6];
26935 : 0 : (*res_op).set_op (CFN_COND_LEN_RDIV, TREE_TYPE (_o1[1]), 6);
26936 : 0 : (*res_op).ops[0] = _o1[0];
26937 : 0 : (*res_op).ops[1] = _o1[1];
26938 : 0 : (*res_op).ops[2] = _o1[2];
26939 : 0 : (*res_op).ops[3] = _o1[3];
26940 : 0 : (*res_op).ops[4] = _o1[4];
26941 : 0 : (*res_op).ops[5] = _o1[5];
26942 : 0 : (*res_op).resimplify (lseq, valueize);
26943 : : }
26944 : 0 : if (type != res_op->type
26945 : 0 : && !useless_type_conversion_p (type, res_op->type))
26946 : : {
26947 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3118;
26948 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26949 : 0 : res_op->resimplify (lseq, valueize);
26950 : : }
26951 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
26952 : 0 : return true;
26953 : : }
26954 : 0 : next_after_fail3118:;
26955 : : }
26956 : : }
26957 : : }
26958 : 0 : break;
26959 : : }
26960 : 0 : case MIN_EXPR:
26961 : 0 : {
26962 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
26963 : 0 : _q30 = do_valueize (valueize, _q30);
26964 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
26965 : 0 : _q31 = do_valueize (valueize, _q31);
26966 : 0 : if (tree_swap_operands_p (_q30, _q31))
26967 : 0 : std::swap (_q30, _q31);
26968 : 0 : {
26969 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
26970 : 0 : {
26971 : 0 : tree op_type = TREE_TYPE (captures[1]);
26972 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MIN), op_type)
26973 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
26974 : 0 : && single_use (captures[1])
26975 : : )
26976 : : {
26977 : 0 : gimple_seq *lseq = seq;
26978 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3119;
26979 : 0 : {
26980 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
26981 : 0 : {
26982 : 0 : tree _o1[6], _r1;
26983 : 0 : _o1[0] = captures[0];
26984 : 0 : _o1[1] = captures[2];
26985 : 0 : _o1[2] = captures[3];
26986 : 0 : {
26987 : 0 : tree _o2[1], _r2;
26988 : 0 : _o2[0] = captures[4];
26989 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
26990 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
26991 : : {
26992 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
26993 : 0 : tem_op.resimplify (lseq, valueize);
26994 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
26995 : 0 : if (!_r2) goto next_after_fail3119;
26996 : : }
26997 : : else
26998 : : _r2 = _o2[0];
26999 : 0 : _o1[3] = _r2;
27000 : : }
27001 : 0 : _o1[4] = captures[5];
27002 : 0 : _o1[5] = captures[6];
27003 : 0 : (*res_op).set_op (CFN_COND_LEN_MIN, TREE_TYPE (_o1[1]), 6);
27004 : 0 : (*res_op).ops[0] = _o1[0];
27005 : 0 : (*res_op).ops[1] = _o1[1];
27006 : 0 : (*res_op).ops[2] = _o1[2];
27007 : 0 : (*res_op).ops[3] = _o1[3];
27008 : 0 : (*res_op).ops[4] = _o1[4];
27009 : 0 : (*res_op).ops[5] = _o1[5];
27010 : 0 : (*res_op).resimplify (lseq, valueize);
27011 : : }
27012 : 0 : if (type != res_op->type
27013 : 0 : && !useless_type_conversion_p (type, res_op->type))
27014 : : {
27015 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3119;
27016 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27017 : 0 : res_op->resimplify (lseq, valueize);
27018 : : }
27019 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27020 : 0 : return true;
27021 : : }
27022 : 0 : next_after_fail3119:;
27023 : : }
27024 : : }
27025 : : }
27026 : 0 : break;
27027 : : }
27028 : 0 : case MAX_EXPR:
27029 : 0 : {
27030 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
27031 : 0 : _q30 = do_valueize (valueize, _q30);
27032 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
27033 : 0 : _q31 = do_valueize (valueize, _q31);
27034 : 0 : if (tree_swap_operands_p (_q30, _q31))
27035 : 0 : std::swap (_q30, _q31);
27036 : 0 : {
27037 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27038 : 0 : {
27039 : 0 : tree op_type = TREE_TYPE (captures[1]);
27040 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MAX), op_type)
27041 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27042 : 0 : && single_use (captures[1])
27043 : : )
27044 : : {
27045 : 0 : gimple_seq *lseq = seq;
27046 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3120;
27047 : 0 : {
27048 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27049 : 0 : {
27050 : 0 : tree _o1[6], _r1;
27051 : 0 : _o1[0] = captures[0];
27052 : 0 : _o1[1] = captures[2];
27053 : 0 : _o1[2] = captures[3];
27054 : 0 : {
27055 : 0 : tree _o2[1], _r2;
27056 : 0 : _o2[0] = captures[4];
27057 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27058 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27059 : : {
27060 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27061 : 0 : tem_op.resimplify (lseq, valueize);
27062 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27063 : 0 : if (!_r2) goto next_after_fail3120;
27064 : : }
27065 : : else
27066 : : _r2 = _o2[0];
27067 : 0 : _o1[3] = _r2;
27068 : : }
27069 : 0 : _o1[4] = captures[5];
27070 : 0 : _o1[5] = captures[6];
27071 : 0 : (*res_op).set_op (CFN_COND_LEN_MAX, TREE_TYPE (_o1[1]), 6);
27072 : 0 : (*res_op).ops[0] = _o1[0];
27073 : 0 : (*res_op).ops[1] = _o1[1];
27074 : 0 : (*res_op).ops[2] = _o1[2];
27075 : 0 : (*res_op).ops[3] = _o1[3];
27076 : 0 : (*res_op).ops[4] = _o1[4];
27077 : 0 : (*res_op).ops[5] = _o1[5];
27078 : 0 : (*res_op).resimplify (lseq, valueize);
27079 : : }
27080 : 0 : if (type != res_op->type
27081 : 0 : && !useless_type_conversion_p (type, res_op->type))
27082 : : {
27083 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3120;
27084 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27085 : 0 : res_op->resimplify (lseq, valueize);
27086 : : }
27087 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27088 : 0 : return true;
27089 : : }
27090 : 0 : next_after_fail3120:;
27091 : : }
27092 : : }
27093 : : }
27094 : 0 : break;
27095 : : }
27096 : 0 : case BIT_AND_EXPR:
27097 : 0 : {
27098 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
27099 : 0 : _q30 = do_valueize (valueize, _q30);
27100 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
27101 : 0 : _q31 = do_valueize (valueize, _q31);
27102 : 0 : if (tree_swap_operands_p (_q30, _q31))
27103 : 0 : std::swap (_q30, _q31);
27104 : 0 : {
27105 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27106 : 0 : {
27107 : 0 : tree op_type = TREE_TYPE (captures[1]);
27108 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_AND), op_type)
27109 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27110 : 0 : && single_use (captures[1])
27111 : : )
27112 : : {
27113 : 0 : gimple_seq *lseq = seq;
27114 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3121;
27115 : 0 : {
27116 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27117 : 0 : {
27118 : 0 : tree _o1[6], _r1;
27119 : 0 : _o1[0] = captures[0];
27120 : 0 : _o1[1] = captures[2];
27121 : 0 : _o1[2] = captures[3];
27122 : 0 : {
27123 : 0 : tree _o2[1], _r2;
27124 : 0 : _o2[0] = captures[4];
27125 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27126 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27127 : : {
27128 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27129 : 0 : tem_op.resimplify (lseq, valueize);
27130 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27131 : 0 : if (!_r2) goto next_after_fail3121;
27132 : : }
27133 : : else
27134 : : _r2 = _o2[0];
27135 : 0 : _o1[3] = _r2;
27136 : : }
27137 : 0 : _o1[4] = captures[5];
27138 : 0 : _o1[5] = captures[6];
27139 : 0 : (*res_op).set_op (CFN_COND_LEN_AND, TREE_TYPE (_o1[1]), 6);
27140 : 0 : (*res_op).ops[0] = _o1[0];
27141 : 0 : (*res_op).ops[1] = _o1[1];
27142 : 0 : (*res_op).ops[2] = _o1[2];
27143 : 0 : (*res_op).ops[3] = _o1[3];
27144 : 0 : (*res_op).ops[4] = _o1[4];
27145 : 0 : (*res_op).ops[5] = _o1[5];
27146 : 0 : (*res_op).resimplify (lseq, valueize);
27147 : : }
27148 : 0 : if (type != res_op->type
27149 : 0 : && !useless_type_conversion_p (type, res_op->type))
27150 : : {
27151 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3121;
27152 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27153 : 0 : res_op->resimplify (lseq, valueize);
27154 : : }
27155 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27156 : 0 : return true;
27157 : : }
27158 : 0 : next_after_fail3121:;
27159 : : }
27160 : : }
27161 : : }
27162 : 0 : break;
27163 : : }
27164 : 0 : case BIT_IOR_EXPR:
27165 : 0 : {
27166 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
27167 : 0 : _q30 = do_valueize (valueize, _q30);
27168 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
27169 : 0 : _q31 = do_valueize (valueize, _q31);
27170 : 0 : if (tree_swap_operands_p (_q30, _q31))
27171 : 0 : std::swap (_q30, _q31);
27172 : 0 : {
27173 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27174 : 0 : {
27175 : 0 : tree op_type = TREE_TYPE (captures[1]);
27176 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_IOR), op_type)
27177 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27178 : 0 : && single_use (captures[1])
27179 : : )
27180 : : {
27181 : 0 : gimple_seq *lseq = seq;
27182 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3122;
27183 : 0 : {
27184 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27185 : 0 : {
27186 : 0 : tree _o1[6], _r1;
27187 : 0 : _o1[0] = captures[0];
27188 : 0 : _o1[1] = captures[2];
27189 : 0 : _o1[2] = captures[3];
27190 : 0 : {
27191 : 0 : tree _o2[1], _r2;
27192 : 0 : _o2[0] = captures[4];
27193 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27194 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27195 : : {
27196 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27197 : 0 : tem_op.resimplify (lseq, valueize);
27198 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27199 : 0 : if (!_r2) goto next_after_fail3122;
27200 : : }
27201 : : else
27202 : : _r2 = _o2[0];
27203 : 0 : _o1[3] = _r2;
27204 : : }
27205 : 0 : _o1[4] = captures[5];
27206 : 0 : _o1[5] = captures[6];
27207 : 0 : (*res_op).set_op (CFN_COND_LEN_IOR, TREE_TYPE (_o1[1]), 6);
27208 : 0 : (*res_op).ops[0] = _o1[0];
27209 : 0 : (*res_op).ops[1] = _o1[1];
27210 : 0 : (*res_op).ops[2] = _o1[2];
27211 : 0 : (*res_op).ops[3] = _o1[3];
27212 : 0 : (*res_op).ops[4] = _o1[4];
27213 : 0 : (*res_op).ops[5] = _o1[5];
27214 : 0 : (*res_op).resimplify (lseq, valueize);
27215 : : }
27216 : 0 : if (type != res_op->type
27217 : 0 : && !useless_type_conversion_p (type, res_op->type))
27218 : : {
27219 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3122;
27220 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27221 : 0 : res_op->resimplify (lseq, valueize);
27222 : : }
27223 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27224 : 0 : return true;
27225 : : }
27226 : 0 : next_after_fail3122:;
27227 : : }
27228 : : }
27229 : : }
27230 : 0 : break;
27231 : : }
27232 : 0 : case BIT_XOR_EXPR:
27233 : 0 : {
27234 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
27235 : 0 : _q30 = do_valueize (valueize, _q30);
27236 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
27237 : 0 : _q31 = do_valueize (valueize, _q31);
27238 : 0 : if (tree_swap_operands_p (_q30, _q31))
27239 : 0 : std::swap (_q30, _q31);
27240 : 0 : {
27241 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27242 : 0 : {
27243 : 0 : tree op_type = TREE_TYPE (captures[1]);
27244 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_XOR), op_type)
27245 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27246 : 0 : && single_use (captures[1])
27247 : : )
27248 : : {
27249 : 0 : gimple_seq *lseq = seq;
27250 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3123;
27251 : 0 : {
27252 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27253 : 0 : {
27254 : 0 : tree _o1[6], _r1;
27255 : 0 : _o1[0] = captures[0];
27256 : 0 : _o1[1] = captures[2];
27257 : 0 : _o1[2] = captures[3];
27258 : 0 : {
27259 : 0 : tree _o2[1], _r2;
27260 : 0 : _o2[0] = captures[4];
27261 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27262 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27263 : : {
27264 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27265 : 0 : tem_op.resimplify (lseq, valueize);
27266 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27267 : 0 : if (!_r2) goto next_after_fail3123;
27268 : : }
27269 : : else
27270 : : _r2 = _o2[0];
27271 : 0 : _o1[3] = _r2;
27272 : : }
27273 : 0 : _o1[4] = captures[5];
27274 : 0 : _o1[5] = captures[6];
27275 : 0 : (*res_op).set_op (CFN_COND_LEN_XOR, TREE_TYPE (_o1[1]), 6);
27276 : 0 : (*res_op).ops[0] = _o1[0];
27277 : 0 : (*res_op).ops[1] = _o1[1];
27278 : 0 : (*res_op).ops[2] = _o1[2];
27279 : 0 : (*res_op).ops[3] = _o1[3];
27280 : 0 : (*res_op).ops[4] = _o1[4];
27281 : 0 : (*res_op).ops[5] = _o1[5];
27282 : 0 : (*res_op).resimplify (lseq, valueize);
27283 : : }
27284 : 0 : if (type != res_op->type
27285 : 0 : && !useless_type_conversion_p (type, res_op->type))
27286 : : {
27287 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3123;
27288 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27289 : 0 : res_op->resimplify (lseq, valueize);
27290 : : }
27291 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27292 : 0 : return true;
27293 : : }
27294 : 0 : next_after_fail3123:;
27295 : : }
27296 : : }
27297 : : }
27298 : 0 : break;
27299 : : }
27300 : 0 : case LSHIFT_EXPR:
27301 : 0 : {
27302 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
27303 : 0 : _q30 = do_valueize (valueize, _q30);
27304 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
27305 : 0 : _q31 = do_valueize (valueize, _q31);
27306 : 0 : {
27307 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27308 : 0 : {
27309 : 0 : tree op_type = TREE_TYPE (captures[1]);
27310 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHL), op_type)
27311 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27312 : 0 : && single_use (captures[1])
27313 : : )
27314 : : {
27315 : 0 : gimple_seq *lseq = seq;
27316 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3124;
27317 : 0 : {
27318 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27319 : 0 : {
27320 : 0 : tree _o1[6], _r1;
27321 : 0 : _o1[0] = captures[0];
27322 : 0 : _o1[1] = captures[2];
27323 : 0 : _o1[2] = captures[3];
27324 : 0 : {
27325 : 0 : tree _o2[1], _r2;
27326 : 0 : _o2[0] = captures[4];
27327 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27328 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27329 : : {
27330 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27331 : 0 : tem_op.resimplify (lseq, valueize);
27332 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27333 : 0 : if (!_r2) goto next_after_fail3124;
27334 : : }
27335 : : else
27336 : : _r2 = _o2[0];
27337 : 0 : _o1[3] = _r2;
27338 : : }
27339 : 0 : _o1[4] = captures[5];
27340 : 0 : _o1[5] = captures[6];
27341 : 0 : (*res_op).set_op (CFN_COND_LEN_SHL, TREE_TYPE (_o1[1]), 6);
27342 : 0 : (*res_op).ops[0] = _o1[0];
27343 : 0 : (*res_op).ops[1] = _o1[1];
27344 : 0 : (*res_op).ops[2] = _o1[2];
27345 : 0 : (*res_op).ops[3] = _o1[3];
27346 : 0 : (*res_op).ops[4] = _o1[4];
27347 : 0 : (*res_op).ops[5] = _o1[5];
27348 : 0 : (*res_op).resimplify (lseq, valueize);
27349 : : }
27350 : 0 : if (type != res_op->type
27351 : 0 : && !useless_type_conversion_p (type, res_op->type))
27352 : : {
27353 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3124;
27354 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27355 : 0 : res_op->resimplify (lseq, valueize);
27356 : : }
27357 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27358 : 0 : return true;
27359 : : }
27360 : 0 : next_after_fail3124:;
27361 : : }
27362 : : }
27363 : : }
27364 : 0 : break;
27365 : : }
27366 : 0 : case RSHIFT_EXPR:
27367 : 0 : {
27368 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
27369 : 0 : _q30 = do_valueize (valueize, _q30);
27370 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
27371 : 0 : _q31 = do_valueize (valueize, _q31);
27372 : 0 : {
27373 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27374 : 0 : {
27375 : 0 : tree op_type = TREE_TYPE (captures[1]);
27376 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHR), op_type)
27377 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27378 : 0 : && single_use (captures[1])
27379 : : )
27380 : : {
27381 : 0 : gimple_seq *lseq = seq;
27382 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3125;
27383 : 0 : {
27384 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27385 : 0 : {
27386 : 0 : tree _o1[6], _r1;
27387 : 0 : _o1[0] = captures[0];
27388 : 0 : _o1[1] = captures[2];
27389 : 0 : _o1[2] = captures[3];
27390 : 0 : {
27391 : 0 : tree _o2[1], _r2;
27392 : 0 : _o2[0] = captures[4];
27393 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27394 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27395 : : {
27396 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27397 : 0 : tem_op.resimplify (lseq, valueize);
27398 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27399 : 0 : if (!_r2) goto next_after_fail3125;
27400 : : }
27401 : : else
27402 : : _r2 = _o2[0];
27403 : 0 : _o1[3] = _r2;
27404 : : }
27405 : 0 : _o1[4] = captures[5];
27406 : 0 : _o1[5] = captures[6];
27407 : 0 : (*res_op).set_op (CFN_COND_LEN_SHR, TREE_TYPE (_o1[1]), 6);
27408 : 0 : (*res_op).ops[0] = _o1[0];
27409 : 0 : (*res_op).ops[1] = _o1[1];
27410 : 0 : (*res_op).ops[2] = _o1[2];
27411 : 0 : (*res_op).ops[3] = _o1[3];
27412 : 0 : (*res_op).ops[4] = _o1[4];
27413 : 0 : (*res_op).ops[5] = _o1[5];
27414 : 0 : (*res_op).resimplify (lseq, valueize);
27415 : : }
27416 : 0 : if (type != res_op->type
27417 : 0 : && !useless_type_conversion_p (type, res_op->type))
27418 : : {
27419 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3125;
27420 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27421 : 0 : res_op->resimplify (lseq, valueize);
27422 : : }
27423 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27424 : 0 : return true;
27425 : : }
27426 : 0 : next_after_fail3125:;
27427 : : }
27428 : : }
27429 : : }
27430 : 0 : break;
27431 : : }
27432 : : default:;
27433 : : }
27434 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
27435 : 0 : switch (gimple_call_combined_fn (_c1))
27436 : : {
27437 : 0 : case CFN_FMAX:
27438 : 0 : if (gimple_call_num_args (_c1) == 2)
27439 : : {
27440 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
27441 : 0 : _q30 = do_valueize (valueize, _q30);
27442 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
27443 : 0 : _q31 = do_valueize (valueize, _q31);
27444 : 0 : {
27445 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27446 : 0 : {
27447 : 0 : tree op_type = TREE_TYPE (captures[1]);
27448 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMAX), op_type)
27449 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27450 : 0 : && single_use (captures[1])
27451 : : )
27452 : : {
27453 : 0 : gimple_seq *lseq = seq;
27454 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3126;
27455 : 0 : {
27456 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27457 : 0 : {
27458 : 0 : tree _o1[6], _r1;
27459 : 0 : _o1[0] = captures[0];
27460 : 0 : _o1[1] = captures[2];
27461 : 0 : _o1[2] = captures[3];
27462 : 0 : {
27463 : 0 : tree _o2[1], _r2;
27464 : 0 : _o2[0] = captures[4];
27465 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27466 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27467 : : {
27468 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27469 : 0 : tem_op.resimplify (lseq, valueize);
27470 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27471 : 0 : if (!_r2) goto next_after_fail3126;
27472 : : }
27473 : : else
27474 : : _r2 = _o2[0];
27475 : 0 : _o1[3] = _r2;
27476 : : }
27477 : 0 : _o1[4] = captures[5];
27478 : 0 : _o1[5] = captures[6];
27479 : 0 : (*res_op).set_op (CFN_COND_LEN_FMAX, TREE_TYPE (_o1[1]), 6);
27480 : 0 : (*res_op).ops[0] = _o1[0];
27481 : 0 : (*res_op).ops[1] = _o1[1];
27482 : 0 : (*res_op).ops[2] = _o1[2];
27483 : 0 : (*res_op).ops[3] = _o1[3];
27484 : 0 : (*res_op).ops[4] = _o1[4];
27485 : 0 : (*res_op).ops[5] = _o1[5];
27486 : 0 : (*res_op).resimplify (lseq, valueize);
27487 : : }
27488 : 0 : if (type != res_op->type
27489 : 0 : && !useless_type_conversion_p (type, res_op->type))
27490 : : {
27491 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3126;
27492 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27493 : 0 : res_op->resimplify (lseq, valueize);
27494 : : }
27495 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27496 : 0 : return true;
27497 : : }
27498 : 0 : next_after_fail3126:;
27499 : : }
27500 : : }
27501 : : }
27502 : : }
27503 : : break;
27504 : 0 : case CFN_FMIN:
27505 : 0 : if (gimple_call_num_args (_c1) == 2)
27506 : : {
27507 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
27508 : 0 : _q30 = do_valueize (valueize, _q30);
27509 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
27510 : 0 : _q31 = do_valueize (valueize, _q31);
27511 : 0 : {
27512 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27513 : 0 : {
27514 : 0 : tree op_type = TREE_TYPE (captures[1]);
27515 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMIN), op_type)
27516 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27517 : 0 : && single_use (captures[1])
27518 : : )
27519 : : {
27520 : 0 : gimple_seq *lseq = seq;
27521 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3127;
27522 : 0 : {
27523 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27524 : 0 : {
27525 : 0 : tree _o1[6], _r1;
27526 : 0 : _o1[0] = captures[0];
27527 : 0 : _o1[1] = captures[2];
27528 : 0 : _o1[2] = captures[3];
27529 : 0 : {
27530 : 0 : tree _o2[1], _r2;
27531 : 0 : _o2[0] = captures[4];
27532 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27533 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27534 : : {
27535 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27536 : 0 : tem_op.resimplify (lseq, valueize);
27537 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27538 : 0 : if (!_r2) goto next_after_fail3127;
27539 : : }
27540 : : else
27541 : : _r2 = _o2[0];
27542 : 0 : _o1[3] = _r2;
27543 : : }
27544 : 0 : _o1[4] = captures[5];
27545 : 0 : _o1[5] = captures[6];
27546 : 0 : (*res_op).set_op (CFN_COND_LEN_FMIN, TREE_TYPE (_o1[1]), 6);
27547 : 0 : (*res_op).ops[0] = _o1[0];
27548 : 0 : (*res_op).ops[1] = _o1[1];
27549 : 0 : (*res_op).ops[2] = _o1[2];
27550 : 0 : (*res_op).ops[3] = _o1[3];
27551 : 0 : (*res_op).ops[4] = _o1[4];
27552 : 0 : (*res_op).ops[5] = _o1[5];
27553 : 0 : (*res_op).resimplify (lseq, valueize);
27554 : : }
27555 : 0 : if (type != res_op->type
27556 : 0 : && !useless_type_conversion_p (type, res_op->type))
27557 : : {
27558 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3127;
27559 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27560 : 0 : res_op->resimplify (lseq, valueize);
27561 : : }
27562 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27563 : 0 : return true;
27564 : : }
27565 : 0 : next_after_fail3127:;
27566 : : }
27567 : : }
27568 : : }
27569 : : }
27570 : : break;
27571 : 0 : case CFN_COPYSIGN:
27572 : 0 : if (gimple_call_num_args (_c1) == 2)
27573 : : {
27574 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
27575 : 0 : _q30 = do_valueize (valueize, _q30);
27576 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
27577 : 0 : _q31 = do_valueize (valueize, _q31);
27578 : 0 : {
27579 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2, _p3, _p4 };
27580 : 0 : {
27581 : 0 : tree op_type = TREE_TYPE (captures[1]);
27582 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_COPYSIGN), op_type)
27583 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27584 : 0 : && single_use (captures[1])
27585 : : )
27586 : : {
27587 : 0 : gimple_seq *lseq = seq;
27588 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3128;
27589 : 0 : {
27590 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27591 : 0 : {
27592 : 0 : tree _o1[6], _r1;
27593 : 0 : _o1[0] = captures[0];
27594 : 0 : _o1[1] = captures[2];
27595 : 0 : _o1[2] = captures[3];
27596 : 0 : {
27597 : 0 : tree _o2[1], _r2;
27598 : 0 : _o2[0] = captures[4];
27599 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27600 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27601 : : {
27602 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27603 : 0 : tem_op.resimplify (lseq, valueize);
27604 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27605 : 0 : if (!_r2) goto next_after_fail3128;
27606 : : }
27607 : : else
27608 : : _r2 = _o2[0];
27609 : 0 : _o1[3] = _r2;
27610 : : }
27611 : 0 : _o1[4] = captures[5];
27612 : 0 : _o1[5] = captures[6];
27613 : 0 : (*res_op).set_op (CFN_COND_LEN_COPYSIGN, TREE_TYPE (_o1[1]), 6);
27614 : 0 : (*res_op).ops[0] = _o1[0];
27615 : 0 : (*res_op).ops[1] = _o1[1];
27616 : 0 : (*res_op).ops[2] = _o1[2];
27617 : 0 : (*res_op).ops[3] = _o1[3];
27618 : 0 : (*res_op).ops[4] = _o1[4];
27619 : 0 : (*res_op).ops[5] = _o1[5];
27620 : 0 : (*res_op).resimplify (lseq, valueize);
27621 : : }
27622 : 0 : if (type != res_op->type
27623 : 0 : && !useless_type_conversion_p (type, res_op->type))
27624 : : {
27625 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3128;
27626 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27627 : 0 : res_op->resimplify (lseq, valueize);
27628 : : }
27629 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1313, __FILE__, __LINE__, true);
27630 : 0 : return true;
27631 : : }
27632 : 0 : next_after_fail3128:;
27633 : : }
27634 : : }
27635 : : }
27636 : : }
27637 : : break;
27638 : : default:;
27639 : : }
27640 : : }
27641 : : break;
27642 : 0 : default:;
27643 : : }
27644 : 0 : switch (TREE_CODE (_p2))
27645 : : {
27646 : 0 : case SSA_NAME:
27647 : 0 : if (gimple *_d1 = get_def (valueize, _p2))
27648 : : {
27649 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27650 : 0 : switch (gimple_assign_rhs_code (_a1))
27651 : : {
27652 : 0 : case VIEW_CONVERT_EXPR:
27653 : 0 : {
27654 : 0 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
27655 : 0 : if ((TREE_CODE (_q40) == SSA_NAME
27656 : 0 : || is_gimple_min_invariant (_q40)))
27657 : : {
27658 : 0 : _q40 = do_valueize (valueize, _q40);
27659 : 0 : switch (TREE_CODE (_q40))
27660 : : {
27661 : 0 : case SSA_NAME:
27662 : 0 : if (gimple *_d2 = get_def (valueize, _q40))
27663 : : {
27664 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27665 : 0 : switch (gimple_assign_rhs_code (_a2))
27666 : : {
27667 : 0 : case PLUS_EXPR:
27668 : 0 : {
27669 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
27670 : 0 : _q50 = do_valueize (valueize, _q50);
27671 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
27672 : 0 : _q51 = do_valueize (valueize, _q51);
27673 : 0 : if (tree_swap_operands_p (_q50, _q51))
27674 : 0 : std::swap (_q50, _q51);
27675 : 0 : {
27676 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
27677 : 0 : {
27678 : 0 : tree op_type = TREE_TYPE (captures[2]);
27679 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_ADD), op_type)
27680 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27681 : 0 : && single_use (captures[2])
27682 : : )
27683 : : {
27684 : 0 : gimple_seq *lseq = seq;
27685 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3129;
27686 : 0 : {
27687 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27688 : 0 : {
27689 : 0 : tree _o1[6], _r1;
27690 : 0 : {
27691 : 0 : tree _o2[1], _r2;
27692 : 0 : _o2[0] = captures[0];
27693 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27694 : 0 : tem_op.resimplify (lseq, valueize);
27695 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27696 : 0 : if (!_r2) goto next_after_fail3129;
27697 : 0 : _o1[0] = _r2;
27698 : : }
27699 : 0 : _o1[1] = captures[3];
27700 : 0 : _o1[2] = captures[4];
27701 : 0 : {
27702 : 0 : tree _o2[1], _r2;
27703 : 0 : _o2[0] = captures[1];
27704 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27705 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27706 : : {
27707 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27708 : 0 : tem_op.resimplify (lseq, valueize);
27709 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27710 : 0 : if (!_r2) goto next_after_fail3129;
27711 : : }
27712 : : else
27713 : : _r2 = _o2[0];
27714 : 0 : _o1[3] = _r2;
27715 : : }
27716 : 0 : _o1[4] = captures[5];
27717 : 0 : _o1[5] = captures[6];
27718 : 0 : (*res_op).set_op (CFN_COND_LEN_ADD, TREE_TYPE (_o1[1]), 6);
27719 : 0 : (*res_op).ops[0] = _o1[0];
27720 : 0 : (*res_op).ops[1] = _o1[1];
27721 : 0 : (*res_op).ops[2] = _o1[2];
27722 : 0 : (*res_op).ops[3] = _o1[3];
27723 : 0 : (*res_op).ops[4] = _o1[4];
27724 : 0 : (*res_op).ops[5] = _o1[5];
27725 : 0 : (*res_op).resimplify (lseq, valueize);
27726 : : }
27727 : 0 : if (type != res_op->type
27728 : 0 : && !useless_type_conversion_p (type, res_op->type))
27729 : : {
27730 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3129;
27731 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27732 : 0 : res_op->resimplify (lseq, valueize);
27733 : : }
27734 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
27735 : 0 : return true;
27736 : : }
27737 : 0 : next_after_fail3129:;
27738 : : }
27739 : : }
27740 : : }
27741 : 0 : break;
27742 : : }
27743 : 0 : case MINUS_EXPR:
27744 : 0 : {
27745 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
27746 : 0 : _q50 = do_valueize (valueize, _q50);
27747 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
27748 : 0 : _q51 = do_valueize (valueize, _q51);
27749 : 0 : {
27750 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
27751 : 0 : {
27752 : 0 : tree op_type = TREE_TYPE (captures[2]);
27753 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SUB), op_type)
27754 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27755 : 0 : && single_use (captures[2])
27756 : : )
27757 : : {
27758 : 0 : gimple_seq *lseq = seq;
27759 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3130;
27760 : 0 : {
27761 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27762 : 0 : {
27763 : 0 : tree _o1[6], _r1;
27764 : 0 : {
27765 : 0 : tree _o2[1], _r2;
27766 : 0 : _o2[0] = captures[0];
27767 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27768 : 0 : tem_op.resimplify (lseq, valueize);
27769 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27770 : 0 : if (!_r2) goto next_after_fail3130;
27771 : 0 : _o1[0] = _r2;
27772 : : }
27773 : 0 : _o1[1] = captures[3];
27774 : 0 : _o1[2] = captures[4];
27775 : 0 : {
27776 : 0 : tree _o2[1], _r2;
27777 : 0 : _o2[0] = captures[1];
27778 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27779 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27780 : : {
27781 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27782 : 0 : tem_op.resimplify (lseq, valueize);
27783 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27784 : 0 : if (!_r2) goto next_after_fail3130;
27785 : : }
27786 : : else
27787 : : _r2 = _o2[0];
27788 : 0 : _o1[3] = _r2;
27789 : : }
27790 : 0 : _o1[4] = captures[5];
27791 : 0 : _o1[5] = captures[6];
27792 : 0 : (*res_op).set_op (CFN_COND_LEN_SUB, TREE_TYPE (_o1[1]), 6);
27793 : 0 : (*res_op).ops[0] = _o1[0];
27794 : 0 : (*res_op).ops[1] = _o1[1];
27795 : 0 : (*res_op).ops[2] = _o1[2];
27796 : 0 : (*res_op).ops[3] = _o1[3];
27797 : 0 : (*res_op).ops[4] = _o1[4];
27798 : 0 : (*res_op).ops[5] = _o1[5];
27799 : 0 : (*res_op).resimplify (lseq, valueize);
27800 : : }
27801 : 0 : if (type != res_op->type
27802 : 0 : && !useless_type_conversion_p (type, res_op->type))
27803 : : {
27804 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3130;
27805 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27806 : 0 : res_op->resimplify (lseq, valueize);
27807 : : }
27808 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
27809 : 0 : return true;
27810 : : }
27811 : 0 : next_after_fail3130:;
27812 : : }
27813 : : }
27814 : : }
27815 : 0 : break;
27816 : : }
27817 : 0 : case MULT_EXPR:
27818 : 0 : {
27819 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
27820 : 0 : _q50 = do_valueize (valueize, _q50);
27821 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
27822 : 0 : _q51 = do_valueize (valueize, _q51);
27823 : 0 : if (tree_swap_operands_p (_q50, _q51))
27824 : 0 : std::swap (_q50, _q51);
27825 : 0 : {
27826 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
27827 : 0 : {
27828 : 0 : tree op_type = TREE_TYPE (captures[2]);
27829 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MUL), op_type)
27830 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27831 : 0 : && single_use (captures[2])
27832 : : )
27833 : : {
27834 : 0 : gimple_seq *lseq = seq;
27835 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3131;
27836 : 0 : {
27837 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27838 : 0 : {
27839 : 0 : tree _o1[6], _r1;
27840 : 0 : {
27841 : 0 : tree _o2[1], _r2;
27842 : 0 : _o2[0] = captures[0];
27843 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27844 : 0 : tem_op.resimplify (lseq, valueize);
27845 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27846 : 0 : if (!_r2) goto next_after_fail3131;
27847 : 0 : _o1[0] = _r2;
27848 : : }
27849 : 0 : _o1[1] = captures[3];
27850 : 0 : _o1[2] = captures[4];
27851 : 0 : {
27852 : 0 : tree _o2[1], _r2;
27853 : 0 : _o2[0] = captures[1];
27854 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27855 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27856 : : {
27857 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27858 : 0 : tem_op.resimplify (lseq, valueize);
27859 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27860 : 0 : if (!_r2) goto next_after_fail3131;
27861 : : }
27862 : : else
27863 : : _r2 = _o2[0];
27864 : 0 : _o1[3] = _r2;
27865 : : }
27866 : 0 : _o1[4] = captures[5];
27867 : 0 : _o1[5] = captures[6];
27868 : 0 : (*res_op).set_op (CFN_COND_LEN_MUL, TREE_TYPE (_o1[1]), 6);
27869 : 0 : (*res_op).ops[0] = _o1[0];
27870 : 0 : (*res_op).ops[1] = _o1[1];
27871 : 0 : (*res_op).ops[2] = _o1[2];
27872 : 0 : (*res_op).ops[3] = _o1[3];
27873 : 0 : (*res_op).ops[4] = _o1[4];
27874 : 0 : (*res_op).ops[5] = _o1[5];
27875 : 0 : (*res_op).resimplify (lseq, valueize);
27876 : : }
27877 : 0 : if (type != res_op->type
27878 : 0 : && !useless_type_conversion_p (type, res_op->type))
27879 : : {
27880 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3131;
27881 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27882 : 0 : res_op->resimplify (lseq, valueize);
27883 : : }
27884 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
27885 : 0 : return true;
27886 : : }
27887 : 0 : next_after_fail3131:;
27888 : : }
27889 : : }
27890 : : }
27891 : 0 : break;
27892 : : }
27893 : 0 : case TRUNC_DIV_EXPR:
27894 : 0 : {
27895 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
27896 : 0 : _q50 = do_valueize (valueize, _q50);
27897 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
27898 : 0 : _q51 = do_valueize (valueize, _q51);
27899 : 0 : {
27900 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
27901 : 0 : {
27902 : 0 : tree op_type = TREE_TYPE (captures[2]);
27903 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_DIV), op_type)
27904 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27905 : 0 : && single_use (captures[2])
27906 : : )
27907 : : {
27908 : 0 : gimple_seq *lseq = seq;
27909 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3132;
27910 : 0 : {
27911 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27912 : 0 : {
27913 : 0 : tree _o1[6], _r1;
27914 : 0 : {
27915 : 0 : tree _o2[1], _r2;
27916 : 0 : _o2[0] = captures[0];
27917 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27918 : 0 : tem_op.resimplify (lseq, valueize);
27919 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27920 : 0 : if (!_r2) goto next_after_fail3132;
27921 : 0 : _o1[0] = _r2;
27922 : : }
27923 : 0 : _o1[1] = captures[3];
27924 : 0 : _o1[2] = captures[4];
27925 : 0 : {
27926 : 0 : tree _o2[1], _r2;
27927 : 0 : _o2[0] = captures[1];
27928 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
27929 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
27930 : : {
27931 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
27932 : 0 : tem_op.resimplify (lseq, valueize);
27933 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27934 : 0 : if (!_r2) goto next_after_fail3132;
27935 : : }
27936 : : else
27937 : : _r2 = _o2[0];
27938 : 0 : _o1[3] = _r2;
27939 : : }
27940 : 0 : _o1[4] = captures[5];
27941 : 0 : _o1[5] = captures[6];
27942 : 0 : (*res_op).set_op (CFN_COND_LEN_DIV, TREE_TYPE (_o1[1]), 6);
27943 : 0 : (*res_op).ops[0] = _o1[0];
27944 : 0 : (*res_op).ops[1] = _o1[1];
27945 : 0 : (*res_op).ops[2] = _o1[2];
27946 : 0 : (*res_op).ops[3] = _o1[3];
27947 : 0 : (*res_op).ops[4] = _o1[4];
27948 : 0 : (*res_op).ops[5] = _o1[5];
27949 : 0 : (*res_op).resimplify (lseq, valueize);
27950 : : }
27951 : 0 : if (type != res_op->type
27952 : 0 : && !useless_type_conversion_p (type, res_op->type))
27953 : : {
27954 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3132;
27955 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27956 : 0 : res_op->resimplify (lseq, valueize);
27957 : : }
27958 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
27959 : 0 : return true;
27960 : : }
27961 : 0 : next_after_fail3132:;
27962 : : }
27963 : : }
27964 : : }
27965 : 0 : break;
27966 : : }
27967 : 0 : case TRUNC_MOD_EXPR:
27968 : 0 : {
27969 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
27970 : 0 : _q50 = do_valueize (valueize, _q50);
27971 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
27972 : 0 : _q51 = do_valueize (valueize, _q51);
27973 : 0 : {
27974 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
27975 : 0 : {
27976 : 0 : tree op_type = TREE_TYPE (captures[2]);
27977 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MOD), op_type)
27978 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
27979 : 0 : && single_use (captures[2])
27980 : : )
27981 : : {
27982 : 0 : gimple_seq *lseq = seq;
27983 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3133;
27984 : 0 : {
27985 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
27986 : 0 : {
27987 : 0 : tree _o1[6], _r1;
27988 : 0 : {
27989 : 0 : tree _o2[1], _r2;
27990 : 0 : _o2[0] = captures[0];
27991 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27992 : 0 : tem_op.resimplify (lseq, valueize);
27993 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27994 : 0 : if (!_r2) goto next_after_fail3133;
27995 : 0 : _o1[0] = _r2;
27996 : : }
27997 : 0 : _o1[1] = captures[3];
27998 : 0 : _o1[2] = captures[4];
27999 : 0 : {
28000 : 0 : tree _o2[1], _r2;
28001 : 0 : _o2[0] = captures[1];
28002 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28003 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28004 : : {
28005 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28006 : 0 : tem_op.resimplify (lseq, valueize);
28007 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28008 : 0 : if (!_r2) goto next_after_fail3133;
28009 : : }
28010 : : else
28011 : : _r2 = _o2[0];
28012 : 0 : _o1[3] = _r2;
28013 : : }
28014 : 0 : _o1[4] = captures[5];
28015 : 0 : _o1[5] = captures[6];
28016 : 0 : (*res_op).set_op (CFN_COND_LEN_MOD, TREE_TYPE (_o1[1]), 6);
28017 : 0 : (*res_op).ops[0] = _o1[0];
28018 : 0 : (*res_op).ops[1] = _o1[1];
28019 : 0 : (*res_op).ops[2] = _o1[2];
28020 : 0 : (*res_op).ops[3] = _o1[3];
28021 : 0 : (*res_op).ops[4] = _o1[4];
28022 : 0 : (*res_op).ops[5] = _o1[5];
28023 : 0 : (*res_op).resimplify (lseq, valueize);
28024 : : }
28025 : 0 : if (type != res_op->type
28026 : 0 : && !useless_type_conversion_p (type, res_op->type))
28027 : : {
28028 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3133;
28029 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28030 : 0 : res_op->resimplify (lseq, valueize);
28031 : : }
28032 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28033 : 0 : return true;
28034 : : }
28035 : 0 : next_after_fail3133:;
28036 : : }
28037 : : }
28038 : : }
28039 : 0 : break;
28040 : : }
28041 : 0 : case RDIV_EXPR:
28042 : 0 : {
28043 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28044 : 0 : _q50 = do_valueize (valueize, _q50);
28045 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28046 : 0 : _q51 = do_valueize (valueize, _q51);
28047 : 0 : {
28048 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28049 : 0 : {
28050 : 0 : tree op_type = TREE_TYPE (captures[2]);
28051 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_RDIV), op_type)
28052 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28053 : 0 : && single_use (captures[2])
28054 : : )
28055 : : {
28056 : 0 : gimple_seq *lseq = seq;
28057 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3134;
28058 : 0 : {
28059 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28060 : 0 : {
28061 : 0 : tree _o1[6], _r1;
28062 : 0 : {
28063 : 0 : tree _o2[1], _r2;
28064 : 0 : _o2[0] = captures[0];
28065 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28066 : 0 : tem_op.resimplify (lseq, valueize);
28067 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28068 : 0 : if (!_r2) goto next_after_fail3134;
28069 : 0 : _o1[0] = _r2;
28070 : : }
28071 : 0 : _o1[1] = captures[3];
28072 : 0 : _o1[2] = captures[4];
28073 : 0 : {
28074 : 0 : tree _o2[1], _r2;
28075 : 0 : _o2[0] = captures[1];
28076 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28077 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28078 : : {
28079 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28080 : 0 : tem_op.resimplify (lseq, valueize);
28081 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28082 : 0 : if (!_r2) goto next_after_fail3134;
28083 : : }
28084 : : else
28085 : : _r2 = _o2[0];
28086 : 0 : _o1[3] = _r2;
28087 : : }
28088 : 0 : _o1[4] = captures[5];
28089 : 0 : _o1[5] = captures[6];
28090 : 0 : (*res_op).set_op (CFN_COND_LEN_RDIV, TREE_TYPE (_o1[1]), 6);
28091 : 0 : (*res_op).ops[0] = _o1[0];
28092 : 0 : (*res_op).ops[1] = _o1[1];
28093 : 0 : (*res_op).ops[2] = _o1[2];
28094 : 0 : (*res_op).ops[3] = _o1[3];
28095 : 0 : (*res_op).ops[4] = _o1[4];
28096 : 0 : (*res_op).ops[5] = _o1[5];
28097 : 0 : (*res_op).resimplify (lseq, valueize);
28098 : : }
28099 : 0 : if (type != res_op->type
28100 : 0 : && !useless_type_conversion_p (type, res_op->type))
28101 : : {
28102 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3134;
28103 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28104 : 0 : res_op->resimplify (lseq, valueize);
28105 : : }
28106 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28107 : 0 : return true;
28108 : : }
28109 : 0 : next_after_fail3134:;
28110 : : }
28111 : : }
28112 : : }
28113 : 0 : break;
28114 : : }
28115 : 0 : case MIN_EXPR:
28116 : 0 : {
28117 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28118 : 0 : _q50 = do_valueize (valueize, _q50);
28119 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28120 : 0 : _q51 = do_valueize (valueize, _q51);
28121 : 0 : if (tree_swap_operands_p (_q50, _q51))
28122 : 0 : std::swap (_q50, _q51);
28123 : 0 : {
28124 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28125 : 0 : {
28126 : 0 : tree op_type = TREE_TYPE (captures[2]);
28127 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MIN), op_type)
28128 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28129 : 0 : && single_use (captures[2])
28130 : : )
28131 : : {
28132 : 0 : gimple_seq *lseq = seq;
28133 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3135;
28134 : 0 : {
28135 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28136 : 0 : {
28137 : 0 : tree _o1[6], _r1;
28138 : 0 : {
28139 : 0 : tree _o2[1], _r2;
28140 : 0 : _o2[0] = captures[0];
28141 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28142 : 0 : tem_op.resimplify (lseq, valueize);
28143 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28144 : 0 : if (!_r2) goto next_after_fail3135;
28145 : 0 : _o1[0] = _r2;
28146 : : }
28147 : 0 : _o1[1] = captures[3];
28148 : 0 : _o1[2] = captures[4];
28149 : 0 : {
28150 : 0 : tree _o2[1], _r2;
28151 : 0 : _o2[0] = captures[1];
28152 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28153 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28154 : : {
28155 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28156 : 0 : tem_op.resimplify (lseq, valueize);
28157 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28158 : 0 : if (!_r2) goto next_after_fail3135;
28159 : : }
28160 : : else
28161 : : _r2 = _o2[0];
28162 : 0 : _o1[3] = _r2;
28163 : : }
28164 : 0 : _o1[4] = captures[5];
28165 : 0 : _o1[5] = captures[6];
28166 : 0 : (*res_op).set_op (CFN_COND_LEN_MIN, TREE_TYPE (_o1[1]), 6);
28167 : 0 : (*res_op).ops[0] = _o1[0];
28168 : 0 : (*res_op).ops[1] = _o1[1];
28169 : 0 : (*res_op).ops[2] = _o1[2];
28170 : 0 : (*res_op).ops[3] = _o1[3];
28171 : 0 : (*res_op).ops[4] = _o1[4];
28172 : 0 : (*res_op).ops[5] = _o1[5];
28173 : 0 : (*res_op).resimplify (lseq, valueize);
28174 : : }
28175 : 0 : if (type != res_op->type
28176 : 0 : && !useless_type_conversion_p (type, res_op->type))
28177 : : {
28178 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3135;
28179 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28180 : 0 : res_op->resimplify (lseq, valueize);
28181 : : }
28182 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28183 : 0 : return true;
28184 : : }
28185 : 0 : next_after_fail3135:;
28186 : : }
28187 : : }
28188 : : }
28189 : 0 : break;
28190 : : }
28191 : 0 : case MAX_EXPR:
28192 : 0 : {
28193 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28194 : 0 : _q50 = do_valueize (valueize, _q50);
28195 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28196 : 0 : _q51 = do_valueize (valueize, _q51);
28197 : 0 : if (tree_swap_operands_p (_q50, _q51))
28198 : 0 : std::swap (_q50, _q51);
28199 : 0 : {
28200 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28201 : 0 : {
28202 : 0 : tree op_type = TREE_TYPE (captures[2]);
28203 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MAX), op_type)
28204 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28205 : 0 : && single_use (captures[2])
28206 : : )
28207 : : {
28208 : 0 : gimple_seq *lseq = seq;
28209 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3136;
28210 : 0 : {
28211 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28212 : 0 : {
28213 : 0 : tree _o1[6], _r1;
28214 : 0 : {
28215 : 0 : tree _o2[1], _r2;
28216 : 0 : _o2[0] = captures[0];
28217 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28218 : 0 : tem_op.resimplify (lseq, valueize);
28219 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28220 : 0 : if (!_r2) goto next_after_fail3136;
28221 : 0 : _o1[0] = _r2;
28222 : : }
28223 : 0 : _o1[1] = captures[3];
28224 : 0 : _o1[2] = captures[4];
28225 : 0 : {
28226 : 0 : tree _o2[1], _r2;
28227 : 0 : _o2[0] = captures[1];
28228 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28229 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28230 : : {
28231 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28232 : 0 : tem_op.resimplify (lseq, valueize);
28233 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28234 : 0 : if (!_r2) goto next_after_fail3136;
28235 : : }
28236 : : else
28237 : : _r2 = _o2[0];
28238 : 0 : _o1[3] = _r2;
28239 : : }
28240 : 0 : _o1[4] = captures[5];
28241 : 0 : _o1[5] = captures[6];
28242 : 0 : (*res_op).set_op (CFN_COND_LEN_MAX, TREE_TYPE (_o1[1]), 6);
28243 : 0 : (*res_op).ops[0] = _o1[0];
28244 : 0 : (*res_op).ops[1] = _o1[1];
28245 : 0 : (*res_op).ops[2] = _o1[2];
28246 : 0 : (*res_op).ops[3] = _o1[3];
28247 : 0 : (*res_op).ops[4] = _o1[4];
28248 : 0 : (*res_op).ops[5] = _o1[5];
28249 : 0 : (*res_op).resimplify (lseq, valueize);
28250 : : }
28251 : 0 : if (type != res_op->type
28252 : 0 : && !useless_type_conversion_p (type, res_op->type))
28253 : : {
28254 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3136;
28255 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28256 : 0 : res_op->resimplify (lseq, valueize);
28257 : : }
28258 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28259 : 0 : return true;
28260 : : }
28261 : 0 : next_after_fail3136:;
28262 : : }
28263 : : }
28264 : : }
28265 : 0 : break;
28266 : : }
28267 : 0 : case BIT_AND_EXPR:
28268 : 0 : {
28269 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28270 : 0 : _q50 = do_valueize (valueize, _q50);
28271 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28272 : 0 : _q51 = do_valueize (valueize, _q51);
28273 : 0 : if (tree_swap_operands_p (_q50, _q51))
28274 : 0 : std::swap (_q50, _q51);
28275 : 0 : {
28276 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28277 : 0 : {
28278 : 0 : tree op_type = TREE_TYPE (captures[2]);
28279 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_AND), op_type)
28280 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28281 : 0 : && single_use (captures[2])
28282 : : )
28283 : : {
28284 : 0 : gimple_seq *lseq = seq;
28285 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3137;
28286 : 0 : {
28287 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28288 : 0 : {
28289 : 0 : tree _o1[6], _r1;
28290 : 0 : {
28291 : 0 : tree _o2[1], _r2;
28292 : 0 : _o2[0] = captures[0];
28293 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28294 : 0 : tem_op.resimplify (lseq, valueize);
28295 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28296 : 0 : if (!_r2) goto next_after_fail3137;
28297 : 0 : _o1[0] = _r2;
28298 : : }
28299 : 0 : _o1[1] = captures[3];
28300 : 0 : _o1[2] = captures[4];
28301 : 0 : {
28302 : 0 : tree _o2[1], _r2;
28303 : 0 : _o2[0] = captures[1];
28304 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28305 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28306 : : {
28307 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28308 : 0 : tem_op.resimplify (lseq, valueize);
28309 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28310 : 0 : if (!_r2) goto next_after_fail3137;
28311 : : }
28312 : : else
28313 : : _r2 = _o2[0];
28314 : 0 : _o1[3] = _r2;
28315 : : }
28316 : 0 : _o1[4] = captures[5];
28317 : 0 : _o1[5] = captures[6];
28318 : 0 : (*res_op).set_op (CFN_COND_LEN_AND, TREE_TYPE (_o1[1]), 6);
28319 : 0 : (*res_op).ops[0] = _o1[0];
28320 : 0 : (*res_op).ops[1] = _o1[1];
28321 : 0 : (*res_op).ops[2] = _o1[2];
28322 : 0 : (*res_op).ops[3] = _o1[3];
28323 : 0 : (*res_op).ops[4] = _o1[4];
28324 : 0 : (*res_op).ops[5] = _o1[5];
28325 : 0 : (*res_op).resimplify (lseq, valueize);
28326 : : }
28327 : 0 : if (type != res_op->type
28328 : 0 : && !useless_type_conversion_p (type, res_op->type))
28329 : : {
28330 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3137;
28331 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28332 : 0 : res_op->resimplify (lseq, valueize);
28333 : : }
28334 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28335 : 0 : return true;
28336 : : }
28337 : 0 : next_after_fail3137:;
28338 : : }
28339 : : }
28340 : : }
28341 : 0 : break;
28342 : : }
28343 : 0 : case BIT_IOR_EXPR:
28344 : 0 : {
28345 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28346 : 0 : _q50 = do_valueize (valueize, _q50);
28347 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28348 : 0 : _q51 = do_valueize (valueize, _q51);
28349 : 0 : if (tree_swap_operands_p (_q50, _q51))
28350 : 0 : std::swap (_q50, _q51);
28351 : 0 : {
28352 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28353 : 0 : {
28354 : 0 : tree op_type = TREE_TYPE (captures[2]);
28355 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_IOR), op_type)
28356 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28357 : 0 : && single_use (captures[2])
28358 : : )
28359 : : {
28360 : 0 : gimple_seq *lseq = seq;
28361 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3138;
28362 : 0 : {
28363 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28364 : 0 : {
28365 : 0 : tree _o1[6], _r1;
28366 : 0 : {
28367 : 0 : tree _o2[1], _r2;
28368 : 0 : _o2[0] = captures[0];
28369 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28370 : 0 : tem_op.resimplify (lseq, valueize);
28371 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28372 : 0 : if (!_r2) goto next_after_fail3138;
28373 : 0 : _o1[0] = _r2;
28374 : : }
28375 : 0 : _o1[1] = captures[3];
28376 : 0 : _o1[2] = captures[4];
28377 : 0 : {
28378 : 0 : tree _o2[1], _r2;
28379 : 0 : _o2[0] = captures[1];
28380 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28381 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28382 : : {
28383 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28384 : 0 : tem_op.resimplify (lseq, valueize);
28385 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28386 : 0 : if (!_r2) goto next_after_fail3138;
28387 : : }
28388 : : else
28389 : : _r2 = _o2[0];
28390 : 0 : _o1[3] = _r2;
28391 : : }
28392 : 0 : _o1[4] = captures[5];
28393 : 0 : _o1[5] = captures[6];
28394 : 0 : (*res_op).set_op (CFN_COND_LEN_IOR, TREE_TYPE (_o1[1]), 6);
28395 : 0 : (*res_op).ops[0] = _o1[0];
28396 : 0 : (*res_op).ops[1] = _o1[1];
28397 : 0 : (*res_op).ops[2] = _o1[2];
28398 : 0 : (*res_op).ops[3] = _o1[3];
28399 : 0 : (*res_op).ops[4] = _o1[4];
28400 : 0 : (*res_op).ops[5] = _o1[5];
28401 : 0 : (*res_op).resimplify (lseq, valueize);
28402 : : }
28403 : 0 : if (type != res_op->type
28404 : 0 : && !useless_type_conversion_p (type, res_op->type))
28405 : : {
28406 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3138;
28407 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28408 : 0 : res_op->resimplify (lseq, valueize);
28409 : : }
28410 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28411 : 0 : return true;
28412 : : }
28413 : 0 : next_after_fail3138:;
28414 : : }
28415 : : }
28416 : : }
28417 : 0 : break;
28418 : : }
28419 : 0 : case BIT_XOR_EXPR:
28420 : 0 : {
28421 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28422 : 0 : _q50 = do_valueize (valueize, _q50);
28423 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28424 : 0 : _q51 = do_valueize (valueize, _q51);
28425 : 0 : if (tree_swap_operands_p (_q50, _q51))
28426 : 0 : std::swap (_q50, _q51);
28427 : 0 : {
28428 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28429 : 0 : {
28430 : 0 : tree op_type = TREE_TYPE (captures[2]);
28431 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_XOR), op_type)
28432 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28433 : 0 : && single_use (captures[2])
28434 : : )
28435 : : {
28436 : 0 : gimple_seq *lseq = seq;
28437 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3139;
28438 : 0 : {
28439 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28440 : 0 : {
28441 : 0 : tree _o1[6], _r1;
28442 : 0 : {
28443 : 0 : tree _o2[1], _r2;
28444 : 0 : _o2[0] = captures[0];
28445 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28446 : 0 : tem_op.resimplify (lseq, valueize);
28447 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28448 : 0 : if (!_r2) goto next_after_fail3139;
28449 : 0 : _o1[0] = _r2;
28450 : : }
28451 : 0 : _o1[1] = captures[3];
28452 : 0 : _o1[2] = captures[4];
28453 : 0 : {
28454 : 0 : tree _o2[1], _r2;
28455 : 0 : _o2[0] = captures[1];
28456 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28457 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28458 : : {
28459 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28460 : 0 : tem_op.resimplify (lseq, valueize);
28461 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28462 : 0 : if (!_r2) goto next_after_fail3139;
28463 : : }
28464 : : else
28465 : : _r2 = _o2[0];
28466 : 0 : _o1[3] = _r2;
28467 : : }
28468 : 0 : _o1[4] = captures[5];
28469 : 0 : _o1[5] = captures[6];
28470 : 0 : (*res_op).set_op (CFN_COND_LEN_XOR, TREE_TYPE (_o1[1]), 6);
28471 : 0 : (*res_op).ops[0] = _o1[0];
28472 : 0 : (*res_op).ops[1] = _o1[1];
28473 : 0 : (*res_op).ops[2] = _o1[2];
28474 : 0 : (*res_op).ops[3] = _o1[3];
28475 : 0 : (*res_op).ops[4] = _o1[4];
28476 : 0 : (*res_op).ops[5] = _o1[5];
28477 : 0 : (*res_op).resimplify (lseq, valueize);
28478 : : }
28479 : 0 : if (type != res_op->type
28480 : 0 : && !useless_type_conversion_p (type, res_op->type))
28481 : : {
28482 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3139;
28483 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28484 : 0 : res_op->resimplify (lseq, valueize);
28485 : : }
28486 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28487 : 0 : return true;
28488 : : }
28489 : 0 : next_after_fail3139:;
28490 : : }
28491 : : }
28492 : : }
28493 : 0 : break;
28494 : : }
28495 : 0 : case LSHIFT_EXPR:
28496 : 0 : {
28497 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28498 : 0 : _q50 = do_valueize (valueize, _q50);
28499 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28500 : 0 : _q51 = do_valueize (valueize, _q51);
28501 : 0 : {
28502 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28503 : 0 : {
28504 : 0 : tree op_type = TREE_TYPE (captures[2]);
28505 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHL), op_type)
28506 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28507 : 0 : && single_use (captures[2])
28508 : : )
28509 : : {
28510 : 0 : gimple_seq *lseq = seq;
28511 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3140;
28512 : 0 : {
28513 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28514 : 0 : {
28515 : 0 : tree _o1[6], _r1;
28516 : 0 : {
28517 : 0 : tree _o2[1], _r2;
28518 : 0 : _o2[0] = captures[0];
28519 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28520 : 0 : tem_op.resimplify (lseq, valueize);
28521 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28522 : 0 : if (!_r2) goto next_after_fail3140;
28523 : 0 : _o1[0] = _r2;
28524 : : }
28525 : 0 : _o1[1] = captures[3];
28526 : 0 : _o1[2] = captures[4];
28527 : 0 : {
28528 : 0 : tree _o2[1], _r2;
28529 : 0 : _o2[0] = captures[1];
28530 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28531 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28532 : : {
28533 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28534 : 0 : tem_op.resimplify (lseq, valueize);
28535 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28536 : 0 : if (!_r2) goto next_after_fail3140;
28537 : : }
28538 : : else
28539 : : _r2 = _o2[0];
28540 : 0 : _o1[3] = _r2;
28541 : : }
28542 : 0 : _o1[4] = captures[5];
28543 : 0 : _o1[5] = captures[6];
28544 : 0 : (*res_op).set_op (CFN_COND_LEN_SHL, TREE_TYPE (_o1[1]), 6);
28545 : 0 : (*res_op).ops[0] = _o1[0];
28546 : 0 : (*res_op).ops[1] = _o1[1];
28547 : 0 : (*res_op).ops[2] = _o1[2];
28548 : 0 : (*res_op).ops[3] = _o1[3];
28549 : 0 : (*res_op).ops[4] = _o1[4];
28550 : 0 : (*res_op).ops[5] = _o1[5];
28551 : 0 : (*res_op).resimplify (lseq, valueize);
28552 : : }
28553 : 0 : if (type != res_op->type
28554 : 0 : && !useless_type_conversion_p (type, res_op->type))
28555 : : {
28556 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3140;
28557 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28558 : 0 : res_op->resimplify (lseq, valueize);
28559 : : }
28560 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28561 : 0 : return true;
28562 : : }
28563 : 0 : next_after_fail3140:;
28564 : : }
28565 : : }
28566 : : }
28567 : 0 : break;
28568 : : }
28569 : 0 : case RSHIFT_EXPR:
28570 : 0 : {
28571 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28572 : 0 : _q50 = do_valueize (valueize, _q50);
28573 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
28574 : 0 : _q51 = do_valueize (valueize, _q51);
28575 : 0 : {
28576 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28577 : 0 : {
28578 : 0 : tree op_type = TREE_TYPE (captures[2]);
28579 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHR), op_type)
28580 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28581 : 0 : && single_use (captures[2])
28582 : : )
28583 : : {
28584 : 0 : gimple_seq *lseq = seq;
28585 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3141;
28586 : 0 : {
28587 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28588 : 0 : {
28589 : 0 : tree _o1[6], _r1;
28590 : 0 : {
28591 : 0 : tree _o2[1], _r2;
28592 : 0 : _o2[0] = captures[0];
28593 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28594 : 0 : tem_op.resimplify (lseq, valueize);
28595 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28596 : 0 : if (!_r2) goto next_after_fail3141;
28597 : 0 : _o1[0] = _r2;
28598 : : }
28599 : 0 : _o1[1] = captures[3];
28600 : 0 : _o1[2] = captures[4];
28601 : 0 : {
28602 : 0 : tree _o2[1], _r2;
28603 : 0 : _o2[0] = captures[1];
28604 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28605 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28606 : : {
28607 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28608 : 0 : tem_op.resimplify (lseq, valueize);
28609 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28610 : 0 : if (!_r2) goto next_after_fail3141;
28611 : : }
28612 : : else
28613 : : _r2 = _o2[0];
28614 : 0 : _o1[3] = _r2;
28615 : : }
28616 : 0 : _o1[4] = captures[5];
28617 : 0 : _o1[5] = captures[6];
28618 : 0 : (*res_op).set_op (CFN_COND_LEN_SHR, TREE_TYPE (_o1[1]), 6);
28619 : 0 : (*res_op).ops[0] = _o1[0];
28620 : 0 : (*res_op).ops[1] = _o1[1];
28621 : 0 : (*res_op).ops[2] = _o1[2];
28622 : 0 : (*res_op).ops[3] = _o1[3];
28623 : 0 : (*res_op).ops[4] = _o1[4];
28624 : 0 : (*res_op).ops[5] = _o1[5];
28625 : 0 : (*res_op).resimplify (lseq, valueize);
28626 : : }
28627 : 0 : if (type != res_op->type
28628 : 0 : && !useless_type_conversion_p (type, res_op->type))
28629 : : {
28630 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3141;
28631 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28632 : 0 : res_op->resimplify (lseq, valueize);
28633 : : }
28634 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28635 : 0 : return true;
28636 : : }
28637 : 0 : next_after_fail3141:;
28638 : : }
28639 : : }
28640 : : }
28641 : 0 : break;
28642 : : }
28643 : : default:;
28644 : : }
28645 : 0 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
28646 : 0 : switch (gimple_call_combined_fn (_c2))
28647 : : {
28648 : 0 : case CFN_FMAX:
28649 : 0 : if (gimple_call_num_args (_c2) == 2)
28650 : : {
28651 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
28652 : 0 : _q50 = do_valueize (valueize, _q50);
28653 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
28654 : 0 : _q51 = do_valueize (valueize, _q51);
28655 : 0 : {
28656 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28657 : 0 : {
28658 : 0 : tree op_type = TREE_TYPE (captures[2]);
28659 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMAX), op_type)
28660 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28661 : 0 : && single_use (captures[2])
28662 : : )
28663 : : {
28664 : 0 : gimple_seq *lseq = seq;
28665 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3142;
28666 : 0 : {
28667 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28668 : 0 : {
28669 : 0 : tree _o1[6], _r1;
28670 : 0 : {
28671 : 0 : tree _o2[1], _r2;
28672 : 0 : _o2[0] = captures[0];
28673 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28674 : 0 : tem_op.resimplify (lseq, valueize);
28675 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28676 : 0 : if (!_r2) goto next_after_fail3142;
28677 : 0 : _o1[0] = _r2;
28678 : : }
28679 : 0 : _o1[1] = captures[3];
28680 : 0 : _o1[2] = captures[4];
28681 : 0 : {
28682 : 0 : tree _o2[1], _r2;
28683 : 0 : _o2[0] = captures[1];
28684 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28685 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28686 : : {
28687 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28688 : 0 : tem_op.resimplify (lseq, valueize);
28689 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28690 : 0 : if (!_r2) goto next_after_fail3142;
28691 : : }
28692 : : else
28693 : : _r2 = _o2[0];
28694 : 0 : _o1[3] = _r2;
28695 : : }
28696 : 0 : _o1[4] = captures[5];
28697 : 0 : _o1[5] = captures[6];
28698 : 0 : (*res_op).set_op (CFN_COND_LEN_FMAX, TREE_TYPE (_o1[1]), 6);
28699 : 0 : (*res_op).ops[0] = _o1[0];
28700 : 0 : (*res_op).ops[1] = _o1[1];
28701 : 0 : (*res_op).ops[2] = _o1[2];
28702 : 0 : (*res_op).ops[3] = _o1[3];
28703 : 0 : (*res_op).ops[4] = _o1[4];
28704 : 0 : (*res_op).ops[5] = _o1[5];
28705 : 0 : (*res_op).resimplify (lseq, valueize);
28706 : : }
28707 : 0 : if (type != res_op->type
28708 : 0 : && !useless_type_conversion_p (type, res_op->type))
28709 : : {
28710 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3142;
28711 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28712 : 0 : res_op->resimplify (lseq, valueize);
28713 : : }
28714 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28715 : 0 : return true;
28716 : : }
28717 : 0 : next_after_fail3142:;
28718 : : }
28719 : : }
28720 : : }
28721 : : }
28722 : : break;
28723 : 0 : case CFN_FMIN:
28724 : 0 : if (gimple_call_num_args (_c2) == 2)
28725 : : {
28726 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
28727 : 0 : _q50 = do_valueize (valueize, _q50);
28728 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
28729 : 0 : _q51 = do_valueize (valueize, _q51);
28730 : 0 : {
28731 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28732 : 0 : {
28733 : 0 : tree op_type = TREE_TYPE (captures[2]);
28734 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMIN), op_type)
28735 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28736 : 0 : && single_use (captures[2])
28737 : : )
28738 : : {
28739 : 0 : gimple_seq *lseq = seq;
28740 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3143;
28741 : 0 : {
28742 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28743 : 0 : {
28744 : 0 : tree _o1[6], _r1;
28745 : 0 : {
28746 : 0 : tree _o2[1], _r2;
28747 : 0 : _o2[0] = captures[0];
28748 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28749 : 0 : tem_op.resimplify (lseq, valueize);
28750 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28751 : 0 : if (!_r2) goto next_after_fail3143;
28752 : 0 : _o1[0] = _r2;
28753 : : }
28754 : 0 : _o1[1] = captures[3];
28755 : 0 : _o1[2] = captures[4];
28756 : 0 : {
28757 : 0 : tree _o2[1], _r2;
28758 : 0 : _o2[0] = captures[1];
28759 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28760 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28761 : : {
28762 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28763 : 0 : tem_op.resimplify (lseq, valueize);
28764 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28765 : 0 : if (!_r2) goto next_after_fail3143;
28766 : : }
28767 : : else
28768 : : _r2 = _o2[0];
28769 : 0 : _o1[3] = _r2;
28770 : : }
28771 : 0 : _o1[4] = captures[5];
28772 : 0 : _o1[5] = captures[6];
28773 : 0 : (*res_op).set_op (CFN_COND_LEN_FMIN, TREE_TYPE (_o1[1]), 6);
28774 : 0 : (*res_op).ops[0] = _o1[0];
28775 : 0 : (*res_op).ops[1] = _o1[1];
28776 : 0 : (*res_op).ops[2] = _o1[2];
28777 : 0 : (*res_op).ops[3] = _o1[3];
28778 : 0 : (*res_op).ops[4] = _o1[4];
28779 : 0 : (*res_op).ops[5] = _o1[5];
28780 : 0 : (*res_op).resimplify (lseq, valueize);
28781 : : }
28782 : 0 : if (type != res_op->type
28783 : 0 : && !useless_type_conversion_p (type, res_op->type))
28784 : : {
28785 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3143;
28786 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28787 : 0 : res_op->resimplify (lseq, valueize);
28788 : : }
28789 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28790 : 0 : return true;
28791 : : }
28792 : 0 : next_after_fail3143:;
28793 : : }
28794 : : }
28795 : : }
28796 : : }
28797 : : break;
28798 : 0 : case CFN_COPYSIGN:
28799 : 0 : if (gimple_call_num_args (_c2) == 2)
28800 : : {
28801 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
28802 : 0 : _q50 = do_valueize (valueize, _q50);
28803 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
28804 : 0 : _q51 = do_valueize (valueize, _q51);
28805 : 0 : {
28806 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _p3, _p4 };
28807 : 0 : {
28808 : 0 : tree op_type = TREE_TYPE (captures[2]);
28809 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_COPYSIGN), op_type)
28810 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28811 : 0 : && single_use (captures[2])
28812 : : )
28813 : : {
28814 : 0 : gimple_seq *lseq = seq;
28815 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3144;
28816 : 0 : {
28817 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28818 : 0 : {
28819 : 0 : tree _o1[6], _r1;
28820 : 0 : {
28821 : 0 : tree _o2[1], _r2;
28822 : 0 : _o2[0] = captures[0];
28823 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28824 : 0 : tem_op.resimplify (lseq, valueize);
28825 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28826 : 0 : if (!_r2) goto next_after_fail3144;
28827 : 0 : _o1[0] = _r2;
28828 : : }
28829 : 0 : _o1[1] = captures[3];
28830 : 0 : _o1[2] = captures[4];
28831 : 0 : {
28832 : 0 : tree _o2[1], _r2;
28833 : 0 : _o2[0] = captures[1];
28834 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28835 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28836 : : {
28837 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28838 : 0 : tem_op.resimplify (lseq, valueize);
28839 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28840 : 0 : if (!_r2) goto next_after_fail3144;
28841 : : }
28842 : : else
28843 : : _r2 = _o2[0];
28844 : 0 : _o1[3] = _r2;
28845 : : }
28846 : 0 : _o1[4] = captures[5];
28847 : 0 : _o1[5] = captures[6];
28848 : 0 : (*res_op).set_op (CFN_COND_LEN_COPYSIGN, TREE_TYPE (_o1[1]), 6);
28849 : 0 : (*res_op).ops[0] = _o1[0];
28850 : 0 : (*res_op).ops[1] = _o1[1];
28851 : 0 : (*res_op).ops[2] = _o1[2];
28852 : 0 : (*res_op).ops[3] = _o1[3];
28853 : 0 : (*res_op).ops[4] = _o1[4];
28854 : 0 : (*res_op).ops[5] = _o1[5];
28855 : 0 : (*res_op).resimplify (lseq, valueize);
28856 : : }
28857 : 0 : if (type != res_op->type
28858 : 0 : && !useless_type_conversion_p (type, res_op->type))
28859 : : {
28860 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3144;
28861 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28862 : 0 : res_op->resimplify (lseq, valueize);
28863 : : }
28864 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28865 : 0 : return true;
28866 : : }
28867 : 0 : next_after_fail3144:;
28868 : : }
28869 : : }
28870 : : }
28871 : : }
28872 : : break;
28873 : : default:;
28874 : : }
28875 : : }
28876 : : break;
28877 : : default:;
28878 : : }
28879 : : }
28880 : : break;
28881 : : }
28882 : 0 : case PLUS_EXPR:
28883 : 0 : {
28884 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
28885 : 0 : _q40 = do_valueize (valueize, _q40);
28886 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
28887 : 0 : _q41 = do_valueize (valueize, _q41);
28888 : 0 : if (tree_swap_operands_p (_q40, _q41))
28889 : 0 : std::swap (_q40, _q41);
28890 : 0 : {
28891 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
28892 : 0 : {
28893 : 0 : tree op_type = TREE_TYPE (captures[2]);
28894 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_ADD), op_type)
28895 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28896 : 0 : && single_use (captures[2])
28897 : : )
28898 : : {
28899 : 0 : gimple_seq *lseq = seq;
28900 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3145;
28901 : 0 : {
28902 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28903 : 0 : {
28904 : 0 : tree _o1[6], _r1;
28905 : 0 : {
28906 : 0 : tree _o2[1], _r2;
28907 : 0 : _o2[0] = captures[0];
28908 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28909 : 0 : tem_op.resimplify (lseq, valueize);
28910 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28911 : 0 : if (!_r2) goto next_after_fail3145;
28912 : 0 : _o1[0] = _r2;
28913 : : }
28914 : 0 : _o1[1] = captures[3];
28915 : 0 : _o1[2] = captures[4];
28916 : 0 : {
28917 : 0 : tree _o2[1], _r2;
28918 : 0 : _o2[0] = captures[1];
28919 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28920 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28921 : : {
28922 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28923 : 0 : tem_op.resimplify (lseq, valueize);
28924 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28925 : 0 : if (!_r2) goto next_after_fail3145;
28926 : : }
28927 : : else
28928 : : _r2 = _o2[0];
28929 : 0 : _o1[3] = _r2;
28930 : : }
28931 : 0 : _o1[4] = captures[5];
28932 : 0 : _o1[5] = captures[6];
28933 : 0 : (*res_op).set_op (CFN_COND_LEN_ADD, TREE_TYPE (_o1[1]), 6);
28934 : 0 : (*res_op).ops[0] = _o1[0];
28935 : 0 : (*res_op).ops[1] = _o1[1];
28936 : 0 : (*res_op).ops[2] = _o1[2];
28937 : 0 : (*res_op).ops[3] = _o1[3];
28938 : 0 : (*res_op).ops[4] = _o1[4];
28939 : 0 : (*res_op).ops[5] = _o1[5];
28940 : 0 : (*res_op).resimplify (lseq, valueize);
28941 : : }
28942 : 0 : if (type != res_op->type
28943 : 0 : && !useless_type_conversion_p (type, res_op->type))
28944 : : {
28945 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3145;
28946 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28947 : 0 : res_op->resimplify (lseq, valueize);
28948 : : }
28949 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
28950 : 0 : return true;
28951 : : }
28952 : 0 : next_after_fail3145:;
28953 : : }
28954 : : }
28955 : : }
28956 : 0 : break;
28957 : : }
28958 : 0 : case MINUS_EXPR:
28959 : 0 : {
28960 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
28961 : 0 : _q40 = do_valueize (valueize, _q40);
28962 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
28963 : 0 : _q41 = do_valueize (valueize, _q41);
28964 : 0 : {
28965 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
28966 : 0 : {
28967 : 0 : tree op_type = TREE_TYPE (captures[2]);
28968 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SUB), op_type)
28969 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28970 : 0 : && single_use (captures[2])
28971 : : )
28972 : : {
28973 : 0 : gimple_seq *lseq = seq;
28974 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3146;
28975 : 0 : {
28976 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28977 : 0 : {
28978 : 0 : tree _o1[6], _r1;
28979 : 0 : {
28980 : 0 : tree _o2[1], _r2;
28981 : 0 : _o2[0] = captures[0];
28982 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
28983 : 0 : tem_op.resimplify (lseq, valueize);
28984 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28985 : 0 : if (!_r2) goto next_after_fail3146;
28986 : 0 : _o1[0] = _r2;
28987 : : }
28988 : 0 : _o1[1] = captures[3];
28989 : 0 : _o1[2] = captures[4];
28990 : 0 : {
28991 : 0 : tree _o2[1], _r2;
28992 : 0 : _o2[0] = captures[1];
28993 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28994 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28995 : : {
28996 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28997 : 0 : tem_op.resimplify (lseq, valueize);
28998 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28999 : 0 : if (!_r2) goto next_after_fail3146;
29000 : : }
29001 : : else
29002 : : _r2 = _o2[0];
29003 : 0 : _o1[3] = _r2;
29004 : : }
29005 : 0 : _o1[4] = captures[5];
29006 : 0 : _o1[5] = captures[6];
29007 : 0 : (*res_op).set_op (CFN_COND_LEN_SUB, TREE_TYPE (_o1[1]), 6);
29008 : 0 : (*res_op).ops[0] = _o1[0];
29009 : 0 : (*res_op).ops[1] = _o1[1];
29010 : 0 : (*res_op).ops[2] = _o1[2];
29011 : 0 : (*res_op).ops[3] = _o1[3];
29012 : 0 : (*res_op).ops[4] = _o1[4];
29013 : 0 : (*res_op).ops[5] = _o1[5];
29014 : 0 : (*res_op).resimplify (lseq, valueize);
29015 : : }
29016 : 0 : if (type != res_op->type
29017 : 0 : && !useless_type_conversion_p (type, res_op->type))
29018 : : {
29019 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3146;
29020 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29021 : 0 : res_op->resimplify (lseq, valueize);
29022 : : }
29023 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29024 : 0 : return true;
29025 : : }
29026 : 0 : next_after_fail3146:;
29027 : : }
29028 : : }
29029 : : }
29030 : 0 : break;
29031 : : }
29032 : 0 : case MULT_EXPR:
29033 : 0 : {
29034 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29035 : 0 : _q40 = do_valueize (valueize, _q40);
29036 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29037 : 0 : _q41 = do_valueize (valueize, _q41);
29038 : 0 : if (tree_swap_operands_p (_q40, _q41))
29039 : 0 : std::swap (_q40, _q41);
29040 : 0 : {
29041 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29042 : 0 : {
29043 : 0 : tree op_type = TREE_TYPE (captures[2]);
29044 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MUL), op_type)
29045 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29046 : 0 : && single_use (captures[2])
29047 : : )
29048 : : {
29049 : 0 : gimple_seq *lseq = seq;
29050 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3147;
29051 : 0 : {
29052 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29053 : 0 : {
29054 : 0 : tree _o1[6], _r1;
29055 : 0 : {
29056 : 0 : tree _o2[1], _r2;
29057 : 0 : _o2[0] = captures[0];
29058 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29059 : 0 : tem_op.resimplify (lseq, valueize);
29060 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29061 : 0 : if (!_r2) goto next_after_fail3147;
29062 : 0 : _o1[0] = _r2;
29063 : : }
29064 : 0 : _o1[1] = captures[3];
29065 : 0 : _o1[2] = captures[4];
29066 : 0 : {
29067 : 0 : tree _o2[1], _r2;
29068 : 0 : _o2[0] = captures[1];
29069 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29070 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29071 : : {
29072 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29073 : 0 : tem_op.resimplify (lseq, valueize);
29074 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29075 : 0 : if (!_r2) goto next_after_fail3147;
29076 : : }
29077 : : else
29078 : : _r2 = _o2[0];
29079 : 0 : _o1[3] = _r2;
29080 : : }
29081 : 0 : _o1[4] = captures[5];
29082 : 0 : _o1[5] = captures[6];
29083 : 0 : (*res_op).set_op (CFN_COND_LEN_MUL, TREE_TYPE (_o1[1]), 6);
29084 : 0 : (*res_op).ops[0] = _o1[0];
29085 : 0 : (*res_op).ops[1] = _o1[1];
29086 : 0 : (*res_op).ops[2] = _o1[2];
29087 : 0 : (*res_op).ops[3] = _o1[3];
29088 : 0 : (*res_op).ops[4] = _o1[4];
29089 : 0 : (*res_op).ops[5] = _o1[5];
29090 : 0 : (*res_op).resimplify (lseq, valueize);
29091 : : }
29092 : 0 : if (type != res_op->type
29093 : 0 : && !useless_type_conversion_p (type, res_op->type))
29094 : : {
29095 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3147;
29096 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29097 : 0 : res_op->resimplify (lseq, valueize);
29098 : : }
29099 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29100 : 0 : return true;
29101 : : }
29102 : 0 : next_after_fail3147:;
29103 : : }
29104 : : }
29105 : : }
29106 : 0 : break;
29107 : : }
29108 : 0 : case TRUNC_DIV_EXPR:
29109 : 0 : {
29110 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29111 : 0 : _q40 = do_valueize (valueize, _q40);
29112 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29113 : 0 : _q41 = do_valueize (valueize, _q41);
29114 : 0 : {
29115 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29116 : 0 : {
29117 : 0 : tree op_type = TREE_TYPE (captures[2]);
29118 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_DIV), op_type)
29119 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29120 : 0 : && single_use (captures[2])
29121 : : )
29122 : : {
29123 : 0 : gimple_seq *lseq = seq;
29124 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3148;
29125 : 0 : {
29126 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29127 : 0 : {
29128 : 0 : tree _o1[6], _r1;
29129 : 0 : {
29130 : 0 : tree _o2[1], _r2;
29131 : 0 : _o2[0] = captures[0];
29132 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29133 : 0 : tem_op.resimplify (lseq, valueize);
29134 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29135 : 0 : if (!_r2) goto next_after_fail3148;
29136 : 0 : _o1[0] = _r2;
29137 : : }
29138 : 0 : _o1[1] = captures[3];
29139 : 0 : _o1[2] = captures[4];
29140 : 0 : {
29141 : 0 : tree _o2[1], _r2;
29142 : 0 : _o2[0] = captures[1];
29143 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29144 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29145 : : {
29146 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29147 : 0 : tem_op.resimplify (lseq, valueize);
29148 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29149 : 0 : if (!_r2) goto next_after_fail3148;
29150 : : }
29151 : : else
29152 : : _r2 = _o2[0];
29153 : 0 : _o1[3] = _r2;
29154 : : }
29155 : 0 : _o1[4] = captures[5];
29156 : 0 : _o1[5] = captures[6];
29157 : 0 : (*res_op).set_op (CFN_COND_LEN_DIV, TREE_TYPE (_o1[1]), 6);
29158 : 0 : (*res_op).ops[0] = _o1[0];
29159 : 0 : (*res_op).ops[1] = _o1[1];
29160 : 0 : (*res_op).ops[2] = _o1[2];
29161 : 0 : (*res_op).ops[3] = _o1[3];
29162 : 0 : (*res_op).ops[4] = _o1[4];
29163 : 0 : (*res_op).ops[5] = _o1[5];
29164 : 0 : (*res_op).resimplify (lseq, valueize);
29165 : : }
29166 : 0 : if (type != res_op->type
29167 : 0 : && !useless_type_conversion_p (type, res_op->type))
29168 : : {
29169 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3148;
29170 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29171 : 0 : res_op->resimplify (lseq, valueize);
29172 : : }
29173 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29174 : 0 : return true;
29175 : : }
29176 : 0 : next_after_fail3148:;
29177 : : }
29178 : : }
29179 : : }
29180 : 0 : break;
29181 : : }
29182 : 0 : case TRUNC_MOD_EXPR:
29183 : 0 : {
29184 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29185 : 0 : _q40 = do_valueize (valueize, _q40);
29186 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29187 : 0 : _q41 = do_valueize (valueize, _q41);
29188 : 0 : {
29189 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29190 : 0 : {
29191 : 0 : tree op_type = TREE_TYPE (captures[2]);
29192 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MOD), op_type)
29193 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29194 : 0 : && single_use (captures[2])
29195 : : )
29196 : : {
29197 : 0 : gimple_seq *lseq = seq;
29198 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3149;
29199 : 0 : {
29200 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29201 : 0 : {
29202 : 0 : tree _o1[6], _r1;
29203 : 0 : {
29204 : 0 : tree _o2[1], _r2;
29205 : 0 : _o2[0] = captures[0];
29206 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29207 : 0 : tem_op.resimplify (lseq, valueize);
29208 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29209 : 0 : if (!_r2) goto next_after_fail3149;
29210 : 0 : _o1[0] = _r2;
29211 : : }
29212 : 0 : _o1[1] = captures[3];
29213 : 0 : _o1[2] = captures[4];
29214 : 0 : {
29215 : 0 : tree _o2[1], _r2;
29216 : 0 : _o2[0] = captures[1];
29217 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29218 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29219 : : {
29220 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29221 : 0 : tem_op.resimplify (lseq, valueize);
29222 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29223 : 0 : if (!_r2) goto next_after_fail3149;
29224 : : }
29225 : : else
29226 : : _r2 = _o2[0];
29227 : 0 : _o1[3] = _r2;
29228 : : }
29229 : 0 : _o1[4] = captures[5];
29230 : 0 : _o1[5] = captures[6];
29231 : 0 : (*res_op).set_op (CFN_COND_LEN_MOD, TREE_TYPE (_o1[1]), 6);
29232 : 0 : (*res_op).ops[0] = _o1[0];
29233 : 0 : (*res_op).ops[1] = _o1[1];
29234 : 0 : (*res_op).ops[2] = _o1[2];
29235 : 0 : (*res_op).ops[3] = _o1[3];
29236 : 0 : (*res_op).ops[4] = _o1[4];
29237 : 0 : (*res_op).ops[5] = _o1[5];
29238 : 0 : (*res_op).resimplify (lseq, valueize);
29239 : : }
29240 : 0 : if (type != res_op->type
29241 : 0 : && !useless_type_conversion_p (type, res_op->type))
29242 : : {
29243 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3149;
29244 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29245 : 0 : res_op->resimplify (lseq, valueize);
29246 : : }
29247 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29248 : 0 : return true;
29249 : : }
29250 : 0 : next_after_fail3149:;
29251 : : }
29252 : : }
29253 : : }
29254 : 0 : break;
29255 : : }
29256 : 0 : case RDIV_EXPR:
29257 : 0 : {
29258 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29259 : 0 : _q40 = do_valueize (valueize, _q40);
29260 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29261 : 0 : _q41 = do_valueize (valueize, _q41);
29262 : 0 : {
29263 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29264 : 0 : {
29265 : 0 : tree op_type = TREE_TYPE (captures[2]);
29266 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_RDIV), op_type)
29267 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29268 : 0 : && single_use (captures[2])
29269 : : )
29270 : : {
29271 : 0 : gimple_seq *lseq = seq;
29272 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3150;
29273 : 0 : {
29274 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29275 : 0 : {
29276 : 0 : tree _o1[6], _r1;
29277 : 0 : {
29278 : 0 : tree _o2[1], _r2;
29279 : 0 : _o2[0] = captures[0];
29280 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29281 : 0 : tem_op.resimplify (lseq, valueize);
29282 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29283 : 0 : if (!_r2) goto next_after_fail3150;
29284 : 0 : _o1[0] = _r2;
29285 : : }
29286 : 0 : _o1[1] = captures[3];
29287 : 0 : _o1[2] = captures[4];
29288 : 0 : {
29289 : 0 : tree _o2[1], _r2;
29290 : 0 : _o2[0] = captures[1];
29291 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29292 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29293 : : {
29294 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29295 : 0 : tem_op.resimplify (lseq, valueize);
29296 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29297 : 0 : if (!_r2) goto next_after_fail3150;
29298 : : }
29299 : : else
29300 : : _r2 = _o2[0];
29301 : 0 : _o1[3] = _r2;
29302 : : }
29303 : 0 : _o1[4] = captures[5];
29304 : 0 : _o1[5] = captures[6];
29305 : 0 : (*res_op).set_op (CFN_COND_LEN_RDIV, TREE_TYPE (_o1[1]), 6);
29306 : 0 : (*res_op).ops[0] = _o1[0];
29307 : 0 : (*res_op).ops[1] = _o1[1];
29308 : 0 : (*res_op).ops[2] = _o1[2];
29309 : 0 : (*res_op).ops[3] = _o1[3];
29310 : 0 : (*res_op).ops[4] = _o1[4];
29311 : 0 : (*res_op).ops[5] = _o1[5];
29312 : 0 : (*res_op).resimplify (lseq, valueize);
29313 : : }
29314 : 0 : if (type != res_op->type
29315 : 0 : && !useless_type_conversion_p (type, res_op->type))
29316 : : {
29317 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3150;
29318 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29319 : 0 : res_op->resimplify (lseq, valueize);
29320 : : }
29321 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29322 : 0 : return true;
29323 : : }
29324 : 0 : next_after_fail3150:;
29325 : : }
29326 : : }
29327 : : }
29328 : 0 : break;
29329 : : }
29330 : 0 : case MIN_EXPR:
29331 : 0 : {
29332 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29333 : 0 : _q40 = do_valueize (valueize, _q40);
29334 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29335 : 0 : _q41 = do_valueize (valueize, _q41);
29336 : 0 : if (tree_swap_operands_p (_q40, _q41))
29337 : 0 : std::swap (_q40, _q41);
29338 : 0 : {
29339 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29340 : 0 : {
29341 : 0 : tree op_type = TREE_TYPE (captures[2]);
29342 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MIN), op_type)
29343 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29344 : 0 : && single_use (captures[2])
29345 : : )
29346 : : {
29347 : 0 : gimple_seq *lseq = seq;
29348 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3151;
29349 : 0 : {
29350 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29351 : 0 : {
29352 : 0 : tree _o1[6], _r1;
29353 : 0 : {
29354 : 0 : tree _o2[1], _r2;
29355 : 0 : _o2[0] = captures[0];
29356 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29357 : 0 : tem_op.resimplify (lseq, valueize);
29358 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29359 : 0 : if (!_r2) goto next_after_fail3151;
29360 : 0 : _o1[0] = _r2;
29361 : : }
29362 : 0 : _o1[1] = captures[3];
29363 : 0 : _o1[2] = captures[4];
29364 : 0 : {
29365 : 0 : tree _o2[1], _r2;
29366 : 0 : _o2[0] = captures[1];
29367 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29368 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29369 : : {
29370 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29371 : 0 : tem_op.resimplify (lseq, valueize);
29372 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29373 : 0 : if (!_r2) goto next_after_fail3151;
29374 : : }
29375 : : else
29376 : : _r2 = _o2[0];
29377 : 0 : _o1[3] = _r2;
29378 : : }
29379 : 0 : _o1[4] = captures[5];
29380 : 0 : _o1[5] = captures[6];
29381 : 0 : (*res_op).set_op (CFN_COND_LEN_MIN, TREE_TYPE (_o1[1]), 6);
29382 : 0 : (*res_op).ops[0] = _o1[0];
29383 : 0 : (*res_op).ops[1] = _o1[1];
29384 : 0 : (*res_op).ops[2] = _o1[2];
29385 : 0 : (*res_op).ops[3] = _o1[3];
29386 : 0 : (*res_op).ops[4] = _o1[4];
29387 : 0 : (*res_op).ops[5] = _o1[5];
29388 : 0 : (*res_op).resimplify (lseq, valueize);
29389 : : }
29390 : 0 : if (type != res_op->type
29391 : 0 : && !useless_type_conversion_p (type, res_op->type))
29392 : : {
29393 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3151;
29394 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29395 : 0 : res_op->resimplify (lseq, valueize);
29396 : : }
29397 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29398 : 0 : return true;
29399 : : }
29400 : 0 : next_after_fail3151:;
29401 : : }
29402 : : }
29403 : : }
29404 : 0 : break;
29405 : : }
29406 : 0 : case MAX_EXPR:
29407 : 0 : {
29408 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29409 : 0 : _q40 = do_valueize (valueize, _q40);
29410 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29411 : 0 : _q41 = do_valueize (valueize, _q41);
29412 : 0 : if (tree_swap_operands_p (_q40, _q41))
29413 : 0 : std::swap (_q40, _q41);
29414 : 0 : {
29415 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29416 : 0 : {
29417 : 0 : tree op_type = TREE_TYPE (captures[2]);
29418 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_MAX), op_type)
29419 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29420 : 0 : && single_use (captures[2])
29421 : : )
29422 : : {
29423 : 0 : gimple_seq *lseq = seq;
29424 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3152;
29425 : 0 : {
29426 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29427 : 0 : {
29428 : 0 : tree _o1[6], _r1;
29429 : 0 : {
29430 : 0 : tree _o2[1], _r2;
29431 : 0 : _o2[0] = captures[0];
29432 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29433 : 0 : tem_op.resimplify (lseq, valueize);
29434 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29435 : 0 : if (!_r2) goto next_after_fail3152;
29436 : 0 : _o1[0] = _r2;
29437 : : }
29438 : 0 : _o1[1] = captures[3];
29439 : 0 : _o1[2] = captures[4];
29440 : 0 : {
29441 : 0 : tree _o2[1], _r2;
29442 : 0 : _o2[0] = captures[1];
29443 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29444 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29445 : : {
29446 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29447 : 0 : tem_op.resimplify (lseq, valueize);
29448 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29449 : 0 : if (!_r2) goto next_after_fail3152;
29450 : : }
29451 : : else
29452 : : _r2 = _o2[0];
29453 : 0 : _o1[3] = _r2;
29454 : : }
29455 : 0 : _o1[4] = captures[5];
29456 : 0 : _o1[5] = captures[6];
29457 : 0 : (*res_op).set_op (CFN_COND_LEN_MAX, TREE_TYPE (_o1[1]), 6);
29458 : 0 : (*res_op).ops[0] = _o1[0];
29459 : 0 : (*res_op).ops[1] = _o1[1];
29460 : 0 : (*res_op).ops[2] = _o1[2];
29461 : 0 : (*res_op).ops[3] = _o1[3];
29462 : 0 : (*res_op).ops[4] = _o1[4];
29463 : 0 : (*res_op).ops[5] = _o1[5];
29464 : 0 : (*res_op).resimplify (lseq, valueize);
29465 : : }
29466 : 0 : if (type != res_op->type
29467 : 0 : && !useless_type_conversion_p (type, res_op->type))
29468 : : {
29469 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3152;
29470 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29471 : 0 : res_op->resimplify (lseq, valueize);
29472 : : }
29473 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29474 : 0 : return true;
29475 : : }
29476 : 0 : next_after_fail3152:;
29477 : : }
29478 : : }
29479 : : }
29480 : 0 : break;
29481 : : }
29482 : 0 : case BIT_AND_EXPR:
29483 : 0 : {
29484 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29485 : 0 : _q40 = do_valueize (valueize, _q40);
29486 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29487 : 0 : _q41 = do_valueize (valueize, _q41);
29488 : 0 : if (tree_swap_operands_p (_q40, _q41))
29489 : 0 : std::swap (_q40, _q41);
29490 : 0 : {
29491 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29492 : 0 : {
29493 : 0 : tree op_type = TREE_TYPE (captures[2]);
29494 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_AND), op_type)
29495 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29496 : 0 : && single_use (captures[2])
29497 : : )
29498 : : {
29499 : 0 : gimple_seq *lseq = seq;
29500 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3153;
29501 : 0 : {
29502 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29503 : 0 : {
29504 : 0 : tree _o1[6], _r1;
29505 : 0 : {
29506 : 0 : tree _o2[1], _r2;
29507 : 0 : _o2[0] = captures[0];
29508 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29509 : 0 : tem_op.resimplify (lseq, valueize);
29510 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29511 : 0 : if (!_r2) goto next_after_fail3153;
29512 : 0 : _o1[0] = _r2;
29513 : : }
29514 : 0 : _o1[1] = captures[3];
29515 : 0 : _o1[2] = captures[4];
29516 : 0 : {
29517 : 0 : tree _o2[1], _r2;
29518 : 0 : _o2[0] = captures[1];
29519 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29520 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29521 : : {
29522 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29523 : 0 : tem_op.resimplify (lseq, valueize);
29524 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29525 : 0 : if (!_r2) goto next_after_fail3153;
29526 : : }
29527 : : else
29528 : : _r2 = _o2[0];
29529 : 0 : _o1[3] = _r2;
29530 : : }
29531 : 0 : _o1[4] = captures[5];
29532 : 0 : _o1[5] = captures[6];
29533 : 0 : (*res_op).set_op (CFN_COND_LEN_AND, TREE_TYPE (_o1[1]), 6);
29534 : 0 : (*res_op).ops[0] = _o1[0];
29535 : 0 : (*res_op).ops[1] = _o1[1];
29536 : 0 : (*res_op).ops[2] = _o1[2];
29537 : 0 : (*res_op).ops[3] = _o1[3];
29538 : 0 : (*res_op).ops[4] = _o1[4];
29539 : 0 : (*res_op).ops[5] = _o1[5];
29540 : 0 : (*res_op).resimplify (lseq, valueize);
29541 : : }
29542 : 0 : if (type != res_op->type
29543 : 0 : && !useless_type_conversion_p (type, res_op->type))
29544 : : {
29545 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3153;
29546 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29547 : 0 : res_op->resimplify (lseq, valueize);
29548 : : }
29549 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29550 : 0 : return true;
29551 : : }
29552 : 0 : next_after_fail3153:;
29553 : : }
29554 : : }
29555 : : }
29556 : 0 : break;
29557 : : }
29558 : 0 : case BIT_IOR_EXPR:
29559 : 0 : {
29560 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29561 : 0 : _q40 = do_valueize (valueize, _q40);
29562 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29563 : 0 : _q41 = do_valueize (valueize, _q41);
29564 : 0 : if (tree_swap_operands_p (_q40, _q41))
29565 : 0 : std::swap (_q40, _q41);
29566 : 0 : {
29567 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29568 : 0 : {
29569 : 0 : tree op_type = TREE_TYPE (captures[2]);
29570 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_IOR), op_type)
29571 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29572 : 0 : && single_use (captures[2])
29573 : : )
29574 : : {
29575 : 0 : gimple_seq *lseq = seq;
29576 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3154;
29577 : 0 : {
29578 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29579 : 0 : {
29580 : 0 : tree _o1[6], _r1;
29581 : 0 : {
29582 : 0 : tree _o2[1], _r2;
29583 : 0 : _o2[0] = captures[0];
29584 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29585 : 0 : tem_op.resimplify (lseq, valueize);
29586 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29587 : 0 : if (!_r2) goto next_after_fail3154;
29588 : 0 : _o1[0] = _r2;
29589 : : }
29590 : 0 : _o1[1] = captures[3];
29591 : 0 : _o1[2] = captures[4];
29592 : 0 : {
29593 : 0 : tree _o2[1], _r2;
29594 : 0 : _o2[0] = captures[1];
29595 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29596 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29597 : : {
29598 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29599 : 0 : tem_op.resimplify (lseq, valueize);
29600 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29601 : 0 : if (!_r2) goto next_after_fail3154;
29602 : : }
29603 : : else
29604 : : _r2 = _o2[0];
29605 : 0 : _o1[3] = _r2;
29606 : : }
29607 : 0 : _o1[4] = captures[5];
29608 : 0 : _o1[5] = captures[6];
29609 : 0 : (*res_op).set_op (CFN_COND_LEN_IOR, TREE_TYPE (_o1[1]), 6);
29610 : 0 : (*res_op).ops[0] = _o1[0];
29611 : 0 : (*res_op).ops[1] = _o1[1];
29612 : 0 : (*res_op).ops[2] = _o1[2];
29613 : 0 : (*res_op).ops[3] = _o1[3];
29614 : 0 : (*res_op).ops[4] = _o1[4];
29615 : 0 : (*res_op).ops[5] = _o1[5];
29616 : 0 : (*res_op).resimplify (lseq, valueize);
29617 : : }
29618 : 0 : if (type != res_op->type
29619 : 0 : && !useless_type_conversion_p (type, res_op->type))
29620 : : {
29621 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3154;
29622 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29623 : 0 : res_op->resimplify (lseq, valueize);
29624 : : }
29625 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29626 : 0 : return true;
29627 : : }
29628 : 0 : next_after_fail3154:;
29629 : : }
29630 : : }
29631 : : }
29632 : 0 : break;
29633 : : }
29634 : 0 : case BIT_XOR_EXPR:
29635 : 0 : {
29636 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29637 : 0 : _q40 = do_valueize (valueize, _q40);
29638 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29639 : 0 : _q41 = do_valueize (valueize, _q41);
29640 : 0 : if (tree_swap_operands_p (_q40, _q41))
29641 : 0 : std::swap (_q40, _q41);
29642 : 0 : {
29643 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29644 : 0 : {
29645 : 0 : tree op_type = TREE_TYPE (captures[2]);
29646 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_XOR), op_type)
29647 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29648 : 0 : && single_use (captures[2])
29649 : : )
29650 : : {
29651 : 0 : gimple_seq *lseq = seq;
29652 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3155;
29653 : 0 : {
29654 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29655 : 0 : {
29656 : 0 : tree _o1[6], _r1;
29657 : 0 : {
29658 : 0 : tree _o2[1], _r2;
29659 : 0 : _o2[0] = captures[0];
29660 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29661 : 0 : tem_op.resimplify (lseq, valueize);
29662 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29663 : 0 : if (!_r2) goto next_after_fail3155;
29664 : 0 : _o1[0] = _r2;
29665 : : }
29666 : 0 : _o1[1] = captures[3];
29667 : 0 : _o1[2] = captures[4];
29668 : 0 : {
29669 : 0 : tree _o2[1], _r2;
29670 : 0 : _o2[0] = captures[1];
29671 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29672 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29673 : : {
29674 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29675 : 0 : tem_op.resimplify (lseq, valueize);
29676 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29677 : 0 : if (!_r2) goto next_after_fail3155;
29678 : : }
29679 : : else
29680 : : _r2 = _o2[0];
29681 : 0 : _o1[3] = _r2;
29682 : : }
29683 : 0 : _o1[4] = captures[5];
29684 : 0 : _o1[5] = captures[6];
29685 : 0 : (*res_op).set_op (CFN_COND_LEN_XOR, TREE_TYPE (_o1[1]), 6);
29686 : 0 : (*res_op).ops[0] = _o1[0];
29687 : 0 : (*res_op).ops[1] = _o1[1];
29688 : 0 : (*res_op).ops[2] = _o1[2];
29689 : 0 : (*res_op).ops[3] = _o1[3];
29690 : 0 : (*res_op).ops[4] = _o1[4];
29691 : 0 : (*res_op).ops[5] = _o1[5];
29692 : 0 : (*res_op).resimplify (lseq, valueize);
29693 : : }
29694 : 0 : if (type != res_op->type
29695 : 0 : && !useless_type_conversion_p (type, res_op->type))
29696 : : {
29697 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3155;
29698 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29699 : 0 : res_op->resimplify (lseq, valueize);
29700 : : }
29701 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29702 : 0 : return true;
29703 : : }
29704 : 0 : next_after_fail3155:;
29705 : : }
29706 : : }
29707 : : }
29708 : 0 : break;
29709 : : }
29710 : 0 : case LSHIFT_EXPR:
29711 : 0 : {
29712 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29713 : 0 : _q40 = do_valueize (valueize, _q40);
29714 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29715 : 0 : _q41 = do_valueize (valueize, _q41);
29716 : 0 : {
29717 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29718 : 0 : {
29719 : 0 : tree op_type = TREE_TYPE (captures[2]);
29720 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHL), op_type)
29721 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29722 : 0 : && single_use (captures[2])
29723 : : )
29724 : : {
29725 : 0 : gimple_seq *lseq = seq;
29726 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3156;
29727 : 0 : {
29728 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29729 : 0 : {
29730 : 0 : tree _o1[6], _r1;
29731 : 0 : {
29732 : 0 : tree _o2[1], _r2;
29733 : 0 : _o2[0] = captures[0];
29734 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29735 : 0 : tem_op.resimplify (lseq, valueize);
29736 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29737 : 0 : if (!_r2) goto next_after_fail3156;
29738 : 0 : _o1[0] = _r2;
29739 : : }
29740 : 0 : _o1[1] = captures[3];
29741 : 0 : _o1[2] = captures[4];
29742 : 0 : {
29743 : 0 : tree _o2[1], _r2;
29744 : 0 : _o2[0] = captures[1];
29745 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29746 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29747 : : {
29748 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29749 : 0 : tem_op.resimplify (lseq, valueize);
29750 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29751 : 0 : if (!_r2) goto next_after_fail3156;
29752 : : }
29753 : : else
29754 : : _r2 = _o2[0];
29755 : 0 : _o1[3] = _r2;
29756 : : }
29757 : 0 : _o1[4] = captures[5];
29758 : 0 : _o1[5] = captures[6];
29759 : 0 : (*res_op).set_op (CFN_COND_LEN_SHL, TREE_TYPE (_o1[1]), 6);
29760 : 0 : (*res_op).ops[0] = _o1[0];
29761 : 0 : (*res_op).ops[1] = _o1[1];
29762 : 0 : (*res_op).ops[2] = _o1[2];
29763 : 0 : (*res_op).ops[3] = _o1[3];
29764 : 0 : (*res_op).ops[4] = _o1[4];
29765 : 0 : (*res_op).ops[5] = _o1[5];
29766 : 0 : (*res_op).resimplify (lseq, valueize);
29767 : : }
29768 : 0 : if (type != res_op->type
29769 : 0 : && !useless_type_conversion_p (type, res_op->type))
29770 : : {
29771 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3156;
29772 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29773 : 0 : res_op->resimplify (lseq, valueize);
29774 : : }
29775 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29776 : 0 : return true;
29777 : : }
29778 : 0 : next_after_fail3156:;
29779 : : }
29780 : : }
29781 : : }
29782 : 0 : break;
29783 : : }
29784 : 0 : case RSHIFT_EXPR:
29785 : 0 : {
29786 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
29787 : 0 : _q40 = do_valueize (valueize, _q40);
29788 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
29789 : 0 : _q41 = do_valueize (valueize, _q41);
29790 : 0 : {
29791 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29792 : 0 : {
29793 : 0 : tree op_type = TREE_TYPE (captures[2]);
29794 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_SHR), op_type)
29795 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29796 : 0 : && single_use (captures[2])
29797 : : )
29798 : : {
29799 : 0 : gimple_seq *lseq = seq;
29800 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3157;
29801 : 0 : {
29802 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29803 : 0 : {
29804 : 0 : tree _o1[6], _r1;
29805 : 0 : {
29806 : 0 : tree _o2[1], _r2;
29807 : 0 : _o2[0] = captures[0];
29808 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29809 : 0 : tem_op.resimplify (lseq, valueize);
29810 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29811 : 0 : if (!_r2) goto next_after_fail3157;
29812 : 0 : _o1[0] = _r2;
29813 : : }
29814 : 0 : _o1[1] = captures[3];
29815 : 0 : _o1[2] = captures[4];
29816 : 0 : {
29817 : 0 : tree _o2[1], _r2;
29818 : 0 : _o2[0] = captures[1];
29819 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29820 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29821 : : {
29822 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29823 : 0 : tem_op.resimplify (lseq, valueize);
29824 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29825 : 0 : if (!_r2) goto next_after_fail3157;
29826 : : }
29827 : : else
29828 : : _r2 = _o2[0];
29829 : 0 : _o1[3] = _r2;
29830 : : }
29831 : 0 : _o1[4] = captures[5];
29832 : 0 : _o1[5] = captures[6];
29833 : 0 : (*res_op).set_op (CFN_COND_LEN_SHR, TREE_TYPE (_o1[1]), 6);
29834 : 0 : (*res_op).ops[0] = _o1[0];
29835 : 0 : (*res_op).ops[1] = _o1[1];
29836 : 0 : (*res_op).ops[2] = _o1[2];
29837 : 0 : (*res_op).ops[3] = _o1[3];
29838 : 0 : (*res_op).ops[4] = _o1[4];
29839 : 0 : (*res_op).ops[5] = _o1[5];
29840 : 0 : (*res_op).resimplify (lseq, valueize);
29841 : : }
29842 : 0 : if (type != res_op->type
29843 : 0 : && !useless_type_conversion_p (type, res_op->type))
29844 : : {
29845 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3157;
29846 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29847 : 0 : res_op->resimplify (lseq, valueize);
29848 : : }
29849 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29850 : 0 : return true;
29851 : : }
29852 : 0 : next_after_fail3157:;
29853 : : }
29854 : : }
29855 : : }
29856 : 0 : break;
29857 : : }
29858 : : default:;
29859 : : }
29860 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
29861 : 0 : switch (gimple_call_combined_fn (_c1))
29862 : : {
29863 : 0 : case CFN_FMAX:
29864 : 0 : if (gimple_call_num_args (_c1) == 2)
29865 : : {
29866 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
29867 : 0 : _q40 = do_valueize (valueize, _q40);
29868 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
29869 : 0 : _q41 = do_valueize (valueize, _q41);
29870 : 0 : {
29871 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29872 : 0 : {
29873 : 0 : tree op_type = TREE_TYPE (captures[2]);
29874 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMAX), op_type)
29875 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29876 : 0 : && single_use (captures[2])
29877 : : )
29878 : : {
29879 : 0 : gimple_seq *lseq = seq;
29880 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3158;
29881 : 0 : {
29882 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29883 : 0 : {
29884 : 0 : tree _o1[6], _r1;
29885 : 0 : {
29886 : 0 : tree _o2[1], _r2;
29887 : 0 : _o2[0] = captures[0];
29888 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29889 : 0 : tem_op.resimplify (lseq, valueize);
29890 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29891 : 0 : if (!_r2) goto next_after_fail3158;
29892 : 0 : _o1[0] = _r2;
29893 : : }
29894 : 0 : _o1[1] = captures[3];
29895 : 0 : _o1[2] = captures[4];
29896 : 0 : {
29897 : 0 : tree _o2[1], _r2;
29898 : 0 : _o2[0] = captures[1];
29899 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29900 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29901 : : {
29902 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29903 : 0 : tem_op.resimplify (lseq, valueize);
29904 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29905 : 0 : if (!_r2) goto next_after_fail3158;
29906 : : }
29907 : : else
29908 : : _r2 = _o2[0];
29909 : 0 : _o1[3] = _r2;
29910 : : }
29911 : 0 : _o1[4] = captures[5];
29912 : 0 : _o1[5] = captures[6];
29913 : 0 : (*res_op).set_op (CFN_COND_LEN_FMAX, TREE_TYPE (_o1[1]), 6);
29914 : 0 : (*res_op).ops[0] = _o1[0];
29915 : 0 : (*res_op).ops[1] = _o1[1];
29916 : 0 : (*res_op).ops[2] = _o1[2];
29917 : 0 : (*res_op).ops[3] = _o1[3];
29918 : 0 : (*res_op).ops[4] = _o1[4];
29919 : 0 : (*res_op).ops[5] = _o1[5];
29920 : 0 : (*res_op).resimplify (lseq, valueize);
29921 : : }
29922 : 0 : if (type != res_op->type
29923 : 0 : && !useless_type_conversion_p (type, res_op->type))
29924 : : {
29925 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3158;
29926 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29927 : 0 : res_op->resimplify (lseq, valueize);
29928 : : }
29929 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
29930 : 0 : return true;
29931 : : }
29932 : 0 : next_after_fail3158:;
29933 : : }
29934 : : }
29935 : : }
29936 : : }
29937 : : break;
29938 : 0 : case CFN_FMIN:
29939 : 0 : if (gimple_call_num_args (_c1) == 2)
29940 : : {
29941 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
29942 : 0 : _q40 = do_valueize (valueize, _q40);
29943 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
29944 : 0 : _q41 = do_valueize (valueize, _q41);
29945 : 0 : {
29946 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
29947 : 0 : {
29948 : 0 : tree op_type = TREE_TYPE (captures[2]);
29949 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_FMIN), op_type)
29950 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29951 : 0 : && single_use (captures[2])
29952 : : )
29953 : : {
29954 : 0 : gimple_seq *lseq = seq;
29955 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3159;
29956 : 0 : {
29957 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29958 : 0 : {
29959 : 0 : tree _o1[6], _r1;
29960 : 0 : {
29961 : 0 : tree _o2[1], _r2;
29962 : 0 : _o2[0] = captures[0];
29963 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
29964 : 0 : tem_op.resimplify (lseq, valueize);
29965 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29966 : 0 : if (!_r2) goto next_after_fail3159;
29967 : 0 : _o1[0] = _r2;
29968 : : }
29969 : 0 : _o1[1] = captures[3];
29970 : 0 : _o1[2] = captures[4];
29971 : 0 : {
29972 : 0 : tree _o2[1], _r2;
29973 : 0 : _o2[0] = captures[1];
29974 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29975 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29976 : : {
29977 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29978 : 0 : tem_op.resimplify (lseq, valueize);
29979 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29980 : 0 : if (!_r2) goto next_after_fail3159;
29981 : : }
29982 : : else
29983 : : _r2 = _o2[0];
29984 : 0 : _o1[3] = _r2;
29985 : : }
29986 : 0 : _o1[4] = captures[5];
29987 : 0 : _o1[5] = captures[6];
29988 : 0 : (*res_op).set_op (CFN_COND_LEN_FMIN, TREE_TYPE (_o1[1]), 6);
29989 : 0 : (*res_op).ops[0] = _o1[0];
29990 : 0 : (*res_op).ops[1] = _o1[1];
29991 : 0 : (*res_op).ops[2] = _o1[2];
29992 : 0 : (*res_op).ops[3] = _o1[3];
29993 : 0 : (*res_op).ops[4] = _o1[4];
29994 : 0 : (*res_op).ops[5] = _o1[5];
29995 : 0 : (*res_op).resimplify (lseq, valueize);
29996 : : }
29997 : 0 : if (type != res_op->type
29998 : 0 : && !useless_type_conversion_p (type, res_op->type))
29999 : : {
30000 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3159;
30001 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30002 : 0 : res_op->resimplify (lseq, valueize);
30003 : : }
30004 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
30005 : 0 : return true;
30006 : : }
30007 : 0 : next_after_fail3159:;
30008 : : }
30009 : : }
30010 : : }
30011 : : }
30012 : : break;
30013 : 0 : case CFN_COPYSIGN:
30014 : 0 : if (gimple_call_num_args (_c1) == 2)
30015 : : {
30016 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
30017 : 0 : _q40 = do_valueize (valueize, _q40);
30018 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
30019 : 0 : _q41 = do_valueize (valueize, _q41);
30020 : 0 : {
30021 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _p3, _p4 };
30022 : 0 : {
30023 : 0 : tree op_type = TREE_TYPE (captures[2]);
30024 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_LEN_COPYSIGN), op_type)
30025 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30026 : 0 : && single_use (captures[2])
30027 : : )
30028 : : {
30029 : 0 : gimple_seq *lseq = seq;
30030 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail3160;
30031 : 0 : {
30032 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30033 : 0 : {
30034 : 0 : tree _o1[6], _r1;
30035 : 0 : {
30036 : 0 : tree _o2[1], _r2;
30037 : 0 : _o2[0] = captures[0];
30038 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
30039 : 0 : tem_op.resimplify (lseq, valueize);
30040 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30041 : 0 : if (!_r2) goto next_after_fail3160;
30042 : 0 : _o1[0] = _r2;
30043 : : }
30044 : 0 : _o1[1] = captures[3];
30045 : 0 : _o1[2] = captures[4];
30046 : 0 : {
30047 : 0 : tree _o2[1], _r2;
30048 : 0 : _o2[0] = captures[1];
30049 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30050 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30051 : : {
30052 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30053 : 0 : tem_op.resimplify (lseq, valueize);
30054 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30055 : 0 : if (!_r2) goto next_after_fail3160;
30056 : : }
30057 : : else
30058 : : _r2 = _o2[0];
30059 : 0 : _o1[3] = _r2;
30060 : : }
30061 : 0 : _o1[4] = captures[5];
30062 : 0 : _o1[5] = captures[6];
30063 : 0 : (*res_op).set_op (CFN_COND_LEN_COPYSIGN, TREE_TYPE (_o1[1]), 6);
30064 : 0 : (*res_op).ops[0] = _o1[0];
30065 : 0 : (*res_op).ops[1] = _o1[1];
30066 : 0 : (*res_op).ops[2] = _o1[2];
30067 : 0 : (*res_op).ops[3] = _o1[3];
30068 : 0 : (*res_op).ops[4] = _o1[4];
30069 : 0 : (*res_op).ops[5] = _o1[5];
30070 : 0 : (*res_op).resimplify (lseq, valueize);
30071 : : }
30072 : 0 : if (type != res_op->type
30073 : 0 : && !useless_type_conversion_p (type, res_op->type))
30074 : : {
30075 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail3160;
30076 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30077 : 0 : res_op->resimplify (lseq, valueize);
30078 : : }
30079 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1314, __FILE__, __LINE__, true);
30080 : 0 : return true;
30081 : : }
30082 : 0 : next_after_fail3160:;
30083 : : }
30084 : : }
30085 : : }
30086 : : }
30087 : : break;
30088 : : default:;
30089 : : }
30090 : : }
30091 : : break;
30092 : 0 : default:;
30093 : : }
30094 : 0 : switch (TREE_CODE (_p1))
30095 : : {
30096 : 0 : case SSA_NAME:
30097 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
30098 : : {
30099 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
30100 : 0 : switch (gimple_assign_rhs_code (_a1))
30101 : : {
30102 : 0 : case VIEW_CONVERT_EXPR:
30103 : 0 : {
30104 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
30105 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
30106 : 0 : || is_gimple_min_invariant (_q30)))
30107 : : {
30108 : 0 : _q30 = do_valueize (valueize, _q30);
30109 : 0 : switch (TREE_CODE (_q30))
30110 : : {
30111 : 0 : case SSA_NAME:
30112 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
30113 : : {
30114 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
30115 : 0 : switch (gimple_call_combined_fn (_c2))
30116 : : {
30117 : 0 : case CFN_FMA:
30118 : 0 : if (gimple_call_num_args (_c2) == 3)
30119 : : {
30120 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
30121 : 0 : _q40 = do_valueize (valueize, _q40);
30122 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
30123 : 0 : _q41 = do_valueize (valueize, _q41);
30124 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
30125 : 0 : _q42 = do_valueize (valueize, _q42);
30126 : 0 : if (tree_swap_operands_p (_q40, _q41))
30127 : 0 : std::swap (_q40, _q41);
30128 : 0 : {
30129 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2, _p3, _p4 };
30130 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_LEN_FMA))
30131 : 0 : return true;
30132 : : }
30133 : : }
30134 : : break;
30135 : 0 : case CFN_FMS:
30136 : 0 : if (gimple_call_num_args (_c2) == 3)
30137 : : {
30138 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
30139 : 0 : _q40 = do_valueize (valueize, _q40);
30140 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
30141 : 0 : _q41 = do_valueize (valueize, _q41);
30142 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
30143 : 0 : _q42 = do_valueize (valueize, _q42);
30144 : 0 : if (tree_swap_operands_p (_q40, _q41))
30145 : 0 : std::swap (_q40, _q41);
30146 : 0 : {
30147 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2, _p3, _p4 };
30148 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_LEN_FMS))
30149 : 0 : return true;
30150 : : }
30151 : : }
30152 : : break;
30153 : 0 : case CFN_FNMA:
30154 : 0 : if (gimple_call_num_args (_c2) == 3)
30155 : : {
30156 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
30157 : 0 : _q40 = do_valueize (valueize, _q40);
30158 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
30159 : 0 : _q41 = do_valueize (valueize, _q41);
30160 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
30161 : 0 : _q42 = do_valueize (valueize, _q42);
30162 : 0 : if (tree_swap_operands_p (_q40, _q41))
30163 : 0 : std::swap (_q40, _q41);
30164 : 0 : {
30165 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2, _p3, _p4 };
30166 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_LEN_FNMA))
30167 : 0 : return true;
30168 : : }
30169 : : }
30170 : : break;
30171 : 0 : case CFN_FNMS:
30172 : 0 : if (gimple_call_num_args (_c2) == 3)
30173 : : {
30174 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
30175 : 0 : _q40 = do_valueize (valueize, _q40);
30176 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
30177 : 0 : _q41 = do_valueize (valueize, _q41);
30178 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
30179 : 0 : _q42 = do_valueize (valueize, _q42);
30180 : 0 : if (tree_swap_operands_p (_q40, _q41))
30181 : 0 : std::swap (_q40, _q41);
30182 : 0 : {
30183 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2, _p3, _p4 };
30184 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_LEN_FNMS))
30185 : 0 : return true;
30186 : : }
30187 : : }
30188 : : break;
30189 : : default:;
30190 : : }
30191 : : }
30192 : : break;
30193 : : default:;
30194 : : }
30195 : : }
30196 : : break;
30197 : : }
30198 : : default:;
30199 : : }
30200 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
30201 : 0 : switch (gimple_call_combined_fn (_c1))
30202 : : {
30203 : 0 : case CFN_FMA:
30204 : 0 : if (gimple_call_num_args (_c1) == 3)
30205 : : {
30206 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
30207 : 0 : _q30 = do_valueize (valueize, _q30);
30208 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
30209 : 0 : _q31 = do_valueize (valueize, _q31);
30210 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
30211 : 0 : _q32 = do_valueize (valueize, _q32);
30212 : 0 : if (tree_swap_operands_p (_q30, _q31))
30213 : 0 : std::swap (_q30, _q31);
30214 : 0 : {
30215 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2, _p3, _p4 };
30216 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_LEN_FMA))
30217 : 0 : return true;
30218 : : }
30219 : : }
30220 : : break;
30221 : 0 : case CFN_FMS:
30222 : 0 : if (gimple_call_num_args (_c1) == 3)
30223 : : {
30224 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
30225 : 0 : _q30 = do_valueize (valueize, _q30);
30226 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
30227 : 0 : _q31 = do_valueize (valueize, _q31);
30228 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
30229 : 0 : _q32 = do_valueize (valueize, _q32);
30230 : 0 : if (tree_swap_operands_p (_q30, _q31))
30231 : 0 : std::swap (_q30, _q31);
30232 : 0 : {
30233 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2, _p3, _p4 };
30234 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_LEN_FMS))
30235 : 0 : return true;
30236 : : }
30237 : : }
30238 : : break;
30239 : 0 : case CFN_FNMA:
30240 : 0 : if (gimple_call_num_args (_c1) == 3)
30241 : : {
30242 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
30243 : 0 : _q30 = do_valueize (valueize, _q30);
30244 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
30245 : 0 : _q31 = do_valueize (valueize, _q31);
30246 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
30247 : 0 : _q32 = do_valueize (valueize, _q32);
30248 : 0 : if (tree_swap_operands_p (_q30, _q31))
30249 : 0 : std::swap (_q30, _q31);
30250 : 0 : {
30251 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2, _p3, _p4 };
30252 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_LEN_FNMA))
30253 : 0 : return true;
30254 : : }
30255 : : }
30256 : : break;
30257 : 0 : case CFN_FNMS:
30258 : 0 : if (gimple_call_num_args (_c1) == 3)
30259 : : {
30260 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
30261 : 0 : _q30 = do_valueize (valueize, _q30);
30262 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
30263 : 0 : _q31 = do_valueize (valueize, _q31);
30264 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
30265 : 0 : _q32 = do_valueize (valueize, _q32);
30266 : 0 : if (tree_swap_operands_p (_q30, _q31))
30267 : 0 : std::swap (_q30, _q31);
30268 : 0 : {
30269 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2, _p3, _p4 };
30270 : 0 : if (gimple_simplify_713 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_LEN_FNMS))
30271 : 0 : return true;
30272 : : }
30273 : : }
30274 : : break;
30275 : : default:;
30276 : : }
30277 : : }
30278 : : break;
30279 : : default:;
30280 : : }
30281 : : return false;
30282 : : }
30283 : : #pragma GCC diagnostic pop
|