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 : 1669079037 : gimple_nop_convert (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
11 : : {
12 : 1669079037 : const tree type = TREE_TYPE (t);
13 : 1669079037 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 : 1669079037 : switch (TREE_CODE (t))
15 : : {
16 : 1128440667 : case SSA_NAME:
17 : 1128440667 : if (gimple *_d1 = get_def (valueize, t))
18 : : {
19 : 448746358 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20 : 482638297 : switch (gimple_assign_rhs_code (_a1))
21 : : {
22 : 42040700 : CASE_CONVERT:
23 : 42040700 : {
24 : 42040700 : tree _p0 = gimple_assign_rhs1 (_a1);
25 : 42040700 : _p0 = do_valueize (valueize, _p0);
26 : 42040700 : {
27 : 42040700 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
28 : 42040700 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
29 : : )
30 : : {
31 : 21873873 : {
32 : 21873873 : res_ops[0] = captures[0];
33 : 21873873 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 0, __FILE__, __LINE__, false);
34 : 21873873 : return true;
35 : : }
36 : : }
37 : : }
38 : : break;
39 : : }
40 : 1588625 : case VIEW_CONVERT_EXPR:
41 : 1588625 : {
42 : 1588625 : tree _p0 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
43 : 1588625 : if ((TREE_CODE (_p0) == SSA_NAME
44 : 1588625 : || is_gimple_min_invariant (_p0)))
45 : : {
46 : 1587081 : _p0 = do_valueize (valueize, _p0);
47 : 1587081 : {
48 : 1587081 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
49 : 272449 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[0]))
50 : 1588771 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
51 : : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[0])))
52 : 1764057 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[0])))
53 : : )
54 : : {
55 : 175286 : {
56 : 175286 : res_ops[0] = captures[0];
57 : 175286 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1, __FILE__, __LINE__, false);
58 : 175286 : return true;
59 : : }
60 : : }
61 : : }
62 : : }
63 : : break;
64 : : }
65 : : default:;
66 : : }
67 : : }
68 : : break;
69 : : default:;
70 : : }
71 : : return false;
72 : : }
73 : :
74 : : bool
75 : 399016545 : gimple_with_known_nonzero_bits (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
76 : : {
77 : 399016545 : const tree type = TREE_TYPE (t);
78 : 399016545 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
79 : 399016545 : if (gimple_with_known_nonzero_bits_1 (t, valueize))
80 : : {
81 : 326141134 : {
82 : 326141134 : tree captures[1] ATTRIBUTE_UNUSED = { t };
83 : 326141134 : {
84 : 326141134 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
85 : 326141134 : return true;
86 : : }
87 : : }
88 : : }
89 : : return false;
90 : : }
91 : :
92 : : bool
93 : 29105961 : gimple_unsigned_integer_sat_add (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
94 : : {
95 : 29105961 : const tree type = TREE_TYPE (t);
96 : 29105961 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
97 : 29105961 : switch (TREE_CODE (t))
98 : : {
99 : 24623604 : case SSA_NAME:
100 : 24623604 : if (gimple *_d1 = get_def (valueize, t))
101 : : {
102 : 24623604 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
103 : 23504645 : switch (gimple_assign_rhs_code (_a1))
104 : : {
105 : 564256 : case BIT_IOR_EXPR:
106 : 564256 : {
107 : 564256 : tree _p0 = gimple_assign_rhs1 (_a1);
108 : 564256 : _p0 = do_valueize (valueize, _p0);
109 : 564256 : tree _p1 = gimple_assign_rhs2 (_a1);
110 : 564256 : _p1 = do_valueize (valueize, _p1);
111 : 564256 : if (tree_swap_operands_p (_p0, _p1))
112 : 15209 : std::swap (_p0, _p1);
113 : 564256 : switch (TREE_CODE (_p0))
114 : : {
115 : 564256 : case SSA_NAME:
116 : 564256 : if (gimple *_d2 = get_def (valueize, _p0))
117 : : {
118 : 564256 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
119 : 596949 : switch (gimple_assign_rhs_code (_a2))
120 : : {
121 : 20543 : case PLUS_EXPR:
122 : 20543 : {
123 : 20543 : tree _q20 = gimple_assign_rhs1 (_a2);
124 : 20543 : _q20 = do_valueize (valueize, _q20);
125 : 20543 : tree _q21 = gimple_assign_rhs2 (_a2);
126 : 20543 : _q21 = do_valueize (valueize, _q21);
127 : 20543 : if (tree_swap_operands_p (_q20, _q21))
128 : 3 : std::swap (_q20, _q21);
129 : 20543 : {
130 : 20543 : tree _p1_pops[2];
131 : 20543 : if (gimple_usadd_overflow_mask (_p1, _p1_pops, valueize))
132 : : {
133 : 26 : tree _q50 = _p1_pops[0];
134 : 26 : tree _q51 = _p1_pops[1];
135 : 26 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
136 : : {
137 : 24 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
138 : : {
139 : 24 : {
140 : 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
141 : 24 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
142 : : )
143 : : {
144 : 24 : if (types_match (type, captures[0], captures[1])
145 : : )
146 : : {
147 : 24 : {
148 : 24 : res_ops[0] = captures[0];
149 : 24 : res_ops[1] = captures[1];
150 : 24 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 44, __FILE__, __LINE__, false);
151 : 24 : return true;
152 : : }
153 : : }
154 : : }
155 : : }
156 : : }
157 : : }
158 : 2 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
159 : : {
160 : 2 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
161 : : {
162 : 2 : {
163 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
164 : 2 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
165 : : )
166 : : {
167 : 2 : if (types_match (type, captures[0], captures[1])
168 : : )
169 : : {
170 : 2 : {
171 : 2 : res_ops[0] = captures[0];
172 : 2 : res_ops[1] = captures[1];
173 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 44, __FILE__, __LINE__, false);
174 : 2 : return true;
175 : : }
176 : : }
177 : : }
178 : : }
179 : : }
180 : : }
181 : : }
182 : : }
183 : 20517 : break;
184 : : }
185 : 1194 : case REALPART_EXPR:
186 : 1194 : {
187 : 1194 : tree _q20 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
188 : 1194 : if ((TREE_CODE (_q20) == SSA_NAME
189 : 1194 : || is_gimple_min_invariant (_q20)))
190 : : {
191 : 696 : _q20 = do_valueize (valueize, _q20);
192 : 696 : switch (TREE_CODE (_q20))
193 : : {
194 : 696 : case SSA_NAME:
195 : 696 : if (gimple *_d3 = get_def (valueize, _q20))
196 : : {
197 : 696 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
198 : 647 : switch (gimple_call_combined_fn (_c3))
199 : : {
200 : 6 : case CFN_ADD_OVERFLOW:
201 : 6 : if (gimple_call_num_args (_c3) == 2)
202 : : {
203 : 6 : tree _q30 = gimple_call_arg (_c3, 0);
204 : 6 : _q30 = do_valueize (valueize, _q30);
205 : 6 : tree _q31 = gimple_call_arg (_c3, 1);
206 : 6 : _q31 = do_valueize (valueize, _q31);
207 : 6 : if (tree_swap_operands_p (_q30, _q31))
208 : 0 : std::swap (_q30, _q31);
209 : 6 : switch (TREE_CODE (_p1))
210 : : {
211 : 6 : case SSA_NAME:
212 : 6 : if (gimple *_d4 = get_def (valueize, _p1))
213 : : {
214 : 6 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
215 : 6 : switch (gimple_assign_rhs_code (_a4))
216 : : {
217 : 6 : case NEGATE_EXPR:
218 : 6 : {
219 : 6 : tree _q60 = gimple_assign_rhs1 (_a4);
220 : 6 : _q60 = do_valueize (valueize, _q60);
221 : 6 : switch (TREE_CODE (_q60))
222 : : {
223 : 6 : case SSA_NAME:
224 : 6 : if (gimple *_d5 = get_def (valueize, _q60))
225 : : {
226 : 6 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
227 : 6 : switch (gimple_assign_rhs_code (_a5))
228 : : {
229 : 0 : case IMAGPART_EXPR:
230 : 0 : {
231 : 0 : tree _q70 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
232 : 0 : if ((TREE_CODE (_q70) == SSA_NAME
233 : 0 : || is_gimple_min_invariant (_q70)))
234 : : {
235 : 0 : _q70 = do_valueize (valueize, _q70);
236 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
237 : : {
238 : 0 : {
239 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
240 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
241 : : )
242 : : {
243 : 0 : if (types_match (type, captures[0], captures[1])
244 : : )
245 : : {
246 : 0 : {
247 : 0 : res_ops[0] = captures[0];
248 : 0 : res_ops[1] = captures[1];
249 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 45, __FILE__, __LINE__, false);
250 : 0 : return true;
251 : : }
252 : : }
253 : : }
254 : : }
255 : : }
256 : : }
257 : : break;
258 : : }
259 : 6 : CASE_CONVERT:
260 : 6 : {
261 : 6 : tree _q70 = gimple_assign_rhs1 (_a5);
262 : 6 : _q70 = do_valueize (valueize, _q70);
263 : 6 : switch (TREE_CODE (_q70))
264 : : {
265 : 6 : case SSA_NAME:
266 : 6 : if (gimple *_d6 = get_def (valueize, _q70))
267 : : {
268 : 6 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
269 : 6 : switch (gimple_assign_rhs_code (_a6))
270 : : {
271 : 6 : case NE_EXPR:
272 : 6 : {
273 : 6 : tree _q80 = gimple_assign_rhs1 (_a6);
274 : 6 : _q80 = do_valueize (valueize, _q80);
275 : 6 : tree _q81 = gimple_assign_rhs2 (_a6);
276 : 6 : _q81 = do_valueize (valueize, _q81);
277 : 6 : if (tree_swap_operands_p (_q80, _q81))
278 : 0 : std::swap (_q80, _q81);
279 : 6 : switch (TREE_CODE (_q80))
280 : : {
281 : 6 : case SSA_NAME:
282 : 6 : if (gimple *_d7 = get_def (valueize, _q80))
283 : : {
284 : 6 : if (gassign *_a7 = dyn_cast <gassign *> (_d7))
285 : 12 : switch (gimple_assign_rhs_code (_a7))
286 : : {
287 : 6 : case IMAGPART_EXPR:
288 : 6 : {
289 : 6 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a7), 0);
290 : 6 : if ((TREE_CODE (_q90) == SSA_NAME
291 : 6 : || is_gimple_min_invariant (_q90)))
292 : : {
293 : 6 : _q90 = do_valueize (valueize, _q90);
294 : 6 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
295 : : {
296 : 6 : if (integer_zerop (_q81))
297 : : {
298 : 6 : {
299 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
300 : 6 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
301 : : )
302 : : {
303 : 6 : if (types_match (type, captures[0], captures[1])
304 : : )
305 : : {
306 : 6 : {
307 : 6 : res_ops[0] = captures[0];
308 : 6 : res_ops[1] = captures[1];
309 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 46, __FILE__, __LINE__, false);
310 : 6 : return true;
311 : : }
312 : : }
313 : : }
314 : : }
315 : : }
316 : : }
317 : : }
318 : : break;
319 : : }
320 : : default:;
321 : : }
322 : : }
323 : : break;
324 : : default:;
325 : : }
326 : 564222 : break;
327 : : }
328 : : default:;
329 : : }
330 : : }
331 : : break;
332 : : default:;
333 : : }
334 : : break;
335 : : }
336 : : default:;
337 : : }
338 : : }
339 : : break;
340 : : default:;
341 : : }
342 : : break;
343 : : }
344 : : default:;
345 : : }
346 : : }
347 : : break;
348 : : default:;
349 : : }
350 : : }
351 : : break;
352 : : default:;
353 : : }
354 : : }
355 : : break;
356 : : default:;
357 : : }
358 : : }
359 : : break;
360 : : }
361 : 633 : case NEGATE_EXPR:
362 : 633 : {
363 : 633 : tree _q20 = gimple_assign_rhs1 (_a2);
364 : 633 : _q20 = do_valueize (valueize, _q20);
365 : 633 : switch (TREE_CODE (_q20))
366 : : {
367 : 633 : case SSA_NAME:
368 : 633 : if (gimple *_d3 = get_def (valueize, _q20))
369 : : {
370 : 633 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
371 : 673 : switch (gimple_assign_rhs_code (_a3))
372 : : {
373 : 0 : case IMAGPART_EXPR:
374 : 0 : {
375 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a3), 0);
376 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
377 : 0 : || is_gimple_min_invariant (_q30)))
378 : : {
379 : 0 : _q30 = do_valueize (valueize, _q30);
380 : 0 : switch (TREE_CODE (_p1))
381 : : {
382 : 0 : case SSA_NAME:
383 : 0 : if (gimple *_d4 = get_def (valueize, _p1))
384 : : {
385 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
386 : 0 : switch (gimple_assign_rhs_code (_a4))
387 : : {
388 : 0 : case REALPART_EXPR:
389 : 0 : {
390 : 0 : tree _q50 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
391 : 0 : if ((TREE_CODE (_q50) == SSA_NAME
392 : 0 : || is_gimple_min_invariant (_q50)))
393 : : {
394 : 0 : _q50 = do_valueize (valueize, _q50);
395 : 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
396 : : {
397 : 0 : switch (TREE_CODE (_q50))
398 : : {
399 : 0 : case SSA_NAME:
400 : 0 : if (gimple *_d5 = get_def (valueize, _q50))
401 : : {
402 : 0 : if (gcall *_c5 = dyn_cast <gcall *> (_d5))
403 : 0 : switch (gimple_call_combined_fn (_c5))
404 : : {
405 : 0 : case CFN_ADD_OVERFLOW:
406 : 0 : if (gimple_call_num_args (_c5) == 2)
407 : : {
408 : 0 : tree _q70 = gimple_call_arg (_c5, 0);
409 : 0 : _q70 = do_valueize (valueize, _q70);
410 : 0 : tree _q71 = gimple_call_arg (_c5, 1);
411 : 0 : _q71 = do_valueize (valueize, _q71);
412 : 0 : if (tree_swap_operands_p (_q70, _q71))
413 : 0 : std::swap (_q70, _q71);
414 : 0 : {
415 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q70, _q71, _q30 };
416 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
417 : : )
418 : : {
419 : 0 : if (types_match (type, captures[0], captures[1])
420 : : )
421 : : {
422 : 0 : {
423 : 0 : res_ops[0] = captures[0];
424 : 0 : res_ops[1] = captures[1];
425 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 45, __FILE__, __LINE__, false);
426 : 0 : return true;
427 : : }
428 : : }
429 : : }
430 : : }
431 : : }
432 : : break;
433 : : default:;
434 : : }
435 : : }
436 : : break;
437 : : default:;
438 : : }
439 : : }
440 : : }
441 : : break;
442 : : }
443 : : default:;
444 : : }
445 : : }
446 : : break;
447 : : default:;
448 : : }
449 : : }
450 : : break;
451 : : }
452 : 154 : CASE_CONVERT:
453 : 154 : {
454 : 154 : tree _q30 = gimple_assign_rhs1 (_a3);
455 : 154 : _q30 = do_valueize (valueize, _q30);
456 : 154 : switch (TREE_CODE (_q30))
457 : : {
458 : 154 : case SSA_NAME:
459 : 154 : if (gimple *_d4 = get_def (valueize, _q30))
460 : : {
461 : 154 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
462 : 116 : switch (gimple_assign_rhs_code (_a4))
463 : : {
464 : 8 : case NE_EXPR:
465 : 8 : {
466 : 8 : tree _q40 = gimple_assign_rhs1 (_a4);
467 : 8 : _q40 = do_valueize (valueize, _q40);
468 : 8 : tree _q41 = gimple_assign_rhs2 (_a4);
469 : 8 : _q41 = do_valueize (valueize, _q41);
470 : 8 : if (tree_swap_operands_p (_q40, _q41))
471 : 0 : std::swap (_q40, _q41);
472 : 8 : switch (TREE_CODE (_q40))
473 : : {
474 : 8 : case SSA_NAME:
475 : 8 : if (gimple *_d5 = get_def (valueize, _q40))
476 : : {
477 : 8 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
478 : 14 : switch (gimple_assign_rhs_code (_a5))
479 : : {
480 : 2 : case IMAGPART_EXPR:
481 : 2 : {
482 : 2 : tree _q50 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
483 : 2 : if ((TREE_CODE (_q50) == SSA_NAME
484 : 2 : || is_gimple_min_invariant (_q50)))
485 : : {
486 : 2 : _q50 = do_valueize (valueize, _q50);
487 : 2 : if (integer_zerop (_q41))
488 : : {
489 : 2 : switch (TREE_CODE (_p1))
490 : : {
491 : 2 : case SSA_NAME:
492 : 2 : if (gimple *_d6 = get_def (valueize, _p1))
493 : : {
494 : 2 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
495 : 4 : switch (gimple_assign_rhs_code (_a6))
496 : : {
497 : 2 : case REALPART_EXPR:
498 : 2 : {
499 : 2 : tree _q80 = TREE_OPERAND (gimple_assign_rhs1 (_a6), 0);
500 : 2 : if ((TREE_CODE (_q80) == SSA_NAME
501 : 2 : || is_gimple_min_invariant (_q80)))
502 : : {
503 : 2 : _q80 = do_valueize (valueize, _q80);
504 : 2 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
505 : : {
506 : 2 : switch (TREE_CODE (_q80))
507 : : {
508 : 2 : case SSA_NAME:
509 : 2 : if (gimple *_d7 = get_def (valueize, _q80))
510 : : {
511 : 2 : if (gcall *_c7 = dyn_cast <gcall *> (_d7))
512 : 2 : switch (gimple_call_combined_fn (_c7))
513 : : {
514 : 2 : case CFN_ADD_OVERFLOW:
515 : 2 : if (gimple_call_num_args (_c7) == 2)
516 : : {
517 : 2 : tree _q100 = gimple_call_arg (_c7, 0);
518 : 2 : _q100 = do_valueize (valueize, _q100);
519 : 2 : tree _q101 = gimple_call_arg (_c7, 1);
520 : 2 : _q101 = do_valueize (valueize, _q101);
521 : 2 : if (tree_swap_operands_p (_q100, _q101))
522 : 0 : std::swap (_q100, _q101);
523 : 2 : {
524 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q100, _q101, _q50 };
525 : 2 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
526 : : )
527 : : {
528 : 2 : if (types_match (type, captures[0], captures[1])
529 : : )
530 : : {
531 : 2 : {
532 : 2 : res_ops[0] = captures[0];
533 : 2 : res_ops[1] = captures[1];
534 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 46, __FILE__, __LINE__, false);
535 : 2 : return true;
536 : : }
537 : : }
538 : : }
539 : : }
540 : : }
541 : : break;
542 : : default:;
543 : : }
544 : : }
545 : : break;
546 : : default:;
547 : : }
548 : : }
549 : : }
550 : : break;
551 : : }
552 : : default:;
553 : : }
554 : : }
555 : : break;
556 : : default:;
557 : : }
558 : : }
559 : : }
560 : : break;
561 : : }
562 : : default:;
563 : : }
564 : : }
565 : : break;
566 : : default:;
567 : : }
568 : 564222 : break;
569 : : }
570 : : default:;
571 : : }
572 : : }
573 : : break;
574 : : default:;
575 : : }
576 : : break;
577 : : }
578 : : default:;
579 : : }
580 : : }
581 : : break;
582 : : default:;
583 : : }
584 : : break;
585 : : }
586 : : default:;
587 : : }
588 : : }
589 : : break;
590 : 564222 : default:;
591 : : }
592 : 564222 : {
593 : 564222 : tree _p0_pops[2];
594 : 564222 : if (gimple_usadd_overflow_mask (_p0, _p0_pops, valueize))
595 : : {
596 : 6 : tree _q20 = _p0_pops[0];
597 : 6 : tree _q21 = _p0_pops[1];
598 : 6 : switch (TREE_CODE (_p1))
599 : : {
600 : 6 : case SSA_NAME:
601 : 6 : if (gimple *_d2 = get_def (valueize, _p1))
602 : : {
603 : 6 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
604 : 6 : switch (gimple_assign_rhs_code (_a2))
605 : : {
606 : 6 : case PLUS_EXPR:
607 : 6 : {
608 : 6 : tree _q50 = gimple_assign_rhs1 (_a2);
609 : 6 : _q50 = do_valueize (valueize, _q50);
610 : 6 : tree _q51 = gimple_assign_rhs2 (_a2);
611 : 6 : _q51 = do_valueize (valueize, _q51);
612 : 6 : if (tree_swap_operands_p (_q50, _q51))
613 : 0 : std::swap (_q50, _q51);
614 : 6 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
615 : : {
616 : 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
617 : : {
618 : 6 : {
619 : 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
620 : 6 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
621 : : )
622 : : {
623 : 6 : if (types_match (type, captures[0], captures[1])
624 : : )
625 : : {
626 : 6 : {
627 : 6 : res_ops[0] = captures[0];
628 : 6 : res_ops[1] = captures[1];
629 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 44, __FILE__, __LINE__, false);
630 : 6 : return true;
631 : : }
632 : : }
633 : : }
634 : : }
635 : : }
636 : : }
637 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
638 : : {
639 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
640 : : {
641 : 0 : {
642 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
643 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
644 : : )
645 : : {
646 : 0 : if (types_match (type, captures[0], captures[1])
647 : : )
648 : : {
649 : 0 : {
650 : 0 : res_ops[0] = captures[0];
651 : 0 : res_ops[1] = captures[1];
652 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 44, __FILE__, __LINE__, false);
653 : 0 : return true;
654 : : }
655 : : }
656 : : }
657 : : }
658 : : }
659 : : }
660 : 564216 : break;
661 : : }
662 : : default:;
663 : : }
664 : : }
665 : : break;
666 : : default:;
667 : : }
668 : : }
669 : : }
670 : 564216 : break;
671 : : }
672 : 173761 : case COND_EXPR:
673 : 173761 : {
674 : 173761 : tree _p0 = gimple_assign_rhs1 (_a1);
675 : 173761 : _p0 = do_valueize (valueize, _p0);
676 : 173761 : tree _p1 = gimple_assign_rhs2 (_a1);
677 : 173761 : _p1 = do_valueize (valueize, _p1);
678 : 173761 : tree _p2 = gimple_assign_rhs3 (_a1);
679 : 173761 : _p2 = do_valueize (valueize, _p2);
680 : 173761 : switch (TREE_CODE (_p0))
681 : : {
682 : 173761 : case SSA_NAME:
683 : 173761 : if (gimple *_d2 = get_def (valueize, _p0))
684 : : {
685 : 173761 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
686 : 174880 : switch (gimple_assign_rhs_code (_a2))
687 : : {
688 : 4562 : case GE_EXPR:
689 : 4562 : {
690 : 4562 : tree _q20 = gimple_assign_rhs1 (_a2);
691 : 4562 : _q20 = do_valueize (valueize, _q20);
692 : 4562 : tree _q21 = gimple_assign_rhs2 (_a2);
693 : 4562 : _q21 = do_valueize (valueize, _q21);
694 : 4562 : switch (TREE_CODE (_q20))
695 : : {
696 : 4562 : case SSA_NAME:
697 : 4562 : if (gimple *_d3 = get_def (valueize, _q20))
698 : : {
699 : 4562 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
700 : 5565 : switch (gimple_assign_rhs_code (_a3))
701 : : {
702 : 1348 : case PLUS_EXPR:
703 : 1348 : {
704 : 1348 : tree _q30 = gimple_assign_rhs1 (_a3);
705 : 1348 : _q30 = do_valueize (valueize, _q30);
706 : 1348 : tree _q31 = gimple_assign_rhs2 (_a3);
707 : 1348 : _q31 = do_valueize (valueize, _q31);
708 : 1348 : if (tree_swap_operands_p (_q30, _q31))
709 : 0 : std::swap (_q30, _q31);
710 : 1348 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
711 : : {
712 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
713 : : {
714 : 0 : if (integer_minus_onep (_p2))
715 : : {
716 : 0 : {
717 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
718 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
719 : : )
720 : : {
721 : 0 : if (types_match (type, captures[0], captures[1])
722 : : )
723 : : {
724 : 0 : {
725 : 0 : res_ops[0] = captures[0];
726 : 0 : res_ops[1] = captures[1];
727 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
728 : 0 : return true;
729 : : }
730 : : }
731 : : }
732 : : }
733 : : }
734 : : }
735 : : }
736 : 1348 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
737 : : {
738 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
739 : : {
740 : 0 : if (integer_minus_onep (_p2))
741 : : {
742 : 0 : {
743 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
744 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
745 : : )
746 : : {
747 : 0 : if (types_match (type, captures[0], captures[1])
748 : : )
749 : : {
750 : 0 : {
751 : 0 : res_ops[0] = captures[0];
752 : 0 : res_ops[1] = captures[1];
753 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
754 : 0 : return true;
755 : : }
756 : : }
757 : : }
758 : : }
759 : : }
760 : : }
761 : : }
762 : 29105961 : break;
763 : : }
764 : : default:;
765 : : }
766 : : }
767 : : break;
768 : : default:;
769 : : }
770 : : break;
771 : : }
772 : 92372 : case LT_EXPR:
773 : 92372 : {
774 : 92372 : tree _q20 = gimple_assign_rhs1 (_a2);
775 : 92372 : _q20 = do_valueize (valueize, _q20);
776 : 92372 : tree _q21 = gimple_assign_rhs2 (_a2);
777 : 92372 : _q21 = do_valueize (valueize, _q21);
778 : 92372 : switch (TREE_CODE (_q20))
779 : : {
780 : 92372 : case SSA_NAME:
781 : 92372 : if (gimple *_d3 = get_def (valueize, _q20))
782 : : {
783 : 92372 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
784 : 96664 : switch (gimple_assign_rhs_code (_a3))
785 : : {
786 : 7652 : case PLUS_EXPR:
787 : 7652 : {
788 : 7652 : tree _q30 = gimple_assign_rhs1 (_a3);
789 : 7652 : _q30 = do_valueize (valueize, _q30);
790 : 7652 : tree _q31 = gimple_assign_rhs2 (_a3);
791 : 7652 : _q31 = do_valueize (valueize, _q31);
792 : 7652 : if (tree_swap_operands_p (_q30, _q31))
793 : 28 : std::swap (_q30, _q31);
794 : 7652 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
795 : : {
796 : 0 : if (integer_minus_onep (_p1))
797 : : {
798 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
799 : : {
800 : 0 : {
801 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
802 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
803 : : )
804 : : {
805 : 0 : if (types_match (type, captures[0], captures[1])
806 : : )
807 : : {
808 : 0 : {
809 : 0 : res_ops[0] = captures[0];
810 : 0 : res_ops[1] = captures[1];
811 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
812 : 0 : return true;
813 : : }
814 : : }
815 : : }
816 : : }
817 : : }
818 : : }
819 : : }
820 : 7652 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
821 : : {
822 : 4 : if (integer_minus_onep (_p1))
823 : : {
824 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
825 : : {
826 : 0 : {
827 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
828 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
829 : : )
830 : : {
831 : 0 : if (types_match (type, captures[0], captures[1])
832 : : )
833 : : {
834 : 0 : {
835 : 0 : res_ops[0] = captures[0];
836 : 0 : res_ops[1] = captures[1];
837 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
838 : 0 : return true;
839 : : }
840 : : }
841 : : }
842 : : }
843 : : }
844 : : }
845 : : }
846 : 29105961 : break;
847 : : }
848 : : default:;
849 : : }
850 : : }
851 : : break;
852 : : default:;
853 : : }
854 : : break;
855 : : }
856 : 4945 : case LE_EXPR:
857 : 4945 : {
858 : 4945 : tree _q20 = gimple_assign_rhs1 (_a2);
859 : 4945 : _q20 = do_valueize (valueize, _q20);
860 : 4945 : tree _q21 = gimple_assign_rhs2 (_a2);
861 : 4945 : _q21 = do_valueize (valueize, _q21);
862 : 4945 : switch (TREE_CODE (_q21))
863 : : {
864 : 3027 : case SSA_NAME:
865 : 3027 : if (gimple *_d3 = get_def (valueize, _q21))
866 : : {
867 : 3027 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
868 : 2984 : switch (gimple_assign_rhs_code (_a3))
869 : : {
870 : 2277 : case PLUS_EXPR:
871 : 2277 : {
872 : 2277 : tree _q40 = gimple_assign_rhs1 (_a3);
873 : 2277 : _q40 = do_valueize (valueize, _q40);
874 : 2277 : tree _q41 = gimple_assign_rhs2 (_a3);
875 : 2277 : _q41 = do_valueize (valueize, _q41);
876 : 2277 : if (tree_swap_operands_p (_q40, _q41))
877 : 0 : std::swap (_q40, _q41);
878 : 2277 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
879 : : {
880 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
881 : : {
882 : 0 : if (integer_minus_onep (_p2))
883 : : {
884 : 0 : {
885 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
886 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
887 : : )
888 : : {
889 : 0 : if (types_match (type, captures[0], captures[1])
890 : : )
891 : : {
892 : 0 : {
893 : 0 : res_ops[0] = captures[0];
894 : 0 : res_ops[1] = captures[1];
895 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 49, __FILE__, __LINE__, false);
896 : 0 : return true;
897 : : }
898 : : }
899 : : }
900 : : }
901 : : }
902 : : }
903 : : }
904 : 2277 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
905 : : {
906 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
907 : : {
908 : 0 : if (integer_minus_onep (_p2))
909 : : {
910 : 0 : {
911 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
912 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
913 : : )
914 : : {
915 : 0 : if (types_match (type, captures[0], captures[1])
916 : : )
917 : : {
918 : 0 : {
919 : 0 : res_ops[0] = captures[0];
920 : 0 : res_ops[1] = captures[1];
921 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 49, __FILE__, __LINE__, false);
922 : 0 : return true;
923 : : }
924 : : }
925 : : }
926 : : }
927 : : }
928 : : }
929 : : }
930 : 4945 : break;
931 : : }
932 : : default:;
933 : : }
934 : : }
935 : : break;
936 : 4945 : default:;
937 : : }
938 : 4945 : switch (TREE_CODE (_q20))
939 : : {
940 : 4945 : case SSA_NAME:
941 : 4945 : if (gimple *_d3 = get_def (valueize, _q20))
942 : : {
943 : 4945 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
944 : 5045 : switch (gimple_assign_rhs_code (_a3))
945 : : {
946 : 2874 : case PLUS_EXPR:
947 : 2874 : {
948 : 2874 : tree _q30 = gimple_assign_rhs1 (_a3);
949 : 2874 : _q30 = do_valueize (valueize, _q30);
950 : 2874 : tree _q31 = gimple_assign_rhs2 (_a3);
951 : 2874 : _q31 = do_valueize (valueize, _q31);
952 : 2874 : if (tree_swap_operands_p (_q30, _q31))
953 : 0 : std::swap (_q30, _q31);
954 : 2874 : switch (TREE_CODE (_q30))
955 : : {
956 : 2874 : case SSA_NAME:
957 : 2874 : if (gimple *_d4 = get_def (valueize, _q30))
958 : : {
959 : 2874 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
960 : 2685 : switch (gimple_assign_rhs_code (_a4))
961 : : {
962 : 338 : CASE_CONVERT:
963 : 338 : {
964 : 338 : tree _q40 = gimple_assign_rhs1 (_a4);
965 : 338 : _q40 = do_valueize (valueize, _q40);
966 : 338 : switch (TREE_CODE (_q31))
967 : : {
968 : 20 : case SSA_NAME:
969 : 20 : if (gimple *_d5 = get_def (valueize, _q31))
970 : : {
971 : 20 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
972 : 20 : switch (gimple_assign_rhs_code (_a5))
973 : : {
974 : 0 : CASE_CONVERT:
975 : 0 : {
976 : 0 : tree _q60 = gimple_assign_rhs1 (_a5);
977 : 0 : _q60 = do_valueize (valueize, _q60);
978 : 0 : switch (TREE_CODE (_q21))
979 : : {
980 : 0 : case INTEGER_CST:
981 : 0 : {
982 : 0 : switch (TREE_CODE (_p1))
983 : : {
984 : 0 : case SSA_NAME:
985 : 0 : if (gimple *_d6 = get_def (valueize, _p1))
986 : : {
987 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
988 : 0 : switch (gimple_assign_rhs_code (_a6))
989 : : {
990 : 0 : case PLUS_EXPR:
991 : 0 : {
992 : 0 : tree _q90 = gimple_assign_rhs1 (_a6);
993 : 0 : _q90 = do_valueize (valueize, _q90);
994 : 0 : tree _q91 = gimple_assign_rhs2 (_a6);
995 : 0 : _q91 = do_valueize (valueize, _q91);
996 : 0 : if (tree_swap_operands_p (_q90, _q91))
997 : 0 : std::swap (_q90, _q91);
998 : 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
999 : : {
1000 : 0 : if ((_q91 == _q60 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q60, 0) && types_match (_q91, _q60)))
1001 : : {
1002 : 0 : if (integer_minus_onep (_p2))
1003 : : {
1004 : 0 : {
1005 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
1006 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1007 : : )
1008 : : {
1009 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
1010 : : )
1011 : : {
1012 : 0 : {
1013 : 0 : unsigned precision = TYPE_PRECISION (type);
1014 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
1015 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
1016 : 0 : wide_int c4 = wi::to_wide (captures[4]);
1017 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
1018 : : )
1019 : : {
1020 : 0 : {
1021 : 0 : res_ops[0] = captures[0];
1022 : 0 : res_ops[1] = captures[1];
1023 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
1024 : 0 : return true;
1025 : : }
1026 : : }
1027 : 0 : }
1028 : : }
1029 : : }
1030 : : }
1031 : : }
1032 : : }
1033 : : }
1034 : 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
1035 : : {
1036 : 0 : if ((_q91 == _q40 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q40, 0) && types_match (_q91, _q40)))
1037 : : {
1038 : 0 : if (integer_minus_onep (_p2))
1039 : : {
1040 : 0 : {
1041 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
1042 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1043 : : )
1044 : : {
1045 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
1046 : : )
1047 : : {
1048 : 0 : {
1049 : 0 : unsigned precision = TYPE_PRECISION (type);
1050 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
1051 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
1052 : 0 : wide_int c4 = wi::to_wide (captures[4]);
1053 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
1054 : : )
1055 : : {
1056 : 0 : {
1057 : 0 : res_ops[0] = captures[0];
1058 : 0 : res_ops[1] = captures[1];
1059 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
1060 : 0 : return true;
1061 : : }
1062 : : }
1063 : 0 : }
1064 : : }
1065 : : }
1066 : : }
1067 : : }
1068 : : }
1069 : : }
1070 : 29105961 : break;
1071 : : }
1072 : : default:;
1073 : : }
1074 : : }
1075 : : break;
1076 : : default:;
1077 : : }
1078 : : break;
1079 : : }
1080 : : default:;
1081 : : }
1082 : : break;
1083 : : }
1084 : : default:;
1085 : : }
1086 : : }
1087 : : break;
1088 : : default:;
1089 : : }
1090 : : break;
1091 : : }
1092 : : default:;
1093 : : }
1094 : : }
1095 : : break;
1096 : : default:;
1097 : : }
1098 : 29105961 : break;
1099 : : }
1100 : : default:;
1101 : : }
1102 : : }
1103 : : break;
1104 : : default:;
1105 : : }
1106 : : break;
1107 : : }
1108 : 26727 : case GT_EXPR:
1109 : 26727 : {
1110 : 26727 : tree _q20 = gimple_assign_rhs1 (_a2);
1111 : 26727 : _q20 = do_valueize (valueize, _q20);
1112 : 26727 : tree _q21 = gimple_assign_rhs2 (_a2);
1113 : 26727 : _q21 = do_valueize (valueize, _q21);
1114 : 26727 : switch (TREE_CODE (_q21))
1115 : : {
1116 : 18098 : case SSA_NAME:
1117 : 18098 : if (gimple *_d3 = get_def (valueize, _q21))
1118 : : {
1119 : 18098 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1120 : 24891 : switch (gimple_assign_rhs_code (_a3))
1121 : : {
1122 : 1979 : case PLUS_EXPR:
1123 : 1979 : {
1124 : 1979 : tree _q40 = gimple_assign_rhs1 (_a3);
1125 : 1979 : _q40 = do_valueize (valueize, _q40);
1126 : 1979 : tree _q41 = gimple_assign_rhs2 (_a3);
1127 : 1979 : _q41 = do_valueize (valueize, _q41);
1128 : 1979 : if (tree_swap_operands_p (_q40, _q41))
1129 : 0 : std::swap (_q40, _q41);
1130 : 1979 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
1131 : : {
1132 : 0 : if (integer_minus_onep (_p1))
1133 : : {
1134 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
1135 : : {
1136 : 0 : {
1137 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
1138 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1139 : : )
1140 : : {
1141 : 0 : if (types_match (type, captures[0], captures[1])
1142 : : )
1143 : : {
1144 : 0 : {
1145 : 0 : res_ops[0] = captures[0];
1146 : 0 : res_ops[1] = captures[1];
1147 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
1148 : 0 : return true;
1149 : : }
1150 : : }
1151 : : }
1152 : : }
1153 : : }
1154 : : }
1155 : : }
1156 : 1979 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
1157 : : {
1158 : 0 : if (integer_minus_onep (_p1))
1159 : : {
1160 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
1161 : : {
1162 : 0 : {
1163 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
1164 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1165 : : )
1166 : : {
1167 : 0 : if (types_match (type, captures[0], captures[1])
1168 : : )
1169 : : {
1170 : 0 : {
1171 : 0 : res_ops[0] = captures[0];
1172 : 0 : res_ops[1] = captures[1];
1173 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
1174 : 0 : return true;
1175 : : }
1176 : : }
1177 : : }
1178 : : }
1179 : : }
1180 : : }
1181 : : }
1182 : 29105961 : break;
1183 : : }
1184 : : default:;
1185 : : }
1186 : : }
1187 : : break;
1188 : : default:;
1189 : : }
1190 : : break;
1191 : : }
1192 : 6658 : case EQ_EXPR:
1193 : 6658 : {
1194 : 6658 : tree _q20 = gimple_assign_rhs1 (_a2);
1195 : 6658 : _q20 = do_valueize (valueize, _q20);
1196 : 6658 : tree _q21 = gimple_assign_rhs2 (_a2);
1197 : 6658 : _q21 = do_valueize (valueize, _q21);
1198 : 6658 : if (tree_swap_operands_p (_q20, _q21))
1199 : 0 : std::swap (_q20, _q21);
1200 : 6658 : switch (TREE_CODE (_q20))
1201 : : {
1202 : 6658 : case SSA_NAME:
1203 : 6658 : if (gimple *_d3 = get_def (valueize, _q20))
1204 : : {
1205 : 6658 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1206 : 7151 : switch (gimple_assign_rhs_code (_a3))
1207 : : {
1208 : 2 : case IMAGPART_EXPR:
1209 : 2 : {
1210 : 2 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a3), 0);
1211 : 2 : if ((TREE_CODE (_q30) == SSA_NAME
1212 : 2 : || is_gimple_min_invariant (_q30)))
1213 : : {
1214 : 2 : _q30 = do_valueize (valueize, _q30);
1215 : 2 : switch (TREE_CODE (_q30))
1216 : : {
1217 : 2 : case SSA_NAME:
1218 : 2 : if (gimple *_d4 = get_def (valueize, _q30))
1219 : : {
1220 : 2 : if (gcall *_c4 = dyn_cast <gcall *> (_d4))
1221 : 0 : switch (gimple_call_combined_fn (_c4))
1222 : : {
1223 : 0 : case CFN_ADD_OVERFLOW:
1224 : 0 : if (gimple_call_num_args (_c4) == 2)
1225 : : {
1226 : 0 : tree _q40 = gimple_call_arg (_c4, 0);
1227 : 0 : _q40 = do_valueize (valueize, _q40);
1228 : 0 : tree _q41 = gimple_call_arg (_c4, 1);
1229 : 0 : _q41 = do_valueize (valueize, _q41);
1230 : 0 : if (tree_swap_operands_p (_q40, _q41))
1231 : 0 : std::swap (_q40, _q41);
1232 : 0 : if (integer_zerop (_q21))
1233 : : {
1234 : 0 : switch (TREE_CODE (_p1))
1235 : : {
1236 : 0 : case SSA_NAME:
1237 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
1238 : : {
1239 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1240 : 0 : switch (gimple_assign_rhs_code (_a5))
1241 : : {
1242 : 0 : case REALPART_EXPR:
1243 : 0 : {
1244 : 0 : tree _q80 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
1245 : 0 : if ((TREE_CODE (_q80) == SSA_NAME
1246 : 0 : || is_gimple_min_invariant (_q80)))
1247 : : {
1248 : 0 : _q80 = do_valueize (valueize, _q80);
1249 : 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
1250 : : {
1251 : 0 : if (integer_minus_onep (_p2))
1252 : : {
1253 : 0 : {
1254 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
1255 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1256 : : )
1257 : : {
1258 : 0 : if (types_match (type, captures[0], captures[1])
1259 : : )
1260 : : {
1261 : 0 : {
1262 : 0 : res_ops[0] = captures[0];
1263 : 0 : res_ops[1] = captures[1];
1264 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 52, __FILE__, __LINE__, false);
1265 : 0 : return true;
1266 : : }
1267 : : }
1268 : : }
1269 : : }
1270 : : }
1271 : : }
1272 : : }
1273 : : break;
1274 : : }
1275 : : default:;
1276 : : }
1277 : : }
1278 : : break;
1279 : : default:;
1280 : : }
1281 : : }
1282 : : }
1283 : : break;
1284 : : default:;
1285 : : }
1286 : : }
1287 : : break;
1288 : : default:;
1289 : : }
1290 : : }
1291 : : break;
1292 : : }
1293 : : default:;
1294 : : }
1295 : : }
1296 : : break;
1297 : : default:;
1298 : : }
1299 : 29105961 : break;
1300 : : }
1301 : 19271 : case NE_EXPR:
1302 : 19271 : {
1303 : 19271 : tree _q20 = gimple_assign_rhs1 (_a2);
1304 : 19271 : _q20 = do_valueize (valueize, _q20);
1305 : 19271 : tree _q21 = gimple_assign_rhs2 (_a2);
1306 : 19271 : _q21 = do_valueize (valueize, _q21);
1307 : 19271 : if (tree_swap_operands_p (_q20, _q21))
1308 : 1 : std::swap (_q20, _q21);
1309 : 19271 : switch (TREE_CODE (_q20))
1310 : : {
1311 : 19259 : case SSA_NAME:
1312 : 19259 : if (gimple *_d3 = get_def (valueize, _q20))
1313 : : {
1314 : 19259 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1315 : 16673 : switch (gimple_assign_rhs_code (_a3))
1316 : : {
1317 : 6 : case IMAGPART_EXPR:
1318 : 6 : {
1319 : 6 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a3), 0);
1320 : 6 : if ((TREE_CODE (_q30) == SSA_NAME
1321 : 6 : || is_gimple_min_invariant (_q30)))
1322 : : {
1323 : 6 : _q30 = do_valueize (valueize, _q30);
1324 : 6 : switch (TREE_CODE (_q30))
1325 : : {
1326 : 6 : case SSA_NAME:
1327 : 6 : if (gimple *_d4 = get_def (valueize, _q30))
1328 : : {
1329 : 6 : if (gcall *_c4 = dyn_cast <gcall *> (_d4))
1330 : 6 : switch (gimple_call_combined_fn (_c4))
1331 : : {
1332 : 0 : case CFN_ADD_OVERFLOW:
1333 : 0 : if (gimple_call_num_args (_c4) == 2)
1334 : : {
1335 : 0 : tree _q40 = gimple_call_arg (_c4, 0);
1336 : 0 : _q40 = do_valueize (valueize, _q40);
1337 : 0 : tree _q41 = gimple_call_arg (_c4, 1);
1338 : 0 : _q41 = do_valueize (valueize, _q41);
1339 : 0 : if (tree_swap_operands_p (_q40, _q41))
1340 : 0 : std::swap (_q40, _q41);
1341 : 0 : if (integer_zerop (_q21))
1342 : : {
1343 : 0 : if (integer_minus_onep (_p1))
1344 : : {
1345 : 0 : switch (TREE_CODE (_p2))
1346 : : {
1347 : 0 : case SSA_NAME:
1348 : 0 : if (gimple *_d5 = get_def (valueize, _p2))
1349 : : {
1350 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1351 : 0 : switch (gimple_assign_rhs_code (_a5))
1352 : : {
1353 : 0 : case REALPART_EXPR:
1354 : 0 : {
1355 : 0 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
1356 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
1357 : 0 : || is_gimple_min_invariant (_q90)))
1358 : : {
1359 : 0 : _q90 = do_valueize (valueize, _q90);
1360 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
1361 : : {
1362 : 0 : {
1363 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
1364 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1365 : : )
1366 : : {
1367 : 0 : if (types_match (type, captures[0], captures[1])
1368 : : )
1369 : : {
1370 : 0 : {
1371 : 0 : res_ops[0] = captures[0];
1372 : 0 : res_ops[1] = captures[1];
1373 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 53, __FILE__, __LINE__, false);
1374 : 0 : return true;
1375 : : }
1376 : : }
1377 : : }
1378 : : }
1379 : : }
1380 : : }
1381 : : break;
1382 : : }
1383 : : default:;
1384 : : }
1385 : : }
1386 : : break;
1387 : : default:;
1388 : : }
1389 : : }
1390 : : }
1391 : 0 : switch (TREE_CODE (_q41))
1392 : : {
1393 : 0 : case INTEGER_CST:
1394 : 0 : {
1395 : 0 : if (integer_zerop (_q21))
1396 : : {
1397 : 0 : if (integer_minus_onep (_p1))
1398 : : {
1399 : 0 : switch (TREE_CODE (_p2))
1400 : : {
1401 : 0 : case SSA_NAME:
1402 : 0 : if (gimple *_d5 = get_def (valueize, _p2))
1403 : : {
1404 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1405 : 0 : switch (gimple_assign_rhs_code (_a5))
1406 : : {
1407 : 0 : case REALPART_EXPR:
1408 : 0 : {
1409 : 0 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
1410 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
1411 : 0 : || is_gimple_min_invariant (_q90)))
1412 : : {
1413 : 0 : _q90 = do_valueize (valueize, _q90);
1414 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
1415 : : {
1416 : 0 : {
1417 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
1418 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1419 : : )
1420 : : {
1421 : 0 : if (types_match (type, captures[0]) && int_fits_type_p (captures[1], type)
1422 : : )
1423 : : {
1424 : 0 : {
1425 : 0 : res_ops[0] = captures[0];
1426 : 0 : res_ops[1] = captures[1];
1427 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 54, __FILE__, __LINE__, false);
1428 : 0 : return true;
1429 : : }
1430 : : }
1431 : : }
1432 : : }
1433 : : }
1434 : : }
1435 : : break;
1436 : : }
1437 : : default:;
1438 : : }
1439 : : }
1440 : : break;
1441 : : default:;
1442 : : }
1443 : : }
1444 : : }
1445 : : break;
1446 : : }
1447 : : default:;
1448 : : }
1449 : : }
1450 : : break;
1451 : : default:;
1452 : : }
1453 : : }
1454 : : break;
1455 : : default:;
1456 : : }
1457 : : }
1458 : : break;
1459 : : }
1460 : : default:;
1461 : : }
1462 : : }
1463 : : break;
1464 : : default:;
1465 : : }
1466 : 29105961 : break;
1467 : : }
1468 : : default:;
1469 : : }
1470 : : }
1471 : : break;
1472 : 0 : case GE_EXPR:
1473 : 0 : {
1474 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1475 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
1476 : 0 : || is_gimple_min_invariant (_q20)))
1477 : : {
1478 : 0 : _q20 = do_valueize (valueize, _q20);
1479 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1480 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
1481 : 0 : || is_gimple_min_invariant (_q21)))
1482 : : {
1483 : 0 : _q21 = do_valueize (valueize, _q21);
1484 : 0 : switch (TREE_CODE (_q20))
1485 : : {
1486 : 0 : case SSA_NAME:
1487 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
1488 : : {
1489 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1490 : 0 : switch (gimple_assign_rhs_code (_a2))
1491 : : {
1492 : 0 : case PLUS_EXPR:
1493 : 0 : {
1494 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
1495 : 0 : _q30 = do_valueize (valueize, _q30);
1496 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
1497 : 0 : _q31 = do_valueize (valueize, _q31);
1498 : 0 : if (tree_swap_operands_p (_q30, _q31))
1499 : 0 : std::swap (_q30, _q31);
1500 : 0 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
1501 : : {
1502 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
1503 : : {
1504 : 0 : if (integer_minus_onep (_p2))
1505 : : {
1506 : 0 : {
1507 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
1508 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1509 : : )
1510 : : {
1511 : 0 : if (types_match (type, captures[0], captures[1])
1512 : : )
1513 : : {
1514 : 0 : {
1515 : 0 : res_ops[0] = captures[0];
1516 : 0 : res_ops[1] = captures[1];
1517 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
1518 : 0 : return true;
1519 : : }
1520 : : }
1521 : : }
1522 : : }
1523 : : }
1524 : : }
1525 : : }
1526 : 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
1527 : : {
1528 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
1529 : : {
1530 : 0 : if (integer_minus_onep (_p2))
1531 : : {
1532 : 0 : {
1533 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
1534 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1535 : : )
1536 : : {
1537 : 0 : if (types_match (type, captures[0], captures[1])
1538 : : )
1539 : : {
1540 : 0 : {
1541 : 0 : res_ops[0] = captures[0];
1542 : 0 : res_ops[1] = captures[1];
1543 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
1544 : 0 : return true;
1545 : : }
1546 : : }
1547 : : }
1548 : : }
1549 : : }
1550 : : }
1551 : : }
1552 : 29105961 : break;
1553 : : }
1554 : : default:;
1555 : : }
1556 : : }
1557 : : break;
1558 : : default:;
1559 : : }
1560 : : }
1561 : : }
1562 : : break;
1563 : : }
1564 : 0 : case LT_EXPR:
1565 : 0 : {
1566 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1567 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
1568 : 0 : || is_gimple_min_invariant (_q20)))
1569 : : {
1570 : 0 : _q20 = do_valueize (valueize, _q20);
1571 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1572 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
1573 : 0 : || is_gimple_min_invariant (_q21)))
1574 : : {
1575 : 0 : _q21 = do_valueize (valueize, _q21);
1576 : 0 : switch (TREE_CODE (_q20))
1577 : : {
1578 : 0 : case SSA_NAME:
1579 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
1580 : : {
1581 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1582 : 0 : switch (gimple_assign_rhs_code (_a2))
1583 : : {
1584 : 0 : case PLUS_EXPR:
1585 : 0 : {
1586 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
1587 : 0 : _q30 = do_valueize (valueize, _q30);
1588 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
1589 : 0 : _q31 = do_valueize (valueize, _q31);
1590 : 0 : if (tree_swap_operands_p (_q30, _q31))
1591 : 0 : std::swap (_q30, _q31);
1592 : 0 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
1593 : : {
1594 : 0 : if (integer_minus_onep (_p1))
1595 : : {
1596 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
1597 : : {
1598 : 0 : {
1599 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
1600 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1601 : : )
1602 : : {
1603 : 0 : if (types_match (type, captures[0], captures[1])
1604 : : )
1605 : : {
1606 : 0 : {
1607 : 0 : res_ops[0] = captures[0];
1608 : 0 : res_ops[1] = captures[1];
1609 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
1610 : 0 : return true;
1611 : : }
1612 : : }
1613 : : }
1614 : : }
1615 : : }
1616 : : }
1617 : : }
1618 : 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
1619 : : {
1620 : 0 : if (integer_minus_onep (_p1))
1621 : : {
1622 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
1623 : : {
1624 : 0 : {
1625 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
1626 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1627 : : )
1628 : : {
1629 : 0 : if (types_match (type, captures[0], captures[1])
1630 : : )
1631 : : {
1632 : 0 : {
1633 : 0 : res_ops[0] = captures[0];
1634 : 0 : res_ops[1] = captures[1];
1635 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
1636 : 0 : return true;
1637 : : }
1638 : : }
1639 : : }
1640 : : }
1641 : : }
1642 : : }
1643 : : }
1644 : 29105961 : break;
1645 : : }
1646 : : default:;
1647 : : }
1648 : : }
1649 : : break;
1650 : : default:;
1651 : : }
1652 : : }
1653 : : }
1654 : : break;
1655 : : }
1656 : 0 : case LE_EXPR:
1657 : 0 : {
1658 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1659 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
1660 : 0 : || is_gimple_min_invariant (_q20)))
1661 : : {
1662 : 0 : _q20 = do_valueize (valueize, _q20);
1663 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1664 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
1665 : 0 : || is_gimple_min_invariant (_q21)))
1666 : : {
1667 : 0 : _q21 = do_valueize (valueize, _q21);
1668 : 0 : switch (TREE_CODE (_q21))
1669 : : {
1670 : 0 : case SSA_NAME:
1671 : 0 : if (gimple *_d2 = get_def (valueize, _q21))
1672 : : {
1673 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1674 : 0 : switch (gimple_assign_rhs_code (_a2))
1675 : : {
1676 : 0 : case PLUS_EXPR:
1677 : 0 : {
1678 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
1679 : 0 : _q40 = do_valueize (valueize, _q40);
1680 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
1681 : 0 : _q41 = do_valueize (valueize, _q41);
1682 : 0 : if (tree_swap_operands_p (_q40, _q41))
1683 : 0 : std::swap (_q40, _q41);
1684 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
1685 : : {
1686 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
1687 : : {
1688 : 0 : if (integer_minus_onep (_p2))
1689 : : {
1690 : 0 : {
1691 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
1692 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1693 : : )
1694 : : {
1695 : 0 : if (types_match (type, captures[0], captures[1])
1696 : : )
1697 : : {
1698 : 0 : {
1699 : 0 : res_ops[0] = captures[0];
1700 : 0 : res_ops[1] = captures[1];
1701 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 49, __FILE__, __LINE__, false);
1702 : 0 : return true;
1703 : : }
1704 : : }
1705 : : }
1706 : : }
1707 : : }
1708 : : }
1709 : : }
1710 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
1711 : : {
1712 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
1713 : : {
1714 : 0 : if (integer_minus_onep (_p2))
1715 : : {
1716 : 0 : {
1717 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
1718 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1719 : : )
1720 : : {
1721 : 0 : if (types_match (type, captures[0], captures[1])
1722 : : )
1723 : : {
1724 : 0 : {
1725 : 0 : res_ops[0] = captures[0];
1726 : 0 : res_ops[1] = captures[1];
1727 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 49, __FILE__, __LINE__, false);
1728 : 0 : return true;
1729 : : }
1730 : : }
1731 : : }
1732 : : }
1733 : : }
1734 : : }
1735 : : }
1736 : 0 : break;
1737 : : }
1738 : : default:;
1739 : : }
1740 : : }
1741 : : break;
1742 : 0 : default:;
1743 : : }
1744 : 0 : switch (TREE_CODE (_q20))
1745 : : {
1746 : 0 : case SSA_NAME:
1747 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
1748 : : {
1749 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1750 : 0 : switch (gimple_assign_rhs_code (_a2))
1751 : : {
1752 : 0 : case PLUS_EXPR:
1753 : 0 : {
1754 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
1755 : 0 : _q30 = do_valueize (valueize, _q30);
1756 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
1757 : 0 : _q31 = do_valueize (valueize, _q31);
1758 : 0 : if (tree_swap_operands_p (_q30, _q31))
1759 : 0 : std::swap (_q30, _q31);
1760 : 0 : switch (TREE_CODE (_q30))
1761 : : {
1762 : 0 : case SSA_NAME:
1763 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
1764 : : {
1765 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1766 : 0 : switch (gimple_assign_rhs_code (_a3))
1767 : : {
1768 : 0 : CASE_CONVERT:
1769 : 0 : {
1770 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
1771 : 0 : _q40 = do_valueize (valueize, _q40);
1772 : 0 : switch (TREE_CODE (_q31))
1773 : : {
1774 : 0 : case SSA_NAME:
1775 : 0 : if (gimple *_d4 = get_def (valueize, _q31))
1776 : : {
1777 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
1778 : 0 : switch (gimple_assign_rhs_code (_a4))
1779 : : {
1780 : 0 : CASE_CONVERT:
1781 : 0 : {
1782 : 0 : tree _q60 = gimple_assign_rhs1 (_a4);
1783 : 0 : _q60 = do_valueize (valueize, _q60);
1784 : 0 : switch (TREE_CODE (_q21))
1785 : : {
1786 : 0 : case INTEGER_CST:
1787 : 0 : {
1788 : 0 : switch (TREE_CODE (_p1))
1789 : : {
1790 : 0 : case SSA_NAME:
1791 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
1792 : : {
1793 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
1794 : 0 : switch (gimple_assign_rhs_code (_a5))
1795 : : {
1796 : 0 : case PLUS_EXPR:
1797 : 0 : {
1798 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
1799 : 0 : _q90 = do_valueize (valueize, _q90);
1800 : 0 : tree _q91 = gimple_assign_rhs2 (_a5);
1801 : 0 : _q91 = do_valueize (valueize, _q91);
1802 : 0 : if (tree_swap_operands_p (_q90, _q91))
1803 : 0 : std::swap (_q90, _q91);
1804 : 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
1805 : : {
1806 : 0 : if ((_q91 == _q60 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q60, 0) && types_match (_q91, _q60)))
1807 : : {
1808 : 0 : if (integer_minus_onep (_p2))
1809 : : {
1810 : 0 : {
1811 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
1812 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1813 : : )
1814 : : {
1815 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
1816 : : )
1817 : : {
1818 : 0 : {
1819 : 0 : unsigned precision = TYPE_PRECISION (type);
1820 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
1821 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
1822 : 0 : wide_int c4 = wi::to_wide (captures[4]);
1823 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
1824 : : )
1825 : : {
1826 : 0 : {
1827 : 0 : res_ops[0] = captures[0];
1828 : 0 : res_ops[1] = captures[1];
1829 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
1830 : 0 : return true;
1831 : : }
1832 : : }
1833 : 0 : }
1834 : : }
1835 : : }
1836 : : }
1837 : : }
1838 : : }
1839 : : }
1840 : 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
1841 : : {
1842 : 0 : if ((_q91 == _q40 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q40, 0) && types_match (_q91, _q40)))
1843 : : {
1844 : 0 : if (integer_minus_onep (_p2))
1845 : : {
1846 : 0 : {
1847 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
1848 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1849 : : )
1850 : : {
1851 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
1852 : : )
1853 : : {
1854 : 0 : {
1855 : 0 : unsigned precision = TYPE_PRECISION (type);
1856 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
1857 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
1858 : 0 : wide_int c4 = wi::to_wide (captures[4]);
1859 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
1860 : : )
1861 : : {
1862 : 0 : {
1863 : 0 : res_ops[0] = captures[0];
1864 : 0 : res_ops[1] = captures[1];
1865 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
1866 : 0 : return true;
1867 : : }
1868 : : }
1869 : 0 : }
1870 : : }
1871 : : }
1872 : : }
1873 : : }
1874 : : }
1875 : : }
1876 : 29105961 : break;
1877 : : }
1878 : : default:;
1879 : : }
1880 : : }
1881 : : break;
1882 : : default:;
1883 : : }
1884 : : break;
1885 : : }
1886 : : default:;
1887 : : }
1888 : : break;
1889 : : }
1890 : : default:;
1891 : : }
1892 : : }
1893 : : break;
1894 : : default:;
1895 : : }
1896 : : break;
1897 : : }
1898 : : default:;
1899 : : }
1900 : : }
1901 : : break;
1902 : : default:;
1903 : : }
1904 : 29105961 : break;
1905 : : }
1906 : : default:;
1907 : : }
1908 : : }
1909 : : break;
1910 : : default:;
1911 : : }
1912 : : }
1913 : : }
1914 : : break;
1915 : : }
1916 : 0 : case GT_EXPR:
1917 : 0 : {
1918 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1919 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
1920 : 0 : || is_gimple_min_invariant (_q20)))
1921 : : {
1922 : 0 : _q20 = do_valueize (valueize, _q20);
1923 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1924 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
1925 : 0 : || is_gimple_min_invariant (_q21)))
1926 : : {
1927 : 0 : _q21 = do_valueize (valueize, _q21);
1928 : 0 : switch (TREE_CODE (_q21))
1929 : : {
1930 : 0 : case SSA_NAME:
1931 : 0 : if (gimple *_d2 = get_def (valueize, _q21))
1932 : : {
1933 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
1934 : 0 : switch (gimple_assign_rhs_code (_a2))
1935 : : {
1936 : 0 : case PLUS_EXPR:
1937 : 0 : {
1938 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
1939 : 0 : _q40 = do_valueize (valueize, _q40);
1940 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
1941 : 0 : _q41 = do_valueize (valueize, _q41);
1942 : 0 : if (tree_swap_operands_p (_q40, _q41))
1943 : 0 : std::swap (_q40, _q41);
1944 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
1945 : : {
1946 : 0 : if (integer_minus_onep (_p1))
1947 : : {
1948 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
1949 : : {
1950 : 0 : {
1951 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
1952 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1953 : : )
1954 : : {
1955 : 0 : if (types_match (type, captures[0], captures[1])
1956 : : )
1957 : : {
1958 : 0 : {
1959 : 0 : res_ops[0] = captures[0];
1960 : 0 : res_ops[1] = captures[1];
1961 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
1962 : 0 : return true;
1963 : : }
1964 : : }
1965 : : }
1966 : : }
1967 : : }
1968 : : }
1969 : : }
1970 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
1971 : : {
1972 : 0 : if (integer_minus_onep (_p1))
1973 : : {
1974 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
1975 : : {
1976 : 0 : {
1977 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
1978 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
1979 : : )
1980 : : {
1981 : 0 : if (types_match (type, captures[0], captures[1])
1982 : : )
1983 : : {
1984 : 0 : {
1985 : 0 : res_ops[0] = captures[0];
1986 : 0 : res_ops[1] = captures[1];
1987 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
1988 : 0 : return true;
1989 : : }
1990 : : }
1991 : : }
1992 : : }
1993 : : }
1994 : : }
1995 : : }
1996 : 29105961 : break;
1997 : : }
1998 : : default:;
1999 : : }
2000 : : }
2001 : : break;
2002 : : default:;
2003 : : }
2004 : : }
2005 : : }
2006 : : break;
2007 : : }
2008 : 0 : case EQ_EXPR:
2009 : 0 : {
2010 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
2011 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
2012 : 0 : || is_gimple_min_invariant (_q20)))
2013 : : {
2014 : 0 : _q20 = do_valueize (valueize, _q20);
2015 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
2016 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
2017 : 0 : || is_gimple_min_invariant (_q21)))
2018 : : {
2019 : 0 : _q21 = do_valueize (valueize, _q21);
2020 : 0 : if (tree_swap_operands_p (_q20, _q21))
2021 : 0 : std::swap (_q20, _q21);
2022 : 0 : switch (TREE_CODE (_q20))
2023 : : {
2024 : 0 : case SSA_NAME:
2025 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
2026 : : {
2027 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2028 : 0 : switch (gimple_assign_rhs_code (_a2))
2029 : : {
2030 : 0 : case IMAGPART_EXPR:
2031 : 0 : {
2032 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
2033 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
2034 : 0 : || is_gimple_min_invariant (_q30)))
2035 : : {
2036 : 0 : _q30 = do_valueize (valueize, _q30);
2037 : 0 : switch (TREE_CODE (_q30))
2038 : : {
2039 : 0 : case SSA_NAME:
2040 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
2041 : : {
2042 : 0 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
2043 : 0 : switch (gimple_call_combined_fn (_c3))
2044 : : {
2045 : 0 : case CFN_ADD_OVERFLOW:
2046 : 0 : if (gimple_call_num_args (_c3) == 2)
2047 : : {
2048 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
2049 : 0 : _q40 = do_valueize (valueize, _q40);
2050 : 0 : tree _q41 = gimple_call_arg (_c3, 1);
2051 : 0 : _q41 = do_valueize (valueize, _q41);
2052 : 0 : if (tree_swap_operands_p (_q40, _q41))
2053 : 0 : std::swap (_q40, _q41);
2054 : 0 : if (integer_zerop (_q21))
2055 : : {
2056 : 0 : switch (TREE_CODE (_p1))
2057 : : {
2058 : 0 : case SSA_NAME:
2059 : 0 : if (gimple *_d4 = get_def (valueize, _p1))
2060 : : {
2061 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2062 : 0 : switch (gimple_assign_rhs_code (_a4))
2063 : : {
2064 : 0 : case REALPART_EXPR:
2065 : 0 : {
2066 : 0 : tree _q80 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
2067 : 0 : if ((TREE_CODE (_q80) == SSA_NAME
2068 : 0 : || is_gimple_min_invariant (_q80)))
2069 : : {
2070 : 0 : _q80 = do_valueize (valueize, _q80);
2071 : 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
2072 : : {
2073 : 0 : if (integer_minus_onep (_p2))
2074 : : {
2075 : 0 : {
2076 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
2077 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2078 : : )
2079 : : {
2080 : 0 : if (types_match (type, captures[0], captures[1])
2081 : : )
2082 : : {
2083 : 0 : {
2084 : 0 : res_ops[0] = captures[0];
2085 : 0 : res_ops[1] = captures[1];
2086 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 52, __FILE__, __LINE__, false);
2087 : 0 : return true;
2088 : : }
2089 : : }
2090 : : }
2091 : : }
2092 : : }
2093 : : }
2094 : : }
2095 : : break;
2096 : : }
2097 : : default:;
2098 : : }
2099 : : }
2100 : : break;
2101 : : default:;
2102 : : }
2103 : : }
2104 : : }
2105 : : break;
2106 : : default:;
2107 : : }
2108 : : }
2109 : : break;
2110 : : default:;
2111 : : }
2112 : : }
2113 : : break;
2114 : : }
2115 : : default:;
2116 : : }
2117 : : }
2118 : : break;
2119 : : default:;
2120 : : }
2121 : : }
2122 : : }
2123 : 29105961 : break;
2124 : : }
2125 : 0 : case NE_EXPR:
2126 : 0 : {
2127 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
2128 : 0 : if ((TREE_CODE (_q20) == SSA_NAME
2129 : 0 : || is_gimple_min_invariant (_q20)))
2130 : : {
2131 : 0 : _q20 = do_valueize (valueize, _q20);
2132 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
2133 : 0 : if ((TREE_CODE (_q21) == SSA_NAME
2134 : 0 : || is_gimple_min_invariant (_q21)))
2135 : : {
2136 : 0 : _q21 = do_valueize (valueize, _q21);
2137 : 0 : if (tree_swap_operands_p (_q20, _q21))
2138 : 0 : std::swap (_q20, _q21);
2139 : 0 : switch (TREE_CODE (_q20))
2140 : : {
2141 : 0 : case SSA_NAME:
2142 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
2143 : : {
2144 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2145 : 0 : switch (gimple_assign_rhs_code (_a2))
2146 : : {
2147 : 0 : case IMAGPART_EXPR:
2148 : 0 : {
2149 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
2150 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
2151 : 0 : || is_gimple_min_invariant (_q30)))
2152 : : {
2153 : 0 : _q30 = do_valueize (valueize, _q30);
2154 : 0 : switch (TREE_CODE (_q30))
2155 : : {
2156 : 0 : case SSA_NAME:
2157 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
2158 : : {
2159 : 0 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
2160 : 0 : switch (gimple_call_combined_fn (_c3))
2161 : : {
2162 : 0 : case CFN_ADD_OVERFLOW:
2163 : 0 : if (gimple_call_num_args (_c3) == 2)
2164 : : {
2165 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
2166 : 0 : _q40 = do_valueize (valueize, _q40);
2167 : 0 : tree _q41 = gimple_call_arg (_c3, 1);
2168 : 0 : _q41 = do_valueize (valueize, _q41);
2169 : 0 : if (tree_swap_operands_p (_q40, _q41))
2170 : 0 : std::swap (_q40, _q41);
2171 : 0 : if (integer_zerop (_q21))
2172 : : {
2173 : 0 : if (integer_minus_onep (_p1))
2174 : : {
2175 : 0 : switch (TREE_CODE (_p2))
2176 : : {
2177 : 0 : case SSA_NAME:
2178 : 0 : if (gimple *_d4 = get_def (valueize, _p2))
2179 : : {
2180 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2181 : 0 : switch (gimple_assign_rhs_code (_a4))
2182 : : {
2183 : 0 : case REALPART_EXPR:
2184 : 0 : {
2185 : 0 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
2186 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
2187 : 0 : || is_gimple_min_invariant (_q90)))
2188 : : {
2189 : 0 : _q90 = do_valueize (valueize, _q90);
2190 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
2191 : : {
2192 : 0 : {
2193 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
2194 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2195 : : )
2196 : : {
2197 : 0 : if (types_match (type, captures[0], captures[1])
2198 : : )
2199 : : {
2200 : 0 : {
2201 : 0 : res_ops[0] = captures[0];
2202 : 0 : res_ops[1] = captures[1];
2203 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 53, __FILE__, __LINE__, false);
2204 : 0 : return true;
2205 : : }
2206 : : }
2207 : : }
2208 : : }
2209 : : }
2210 : : }
2211 : : break;
2212 : : }
2213 : : default:;
2214 : : }
2215 : : }
2216 : : break;
2217 : : default:;
2218 : : }
2219 : : }
2220 : : }
2221 : 0 : switch (TREE_CODE (_q41))
2222 : : {
2223 : 0 : case INTEGER_CST:
2224 : 0 : {
2225 : 0 : if (integer_zerop (_q21))
2226 : : {
2227 : 0 : if (integer_minus_onep (_p1))
2228 : : {
2229 : 0 : switch (TREE_CODE (_p2))
2230 : : {
2231 : 0 : case SSA_NAME:
2232 : 0 : if (gimple *_d4 = get_def (valueize, _p2))
2233 : : {
2234 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2235 : 0 : switch (gimple_assign_rhs_code (_a4))
2236 : : {
2237 : 0 : case REALPART_EXPR:
2238 : 0 : {
2239 : 0 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
2240 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
2241 : 0 : || is_gimple_min_invariant (_q90)))
2242 : : {
2243 : 0 : _q90 = do_valueize (valueize, _q90);
2244 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
2245 : : {
2246 : 0 : {
2247 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
2248 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2249 : : )
2250 : : {
2251 : 0 : if (types_match (type, captures[0]) && int_fits_type_p (captures[1], type)
2252 : : )
2253 : : {
2254 : 0 : {
2255 : 0 : res_ops[0] = captures[0];
2256 : 0 : res_ops[1] = captures[1];
2257 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 54, __FILE__, __LINE__, false);
2258 : 0 : return true;
2259 : : }
2260 : : }
2261 : : }
2262 : : }
2263 : : }
2264 : : }
2265 : : break;
2266 : : }
2267 : : default:;
2268 : : }
2269 : : }
2270 : : break;
2271 : : default:;
2272 : : }
2273 : : }
2274 : : }
2275 : : break;
2276 : : }
2277 : : default:;
2278 : : }
2279 : : }
2280 : : break;
2281 : : default:;
2282 : : }
2283 : : }
2284 : : break;
2285 : : default:;
2286 : : }
2287 : : }
2288 : : break;
2289 : : }
2290 : : default:;
2291 : : }
2292 : : }
2293 : : break;
2294 : : default:;
2295 : : }
2296 : : }
2297 : : }
2298 : 29105961 : break;
2299 : : }
2300 : : default:;
2301 : : }
2302 : : break;
2303 : : }
2304 : 5654614 : case PLUS_EXPR:
2305 : 5654614 : {
2306 : 5654614 : tree _p0 = gimple_assign_rhs1 (_a1);
2307 : 5654614 : _p0 = do_valueize (valueize, _p0);
2308 : 5654614 : tree _p1 = gimple_assign_rhs2 (_a1);
2309 : 5654614 : _p1 = do_valueize (valueize, _p1);
2310 : 5654614 : if (tree_swap_operands_p (_p0, _p1))
2311 : 115835 : std::swap (_p0, _p1);
2312 : 5654614 : switch (TREE_CODE (_p0))
2313 : : {
2314 : 5654606 : case SSA_NAME:
2315 : 5654606 : if (gimple *_d2 = get_def (valueize, _p0))
2316 : : {
2317 : 5654606 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2318 : 4433410 : switch (gimple_assign_rhs_code (_a2))
2319 : : {
2320 : 16229 : case MIN_EXPR:
2321 : 16229 : {
2322 : 16229 : tree _q20 = gimple_assign_rhs1 (_a2);
2323 : 16229 : _q20 = do_valueize (valueize, _q20);
2324 : 16229 : tree _q21 = gimple_assign_rhs2 (_a2);
2325 : 16229 : _q21 = do_valueize (valueize, _q21);
2326 : 16229 : if (tree_swap_operands_p (_q20, _q21))
2327 : 20 : std::swap (_q20, _q21);
2328 : 16229 : switch (TREE_CODE (_q21))
2329 : : {
2330 : 7156 : case INTEGER_CST:
2331 : 7156 : {
2332 : 7156 : switch (TREE_CODE (_p1))
2333 : : {
2334 : 1620 : case INTEGER_CST:
2335 : 1620 : {
2336 : 1620 : {
2337 : 1620 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q21 };
2338 : 1620 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2339 : : )
2340 : : {
2341 : 1300 : if (types_match (type, captures[0], captures[1])
2342 : : )
2343 : : {
2344 : 1300 : {
2345 : 1300 : unsigned precision = TYPE_PRECISION (type);
2346 : 1300 : wide_int cst_1 = wi::to_wide (captures[1]);
2347 : 1300 : wide_int cst_2 = wi::to_wide (captures[2]);
2348 : 1300 : wide_int max = wi::mask (precision, false, precision);
2349 : 1300 : wide_int sum = wi::add (cst_1, cst_2);
2350 : 1300 : if (wi::eq_p (max, sum)
2351 : : )
2352 : : {
2353 : 38 : {
2354 : 38 : res_ops[0] = captures[0];
2355 : 38 : res_ops[1] = captures[1];
2356 : 38 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 55, __FILE__, __LINE__, false);
2357 : 38 : return true;
2358 : : }
2359 : : }
2360 : 1300 : }
2361 : : }
2362 : : }
2363 : : }
2364 : 1582 : break;
2365 : : }
2366 : : default:;
2367 : : }
2368 : : break;
2369 : : }
2370 : : default:;
2371 : : }
2372 : 29105961 : break;
2373 : : }
2374 : : default:;
2375 : : }
2376 : : }
2377 : : break;
2378 : : default:;
2379 : : }
2380 : 29105961 : break;
2381 : : }
2382 : : default:;
2383 : : }
2384 : 3664624 : else if (gphi *_a1 = dyn_cast <gphi *> (_d1))
2385 : : {
2386 : 3664557 : basic_block _b1 = gimple_bb (_a1);
2387 : 3664557 : tree _p1, _p2;
2388 : 3664557 : gcond *_cond_1 = match_cond_with_binary_phi (_a1, &_p1, &_p2);
2389 : 3664557 : if (_cond_1)
2390 : : {
2391 : 729102 : tree _cond_lhs_1 = gimple_cond_lhs (_cond_1);
2392 : 729102 : tree _cond_rhs_1 = gimple_cond_rhs (_cond_1);
2393 : 729102 : tree _p0 = build2 (gimple_cond_code (_cond_1), boolean_type_node, _cond_lhs_1, _cond_rhs_1);
2394 : 729102 : switch (TREE_CODE (_p0))
2395 : : {
2396 : 0 : case SSA_NAME:
2397 : 0 : if (gimple *_d2 = get_def (valueize, _p0))
2398 : : {
2399 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2400 : 0 : switch (gimple_assign_rhs_code (_a2))
2401 : : {
2402 : 0 : case GE_EXPR:
2403 : 0 : {
2404 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
2405 : 0 : _q20 = do_valueize (valueize, _q20);
2406 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
2407 : 0 : _q21 = do_valueize (valueize, _q21);
2408 : 0 : switch (TREE_CODE (_q20))
2409 : : {
2410 : 0 : case SSA_NAME:
2411 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
2412 : : {
2413 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2414 : 0 : switch (gimple_assign_rhs_code (_a3))
2415 : : {
2416 : 0 : case PLUS_EXPR:
2417 : 0 : {
2418 : 0 : tree _q30 = gimple_assign_rhs1 (_a3);
2419 : 0 : _q30 = do_valueize (valueize, _q30);
2420 : 0 : tree _q31 = gimple_assign_rhs2 (_a3);
2421 : 0 : _q31 = do_valueize (valueize, _q31);
2422 : 0 : if (tree_swap_operands_p (_q30, _q31))
2423 : 0 : std::swap (_q30, _q31);
2424 : 0 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
2425 : : {
2426 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
2427 : : {
2428 : 0 : if (integer_minus_onep (_p2))
2429 : : {
2430 : 0 : {
2431 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
2432 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2433 : : )
2434 : : {
2435 : 0 : if (types_match (type, captures[0], captures[1])
2436 : : )
2437 : : {
2438 : 0 : {
2439 : 0 : res_ops[0] = captures[0];
2440 : 0 : res_ops[1] = captures[1];
2441 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
2442 : 0 : return true;
2443 : : }
2444 : : }
2445 : : }
2446 : : }
2447 : : }
2448 : : }
2449 : : }
2450 : 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
2451 : : {
2452 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
2453 : : {
2454 : 0 : if (integer_minus_onep (_p2))
2455 : : {
2456 : 0 : {
2457 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
2458 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2459 : : )
2460 : : {
2461 : 0 : if (types_match (type, captures[0], captures[1])
2462 : : )
2463 : : {
2464 : 0 : {
2465 : 0 : res_ops[0] = captures[0];
2466 : 0 : res_ops[1] = captures[1];
2467 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
2468 : 0 : return true;
2469 : : }
2470 : : }
2471 : : }
2472 : : }
2473 : : }
2474 : : }
2475 : : }
2476 : 3664540 : break;
2477 : : }
2478 : : default:;
2479 : : }
2480 : : }
2481 : : break;
2482 : : default:;
2483 : : }
2484 : : break;
2485 : : }
2486 : 0 : case LT_EXPR:
2487 : 0 : {
2488 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
2489 : 0 : _q20 = do_valueize (valueize, _q20);
2490 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
2491 : 0 : _q21 = do_valueize (valueize, _q21);
2492 : 0 : switch (TREE_CODE (_q20))
2493 : : {
2494 : 0 : case SSA_NAME:
2495 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
2496 : : {
2497 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2498 : 0 : switch (gimple_assign_rhs_code (_a3))
2499 : : {
2500 : 0 : case PLUS_EXPR:
2501 : 0 : {
2502 : 0 : tree _q30 = gimple_assign_rhs1 (_a3);
2503 : 0 : _q30 = do_valueize (valueize, _q30);
2504 : 0 : tree _q31 = gimple_assign_rhs2 (_a3);
2505 : 0 : _q31 = do_valueize (valueize, _q31);
2506 : 0 : if (tree_swap_operands_p (_q30, _q31))
2507 : 0 : std::swap (_q30, _q31);
2508 : 0 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
2509 : : {
2510 : 0 : if (integer_minus_onep (_p1))
2511 : : {
2512 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
2513 : : {
2514 : 0 : {
2515 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
2516 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2517 : : )
2518 : : {
2519 : 0 : if (types_match (type, captures[0], captures[1])
2520 : : )
2521 : : {
2522 : 0 : {
2523 : 0 : res_ops[0] = captures[0];
2524 : 0 : res_ops[1] = captures[1];
2525 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
2526 : 0 : return true;
2527 : : }
2528 : : }
2529 : : }
2530 : : }
2531 : : }
2532 : : }
2533 : : }
2534 : 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
2535 : : {
2536 : 0 : if (integer_minus_onep (_p1))
2537 : : {
2538 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
2539 : : {
2540 : 0 : {
2541 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
2542 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2543 : : )
2544 : : {
2545 : 0 : if (types_match (type, captures[0], captures[1])
2546 : : )
2547 : : {
2548 : 0 : {
2549 : 0 : res_ops[0] = captures[0];
2550 : 0 : res_ops[1] = captures[1];
2551 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
2552 : 0 : return true;
2553 : : }
2554 : : }
2555 : : }
2556 : : }
2557 : : }
2558 : : }
2559 : : }
2560 : 3664540 : break;
2561 : : }
2562 : : default:;
2563 : : }
2564 : : }
2565 : : break;
2566 : : default:;
2567 : : }
2568 : : break;
2569 : : }
2570 : 0 : case LE_EXPR:
2571 : 0 : {
2572 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
2573 : 0 : _q20 = do_valueize (valueize, _q20);
2574 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
2575 : 0 : _q21 = do_valueize (valueize, _q21);
2576 : 0 : switch (TREE_CODE (_q21))
2577 : : {
2578 : 0 : case SSA_NAME:
2579 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
2580 : : {
2581 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2582 : 0 : switch (gimple_assign_rhs_code (_a3))
2583 : : {
2584 : 0 : case PLUS_EXPR:
2585 : 0 : {
2586 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
2587 : 0 : _q40 = do_valueize (valueize, _q40);
2588 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
2589 : 0 : _q41 = do_valueize (valueize, _q41);
2590 : 0 : if (tree_swap_operands_p (_q40, _q41))
2591 : 0 : std::swap (_q40, _q41);
2592 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
2593 : : {
2594 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
2595 : : {
2596 : 0 : if (integer_minus_onep (_p2))
2597 : : {
2598 : 0 : {
2599 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
2600 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2601 : : )
2602 : : {
2603 : 0 : if (types_match (type, captures[0], captures[1])
2604 : : )
2605 : : {
2606 : 0 : {
2607 : 0 : res_ops[0] = captures[0];
2608 : 0 : res_ops[1] = captures[1];
2609 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 49, __FILE__, __LINE__, false);
2610 : 0 : return true;
2611 : : }
2612 : : }
2613 : : }
2614 : : }
2615 : : }
2616 : : }
2617 : : }
2618 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
2619 : : {
2620 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
2621 : : {
2622 : 0 : if (integer_minus_onep (_p2))
2623 : : {
2624 : 0 : {
2625 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
2626 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2627 : : )
2628 : : {
2629 : 0 : if (types_match (type, captures[0], captures[1])
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", 49, __FILE__, __LINE__, false);
2636 : 0 : return true;
2637 : : }
2638 : : }
2639 : : }
2640 : : }
2641 : : }
2642 : : }
2643 : : }
2644 : 0 : break;
2645 : : }
2646 : : default:;
2647 : : }
2648 : : }
2649 : : break;
2650 : 0 : default:;
2651 : : }
2652 : 0 : switch (TREE_CODE (_q20))
2653 : : {
2654 : 0 : case SSA_NAME:
2655 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
2656 : : {
2657 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2658 : 0 : switch (gimple_assign_rhs_code (_a3))
2659 : : {
2660 : 0 : case PLUS_EXPR:
2661 : 0 : {
2662 : 0 : tree _q30 = gimple_assign_rhs1 (_a3);
2663 : 0 : _q30 = do_valueize (valueize, _q30);
2664 : 0 : tree _q31 = gimple_assign_rhs2 (_a3);
2665 : 0 : _q31 = do_valueize (valueize, _q31);
2666 : 0 : if (tree_swap_operands_p (_q30, _q31))
2667 : 0 : std::swap (_q30, _q31);
2668 : 0 : switch (TREE_CODE (_q30))
2669 : : {
2670 : 0 : case SSA_NAME:
2671 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
2672 : : {
2673 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
2674 : 0 : switch (gimple_assign_rhs_code (_a4))
2675 : : {
2676 : 0 : CASE_CONVERT:
2677 : 0 : {
2678 : 0 : tree _q40 = gimple_assign_rhs1 (_a4);
2679 : 0 : _q40 = do_valueize (valueize, _q40);
2680 : 0 : switch (TREE_CODE (_q31))
2681 : : {
2682 : 0 : case SSA_NAME:
2683 : 0 : if (gimple *_d5 = get_def (valueize, _q31))
2684 : : {
2685 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2686 : 0 : switch (gimple_assign_rhs_code (_a5))
2687 : : {
2688 : 0 : CASE_CONVERT:
2689 : 0 : {
2690 : 0 : tree _q60 = gimple_assign_rhs1 (_a5);
2691 : 0 : _q60 = do_valueize (valueize, _q60);
2692 : 0 : switch (TREE_CODE (_q21))
2693 : : {
2694 : 0 : case INTEGER_CST:
2695 : 0 : {
2696 : 0 : switch (TREE_CODE (_p1))
2697 : : {
2698 : 0 : case SSA_NAME:
2699 : 0 : if (gimple *_d6 = get_def (valueize, _p1))
2700 : : {
2701 : 0 : if (gassign *_a6 = dyn_cast <gassign *> (_d6))
2702 : 0 : switch (gimple_assign_rhs_code (_a6))
2703 : : {
2704 : 0 : case PLUS_EXPR:
2705 : 0 : {
2706 : 0 : tree _q90 = gimple_assign_rhs1 (_a6);
2707 : 0 : _q90 = do_valueize (valueize, _q90);
2708 : 0 : tree _q91 = gimple_assign_rhs2 (_a6);
2709 : 0 : _q91 = do_valueize (valueize, _q91);
2710 : 0 : if (tree_swap_operands_p (_q90, _q91))
2711 : 0 : std::swap (_q90, _q91);
2712 : 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
2713 : : {
2714 : 0 : if ((_q91 == _q60 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q60, 0) && types_match (_q91, _q60)))
2715 : : {
2716 : 0 : if (integer_minus_onep (_p2))
2717 : : {
2718 : 0 : {
2719 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
2720 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2721 : : )
2722 : : {
2723 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
2724 : : )
2725 : : {
2726 : 0 : {
2727 : 0 : unsigned precision = TYPE_PRECISION (type);
2728 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
2729 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
2730 : 0 : wide_int c4 = wi::to_wide (captures[4]);
2731 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
2732 : : )
2733 : : {
2734 : 0 : {
2735 : 0 : res_ops[0] = captures[0];
2736 : 0 : res_ops[1] = captures[1];
2737 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
2738 : 0 : return true;
2739 : : }
2740 : : }
2741 : 0 : }
2742 : : }
2743 : : }
2744 : : }
2745 : : }
2746 : : }
2747 : : }
2748 : 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
2749 : : {
2750 : 0 : if ((_q91 == _q40 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q40, 0) && types_match (_q91, _q40)))
2751 : : {
2752 : 0 : if (integer_minus_onep (_p2))
2753 : : {
2754 : 0 : {
2755 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
2756 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2757 : : )
2758 : : {
2759 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
2760 : : )
2761 : : {
2762 : 0 : {
2763 : 0 : unsigned precision = TYPE_PRECISION (type);
2764 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
2765 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
2766 : 0 : wide_int c4 = wi::to_wide (captures[4]);
2767 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
2768 : : )
2769 : : {
2770 : 0 : {
2771 : 0 : res_ops[0] = captures[0];
2772 : 0 : res_ops[1] = captures[1];
2773 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
2774 : 0 : return true;
2775 : : }
2776 : : }
2777 : 0 : }
2778 : : }
2779 : : }
2780 : : }
2781 : : }
2782 : : }
2783 : : }
2784 : 3664540 : break;
2785 : : }
2786 : : default:;
2787 : : }
2788 : : }
2789 : : break;
2790 : : default:;
2791 : : }
2792 : : break;
2793 : : }
2794 : : default:;
2795 : : }
2796 : : break;
2797 : : }
2798 : : default:;
2799 : : }
2800 : : }
2801 : : break;
2802 : : default:;
2803 : : }
2804 : : break;
2805 : : }
2806 : : default:;
2807 : : }
2808 : : }
2809 : : break;
2810 : : default:;
2811 : : }
2812 : 3664540 : break;
2813 : : }
2814 : : default:;
2815 : : }
2816 : : }
2817 : : break;
2818 : : default:;
2819 : : }
2820 : : break;
2821 : : }
2822 : 0 : case GT_EXPR:
2823 : 0 : {
2824 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
2825 : 0 : _q20 = do_valueize (valueize, _q20);
2826 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
2827 : 0 : _q21 = do_valueize (valueize, _q21);
2828 : 0 : switch (TREE_CODE (_q21))
2829 : : {
2830 : 0 : case SSA_NAME:
2831 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
2832 : : {
2833 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2834 : 0 : switch (gimple_assign_rhs_code (_a3))
2835 : : {
2836 : 0 : case PLUS_EXPR:
2837 : 0 : {
2838 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
2839 : 0 : _q40 = do_valueize (valueize, _q40);
2840 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
2841 : 0 : _q41 = do_valueize (valueize, _q41);
2842 : 0 : if (tree_swap_operands_p (_q40, _q41))
2843 : 0 : std::swap (_q40, _q41);
2844 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
2845 : : {
2846 : 0 : if (integer_minus_onep (_p1))
2847 : : {
2848 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
2849 : : {
2850 : 0 : {
2851 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
2852 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2853 : : )
2854 : : {
2855 : 0 : if (types_match (type, captures[0], captures[1])
2856 : : )
2857 : : {
2858 : 0 : {
2859 : 0 : res_ops[0] = captures[0];
2860 : 0 : res_ops[1] = captures[1];
2861 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
2862 : 0 : return true;
2863 : : }
2864 : : }
2865 : : }
2866 : : }
2867 : : }
2868 : : }
2869 : : }
2870 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
2871 : : {
2872 : 0 : if (integer_minus_onep (_p1))
2873 : : {
2874 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
2875 : : {
2876 : 0 : {
2877 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
2878 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2879 : : )
2880 : : {
2881 : 0 : if (types_match (type, captures[0], captures[1])
2882 : : )
2883 : : {
2884 : 0 : {
2885 : 0 : res_ops[0] = captures[0];
2886 : 0 : res_ops[1] = captures[1];
2887 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
2888 : 0 : return true;
2889 : : }
2890 : : }
2891 : : }
2892 : : }
2893 : : }
2894 : : }
2895 : : }
2896 : 3664540 : break;
2897 : : }
2898 : : default:;
2899 : : }
2900 : : }
2901 : : break;
2902 : : default:;
2903 : : }
2904 : : break;
2905 : : }
2906 : 0 : case EQ_EXPR:
2907 : 0 : {
2908 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
2909 : 0 : _q20 = do_valueize (valueize, _q20);
2910 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
2911 : 0 : _q21 = do_valueize (valueize, _q21);
2912 : 0 : if (tree_swap_operands_p (_q20, _q21))
2913 : 0 : std::swap (_q20, _q21);
2914 : 0 : switch (TREE_CODE (_q20))
2915 : : {
2916 : 0 : case SSA_NAME:
2917 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
2918 : : {
2919 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
2920 : 0 : switch (gimple_assign_rhs_code (_a3))
2921 : : {
2922 : 0 : case IMAGPART_EXPR:
2923 : 0 : {
2924 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a3), 0);
2925 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
2926 : 0 : || is_gimple_min_invariant (_q30)))
2927 : : {
2928 : 0 : _q30 = do_valueize (valueize, _q30);
2929 : 0 : switch (TREE_CODE (_q30))
2930 : : {
2931 : 0 : case SSA_NAME:
2932 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
2933 : : {
2934 : 0 : if (gcall *_c4 = dyn_cast <gcall *> (_d4))
2935 : 0 : switch (gimple_call_combined_fn (_c4))
2936 : : {
2937 : 0 : case CFN_ADD_OVERFLOW:
2938 : 0 : if (gimple_call_num_args (_c4) == 2)
2939 : : {
2940 : 0 : tree _q40 = gimple_call_arg (_c4, 0);
2941 : 0 : _q40 = do_valueize (valueize, _q40);
2942 : 0 : tree _q41 = gimple_call_arg (_c4, 1);
2943 : 0 : _q41 = do_valueize (valueize, _q41);
2944 : 0 : if (tree_swap_operands_p (_q40, _q41))
2945 : 0 : std::swap (_q40, _q41);
2946 : 0 : if (integer_zerop (_q21))
2947 : : {
2948 : 0 : switch (TREE_CODE (_p1))
2949 : : {
2950 : 0 : case SSA_NAME:
2951 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
2952 : : {
2953 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
2954 : 0 : switch (gimple_assign_rhs_code (_a5))
2955 : : {
2956 : 0 : case REALPART_EXPR:
2957 : 0 : {
2958 : 0 : tree _q80 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
2959 : 0 : if ((TREE_CODE (_q80) == SSA_NAME
2960 : 0 : || is_gimple_min_invariant (_q80)))
2961 : : {
2962 : 0 : _q80 = do_valueize (valueize, _q80);
2963 : 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
2964 : : {
2965 : 0 : if (integer_minus_onep (_p2))
2966 : : {
2967 : 0 : {
2968 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
2969 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2970 : : )
2971 : : {
2972 : 0 : if (types_match (type, captures[0], captures[1])
2973 : : )
2974 : : {
2975 : 0 : {
2976 : 0 : res_ops[0] = captures[0];
2977 : 0 : res_ops[1] = captures[1];
2978 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 52, __FILE__, __LINE__, false);
2979 : 0 : return true;
2980 : : }
2981 : : }
2982 : : }
2983 : : }
2984 : : }
2985 : : }
2986 : : }
2987 : : break;
2988 : : }
2989 : : default:;
2990 : : }
2991 : : }
2992 : : break;
2993 : : default:;
2994 : : }
2995 : : }
2996 : : }
2997 : : break;
2998 : : default:;
2999 : : }
3000 : : }
3001 : : break;
3002 : : default:;
3003 : : }
3004 : : }
3005 : : break;
3006 : : }
3007 : : default:;
3008 : : }
3009 : : }
3010 : : break;
3011 : : default:;
3012 : : }
3013 : 3664540 : break;
3014 : : }
3015 : 0 : case NE_EXPR:
3016 : 0 : {
3017 : 0 : tree _q20 = gimple_assign_rhs1 (_a2);
3018 : 0 : _q20 = do_valueize (valueize, _q20);
3019 : 0 : tree _q21 = gimple_assign_rhs2 (_a2);
3020 : 0 : _q21 = do_valueize (valueize, _q21);
3021 : 0 : if (tree_swap_operands_p (_q20, _q21))
3022 : 0 : std::swap (_q20, _q21);
3023 : 0 : switch (TREE_CODE (_q20))
3024 : : {
3025 : 0 : case SSA_NAME:
3026 : 0 : if (gimple *_d3 = get_def (valueize, _q20))
3027 : : {
3028 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
3029 : 0 : switch (gimple_assign_rhs_code (_a3))
3030 : : {
3031 : 0 : case IMAGPART_EXPR:
3032 : 0 : {
3033 : 0 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a3), 0);
3034 : 0 : if ((TREE_CODE (_q30) == SSA_NAME
3035 : 0 : || is_gimple_min_invariant (_q30)))
3036 : : {
3037 : 0 : _q30 = do_valueize (valueize, _q30);
3038 : 0 : switch (TREE_CODE (_q30))
3039 : : {
3040 : 0 : case SSA_NAME:
3041 : 0 : if (gimple *_d4 = get_def (valueize, _q30))
3042 : : {
3043 : 0 : if (gcall *_c4 = dyn_cast <gcall *> (_d4))
3044 : 0 : switch (gimple_call_combined_fn (_c4))
3045 : : {
3046 : 0 : case CFN_ADD_OVERFLOW:
3047 : 0 : if (gimple_call_num_args (_c4) == 2)
3048 : : {
3049 : 0 : tree _q40 = gimple_call_arg (_c4, 0);
3050 : 0 : _q40 = do_valueize (valueize, _q40);
3051 : 0 : tree _q41 = gimple_call_arg (_c4, 1);
3052 : 0 : _q41 = do_valueize (valueize, _q41);
3053 : 0 : if (tree_swap_operands_p (_q40, _q41))
3054 : 0 : std::swap (_q40, _q41);
3055 : 0 : if (integer_zerop (_q21))
3056 : : {
3057 : 0 : if (integer_minus_onep (_p1))
3058 : : {
3059 : 0 : switch (TREE_CODE (_p2))
3060 : : {
3061 : 0 : case SSA_NAME:
3062 : 0 : if (gimple *_d5 = get_def (valueize, _p2))
3063 : : {
3064 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3065 : 0 : switch (gimple_assign_rhs_code (_a5))
3066 : : {
3067 : 0 : case REALPART_EXPR:
3068 : 0 : {
3069 : 0 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
3070 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
3071 : 0 : || is_gimple_min_invariant (_q90)))
3072 : : {
3073 : 0 : _q90 = do_valueize (valueize, _q90);
3074 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
3075 : : {
3076 : 0 : {
3077 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
3078 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3079 : : )
3080 : : {
3081 : 0 : if (types_match (type, captures[0], captures[1])
3082 : : )
3083 : : {
3084 : 0 : {
3085 : 0 : res_ops[0] = captures[0];
3086 : 0 : res_ops[1] = captures[1];
3087 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 53, __FILE__, __LINE__, false);
3088 : 0 : return true;
3089 : : }
3090 : : }
3091 : : }
3092 : : }
3093 : : }
3094 : : }
3095 : : break;
3096 : : }
3097 : : default:;
3098 : : }
3099 : : }
3100 : : break;
3101 : : default:;
3102 : : }
3103 : : }
3104 : : }
3105 : 0 : switch (TREE_CODE (_q41))
3106 : : {
3107 : 0 : case INTEGER_CST:
3108 : 0 : {
3109 : 0 : if (integer_zerop (_q21))
3110 : : {
3111 : 0 : if (integer_minus_onep (_p1))
3112 : : {
3113 : 0 : switch (TREE_CODE (_p2))
3114 : : {
3115 : 0 : case SSA_NAME:
3116 : 0 : if (gimple *_d5 = get_def (valueize, _p2))
3117 : : {
3118 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3119 : 0 : switch (gimple_assign_rhs_code (_a5))
3120 : : {
3121 : 0 : case REALPART_EXPR:
3122 : 0 : {
3123 : 0 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a5), 0);
3124 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
3125 : 0 : || is_gimple_min_invariant (_q90)))
3126 : : {
3127 : 0 : _q90 = do_valueize (valueize, _q90);
3128 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
3129 : : {
3130 : 0 : {
3131 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
3132 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3133 : : )
3134 : : {
3135 : 0 : if (types_match (type, captures[0]) && int_fits_type_p (captures[1], type)
3136 : : )
3137 : : {
3138 : 0 : {
3139 : 0 : res_ops[0] = captures[0];
3140 : 0 : res_ops[1] = captures[1];
3141 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 54, __FILE__, __LINE__, false);
3142 : 0 : return true;
3143 : : }
3144 : : }
3145 : : }
3146 : : }
3147 : : }
3148 : : }
3149 : : break;
3150 : : }
3151 : : default:;
3152 : : }
3153 : : }
3154 : : break;
3155 : : default:;
3156 : : }
3157 : : }
3158 : : }
3159 : : break;
3160 : : }
3161 : : default:;
3162 : : }
3163 : : }
3164 : : break;
3165 : : default:;
3166 : : }
3167 : : }
3168 : : break;
3169 : : default:;
3170 : : }
3171 : : }
3172 : : break;
3173 : : }
3174 : : default:;
3175 : : }
3176 : : }
3177 : : break;
3178 : : default:;
3179 : : }
3180 : 3664540 : break;
3181 : : }
3182 : : default:;
3183 : : }
3184 : : }
3185 : : break;
3186 : 11137 : case GE_EXPR:
3187 : 11137 : {
3188 : 11137 : tree _q20 = TREE_OPERAND (_p0, 0);
3189 : 11137 : if ((TREE_CODE (_q20) == SSA_NAME
3190 : 11137 : || is_gimple_min_invariant (_q20)))
3191 : : {
3192 : 11137 : _q20 = do_valueize (valueize, _q20);
3193 : 11137 : tree _q21 = TREE_OPERAND (_p0, 1);
3194 : 11137 : if ((TREE_CODE (_q21) == SSA_NAME
3195 : 11137 : || is_gimple_min_invariant (_q21)))
3196 : : {
3197 : 11137 : _q21 = do_valueize (valueize, _q21);
3198 : 11137 : switch (TREE_CODE (_q20))
3199 : : {
3200 : 11131 : case SSA_NAME:
3201 : 11131 : if (gimple *_d2 = get_def (valueize, _q20))
3202 : : {
3203 : 11131 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3204 : 11738 : switch (gimple_assign_rhs_code (_a2))
3205 : : {
3206 : 1226 : case PLUS_EXPR:
3207 : 1226 : {
3208 : 1226 : tree _q30 = gimple_assign_rhs1 (_a2);
3209 : 1226 : _q30 = do_valueize (valueize, _q30);
3210 : 1226 : tree _q31 = gimple_assign_rhs2 (_a2);
3211 : 1226 : _q31 = do_valueize (valueize, _q31);
3212 : 1226 : if (tree_swap_operands_p (_q30, _q31))
3213 : 0 : std::swap (_q30, _q31);
3214 : 1226 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
3215 : : {
3216 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
3217 : : {
3218 : 0 : if (integer_minus_onep (_p2))
3219 : : {
3220 : 0 : {
3221 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
3222 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3223 : : )
3224 : : {
3225 : 0 : if (types_match (type, captures[0], captures[1])
3226 : : )
3227 : : {
3228 : 0 : {
3229 : 0 : res_ops[0] = captures[0];
3230 : 0 : res_ops[1] = captures[1];
3231 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
3232 : 0 : return true;
3233 : : }
3234 : : }
3235 : : }
3236 : : }
3237 : : }
3238 : : }
3239 : : }
3240 : 1226 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
3241 : : {
3242 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
3243 : : {
3244 : 0 : if (integer_minus_onep (_p2))
3245 : : {
3246 : 0 : {
3247 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
3248 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3249 : : )
3250 : : {
3251 : 0 : if (types_match (type, captures[0], captures[1])
3252 : : )
3253 : : {
3254 : 0 : {
3255 : 0 : res_ops[0] = captures[0];
3256 : 0 : res_ops[1] = captures[1];
3257 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
3258 : 0 : return true;
3259 : : }
3260 : : }
3261 : : }
3262 : : }
3263 : : }
3264 : : }
3265 : : }
3266 : 3664540 : break;
3267 : : }
3268 : : default:;
3269 : : }
3270 : : }
3271 : : break;
3272 : : default:;
3273 : : }
3274 : : }
3275 : : }
3276 : : break;
3277 : : }
3278 : 45605 : case LT_EXPR:
3279 : 45605 : {
3280 : 45605 : tree _q20 = TREE_OPERAND (_p0, 0);
3281 : 45605 : if ((TREE_CODE (_q20) == SSA_NAME
3282 : 45605 : || is_gimple_min_invariant (_q20)))
3283 : : {
3284 : 45605 : _q20 = do_valueize (valueize, _q20);
3285 : 45605 : tree _q21 = TREE_OPERAND (_p0, 1);
3286 : 45605 : if ((TREE_CODE (_q21) == SSA_NAME
3287 : 45605 : || is_gimple_min_invariant (_q21)))
3288 : : {
3289 : 45605 : _q21 = do_valueize (valueize, _q21);
3290 : 45605 : switch (TREE_CODE (_q20))
3291 : : {
3292 : 45605 : case SSA_NAME:
3293 : 45605 : if (gimple *_d2 = get_def (valueize, _q20))
3294 : : {
3295 : 45605 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3296 : 39378 : switch (gimple_assign_rhs_code (_a2))
3297 : : {
3298 : 1923 : case PLUS_EXPR:
3299 : 1923 : {
3300 : 1923 : tree _q30 = gimple_assign_rhs1 (_a2);
3301 : 1923 : _q30 = do_valueize (valueize, _q30);
3302 : 1923 : tree _q31 = gimple_assign_rhs2 (_a2);
3303 : 1923 : _q31 = do_valueize (valueize, _q31);
3304 : 1923 : if (tree_swap_operands_p (_q30, _q31))
3305 : 0 : std::swap (_q30, _q31);
3306 : 1923 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
3307 : : {
3308 : 822 : if (integer_minus_onep (_p1))
3309 : : {
3310 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
3311 : : {
3312 : 0 : {
3313 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q20 };
3314 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3315 : : )
3316 : : {
3317 : 0 : if (types_match (type, captures[0], captures[1])
3318 : : )
3319 : : {
3320 : 0 : {
3321 : 0 : res_ops[0] = captures[0];
3322 : 0 : res_ops[1] = captures[1];
3323 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
3324 : 0 : return true;
3325 : : }
3326 : : }
3327 : : }
3328 : : }
3329 : : }
3330 : : }
3331 : : }
3332 : 1923 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
3333 : : {
3334 : 169 : if (integer_minus_onep (_p1))
3335 : : {
3336 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
3337 : : {
3338 : 0 : {
3339 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q20 };
3340 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3341 : : )
3342 : : {
3343 : 0 : if (types_match (type, captures[0], captures[1])
3344 : : )
3345 : : {
3346 : 0 : {
3347 : 0 : res_ops[0] = captures[0];
3348 : 0 : res_ops[1] = captures[1];
3349 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
3350 : 0 : return true;
3351 : : }
3352 : : }
3353 : : }
3354 : : }
3355 : : }
3356 : : }
3357 : : }
3358 : 3664540 : break;
3359 : : }
3360 : : default:;
3361 : : }
3362 : : }
3363 : : break;
3364 : : default:;
3365 : : }
3366 : : }
3367 : : }
3368 : : break;
3369 : : }
3370 : 17573 : case LE_EXPR:
3371 : 17573 : {
3372 : 17573 : tree _q20 = TREE_OPERAND (_p0, 0);
3373 : 17573 : if ((TREE_CODE (_q20) == SSA_NAME
3374 : 17573 : || is_gimple_min_invariant (_q20)))
3375 : : {
3376 : 17573 : _q20 = do_valueize (valueize, _q20);
3377 : 17573 : tree _q21 = TREE_OPERAND (_p0, 1);
3378 : 17573 : if ((TREE_CODE (_q21) == SSA_NAME
3379 : 17573 : || is_gimple_min_invariant (_q21)))
3380 : : {
3381 : 17573 : _q21 = do_valueize (valueize, _q21);
3382 : 17573 : switch (TREE_CODE (_q21))
3383 : : {
3384 : 5331 : case SSA_NAME:
3385 : 5331 : if (gimple *_d2 = get_def (valueize, _q21))
3386 : : {
3387 : 5331 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3388 : 6692 : switch (gimple_assign_rhs_code (_a2))
3389 : : {
3390 : 572 : case PLUS_EXPR:
3391 : 572 : {
3392 : 572 : tree _q40 = gimple_assign_rhs1 (_a2);
3393 : 572 : _q40 = do_valueize (valueize, _q40);
3394 : 572 : tree _q41 = gimple_assign_rhs2 (_a2);
3395 : 572 : _q41 = do_valueize (valueize, _q41);
3396 : 572 : if (tree_swap_operands_p (_q40, _q41))
3397 : 0 : std::swap (_q40, _q41);
3398 : 572 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
3399 : : {
3400 : 20 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
3401 : : {
3402 : 0 : if (integer_minus_onep (_p2))
3403 : : {
3404 : 0 : {
3405 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
3406 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3407 : : )
3408 : : {
3409 : 0 : if (types_match (type, captures[0], captures[1])
3410 : : )
3411 : : {
3412 : 0 : {
3413 : 0 : res_ops[0] = captures[0];
3414 : 0 : res_ops[1] = captures[1];
3415 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 49, __FILE__, __LINE__, false);
3416 : 0 : return true;
3417 : : }
3418 : : }
3419 : : }
3420 : : }
3421 : : }
3422 : : }
3423 : : }
3424 : 572 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
3425 : : {
3426 : 4 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
3427 : : {
3428 : 0 : if (integer_minus_onep (_p2))
3429 : : {
3430 : 0 : {
3431 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
3432 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3433 : : )
3434 : : {
3435 : 0 : if (types_match (type, captures[0], captures[1])
3436 : : )
3437 : : {
3438 : 0 : {
3439 : 0 : res_ops[0] = captures[0];
3440 : 0 : res_ops[1] = captures[1];
3441 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 49, __FILE__, __LINE__, false);
3442 : 0 : return true;
3443 : : }
3444 : : }
3445 : : }
3446 : : }
3447 : : }
3448 : : }
3449 : : }
3450 : 17573 : break;
3451 : : }
3452 : : default:;
3453 : : }
3454 : : }
3455 : : break;
3456 : 17573 : default:;
3457 : : }
3458 : 17573 : switch (TREE_CODE (_q20))
3459 : : {
3460 : 17573 : case SSA_NAME:
3461 : 17573 : if (gimple *_d2 = get_def (valueize, _q20))
3462 : : {
3463 : 17573 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3464 : 19337 : switch (gimple_assign_rhs_code (_a2))
3465 : : {
3466 : 3443 : case PLUS_EXPR:
3467 : 3443 : {
3468 : 3443 : tree _q30 = gimple_assign_rhs1 (_a2);
3469 : 3443 : _q30 = do_valueize (valueize, _q30);
3470 : 3443 : tree _q31 = gimple_assign_rhs2 (_a2);
3471 : 3443 : _q31 = do_valueize (valueize, _q31);
3472 : 3443 : if (tree_swap_operands_p (_q30, _q31))
3473 : 0 : std::swap (_q30, _q31);
3474 : 3443 : switch (TREE_CODE (_q30))
3475 : : {
3476 : 3443 : case SSA_NAME:
3477 : 3443 : if (gimple *_d3 = get_def (valueize, _q30))
3478 : : {
3479 : 3443 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
3480 : 2959 : switch (gimple_assign_rhs_code (_a3))
3481 : : {
3482 : 1173 : CASE_CONVERT:
3483 : 1173 : {
3484 : 1173 : tree _q40 = gimple_assign_rhs1 (_a3);
3485 : 1173 : _q40 = do_valueize (valueize, _q40);
3486 : 1173 : switch (TREE_CODE (_q31))
3487 : : {
3488 : 46 : case SSA_NAME:
3489 : 46 : if (gimple *_d4 = get_def (valueize, _q31))
3490 : : {
3491 : 46 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3492 : 46 : switch (gimple_assign_rhs_code (_a4))
3493 : : {
3494 : 4 : CASE_CONVERT:
3495 : 4 : {
3496 : 4 : tree _q60 = gimple_assign_rhs1 (_a4);
3497 : 4 : _q60 = do_valueize (valueize, _q60);
3498 : 4 : switch (TREE_CODE (_q21))
3499 : : {
3500 : 4 : case INTEGER_CST:
3501 : 4 : {
3502 : 4 : switch (TREE_CODE (_p1))
3503 : : {
3504 : 0 : case SSA_NAME:
3505 : 0 : if (gimple *_d5 = get_def (valueize, _p1))
3506 : : {
3507 : 0 : if (gassign *_a5 = dyn_cast <gassign *> (_d5))
3508 : 0 : switch (gimple_assign_rhs_code (_a5))
3509 : : {
3510 : 0 : case PLUS_EXPR:
3511 : 0 : {
3512 : 0 : tree _q90 = gimple_assign_rhs1 (_a5);
3513 : 0 : _q90 = do_valueize (valueize, _q90);
3514 : 0 : tree _q91 = gimple_assign_rhs2 (_a5);
3515 : 0 : _q91 = do_valueize (valueize, _q91);
3516 : 0 : if (tree_swap_operands_p (_q90, _q91))
3517 : 0 : std::swap (_q90, _q91);
3518 : 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
3519 : : {
3520 : 0 : if ((_q91 == _q60 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q60, 0) && types_match (_q91, _q60)))
3521 : : {
3522 : 0 : if (integer_minus_onep (_p2))
3523 : : {
3524 : 0 : {
3525 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
3526 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3527 : : )
3528 : : {
3529 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
3530 : : )
3531 : : {
3532 : 0 : {
3533 : 0 : unsigned precision = TYPE_PRECISION (type);
3534 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
3535 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
3536 : 0 : wide_int c4 = wi::to_wide (captures[4]);
3537 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
3538 : : )
3539 : : {
3540 : 0 : {
3541 : 0 : res_ops[0] = captures[0];
3542 : 0 : res_ops[1] = captures[1];
3543 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
3544 : 0 : return true;
3545 : : }
3546 : : }
3547 : 0 : }
3548 : : }
3549 : : }
3550 : : }
3551 : : }
3552 : : }
3553 : : }
3554 : 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
3555 : : {
3556 : 0 : if ((_q91 == _q40 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q40, 0) && types_match (_q91, _q40)))
3557 : : {
3558 : 0 : if (integer_minus_onep (_p2))
3559 : : {
3560 : 0 : {
3561 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q60, _q30, _q31, _q21 };
3562 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3563 : : )
3564 : : {
3565 : 0 : if (types_match (type, captures[0], captures[1]) && types_match (captures[2], captures[3])
3566 : : )
3567 : : {
3568 : 0 : {
3569 : 0 : unsigned precision = TYPE_PRECISION (type);
3570 : 0 : unsigned widen_precision = TYPE_PRECISION (TREE_TYPE (captures[2]));
3571 : 0 : wide_int max = wi::mask (precision, false, widen_precision);
3572 : 0 : wide_int c4 = wi::to_wide (captures[4]);
3573 : 0 : if (wi::eq_p (c4, max) && widen_precision > precision
3574 : : )
3575 : : {
3576 : 0 : {
3577 : 0 : res_ops[0] = captures[0];
3578 : 0 : res_ops[1] = captures[1];
3579 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 50, __FILE__, __LINE__, false);
3580 : 0 : return true;
3581 : : }
3582 : : }
3583 : 0 : }
3584 : : }
3585 : : }
3586 : : }
3587 : : }
3588 : : }
3589 : : }
3590 : 3664540 : break;
3591 : : }
3592 : : default:;
3593 : : }
3594 : : }
3595 : : break;
3596 : : default:;
3597 : : }
3598 : : break;
3599 : : }
3600 : : default:;
3601 : : }
3602 : : break;
3603 : : }
3604 : : default:;
3605 : : }
3606 : : }
3607 : : break;
3608 : : default:;
3609 : : }
3610 : : break;
3611 : : }
3612 : : default:;
3613 : : }
3614 : : }
3615 : : break;
3616 : : default:;
3617 : : }
3618 : 3664540 : break;
3619 : : }
3620 : : default:;
3621 : : }
3622 : : }
3623 : : break;
3624 : : default:;
3625 : : }
3626 : : }
3627 : : }
3628 : : break;
3629 : : }
3630 : 86231 : case GT_EXPR:
3631 : 86231 : {
3632 : 86231 : tree _q20 = TREE_OPERAND (_p0, 0);
3633 : 86231 : if ((TREE_CODE (_q20) == SSA_NAME
3634 : 86231 : || is_gimple_min_invariant (_q20)))
3635 : : {
3636 : 86231 : _q20 = do_valueize (valueize, _q20);
3637 : 86231 : tree _q21 = TREE_OPERAND (_p0, 1);
3638 : 86231 : if ((TREE_CODE (_q21) == SSA_NAME
3639 : 86231 : || is_gimple_min_invariant (_q21)))
3640 : : {
3641 : 86231 : _q21 = do_valueize (valueize, _q21);
3642 : 86231 : switch (TREE_CODE (_q21))
3643 : : {
3644 : 51274 : case SSA_NAME:
3645 : 51274 : if (gimple *_d2 = get_def (valueize, _q21))
3646 : : {
3647 : 51274 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3648 : 46253 : switch (gimple_assign_rhs_code (_a2))
3649 : : {
3650 : 3145 : case PLUS_EXPR:
3651 : 3145 : {
3652 : 3145 : tree _q40 = gimple_assign_rhs1 (_a2);
3653 : 3145 : _q40 = do_valueize (valueize, _q40);
3654 : 3145 : tree _q41 = gimple_assign_rhs2 (_a2);
3655 : 3145 : _q41 = do_valueize (valueize, _q41);
3656 : 3145 : if (tree_swap_operands_p (_q40, _q41))
3657 : 0 : std::swap (_q40, _q41);
3658 : 3145 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
3659 : : {
3660 : 1346 : if (integer_minus_onep (_p1))
3661 : : {
3662 : 5 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
3663 : : {
3664 : 5 : {
3665 : 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q21 };
3666 : 5 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3667 : : )
3668 : : {
3669 : 5 : if (types_match (type, captures[0], captures[1])
3670 : : )
3671 : : {
3672 : 5 : {
3673 : 5 : res_ops[0] = captures[0];
3674 : 5 : res_ops[1] = captures[1];
3675 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
3676 : 5 : return true;
3677 : : }
3678 : : }
3679 : : }
3680 : : }
3681 : : }
3682 : : }
3683 : : }
3684 : 3140 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
3685 : : {
3686 : 1264 : if (integer_minus_onep (_p1))
3687 : : {
3688 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
3689 : : {
3690 : 0 : {
3691 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q21 };
3692 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3693 : : )
3694 : : {
3695 : 0 : if (types_match (type, captures[0], captures[1])
3696 : : )
3697 : : {
3698 : 0 : {
3699 : 0 : res_ops[0] = captures[0];
3700 : 0 : res_ops[1] = captures[1];
3701 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 51, __FILE__, __LINE__, false);
3702 : 0 : return true;
3703 : : }
3704 : : }
3705 : : }
3706 : : }
3707 : : }
3708 : : }
3709 : : }
3710 : 3664540 : break;
3711 : : }
3712 : : default:;
3713 : : }
3714 : : }
3715 : : break;
3716 : : default:;
3717 : : }
3718 : : }
3719 : : }
3720 : : break;
3721 : : }
3722 : 304624 : case EQ_EXPR:
3723 : 304624 : {
3724 : 304624 : tree _q20 = TREE_OPERAND (_p0, 0);
3725 : 304624 : if ((TREE_CODE (_q20) == SSA_NAME
3726 : 304624 : || is_gimple_min_invariant (_q20)))
3727 : : {
3728 : 304624 : _q20 = do_valueize (valueize, _q20);
3729 : 304624 : tree _q21 = TREE_OPERAND (_p0, 1);
3730 : 304624 : if ((TREE_CODE (_q21) == SSA_NAME
3731 : 304624 : || is_gimple_min_invariant (_q21)))
3732 : : {
3733 : 304624 : _q21 = do_valueize (valueize, _q21);
3734 : 304624 : if (tree_swap_operands_p (_q20, _q21))
3735 : 0 : std::swap (_q20, _q21);
3736 : 304624 : switch (TREE_CODE (_q20))
3737 : : {
3738 : 304557 : case SSA_NAME:
3739 : 304557 : if (gimple *_d2 = get_def (valueize, _q20))
3740 : : {
3741 : 304557 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3742 : 515072 : switch (gimple_assign_rhs_code (_a2))
3743 : : {
3744 : 14 : case IMAGPART_EXPR:
3745 : 14 : {
3746 : 14 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
3747 : 14 : if ((TREE_CODE (_q30) == SSA_NAME
3748 : 14 : || is_gimple_min_invariant (_q30)))
3749 : : {
3750 : 8 : _q30 = do_valueize (valueize, _q30);
3751 : 8 : switch (TREE_CODE (_q30))
3752 : : {
3753 : 8 : case SSA_NAME:
3754 : 8 : if (gimple *_d3 = get_def (valueize, _q30))
3755 : : {
3756 : 8 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
3757 : 0 : switch (gimple_call_combined_fn (_c3))
3758 : : {
3759 : 0 : case CFN_ADD_OVERFLOW:
3760 : 0 : if (gimple_call_num_args (_c3) == 2)
3761 : : {
3762 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
3763 : 0 : _q40 = do_valueize (valueize, _q40);
3764 : 0 : tree _q41 = gimple_call_arg (_c3, 1);
3765 : 0 : _q41 = do_valueize (valueize, _q41);
3766 : 0 : if (tree_swap_operands_p (_q40, _q41))
3767 : 0 : std::swap (_q40, _q41);
3768 : 0 : if (integer_zerop (_q21))
3769 : : {
3770 : 0 : switch (TREE_CODE (_p1))
3771 : : {
3772 : 0 : case SSA_NAME:
3773 : 0 : if (gimple *_d4 = get_def (valueize, _p1))
3774 : : {
3775 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3776 : 0 : switch (gimple_assign_rhs_code (_a4))
3777 : : {
3778 : 0 : case REALPART_EXPR:
3779 : 0 : {
3780 : 0 : tree _q80 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
3781 : 0 : if ((TREE_CODE (_q80) == SSA_NAME
3782 : 0 : || is_gimple_min_invariant (_q80)))
3783 : : {
3784 : 0 : _q80 = do_valueize (valueize, _q80);
3785 : 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
3786 : : {
3787 : 0 : if (integer_minus_onep (_p2))
3788 : : {
3789 : 0 : {
3790 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
3791 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3792 : : )
3793 : : {
3794 : 0 : if (types_match (type, captures[0], captures[1])
3795 : : )
3796 : : {
3797 : 0 : {
3798 : 0 : res_ops[0] = captures[0];
3799 : 0 : res_ops[1] = captures[1];
3800 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 52, __FILE__, __LINE__, false);
3801 : 0 : return true;
3802 : : }
3803 : : }
3804 : : }
3805 : : }
3806 : : }
3807 : : }
3808 : : }
3809 : : break;
3810 : : }
3811 : : default:;
3812 : : }
3813 : : }
3814 : : break;
3815 : : default:;
3816 : : }
3817 : : }
3818 : : }
3819 : : break;
3820 : : default:;
3821 : : }
3822 : : }
3823 : : break;
3824 : : default:;
3825 : : }
3826 : : }
3827 : : break;
3828 : : }
3829 : : default:;
3830 : : }
3831 : : }
3832 : : break;
3833 : : default:;
3834 : : }
3835 : : }
3836 : : }
3837 : 3664540 : break;
3838 : : }
3839 : 256986 : case NE_EXPR:
3840 : 256986 : {
3841 : 256986 : tree _q20 = TREE_OPERAND (_p0, 0);
3842 : 256986 : if ((TREE_CODE (_q20) == SSA_NAME
3843 : 256986 : || is_gimple_min_invariant (_q20)))
3844 : : {
3845 : 256986 : _q20 = do_valueize (valueize, _q20);
3846 : 256986 : tree _q21 = TREE_OPERAND (_p0, 1);
3847 : 256986 : if ((TREE_CODE (_q21) == SSA_NAME
3848 : 256986 : || is_gimple_min_invariant (_q21)))
3849 : : {
3850 : 256986 : _q21 = do_valueize (valueize, _q21);
3851 : 256986 : if (tree_swap_operands_p (_q20, _q21))
3852 : 0 : std::swap (_q20, _q21);
3853 : 256986 : switch (TREE_CODE (_q20))
3854 : : {
3855 : 256732 : case SSA_NAME:
3856 : 256732 : if (gimple *_d2 = get_def (valueize, _q20))
3857 : : {
3858 : 256732 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3859 : 331898 : switch (gimple_assign_rhs_code (_a2))
3860 : : {
3861 : 33872 : case IMAGPART_EXPR:
3862 : 33872 : {
3863 : 33872 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
3864 : 33872 : if ((TREE_CODE (_q30) == SSA_NAME
3865 : 33872 : || is_gimple_min_invariant (_q30)))
3866 : : {
3867 : 33872 : _q30 = do_valueize (valueize, _q30);
3868 : 33872 : switch (TREE_CODE (_q30))
3869 : : {
3870 : 33872 : case SSA_NAME:
3871 : 33872 : if (gimple *_d3 = get_def (valueize, _q30))
3872 : : {
3873 : 33872 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
3874 : 33848 : switch (gimple_call_combined_fn (_c3))
3875 : : {
3876 : 9340 : case CFN_ADD_OVERFLOW:
3877 : 9340 : if (gimple_call_num_args (_c3) == 2)
3878 : : {
3879 : 9340 : tree _q40 = gimple_call_arg (_c3, 0);
3880 : 9340 : _q40 = do_valueize (valueize, _q40);
3881 : 9340 : tree _q41 = gimple_call_arg (_c3, 1);
3882 : 9340 : _q41 = do_valueize (valueize, _q41);
3883 : 9340 : if (tree_swap_operands_p (_q40, _q41))
3884 : 0 : std::swap (_q40, _q41);
3885 : 9340 : if (integer_zerop (_q21))
3886 : : {
3887 : 9340 : if (integer_minus_onep (_p1))
3888 : : {
3889 : 12 : switch (TREE_CODE (_p2))
3890 : : {
3891 : 12 : case SSA_NAME:
3892 : 12 : if (gimple *_d4 = get_def (valueize, _p2))
3893 : : {
3894 : 12 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3895 : 24 : switch (gimple_assign_rhs_code (_a4))
3896 : : {
3897 : 12 : case REALPART_EXPR:
3898 : 12 : {
3899 : 12 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
3900 : 12 : if ((TREE_CODE (_q90) == SSA_NAME
3901 : 12 : || is_gimple_min_invariant (_q90)))
3902 : : {
3903 : 12 : _q90 = do_valueize (valueize, _q90);
3904 : 12 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
3905 : : {
3906 : 12 : {
3907 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
3908 : 12 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3909 : : )
3910 : : {
3911 : 12 : if (types_match (type, captures[0], captures[1])
3912 : : )
3913 : : {
3914 : 12 : {
3915 : 12 : res_ops[0] = captures[0];
3916 : 12 : res_ops[1] = captures[1];
3917 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 53, __FILE__, __LINE__, false);
3918 : 12 : return true;
3919 : : }
3920 : : }
3921 : : }
3922 : : }
3923 : : }
3924 : : }
3925 : : break;
3926 : : }
3927 : : default:;
3928 : : }
3929 : : }
3930 : : break;
3931 : : default:;
3932 : : }
3933 : : }
3934 : : }
3935 : 9328 : switch (TREE_CODE (_q41))
3936 : : {
3937 : 6994 : case INTEGER_CST:
3938 : 6994 : {
3939 : 6994 : if (integer_zerop (_q21))
3940 : : {
3941 : 6994 : if (integer_minus_onep (_p1))
3942 : : {
3943 : 0 : switch (TREE_CODE (_p2))
3944 : : {
3945 : 0 : case SSA_NAME:
3946 : 0 : if (gimple *_d4 = get_def (valueize, _p2))
3947 : : {
3948 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3949 : 0 : switch (gimple_assign_rhs_code (_a4))
3950 : : {
3951 : 0 : case REALPART_EXPR:
3952 : 0 : {
3953 : 0 : tree _q90 = TREE_OPERAND (gimple_assign_rhs1 (_a4), 0);
3954 : 0 : if ((TREE_CODE (_q90) == SSA_NAME
3955 : 0 : || is_gimple_min_invariant (_q90)))
3956 : : {
3957 : 0 : _q90 = do_valueize (valueize, _q90);
3958 : 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
3959 : : {
3960 : 0 : {
3961 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q30 };
3962 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
3963 : : )
3964 : : {
3965 : 0 : if (types_match (type, captures[0]) && int_fits_type_p (captures[1], type)
3966 : : )
3967 : : {
3968 : 0 : {
3969 : 0 : res_ops[0] = captures[0];
3970 : 0 : res_ops[1] = captures[1];
3971 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 54, __FILE__, __LINE__, false);
3972 : 0 : return true;
3973 : : }
3974 : : }
3975 : : }
3976 : : }
3977 : : }
3978 : : }
3979 : : break;
3980 : : }
3981 : : default:;
3982 : : }
3983 : : }
3984 : : break;
3985 : : default:;
3986 : : }
3987 : : }
3988 : : }
3989 : : break;
3990 : : }
3991 : : default:;
3992 : : }
3993 : : }
3994 : : break;
3995 : : default:;
3996 : : }
3997 : : }
3998 : : break;
3999 : : default:;
4000 : : }
4001 : : }
4002 : : break;
4003 : : }
4004 : : default:;
4005 : : }
4006 : : }
4007 : : break;
4008 : : default:;
4009 : : }
4010 : : }
4011 : : }
4012 : 3664540 : break;
4013 : : }
4014 : : default:;
4015 : : }
4016 : : }
4017 : : }
4018 : : }
4019 : : break;
4020 : : default:;
4021 : : }
4022 : : return false;
4023 : : }
4024 : :
4025 : : bool
4026 : 75615 : gimple_simplify_263 (gimple_match_op *res_op, gimple_seq *seq,
4027 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4028 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4029 : : const enum tree_code ARG_UNUSED (cmp))
4030 : : {
4031 : 75615 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4032 : 75615 : if (single_use (captures[0])
4033 : : )
4034 : : {
4035 : 14307 : gimple_seq *lseq = seq;
4036 : 14307 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail907;
4037 : 14307 : {
4038 : 14307 : res_op->set_op (cmp, type, 2);
4039 : 14307 : res_op->ops[0] = captures[1];
4040 : 14307 : res_op->ops[1] = captures[2];
4041 : 14307 : res_op->resimplify (lseq, valueize);
4042 : 14307 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
4043 : 14307 : return true;
4044 : : }
4045 : 0 : next_after_fail907:;
4046 : : }
4047 : : return false;
4048 : : }
4049 : :
4050 : : bool
4051 : 156593280 : gimple_simplify_267 (gimple_match_op *res_op, gimple_seq *seq,
4052 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4053 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4054 : : const enum tree_code ARG_UNUSED (cmp))
4055 : : {
4056 : 156593280 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4057 : 156593280 : {
4058 : 156593280 : bool wascmp;
4059 : 156593280 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
4060 : 156593280 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
4061 : : )
4062 : : {
4063 : 59 : gimple_seq *lseq = seq;
4064 : 59 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail916;
4065 : 59 : {
4066 : 59 : tree tem;
4067 : 59 : tem = constant_boolean_node (cmp == NE_EXPR, type);
4068 : 59 : res_op->set_value (tem);
4069 : 59 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 402, __FILE__, __LINE__, true);
4070 : 59 : return true;
4071 : : }
4072 : 0 : next_after_fail916:;
4073 : : }
4074 : : }
4075 : 156593221 : return false;
4076 : : }
4077 : :
4078 : : bool
4079 : 571139 : gimple_simplify_269 (gimple_match_op *res_op, gimple_seq *seq,
4080 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4081 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4082 : : const enum tree_code ARG_UNUSED (cmp),
4083 : : const enum tree_code ARG_UNUSED (scmp))
4084 : : {
4085 : 571139 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4086 : 571139 : if (single_use (captures[0])
4087 : 541159 : && (TREE_CODE (captures[2]) == INTEGER_CST || TREE_CODE (captures[2]) == VECTOR_CST)
4088 : : )
4089 : : {
4090 : 541159 : {
4091 : 541159 : tree otype = TREE_TYPE (captures[2]);
4092 : 541159 : gimple_seq *lseq = seq;
4093 : 541159 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail918;
4094 : 541159 : {
4095 : 541159 : res_op->set_op (scmp, type, 2);
4096 : 541159 : {
4097 : 541159 : tree _o1[1], _r1;
4098 : 541159 : _o1[0] = captures[1];
4099 : 541159 : if (otype != TREE_TYPE (_o1[0]) /* XXX */
4100 : 541159 : && !useless_type_conversion_p (otype, TREE_TYPE (_o1[0])))
4101 : : {
4102 : 601 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, otype, _o1[0]);
4103 : 601 : tem_op.resimplify (lseq, valueize);
4104 : 601 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4105 : 601 : if (!_r1) goto next_after_fail918;
4106 : : }
4107 : : else
4108 : : _r1 = _o1[0];
4109 : 540719 : res_op->ops[0] = _r1;
4110 : : }
4111 : 540719 : {
4112 : 540719 : tree _o1[1], _r1;
4113 : 540719 : _o1[0] = captures[2];
4114 : 540719 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4115 : 540719 : tem_op.resimplify (lseq, valueize);
4116 : 540719 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4117 : 540719 : if (!_r1) goto next_after_fail918;
4118 : 540719 : res_op->ops[1] = _r1;
4119 : : }
4120 : 540719 : res_op->resimplify (lseq, valueize);
4121 : 540719 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 404, __FILE__, __LINE__, true);
4122 : 540719 : return true;
4123 : : }
4124 : : next_after_fail918:;
4125 : : }
4126 : : }
4127 : : return false;
4128 : : }
4129 : :
4130 : : bool
4131 : 46 : gimple_simplify_275 (gimple_match_op *res_op, gimple_seq *seq,
4132 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4133 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4134 : : const combined_fn ARG_UNUSED (sq),
4135 : : const enum tree_code ARG_UNUSED (cmp))
4136 : : {
4137 : 46 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4138 : 46 : if (flag_unsafe_math_optimizations && ! flag_errno_math
4139 : : )
4140 : : {
4141 : 38 : if (! HONOR_NANS (captures[0])
4142 : : )
4143 : : {
4144 : 38 : gimple_seq *lseq = seq;
4145 : 38 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail956;
4146 : 38 : {
4147 : 38 : res_op->set_op (cmp, type, 2);
4148 : 38 : res_op->ops[0] = captures[0];
4149 : 38 : res_op->ops[1] = captures[1];
4150 : 38 : res_op->resimplify (lseq, valueize);
4151 : 38 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 441, __FILE__, __LINE__, true);
4152 : 38 : return true;
4153 : : }
4154 : 0 : next_after_fail956:;
4155 : : }
4156 : : }
4157 : : return false;
4158 : : }
4159 : :
4160 : : bool
4161 : 1549 : gimple_simplify_279 (gimple_match_op *res_op, gimple_seq *seq,
4162 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4163 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4164 : : const enum tree_code ARG_UNUSED (cmp),
4165 : : const enum tree_code ARG_UNUSED (scmp))
4166 : : {
4167 : 1549 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4168 : 2166 : if (FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4169 : 2166 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4170 : 617 : && (cmp == EQ_EXPR
4171 : 617 : || cmp == NE_EXPR
4172 : 552 : || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
4173 : : )
4174 : : {
4175 : 1444 : gimple_seq *lseq = seq;
4176 : 1444 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail969;
4177 : 1444 : {
4178 : 1444 : res_op->set_op (scmp, type, 2);
4179 : 1444 : res_op->ops[0] = captures[0];
4180 : 1444 : res_op->ops[1] = captures[1];
4181 : 1444 : res_op->resimplify (lseq, valueize);
4182 : 1444 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 454, __FILE__, __LINE__, true);
4183 : 1444 : return true;
4184 : : }
4185 : 0 : next_after_fail969:;
4186 : : }
4187 : : return false;
4188 : : }
4189 : :
4190 : : bool
4191 : 21277 : gimple_simplify_280 (gimple_match_op *res_op, gimple_seq *seq,
4192 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4193 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4194 : : const enum tree_code ARG_UNUSED (cmp),
4195 : : const enum tree_code ARG_UNUSED (scmp))
4196 : : {
4197 : 21277 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4198 : 40452 : if (FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4199 : 40452 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4200 : 19175 : && (cmp == EQ_EXPR
4201 : 19175 : || cmp == NE_EXPR
4202 : 5709 : || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
4203 : : )
4204 : : {
4205 : 18397 : {
4206 : 18397 : tree tem = const_unop (NEGATE_EXPR, TREE_TYPE (captures[0]), captures[1]);
4207 : 18397 : if (tem && !TREE_OVERFLOW (tem)
4208 : : )
4209 : : {
4210 : 18397 : gimple_seq *lseq = seq;
4211 : 18397 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail970;
4212 : 18397 : {
4213 : 18397 : res_op->set_op (scmp, type, 2);
4214 : 18397 : res_op->ops[0] = captures[0];
4215 : 18397 : res_op->ops[1] = tem;
4216 : 18397 : res_op->resimplify (lseq, valueize);
4217 : 18397 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 455, __FILE__, __LINE__, true);
4218 : 18397 : return true;
4219 : : }
4220 : 0 : next_after_fail970:;
4221 : : }
4222 : : }
4223 : : }
4224 : : return false;
4225 : : }
4226 : :
4227 : : bool
4228 : 5849693 : gimple_simplify_282 (gimple_match_op *res_op, gimple_seq *seq,
4229 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4230 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4231 : : const enum tree_code ARG_UNUSED (cmp))
4232 : : {
4233 : 5849693 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4234 : 11633345 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4235 : 5582161 : && !(targetm.have_canonicalize_funcptr_for_compare ()
4236 : 0 : && ((POINTER_TYPE_P (TREE_TYPE (captures[1]))
4237 : 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))
4238 : 0 : || (POINTER_TYPE_P (TREE_TYPE (captures[3]))
4239 : 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3]))))))
4240 : 11431854 : && single_use (captures[0])
4241 : : )
4242 : : {
4243 : 3017895 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0]))
4244 : 1278007 : && (TREE_CODE (captures[3]) == INTEGER_CST
4245 : 564962 : || captures[2] != captures[3])
4246 : 713045 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
4247 : : || cmp == NE_EXPR
4248 : 647096 : || cmp == EQ_EXPR)
4249 : 210786 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
4250 : 3217679 : && (TREE_CODE (TREE_TYPE (captures[1])) != BOOLEAN_TYPE
4251 : 56295 : || TREE_CODE (TREE_TYPE (captures[3])) == BOOLEAN_TYPE)
4252 : : )
4253 : : {
4254 : 199726 : if (TREE_CODE (captures[2]) == INTEGER_CST
4255 : : )
4256 : : {
4257 : 199726 : gimple_seq *lseq = seq;
4258 : 199726 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail978;
4259 : 199726 : {
4260 : 199726 : res_op->set_op (cmp, type, 2);
4261 : 199726 : res_op->ops[0] = captures[1];
4262 : 199726 : res_op->ops[1] = force_fit_type (TREE_TYPE (captures[1]),
4263 : 199726 : wide_int::from (wi::to_wide (captures[2]),
4264 : 199726 : MAX (TYPE_PRECISION (TREE_TYPE (captures[2])),
4265 : : TYPE_PRECISION (TREE_TYPE (captures[1]))),
4266 : 199726 : TYPE_SIGN (TREE_TYPE (captures[2]))),
4267 : 199726 : 0, TREE_OVERFLOW (captures[2]));
4268 : 199726 : res_op->resimplify (lseq, valueize);
4269 : 199726 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 456, __FILE__, __LINE__, true);
4270 : 199726 : return true;
4271 : : }
4272 : 0 : next_after_fail978:;
4273 : : }
4274 : : else
4275 : : {
4276 : 0 : gimple_seq *lseq = seq;
4277 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail979;
4278 : 0 : {
4279 : 0 : res_op->set_op (cmp, type, 2);
4280 : 0 : res_op->ops[0] = captures[1];
4281 : 0 : {
4282 : 0 : tree _o1[1], _r1;
4283 : 0 : _o1[0] = captures[2];
4284 : 0 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
4285 : 0 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
4286 : : {
4287 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
4288 : 0 : tem_op.resimplify (lseq, valueize);
4289 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4290 : 0 : if (!_r1) goto next_after_fail979;
4291 : : }
4292 : : else
4293 : : _r1 = _o1[0];
4294 : 0 : res_op->ops[1] = _r1;
4295 : : }
4296 : 0 : res_op->resimplify (lseq, valueize);
4297 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 457, __FILE__, __LINE__, true);
4298 : 0 : return true;
4299 : : }
4300 : : next_after_fail979:;
4301 : : }
4302 : : }
4303 : : else
4304 : : {
4305 : 2818169 : if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
4306 : : )
4307 : : {
4308 : 520293 : if ((cmp == EQ_EXPR || cmp == NE_EXPR
4309 : 211004 : || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4310 : 105682 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
4311 : 74951 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
4312 : 700566 : && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]))
4313 : 489562 : || ((TYPE_PRECISION (TREE_TYPE (captures[1]))
4314 : 489562 : >= TYPE_PRECISION (TREE_TYPE (captures[3])))
4315 : 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4316 : 0 : == TYPE_UNSIGNED (TREE_TYPE (captures[3]))))
4317 : 489562 : || (TREE_CODE (captures[2]) == INTEGER_CST
4318 : 144181 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
4319 : 144181 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))))
4320 : : )
4321 : : {
4322 : 142783 : gimple_seq *lseq = seq;
4323 : 142783 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail980;
4324 : 142783 : {
4325 : 142783 : res_op->set_op (cmp, type, 2);
4326 : 142783 : res_op->ops[0] = captures[1];
4327 : 142783 : {
4328 : 142783 : tree _o1[1], _r1;
4329 : 142783 : _o1[0] = captures[3];
4330 : 142783 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
4331 : 142783 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
4332 : : {
4333 : 142783 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
4334 : 142783 : tem_op.resimplify (lseq, valueize);
4335 : 142783 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4336 : 142783 : if (!_r1) goto next_after_fail980;
4337 : : }
4338 : : else
4339 : : _r1 = _o1[0];
4340 : 142783 : res_op->ops[1] = _r1;
4341 : : }
4342 : 142783 : res_op->resimplify (lseq, valueize);
4343 : 142783 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 458, __FILE__, __LINE__, true);
4344 : 142783 : return true;
4345 : : }
4346 : : next_after_fail980:;
4347 : : }
4348 : : else
4349 : : {
4350 : 377510 : if (TREE_CODE (captures[2]) == INTEGER_CST
4351 : 9597 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
4352 : 387107 : && !int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
4353 : : )
4354 : : {
4355 : 3264 : {
4356 : 3264 : tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
4357 : 3264 : tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
4358 : 3264 : bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[2]));
4359 : 3264 : bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[2], min));
4360 : 3264 : if (above || below
4361 : : )
4362 : : {
4363 : 538 : if (cmp == EQ_EXPR || cmp == NE_EXPR
4364 : : )
4365 : : {
4366 : 288 : gimple_seq *lseq = seq;
4367 : 288 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail981;
4368 : 288 : {
4369 : 288 : tree tem;
4370 : 288 : tem = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
4371 : 288 : res_op->set_value (tem);
4372 : 288 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 459, __FILE__, __LINE__, true);
4373 : 288 : return true;
4374 : : }
4375 : 0 : next_after_fail981:;
4376 : : }
4377 : : else
4378 : : {
4379 : 250 : if (cmp == LT_EXPR || cmp == LE_EXPR
4380 : : )
4381 : : {
4382 : 65 : gimple_seq *lseq = seq;
4383 : 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail982;
4384 : 65 : {
4385 : 65 : tree tem;
4386 : 65 : tem = constant_boolean_node (above ? true : false, type);
4387 : 65 : res_op->set_value (tem);
4388 : 65 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 460, __FILE__, __LINE__, true);
4389 : 65 : return true;
4390 : : }
4391 : 0 : next_after_fail982:;
4392 : : }
4393 : : else
4394 : : {
4395 : 185 : if (cmp == GT_EXPR || cmp == GE_EXPR
4396 : : )
4397 : : {
4398 : 185 : gimple_seq *lseq = seq;
4399 : 185 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail983;
4400 : 185 : {
4401 : 185 : tree tem;
4402 : 234 : tem = constant_boolean_node (above ? false : true, type);
4403 : 185 : res_op->set_value (tem);
4404 : 185 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 461, __FILE__, __LINE__, true);
4405 : 185 : return true;
4406 : : }
4407 : 0 : next_after_fail983:;
4408 : : }
4409 : : }
4410 : : }
4411 : : }
4412 : : }
4413 : : }
4414 : : }
4415 : : }
4416 : : }
4417 : : }
4418 : : else
4419 : : {
4420 : 5519863 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
4421 : 287502 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4422 : 143751 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1])))
4423 : 3118856 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4424 : 143529 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[3])))
4425 : : )
4426 : : {
4427 : 143529 : {
4428 : 143529 : tree type1 = TREE_TYPE (captures[3]);
4429 : 143529 : if (TREE_CODE (captures[3]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1))
4430 : : {
4431 : 52865 : REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[3]);
4432 : 52865 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node)
4433 : 52865 : && exact_real_truncate (TYPE_MODE (float_type_node), &orig))
4434 : 33546 : type1 = float_type_node;
4435 : 52865 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node)
4436 : 52865 : && exact_real_truncate (TYPE_MODE (double_type_node), &orig))
4437 : 8 : type1 = double_type_node;
4438 : : }
4439 : 143529 : tree newtype
4440 : 143529 : = (element_precision (TREE_TYPE (captures[1])) > element_precision (type1)
4441 : 143529 : ? TREE_TYPE (captures[1]) : type1);
4442 : 143529 : if (element_precision (TREE_TYPE (captures[0])) > element_precision (newtype)
4443 : 143529 : && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))
4444 : : )
4445 : : {
4446 : 27210 : gimple_seq *lseq = seq;
4447 : 27210 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail984;
4448 : 27210 : {
4449 : 27210 : res_op->set_op (cmp, type, 2);
4450 : 27210 : {
4451 : 27210 : tree _o1[1], _r1;
4452 : 27210 : _o1[0] = captures[1];
4453 : 27210 : if (newtype != TREE_TYPE (_o1[0]) /* XXX */
4454 : 27210 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o1[0])))
4455 : : {
4456 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o1[0]);
4457 : 0 : tem_op.resimplify (lseq, valueize);
4458 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4459 : 0 : if (!_r1) goto next_after_fail984;
4460 : : }
4461 : : else
4462 : : _r1 = _o1[0];
4463 : 27210 : res_op->ops[0] = _r1;
4464 : : }
4465 : 27210 : {
4466 : 27210 : tree _o1[1], _r1;
4467 : 27210 : _o1[0] = captures[3];
4468 : 27210 : if (newtype != TREE_TYPE (_o1[0]) /* XXX */
4469 : 27210 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o1[0])))
4470 : : {
4471 : 27210 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o1[0]);
4472 : 27210 : tem_op.resimplify (lseq, valueize);
4473 : 27210 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4474 : 27210 : if (!_r1) goto next_after_fail984;
4475 : : }
4476 : : else
4477 : : _r1 = _o1[0];
4478 : 27210 : res_op->ops[1] = _r1;
4479 : : }
4480 : 27210 : res_op->resimplify (lseq, valueize);
4481 : 27210 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 462, __FILE__, __LINE__, true);
4482 : 27210 : return true;
4483 : : }
4484 : : next_after_fail984:;
4485 : : }
4486 : : }
4487 : : }
4488 : : }
4489 : : return false;
4490 : : }
4491 : :
4492 : : bool
4493 : 129695 : gimple_simplify_300 (gimple_match_op *res_op, gimple_seq *seq,
4494 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4495 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4496 : : const enum tree_code ARG_UNUSED (cmp))
4497 : : {
4498 : 129695 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4499 : 129695 : {
4500 : 129695 : poly_int64 off0, off1;
4501 : 129695 : tree base0, base1;
4502 : 129695 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
4503 : : off0, off1,
4504 : :
4505 : : );
4506 : 129695 : if (equal == 1
4507 : : )
4508 : : {
4509 : 91328 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
4510 : : )
4511 : : {
4512 : 12294 : gimple_seq *lseq = seq;
4513 : 12294 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1012;
4514 : 12294 : {
4515 : 12294 : tree tem;
4516 : 12294 : tem = constant_boolean_node (known_eq (off0, off1), type);
4517 : 12294 : res_op->set_value (tem);
4518 : 12294 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 480, __FILE__, __LINE__, true);
4519 : 97388 : return true;
4520 : : }
4521 : 0 : next_after_fail1012:;
4522 : : }
4523 : : else
4524 : : {
4525 : 49887 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
4526 : : )
4527 : : {
4528 : 49887 : gimple_seq *lseq = seq;
4529 : 49887 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1013;
4530 : 49887 : {
4531 : 49887 : tree tem;
4532 : 49887 : tem = constant_boolean_node (known_ne (off0, off1), type);
4533 : 49887 : res_op->set_value (tem);
4534 : 49887 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 481, __FILE__, __LINE__, true);
4535 : 49887 : return true;
4536 : : }
4537 : 0 : next_after_fail1013:;
4538 : : }
4539 : : else
4540 : : {
4541 : 8344 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
4542 : : )
4543 : : {
4544 : 8344 : gimple_seq *lseq = seq;
4545 : 8344 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1014;
4546 : 8344 : {
4547 : 8344 : tree tem;
4548 : 8344 : tem = constant_boolean_node (known_lt (off0, off1), type);
4549 : 8344 : res_op->set_value (tem);
4550 : 8344 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 482, __FILE__, __LINE__, true);
4551 : 8344 : return true;
4552 : : }
4553 : 0 : next_after_fail1014:;
4554 : : }
4555 : : else
4556 : : {
4557 : 507 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
4558 : : )
4559 : : {
4560 : 507 : gimple_seq *lseq = seq;
4561 : 507 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1015;
4562 : 507 : {
4563 : 507 : tree tem;
4564 : 507 : tem = constant_boolean_node (known_le (off0, off1), type);
4565 : 507 : res_op->set_value (tem);
4566 : 507 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 483, __FILE__, __LINE__, true);
4567 : 507 : return true;
4568 : : }
4569 : 0 : next_after_fail1015:;
4570 : : }
4571 : : else
4572 : : {
4573 : 14450 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
4574 : : )
4575 : : {
4576 : 14450 : gimple_seq *lseq = seq;
4577 : 14450 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1016;
4578 : 14450 : {
4579 : 14450 : tree tem;
4580 : 14450 : tem = constant_boolean_node (known_ge (off0, off1), type);
4581 : 14450 : res_op->set_value (tem);
4582 : 14450 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 484, __FILE__, __LINE__, true);
4583 : 14450 : return true;
4584 : : }
4585 : 0 : next_after_fail1016:;
4586 : : }
4587 : : else
4588 : : {
4589 : 5846 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
4590 : : )
4591 : : {
4592 : 5846 : gimple_seq *lseq = seq;
4593 : 5846 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1017;
4594 : 5846 : {
4595 : 5846 : tree tem;
4596 : 5846 : tem = constant_boolean_node (known_gt (off0, off1), type);
4597 : 5846 : res_op->set_value (tem);
4598 : 5846 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 485, __FILE__, __LINE__, true);
4599 : 5846 : return true;
4600 : : }
4601 : 0 : next_after_fail1017:;
4602 : : }
4603 : : }
4604 : : }
4605 : : }
4606 : : }
4607 : : }
4608 : : }
4609 : : else
4610 : : {
4611 : 38367 : if (equal == 0
4612 : : )
4613 : : {
4614 : 6060 : if (cmp == EQ_EXPR
4615 : : )
4616 : : {
4617 : 1962 : gimple_seq *lseq = seq;
4618 : 1962 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1018;
4619 : 1962 : {
4620 : 1962 : tree tem;
4621 : 1962 : tem = constant_boolean_node (false, type);
4622 : 1962 : res_op->set_value (tem);
4623 : 1962 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 486, __FILE__, __LINE__, true);
4624 : 1962 : return true;
4625 : : }
4626 : 0 : next_after_fail1018:;
4627 : : }
4628 : : else
4629 : : {
4630 : 4098 : if (cmp == NE_EXPR
4631 : : )
4632 : : {
4633 : 4098 : gimple_seq *lseq = seq;
4634 : 4098 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1019;
4635 : 4098 : {
4636 : 4098 : tree tem;
4637 : 4098 : tem = constant_boolean_node (true, type);
4638 : 4098 : res_op->set_value (tem);
4639 : 4098 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 487, __FILE__, __LINE__, true);
4640 : 4098 : return true;
4641 : : }
4642 : 0 : next_after_fail1019:;
4643 : : }
4644 : : }
4645 : : }
4646 : : }
4647 : : }
4648 : 32307 : return false;
4649 : : }
4650 : :
4651 : : bool
4652 : 0 : gimple_simplify_311 (gimple_match_op *res_op, gimple_seq *seq,
4653 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4654 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4655 : : const enum tree_code ARG_UNUSED (op))
4656 : : {
4657 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4658 : 0 : {
4659 : 0 : HOST_WIDE_INT zero_val = tree_to_shwi (captures[2]);
4660 : 0 : tree type0 = TREE_TYPE (captures[1]);
4661 : 0 : int prec = TYPE_PRECISION (type0);
4662 : 0 : if (prec <= MAX_FIXED_MODE_SIZE
4663 : : )
4664 : : {
4665 : 0 : if (tree_int_cst_sgn (captures[3]) < 0 || wi::to_widest (captures[3]) >= prec
4666 : : )
4667 : : {
4668 : 0 : if (zero_val != wi::to_widest (captures[3])
4669 : : )
4670 : : {
4671 : 0 : gimple_seq *lseq = seq;
4672 : 0 : if (lseq
4673 : : && (!single_use (captures[0])))
4674 : : lseq = NULL;
4675 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1046;
4676 : 0 : {
4677 : 0 : tree tem;
4678 : 0 : tem = constant_boolean_node (op == EQ_EXPR ? false : true, type);
4679 : 0 : res_op->set_value (tem);
4680 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 514, __FILE__, __LINE__, true);
4681 : 0 : return true;
4682 : : }
4683 : 0 : next_after_fail1046:;
4684 : : }
4685 : : }
4686 : : else
4687 : : {
4688 : 0 : if (zero_val < 0 || zero_val >= prec
4689 : : )
4690 : : {
4691 : 0 : gimple_seq *lseq = seq;
4692 : 0 : if (lseq
4693 : 0 : && (!single_use (captures[0])))
4694 : 0 : lseq = NULL;
4695 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1047;
4696 : 0 : {
4697 : 0 : res_op->set_op (op, type, 2);
4698 : 0 : {
4699 : 0 : tree _o1[2], _r1;
4700 : 0 : _o1[0] = captures[1];
4701 : 0 : _o1[1] = wide_int_to_tree (type0,
4702 : 0 : wi::mask (tree_to_uhwi (captures[3]) + 1,
4703 : : false, prec));
4704 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4705 : 0 : tem_op.resimplify (lseq, valueize);
4706 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4707 : 0 : if (!_r1) goto next_after_fail1047;
4708 : 0 : res_op->ops[0] = _r1;
4709 : : }
4710 : 0 : res_op->ops[1] = wide_int_to_tree (type0,
4711 : 0 : wi::shifted_mask (tree_to_uhwi (captures[3]), 1,
4712 : : false, prec));
4713 : 0 : res_op->resimplify (lseq, valueize);
4714 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 515, __FILE__, __LINE__, true);
4715 : 0 : return true;
4716 : : }
4717 : 0 : next_after_fail1047:;
4718 : : }
4719 : : }
4720 : : }
4721 : : }
4722 : 0 : return false;
4723 : : }
4724 : :
4725 : : bool
4726 : 114749 : gimple_simplify_317 (gimple_match_op *res_op, gimple_seq *seq,
4727 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4728 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4729 : : const enum tree_code ARG_UNUSED (cmp))
4730 : : {
4731 : 114749 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4732 : 114749 : if (cmp != NE_EXPR
4733 : 78437 : || ! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4734 : 161696 : || ! tree_expr_maybe_nan_p (captures[0])
4735 : : )
4736 : : {
4737 : 70270 : gimple_seq *lseq = seq;
4738 : 70270 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1056;
4739 : 70270 : {
4740 : 70270 : tree tem;
4741 : 70270 : tem = constant_boolean_node (false, type);
4742 : 70270 : res_op->set_value (tem);
4743 : 70270 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 524, __FILE__, __LINE__, true);
4744 : 70270 : return true;
4745 : : }
4746 : 0 : next_after_fail1056:;
4747 : : }
4748 : : return false;
4749 : : }
4750 : :
4751 : : bool
4752 : 0 : gimple_simplify_320 (gimple_match_op *res_op, gimple_seq *seq,
4753 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4754 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4755 : : const combined_fn ARG_UNUSED (copysigns))
4756 : : {
4757 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4758 : 0 : gimple_seq *lseq = seq;
4759 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1060;
4760 : 0 : {
4761 : 0 : res_op->set_op (copysigns, type, 2);
4762 : 0 : res_op->ops[0] = captures[0];
4763 : 0 : res_op->ops[1] = captures[2];
4764 : 0 : res_op->resimplify (lseq, valueize);
4765 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 528, __FILE__, __LINE__, true);
4766 : : return true;
4767 : : }
4768 : 0 : next_after_fail1060:;
4769 : 0 : return false;
4770 : : }
4771 : :
4772 : : bool
4773 : 85 : gimple_simplify_324 (gimple_match_op *res_op, gimple_seq *seq,
4774 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4775 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4776 : : const enum tree_code ARG_UNUSED (div))
4777 : : {
4778 : 85 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4779 : 170 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
4780 : 0 : && (!VECTOR_TYPE_P (type)
4781 : 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
4782 : 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
4783 : 85 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
4784 : 0 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
4785 : 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
4786 : 0 : || (element_precision (type)
4787 : 0 : == element_precision (TREE_TYPE (captures[2])))
4788 : 0 : || (INTEGRAL_TYPE_P (type)
4789 : 0 : && (tree_nonzero_bits (captures[0])
4790 : 85 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
4791 : : true,
4792 : 85 : element_precision (type))) == 0))))
4793 : : )
4794 : : {
4795 : 0 : if (!VECTOR_TYPE_P (type)
4796 : 0 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
4797 : 0 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
4798 : : )
4799 : : {
4800 : 0 : gimple_seq *lseq = seq;
4801 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1064;
4802 : 0 : {
4803 : 0 : res_op->set_op (NOP_EXPR, type, 1);
4804 : 0 : {
4805 : 0 : tree _o1[2], _r1;
4806 : 0 : _o1[0] = captures[1];
4807 : 0 : _o1[1] = captures[3];
4808 : 0 : (*res_op).set_op (RSHIFT_EXPR, TREE_TYPE (_o1[0]), 2);
4809 : 0 : (*res_op).ops[0] = _o1[0];
4810 : 0 : (*res_op).ops[1] = _o1[1];
4811 : 0 : (*res_op).resimplify (lseq, valueize);
4812 : : }
4813 : 0 : if (type != res_op->type
4814 : 0 : && !useless_type_conversion_p (type, res_op->type))
4815 : : {
4816 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1064;
4817 : 0 : res_op->set_op (NOP_EXPR, type, 1);
4818 : 0 : res_op->resimplify (lseq, valueize);
4819 : : }
4820 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 532, __FILE__, __LINE__, true);
4821 : 0 : return true;
4822 : : }
4823 : : next_after_fail1064:;
4824 : : }
4825 : : else
4826 : : {
4827 : 0 : gimple_seq *lseq = seq;
4828 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1065;
4829 : 0 : {
4830 : 0 : res_op->set_op (RSHIFT_EXPR, type, 2);
4831 : 0 : res_op->ops[0] = captures[0];
4832 : 0 : res_op->ops[1] = captures[3];
4833 : 0 : res_op->resimplify (lseq, valueize);
4834 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 533, __FILE__, __LINE__, true);
4835 : 0 : return true;
4836 : : }
4837 : 0 : next_after_fail1065:;
4838 : : }
4839 : : }
4840 : : return false;
4841 : : }
4842 : :
4843 : : bool
4844 : 4554 : gimple_simplify_334 (gimple_match_op *res_op, gimple_seq *seq,
4845 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4846 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4847 : : const enum tree_code ARG_UNUSED (div))
4848 : : {
4849 : 4554 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4850 : 4554 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
4851 : : )
4852 : : {
4853 : 1 : gimple_seq *lseq = seq;
4854 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1077;
4855 : 1 : {
4856 : 1 : res_op->set_op (BIT_AND_EXPR, type, 2);
4857 : 1 : res_op->ops[0] = captures[0];
4858 : 1 : res_op->ops[1] = wide_int_to_tree
4859 : 2 : (type, wi::mask (TYPE_PRECISION (type)
4860 : 1 : - wi::exact_log2 (wi::to_wide (captures[1])),
4861 : 1 : false, TYPE_PRECISION (type)));
4862 : 1 : res_op->resimplify (lseq, valueize);
4863 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 543, __FILE__, __LINE__, true);
4864 : 1 : return true;
4865 : : }
4866 : 0 : next_after_fail1077:;
4867 : : }
4868 : : return false;
4869 : : }
4870 : :
4871 : : bool
4872 : 545 : gimple_simplify_339 (gimple_match_op *res_op, gimple_seq *seq,
4873 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4874 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4875 : : const enum tree_code ARG_UNUSED (div))
4876 : : {
4877 : 545 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4878 : 545 : {
4879 : 545 : int_range_max vr0, vr1, vr2, vr3, vr4;
4880 : 545 : if (INTEGRAL_TYPE_P (type)
4881 : 1090 : && get_range_query (cfun)->range_of_expr (vr1, captures[3])
4882 : 1090 : && get_range_query (cfun)->range_of_expr (vr2, captures[4])
4883 : 545 : && range_op_handler (MULT_EXPR).overflow_free_p (vr1, vr2)
4884 : 912 : && get_range_query (cfun)->range_of_expr (vr0, captures[1])
4885 : 912 : && get_range_query (cfun)->range_of_expr (vr3, captures[2])
4886 : 990 : && range_op_handler (PLUS_EXPR).overflow_free_p (vr0, vr3)
4887 : 900 : && get_range_query (cfun)->range_of_expr (vr4, captures[0])
4888 : 450 : && !vr4.undefined_p ()
4889 : 995 : && (TYPE_UNSIGNED (type)
4890 : 449 : || (vr0.nonnegative_p () && vr4.nonnegative_p ())
4891 : 446 : || (vr0.nonpositive_p () && vr4.nonpositive_p ()))
4892 : : )
4893 : : {
4894 : 5 : gimple_seq *lseq = seq;
4895 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1085;
4896 : 5 : {
4897 : 5 : res_op->set_op (PLUS_EXPR, type, 2);
4898 : 5 : {
4899 : 5 : tree _o1[2], _r1;
4900 : 5 : _o1[0] = captures[1];
4901 : 5 : _o1[1] = captures[4];
4902 : 5 : gimple_match_op tem_op (res_op->cond.any_else (), div, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4903 : 5 : tem_op.resimplify (lseq, valueize);
4904 : 5 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4905 : 5 : if (!_r1) goto next_after_fail1085;
4906 : 5 : res_op->ops[0] = _r1;
4907 : : }
4908 : 5 : res_op->ops[1] = captures[3];
4909 : 5 : res_op->resimplify (lseq, valueize);
4910 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 551, __FILE__, __LINE__, true);
4911 : 5 : return true;
4912 : : }
4913 : 540 : next_after_fail1085:;
4914 : : }
4915 : 545 : }
4916 : 540 : return false;
4917 : : }
4918 : :
4919 : : bool
4920 : 49 : gimple_simplify_350 (gimple_match_op *res_op, gimple_seq *seq,
4921 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4922 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
4923 : : {
4924 : 49 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4925 : 49 : if (SCALAR_FLOAT_TYPE_P (type)
4926 : 49 : && ! HONOR_NANS (type)
4927 : 65 : && ! HONOR_INFINITIES (type)
4928 : : )
4929 : : {
4930 : 16 : if (types_match (type, float_type_node)
4931 : : )
4932 : : {
4933 : 4 : gimple_seq *lseq = seq;
4934 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
4935 : 4 : {
4936 : 4 : res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2);
4937 : 4 : res_op->ops[0] = build_one_cst (type);
4938 : 4 : {
4939 : 4 : tree _o1[1], _r1;
4940 : 4 : _o1[0] = captures[0];
4941 : 4 : if (type != TREE_TYPE (_o1[0]) /* XXX */
4942 : 4 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
4943 : : {
4944 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
4945 : 0 : tem_op.resimplify (lseq, valueize);
4946 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4947 : 0 : if (!_r1) goto next_after_fail1096;
4948 : : }
4949 : : else
4950 : : _r1 = _o1[0];
4951 : 4 : res_op->ops[1] = _r1;
4952 : : }
4953 : 4 : res_op->resimplify (lseq, valueize);
4954 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 562, __FILE__, __LINE__, true);
4955 : 4 : return true;
4956 : : }
4957 : : next_after_fail1096:;
4958 : : }
4959 : : else
4960 : : {
4961 : 12 : if (types_match (type, double_type_node)
4962 : : )
4963 : : {
4964 : 8 : gimple_seq *lseq = seq;
4965 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1097;
4966 : 8 : {
4967 : 8 : res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2);
4968 : 8 : res_op->ops[0] = build_one_cst (type);
4969 : 8 : {
4970 : 8 : tree _o1[1], _r1;
4971 : 8 : _o1[0] = captures[0];
4972 : 8 : if (type != TREE_TYPE (_o1[0]) /* XXX */
4973 : 8 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
4974 : : {
4975 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
4976 : 2 : tem_op.resimplify (lseq, valueize);
4977 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4978 : 2 : if (!_r1) goto next_after_fail1097;
4979 : : }
4980 : : else
4981 : : _r1 = _o1[0];
4982 : 7 : res_op->ops[1] = _r1;
4983 : : }
4984 : 7 : res_op->resimplify (lseq, valueize);
4985 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 563, __FILE__, __LINE__, true);
4986 : 7 : return true;
4987 : : }
4988 : : next_after_fail1097:;
4989 : : }
4990 : : else
4991 : : {
4992 : 4 : if (types_match (type, long_double_type_node)
4993 : : )
4994 : : {
4995 : 4 : gimple_seq *lseq = seq;
4996 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1098;
4997 : 4 : {
4998 : 4 : res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2);
4999 : 4 : res_op->ops[0] = build_one_cst (type);
5000 : 4 : {
5001 : 4 : tree _o1[1], _r1;
5002 : 4 : _o1[0] = captures[0];
5003 : 4 : if (type != TREE_TYPE (_o1[0]) /* XXX */
5004 : 4 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
5005 : : {
5006 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
5007 : 0 : tem_op.resimplify (lseq, valueize);
5008 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5009 : 0 : if (!_r1) goto next_after_fail1098;
5010 : : }
5011 : : else
5012 : : _r1 = _o1[0];
5013 : 4 : res_op->ops[1] = _r1;
5014 : : }
5015 : 4 : res_op->resimplify (lseq, valueize);
5016 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 564, __FILE__, __LINE__, true);
5017 : 4 : return true;
5018 : : }
5019 : : next_after_fail1098:;
5020 : : }
5021 : : }
5022 : : }
5023 : : }
5024 : : return false;
5025 : : }
5026 : :
5027 : : bool
5028 : 3510 : gimple_simplify_368 (gimple_match_op *res_op, gimple_seq *seq,
5029 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5030 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5031 : : const enum tree_code ARG_UNUSED (cmp),
5032 : : const enum tree_code ARG_UNUSED (bitop))
5033 : : {
5034 : 3510 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5035 : 3510 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5036 : : )
5037 : : {
5038 : 3510 : if (bitop == BIT_AND_EXPR || tree_expr_nonnegative_p (captures[1])
5039 : : )
5040 : : {
5041 : 3508 : gimple_seq *lseq = seq;
5042 : 3508 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1118;
5043 : 3508 : {
5044 : 3508 : tree tem;
5045 : 3508 : tem = constant_boolean_node (cmp == GE_EXPR || cmp == LE_EXPR, type);
5046 : 3508 : res_op->set_value (tem);
5047 : 3508 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 584, __FILE__, __LINE__, true);
5048 : 3508 : return true;
5049 : : }
5050 : 0 : next_after_fail1118:;
5051 : : }
5052 : : else
5053 : : {
5054 : 2 : if (TREE_CODE (captures[1]) == INTEGER_CST && wi::neg_p (wi::to_wide (captures[1]))
5055 : : )
5056 : : {
5057 : 2 : gimple_seq *lseq = seq;
5058 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1119;
5059 : 2 : {
5060 : 2 : tree tem;
5061 : 2 : tem = constant_boolean_node (cmp == LT_EXPR, type);
5062 : 2 : res_op->set_value (tem);
5063 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 585, __FILE__, __LINE__, true);
5064 : 2 : return true;
5065 : : }
5066 : 0 : next_after_fail1119:;
5067 : : }
5068 : : }
5069 : : }
5070 : : return false;
5071 : : }
5072 : :
5073 : : bool
5074 : 41181190 : gimple_simplify_376 (gimple_match_op *res_op, gimple_seq *seq,
5075 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5076 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5077 : : const enum tree_code ARG_UNUSED (cmp))
5078 : : {
5079 : 41181190 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5080 : 82330159 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
5081 : 20777 : || POINTER_TYPE_P (TREE_TYPE (captures[2]))
5082 : 17366 : || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2])))
5083 : 82330159 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
5084 : : )
5085 : : {
5086 : 41181190 : {
5087 : 41181190 : tree cst = uniform_integer_cst_p (captures[2]);
5088 : 41181190 : tree arg1_type = TREE_TYPE (cst);
5089 : 41181190 : unsigned int prec = TYPE_PRECISION (arg1_type);
5090 : 41181190 : wide_int max = wi::max_value (arg1_type);
5091 : 41181190 : wide_int signed_max = wi::max_value (prec, SIGNED);
5092 : 41181190 : wide_int min = wi::min_value (arg1_type);
5093 : 41181190 : if (wi::to_wide (cst) == max
5094 : : )
5095 : : {
5096 : 4235 : if (cmp == GT_EXPR
5097 : : )
5098 : : {
5099 : 1590 : gimple_seq *lseq = seq;
5100 : 1590 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1144;
5101 : 1590 : {
5102 : 1590 : tree tem;
5103 : 1590 : tem = constant_boolean_node (false, type);
5104 : 1590 : res_op->set_value (tem);
5105 : 1590 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 594, __FILE__, __LINE__, true);
5106 : 1590 : return true;
5107 : : }
5108 : 0 : next_after_fail1144:;
5109 : : }
5110 : : else
5111 : : {
5112 : 2645 : if (cmp == GE_EXPR
5113 : : )
5114 : : {
5115 : 3 : gimple_seq *lseq = seq;
5116 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1145;
5117 : 3 : {
5118 : 3 : res_op->set_op (EQ_EXPR, type, 2);
5119 : 3 : res_op->ops[0] = captures[0];
5120 : 3 : res_op->ops[1] = captures[2];
5121 : 3 : res_op->resimplify (lseq, valueize);
5122 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 595, __FILE__, __LINE__, true);
5123 : 3 : return true;
5124 : : }
5125 : 0 : next_after_fail1145:;
5126 : : }
5127 : : else
5128 : : {
5129 : 2642 : if (cmp == LE_EXPR
5130 : : )
5131 : : {
5132 : 2622 : gimple_seq *lseq = seq;
5133 : 2622 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1146;
5134 : 2622 : {
5135 : 2622 : tree tem;
5136 : 2622 : tem = constant_boolean_node (true, type);
5137 : 2622 : res_op->set_value (tem);
5138 : 2622 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 596, __FILE__, __LINE__, true);
5139 : 2622 : return true;
5140 : : }
5141 : 0 : next_after_fail1146:;
5142 : : }
5143 : : else
5144 : : {
5145 : 20 : if (cmp == LT_EXPR
5146 : : )
5147 : : {
5148 : 20 : gimple_seq *lseq = seq;
5149 : 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1147;
5150 : 20 : {
5151 : 20 : res_op->set_op (NE_EXPR, type, 2);
5152 : 20 : res_op->ops[0] = captures[0];
5153 : 20 : res_op->ops[1] = captures[2];
5154 : 20 : res_op->resimplify (lseq, valueize);
5155 : 20 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 597, __FILE__, __LINE__, true);
5156 : 20 : return true;
5157 : : }
5158 : 0 : next_after_fail1147:;
5159 : : }
5160 : : }
5161 : : }
5162 : : }
5163 : : }
5164 : : else
5165 : : {
5166 : 41176955 : if (wi::to_wide (cst) == min
5167 : : )
5168 : : {
5169 : 166658 : if (cmp == LT_EXPR
5170 : : )
5171 : : {
5172 : 21319 : gimple_seq *lseq = seq;
5173 : 21319 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1148;
5174 : 21319 : {
5175 : 21319 : tree tem;
5176 : 21319 : tem = constant_boolean_node (false, type);
5177 : 21319 : res_op->set_value (tem);
5178 : 21319 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 598, __FILE__, __LINE__, true);
5179 : 21319 : return true;
5180 : : }
5181 : 0 : next_after_fail1148:;
5182 : : }
5183 : : else
5184 : : {
5185 : 145339 : if (cmp == LE_EXPR
5186 : : )
5187 : : {
5188 : 54689 : gimple_seq *lseq = seq;
5189 : 54689 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1149;
5190 : 54689 : {
5191 : 54689 : res_op->set_op (EQ_EXPR, type, 2);
5192 : 54689 : res_op->ops[0] = captures[0];
5193 : 54689 : res_op->ops[1] = captures[2];
5194 : 54689 : res_op->resimplify (lseq, valueize);
5195 : 54689 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 599, __FILE__, __LINE__, true);
5196 : 54689 : return true;
5197 : : }
5198 : 0 : next_after_fail1149:;
5199 : : }
5200 : : else
5201 : : {
5202 : 90650 : if (cmp == GE_EXPR
5203 : : )
5204 : : {
5205 : 4455 : gimple_seq *lseq = seq;
5206 : 4455 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1150;
5207 : 4455 : {
5208 : 4455 : tree tem;
5209 : 4455 : tem = constant_boolean_node (true, type);
5210 : 4455 : res_op->set_value (tem);
5211 : 4455 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 600, __FILE__, __LINE__, true);
5212 : 4455 : return true;
5213 : : }
5214 : 0 : next_after_fail1150:;
5215 : : }
5216 : : else
5217 : : {
5218 : 86195 : if (cmp == GT_EXPR
5219 : : )
5220 : : {
5221 : 86195 : gimple_seq *lseq = seq;
5222 : 86195 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1151;
5223 : 86195 : {
5224 : 86195 : res_op->set_op (NE_EXPR, type, 2);
5225 : 86195 : res_op->ops[0] = captures[0];
5226 : 86195 : res_op->ops[1] = captures[2];
5227 : 86195 : res_op->resimplify (lseq, valueize);
5228 : 86195 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 601, __FILE__, __LINE__, true);
5229 : 86195 : return true;
5230 : : }
5231 : 0 : next_after_fail1151:;
5232 : : }
5233 : : }
5234 : : }
5235 : : }
5236 : : }
5237 : : else
5238 : : {
5239 : 41010300 : if (wi::to_wide (cst) == max - 1
5240 : : )
5241 : : {
5242 : 8138 : if (cmp == GT_EXPR
5243 : : )
5244 : : {
5245 : 722 : gimple_seq *lseq = seq;
5246 : 722 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1152;
5247 : 722 : {
5248 : 722 : res_op->set_op (EQ_EXPR, type, 2);
5249 : 722 : res_op->ops[0] = captures[0];
5250 : 722 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
5251 : 722 : wide_int_to_tree (TREE_TYPE (cst),
5252 : 722 : wi::to_wide (cst)
5253 : 1444 : + 1));
5254 : 722 : res_op->resimplify (lseq, valueize);
5255 : 722 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 602, __FILE__, __LINE__, true);
5256 : 722 : return true;
5257 : : }
5258 : 0 : next_after_fail1152:;
5259 : : }
5260 : : else
5261 : : {
5262 : 7416 : if (cmp == LE_EXPR
5263 : : )
5264 : : {
5265 : 7416 : gimple_seq *lseq = seq;
5266 : 7416 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1153;
5267 : 7416 : {
5268 : 7416 : res_op->set_op (NE_EXPR, type, 2);
5269 : 7416 : res_op->ops[0] = captures[0];
5270 : 7416 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
5271 : 7416 : wide_int_to_tree (TREE_TYPE (cst),
5272 : 7416 : wi::to_wide (cst)
5273 : 14832 : + 1));
5274 : 7416 : res_op->resimplify (lseq, valueize);
5275 : 7416 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 603, __FILE__, __LINE__, true);
5276 : 7416 : return true;
5277 : : }
5278 : 0 : next_after_fail1153:;
5279 : : }
5280 : : }
5281 : : }
5282 : : else
5283 : : {
5284 : 41002162 : if (wi::to_wide (cst) == min + 1
5285 : : )
5286 : : {
5287 : 643343 : if (cmp == GE_EXPR
5288 : : )
5289 : : {
5290 : 8515 : gimple_seq *lseq = seq;
5291 : 8515 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1154;
5292 : 8515 : {
5293 : 8515 : res_op->set_op (NE_EXPR, type, 2);
5294 : 8515 : res_op->ops[0] = captures[0];
5295 : 8515 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
5296 : 8515 : wide_int_to_tree (TREE_TYPE (cst),
5297 : 8515 : wi::to_wide (cst)
5298 : 17030 : - 1));
5299 : 8515 : res_op->resimplify (lseq, valueize);
5300 : 8515 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 604, __FILE__, __LINE__, true);
5301 : 8515 : return true;
5302 : : }
5303 : 0 : next_after_fail1154:;
5304 : : }
5305 : : else
5306 : : {
5307 : 634828 : if (cmp == LT_EXPR
5308 : : )
5309 : : {
5310 : 68 : gimple_seq *lseq = seq;
5311 : 68 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1155;
5312 : 68 : {
5313 : 68 : res_op->set_op (EQ_EXPR, type, 2);
5314 : 68 : res_op->ops[0] = captures[0];
5315 : 68 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
5316 : 68 : wide_int_to_tree (TREE_TYPE (cst),
5317 : 68 : wi::to_wide (cst)
5318 : 136 : - 1));
5319 : 68 : res_op->resimplify (lseq, valueize);
5320 : 68 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 605, __FILE__, __LINE__, true);
5321 : 68 : return true;
5322 : : }
5323 : 0 : next_after_fail1155:;
5324 : : }
5325 : : }
5326 : : }
5327 : : else
5328 : : {
5329 : 40358816 : if (wi::to_wide (cst) == signed_max
5330 : 12868 : && TYPE_UNSIGNED (arg1_type)
5331 : 12868 : && TYPE_MODE (arg1_type) != BLKmode
5332 : 40358820 : && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type))
5333 : 40367909 : && INTEGRAL_TYPE_P (arg1_type)
5334 : : )
5335 : : {
5336 : 9089 : if (cmp == LE_EXPR || cmp == GT_EXPR
5337 : : )
5338 : : {
5339 : 9089 : {
5340 : 9089 : tree st = signed_type_for (TREE_TYPE (captures[2]));
5341 : 9089 : if (cst == captures[2] && cmp == LE_EXPR
5342 : : )
5343 : : {
5344 : 2370 : gimple_seq *lseq = seq;
5345 : 2370 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1156;
5346 : 2370 : {
5347 : 2370 : res_op->set_op (GE_EXPR, type, 2);
5348 : 2370 : {
5349 : 2370 : tree _o1[1], _r1;
5350 : 2370 : _o1[0] = captures[1];
5351 : 2370 : if (st != TREE_TYPE (_o1[0]) /* XXX */
5352 : 2370 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
5353 : : {
5354 : 2370 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, _o1[0]);
5355 : 2370 : tem_op.resimplify (lseq, valueize);
5356 : 2370 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5357 : 2370 : if (!_r1) goto next_after_fail1156;
5358 : : }
5359 : : else
5360 : : _r1 = _o1[0];
5361 : 220 : res_op->ops[0] = _r1;
5362 : : }
5363 : 220 : res_op->ops[1] = build_zero_cst (st);
5364 : 220 : res_op->resimplify (lseq, valueize);
5365 : 220 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 606, __FILE__, __LINE__, true);
5366 : 220 : return true;
5367 : : }
5368 : 40992054 : next_after_fail1156:;
5369 : : }
5370 : : else
5371 : : {
5372 : 6719 : if (cst == captures[2] && cmp == GT_EXPR
5373 : : )
5374 : : {
5375 : 6719 : gimple_seq *lseq = seq;
5376 : 6719 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1157;
5377 : 6719 : {
5378 : 6719 : res_op->set_op (LT_EXPR, type, 2);
5379 : 6719 : {
5380 : 6719 : tree _o1[1], _r1;
5381 : 6719 : _o1[0] = captures[1];
5382 : 6719 : if (st != TREE_TYPE (_o1[0]) /* XXX */
5383 : 6719 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
5384 : : {
5385 : 6719 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, _o1[0]);
5386 : 6719 : tem_op.resimplify (lseq, valueize);
5387 : 6719 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5388 : 6719 : if (!_r1) goto next_after_fail1157;
5389 : : }
5390 : : else
5391 : : _r1 = _o1[0];
5392 : 1302 : res_op->ops[0] = _r1;
5393 : : }
5394 : 1302 : res_op->ops[1] = build_zero_cst (st);
5395 : 1302 : res_op->resimplify (lseq, valueize);
5396 : 1302 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 607, __FILE__, __LINE__, true);
5397 : 1302 : return true;
5398 : : }
5399 : 40992054 : next_after_fail1157:;
5400 : : }
5401 : : else
5402 : : {
5403 : 0 : if (cmp == LE_EXPR
5404 : : )
5405 : : {
5406 : 0 : gimple_seq *lseq = seq;
5407 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1158;
5408 : 0 : {
5409 : 0 : res_op->set_op (GE_EXPR, type, 2);
5410 : 0 : {
5411 : 0 : tree _o1[1], _r1;
5412 : 0 : _o1[0] = captures[1];
5413 : 0 : if (st != TREE_TYPE (_o1[0]) /* XXX */
5414 : 0 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
5415 : : {
5416 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, _o1[0]);
5417 : 0 : tem_op.resimplify (lseq, valueize);
5418 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5419 : 0 : if (!_r1) goto next_after_fail1158;
5420 : : }
5421 : : else
5422 : : _r1 = _o1[0];
5423 : 0 : res_op->ops[0] = _r1;
5424 : : }
5425 : 0 : res_op->ops[1] = build_zero_cst (st);
5426 : 0 : res_op->resimplify (lseq, valueize);
5427 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 608, __FILE__, __LINE__, true);
5428 : 0 : return true;
5429 : : }
5430 : 40992054 : next_after_fail1158:;
5431 : : }
5432 : : else
5433 : : {
5434 : 0 : if (cmp == GT_EXPR
5435 : : )
5436 : : {
5437 : 0 : gimple_seq *lseq = seq;
5438 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1159;
5439 : 0 : {
5440 : 0 : res_op->set_op (LT_EXPR, type, 2);
5441 : 0 : {
5442 : 0 : tree _o1[1], _r1;
5443 : 0 : _o1[0] = captures[1];
5444 : 0 : if (st != TREE_TYPE (_o1[0]) /* XXX */
5445 : 0 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
5446 : : {
5447 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, _o1[0]);
5448 : 0 : tem_op.resimplify (lseq, valueize);
5449 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5450 : 0 : if (!_r1) goto next_after_fail1159;
5451 : : }
5452 : : else
5453 : : _r1 = _o1[0];
5454 : 0 : res_op->ops[0] = _r1;
5455 : : }
5456 : 0 : res_op->ops[1] = build_zero_cst (st);
5457 : 0 : res_op->resimplify (lseq, valueize);
5458 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 609, __FILE__, __LINE__, true);
5459 : 0 : return true;
5460 : : }
5461 : 40992054 : next_after_fail1159:;
5462 : : }
5463 : : }
5464 : : }
5465 : : }
5466 : : }
5467 : : }
5468 : : }
5469 : : }
5470 : : }
5471 : : }
5472 : : }
5473 : 41181196 : }
5474 : : }
5475 : : return false;
5476 : : }
5477 : :
5478 : : bool
5479 : 70262 : gimple_simplify_416 (gimple_match_op *res_op, gimple_seq *seq,
5480 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5481 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5482 : : const enum tree_code ARG_UNUSED (minmax))
5483 : : {
5484 : 70262 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5485 : 70262 : if (INTEGRAL_TYPE_P (type)
5486 : 70066 : && types_match (captures[1], type) && int_fits_type_p (captures[2], type)
5487 : 9617 : && TYPE_SIGN (TREE_TYPE (captures[0])) == TYPE_SIGN (type)
5488 : 73224 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
5489 : : )
5490 : : {
5491 : 1789 : gimple_seq *lseq = seq;
5492 : 1789 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1219;
5493 : 1789 : {
5494 : 1789 : res_op->set_op (minmax, type, 2);
5495 : 1789 : res_op->ops[0] = captures[1];
5496 : 1789 : {
5497 : 1789 : tree _o1[1], _r1;
5498 : 1789 : _o1[0] = captures[2];
5499 : 1789 : if (type != TREE_TYPE (_o1[0]) /* XXX */
5500 : 1789 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
5501 : : {
5502 : 1789 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
5503 : 1789 : tem_op.resimplify (lseq, valueize);
5504 : 1789 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5505 : 1789 : if (!_r1) goto next_after_fail1219;
5506 : : }
5507 : : else
5508 : : _r1 = _o1[0];
5509 : 1789 : res_op->ops[1] = _r1;
5510 : : }
5511 : 1789 : res_op->resimplify (lseq, valueize);
5512 : 1789 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 662, __FILE__, __LINE__, true);
5513 : 1789 : return true;
5514 : : }
5515 : : next_after_fail1219:;
5516 : : }
5517 : : return false;
5518 : : }
5519 : :
5520 : : bool
5521 : 1019 : gimple_simplify_420 (gimple_match_op *res_op, gimple_seq *seq,
5522 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5523 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5524 : : const enum tree_code ARG_UNUSED (maxmin))
5525 : : {
5526 : 1019 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5527 : 1019 : if (optimize
5528 : 1019 : && FLOAT_TYPE_P (type)
5529 : 48 : && FLOAT_TYPE_P (TREE_TYPE (captures[0]))
5530 : 48 : && types_match (type, TREE_TYPE (captures[1]))
5531 : 48 : && types_match (type, TREE_TYPE (captures[2]))
5532 : 1067 : && element_precision (type) < element_precision (TREE_TYPE (captures[0]))
5533 : : )
5534 : : {
5535 : 48 : gimple_seq *lseq = seq;
5536 : 48 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1223;
5537 : 48 : {
5538 : 48 : res_op->set_op (maxmin, type, 2);
5539 : 48 : res_op->ops[0] = captures[1];
5540 : 48 : res_op->ops[1] = captures[2];
5541 : 48 : res_op->resimplify (lseq, valueize);
5542 : 48 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 666, __FILE__, __LINE__, true);
5543 : 48 : return true;
5544 : : }
5545 : 0 : next_after_fail1223:;
5546 : : }
5547 : : return false;
5548 : : }
5549 : :
5550 : : bool
5551 : 6773634 : gimple_simplify_424 (gimple_match_op *res_op, gimple_seq *seq,
5552 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5553 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5554 : : const enum tree_code ARG_UNUSED (op))
5555 : : {
5556 : 6773634 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5557 : 6773634 : if (INTEGRAL_TYPE_P (type)
5558 : 5932010 : && op != MULT_EXPR
5559 : 5932010 : && op != RDIV_EXPR
5560 : 4105179 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
5561 : 4105179 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5562 : 4105179 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
5563 : 4100401 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
5564 : 4100401 : && type_has_mode_precision_p (type)
5565 : 4074159 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
5566 : 0 : && types_match (captures[2], type)
5567 : 6773634 : && (types_match (captures[2], captures[4])
5568 : 0 : || poly_int_tree_p (captures[3]))
5569 : : )
5570 : : {
5571 : 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
5572 : : )
5573 : : {
5574 : 0 : gimple_seq *lseq = seq;
5575 : 0 : if (lseq
5576 : 0 : && (!single_use (captures[0])))
5577 : 0 : lseq = NULL;
5578 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1236;
5579 : 0 : {
5580 : 0 : res_op->set_op (op, type, 2);
5581 : 0 : res_op->ops[0] = captures[2];
5582 : 0 : {
5583 : 0 : tree _o1[1], _r1;
5584 : 0 : _o1[0] = captures[4];
5585 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
5586 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
5587 : : {
5588 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
5589 : 0 : tem_op.resimplify (lseq, valueize);
5590 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5591 : 0 : if (!_r1) goto next_after_fail1236;
5592 : : }
5593 : : else
5594 : : _r1 = _o1[0];
5595 : 0 : res_op->ops[1] = _r1;
5596 : : }
5597 : 0 : res_op->resimplify (lseq, valueize);
5598 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 667, __FILE__, __LINE__, true);
5599 : 0 : return true;
5600 : : }
5601 : : next_after_fail1236:;
5602 : : }
5603 : : else
5604 : : {
5605 : 0 : {
5606 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
5607 : 0 : gimple_seq *lseq = seq;
5608 : 0 : if (lseq
5609 : 0 : && (!single_use (captures[0])))
5610 : 0 : lseq = NULL;
5611 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1237;
5612 : 0 : {
5613 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5614 : 0 : {
5615 : 0 : tree _o1[2], _r1;
5616 : 0 : {
5617 : 0 : tree _o2[1], _r2;
5618 : 0 : _o2[0] = captures[2];
5619 : 0 : if (utype != TREE_TYPE (_o2[0]) /* XXX */
5620 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o2[0])))
5621 : : {
5622 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o2[0]);
5623 : 0 : tem_op.resimplify (lseq, valueize);
5624 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5625 : 0 : if (!_r2) goto next_after_fail1237;
5626 : : }
5627 : : else
5628 : : _r2 = _o2[0];
5629 : 0 : _o1[0] = _r2;
5630 : : }
5631 : 0 : {
5632 : 0 : tree _o2[1], _r2;
5633 : 0 : _o2[0] = captures[4];
5634 : 0 : if (utype != TREE_TYPE (_o2[0]) /* XXX */
5635 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o2[0])))
5636 : : {
5637 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o2[0]);
5638 : 0 : tem_op.resimplify (lseq, valueize);
5639 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5640 : 0 : if (!_r2) goto next_after_fail1237;
5641 : : }
5642 : : else
5643 : : _r2 = _o2[0];
5644 : 0 : _o1[1] = _r2;
5645 : : }
5646 : 0 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
5647 : 0 : (*res_op).ops[0] = _o1[0];
5648 : 0 : (*res_op).ops[1] = _o1[1];
5649 : 0 : (*res_op).resimplify (lseq, valueize);
5650 : : }
5651 : 0 : if (type != res_op->type
5652 : 0 : && !useless_type_conversion_p (type, res_op->type))
5653 : : {
5654 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1237;
5655 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5656 : 0 : res_op->resimplify (lseq, valueize);
5657 : : }
5658 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 668, __FILE__, __LINE__, true);
5659 : 0 : return true;
5660 : : }
5661 : : next_after_fail1237:;
5662 : : }
5663 : : }
5664 : : }
5665 : : else
5666 : : {
5667 : 6577185 : if (FLOAT_TYPE_P (type)
5668 : 6974463 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
5669 : 198639 : == DECIMAL_FLOAT_TYPE_P (type)
5670 : : )
5671 : : {
5672 : 198468 : {
5673 : 198468 : tree arg0 = strip_float_extensions (captures[2]);
5674 : 198468 : tree arg1 = strip_float_extensions (captures[4]);
5675 : 198468 : tree itype = TREE_TYPE (captures[0]);
5676 : 198468 : tree ty1 = TREE_TYPE (arg0);
5677 : 198468 : tree ty2 = TREE_TYPE (arg1);
5678 : 198468 : enum tree_code code = TREE_CODE (itype);
5679 : 2190 : if (FLOAT_TYPE_P (ty1)
5680 : 200658 : && FLOAT_TYPE_P (ty2)
5681 : : )
5682 : : {
5683 : 198468 : {
5684 : 198468 : tree newtype = type;
5685 : 198468 : if (TYPE_MODE (ty1) == SDmode
5686 : 197940 : || TYPE_MODE (ty2) == SDmode
5687 : 396408 : || TYPE_MODE (type) == SDmode)
5688 : 1019 : newtype = dfloat32_type_node;
5689 : 198468 : if (TYPE_MODE (ty1) == DDmode
5690 : 198215 : || TYPE_MODE (ty2) == DDmode
5691 : 396683 : || TYPE_MODE (type) == DDmode)
5692 : 756 : newtype = dfloat64_type_node;
5693 : 198468 : if (TYPE_MODE (ty1) == TDmode
5694 : 197992 : || TYPE_MODE (ty2) == TDmode
5695 : 396460 : || TYPE_MODE (type) == TDmode)
5696 : 739 : newtype = dfloat128_type_node;
5697 : 198468 : if ((newtype == dfloat32_type_node
5698 : 198468 : || newtype == dfloat64_type_node
5699 : 197950 : || newtype == dfloat128_type_node)
5700 : 1257 : && newtype == type
5701 : 198996 : && types_match (newtype, type)
5702 : : )
5703 : : {
5704 : 528 : gimple_seq *lseq = seq;
5705 : 528 : if (lseq
5706 : 219 : && (!single_use (captures[0])))
5707 : 463 : lseq = NULL;
5708 : 528 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1238;
5709 : 528 : {
5710 : 528 : res_op->set_op (op, type, 2);
5711 : 528 : {
5712 : 528 : tree _o1[1], _r1;
5713 : 528 : _o1[0] = captures[2];
5714 : 528 : if (newtype != TREE_TYPE (_o1[0]) /* XXX */
5715 : 528 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o1[0])))
5716 : : {
5717 : 528 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o1[0]);
5718 : 528 : tem_op.resimplify (lseq, valueize);
5719 : 528 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5720 : 528 : if (!_r1) goto next_after_fail1238;
5721 : : }
5722 : : else
5723 : : _r1 = _o1[0];
5724 : 65 : res_op->ops[0] = _r1;
5725 : : }
5726 : 65 : {
5727 : 65 : tree _o1[1], _r1;
5728 : 65 : _o1[0] = captures[4];
5729 : 65 : if (newtype != TREE_TYPE (_o1[0]) /* XXX */
5730 : 65 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o1[0])))
5731 : : {
5732 : 65 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o1[0]);
5733 : 65 : tem_op.resimplify (lseq, valueize);
5734 : 65 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5735 : 65 : if (!_r1) goto next_after_fail1238;
5736 : : }
5737 : : else
5738 : : _r1 = _o1[0];
5739 : 65 : res_op->ops[1] = _r1;
5740 : : }
5741 : 65 : res_op->resimplify (lseq, valueize);
5742 : 65 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 669, __FILE__, __LINE__, true);
5743 : 65 : return true;
5744 : : }
5745 : : next_after_fail1238:;
5746 : : }
5747 : : else
5748 : : {
5749 : 197940 : {
5750 : 197940 : if (element_precision (ty1) > element_precision (newtype))
5751 : 156938 : newtype = ty1;
5752 : 197940 : if (element_precision (ty2) > element_precision (newtype))
5753 : 5550 : newtype = ty2;
5754 : 197940 : if (element_precision (newtype) < element_precision (itype)
5755 : 101 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
5756 : 0 : || target_supports_op_p (newtype, op, optab_default))
5757 : 101 : && (flag_unsafe_math_optimizations
5758 : 101 : || (element_precision (newtype) == element_precision (type)
5759 : 48 : && real_can_shorten_arithmetic (element_mode (itype),
5760 : : element_mode (type))
5761 : 0 : && !excess_precision_type (newtype)))
5762 : 197940 : && !types_match (itype, newtype)
5763 : : )
5764 : : {
5765 : 0 : gimple_seq *lseq = seq;
5766 : 0 : if (lseq
5767 : 0 : && (!single_use (captures[0])))
5768 : 0 : lseq = NULL;
5769 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1239;
5770 : 0 : {
5771 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5772 : 0 : {
5773 : 0 : tree _o1[2], _r1;
5774 : 0 : {
5775 : 0 : tree _o2[1], _r2;
5776 : 0 : _o2[0] = captures[2];
5777 : 0 : if (newtype != TREE_TYPE (_o2[0]) /* XXX */
5778 : 0 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o2[0])))
5779 : : {
5780 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o2[0]);
5781 : 0 : tem_op.resimplify (lseq, valueize);
5782 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5783 : 0 : if (!_r2) goto next_after_fail1239;
5784 : : }
5785 : : else
5786 : : _r2 = _o2[0];
5787 : 0 : _o1[0] = _r2;
5788 : : }
5789 : 0 : {
5790 : 0 : tree _o2[1], _r2;
5791 : 0 : _o2[0] = captures[4];
5792 : 0 : if (newtype != TREE_TYPE (_o2[0]) /* XXX */
5793 : 0 : && !useless_type_conversion_p (newtype, TREE_TYPE (_o2[0])))
5794 : : {
5795 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, _o2[0]);
5796 : 0 : tem_op.resimplify (lseq, valueize);
5797 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5798 : 0 : if (!_r2) goto next_after_fail1239;
5799 : : }
5800 : : else
5801 : : _r2 = _o2[0];
5802 : 0 : _o1[1] = _r2;
5803 : : }
5804 : 0 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
5805 : 0 : (*res_op).ops[0] = _o1[0];
5806 : 0 : (*res_op).ops[1] = _o1[1];
5807 : 0 : (*res_op).resimplify (lseq, valueize);
5808 : : }
5809 : 0 : if (type != res_op->type
5810 : 0 : && !useless_type_conversion_p (type, res_op->type))
5811 : : {
5812 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1239;
5813 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5814 : 0 : res_op->resimplify (lseq, valueize);
5815 : : }
5816 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 670, __FILE__, __LINE__, true);
5817 : 0 : return true;
5818 : : }
5819 : : next_after_fail1239:;
5820 : : }
5821 : : }
5822 : : }
5823 : : }
5824 : : }
5825 : : }
5826 : : }
5827 : : }
5828 : : return false;
5829 : : }
5830 : :
5831 : : bool
5832 : 4 : gimple_simplify_446 (gimple_match_op *res_op, gimple_seq *seq,
5833 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5834 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5835 : : {
5836 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5837 : 8 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5838 : 8 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
5839 : : )
5840 : : {
5841 : 4 : gimple_seq *lseq = seq;
5842 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1263;
5843 : 4 : {
5844 : 4 : res_op->set_op (BIT_AND_EXPR, type, 2);
5845 : 4 : res_op->ops[0] = captures[0];
5846 : 4 : res_op->ops[1] = captures[1];
5847 : 4 : res_op->resimplify (lseq, valueize);
5848 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 694, __FILE__, __LINE__, true);
5849 : 4 : return true;
5850 : : }
5851 : 0 : next_after_fail1263:;
5852 : : }
5853 : : return false;
5854 : : }
5855 : :
5856 : : bool
5857 : 0 : gimple_simplify_452 (gimple_match_op *res_op, gimple_seq *seq,
5858 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5859 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5860 : : {
5861 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5862 : 0 : gimple_seq *lseq = seq;
5863 : 0 : if (lseq
5864 : 0 : && (!single_use (captures[3])
5865 : 0 : || !single_use (captures[4])))
5866 : 0 : lseq = NULL;
5867 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1269;
5868 : 0 : {
5869 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
5870 : 0 : res_op->ops[0] = captures[0];
5871 : 0 : {
5872 : 0 : tree _o1[1], _r1;
5873 : 0 : _o1[0] = captures[5];
5874 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5875 : 0 : tem_op.resimplify (lseq, valueize);
5876 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5877 : 0 : if (!_r1) goto next_after_fail1269;
5878 : 0 : res_op->ops[1] = _r1;
5879 : : }
5880 : 0 : res_op->resimplify (lseq, valueize);
5881 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 699, __FILE__, __LINE__, true);
5882 : : return true;
5883 : : }
5884 : : next_after_fail1269:;
5885 : : return false;
5886 : : }
5887 : :
5888 : : bool
5889 : 10223 : gimple_simplify_458 (gimple_match_op *res_op, gimple_seq *seq,
5890 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5891 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5892 : : {
5893 : 10223 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5894 : 18583 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5895 : 28806 : && wi::bit_and_not (get_nonzero_bits (captures[0]), wi::to_wide (captures[2])) == 0
5896 : : )
5897 : : {
5898 : 2 : gimple_seq *lseq = seq;
5899 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1275;
5900 : 2 : {
5901 : 2 : tree tem;
5902 : 2 : tem = captures[0];
5903 : 2 : res_op->set_value (tem);
5904 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 705, __FILE__, __LINE__, true);
5905 : 2 : return true;
5906 : : }
5907 : 0 : next_after_fail1275:;
5908 : : }
5909 : : return false;
5910 : : }
5911 : :
5912 : : bool
5913 : 1591 : gimple_simplify_460 (gimple_match_op *res_op, gimple_seq *seq,
5914 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5915 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5916 : : {
5917 : 1591 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5918 : 1591 : {
5919 : 1591 : bool wascmp;
5920 : 1591 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
5921 : 1591 : && (!wascmp || element_precision (type) == 1)
5922 : : )
5923 : : {
5924 : 8 : gimple_seq *lseq = seq;
5925 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1277;
5926 : 8 : {
5927 : 8 : res_op->set_op (BIT_AND_EXPR, type, 2);
5928 : 8 : res_op->ops[0] = captures[0];
5929 : 8 : res_op->ops[1] = captures[1];
5930 : 8 : res_op->resimplify (lseq, valueize);
5931 : 8 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 707, __FILE__, __LINE__, true);
5932 : 8 : return true;
5933 : : }
5934 : 0 : next_after_fail1277:;
5935 : : }
5936 : : }
5937 : 1583 : return false;
5938 : : }
5939 : :
5940 : : bool
5941 : 0 : gimple_simplify_463 (gimple_match_op *res_op, gimple_seq *seq,
5942 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5943 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5944 : : {
5945 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5946 : 0 : gimple_seq *lseq = seq;
5947 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1280;
5948 : 0 : {
5949 : 0 : tree tem;
5950 : 0 : tem = build_zero_cst (type);
5951 : 0 : res_op->set_value (tem);
5952 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 710, __FILE__, __LINE__, true);
5953 : : return true;
5954 : : }
5955 : 0 : next_after_fail1280:;
5956 : 0 : return false;
5957 : : }
5958 : :
5959 : : bool
5960 : 6172150 : gimple_simplify_466 (gimple_match_op *res_op, gimple_seq *seq,
5961 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5962 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
5963 : : {
5964 : 6172150 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5965 : 12276602 : if (POINTER_TYPE_P (TREE_TYPE (captures[0]))
5966 : 6173056 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
5967 : : )
5968 : : {
5969 : 68604 : {
5970 : 68604 : unsigned int align;
5971 : 68604 : unsigned HOST_WIDE_INT bitpos;
5972 : 68604 : get_pointer_alignment_1 (captures[0], &align, &bitpos);
5973 : 68604 : if (wi::ltu_p (wi::to_wide (captures[1]), align / BITS_PER_UNIT)
5974 : : )
5975 : : {
5976 : 897 : gimple_seq *lseq = seq;
5977 : 897 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1283;
5978 : 897 : {
5979 : 897 : tree tem;
5980 : 1794 : tem = wide_int_to_tree (type, (wi::to_wide (captures[1])
5981 : 1794 : & (bitpos / BITS_PER_UNIT)));
5982 : 897 : res_op->set_value (tem);
5983 : 897 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 712, __FILE__, __LINE__, true);
5984 : 897 : return true;
5985 : : }
5986 : 0 : next_after_fail1283:;
5987 : : }
5988 : : }
5989 : : }
5990 : : return false;
5991 : : }
5992 : :
5993 : : bool
5994 : 1275 : gimple_simplify_473 (gimple_match_op *res_op, gimple_seq *seq,
5995 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5996 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5997 : : const enum tree_code ARG_UNUSED (code2),
5998 : : const enum tree_code ARG_UNUSED (code1))
5999 : : {
6000 : 1275 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6001 : 1275 : if ((TREE_CODE (captures[2]) == INTEGER_CST
6002 : 1087 : && TREE_CODE (captures[5]) == INTEGER_CST)
6003 : 2217 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
6004 : 153 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
6005 : 1130 : && bitwise_equal_p (captures[2], captures[5]))
6006 : : )
6007 : : {
6008 : 145 : {
6009 : 145 : bool one_before = false;
6010 : 145 : bool one_after = false;
6011 : 145 : int cmp = 0;
6012 : 145 : bool allbits = true;
6013 : 145 : if (TREE_CODE (captures[2]) == INTEGER_CST
6014 : 145 : && TREE_CODE (captures[5]) == INTEGER_CST)
6015 : : {
6016 : 145 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
6017 : 145 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
6018 : 145 : auto t2 = wi::to_wide (captures[5]);
6019 : 145 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
6020 : 145 : if (cmp < 0
6021 : 145 : && t1 == t2 - 1)
6022 : : one_before = true;
6023 : 145 : if (cmp > 0
6024 : 145 : && t1 == t2 + 1)
6025 : : one_after = true;
6026 : : }
6027 : 145 : bool val;
6028 : 145 : switch (code2)
6029 : : {
6030 : 7 : case EQ_EXPR: val = (cmp == 0); break;
6031 : 11 : case NE_EXPR: val = (cmp != 0); break;
6032 : 8 : case LT_EXPR: val = (cmp < 0); break;
6033 : 63 : case GT_EXPR: val = (cmp > 0); break;
6034 : 1 : case LE_EXPR: val = (cmp <= 0); break;
6035 : 55 : case GE_EXPR: val = (cmp >= 0); break;
6036 : 0 : default: gcc_unreachable ();
6037 : : }
6038 : 145 : if (code1 == EQ_EXPR && val
6039 : : )
6040 : : {
6041 : 2 : gimple_seq *lseq = seq;
6042 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1297;
6043 : 2 : {
6044 : 2 : tree tem;
6045 : 2 : tem = captures[0];
6046 : 2 : res_op->set_value (tem);
6047 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 723, __FILE__, __LINE__, true);
6048 : 2 : return true;
6049 : : }
6050 : 0 : next_after_fail1297:;
6051 : : }
6052 : : else
6053 : : {
6054 : 143 : if (code1 == EQ_EXPR && !val
6055 : : )
6056 : : {
6057 : 0 : gimple_seq *lseq = seq;
6058 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1298;
6059 : 0 : {
6060 : 0 : tree tem;
6061 : 0 : tem = constant_boolean_node (false, type);
6062 : 0 : res_op->set_value (tem);
6063 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 724, __FILE__, __LINE__, true);
6064 : 0 : return true;
6065 : : }
6066 : 0 : next_after_fail1298:;
6067 : : }
6068 : : else
6069 : : {
6070 : 143 : if (code1 == NE_EXPR && !val && allbits
6071 : : )
6072 : : {
6073 : 30 : gimple_seq *lseq = seq;
6074 : 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1299;
6075 : 30 : {
6076 : 30 : tree tem;
6077 : 30 : tem = captures[3];
6078 : 30 : res_op->set_value (tem);
6079 : 30 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 725, __FILE__, __LINE__, true);
6080 : 30 : return true;
6081 : : }
6082 : 0 : next_after_fail1299:;
6083 : 0 : }
6084 : : else
6085 : : {
6086 : 113 : if (code1 == NE_EXPR
6087 : 113 : && code2 == GE_EXPR
6088 : 54 : && cmp == 0
6089 : 54 : && allbits
6090 : : )
6091 : : {
6092 : 54 : gimple_seq *lseq = seq;
6093 : 54 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1300;
6094 : 54 : {
6095 : 54 : res_op->set_op (GT_EXPR, type, 2);
6096 : 54 : res_op->ops[0] = captures[4];
6097 : 54 : {
6098 : 54 : tree _o1[1], _r1;
6099 : 54 : _o1[0] = captures[2];
6100 : 54 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6101 : 54 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6102 : : {
6103 : 54 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6104 : 54 : tem_op.resimplify (lseq, valueize);
6105 : 54 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6106 : 54 : if (!_r1) goto next_after_fail1300;
6107 : : }
6108 : : else
6109 : : _r1 = _o1[0];
6110 : 54 : res_op->ops[1] = _r1;
6111 : : }
6112 : 54 : res_op->resimplify (lseq, valueize);
6113 : 54 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 726, __FILE__, __LINE__, true);
6114 : 54 : return true;
6115 : : }
6116 : : next_after_fail1300:;
6117 : : }
6118 : : else
6119 : : {
6120 : 59 : if (code1 == NE_EXPR
6121 : 59 : && code2 == LE_EXPR
6122 : 0 : && cmp == 0
6123 : 0 : && allbits
6124 : : )
6125 : : {
6126 : 0 : gimple_seq *lseq = seq;
6127 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1301;
6128 : 0 : {
6129 : 0 : res_op->set_op (LT_EXPR, type, 2);
6130 : 0 : res_op->ops[0] = captures[4];
6131 : 0 : {
6132 : 0 : tree _o1[1], _r1;
6133 : 0 : _o1[0] = captures[2];
6134 : 0 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6135 : 0 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6136 : : {
6137 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6138 : 0 : tem_op.resimplify (lseq, valueize);
6139 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6140 : 0 : if (!_r1) goto next_after_fail1301;
6141 : : }
6142 : : else
6143 : : _r1 = _o1[0];
6144 : 0 : res_op->ops[1] = _r1;
6145 : : }
6146 : 0 : res_op->resimplify (lseq, valueize);
6147 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 727, __FILE__, __LINE__, true);
6148 : 0 : return true;
6149 : : }
6150 : : next_after_fail1301:;
6151 : : }
6152 : : else
6153 : : {
6154 : 59 : if (code1 == NE_EXPR
6155 : 59 : && code2 == GT_EXPR
6156 : : && one_after
6157 : 41 : && allbits
6158 : : )
6159 : : {
6160 : 0 : gimple_seq *lseq = seq;
6161 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1302;
6162 : 0 : {
6163 : 0 : res_op->set_op (GT_EXPR, type, 2);
6164 : 0 : res_op->ops[0] = captures[4];
6165 : 0 : {
6166 : 0 : tree _o1[1], _r1;
6167 : 0 : _o1[0] = captures[2];
6168 : 0 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6169 : 0 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6170 : : {
6171 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6172 : 0 : tem_op.resimplify (lseq, valueize);
6173 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6174 : 0 : if (!_r1) goto next_after_fail1302;
6175 : : }
6176 : : else
6177 : : _r1 = _o1[0];
6178 : 0 : res_op->ops[1] = _r1;
6179 : : }
6180 : 0 : res_op->resimplify (lseq, valueize);
6181 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 728, __FILE__, __LINE__, true);
6182 : 0 : return true;
6183 : : }
6184 : : next_after_fail1302:;
6185 : : }
6186 : : else
6187 : : {
6188 : 59 : if (code1 == NE_EXPR
6189 : 59 : && code2 == LT_EXPR
6190 : : && one_before
6191 : 0 : && allbits
6192 : : )
6193 : : {
6194 : 0 : gimple_seq *lseq = seq;
6195 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1303;
6196 : 0 : {
6197 : 0 : res_op->set_op (LT_EXPR, type, 2);
6198 : 0 : res_op->ops[0] = captures[4];
6199 : 0 : {
6200 : 0 : tree _o1[1], _r1;
6201 : 0 : _o1[0] = captures[2];
6202 : 0 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
6203 : 0 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
6204 : : {
6205 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
6206 : 0 : tem_op.resimplify (lseq, valueize);
6207 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6208 : 0 : if (!_r1) goto next_after_fail1303;
6209 : : }
6210 : : else
6211 : : _r1 = _o1[0];
6212 : 0 : res_op->ops[1] = _r1;
6213 : : }
6214 : 0 : res_op->resimplify (lseq, valueize);
6215 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 729, __FILE__, __LINE__, true);
6216 : 0 : return true;
6217 : : }
6218 : : next_after_fail1303:;
6219 : : }
6220 : : }
6221 : : }
6222 : : }
6223 : : }
6224 : : }
6225 : : }
6226 : : }
6227 : : }
6228 : : return false;
6229 : : }
6230 : :
6231 : : bool
6232 : 49 : gimple_simplify_490 (gimple_match_op *res_op, gimple_seq *seq,
6233 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6234 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6235 : : {
6236 : 49 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6237 : 49 : if ((wi::to_wide (captures[2]) & 1) != 0
6238 : : )
6239 : : {
6240 : 30 : gimple_seq *lseq = seq;
6241 : 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1351;
6242 : 30 : {
6243 : 30 : tree tem;
6244 : 30 : tem = captures[0];
6245 : 30 : res_op->set_value (tem);
6246 : 30 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 741, __FILE__, __LINE__, true);
6247 : 30 : return true;
6248 : : }
6249 : 0 : next_after_fail1351:;
6250 : : }
6251 : : else
6252 : : {
6253 : 19 : gimple_seq *lseq = seq;
6254 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1352;
6255 : 19 : {
6256 : 19 : tree tem;
6257 : 19 : tem = build_zero_cst (type);
6258 : 19 : res_op->set_value (tem);
6259 : 19 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 742, __FILE__, __LINE__, true);
6260 : 19 : return true;
6261 : : }
6262 : 0 : next_after_fail1352:;
6263 : : }
6264 : : return false;
6265 : : }
6266 : :
6267 : : bool
6268 : 2 : gimple_simplify_493 (gimple_match_op *res_op, gimple_seq *seq,
6269 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6270 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6271 : : {
6272 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6273 : 2 : gimple_seq *lseq = seq;
6274 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1355;
6275 : 2 : {
6276 : 2 : tree tem;
6277 : 2 : tem = captures[1];
6278 : 2 : res_op->set_value (tem);
6279 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 744, __FILE__, __LINE__, true);
6280 : : return true;
6281 : : }
6282 : 0 : next_after_fail1355:;
6283 : 0 : return false;
6284 : : }
6285 : :
6286 : : bool
6287 : 310 : gimple_simplify_496 (gimple_match_op *res_op, gimple_seq *seq,
6288 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6289 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6290 : : {
6291 : 310 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6292 : 310 : gimple_seq *lseq = seq;
6293 : 310 : if (lseq
6294 : 161 : && (!single_use (captures[0])))
6295 : 175 : lseq = NULL;
6296 : 310 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1359;
6297 : 310 : {
6298 : 310 : res_op->set_op (BIT_IOR_EXPR, type, 2);
6299 : 310 : res_op->ops[0] = captures[1];
6300 : 310 : {
6301 : 310 : tree _o1[1], _r1;
6302 : 310 : _o1[0] = captures[2];
6303 : 310 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
6304 : 310 : tem_op.resimplify (lseq, valueize);
6305 : 310 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6306 : 310 : if (!_r1) goto next_after_fail1359;
6307 : 167 : res_op->ops[1] = _r1;
6308 : : }
6309 : 167 : res_op->resimplify (lseq, valueize);
6310 : 167 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 748, __FILE__, __LINE__, true);
6311 : : return true;
6312 : : }
6313 : : next_after_fail1359:;
6314 : : return false;
6315 : : }
6316 : :
6317 : : bool
6318 : 1 : gimple_simplify_498 (gimple_match_op *res_op, gimple_seq *seq,
6319 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6320 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6321 : : {
6322 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6323 : 1 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
6324 : 1 : || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
6325 : : )
6326 : : {
6327 : 1 : gimple_seq *lseq = seq;
6328 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1361;
6329 : 1 : {
6330 : 1 : res_op->set_op (NOP_EXPR, type, 1);
6331 : 1 : {
6332 : 1 : tree _o1[1], _r1;
6333 : 1 : _o1[0] = captures[0];
6334 : 1 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
6335 : 1 : (*res_op).ops[0] = _o1[0];
6336 : 1 : (*res_op).resimplify (lseq, valueize);
6337 : : }
6338 : 1 : if (type != res_op->type
6339 : 1 : && !useless_type_conversion_p (type, res_op->type))
6340 : : {
6341 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1361;
6342 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6343 : 0 : res_op->resimplify (lseq, valueize);
6344 : : }
6345 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 750, __FILE__, __LINE__, true);
6346 : 1 : return true;
6347 : : }
6348 : : next_after_fail1361:;
6349 : : }
6350 : : return false;
6351 : : }
6352 : :
6353 : : bool
6354 : 1709 : gimple_simplify_502 (gimple_match_op *res_op, gimple_seq *seq,
6355 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6356 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6357 : : {
6358 : 1709 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6359 : 1709 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
6360 : 1709 : || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
6361 : : )
6362 : : {
6363 : 1548 : gimple_seq *lseq = seq;
6364 : 1548 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1365;
6365 : 1548 : {
6366 : 1548 : res_op->set_op (NOP_EXPR, type, 1);
6367 : 1548 : {
6368 : 1548 : tree _o1[2], _r1;
6369 : 1548 : _o1[0] = captures[0];
6370 : 1548 : _o1[1] = build_each_one_cst (TREE_TYPE (captures[0]));
6371 : 1548 : (*res_op).set_op (MINUS_EXPR, TREE_TYPE (_o1[0]), 2);
6372 : 1548 : (*res_op).ops[0] = _o1[0];
6373 : 1548 : (*res_op).ops[1] = _o1[1];
6374 : 1548 : (*res_op).resimplify (lseq, valueize);
6375 : : }
6376 : 1548 : if (type != res_op->type
6377 : 1548 : && !useless_type_conversion_p (type, res_op->type))
6378 : : {
6379 : 85 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1365;
6380 : 19 : res_op->set_op (NOP_EXPR, type, 1);
6381 : 19 : res_op->resimplify (lseq, valueize);
6382 : : }
6383 : 1482 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 754, __FILE__, __LINE__, true);
6384 : 1482 : return true;
6385 : : }
6386 : : next_after_fail1365:;
6387 : : }
6388 : : return false;
6389 : : }
6390 : :
6391 : : bool
6392 : 4 : gimple_simplify_507 (gimple_match_op *res_op, gimple_seq *seq,
6393 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6394 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6395 : : const enum tree_code ARG_UNUSED (minmax),
6396 : : const enum tree_code ARG_UNUSED (maxmin))
6397 : : {
6398 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6399 : 4 : gimple_seq *lseq = seq;
6400 : 4 : if (lseq
6401 : 2 : && (!single_use (captures[0])))
6402 : 2 : lseq = NULL;
6403 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1370;
6404 : 4 : {
6405 : 4 : res_op->set_op (maxmin, type, 2);
6406 : 4 : res_op->ops[0] = captures[1];
6407 : 4 : {
6408 : 4 : tree _o1[1], _r1;
6409 : 4 : _o1[0] = captures[2];
6410 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
6411 : 4 : tem_op.resimplify (lseq, valueize);
6412 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6413 : 4 : if (!_r1) goto next_after_fail1370;
6414 : 2 : res_op->ops[1] = _r1;
6415 : : }
6416 : 2 : res_op->resimplify (lseq, valueize);
6417 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 758, __FILE__, __LINE__, true);
6418 : : return true;
6419 : : }
6420 : : next_after_fail1370:;
6421 : : return false;
6422 : : }
6423 : :
6424 : : bool
6425 : 51 : gimple_simplify_511 (gimple_match_op *res_op, gimple_seq *seq,
6426 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6427 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6428 : : {
6429 : 51 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6430 : 51 : if (INTEGRAL_TYPE_P (type)
6431 : : )
6432 : : {
6433 : 51 : {
6434 : 51 : tree itype = TREE_TYPE (captures[2]);
6435 : 51 : gimple_seq *lseq = seq;
6436 : 51 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1375;
6437 : 51 : {
6438 : 51 : res_op->set_op (NOP_EXPR, type, 1);
6439 : 51 : {
6440 : 51 : tree _o1[2], _r1;
6441 : 51 : _o1[0] = captures[2];
6442 : 51 : {
6443 : 51 : tree _o2[1], _r2;
6444 : 51 : _o2[0] = captures[0];
6445 : 51 : if (COMPARISON_CLASS_P (_o2[0]))
6446 : : {
6447 : 51 : if (!seq) return false;
6448 : 51 : _o2[0] = gimple_build (seq, TREE_CODE (_o2[0]), TREE_TYPE (_o2[0]), TREE_OPERAND (_o2[0], 0), TREE_OPERAND (_o2[0], 1));
6449 : : }
6450 : 51 : if (itype != TREE_TYPE (_o2[0]) /* XXX */
6451 : 51 : && !useless_type_conversion_p (itype, TREE_TYPE (_o2[0])))
6452 : : {
6453 : 51 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, _o2[0]);
6454 : 51 : tem_op.resimplify (lseq, valueize);
6455 : 51 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6456 : 51 : if (!_r2) goto next_after_fail1375;
6457 : : }
6458 : : else
6459 : : _r2 = _o2[0];
6460 : 51 : _o1[1] = _r2;
6461 : : }
6462 : 51 : (*res_op).set_op (MINUS_EXPR, TREE_TYPE (_o1[0]), 2);
6463 : 51 : (*res_op).ops[0] = _o1[0];
6464 : 51 : (*res_op).ops[1] = _o1[1];
6465 : 51 : (*res_op).resimplify (lseq, valueize);
6466 : : }
6467 : 51 : if (type != res_op->type
6468 : 51 : && !useless_type_conversion_p (type, res_op->type))
6469 : : {
6470 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1375;
6471 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6472 : 0 : res_op->resimplify (lseq, valueize);
6473 : : }
6474 : 51 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 761, __FILE__, __LINE__, true);
6475 : 51 : return true;
6476 : : }
6477 : : next_after_fail1375:;
6478 : : }
6479 : : }
6480 : : return false;
6481 : : }
6482 : :
6483 : : bool
6484 : 1 : gimple_simplify_521 (gimple_match_op *res_op, gimple_seq *seq,
6485 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6486 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6487 : : const enum tree_code ARG_UNUSED (op))
6488 : : {
6489 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6490 : 1 : gimple_seq *lseq = seq;
6491 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1385;
6492 : 1 : {
6493 : 1 : tree tem;
6494 : 1 : tem = captures[2];
6495 : 1 : res_op->set_value (tem);
6496 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 771, __FILE__, __LINE__, true);
6497 : : return true;
6498 : : }
6499 : 0 : next_after_fail1385:;
6500 : 0 : return false;
6501 : : }
6502 : :
6503 : : bool
6504 : 1933 : gimple_simplify_527 (gimple_match_op *res_op, gimple_seq *seq,
6505 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6506 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6507 : : const enum tree_code ARG_UNUSED (cmp))
6508 : : {
6509 : 1933 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6510 : 1933 : if (!HONOR_SIGNED_ZEROS (type)
6511 : 1933 : && (
6512 : 1933 : (INTEGRAL_TYPE_P (type)
6513 : 1927 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
6514 : 1927 : && types_match (TREE_TYPE (captures[2]), TREE_TYPE (captures[3]))
6515 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[1])) <= TYPE_PRECISION (type)
6516 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[3])) <= TYPE_PRECISION (type))
6517 : 1933 : || (types_match (type, TREE_TYPE (captures[1]))
6518 : 1883 : && types_match (type, TREE_TYPE (captures[3]))))
6519 : : )
6520 : : {
6521 : 0 : if (cmp == EQ_EXPR
6522 : : )
6523 : : {
6524 : 0 : if (VECTOR_TYPE_P (type)
6525 : : )
6526 : : {
6527 : 0 : gimple_seq *lseq = seq;
6528 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1416;
6529 : 0 : {
6530 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6531 : 0 : res_op->ops[0] = captures[2];
6532 : 0 : res_op->resimplify (lseq, valueize);
6533 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 778, __FILE__, __LINE__, true);
6534 : 0 : return true;
6535 : : }
6536 : 0 : next_after_fail1416:;
6537 : : }
6538 : : else
6539 : : {
6540 : 0 : gimple_seq *lseq = seq;
6541 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1417;
6542 : 0 : {
6543 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6544 : 0 : res_op->ops[0] = captures[2];
6545 : 0 : res_op->resimplify (lseq, valueize);
6546 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 779, __FILE__, __LINE__, true);
6547 : 0 : return true;
6548 : : }
6549 : 0 : next_after_fail1417:;
6550 : : }
6551 : : }
6552 : : else
6553 : : {
6554 : : if (cmp == NE_EXPR
6555 : : )
6556 : : {
6557 : 0 : if (VECTOR_TYPE_P (type)
6558 : : )
6559 : : {
6560 : 0 : gimple_seq *lseq = seq;
6561 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1418;
6562 : 0 : {
6563 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6564 : 0 : res_op->ops[0] = captures[0];
6565 : 0 : res_op->resimplify (lseq, valueize);
6566 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 780, __FILE__, __LINE__, true);
6567 : 0 : return true;
6568 : : }
6569 : 0 : next_after_fail1418:;
6570 : : }
6571 : : else
6572 : : {
6573 : 0 : gimple_seq *lseq = seq;
6574 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1419;
6575 : 0 : {
6576 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6577 : 0 : res_op->ops[0] = captures[0];
6578 : 0 : res_op->resimplify (lseq, valueize);
6579 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 781, __FILE__, __LINE__, true);
6580 : 0 : return true;
6581 : : }
6582 : 0 : next_after_fail1419:;
6583 : : }
6584 : : }
6585 : : else
6586 : : {
6587 : : if (cmp == LE_EXPR || cmp == UNLE_EXPR || cmp == LT_EXPR || cmp == UNLT_EXPR
6588 : : )
6589 : : {
6590 : 0 : if (!HONOR_NANS (type)
6591 : : )
6592 : : {
6593 : 0 : if (VECTOR_TYPE_P (type)
6594 : : )
6595 : : {
6596 : 0 : gimple_seq *lseq = seq;
6597 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1420;
6598 : 0 : {
6599 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6600 : 0 : {
6601 : 0 : tree _o1[2], _r1;
6602 : 0 : _o1[0] = captures[0];
6603 : 0 : _o1[1] = captures[2];
6604 : 0 : (*res_op).set_op (MIN_EXPR, TREE_TYPE (_o1[0]), 2);
6605 : 0 : (*res_op).ops[0] = _o1[0];
6606 : 0 : (*res_op).ops[1] = _o1[1];
6607 : 0 : (*res_op).resimplify (lseq, valueize);
6608 : : }
6609 : 0 : if (type != res_op->type
6610 : 0 : && !useless_type_conversion_p (type, res_op->type))
6611 : : {
6612 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1420;
6613 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6614 : 0 : res_op->resimplify (lseq, valueize);
6615 : : }
6616 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 782, __FILE__, __LINE__, true);
6617 : 0 : return true;
6618 : : }
6619 : : next_after_fail1420:;
6620 : : }
6621 : : else
6622 : : {
6623 : 0 : gimple_seq *lseq = seq;
6624 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1421;
6625 : 0 : {
6626 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6627 : 0 : {
6628 : 0 : tree _o1[2], _r1;
6629 : 0 : _o1[0] = captures[0];
6630 : 0 : _o1[1] = captures[2];
6631 : 0 : (*res_op).set_op (MIN_EXPR, TREE_TYPE (_o1[0]), 2);
6632 : 0 : (*res_op).ops[0] = _o1[0];
6633 : 0 : (*res_op).ops[1] = _o1[1];
6634 : 0 : (*res_op).resimplify (lseq, valueize);
6635 : : }
6636 : 0 : if (type != res_op->type
6637 : 0 : && !useless_type_conversion_p (type, res_op->type))
6638 : : {
6639 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1421;
6640 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6641 : 0 : res_op->resimplify (lseq, valueize);
6642 : : }
6643 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 783, __FILE__, __LINE__, true);
6644 : 0 : return true;
6645 : : }
6646 : : next_after_fail1421:;
6647 : : }
6648 : : }
6649 : : }
6650 : : else
6651 : : {
6652 : : if (cmp == GE_EXPR || cmp == UNGE_EXPR || cmp == GT_EXPR || cmp == UNGT_EXPR
6653 : : )
6654 : : {
6655 : 0 : if (!HONOR_NANS (type)
6656 : : )
6657 : : {
6658 : 0 : if (VECTOR_TYPE_P (type)
6659 : : )
6660 : : {
6661 : 0 : gimple_seq *lseq = seq;
6662 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1422;
6663 : 0 : {
6664 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6665 : 0 : {
6666 : 0 : tree _o1[2], _r1;
6667 : 0 : _o1[0] = captures[0];
6668 : 0 : _o1[1] = captures[2];
6669 : 0 : (*res_op).set_op (MAX_EXPR, TREE_TYPE (_o1[0]), 2);
6670 : 0 : (*res_op).ops[0] = _o1[0];
6671 : 0 : (*res_op).ops[1] = _o1[1];
6672 : 0 : (*res_op).resimplify (lseq, valueize);
6673 : : }
6674 : 0 : if (type != res_op->type
6675 : 0 : && !useless_type_conversion_p (type, res_op->type))
6676 : : {
6677 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1422;
6678 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6679 : 0 : res_op->resimplify (lseq, valueize);
6680 : : }
6681 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 784, __FILE__, __LINE__, true);
6682 : 0 : return true;
6683 : : }
6684 : : next_after_fail1422:;
6685 : : }
6686 : : else
6687 : : {
6688 : 0 : gimple_seq *lseq = seq;
6689 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1423;
6690 : 0 : {
6691 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6692 : 0 : {
6693 : 0 : tree _o1[2], _r1;
6694 : 0 : _o1[0] = captures[0];
6695 : 0 : _o1[1] = captures[2];
6696 : 0 : (*res_op).set_op (MAX_EXPR, TREE_TYPE (_o1[0]), 2);
6697 : 0 : (*res_op).ops[0] = _o1[0];
6698 : 0 : (*res_op).ops[1] = _o1[1];
6699 : 0 : (*res_op).resimplify (lseq, valueize);
6700 : : }
6701 : 0 : if (type != res_op->type
6702 : 0 : && !useless_type_conversion_p (type, res_op->type))
6703 : : {
6704 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1423;
6705 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6706 : 0 : res_op->resimplify (lseq, valueize);
6707 : : }
6708 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 785, __FILE__, __LINE__, true);
6709 : 0 : return true;
6710 : : }
6711 : : next_after_fail1423:;
6712 : : }
6713 : : }
6714 : : }
6715 : : else
6716 : : {
6717 : : if (cmp == UNEQ_EXPR
6718 : : )
6719 : : {
6720 : 0 : if (!HONOR_NANS (type)
6721 : : )
6722 : : {
6723 : 0 : if (VECTOR_TYPE_P (type)
6724 : : )
6725 : : {
6726 : 0 : gimple_seq *lseq = seq;
6727 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1424;
6728 : 0 : {
6729 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6730 : 0 : res_op->ops[0] = captures[2];
6731 : 0 : res_op->resimplify (lseq, valueize);
6732 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 786, __FILE__, __LINE__, true);
6733 : 0 : return true;
6734 : : }
6735 : 0 : next_after_fail1424:;
6736 : : }
6737 : : else
6738 : : {
6739 : 0 : gimple_seq *lseq = seq;
6740 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1425;
6741 : 0 : {
6742 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6743 : 0 : res_op->ops[0] = captures[2];
6744 : 0 : res_op->resimplify (lseq, valueize);
6745 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 787, __FILE__, __LINE__, true);
6746 : 0 : return true;
6747 : : }
6748 : 0 : next_after_fail1425:;
6749 : : }
6750 : : }
6751 : : }
6752 : : else
6753 : : {
6754 : : if (cmp == LTGT_EXPR
6755 : : )
6756 : : {
6757 : 0 : if (!HONOR_NANS (type)
6758 : : )
6759 : : {
6760 : 0 : if (VECTOR_TYPE_P (type)
6761 : : )
6762 : : {
6763 : 0 : gimple_seq *lseq = seq;
6764 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1426;
6765 : 0 : {
6766 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
6767 : 0 : res_op->ops[0] = captures[0];
6768 : 0 : res_op->resimplify (lseq, valueize);
6769 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 788, __FILE__, __LINE__, true);
6770 : 0 : return true;
6771 : : }
6772 : 0 : next_after_fail1426:;
6773 : : }
6774 : : else
6775 : : {
6776 : 0 : gimple_seq *lseq = seq;
6777 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1427;
6778 : 0 : {
6779 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6780 : 0 : res_op->ops[0] = captures[0];
6781 : 0 : res_op->resimplify (lseq, valueize);
6782 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 789, __FILE__, __LINE__, true);
6783 : 0 : return true;
6784 : : }
6785 : 0 : next_after_fail1427:;
6786 : : }
6787 : : }
6788 : : }
6789 : : }
6790 : : }
6791 : : }
6792 : : }
6793 : : }
6794 : : }
6795 : : return false;
6796 : : }
6797 : :
6798 : : bool
6799 : 0 : gimple_simplify_555 (gimple_match_op *res_op, gimple_seq *seq,
6800 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6801 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6802 : : const enum tree_code ARG_UNUSED (cmp))
6803 : : {
6804 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6805 : 0 : if (!HONOR_SIGNED_ZEROS (type)
6806 : 0 : && bitwise_equal_p (captures[0], captures[2])
6807 : : )
6808 : : {
6809 : 0 : gimple_seq *lseq = seq;
6810 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1471;
6811 : 0 : {
6812 : 0 : tree tem;
6813 : 0 : tem = captures[1];
6814 : 0 : res_op->set_value (tem);
6815 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
6816 : 0 : return true;
6817 : : }
6818 : 0 : next_after_fail1471:;
6819 : : }
6820 : : return false;
6821 : : }
6822 : :
6823 : : bool
6824 : 0 : gimple_simplify_564 (gimple_match_op *res_op, gimple_seq *seq,
6825 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6826 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6827 : : const enum tree_code ARG_UNUSED (cmp))
6828 : : {
6829 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6830 : 0 : if (!HONOR_SIGNED_ZEROS (type)
6831 : : )
6832 : : {
6833 : 0 : gimple_seq *lseq = seq;
6834 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
6835 : 0 : {
6836 : 0 : tree tem;
6837 : 0 : tem = captures[0];
6838 : 0 : res_op->set_value (tem);
6839 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
6840 : 0 : return true;
6841 : : }
6842 : 0 : next_after_fail1481:;
6843 : : }
6844 : : return false;
6845 : : }
6846 : :
6847 : : bool
6848 : 1 : gimple_simplify_572 (gimple_match_op *res_op, gimple_seq *seq,
6849 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6850 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6851 : : const enum tree_code ARG_UNUSED (cmp))
6852 : : {
6853 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6854 : 1 : if (!HONOR_SIGNED_ZEROS (type)
6855 : 1 : && !TYPE_UNSIGNED (type)
6856 : : )
6857 : : {
6858 : 1 : gimple_seq *lseq = seq;
6859 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1499;
6860 : 1 : {
6861 : 1 : res_op->set_op (ABS_EXPR, type, 1);
6862 : 1 : res_op->ops[0] = captures[0];
6863 : 1 : res_op->resimplify (lseq, valueize);
6864 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
6865 : 1 : return true;
6866 : : }
6867 : 0 : next_after_fail1499:;
6868 : : }
6869 : : return false;
6870 : : }
6871 : :
6872 : : bool
6873 : 24 : gimple_simplify_574 (gimple_match_op *res_op, gimple_seq *seq,
6874 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6875 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6876 : : const enum tree_code ARG_UNUSED (cmp))
6877 : : {
6878 : 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6879 : 24 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
6880 : 24 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
6881 : 48 : && element_precision (captures[1])
6882 : 24 : <= element_precision (captures[0])
6883 : 48 : && bitwise_equal_p (captures[1], captures[2])
6884 : : )
6885 : : {
6886 : 48 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
6887 : 22 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
6888 : 28 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
6889 : : )
6890 : : {
6891 : 22 : {
6892 : 22 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
6893 : 22 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
6894 : 22 : if (types_match (captures[0], stype)
6895 : : )
6896 : : {
6897 : 22 : gimple_seq *lseq = seq;
6898 : 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1503;
6899 : 22 : {
6900 : 22 : res_op->set_op (NOP_EXPR, type, 1);
6901 : 22 : {
6902 : 22 : tree _o1[1], _r1;
6903 : 22 : {
6904 : 22 : tree _o2[1], _r2;
6905 : 22 : _o2[0] = captures[0];
6906 : 22 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
6907 : 22 : tem_op.resimplify (lseq, valueize);
6908 : 22 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6909 : 22 : if (!_r2) goto next_after_fail1503;
6910 : 22 : _o1[0] = _r2;
6911 : : }
6912 : 22 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
6913 : 22 : (*res_op).ops[0] = _o1[0];
6914 : 22 : (*res_op).resimplify (lseq, valueize);
6915 : : }
6916 : 22 : if (type != res_op->type
6917 : 22 : && !useless_type_conversion_p (type, res_op->type))
6918 : : {
6919 : 20 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1503;
6920 : 20 : res_op->set_op (NOP_EXPR, type, 1);
6921 : 20 : res_op->resimplify (lseq, valueize);
6922 : : }
6923 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
6924 : 22 : return true;
6925 : : }
6926 : : next_after_fail1503:;
6927 : : }
6928 : : else
6929 : : {
6930 : 0 : gimple_seq *lseq = seq;
6931 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1504;
6932 : 0 : {
6933 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6934 : 0 : {
6935 : 0 : tree _o1[1], _r1;
6936 : 0 : {
6937 : 0 : tree _o2[1], _r2;
6938 : 0 : {
6939 : 0 : tree _o3[1], _r3;
6940 : 0 : _o3[0] = captures[2];
6941 : 0 : if (stype != TREE_TYPE (_o3[0]) /* XXX */
6942 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o3[0])))
6943 : : {
6944 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o3[0]);
6945 : 0 : tem_op.resimplify (lseq, valueize);
6946 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
6947 : 0 : if (!_r3) goto next_after_fail1504;
6948 : : }
6949 : : else
6950 : : _r3 = _o3[0];
6951 : 0 : _o2[0] = _r3;
6952 : : }
6953 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
6954 : 0 : tem_op.resimplify (lseq, valueize);
6955 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6956 : 0 : if (!_r2) goto next_after_fail1504;
6957 : 0 : _o1[0] = _r2;
6958 : : }
6959 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
6960 : 0 : (*res_op).ops[0] = _o1[0];
6961 : 0 : (*res_op).resimplify (lseq, valueize);
6962 : : }
6963 : 0 : if (type != res_op->type
6964 : 0 : && !useless_type_conversion_p (type, res_op->type))
6965 : : {
6966 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1504;
6967 : 0 : res_op->set_op (NOP_EXPR, type, 1);
6968 : 0 : res_op->resimplify (lseq, valueize);
6969 : : }
6970 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
6971 : 0 : return true;
6972 : : }
6973 : : next_after_fail1504:;
6974 : : }
6975 : : }
6976 : : }
6977 : : else
6978 : : {
6979 : 2 : gimple_seq *lseq = seq;
6980 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1505;
6981 : 2 : {
6982 : 2 : res_op->set_op (NOP_EXPR, type, 1);
6983 : 2 : {
6984 : 2 : tree _o1[1], _r1;
6985 : 2 : {
6986 : 2 : tree _o2[1], _r2;
6987 : 2 : _o2[0] = captures[2];
6988 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6989 : 2 : tem_op.resimplify (lseq, valueize);
6990 : 2 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6991 : 2 : if (!_r2) goto next_after_fail1505;
6992 : 2 : _o1[0] = _r2;
6993 : : }
6994 : 2 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
6995 : 2 : (*res_op).ops[0] = _o1[0];
6996 : 2 : (*res_op).resimplify (lseq, valueize);
6997 : : }
6998 : 2 : if (type != res_op->type
6999 : 2 : && !useless_type_conversion_p (type, res_op->type))
7000 : : {
7001 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1505;
7002 : 0 : res_op->set_op (NOP_EXPR, type, 1);
7003 : 0 : res_op->resimplify (lseq, valueize);
7004 : : }
7005 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
7006 : 2 : return true;
7007 : : }
7008 : : next_after_fail1505:;
7009 : : }
7010 : : }
7011 : : return false;
7012 : : }
7013 : :
7014 : : bool
7015 : 0 : gimple_simplify_590 (gimple_match_op *res_op, gimple_seq *seq,
7016 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7017 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
7018 : : {
7019 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7020 : 0 : {
7021 : 0 : int val;
7022 : 0 : internal_fn ifn = IFN_LAST;
7023 : 0 : if (TREE_CODE (TREE_TYPE (captures[2])) == BITINT_TYPE)
7024 : : ifn = IFN_CTZ;
7025 : 0 : else if (direct_internal_fn_supported_p (IFN_CTZ, TREE_TYPE (captures[2]),
7026 : : OPTIMIZE_FOR_BOTH))
7027 : : ifn = IFN_CTZ;
7028 : : if (ifn == IFN_CTZ
7029 : : )
7030 : : {
7031 : 0 : gimple_seq *lseq = seq;
7032 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1529;
7033 : 0 : {
7034 : 0 : res_op->set_op (CFN_CTZ, type, 2);
7035 : 0 : res_op->ops[0] = captures[2];
7036 : 0 : res_op->ops[1] = captures[3];
7037 : 0 : res_op->resimplify (lseq, valueize);
7038 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
7039 : 0 : return true;
7040 : : }
7041 : 0 : next_after_fail1529:;
7042 : : }
7043 : : }
7044 : : return false;
7045 : : }
7046 : :
7047 : : bool
7048 : 181 : gimple_simplify_600 (gimple_match_op *res_op, gimple_seq *seq,
7049 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7050 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7051 : : const enum tree_code ARG_UNUSED (minmax),
7052 : : const enum tree_code ARG_UNUSED (cmp))
7053 : : {
7054 : 181 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7055 : 181 : {
7056 : 181 : poly_int64 off0, off1;
7057 : 181 : tree base0, base1;
7058 : 181 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
7059 : : off0, off1,
7060 : :
7061 : : );
7062 : 181 : if (equal == 1
7063 : : )
7064 : : {
7065 : 7 : if (minmax == MIN_EXPR
7066 : : )
7067 : : {
7068 : 3 : if (known_le (off0, off1)
7069 : : )
7070 : : {
7071 : 1 : gimple_seq *lseq = seq;
7072 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1548;
7073 : 1 : {
7074 : 1 : tree tem;
7075 : 1 : tem = captures[0];
7076 : 1 : res_op->set_value (tem);
7077 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
7078 : 7 : return true;
7079 : : }
7080 : 0 : next_after_fail1548:;
7081 : : }
7082 : : else
7083 : : {
7084 : 2 : if (known_gt (off0, off1)
7085 : : )
7086 : : {
7087 : 2 : gimple_seq *lseq = seq;
7088 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1549;
7089 : 2 : {
7090 : 2 : tree tem;
7091 : 2 : tem = captures[2];
7092 : 2 : res_op->set_value (tem);
7093 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
7094 : 2 : return true;
7095 : : }
7096 : 0 : next_after_fail1549:;
7097 : : }
7098 : : }
7099 : : }
7100 : : else
7101 : : {
7102 : 4 : if (known_ge (off0, off1)
7103 : : )
7104 : : {
7105 : 2 : gimple_seq *lseq = seq;
7106 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1550;
7107 : 2 : {
7108 : 2 : tree tem;
7109 : 2 : tem = captures[0];
7110 : 2 : res_op->set_value (tem);
7111 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
7112 : 2 : return true;
7113 : : }
7114 : 0 : next_after_fail1550:;
7115 : : }
7116 : : else
7117 : : {
7118 : 2 : if (known_lt (off0, off1)
7119 : : )
7120 : : {
7121 : 2 : gimple_seq *lseq = seq;
7122 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1551;
7123 : 2 : {
7124 : 2 : tree tem;
7125 : 2 : tem = captures[2];
7126 : 2 : res_op->set_value (tem);
7127 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
7128 : 2 : return true;
7129 : : }
7130 : 0 : next_after_fail1551:;
7131 : : }
7132 : : }
7133 : : }
7134 : : }
7135 : : }
7136 : 174 : return false;
7137 : : }
7138 : :
7139 : : bool
7140 : 3038 : gimple_simplify_618 (gimple_match_op *res_op, gimple_seq *seq,
7141 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7142 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7143 : : const enum tree_code ARG_UNUSED (cmp),
7144 : : const enum tree_code ARG_UNUSED (minmax),
7145 : : const enum tree_code ARG_UNUSED (MINMAX))
7146 : : {
7147 : 3038 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7148 : 3038 : if (VECTOR_INTEGER_TYPE_P (type)
7149 : 3042 : && target_supports_op_p (type, MINMAX, optab_vector)
7150 : : )
7151 : : {
7152 : 4 : gimple_seq *lseq = seq;
7153 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1572;
7154 : 4 : {
7155 : 4 : res_op->set_op (minmax, type, 2);
7156 : 4 : res_op->ops[0] = captures[0];
7157 : 4 : res_op->ops[1] = captures[1];
7158 : 4 : res_op->resimplify (lseq, valueize);
7159 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 869, __FILE__, __LINE__, true);
7160 : 4 : return true;
7161 : : }
7162 : 0 : next_after_fail1572:;
7163 : : }
7164 : : return false;
7165 : : }
7166 : :
7167 : : bool
7168 : 10 : gimple_simplify_625 (gimple_match_op *res_op, gimple_seq *seq,
7169 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7170 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7171 : : const combined_fn ARG_UNUSED (uncond_op),
7172 : : const combined_fn ARG_UNUSED (cond_op))
7173 : : {
7174 : 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7175 : 10 : {
7176 : 10 : tree op_type = TREE_TYPE (captures[2]);
7177 : 10 : if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op), op_type)
7178 : 10 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
7179 : 20 : && single_use (captures[2])
7180 : : )
7181 : : {
7182 : 0 : gimple_seq *lseq = seq;
7183 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1579;
7184 : 0 : {
7185 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
7186 : 0 : {
7187 : 0 : tree _o1[5], _r1;
7188 : 0 : {
7189 : 0 : tree _o2[1], _r2;
7190 : 0 : _o2[0] = captures[0];
7191 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
7192 : 0 : tem_op.resimplify (lseq, valueize);
7193 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7194 : 0 : if (!_r2) goto next_after_fail1579;
7195 : 0 : _o1[0] = _r2;
7196 : : }
7197 : 0 : _o1[1] = captures[3];
7198 : 0 : _o1[2] = captures[4];
7199 : 0 : _o1[3] = captures[5];
7200 : 0 : {
7201 : 0 : tree _o2[1], _r2;
7202 : 0 : _o2[0] = captures[1];
7203 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
7204 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
7205 : : {
7206 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
7207 : 0 : tem_op.resimplify (lseq, valueize);
7208 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7209 : 0 : if (!_r2) goto next_after_fail1579;
7210 : : }
7211 : : else
7212 : : _r2 = _o2[0];
7213 : 0 : _o1[4] = _r2;
7214 : : }
7215 : 0 : (*res_op).set_op (cond_op, TREE_TYPE (_o1[1]), 5);
7216 : 0 : (*res_op).ops[0] = _o1[0];
7217 : 0 : (*res_op).ops[1] = _o1[1];
7218 : 0 : (*res_op).ops[2] = _o1[2];
7219 : 0 : (*res_op).ops[3] = _o1[3];
7220 : 0 : (*res_op).ops[4] = _o1[4];
7221 : 0 : (*res_op).resimplify (lseq, valueize);
7222 : : }
7223 : 0 : if (type != res_op->type
7224 : 0 : && !useless_type_conversion_p (type, res_op->type))
7225 : : {
7226 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1579;
7227 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
7228 : 0 : res_op->resimplify (lseq, valueize);
7229 : : }
7230 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 871, __FILE__, __LINE__, true);
7231 : 0 : return true;
7232 : : }
7233 : : next_after_fail1579:;
7234 : : }
7235 : : }
7236 : : return false;
7237 : : }
7238 : :
7239 : : bool
7240 : 820136 : gimple_simplify_636 (gimple_match_op *res_op, gimple_seq *seq,
7241 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7242 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7243 : : const enum tree_code ARG_UNUSED (cmp))
7244 : : {
7245 : 820136 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7246 : 820136 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
7247 : 820136 : && (cmp != LTGT_EXPR || ! flag_trapping_math)
7248 : : )
7249 : : {
7250 : 1 : gimple_seq *lseq = seq;
7251 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1590;
7252 : 1 : {
7253 : 1 : tree tem;
7254 : 2 : tem = constant_boolean_node (cmp == ORDERED_EXPR || cmp == LTGT_EXPR
7255 : 1 : ? false : true, type);
7256 : 1 : res_op->set_value (tem);
7257 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
7258 : 1 : return true;
7259 : : }
7260 : 0 : next_after_fail1590:;
7261 : : }
7262 : : return false;
7263 : : }
7264 : :
7265 : : bool
7266 : 17349 : gimple_simplify_639 (gimple_match_op *res_op, gimple_seq *seq,
7267 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7268 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7269 : : const combined_fn ARG_UNUSED (ovf))
7270 : : {
7271 : 17349 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7272 : 34698 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
7273 : 17227 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7274 : 17227 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
7275 : 32843 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) || TYPE_UNSIGNED (TREE_TYPE (captures[1])))
7276 : : )
7277 : : {
7278 : 14521 : gimple_seq *lseq = seq;
7279 : 14521 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1593;
7280 : 14521 : {
7281 : 14521 : res_op->set_op (ovf, type, 2);
7282 : 14521 : res_op->ops[0] = captures[1];
7283 : 14521 : res_op->ops[1] = captures[2];
7284 : 14521 : res_op->resimplify (lseq, valueize);
7285 : 14521 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 885, __FILE__, __LINE__, true);
7286 : 14521 : return true;
7287 : : }
7288 : 0 : next_after_fail1593:;
7289 : : }
7290 : : return false;
7291 : : }
7292 : :
7293 : : bool
7294 : 0 : gimple_simplify_647 (gimple_match_op *res_op, gimple_seq *seq,
7295 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7296 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7297 : : const combined_fn ARG_UNUSED (fns))
7298 : : {
7299 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7300 : 0 : gimple_seq *lseq = seq;
7301 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1601;
7302 : 0 : {
7303 : 0 : res_op->set_op (fns, type, 1);
7304 : 0 : res_op->ops[0] = captures[0];
7305 : 0 : res_op->resimplify (lseq, valueize);
7306 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
7307 : : return true;
7308 : : }
7309 : 0 : next_after_fail1601:;
7310 : 0 : return false;
7311 : : }
7312 : :
7313 : : bool
7314 : 504 : gimple_simplify_654 (gimple_match_op *res_op, gimple_seq *seq,
7315 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7316 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7317 : : const combined_fn ARG_UNUSED (froms),
7318 : : const combined_fn ARG_UNUSED (tos))
7319 : : {
7320 : 504 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7321 : 504 : if (optimize && canonicalize_math_p ()
7322 : : )
7323 : : {
7324 : 504 : gimple_seq *lseq = seq;
7325 : 504 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1608;
7326 : 504 : {
7327 : 504 : res_op->set_op (tos, type, 1);
7328 : 504 : res_op->ops[0] = captures[0];
7329 : 504 : res_op->resimplify (lseq, valueize);
7330 : 504 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
7331 : 504 : return true;
7332 : : }
7333 : 0 : next_after_fail1608:;
7334 : : }
7335 : : return false;
7336 : : }
7337 : :
7338 : : bool
7339 : 1035 : gimple_simplify_661 (gimple_match_op *res_op, gimple_seq *seq,
7340 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7341 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7342 : : const combined_fn ARG_UNUSED (SIGNBIT))
7343 : : {
7344 : 1035 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7345 : 1035 : gimple_seq *lseq = seq;
7346 : 1035 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1615;
7347 : 1035 : {
7348 : 1035 : tree tem;
7349 : 1035 : tem = integer_zero_node;
7350 : 1035 : res_op->set_value (tem);
7351 : 1035 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7352 : : return true;
7353 : : }
7354 : 0 : next_after_fail1615:;
7355 : 0 : return false;
7356 : : }
7357 : :
7358 : : bool
7359 : 0 : gimple_simplify_667 (gimple_match_op *res_op, gimple_seq *seq,
7360 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7361 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
7362 : : {
7363 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7364 : 0 : if (canonicalize_math_after_vectorization_p ()
7365 : : )
7366 : : {
7367 : 0 : gimple_seq *lseq = seq;
7368 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1621;
7369 : 0 : {
7370 : 0 : res_op->set_op (CFN_FNMA, type, 3);
7371 : 0 : res_op->ops[0] = captures[0];
7372 : 0 : res_op->ops[1] = captures[1];
7373 : 0 : res_op->ops[2] = captures[2];
7374 : 0 : res_op->resimplify (lseq, valueize);
7375 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
7376 : 0 : return true;
7377 : : }
7378 : 0 : next_after_fail1621:;
7379 : : }
7380 : : return false;
7381 : : }
7382 : :
7383 : : bool
7384 : 0 : gimple_simplify_675 (gimple_match_op *res_op, gimple_seq *seq,
7385 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7386 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7387 : : const combined_fn ARG_UNUSED (ctz))
7388 : : {
7389 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7390 : 0 : {
7391 : 0 : tree t = TREE_TYPE (captures[0]);
7392 : 0 : gimple_seq *lseq = seq;
7393 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1629;
7394 : 0 : {
7395 : 0 : res_op->set_op (ctz, type, 1);
7396 : 0 : {
7397 : 0 : tree _o1[1], _r1;
7398 : 0 : _o1[0] = captures[1];
7399 : 0 : if (t != TREE_TYPE (_o1[0]) /* XXX */
7400 : 0 : && !useless_type_conversion_p (t, TREE_TYPE (_o1[0])))
7401 : : {
7402 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, t, _o1[0]);
7403 : 0 : tem_op.resimplify (lseq, valueize);
7404 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7405 : 0 : if (!_r1) goto next_after_fail1629;
7406 : : }
7407 : : else
7408 : : _r1 = _o1[0];
7409 : 0 : res_op->ops[0] = _r1;
7410 : : }
7411 : 0 : res_op->resimplify (lseq, valueize);
7412 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 918, __FILE__, __LINE__, true);
7413 : : return true;
7414 : : }
7415 : : next_after_fail1629:;
7416 : : }
7417 : : return false;
7418 : : }
7419 : :
7420 : : bool
7421 : 6 : gimple_simplify_684 (gimple_match_op *res_op, gimple_seq *seq,
7422 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7423 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7424 : : const combined_fn ARG_UNUSED (bswap),
7425 : : const combined_fn ARG_UNUSED (parity))
7426 : : {
7427 : 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7428 : 12 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7429 : 6 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
7430 : 12 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
7431 : 6 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
7432 : : )
7433 : : {
7434 : 6 : {
7435 : 6 : tree type0 = TREE_TYPE (captures[0]);
7436 : 6 : tree type1 = TREE_TYPE (captures[1]);
7437 : 6 : gimple_seq *lseq = seq;
7438 : 6 : if (lseq
7439 : 3 : && (!single_use (captures[1])))
7440 : 3 : lseq = NULL;
7441 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1643;
7442 : 6 : {
7443 : 6 : res_op->set_op (parity, type, 1);
7444 : 6 : {
7445 : 6 : tree _r1;
7446 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
7447 : 6 : {
7448 : 6 : tree _o2[1], _r2;
7449 : 6 : _o2[0] = captures[2];
7450 : 6 : tem_op.set_op (NOP_EXPR, type1, 1);
7451 : 6 : tem_op.ops[0] = _o2[0];
7452 : 6 : tem_op.resimplify (lseq, valueize);
7453 : : }
7454 : 6 : if (type0 != tem_op.type
7455 : 6 : && !useless_type_conversion_p (type0, tem_op.type))
7456 : : {
7457 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7458 : 9 : if (!_r1) goto next_after_fail1643;
7459 : 6 : tem_op.set_op (NOP_EXPR, type0, 1);
7460 : 6 : tem_op.ops[0] = _r1;
7461 : 6 : tem_op.resimplify (lseq, valueize);
7462 : : }
7463 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7464 : 6 : if (!_r1) goto next_after_fail1643;
7465 : 3 : res_op->ops[0] = _r1;
7466 : : }
7467 : 3 : res_op->resimplify (lseq, valueize);
7468 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
7469 : 3 : return true;
7470 : : }
7471 : : next_after_fail1643:;
7472 : : }
7473 : : }
7474 : : return false;
7475 : : }
7476 : :
7477 : : bool
7478 : 696 : gimple_simplify_690 (gimple_match_op *res_op, gimple_seq *seq,
7479 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7480 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7481 : : const combined_fn ARG_UNUSED (FFS))
7482 : : {
7483 : 696 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7484 : 1392 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7485 : 696 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
7486 : 1392 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
7487 : : )
7488 : : {
7489 : 218 : {
7490 : 218 : combined_fn cfn = CFN_LAST;
7491 : 218 : tree type0 = TREE_TYPE (captures[1]);
7492 : 218 : if (TREE_CODE (type0) == BITINT_TYPE)
7493 : : {
7494 : 8 : if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
7495 : : cfn = CFN_FFS;
7496 : : else
7497 : 0 : type0
7498 : 0 : = build_nonstandard_integer_type (TYPE_PRECISION (type0),
7499 : : 0);
7500 : : }
7501 : 218 : type0 = signed_type_for (type0);
7502 : 218 : if (cfn == CFN_LAST
7503 : 218 : && direct_internal_fn_supported_p (IFN_FFS, type0,
7504 : : OPTIMIZE_FOR_BOTH))
7505 : : cfn = CFN_FFS;
7506 : 203 : if (cfn == CFN_LAST
7507 : 199 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > BITS_PER_WORD
7508 : 203 : && !direct_internal_fn_supported_p (IFN_FFS,
7509 : 0 : TREE_TYPE (captures[0]),
7510 : : OPTIMIZE_FOR_BOTH))
7511 : : {
7512 : 0 : if (TYPE_PRECISION (type0)
7513 : 0 : == TYPE_PRECISION (integer_type_node))
7514 : : cfn = CFN_BUILT_IN_FFS;
7515 : 0 : else if (TYPE_PRECISION (type0)
7516 : 0 : == TYPE_PRECISION (long_long_integer_type_node))
7517 : : cfn = CFN_BUILT_IN_FFSLL;
7518 : : }
7519 : 218 : if (cfn == CFN_FFS
7520 : : )
7521 : : {
7522 : 19 : gimple_seq *lseq = seq;
7523 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1651;
7524 : 19 : {
7525 : 19 : res_op->set_op (CFN_FFS, type, 1);
7526 : 19 : {
7527 : 19 : tree _o1[1], _r1;
7528 : 19 : _o1[0] = captures[1];
7529 : 19 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
7530 : 19 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
7531 : : {
7532 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
7533 : 12 : tem_op.resimplify (lseq, valueize);
7534 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7535 : 12 : if (!_r1) goto next_after_fail1651;
7536 : : }
7537 : : else
7538 : : _r1 = _o1[0];
7539 : 13 : res_op->ops[0] = _r1;
7540 : : }
7541 : 13 : res_op->resimplify (lseq, valueize);
7542 : 13 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7543 : 13 : return true;
7544 : : }
7545 : : next_after_fail1651:;
7546 : : }
7547 : : else
7548 : : {
7549 : 199 : if (cfn == CFN_BUILT_IN_FFS
7550 : : )
7551 : : {
7552 : 0 : gimple_seq *lseq = seq;
7553 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1652;
7554 : 0 : {
7555 : 0 : res_op->set_op (CFN_BUILT_IN_FFS, type, 1);
7556 : 0 : {
7557 : 0 : tree _o1[1], _r1;
7558 : 0 : _o1[0] = captures[1];
7559 : 0 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
7560 : 0 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
7561 : : {
7562 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
7563 : 0 : tem_op.resimplify (lseq, valueize);
7564 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7565 : 0 : if (!_r1) goto next_after_fail1652;
7566 : : }
7567 : : else
7568 : : _r1 = _o1[0];
7569 : 0 : res_op->ops[0] = _r1;
7570 : : }
7571 : 0 : res_op->resimplify (lseq, valueize);
7572 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
7573 : 0 : return true;
7574 : : }
7575 : : next_after_fail1652:;
7576 : : }
7577 : : else
7578 : : {
7579 : 199 : if (cfn == CFN_BUILT_IN_FFSLL
7580 : : )
7581 : : {
7582 : 0 : gimple_seq *lseq = seq;
7583 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1653;
7584 : 0 : {
7585 : 0 : res_op->set_op (CFN_BUILT_IN_FFSLL, type, 1);
7586 : 0 : {
7587 : 0 : tree _o1[1], _r1;
7588 : 0 : _o1[0] = captures[1];
7589 : 0 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
7590 : 0 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
7591 : : {
7592 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
7593 : 0 : tem_op.resimplify (lseq, valueize);
7594 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7595 : 0 : if (!_r1) goto next_after_fail1653;
7596 : : }
7597 : : else
7598 : : _r1 = _o1[0];
7599 : 0 : res_op->ops[0] = _r1;
7600 : : }
7601 : 0 : res_op->resimplify (lseq, valueize);
7602 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 938, __FILE__, __LINE__, true);
7603 : 0 : return true;
7604 : : }
7605 : : next_after_fail1653:;
7606 : : }
7607 : : }
7608 : : }
7609 : : }
7610 : : }
7611 : : return false;
7612 : : }
7613 : :
7614 : : bool
7615 : 1755 : gimple_simplify_CFN_BUILT_IN_COSH (gimple_match_op *res_op, gimple_seq *seq,
7616 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7617 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7618 : : {
7619 : 1755 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7620 : 1755 : switch (TREE_CODE (_p0))
7621 : : {
7622 : 1629 : case SSA_NAME:
7623 : 1629 : if (gimple *_d1 = get_def (valueize, _p0))
7624 : : {
7625 : 743 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7626 : 521 : switch (gimple_assign_rhs_code (_a1))
7627 : : {
7628 : 16 : case NEGATE_EXPR:
7629 : 16 : {
7630 : 16 : tree _q20 = gimple_assign_rhs1 (_a1);
7631 : 16 : _q20 = do_valueize (valueize, _q20);
7632 : 16 : {
7633 : 16 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7634 : 16 : const combined_fn coss = CFN_BUILT_IN_COSH;
7635 : 16 : gimple_seq *lseq = seq;
7636 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1698;
7637 : 16 : {
7638 : 16 : res_op->set_op (coss, type, 1);
7639 : 16 : res_op->ops[0] = captures[0];
7640 : 16 : res_op->resimplify (lseq, valueize);
7641 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
7642 : 16 : return true;
7643 : : }
7644 : 0 : next_after_fail1698:;
7645 : : }
7646 : 0 : break;
7647 : : }
7648 : 0 : case ABS_EXPR:
7649 : 0 : {
7650 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7651 : 0 : _q20 = do_valueize (valueize, _q20);
7652 : 0 : {
7653 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7654 : 0 : const combined_fn coss = CFN_BUILT_IN_COSH;
7655 : 0 : gimple_seq *lseq = seq;
7656 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1699;
7657 : 0 : {
7658 : 0 : res_op->set_op (coss, type, 1);
7659 : 0 : res_op->ops[0] = captures[0];
7660 : 0 : res_op->resimplify (lseq, valueize);
7661 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
7662 : 0 : return true;
7663 : : }
7664 : 0 : next_after_fail1699:;
7665 : : }
7666 : 0 : break;
7667 : : }
7668 : : default:;
7669 : : }
7670 : 335 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
7671 : 54 : switch (gimple_call_combined_fn (_c1))
7672 : : {
7673 : 0 : case CFN_BUILT_IN_COPYSIGN:
7674 : 0 : if (gimple_call_num_args (_c1) == 2)
7675 : : {
7676 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7677 : 0 : _q20 = do_valueize (valueize, _q20);
7678 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7679 : 0 : _q21 = do_valueize (valueize, _q21);
7680 : 0 : {
7681 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7682 : 0 : if (gimple_simplify_426 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_COSH))
7683 : 0 : return true;
7684 : : }
7685 : : }
7686 : : break;
7687 : 0 : case CFN_BUILT_IN_COPYSIGNF:
7688 : 0 : if (gimple_call_num_args (_c1) == 2)
7689 : : {
7690 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7691 : 0 : _q20 = do_valueize (valueize, _q20);
7692 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7693 : 0 : _q21 = do_valueize (valueize, _q21);
7694 : 0 : {
7695 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7696 : 0 : if (gimple_simplify_426 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_COSH))
7697 : 0 : return true;
7698 : : }
7699 : : }
7700 : : break;
7701 : 0 : case CFN_BUILT_IN_COPYSIGNL:
7702 : 0 : if (gimple_call_num_args (_c1) == 2)
7703 : : {
7704 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7705 : 0 : _q20 = do_valueize (valueize, _q20);
7706 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7707 : 0 : _q21 = do_valueize (valueize, _q21);
7708 : 0 : {
7709 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7710 : 0 : if (gimple_simplify_426 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_COSH))
7711 : 0 : return true;
7712 : : }
7713 : : }
7714 : : break;
7715 : 21 : case CFN_BUILT_IN_ATANH:
7716 : 21 : if (gimple_call_num_args (_c1) == 1)
7717 : : {
7718 : 21 : tree _q20 = gimple_call_arg (_c1, 0);
7719 : 21 : _q20 = do_valueize (valueize, _q20);
7720 : 21 : {
7721 : 21 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
7722 : 21 : if (gimple_simplify_428 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSH, CFN_BUILT_IN_ATANH, CFN_BUILT_IN_SQRT))
7723 : 1 : return true;
7724 : : }
7725 : : }
7726 : : break;
7727 : 0 : case CFN_COPYSIGN:
7728 : 0 : if (gimple_call_num_args (_c1) == 2)
7729 : : {
7730 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
7731 : 0 : _q20 = do_valueize (valueize, _q20);
7732 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
7733 : 0 : _q21 = do_valueize (valueize, _q21);
7734 : 0 : {
7735 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7736 : 0 : if (gimple_simplify_426 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_COSH))
7737 : 0 : return true;
7738 : : }
7739 : : }
7740 : : break;
7741 : : default:;
7742 : : }
7743 : : }
7744 : : break;
7745 : : default:;
7746 : : }
7747 : : return false;
7748 : : }
7749 : :
7750 : : bool
7751 : 365 : gimple_simplify_CFN_BUILT_IN_CCOSH (gimple_match_op *res_op, gimple_seq *seq,
7752 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7753 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7754 : : {
7755 : 365 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7756 : 365 : switch (TREE_CODE (_p0))
7757 : : {
7758 : 356 : case SSA_NAME:
7759 : 356 : if (gimple *_d1 = get_def (valueize, _p0))
7760 : : {
7761 : 219 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7762 : 336 : switch (gimple_assign_rhs_code (_a1))
7763 : : {
7764 : 14 : case NEGATE_EXPR:
7765 : 14 : {
7766 : 14 : tree _q20 = gimple_assign_rhs1 (_a1);
7767 : 14 : _q20 = do_valueize (valueize, _q20);
7768 : 14 : {
7769 : 14 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7770 : 14 : gimple_seq *lseq = seq;
7771 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1721;
7772 : 14 : {
7773 : 14 : res_op->set_op (CFN_BUILT_IN_CCOSH, type, 1);
7774 : 14 : res_op->ops[0] = captures[0];
7775 : 14 : res_op->resimplify (lseq, valueize);
7776 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
7777 : 14 : return true;
7778 : : }
7779 : 0 : next_after_fail1721:;
7780 : : }
7781 : 0 : break;
7782 : : }
7783 : : default:;
7784 : : }
7785 : : }
7786 : : break;
7787 : : default:;
7788 : : }
7789 : : return false;
7790 : : }
7791 : :
7792 : : bool
7793 : 4783 : gimple_simplify_CFN_BUILT_IN_CABSL (gimple_match_op *res_op, gimple_seq *seq,
7794 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7795 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7796 : : {
7797 : 4783 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7798 : 4783 : switch (TREE_CODE (_p0))
7799 : : {
7800 : 4770 : case SSA_NAME:
7801 : 4770 : if (gimple *_d1 = get_def (valueize, _p0))
7802 : : {
7803 : 2389 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7804 : 2466 : switch (gimple_assign_rhs_code (_a1))
7805 : : {
7806 : 2 : case CONJ_EXPR:
7807 : 2 : {
7808 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
7809 : 2 : _q20 = do_valueize (valueize, _q20);
7810 : 2 : {
7811 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7812 : 2 : gimple_seq *lseq = seq;
7813 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1733;
7814 : 2 : {
7815 : 2 : res_op->set_op (CFN_BUILT_IN_CABSL, type, 1);
7816 : 2 : res_op->ops[0] = captures[0];
7817 : 2 : res_op->resimplify (lseq, valueize);
7818 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
7819 : 2 : return true;
7820 : : }
7821 : 0 : next_after_fail1733:;
7822 : : }
7823 : 0 : break;
7824 : : }
7825 : 16 : case NEGATE_EXPR:
7826 : 16 : {
7827 : 16 : tree _q20 = gimple_assign_rhs1 (_a1);
7828 : 16 : _q20 = do_valueize (valueize, _q20);
7829 : 16 : {
7830 : 16 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7831 : 16 : gimple_seq *lseq = seq;
7832 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1734;
7833 : 16 : {
7834 : 16 : res_op->set_op (CFN_BUILT_IN_CABSL, type, 1);
7835 : 16 : res_op->ops[0] = captures[0];
7836 : 16 : res_op->resimplify (lseq, valueize);
7837 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
7838 : 16 : return true;
7839 : : }
7840 : 0 : next_after_fail1734:;
7841 : : }
7842 : 0 : break;
7843 : : }
7844 : 1184 : case COMPLEX_EXPR:
7845 : 1184 : {
7846 : 1184 : tree _q20 = gimple_assign_rhs1 (_a1);
7847 : 1184 : _q20 = do_valueize (valueize, _q20);
7848 : 1184 : tree _q21 = gimple_assign_rhs2 (_a1);
7849 : 1184 : _q21 = do_valueize (valueize, _q21);
7850 : 1184 : if (real_zerop (_q21))
7851 : : {
7852 : 14 : {
7853 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7854 : 14 : gimple_seq *lseq = seq;
7855 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1735;
7856 : 14 : {
7857 : 14 : res_op->set_op (ABS_EXPR, type, 1);
7858 : 14 : res_op->ops[0] = captures[0];
7859 : 14 : res_op->resimplify (lseq, valueize);
7860 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
7861 : 14 : return true;
7862 : : }
7863 : 0 : next_after_fail1735:;
7864 : : }
7865 : : }
7866 : 1170 : if (real_zerop (_q20))
7867 : : {
7868 : 0 : {
7869 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7870 : 0 : gimple_seq *lseq = seq;
7871 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1736;
7872 : 0 : {
7873 : 0 : res_op->set_op (ABS_EXPR, type, 1);
7874 : 0 : res_op->ops[0] = captures[0];
7875 : 0 : res_op->resimplify (lseq, valueize);
7876 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
7877 : 0 : return true;
7878 : : }
7879 : 0 : next_after_fail1736:;
7880 : : }
7881 : : }
7882 : 1170 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
7883 : : {
7884 : 6 : {
7885 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7886 : 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
7887 : : )
7888 : : {
7889 : 6 : gimple_seq *lseq = seq;
7890 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1737;
7891 : 6 : {
7892 : 6 : res_op->set_op (MULT_EXPR, type, 2);
7893 : 6 : {
7894 : 6 : tree _o1[1], _r1;
7895 : 6 : _o1[0] = captures[0];
7896 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
7897 : 6 : tem_op.resimplify (lseq, valueize);
7898 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7899 : 6 : if (!_r1) goto next_after_fail1737;
7900 : 4 : res_op->ops[0] = _r1;
7901 : : }
7902 : 4 : res_op->ops[1] = build_real_truncate (type, dconst_sqrt2 ());
7903 : 4 : res_op->resimplify (lseq, valueize);
7904 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
7905 : 4 : return true;
7906 : : }
7907 : : next_after_fail1737:;
7908 : : }
7909 : : }
7910 : : }
7911 : : break;
7912 : : }
7913 : : default:;
7914 : : }
7915 : : }
7916 : : break;
7917 : : default:;
7918 : : }
7919 : : return false;
7920 : : }
7921 : :
7922 : : bool
7923 : 1123734 : gimple_simplify_REALPART_EXPR (gimple_match_op *res_op, gimple_seq *seq,
7924 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7925 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
7926 : : {
7927 : 1123734 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7928 : 1123734 : switch (TREE_CODE (_p0))
7929 : : {
7930 : 1123734 : case SSA_NAME:
7931 : 1123734 : if (gimple *_d1 = get_def (valueize, _p0))
7932 : : {
7933 : 775388 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
7934 : 348310 : switch (gimple_assign_rhs_code (_a1))
7935 : : {
7936 : 5800 : case COMPLEX_EXPR:
7937 : 5800 : {
7938 : 5800 : tree _q20 = gimple_assign_rhs1 (_a1);
7939 : 5800 : _q20 = do_valueize (valueize, _q20);
7940 : 5800 : tree _q21 = gimple_assign_rhs2 (_a1);
7941 : 5800 : _q21 = do_valueize (valueize, _q21);
7942 : 5800 : {
7943 : 5800 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7944 : 5800 : gimple_seq *lseq = seq;
7945 : 5800 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1790;
7946 : 5800 : {
7947 : 5800 : tree tem;
7948 : 5800 : tem = captures[0];
7949 : 5800 : res_op->set_value (tem);
7950 : 5800 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
7951 : 5800 : return true;
7952 : : }
7953 : 0 : next_after_fail1790:;
7954 : : }
7955 : 0 : break;
7956 : : }
7957 : 0 : CASE_CONVERT:
7958 : 0 : {
7959 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
7960 : 0 : _q20 = do_valueize (valueize, _q20);
7961 : 0 : switch (TREE_CODE (_q20))
7962 : : {
7963 : 0 : case SSA_NAME:
7964 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
7965 : : {
7966 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
7967 : 0 : switch (gimple_assign_rhs_code (_a2))
7968 : : {
7969 : 0 : case CONJ_EXPR:
7970 : 0 : {
7971 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
7972 : 0 : _q30 = do_valueize (valueize, _q30);
7973 : 0 : {
7974 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
7975 : 0 : gimple_seq *lseq = seq;
7976 : 0 : if (lseq
7977 : 0 : && (!single_use (captures[0])
7978 : 0 : || !single_use (captures[1])))
7979 : 0 : lseq = NULL;
7980 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1791;
7981 : 0 : {
7982 : 0 : res_op->set_op (NOP_EXPR, type, 1);
7983 : 0 : {
7984 : 0 : tree _o1[1], _r1;
7985 : 0 : _o1[0] = captures[2];
7986 : 0 : (*res_op).set_op (REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), 1);
7987 : 0 : (*res_op).ops[0] = _o1[0];
7988 : 0 : (*res_op).resimplify (lseq, valueize);
7989 : : }
7990 : 0 : if (type != res_op->type
7991 : 0 : && !useless_type_conversion_p (type, res_op->type))
7992 : : {
7993 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1791;
7994 : 0 : res_op->set_op (NOP_EXPR, type, 1);
7995 : 0 : res_op->resimplify (lseq, valueize);
7996 : : }
7997 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
7998 : 0 : return true;
7999 : : }
8000 : 0 : next_after_fail1791:;
8001 : : }
8002 : 0 : break;
8003 : : }
8004 : 0 : case PLUS_EXPR:
8005 : 0 : {
8006 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
8007 : 0 : _q30 = do_valueize (valueize, _q30);
8008 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
8009 : 0 : _q31 = do_valueize (valueize, _q31);
8010 : 0 : if (tree_swap_operands_p (_q30, _q31))
8011 : 0 : std::swap (_q30, _q31);
8012 : 0 : {
8013 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
8014 : 0 : const enum tree_code op = PLUS_EXPR;
8015 : 0 : gimple_seq *lseq = seq;
8016 : 0 : if (lseq
8017 : 0 : && (!single_use (captures[0])
8018 : 0 : || !single_use (captures[1])))
8019 : 0 : lseq = NULL;
8020 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1792;
8021 : 0 : {
8022 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8023 : 0 : {
8024 : 0 : tree _o1[2], _r1;
8025 : 0 : {
8026 : 0 : tree _o2[1], _r2;
8027 : 0 : _o2[0] = captures[2];
8028 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8029 : 0 : tem_op.resimplify (lseq, valueize);
8030 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8031 : 0 : if (!_r2) goto next_after_fail1792;
8032 : 0 : _o1[0] = _r2;
8033 : : }
8034 : 0 : {
8035 : 0 : tree _o2[1], _r2;
8036 : 0 : _o2[0] = captures[3];
8037 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8038 : 0 : tem_op.resimplify (lseq, valueize);
8039 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8040 : 0 : if (!_r2) goto next_after_fail1792;
8041 : 0 : _o1[1] = _r2;
8042 : : }
8043 : 0 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
8044 : 0 : (*res_op).ops[0] = _o1[0];
8045 : 0 : (*res_op).ops[1] = _o1[1];
8046 : 0 : (*res_op).resimplify (lseq, valueize);
8047 : : }
8048 : 0 : if (type != res_op->type
8049 : 0 : && !useless_type_conversion_p (type, res_op->type))
8050 : : {
8051 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1792;
8052 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8053 : 0 : res_op->resimplify (lseq, valueize);
8054 : : }
8055 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
8056 : 0 : return true;
8057 : : }
8058 : 0 : next_after_fail1792:;
8059 : : }
8060 : 0 : break;
8061 : : }
8062 : 0 : case MINUS_EXPR:
8063 : 0 : {
8064 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
8065 : 0 : _q30 = do_valueize (valueize, _q30);
8066 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
8067 : 0 : _q31 = do_valueize (valueize, _q31);
8068 : 0 : {
8069 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
8070 : 0 : const enum tree_code op = MINUS_EXPR;
8071 : 0 : gimple_seq *lseq = seq;
8072 : 0 : if (lseq
8073 : 0 : && (!single_use (captures[0])
8074 : 0 : || !single_use (captures[1])))
8075 : 0 : lseq = NULL;
8076 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1793;
8077 : 0 : {
8078 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8079 : 0 : {
8080 : 0 : tree _o1[2], _r1;
8081 : 0 : {
8082 : 0 : tree _o2[1], _r2;
8083 : 0 : _o2[0] = captures[2];
8084 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8085 : 0 : tem_op.resimplify (lseq, valueize);
8086 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8087 : 0 : if (!_r2) goto next_after_fail1793;
8088 : 0 : _o1[0] = _r2;
8089 : : }
8090 : 0 : {
8091 : 0 : tree _o2[1], _r2;
8092 : 0 : _o2[0] = captures[3];
8093 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8094 : 0 : tem_op.resimplify (lseq, valueize);
8095 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8096 : 0 : if (!_r2) goto next_after_fail1793;
8097 : 0 : _o1[1] = _r2;
8098 : : }
8099 : 0 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
8100 : 0 : (*res_op).ops[0] = _o1[0];
8101 : 0 : (*res_op).ops[1] = _o1[1];
8102 : 0 : (*res_op).resimplify (lseq, valueize);
8103 : : }
8104 : 0 : if (type != res_op->type
8105 : 0 : && !useless_type_conversion_p (type, res_op->type))
8106 : : {
8107 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1793;
8108 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8109 : 0 : res_op->resimplify (lseq, valueize);
8110 : : }
8111 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
8112 : 0 : return true;
8113 : : }
8114 : 0 : next_after_fail1793:;
8115 : : }
8116 : 0 : break;
8117 : : }
8118 : : default:;
8119 : : }
8120 : 0 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
8121 : 0 : switch (gimple_call_combined_fn (_c2))
8122 : : {
8123 : 0 : case CFN_BUILT_IN_CEXPIF:
8124 : 0 : if (gimple_call_num_args (_c2) == 1)
8125 : : {
8126 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
8127 : 0 : _q30 = do_valueize (valueize, _q30);
8128 : 0 : {
8129 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
8130 : 0 : if (single_use (captures[1]) && single_use (captures[0])
8131 : : )
8132 : : {
8133 : 0 : gimple_seq *lseq = seq;
8134 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1794;
8135 : 0 : {
8136 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8137 : 0 : {
8138 : 0 : tree _o1[1], _r1;
8139 : 0 : _o1[0] = captures[2];
8140 : 0 : (*res_op).set_op (CFN_BUILT_IN_COSF, TREE_TYPE (_o1[0]), 1);
8141 : 0 : (*res_op).ops[0] = _o1[0];
8142 : 0 : (*res_op).resimplify (lseq, valueize);
8143 : : }
8144 : 0 : if (type != res_op->type
8145 : 0 : && !useless_type_conversion_p (type, res_op->type))
8146 : : {
8147 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1794;
8148 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8149 : 0 : res_op->resimplify (lseq, valueize);
8150 : : }
8151 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
8152 : 0 : return true;
8153 : : }
8154 : 0 : next_after_fail1794:;
8155 : : }
8156 : : }
8157 : : }
8158 : : break;
8159 : 0 : case CFN_BUILT_IN_CEXPIL:
8160 : 0 : if (gimple_call_num_args (_c2) == 1)
8161 : : {
8162 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
8163 : 0 : _q30 = do_valueize (valueize, _q30);
8164 : 0 : {
8165 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
8166 : 0 : if (single_use (captures[1]) && single_use (captures[0])
8167 : : )
8168 : : {
8169 : 0 : gimple_seq *lseq = seq;
8170 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1795;
8171 : 0 : {
8172 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8173 : 0 : {
8174 : 0 : tree _o1[1], _r1;
8175 : 0 : _o1[0] = captures[2];
8176 : 0 : (*res_op).set_op (CFN_BUILT_IN_COSL, TREE_TYPE (_o1[0]), 1);
8177 : 0 : (*res_op).ops[0] = _o1[0];
8178 : 0 : (*res_op).resimplify (lseq, valueize);
8179 : : }
8180 : 0 : if (type != res_op->type
8181 : 0 : && !useless_type_conversion_p (type, res_op->type))
8182 : : {
8183 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1795;
8184 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8185 : 0 : res_op->resimplify (lseq, valueize);
8186 : : }
8187 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
8188 : 0 : return true;
8189 : : }
8190 : 0 : next_after_fail1795:;
8191 : : }
8192 : : }
8193 : : }
8194 : : break;
8195 : 0 : case CFN_BUILT_IN_CEXPI:
8196 : 0 : if (gimple_call_num_args (_c2) == 1)
8197 : : {
8198 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
8199 : 0 : _q30 = do_valueize (valueize, _q30);
8200 : 0 : {
8201 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
8202 : 0 : if (single_use (captures[1]) && single_use (captures[0])
8203 : : )
8204 : : {
8205 : 0 : gimple_seq *lseq = seq;
8206 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1796;
8207 : 0 : {
8208 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8209 : 0 : {
8210 : 0 : tree _o1[1], _r1;
8211 : 0 : _o1[0] = captures[2];
8212 : 0 : (*res_op).set_op (CFN_BUILT_IN_COS, TREE_TYPE (_o1[0]), 1);
8213 : 0 : (*res_op).ops[0] = _o1[0];
8214 : 0 : (*res_op).resimplify (lseq, valueize);
8215 : : }
8216 : 0 : if (type != res_op->type
8217 : 0 : && !useless_type_conversion_p (type, res_op->type))
8218 : : {
8219 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1796;
8220 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8221 : 0 : res_op->resimplify (lseq, valueize);
8222 : : }
8223 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
8224 : 0 : return true;
8225 : : }
8226 : 0 : next_after_fail1796:;
8227 : : }
8228 : : }
8229 : : }
8230 : : break;
8231 : : default:;
8232 : : }
8233 : : }
8234 : : break;
8235 : : default:;
8236 : : }
8237 : : break;
8238 : : }
8239 : 0 : case CONJ_EXPR:
8240 : 0 : {
8241 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
8242 : 0 : _q20 = do_valueize (valueize, _q20);
8243 : 0 : {
8244 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
8245 : 0 : gimple_seq *lseq = seq;
8246 : 0 : if (lseq
8247 : 0 : && (!single_use (captures[0])
8248 : : || !single_use (captures[1])))
8249 : 0 : lseq = NULL;
8250 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1797;
8251 : 0 : {
8252 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8253 : 0 : {
8254 : 0 : tree _o1[1], _r1;
8255 : 0 : _o1[0] = captures[2];
8256 : 0 : (*res_op).set_op (REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), 1);
8257 : 0 : (*res_op).ops[0] = _o1[0];
8258 : 0 : (*res_op).resimplify (lseq, valueize);
8259 : : }
8260 : 0 : if (type != res_op->type
8261 : 0 : && !useless_type_conversion_p (type, res_op->type))
8262 : : {
8263 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1797;
8264 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8265 : 0 : res_op->resimplify (lseq, valueize);
8266 : : }
8267 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
8268 : 0 : return true;
8269 : : }
8270 : 0 : next_after_fail1797:;
8271 : : }
8272 : 0 : break;
8273 : : }
8274 : 739 : case PLUS_EXPR:
8275 : 739 : {
8276 : 739 : tree _q20 = gimple_assign_rhs1 (_a1);
8277 : 739 : _q20 = do_valueize (valueize, _q20);
8278 : 739 : tree _q21 = gimple_assign_rhs2 (_a1);
8279 : 739 : _q21 = do_valueize (valueize, _q21);
8280 : 739 : if (tree_swap_operands_p (_q20, _q21))
8281 : 50 : std::swap (_q20, _q21);
8282 : 739 : {
8283 : 739 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
8284 : 739 : const enum tree_code op = PLUS_EXPR;
8285 : 739 : gimple_seq *lseq = seq;
8286 : 739 : if (lseq
8287 : 200 : && (!single_use (captures[0])
8288 : : || !single_use (captures[1])))
8289 : 713 : lseq = NULL;
8290 : 739 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1798;
8291 : 739 : {
8292 : 739 : res_op->set_op (NOP_EXPR, type, 1);
8293 : 739 : {
8294 : 739 : tree _o1[2], _r1;
8295 : 739 : {
8296 : 739 : tree _o2[1], _r2;
8297 : 739 : _o2[0] = captures[2];
8298 : 739 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8299 : 739 : tem_op.resimplify (lseq, valueize);
8300 : 739 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8301 : 739 : if (!_r2) goto next_after_fail1798;
8302 : 510 : _o1[0] = _r2;
8303 : : }
8304 : 510 : {
8305 : 510 : tree _o2[1], _r2;
8306 : 510 : _o2[0] = captures[3];
8307 : 510 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8308 : 510 : tem_op.resimplify (lseq, valueize);
8309 : 510 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8310 : 510 : if (!_r2) goto next_after_fail1798;
8311 : 147 : _o1[1] = _r2;
8312 : : }
8313 : 147 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
8314 : 147 : (*res_op).ops[0] = _o1[0];
8315 : 147 : (*res_op).ops[1] = _o1[1];
8316 : 147 : (*res_op).resimplify (lseq, valueize);
8317 : : }
8318 : 147 : if (type != res_op->type
8319 : 147 : && !useless_type_conversion_p (type, res_op->type))
8320 : : {
8321 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1798;
8322 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8323 : 0 : res_op->resimplify (lseq, valueize);
8324 : : }
8325 : 147 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
8326 : 147 : return true;
8327 : : }
8328 : 592 : next_after_fail1798:;
8329 : : }
8330 : 592 : break;
8331 : : }
8332 : 489 : case MINUS_EXPR:
8333 : 489 : {
8334 : 489 : tree _q20 = gimple_assign_rhs1 (_a1);
8335 : 489 : _q20 = do_valueize (valueize, _q20);
8336 : 489 : tree _q21 = gimple_assign_rhs2 (_a1);
8337 : 489 : _q21 = do_valueize (valueize, _q21);
8338 : 489 : {
8339 : 489 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
8340 : 489 : const enum tree_code op = MINUS_EXPR;
8341 : 489 : gimple_seq *lseq = seq;
8342 : 489 : if (lseq
8343 : 157 : && (!single_use (captures[0])
8344 : : || !single_use (captures[1])))
8345 : 486 : lseq = NULL;
8346 : 489 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1799;
8347 : 489 : {
8348 : 489 : res_op->set_op (NOP_EXPR, type, 1);
8349 : 489 : {
8350 : 489 : tree _o1[2], _r1;
8351 : 489 : {
8352 : 489 : tree _o2[1], _r2;
8353 : 489 : _o2[0] = captures[2];
8354 : 489 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8355 : 489 : tem_op.resimplify (lseq, valueize);
8356 : 489 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8357 : 489 : if (!_r2) goto next_after_fail1799;
8358 : 153 : _o1[0] = _r2;
8359 : : }
8360 : 153 : {
8361 : 153 : tree _o2[1], _r2;
8362 : 153 : _o2[0] = captures[3];
8363 : 153 : gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
8364 : 153 : tem_op.resimplify (lseq, valueize);
8365 : 153 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
8366 : 153 : if (!_r2) goto next_after_fail1799;
8367 : 93 : _o1[1] = _r2;
8368 : : }
8369 : 93 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
8370 : 93 : (*res_op).ops[0] = _o1[0];
8371 : 93 : (*res_op).ops[1] = _o1[1];
8372 : 93 : (*res_op).resimplify (lseq, valueize);
8373 : : }
8374 : 93 : if (type != res_op->type
8375 : 93 : && !useless_type_conversion_p (type, res_op->type))
8376 : : {
8377 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1799;
8378 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8379 : 0 : res_op->resimplify (lseq, valueize);
8380 : : }
8381 : 93 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
8382 : 93 : return true;
8383 : : }
8384 : 396 : next_after_fail1799:;
8385 : : }
8386 : 396 : break;
8387 : : }
8388 : : default:;
8389 : : }
8390 : 595637 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8391 : 572465 : switch (gimple_call_combined_fn (_c1))
8392 : : {
8393 : 145 : case CFN_BUILT_IN_CEXPIF:
8394 : 145 : if (gimple_call_num_args (_c1) == 1)
8395 : : {
8396 : 145 : tree _q20 = gimple_call_arg (_c1, 0);
8397 : 145 : _q20 = do_valueize (valueize, _q20);
8398 : 145 : {
8399 : 145 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
8400 : 145 : if (single_use (captures[1]) && single_use (captures[0])
8401 : : )
8402 : : {
8403 : 0 : gimple_seq *lseq = seq;
8404 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1800;
8405 : 0 : {
8406 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8407 : 0 : {
8408 : 0 : tree _o1[1], _r1;
8409 : 0 : _o1[0] = captures[2];
8410 : 0 : (*res_op).set_op (CFN_BUILT_IN_COSF, TREE_TYPE (_o1[0]), 1);
8411 : 0 : (*res_op).ops[0] = _o1[0];
8412 : 0 : (*res_op).resimplify (lseq, valueize);
8413 : : }
8414 : 0 : if (type != res_op->type
8415 : 0 : && !useless_type_conversion_p (type, res_op->type))
8416 : : {
8417 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1800;
8418 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8419 : 0 : res_op->resimplify (lseq, valueize);
8420 : : }
8421 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
8422 : 0 : return true;
8423 : : }
8424 : 145 : next_after_fail1800:;
8425 : : }
8426 : : }
8427 : : }
8428 : : break;
8429 : 56 : case CFN_BUILT_IN_CEXPIL:
8430 : 56 : if (gimple_call_num_args (_c1) == 1)
8431 : : {
8432 : 56 : tree _q20 = gimple_call_arg (_c1, 0);
8433 : 56 : _q20 = do_valueize (valueize, _q20);
8434 : 56 : {
8435 : 56 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
8436 : 56 : if (single_use (captures[1]) && single_use (captures[0])
8437 : : )
8438 : : {
8439 : 0 : gimple_seq *lseq = seq;
8440 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1801;
8441 : 0 : {
8442 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8443 : 0 : {
8444 : 0 : tree _o1[1], _r1;
8445 : 0 : _o1[0] = captures[2];
8446 : 0 : (*res_op).set_op (CFN_BUILT_IN_COSL, TREE_TYPE (_o1[0]), 1);
8447 : 0 : (*res_op).ops[0] = _o1[0];
8448 : 0 : (*res_op).resimplify (lseq, valueize);
8449 : : }
8450 : 0 : if (type != res_op->type
8451 : 0 : && !useless_type_conversion_p (type, res_op->type))
8452 : : {
8453 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1801;
8454 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8455 : 0 : res_op->resimplify (lseq, valueize);
8456 : : }
8457 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
8458 : 0 : return true;
8459 : : }
8460 : 56 : next_after_fail1801:;
8461 : : }
8462 : : }
8463 : : }
8464 : : break;
8465 : 302 : case CFN_BUILT_IN_CEXPI:
8466 : 302 : if (gimple_call_num_args (_c1) == 1)
8467 : : {
8468 : 302 : tree _q20 = gimple_call_arg (_c1, 0);
8469 : 302 : _q20 = do_valueize (valueize, _q20);
8470 : 302 : {
8471 : 302 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
8472 : 302 : if (single_use (captures[1]) && single_use (captures[0])
8473 : : )
8474 : : {
8475 : 6 : gimple_seq *lseq = seq;
8476 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1802;
8477 : 6 : {
8478 : 6 : res_op->set_op (NOP_EXPR, type, 1);
8479 : 6 : {
8480 : 6 : tree _o1[1], _r1;
8481 : 6 : _o1[0] = captures[2];
8482 : 6 : (*res_op).set_op (CFN_BUILT_IN_COS, TREE_TYPE (_o1[0]), 1);
8483 : 6 : (*res_op).ops[0] = _o1[0];
8484 : 6 : (*res_op).resimplify (lseq, valueize);
8485 : : }
8486 : 6 : if (type != res_op->type
8487 : 6 : && !useless_type_conversion_p (type, res_op->type))
8488 : : {
8489 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1802;
8490 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8491 : 0 : res_op->resimplify (lseq, valueize);
8492 : : }
8493 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
8494 : 6 : return true;
8495 : : }
8496 : 296 : next_after_fail1802:;
8497 : : }
8498 : : }
8499 : : }
8500 : : break;
8501 : : default:;
8502 : : }
8503 : : }
8504 : : break;
8505 : : default:;
8506 : : }
8507 : : return false;
8508 : : }
8509 : :
8510 : : bool
8511 : 0 : gimple_simplify_CFN_LOG (gimple_match_op *res_op, gimple_seq *seq,
8512 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8513 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8514 : : {
8515 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8516 : 0 : switch (TREE_CODE (_p0))
8517 : : {
8518 : 0 : case SSA_NAME:
8519 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
8520 : : {
8521 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
8522 : 0 : switch (gimple_assign_rhs_code (_a1))
8523 : : {
8524 : 0 : case RDIV_EXPR:
8525 : 0 : {
8526 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
8527 : 0 : _q20 = do_valueize (valueize, _q20);
8528 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
8529 : 0 : _q21 = do_valueize (valueize, _q21);
8530 : 0 : switch (TREE_CODE (_q20))
8531 : : {
8532 : 0 : case REAL_CST:
8533 : 0 : {
8534 : 0 : {
8535 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8536 : 0 : if (gimple_simplify_642 (res_op, seq, valueize, type, captures, CFN_LOG))
8537 : 0 : return true;
8538 : : }
8539 : 0 : break;
8540 : : }
8541 : 0 : default:;
8542 : : }
8543 : 0 : if (real_onep (_q20))
8544 : : {
8545 : 0 : {
8546 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8547 : 0 : if (gimple_simplify_641 (res_op, seq, valueize, type, captures, CFN_LOG))
8548 : 0 : return true;
8549 : : }
8550 : : }
8551 : : break;
8552 : : }
8553 : : default:;
8554 : : }
8555 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8556 : 0 : switch (gimple_call_combined_fn (_c1))
8557 : : {
8558 : 0 : case CFN_EXP:
8559 : 0 : if (gimple_call_num_args (_c1) == 1)
8560 : : {
8561 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8562 : 0 : _q20 = do_valueize (valueize, _q20);
8563 : 0 : {
8564 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8565 : 0 : if (flag_unsafe_math_optimizations
8566 : : )
8567 : : {
8568 : 0 : gimple_seq *lseq = seq;
8569 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1836;
8570 : 0 : {
8571 : 0 : tree tem;
8572 : 0 : tem = captures[0];
8573 : 0 : res_op->set_value (tem);
8574 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
8575 : 0 : return true;
8576 : : }
8577 : 0 : next_after_fail1836:;
8578 : : }
8579 : : }
8580 : : }
8581 : : break;
8582 : 0 : case CFN_POW:
8583 : 0 : if (gimple_call_num_args (_c1) == 2)
8584 : : {
8585 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8586 : 0 : _q20 = do_valueize (valueize, _q20);
8587 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
8588 : 0 : _q21 = do_valueize (valueize, _q21);
8589 : 0 : {
8590 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8591 : 0 : if (gimple_simplify_643 (res_op, seq, valueize, type, captures, CFN_LOG, CFN_POW))
8592 : 0 : return true;
8593 : : }
8594 : : }
8595 : : break;
8596 : 0 : case CFN_EXP2:
8597 : 0 : if (gimple_call_num_args (_c1) == 1)
8598 : : {
8599 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8600 : 0 : _q20 = do_valueize (valueize, _q20);
8601 : 0 : {
8602 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8603 : 0 : if (flag_unsafe_math_optimizations
8604 : : )
8605 : : {
8606 : 0 : if (SCALAR_FLOAT_TYPE_P (type)
8607 : : )
8608 : : {
8609 : 0 : {
8610 : 0 : tree x;
8611 : 0 : switch (CFN_EXP2)
8612 : : {
8613 : : CASE_CFN_EXP:
8614 : : x = build_real_truncate (type, dconst_e ());
8615 : : break;
8616 : 0 : CASE_CFN_EXP2:
8617 : 0 : x = build_real (type, dconst2);
8618 : 0 : break;
8619 : : CASE_CFN_EXP10:
8620 : : CASE_CFN_POW10:
8621 : : {
8622 : : REAL_VALUE_TYPE dconst10;
8623 : : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
8624 : : x = build_real (type, dconst10);
8625 : : }
8626 : : break;
8627 : : default:
8628 : : gcc_unreachable ();
8629 : : }
8630 : 0 : gimple_seq *lseq = seq;
8631 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1837;
8632 : 0 : {
8633 : 0 : res_op->set_op (MULT_EXPR, type, 2);
8634 : 0 : {
8635 : 0 : tree _o1[1], _r1;
8636 : 0 : _o1[0] = x;
8637 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
8638 : 0 : tem_op.resimplify (lseq, valueize);
8639 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8640 : 0 : if (!_r1) goto next_after_fail1837;
8641 : 0 : res_op->ops[0] = _r1;
8642 : : }
8643 : 0 : res_op->ops[1] = captures[0];
8644 : 0 : res_op->resimplify (lseq, valueize);
8645 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
8646 : 0 : return true;
8647 : : }
8648 : : next_after_fail1837:;
8649 : : }
8650 : : }
8651 : : }
8652 : : }
8653 : : }
8654 : : break;
8655 : 0 : case CFN_SQRT:
8656 : 0 : if (gimple_call_num_args (_c1) == 1)
8657 : : {
8658 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8659 : 0 : _q20 = do_valueize (valueize, _q20);
8660 : 0 : {
8661 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8662 : 0 : if (flag_unsafe_math_optimizations
8663 : : )
8664 : : {
8665 : 0 : if (SCALAR_FLOAT_TYPE_P (type)
8666 : : )
8667 : : {
8668 : 0 : {
8669 : 0 : tree x;
8670 : 0 : switch (CFN_SQRT)
8671 : : {
8672 : 0 : CASE_CFN_SQRT:
8673 : 0 : x = build_real (type, dconsthalf);
8674 : 0 : break;
8675 : : CASE_CFN_CBRT:
8676 : : x = build_real_truncate (type, dconst_third ());
8677 : : break;
8678 : : default:
8679 : : gcc_unreachable ();
8680 : : }
8681 : 0 : gimple_seq *lseq = seq;
8682 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1838;
8683 : 0 : {
8684 : 0 : res_op->set_op (MULT_EXPR, type, 2);
8685 : 0 : res_op->ops[0] = x;
8686 : 0 : {
8687 : 0 : tree _o1[1], _r1;
8688 : 0 : _o1[0] = captures[0];
8689 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
8690 : 0 : tem_op.resimplify (lseq, valueize);
8691 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8692 : 0 : if (!_r1) goto next_after_fail1838;
8693 : 0 : res_op->ops[1] = _r1;
8694 : : }
8695 : 0 : res_op->resimplify (lseq, valueize);
8696 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
8697 : 0 : return true;
8698 : : }
8699 : : next_after_fail1838:;
8700 : : }
8701 : : }
8702 : : }
8703 : : }
8704 : : }
8705 : : break;
8706 : 0 : case CFN_EXP10:
8707 : 0 : if (gimple_call_num_args (_c1) == 1)
8708 : : {
8709 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
8710 : 0 : _q20 = do_valueize (valueize, _q20);
8711 : 0 : {
8712 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8713 : 0 : if (flag_unsafe_math_optimizations
8714 : : )
8715 : : {
8716 : 0 : if (SCALAR_FLOAT_TYPE_P (type)
8717 : : )
8718 : : {
8719 : 0 : {
8720 : 0 : tree x;
8721 : 0 : switch (CFN_EXP10)
8722 : : {
8723 : : CASE_CFN_EXP:
8724 : : x = build_real_truncate (type, dconst_e ());
8725 : : break;
8726 : : CASE_CFN_EXP2:
8727 : : x = build_real (type, dconst2);
8728 : : break;
8729 : 0 : CASE_CFN_EXP10:
8730 : 0 : CASE_CFN_POW10:
8731 : 0 : {
8732 : 0 : REAL_VALUE_TYPE dconst10;
8733 : 0 : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
8734 : 0 : x = build_real (type, dconst10);
8735 : : }
8736 : 0 : break;
8737 : : default:
8738 : : gcc_unreachable ();
8739 : : }
8740 : 0 : gimple_seq *lseq = seq;
8741 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1839;
8742 : 0 : {
8743 : 0 : res_op->set_op (MULT_EXPR, type, 2);
8744 : 0 : {
8745 : 0 : tree _o1[1], _r1;
8746 : 0 : _o1[0] = x;
8747 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (_o1[0]), _o1[0]);
8748 : 0 : tem_op.resimplify (lseq, valueize);
8749 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8750 : 0 : if (!_r1) goto next_after_fail1839;
8751 : 0 : res_op->ops[0] = _r1;
8752 : : }
8753 : 0 : res_op->ops[1] = captures[0];
8754 : 0 : res_op->resimplify (lseq, valueize);
8755 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
8756 : 0 : return true;
8757 : : }
8758 : : next_after_fail1839:;
8759 : : }
8760 : : }
8761 : : }
8762 : : }
8763 : : }
8764 : : break;
8765 : : default:;
8766 : : }
8767 : : }
8768 : : break;
8769 : : default:;
8770 : : }
8771 : : return false;
8772 : : }
8773 : :
8774 : : bool
8775 : 1400 : gimple_simplify_CFN_BUILT_IN_LOG10L (gimple_match_op *res_op, gimple_seq *seq,
8776 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8777 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8778 : : {
8779 : 1400 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8780 : 1400 : switch (TREE_CODE (_p0))
8781 : : {
8782 : 943 : case SSA_NAME:
8783 : 943 : if (gimple *_d1 = get_def (valueize, _p0))
8784 : : {
8785 : 535 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
8786 : 242 : switch (gimple_assign_rhs_code (_a1))
8787 : : {
8788 : 9 : case RDIV_EXPR:
8789 : 9 : {
8790 : 9 : tree _q20 = gimple_assign_rhs1 (_a1);
8791 : 9 : _q20 = do_valueize (valueize, _q20);
8792 : 9 : tree _q21 = gimple_assign_rhs2 (_a1);
8793 : 9 : _q21 = do_valueize (valueize, _q21);
8794 : 9 : switch (TREE_CODE (_q20))
8795 : : {
8796 : 4 : case REAL_CST:
8797 : 4 : {
8798 : 4 : {
8799 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8800 : 4 : if (gimple_simplify_642 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10L))
8801 : 2 : return true;
8802 : : }
8803 : 2 : break;
8804 : : }
8805 : 7 : default:;
8806 : : }
8807 : 7 : if (real_onep (_q20))
8808 : : {
8809 : 1 : {
8810 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8811 : 1 : if (gimple_simplify_641 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10L))
8812 : 0 : return true;
8813 : : }
8814 : : }
8815 : : break;
8816 : : }
8817 : : default:;
8818 : : }
8819 : 357 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
8820 : 84 : switch (gimple_call_combined_fn (_c1))
8821 : : {
8822 : 12 : case CFN_BUILT_IN_SQRTL:
8823 : 12 : if (gimple_call_num_args (_c1) == 1)
8824 : : {
8825 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8826 : 12 : _q20 = do_valueize (valueize, _q20);
8827 : 12 : {
8828 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8829 : 12 : if (flag_unsafe_math_optimizations
8830 : : )
8831 : : {
8832 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
8833 : : )
8834 : : {
8835 : 12 : {
8836 : 12 : tree x;
8837 : 12 : switch (CFN_BUILT_IN_SQRTL)
8838 : : {
8839 : 12 : CASE_CFN_SQRT:
8840 : 12 : x = build_real (type, dconsthalf);
8841 : 12 : break;
8842 : : CASE_CFN_CBRT:
8843 : : x = build_real_truncate (type, dconst_third ());
8844 : : break;
8845 : : default:
8846 : : gcc_unreachable ();
8847 : : }
8848 : 12 : gimple_seq *lseq = seq;
8849 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1874;
8850 : 12 : {
8851 : 12 : res_op->set_op (MULT_EXPR, type, 2);
8852 : 12 : res_op->ops[0] = x;
8853 : 12 : {
8854 : 12 : tree _o1[1], _r1;
8855 : 12 : _o1[0] = captures[0];
8856 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (_o1[0]), _o1[0]);
8857 : 12 : tem_op.resimplify (lseq, valueize);
8858 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8859 : 12 : if (!_r1) goto next_after_fail1874;
8860 : 6 : res_op->ops[1] = _r1;
8861 : : }
8862 : 6 : res_op->resimplify (lseq, valueize);
8863 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
8864 : 6 : return true;
8865 : : }
8866 : : next_after_fail1874:;
8867 : : }
8868 : : }
8869 : : }
8870 : : }
8871 : : }
8872 : : break;
8873 : 12 : case CFN_BUILT_IN_EXP10L:
8874 : 12 : if (gimple_call_num_args (_c1) == 1)
8875 : : {
8876 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8877 : 12 : _q20 = do_valueize (valueize, _q20);
8878 : 12 : {
8879 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8880 : 12 : if (flag_unsafe_math_optimizations
8881 : : )
8882 : : {
8883 : 12 : gimple_seq *lseq = seq;
8884 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1875;
8885 : 12 : {
8886 : 12 : tree tem;
8887 : 12 : tem = captures[0];
8888 : 12 : res_op->set_value (tem);
8889 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
8890 : 12 : return true;
8891 : : }
8892 : 0 : next_after_fail1875:;
8893 : : }
8894 : : }
8895 : : }
8896 : : break;
8897 : 12 : case CFN_BUILT_IN_EXPL:
8898 : 12 : if (gimple_call_num_args (_c1) == 1)
8899 : : {
8900 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8901 : 12 : _q20 = do_valueize (valueize, _q20);
8902 : 12 : {
8903 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8904 : 12 : if (flag_unsafe_math_optimizations
8905 : : )
8906 : : {
8907 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
8908 : : )
8909 : : {
8910 : 12 : {
8911 : 12 : tree x;
8912 : 12 : switch (CFN_BUILT_IN_EXPL)
8913 : : {
8914 : 12 : CASE_CFN_EXP:
8915 : 12 : x = build_real_truncate (type, dconst_e ());
8916 : 12 : break;
8917 : : CASE_CFN_EXP2:
8918 : : x = build_real (type, dconst2);
8919 : : break;
8920 : : CASE_CFN_EXP10:
8921 : : CASE_CFN_POW10:
8922 : : {
8923 : : REAL_VALUE_TYPE dconst10;
8924 : : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
8925 : : x = build_real (type, dconst10);
8926 : : }
8927 : : break;
8928 : : default:
8929 : : gcc_unreachable ();
8930 : : }
8931 : 12 : gimple_seq *lseq = seq;
8932 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1876;
8933 : 12 : {
8934 : 12 : res_op->set_op (MULT_EXPR, type, 2);
8935 : 12 : {
8936 : 12 : tree _o1[1], _r1;
8937 : 12 : _o1[0] = x;
8938 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (_o1[0]), _o1[0]);
8939 : 12 : tem_op.resimplify (lseq, valueize);
8940 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8941 : 12 : if (!_r1) goto next_after_fail1876;
8942 : 12 : res_op->ops[0] = _r1;
8943 : : }
8944 : 12 : res_op->ops[1] = captures[0];
8945 : 12 : res_op->resimplify (lseq, valueize);
8946 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
8947 : 12 : return true;
8948 : : }
8949 : : next_after_fail1876:;
8950 : : }
8951 : : }
8952 : : }
8953 : : }
8954 : : }
8955 : : break;
8956 : 12 : case CFN_BUILT_IN_POWL:
8957 : 12 : if (gimple_call_num_args (_c1) == 2)
8958 : : {
8959 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8960 : 12 : _q20 = do_valueize (valueize, _q20);
8961 : 12 : tree _q21 = gimple_call_arg (_c1, 1);
8962 : 12 : _q21 = do_valueize (valueize, _q21);
8963 : 12 : {
8964 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8965 : 12 : if (gimple_simplify_643 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_POWL))
8966 : 6 : return true;
8967 : : }
8968 : : }
8969 : : break;
8970 : 12 : case CFN_BUILT_IN_POW10L:
8971 : 12 : if (gimple_call_num_args (_c1) == 1)
8972 : : {
8973 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8974 : 12 : _q20 = do_valueize (valueize, _q20);
8975 : 12 : {
8976 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8977 : 12 : if (flag_unsafe_math_optimizations
8978 : : )
8979 : : {
8980 : 12 : gimple_seq *lseq = seq;
8981 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1877;
8982 : 12 : {
8983 : 12 : tree tem;
8984 : 12 : tem = captures[0];
8985 : 12 : res_op->set_value (tem);
8986 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
8987 : 12 : return true;
8988 : : }
8989 : 0 : next_after_fail1877:;
8990 : : }
8991 : : }
8992 : : }
8993 : : break;
8994 : 12 : case CFN_BUILT_IN_CBRTL:
8995 : 12 : if (gimple_call_num_args (_c1) == 1)
8996 : : {
8997 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
8998 : 12 : _q20 = do_valueize (valueize, _q20);
8999 : 12 : {
9000 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9001 : 12 : if (flag_unsafe_math_optimizations
9002 : : )
9003 : : {
9004 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
9005 : : )
9006 : : {
9007 : 12 : {
9008 : 12 : tree x;
9009 : 12 : switch (CFN_BUILT_IN_CBRTL)
9010 : : {
9011 : : CASE_CFN_SQRT:
9012 : : x = build_real (type, dconsthalf);
9013 : : break;
9014 : 12 : CASE_CFN_CBRT:
9015 : 12 : x = build_real_truncate (type, dconst_third ());
9016 : 12 : break;
9017 : : default:
9018 : : gcc_unreachable ();
9019 : : }
9020 : 12 : gimple_seq *lseq = seq;
9021 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1878;
9022 : 12 : {
9023 : 12 : res_op->set_op (MULT_EXPR, type, 2);
9024 : 12 : res_op->ops[0] = x;
9025 : 12 : {
9026 : 12 : tree _o1[1], _r1;
9027 : 12 : _o1[0] = captures[0];
9028 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (_o1[0]), _o1[0]);
9029 : 12 : tem_op.resimplify (lseq, valueize);
9030 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9031 : 12 : if (!_r1) goto next_after_fail1878;
9032 : 6 : res_op->ops[1] = _r1;
9033 : : }
9034 : 6 : res_op->resimplify (lseq, valueize);
9035 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
9036 : 6 : return true;
9037 : : }
9038 : : next_after_fail1878:;
9039 : : }
9040 : : }
9041 : : }
9042 : : }
9043 : : }
9044 : : break;
9045 : 12 : case CFN_BUILT_IN_EXP2L:
9046 : 12 : if (gimple_call_num_args (_c1) == 1)
9047 : : {
9048 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
9049 : 12 : _q20 = do_valueize (valueize, _q20);
9050 : 12 : {
9051 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9052 : 12 : if (flag_unsafe_math_optimizations
9053 : : )
9054 : : {
9055 : 12 : if (SCALAR_FLOAT_TYPE_P (type)
9056 : : )
9057 : : {
9058 : 12 : {
9059 : 12 : tree x;
9060 : 12 : switch (CFN_BUILT_IN_EXP2L)
9061 : : {
9062 : : CASE_CFN_EXP:
9063 : : x = build_real_truncate (type, dconst_e ());
9064 : : break;
9065 : 12 : CASE_CFN_EXP2:
9066 : 12 : x = build_real (type, dconst2);
9067 : 12 : break;
9068 : : CASE_CFN_EXP10:
9069 : : CASE_CFN_POW10:
9070 : : {
9071 : : REAL_VALUE_TYPE dconst10;
9072 : : real_from_integer (&dconst10, VOIDmode, 10, SIGNED);
9073 : : x = build_real (type, dconst10);
9074 : : }
9075 : : break;
9076 : : default:
9077 : : gcc_unreachable ();
9078 : : }
9079 : 12 : gimple_seq *lseq = seq;
9080 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1879;
9081 : 12 : {
9082 : 12 : res_op->set_op (MULT_EXPR, type, 2);
9083 : 12 : {
9084 : 12 : tree _o1[1], _r1;
9085 : 12 : _o1[0] = x;
9086 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (_o1[0]), _o1[0]);
9087 : 12 : tem_op.resimplify (lseq, valueize);
9088 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9089 : 12 : if (!_r1) goto next_after_fail1879;
9090 : 12 : res_op->ops[0] = _r1;
9091 : : }
9092 : 12 : res_op->ops[1] = captures[0];
9093 : 12 : res_op->resimplify (lseq, valueize);
9094 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
9095 : 12 : return true;
9096 : : }
9097 : : next_after_fail1879:;
9098 : : }
9099 : : }
9100 : : }
9101 : : }
9102 : : }
9103 : : break;
9104 : : default:;
9105 : : }
9106 : : }
9107 : : break;
9108 : : default:;
9109 : : }
9110 : : return false;
9111 : : }
9112 : :
9113 : : bool
9114 : 24013 : gimple_simplify_CFN_BUILT_IN_SQRT (gimple_match_op *res_op, gimple_seq *seq,
9115 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9116 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9117 : : {
9118 : 24013 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9119 : 24013 : switch (TREE_CODE (_p0))
9120 : : {
9121 : 22958 : case SSA_NAME:
9122 : 22958 : if (gimple *_d1 = get_def (valueize, _p0))
9123 : : {
9124 : 10605 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9125 : 330 : switch (gimple_call_combined_fn (_c1))
9126 : : {
9127 : 14 : case CFN_BUILT_IN_EXP:
9128 : 14 : if (gimple_call_num_args (_c1) == 1)
9129 : : {
9130 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
9131 : 14 : _q20 = do_valueize (valueize, _q20);
9132 : 14 : {
9133 : 14 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9134 : 14 : if (flag_unsafe_math_optimizations
9135 : : )
9136 : : {
9137 : 14 : gimple_seq *lseq = seq;
9138 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1906;
9139 : 14 : {
9140 : 14 : res_op->set_op (CFN_BUILT_IN_EXP, type, 1);
9141 : 14 : {
9142 : 14 : tree _o1[2], _r1;
9143 : 14 : _o1[0] = captures[0];
9144 : 14 : _o1[1] = build_real (type, dconsthalf);
9145 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9146 : 14 : tem_op.resimplify (lseq, valueize);
9147 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9148 : 14 : if (!_r1) goto next_after_fail1906;
9149 : 7 : res_op->ops[0] = _r1;
9150 : : }
9151 : 7 : res_op->resimplify (lseq, valueize);
9152 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
9153 : 7 : return true;
9154 : : }
9155 : : next_after_fail1906:;
9156 : : }
9157 : : }
9158 : : }
9159 : : break;
9160 : 18 : case CFN_BUILT_IN_POW:
9161 : 18 : if (gimple_call_num_args (_c1) == 2)
9162 : : {
9163 : 18 : tree _q20 = gimple_call_arg (_c1, 0);
9164 : 18 : _q20 = do_valueize (valueize, _q20);
9165 : 18 : tree _q21 = gimple_call_arg (_c1, 1);
9166 : 18 : _q21 = do_valueize (valueize, _q21);
9167 : 18 : {
9168 : 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9169 : 18 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
9170 : : )
9171 : : {
9172 : 18 : gimple_seq *lseq = seq;
9173 : 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1907;
9174 : 18 : {
9175 : 18 : res_op->set_op (CFN_BUILT_IN_POW, type, 2);
9176 : 18 : {
9177 : 18 : tree _o1[1], _r1;
9178 : 18 : _o1[0] = captures[0];
9179 : 18 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
9180 : 18 : tem_op.resimplify (lseq, valueize);
9181 : 18 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9182 : 18 : if (!_r1) goto next_after_fail1907;
9183 : 15 : res_op->ops[0] = _r1;
9184 : : }
9185 : 15 : {
9186 : 15 : tree _o1[2], _r1;
9187 : 15 : _o1[0] = captures[1];
9188 : 15 : _o1[1] = build_real (type, dconsthalf);
9189 : 15 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9190 : 15 : tem_op.resimplify (lseq, valueize);
9191 : 15 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9192 : 15 : if (!_r1) goto next_after_fail1907;
9193 : 9 : res_op->ops[1] = _r1;
9194 : : }
9195 : 9 : res_op->resimplify (lseq, valueize);
9196 : 9 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1015, __FILE__, __LINE__, true);
9197 : 9 : return true;
9198 : : }
9199 : 9 : next_after_fail1907:;
9200 : : }
9201 : : }
9202 : : }
9203 : : break;
9204 : 12 : case CFN_BUILT_IN_CBRT:
9205 : 12 : if (gimple_call_num_args (_c1) == 1)
9206 : : {
9207 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
9208 : 12 : _q20 = do_valueize (valueize, _q20);
9209 : 12 : {
9210 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9211 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
9212 : : )
9213 : : {
9214 : 12 : gimple_seq *lseq = seq;
9215 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1908;
9216 : 12 : {
9217 : 12 : res_op->set_op (CFN_BUILT_IN_POW, type, 2);
9218 : 12 : res_op->ops[0] = captures[0];
9219 : 12 : res_op->ops[1] = build_real_truncate (type, dconst_sixth ());
9220 : 12 : res_op->resimplify (lseq, valueize);
9221 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1016, __FILE__, __LINE__, true);
9222 : 12 : return true;
9223 : : }
9224 : 0 : next_after_fail1908:;
9225 : : }
9226 : : }
9227 : : }
9228 : : break;
9229 : 12 : case CFN_BUILT_IN_EXP2:
9230 : 12 : if (gimple_call_num_args (_c1) == 1)
9231 : : {
9232 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
9233 : 12 : _q20 = do_valueize (valueize, _q20);
9234 : 12 : {
9235 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9236 : 12 : if (flag_unsafe_math_optimizations
9237 : : )
9238 : : {
9239 : 12 : gimple_seq *lseq = seq;
9240 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1909;
9241 : 12 : {
9242 : 12 : res_op->set_op (CFN_BUILT_IN_EXP2, type, 1);
9243 : 12 : {
9244 : 12 : tree _o1[2], _r1;
9245 : 12 : _o1[0] = captures[0];
9246 : 12 : _o1[1] = build_real (type, dconsthalf);
9247 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9248 : 12 : tem_op.resimplify (lseq, valueize);
9249 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9250 : 12 : if (!_r1) goto next_after_fail1909;
9251 : 6 : res_op->ops[0] = _r1;
9252 : : }
9253 : 6 : res_op->resimplify (lseq, valueize);
9254 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
9255 : 6 : return true;
9256 : : }
9257 : : next_after_fail1909:;
9258 : : }
9259 : : }
9260 : : }
9261 : : break;
9262 : 62 : case CFN_BUILT_IN_SQRT:
9263 : 62 : if (gimple_call_num_args (_c1) == 1)
9264 : : {
9265 : 62 : tree _q20 = gimple_call_arg (_c1, 0);
9266 : 62 : _q20 = do_valueize (valueize, _q20);
9267 : 62 : {
9268 : 62 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9269 : 62 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
9270 : : )
9271 : : {
9272 : 12 : gimple_seq *lseq = seq;
9273 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1910;
9274 : 12 : {
9275 : 12 : res_op->set_op (CFN_BUILT_IN_POW, type, 2);
9276 : 12 : res_op->ops[0] = captures[0];
9277 : 12 : res_op->ops[1] = build_real (type, dconst_quarter ());
9278 : 12 : res_op->resimplify (lseq, valueize);
9279 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1013, __FILE__, __LINE__, true);
9280 : 12 : return true;
9281 : : }
9282 : 0 : next_after_fail1910:;
9283 : : }
9284 : : }
9285 : : }
9286 : : break;
9287 : 12 : case CFN_BUILT_IN_EXP10:
9288 : 12 : if (gimple_call_num_args (_c1) == 1)
9289 : : {
9290 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
9291 : 12 : _q20 = do_valueize (valueize, _q20);
9292 : 12 : {
9293 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9294 : 12 : if (flag_unsafe_math_optimizations
9295 : : )
9296 : : {
9297 : 12 : gimple_seq *lseq = seq;
9298 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1911;
9299 : 12 : {
9300 : 12 : res_op->set_op (CFN_BUILT_IN_EXP10, type, 1);
9301 : 12 : {
9302 : 12 : tree _o1[2], _r1;
9303 : 12 : _o1[0] = captures[0];
9304 : 12 : _o1[1] = build_real (type, dconsthalf);
9305 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9306 : 12 : tem_op.resimplify (lseq, valueize);
9307 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9308 : 12 : if (!_r1) goto next_after_fail1911;
9309 : 6 : res_op->ops[0] = _r1;
9310 : : }
9311 : 6 : res_op->resimplify (lseq, valueize);
9312 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
9313 : 6 : return true;
9314 : : }
9315 : : next_after_fail1911:;
9316 : : }
9317 : : }
9318 : : }
9319 : : break;
9320 : 12 : case CFN_BUILT_IN_POW10:
9321 : 12 : if (gimple_call_num_args (_c1) == 1)
9322 : : {
9323 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
9324 : 12 : _q20 = do_valueize (valueize, _q20);
9325 : 12 : {
9326 : 12 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9327 : 12 : if (flag_unsafe_math_optimizations
9328 : : )
9329 : : {
9330 : 12 : gimple_seq *lseq = seq;
9331 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1912;
9332 : 12 : {
9333 : 12 : res_op->set_op (CFN_BUILT_IN_POW10, type, 1);
9334 : 12 : {
9335 : 12 : tree _o1[2], _r1;
9336 : 12 : _o1[0] = captures[0];
9337 : 12 : _o1[1] = build_real (type, dconsthalf);
9338 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9339 : 12 : tem_op.resimplify (lseq, valueize);
9340 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9341 : 12 : if (!_r1) goto next_after_fail1912;
9342 : 6 : res_op->ops[0] = _r1;
9343 : : }
9344 : 6 : res_op->resimplify (lseq, valueize);
9345 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
9346 : 6 : return true;
9347 : : }
9348 : : next_after_fail1912:;
9349 : : }
9350 : : }
9351 : : }
9352 : : break;
9353 : : default:;
9354 : : }
9355 : : }
9356 : : break;
9357 : : default:;
9358 : : }
9359 : : return false;
9360 : : }
9361 : :
9362 : : bool
9363 : 1384 : gimple_simplify_CFN_BUILT_IN_SINH (gimple_match_op *res_op, gimple_seq *seq,
9364 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9365 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9366 : : {
9367 : 1384 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9368 : 1384 : switch (TREE_CODE (_p0))
9369 : : {
9370 : 1275 : case SSA_NAME:
9371 : 1275 : if (gimple *_d1 = get_def (valueize, _p0))
9372 : : {
9373 : 659 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9374 : 42 : switch (gimple_call_combined_fn (_c1))
9375 : : {
9376 : 21 : case CFN_BUILT_IN_ATANH:
9377 : 21 : if (gimple_call_num_args (_c1) == 1)
9378 : : {
9379 : 21 : tree _q20 = gimple_call_arg (_c1, 0);
9380 : 21 : _q20 = do_valueize (valueize, _q20);
9381 : 21 : {
9382 : 21 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9383 : 21 : if (gimple_simplify_646 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINH, CFN_BUILT_IN_ATANH, CFN_BUILT_IN_SQRT))
9384 : 1 : return true;
9385 : : }
9386 : : }
9387 : : break;
9388 : : default:;
9389 : : }
9390 : : }
9391 : : break;
9392 : : default:;
9393 : : }
9394 : : return false;
9395 : : }
9396 : :
9397 : : bool
9398 : 0 : gimple_simplify_CFN_BUILT_IN_TRUNCF64 (gimple_match_op *res_op, gimple_seq *seq,
9399 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9400 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9401 : : {
9402 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9403 : 0 : switch (TREE_CODE (_p0))
9404 : : {
9405 : 0 : case SSA_NAME:
9406 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9407 : : {
9408 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9409 : 0 : switch (gimple_call_combined_fn (_c1))
9410 : : {
9411 : 0 : case CFN_BUILT_IN_TRUNCF64:
9412 : 0 : if (gimple_call_num_args (_c1) == 1)
9413 : : {
9414 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9415 : 0 : _q20 = do_valueize (valueize, _q20);
9416 : 0 : {
9417 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9418 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64))
9419 : 0 : return true;
9420 : : }
9421 : : }
9422 : : break;
9423 : : default:;
9424 : : }
9425 : : }
9426 : : break;
9427 : 0 : default:;
9428 : : }
9429 : 0 : if (integer_valued_real_p (_p0))
9430 : : {
9431 : 0 : {
9432 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9433 : 0 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64))
9434 : 0 : return true;
9435 : : }
9436 : : }
9437 : : return false;
9438 : : }
9439 : :
9440 : : bool
9441 : 2614 : gimple_simplify_CFN_BUILT_IN_FLOORF (gimple_match_op *res_op, gimple_seq *seq,
9442 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9443 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9444 : : {
9445 : 2614 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9446 : 2614 : switch (TREE_CODE (_p0))
9447 : : {
9448 : 2519 : case SSA_NAME:
9449 : 2519 : if (gimple *_d1 = get_def (valueize, _p0))
9450 : : {
9451 : 1572 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9452 : 0 : switch (gimple_call_combined_fn (_c1))
9453 : : {
9454 : 0 : case CFN_BUILT_IN_FLOORF:
9455 : 0 : if (gimple_call_num_args (_c1) == 1)
9456 : : {
9457 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9458 : 0 : _q20 = do_valueize (valueize, _q20);
9459 : 0 : {
9460 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9461 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF))
9462 : 0 : return true;
9463 : : }
9464 : : }
9465 : : break;
9466 : : default:;
9467 : : }
9468 : : }
9469 : : break;
9470 : 2614 : default:;
9471 : : }
9472 : 2614 : if (integer_valued_real_p (_p0))
9473 : : {
9474 : 10 : {
9475 : 10 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9476 : 10 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF))
9477 : 10 : return true;
9478 : : }
9479 : : }
9480 : 2604 : if (tree_expr_nonnegative_p (_p0))
9481 : : {
9482 : 31 : {
9483 : 31 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9484 : 31 : if (gimple_simplify_651 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_TRUNCF))
9485 : 31 : return true;
9486 : : }
9487 : : }
9488 : : return false;
9489 : : }
9490 : :
9491 : : bool
9492 : 0 : gimple_simplify_CFN_BUILT_IN_FLOORF64X (gimple_match_op *res_op, gimple_seq *seq,
9493 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9494 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9495 : : {
9496 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9497 : 0 : switch (TREE_CODE (_p0))
9498 : : {
9499 : 0 : case SSA_NAME:
9500 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9501 : : {
9502 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9503 : 0 : switch (gimple_call_combined_fn (_c1))
9504 : : {
9505 : 0 : case CFN_BUILT_IN_FLOORF64X:
9506 : 0 : if (gimple_call_num_args (_c1) == 1)
9507 : : {
9508 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9509 : 0 : _q20 = do_valueize (valueize, _q20);
9510 : 0 : {
9511 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9512 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X))
9513 : 0 : return true;
9514 : : }
9515 : : }
9516 : : break;
9517 : : default:;
9518 : : }
9519 : : }
9520 : : break;
9521 : 0 : default:;
9522 : : }
9523 : 0 : if (integer_valued_real_p (_p0))
9524 : : {
9525 : 0 : {
9526 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9527 : 0 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X))
9528 : 0 : return true;
9529 : : }
9530 : : }
9531 : 0 : if (tree_expr_nonnegative_p (_p0))
9532 : : {
9533 : 0 : {
9534 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9535 : 0 : if (gimple_simplify_651 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X, CFN_BUILT_IN_TRUNCF64X))
9536 : 0 : return true;
9537 : : }
9538 : : }
9539 : : return false;
9540 : : }
9541 : :
9542 : : bool
9543 : 0 : gimple_simplify_CFN_BUILT_IN_CEILF64 (gimple_match_op *res_op, gimple_seq *seq,
9544 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9545 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9546 : : {
9547 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9548 : 0 : switch (TREE_CODE (_p0))
9549 : : {
9550 : 0 : case SSA_NAME:
9551 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9552 : : {
9553 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9554 : 0 : switch (gimple_call_combined_fn (_c1))
9555 : : {
9556 : 0 : case CFN_BUILT_IN_CEILF64:
9557 : 0 : if (gimple_call_num_args (_c1) == 1)
9558 : : {
9559 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9560 : 0 : _q20 = do_valueize (valueize, _q20);
9561 : 0 : {
9562 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9563 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64))
9564 : 0 : return true;
9565 : : }
9566 : : }
9567 : : break;
9568 : : default:;
9569 : : }
9570 : : }
9571 : : break;
9572 : 0 : default:;
9573 : : }
9574 : 0 : if (integer_valued_real_p (_p0))
9575 : : {
9576 : 0 : {
9577 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9578 : 0 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64))
9579 : 0 : return true;
9580 : : }
9581 : : }
9582 : : return false;
9583 : : }
9584 : :
9585 : : bool
9586 : 2451 : gimple_simplify_CFN_BUILT_IN_ROUND (gimple_match_op *res_op, gimple_seq *seq,
9587 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9588 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9589 : : {
9590 : 2451 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9591 : 2451 : switch (TREE_CODE (_p0))
9592 : : {
9593 : 2394 : case SSA_NAME:
9594 : 2394 : if (gimple *_d1 = get_def (valueize, _p0))
9595 : : {
9596 : 1307 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9597 : 1622 : switch (gimple_assign_rhs_code (_a1))
9598 : : {
9599 : 106 : CASE_CONVERT:
9600 : 106 : {
9601 : 106 : tree _q20 = gimple_assign_rhs1 (_a1);
9602 : 106 : _q20 = do_valueize (valueize, _q20);
9603 : 106 : if (gimple_float_value_p (_q20, valueize))
9604 : : {
9605 : 70 : {
9606 : 70 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9607 : 70 : if (gimple_simplify_649 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND, CFN_BUILT_IN_ROUNDF))
9608 : 35 : return true;
9609 : : }
9610 : : }
9611 : : break;
9612 : : }
9613 : : default:;
9614 : : }
9615 : 335 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9616 : 0 : switch (gimple_call_combined_fn (_c1))
9617 : : {
9618 : 0 : case CFN_BUILT_IN_ROUND:
9619 : 0 : if (gimple_call_num_args (_c1) == 1)
9620 : : {
9621 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9622 : 0 : _q20 = do_valueize (valueize, _q20);
9623 : 0 : {
9624 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9625 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND))
9626 : 0 : return true;
9627 : : }
9628 : : }
9629 : : break;
9630 : : default:;
9631 : : }
9632 : : }
9633 : : break;
9634 : 2416 : default:;
9635 : : }
9636 : 2416 : if (integer_valued_real_p (_p0))
9637 : : {
9638 : 40 : {
9639 : 40 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9640 : 40 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND))
9641 : 40 : return true;
9642 : : }
9643 : : }
9644 : : return false;
9645 : : }
9646 : :
9647 : : bool
9648 : 72 : gimple_simplify_CFN_ROUND (gimple_match_op *res_op, gimple_seq *seq,
9649 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9650 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9651 : : {
9652 : 72 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9653 : 72 : switch (TREE_CODE (_p0))
9654 : : {
9655 : 72 : case SSA_NAME:
9656 : 72 : if (gimple *_d1 = get_def (valueize, _p0))
9657 : : {
9658 : 39 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9659 : 0 : switch (gimple_call_combined_fn (_c1))
9660 : : {
9661 : 0 : case CFN_ROUND:
9662 : 0 : if (gimple_call_num_args (_c1) == 1)
9663 : : {
9664 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9665 : 0 : _q20 = do_valueize (valueize, _q20);
9666 : 0 : {
9667 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9668 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_ROUND))
9669 : 0 : return true;
9670 : : }
9671 : : }
9672 : : break;
9673 : : default:;
9674 : : }
9675 : : }
9676 : : break;
9677 : 72 : default:;
9678 : : }
9679 : 72 : if (integer_valued_real_p (_p0))
9680 : : {
9681 : 0 : {
9682 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9683 : 0 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_ROUND))
9684 : 0 : return true;
9685 : : }
9686 : : }
9687 : : return false;
9688 : : }
9689 : :
9690 : : bool
9691 : 0 : gimple_simplify_CFN_BUILT_IN_NEARBYINTF32X (gimple_match_op *res_op, gimple_seq *seq,
9692 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9693 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9694 : : {
9695 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9696 : 0 : switch (TREE_CODE (_p0))
9697 : : {
9698 : 0 : case SSA_NAME:
9699 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9700 : : {
9701 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9702 : 0 : switch (gimple_call_combined_fn (_c1))
9703 : : {
9704 : 0 : case CFN_BUILT_IN_NEARBYINTF32X:
9705 : 0 : if (gimple_call_num_args (_c1) == 1)
9706 : : {
9707 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9708 : 0 : _q20 = do_valueize (valueize, _q20);
9709 : 0 : {
9710 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9711 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF32X))
9712 : 0 : return true;
9713 : : }
9714 : : }
9715 : : break;
9716 : : default:;
9717 : : }
9718 : : }
9719 : : break;
9720 : 0 : default:;
9721 : : }
9722 : 0 : if (integer_valued_real_p (_p0))
9723 : : {
9724 : 0 : {
9725 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9726 : 0 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF32X))
9727 : 0 : return true;
9728 : : }
9729 : : }
9730 : : return false;
9731 : : }
9732 : :
9733 : : bool
9734 : 154 : gimple_simplify_CFN_BUILT_IN_RINTF16 (gimple_match_op *res_op, gimple_seq *seq,
9735 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9736 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9737 : : {
9738 : 154 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9739 : 154 : switch (TREE_CODE (_p0))
9740 : : {
9741 : 152 : case SSA_NAME:
9742 : 152 : if (gimple *_d1 = get_def (valueize, _p0))
9743 : : {
9744 : 100 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9745 : 0 : switch (gimple_call_combined_fn (_c1))
9746 : : {
9747 : 0 : case CFN_BUILT_IN_RINTF16:
9748 : 0 : if (gimple_call_num_args (_c1) == 1)
9749 : : {
9750 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9751 : 0 : _q20 = do_valueize (valueize, _q20);
9752 : 0 : {
9753 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9754 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF16))
9755 : 0 : return true;
9756 : : }
9757 : : }
9758 : : break;
9759 : : default:;
9760 : : }
9761 : : }
9762 : : break;
9763 : 154 : default:;
9764 : : }
9765 : 154 : if (integer_valued_real_p (_p0))
9766 : : {
9767 : 0 : {
9768 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9769 : 0 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF16))
9770 : 0 : return true;
9771 : : }
9772 : : }
9773 : : return false;
9774 : : }
9775 : :
9776 : : bool
9777 : 0 : gimple_simplify_CFN_BUILT_IN_RINTF128X (gimple_match_op *res_op, gimple_seq *seq,
9778 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9779 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9780 : : {
9781 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9782 : 0 : switch (TREE_CODE (_p0))
9783 : : {
9784 : 0 : case SSA_NAME:
9785 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
9786 : : {
9787 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9788 : 0 : switch (gimple_call_combined_fn (_c1))
9789 : : {
9790 : 0 : case CFN_BUILT_IN_RINTF128X:
9791 : 0 : if (gimple_call_num_args (_c1) == 1)
9792 : : {
9793 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
9794 : 0 : _q20 = do_valueize (valueize, _q20);
9795 : 0 : {
9796 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9797 : 0 : if (gimple_simplify_647 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF128X))
9798 : 0 : return true;
9799 : : }
9800 : : }
9801 : : break;
9802 : : default:;
9803 : : }
9804 : : }
9805 : : break;
9806 : 0 : default:;
9807 : : }
9808 : 0 : if (integer_valued_real_p (_p0))
9809 : : {
9810 : 0 : {
9811 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9812 : 0 : if (gimple_simplify_648 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF128X))
9813 : 0 : return true;
9814 : : }
9815 : : }
9816 : : return false;
9817 : : }
9818 : :
9819 : : bool
9820 : 1147 : gimple_simplify_CFN_BUILT_IN_LCEILL (gimple_match_op *res_op, gimple_seq *seq,
9821 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9822 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9823 : : {
9824 : 1147 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9825 : 1147 : switch (TREE_CODE (_p0))
9826 : : {
9827 : 1081 : case SSA_NAME:
9828 : 1081 : if (gimple *_d1 = get_def (valueize, _p0))
9829 : : {
9830 : 686 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9831 : 366 : switch (gimple_assign_rhs_code (_a1))
9832 : : {
9833 : 336 : CASE_CONVERT:
9834 : 336 : {
9835 : 336 : tree _q20 = gimple_assign_rhs1 (_a1);
9836 : 336 : _q20 = do_valueize (valueize, _q20);
9837 : 336 : if (gimple_double_value_p (_q20, valueize))
9838 : : {
9839 : 120 : {
9840 : 120 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9841 : 120 : if (gimple_simplify_654 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL, CFN_BUILT_IN_LCEIL))
9842 : 120 : return true;
9843 : : }
9844 : : }
9845 : 216 : if (gimple_float_value_p (_q20, valueize))
9846 : : {
9847 : 216 : {
9848 : 216 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9849 : 216 : if (gimple_simplify_655 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL, CFN_BUILT_IN_LCEILF))
9850 : 216 : return true;
9851 : : }
9852 : : }
9853 : : break;
9854 : : }
9855 : : default:;
9856 : : }
9857 : : }
9858 : : break;
9859 : 811 : default:;
9860 : : }
9861 : 811 : if (integer_valued_real_p (_p0))
9862 : : {
9863 : 20 : {
9864 : 20 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9865 : 20 : if (gimple_simplify_657 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL))
9866 : 20 : return true;
9867 : : }
9868 : : }
9869 : : return false;
9870 : : }
9871 : :
9872 : : bool
9873 : 253 : gimple_simplify_CFN_BUILT_IN_LLROUNDL (gimple_match_op *res_op, gimple_seq *seq,
9874 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9875 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9876 : : {
9877 : 253 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9878 : 253 : switch (TREE_CODE (_p0))
9879 : : {
9880 : 219 : case SSA_NAME:
9881 : 219 : if (gimple *_d1 = get_def (valueize, _p0))
9882 : : {
9883 : 83 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9884 : 0 : switch (gimple_assign_rhs_code (_a1))
9885 : : {
9886 : 0 : CASE_CONVERT:
9887 : 0 : {
9888 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
9889 : 0 : _q20 = do_valueize (valueize, _q20);
9890 : 0 : if (gimple_double_value_p (_q20, valueize))
9891 : : {
9892 : 0 : {
9893 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9894 : 0 : if (gimple_simplify_654 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL, CFN_BUILT_IN_LLROUND))
9895 : 0 : return true;
9896 : : }
9897 : : }
9898 : 0 : if (gimple_float_value_p (_q20, valueize))
9899 : : {
9900 : 0 : {
9901 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9902 : 0 : if (gimple_simplify_655 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL, CFN_BUILT_IN_LLROUNDF))
9903 : 0 : return true;
9904 : : }
9905 : : }
9906 : : break;
9907 : : }
9908 : : default:;
9909 : : }
9910 : : }
9911 : : break;
9912 : 253 : default:;
9913 : : }
9914 : 253 : if (integer_valued_real_p (_p0))
9915 : : {
9916 : 21 : {
9917 : 21 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9918 : 21 : if (gimple_simplify_657 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL))
9919 : 21 : return true;
9920 : : }
9921 : : }
9922 : 232 : {
9923 : 232 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9924 : 232 : if (gimple_simplify_659 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUNDL, CFN_BUILT_IN_LROUNDL, CFN_BUILT_IN_LLROUNDL))
9925 : 190 : return true;
9926 : : }
9927 : 42 : return false;
9928 : : }
9929 : :
9930 : : bool
9931 : 1413 : gimple_simplify_CFN_BUILT_IN_LCEIL (gimple_match_op *res_op, gimple_seq *seq,
9932 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9933 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9934 : : {
9935 : 1413 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9936 : 1413 : switch (TREE_CODE (_p0))
9937 : : {
9938 : 1298 : case SSA_NAME:
9939 : 1298 : if (gimple *_d1 = get_def (valueize, _p0))
9940 : : {
9941 : 835 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9942 : 264 : switch (gimple_assign_rhs_code (_a1))
9943 : : {
9944 : 234 : CASE_CONVERT:
9945 : 234 : {
9946 : 234 : tree _q20 = gimple_assign_rhs1 (_a1);
9947 : 234 : _q20 = do_valueize (valueize, _q20);
9948 : 234 : if (gimple_float_value_p (_q20, valueize))
9949 : : {
9950 : 168 : {
9951 : 168 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9952 : 168 : if (gimple_simplify_655 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEIL, CFN_BUILT_IN_LCEILF))
9953 : 168 : return true;
9954 : : }
9955 : : }
9956 : : break;
9957 : : }
9958 : : default:;
9959 : : }
9960 : : }
9961 : : break;
9962 : 1245 : default:;
9963 : : }
9964 : 1245 : if (integer_valued_real_p (_p0))
9965 : : {
9966 : 20 : {
9967 : 20 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9968 : 20 : if (gimple_simplify_657 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEIL))
9969 : 20 : return true;
9970 : : }
9971 : : }
9972 : : return false;
9973 : : }
9974 : :
9975 : : bool
9976 : 3477 : gimple_simplify_CFN_BUILT_IN_LRINT (gimple_match_op *res_op, gimple_seq *seq,
9977 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
9978 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
9979 : : {
9980 : 3477 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9981 : 3477 : switch (TREE_CODE (_p0))
9982 : : {
9983 : 3229 : case SSA_NAME:
9984 : 3229 : if (gimple *_d1 = get_def (valueize, _p0))
9985 : : {
9986 : 1959 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
9987 : 2276 : switch (gimple_assign_rhs_code (_a1))
9988 : : {
9989 : 260 : CASE_CONVERT:
9990 : 260 : {
9991 : 260 : tree _q20 = gimple_assign_rhs1 (_a1);
9992 : 260 : _q20 = do_valueize (valueize, _q20);
9993 : 260 : if (gimple_float_value_p (_q20, valueize))
9994 : : {
9995 : 194 : {
9996 : 194 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9997 : 194 : if (gimple_simplify_655 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINT, CFN_BUILT_IN_LRINTF))
9998 : 194 : return true;
9999 : : }
10000 : : }
10001 : : break;
10002 : : }
10003 : : default:;
10004 : : }
10005 : : }
10006 : : break;
10007 : 3283 : default:;
10008 : : }
10009 : 3283 : if (integer_valued_real_p (_p0))
10010 : : {
10011 : 62 : {
10012 : 62 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10013 : 62 : if (gimple_simplify_660 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINT))
10014 : 20 : return true;
10015 : : }
10016 : : }
10017 : : return false;
10018 : : }
10019 : :
10020 : : bool
10021 : 0 : gimple_simplify_CFN_LLFLOOR (gimple_match_op *res_op, gimple_seq *seq,
10022 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10023 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
10024 : : {
10025 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10026 : 0 : if (tree_expr_nonnegative_p (_p0))
10027 : : {
10028 : 0 : {
10029 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10030 : 0 : if (gimple_simplify_656 (res_op, seq, valueize, type, captures, CFN_LLFLOOR))
10031 : 0 : return true;
10032 : : }
10033 : : }
10034 : 0 : if (integer_valued_real_p (_p0))
10035 : : {
10036 : 0 : {
10037 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10038 : 0 : if (gimple_simplify_657 (res_op, seq, valueize, type, captures, CFN_LLFLOOR))
10039 : 0 : return true;
10040 : : }
10041 : : }
10042 : 0 : {
10043 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10044 : 0 : if (gimple_simplify_659 (res_op, seq, valueize, type, captures, CFN_IFLOOR, CFN_LFLOOR, CFN_LLFLOOR))
10045 : 0 : return true;
10046 : : }
10047 : 0 : return false;
10048 : : }
10049 : :
10050 : : bool
10051 : 0 : gimple_simplify_CFN_LLROUND (gimple_match_op *res_op, gimple_seq *seq,
10052 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10053 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
10054 : : {
10055 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10056 : 0 : if (integer_valued_real_p (_p0))
10057 : : {
10058 : 0 : {
10059 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10060 : 0 : if (gimple_simplify_657 (res_op, seq, valueize, type, captures, CFN_LLROUND))
10061 : 0 : return true;
10062 : : }
10063 : : }
10064 : 0 : {
10065 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10066 : 0 : if (gimple_simplify_659 (res_op, seq, valueize, type, captures, CFN_IROUND, CFN_LROUND, CFN_LLROUND))
10067 : 0 : return true;
10068 : : }
10069 : 0 : return false;
10070 : : }
10071 : :
10072 : : bool
10073 : 1003 : gimple_simplify_CFN_BUILT_IN_CPROJF (gimple_match_op *res_op, gimple_seq *seq,
10074 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10075 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
10076 : : {
10077 : 1003 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10078 : 1003 : {
10079 : 1003 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10080 : 1003 : if (!HONOR_INFINITIES (type)
10081 : : )
10082 : : {
10083 : 21 : gimple_seq *lseq = seq;
10084 : 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1949;
10085 : 21 : {
10086 : 21 : tree tem;
10087 : 21 : tem = captures[0];
10088 : 21 : res_op->set_value (tem);
10089 : 21 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10090 : 21 : return true;
10091 : : }
10092 : 0 : next_after_fail1949:;
10093 : : }
10094 : : }
10095 : 982 : switch (TREE_CODE (_p0))
10096 : : {
10097 : 925 : case SSA_NAME:
10098 : 925 : if (gimple *_d1 = get_def (valueize, _p0))
10099 : : {
10100 : 542 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10101 : 736 : switch (gimple_assign_rhs_code (_a1))
10102 : : {
10103 : 336 : case COMPLEX_EXPR:
10104 : 336 : {
10105 : 336 : tree _q20 = gimple_assign_rhs1 (_a1);
10106 : 336 : _q20 = do_valueize (valueize, _q20);
10107 : 336 : tree _q21 = gimple_assign_rhs2 (_a1);
10108 : 336 : _q21 = do_valueize (valueize, _q21);
10109 : 336 : switch (TREE_CODE (_q20))
10110 : : {
10111 : 56 : case REAL_CST:
10112 : 56 : {
10113 : 56 : if (tree_expr_nonnegative_p (_q21))
10114 : : {
10115 : 56 : {
10116 : 56 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10117 : 56 : if (real_isinf (TREE_REAL_CST_PTR (captures[0]))
10118 : : )
10119 : : {
10120 : 56 : gimple_seq *lseq = seq;
10121 : 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1950;
10122 : 56 : {
10123 : 56 : tree tem;
10124 : 56 : tem = build_complex_inf (type, false);
10125 : 56 : res_op->set_value (tem);
10126 : 56 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1023, __FILE__, __LINE__, true);
10127 : 56 : return true;
10128 : : }
10129 : 0 : next_after_fail1950:;
10130 : : }
10131 : : }
10132 : : }
10133 : : break;
10134 : : }
10135 : 280 : default:;
10136 : : }
10137 : 280 : switch (TREE_CODE (_q21))
10138 : : {
10139 : 224 : case REAL_CST:
10140 : 224 : {
10141 : 224 : {
10142 : 224 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10143 : 224 : if (real_isinf (TREE_REAL_CST_PTR (captures[1]))
10144 : : )
10145 : : {
10146 : 224 : gimple_seq *lseq = seq;
10147 : 224 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1951;
10148 : 224 : {
10149 : 224 : tree tem;
10150 : 224 : tem = build_complex_inf (type, TREE_REAL_CST_PTR (captures[1])->sign);
10151 : 224 : res_op->set_value (tem);
10152 : 224 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1024, __FILE__, __LINE__, true);
10153 : 224 : return true;
10154 : : }
10155 : 0 : next_after_fail1951:;
10156 : : }
10157 : : }
10158 : 0 : break;
10159 : : }
10160 : : default:;
10161 : : }
10162 : : break;
10163 : : }
10164 : : default:;
10165 : : }
10166 : : }
10167 : : break;
10168 : : default:;
10169 : : }
10170 : : return false;
10171 : : }
10172 : :
10173 : : bool
10174 : 5741 : gimple_simplify_CFN_BUILT_IN_POPCOUNT (gimple_match_op *res_op, gimple_seq *seq,
10175 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10176 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
10177 : : {
10178 : 5741 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10179 : 5741 : switch (TREE_CODE (_p0))
10180 : : {
10181 : 5634 : case SSA_NAME:
10182 : 5634 : if (gimple *_d1 = get_def (valueize, _p0))
10183 : : {
10184 : 3064 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10185 : 2294 : switch (gimple_assign_rhs_code (_a1))
10186 : : {
10187 : 1648 : CASE_CONVERT:
10188 : 1648 : {
10189 : 1648 : tree _q20 = gimple_assign_rhs1 (_a1);
10190 : 1648 : _q20 = do_valueize (valueize, _q20);
10191 : 1648 : switch (TREE_CODE (_q20))
10192 : : {
10193 : 1648 : case SSA_NAME:
10194 : 1648 : if (gimple *_d2 = get_def (valueize, _q20))
10195 : : {
10196 : 1617 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10197 : 2308 : switch (gimple_assign_rhs_code (_a2))
10198 : : {
10199 : 0 : case LROTATE_EXPR:
10200 : 0 : {
10201 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10202 : 0 : _q30 = do_valueize (valueize, _q30);
10203 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
10204 : 0 : _q31 = do_valueize (valueize, _q31);
10205 : 0 : {
10206 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
10207 : 0 : if (gimple_simplify_678 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_POPCOUNT))
10208 : 0 : return true;
10209 : : }
10210 : 0 : break;
10211 : : }
10212 : 0 : case RROTATE_EXPR:
10213 : 0 : {
10214 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10215 : 0 : _q30 = do_valueize (valueize, _q30);
10216 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
10217 : 0 : _q31 = do_valueize (valueize, _q31);
10218 : 0 : {
10219 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
10220 : 0 : if (gimple_simplify_678 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_POPCOUNT))
10221 : 0 : return true;
10222 : : }
10223 : 0 : break;
10224 : : }
10225 : : default:;
10226 : : }
10227 : 268 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
10228 : 16 : switch (gimple_call_combined_fn (_c2))
10229 : : {
10230 : 0 : case CFN_BUILT_IN_BSWAP128:
10231 : 0 : if (gimple_call_num_args (_c2) == 1)
10232 : : {
10233 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
10234 : 0 : _q30 = do_valueize (valueize, _q30);
10235 : 0 : {
10236 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10237 : 0 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_POPCOUNT))
10238 : 0 : return true;
10239 : : }
10240 : : }
10241 : : break;
10242 : 16 : case CFN_BUILT_IN_BSWAP16:
10243 : 16 : if (gimple_call_num_args (_c2) == 1)
10244 : : {
10245 : 16 : tree _q30 = gimple_call_arg (_c2, 0);
10246 : 16 : _q30 = do_valueize (valueize, _q30);
10247 : 16 : {
10248 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10249 : 16 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_POPCOUNT))
10250 : 8 : return true;
10251 : : }
10252 : : }
10253 : : break;
10254 : 0 : case CFN_BUILT_IN_BSWAP32:
10255 : 0 : if (gimple_call_num_args (_c2) == 1)
10256 : : {
10257 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
10258 : 0 : _q30 = do_valueize (valueize, _q30);
10259 : 0 : {
10260 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10261 : 0 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_POPCOUNT))
10262 : 0 : return true;
10263 : : }
10264 : : }
10265 : : break;
10266 : 0 : case CFN_BUILT_IN_BSWAP64:
10267 : 0 : if (gimple_call_num_args (_c2) == 1)
10268 : : {
10269 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
10270 : 0 : _q30 = do_valueize (valueize, _q30);
10271 : 0 : {
10272 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10273 : 0 : if (gimple_simplify_677 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_POPCOUNT))
10274 : 0 : return true;
10275 : : }
10276 : : }
10277 : : break;
10278 : : default:;
10279 : : }
10280 : : }
10281 : : break;
10282 : 1640 : default:;
10283 : : }
10284 : 1640 : {
10285 : 1640 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10286 : 1640 : if (gimple_simplify_679 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNT))
10287 : 18 : return true;
10288 : : }
10289 : 1622 : break;
10290 : : }
10291 : 0 : case LROTATE_EXPR:
10292 : 0 : {
10293 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10294 : 0 : _q20 = do_valueize (valueize, _q20);
10295 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10296 : 0 : _q21 = do_valueize (valueize, _q21);
10297 : 0 : {
10298 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
10299 : 0 : if (gimple_simplify_681 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_POPCOUNT))
10300 : 0 : return true;
10301 : : }
10302 : 0 : break;
10303 : : }
10304 : 2 : case RROTATE_EXPR:
10305 : 2 : {
10306 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
10307 : 2 : _q20 = do_valueize (valueize, _q20);
10308 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
10309 : 2 : _q21 = do_valueize (valueize, _q21);
10310 : 2 : {
10311 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
10312 : 2 : if (gimple_simplify_681 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_POPCOUNT))
10313 : 2 : return true;
10314 : : }
10315 : 0 : break;
10316 : : }
10317 : : default:;
10318 : : }
10319 : 994 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
10320 : 48 : switch (gimple_call_combined_fn (_c1))
10321 : : {
10322 : 0 : case CFN_BUILT_IN_BSWAP128:
10323 : 0 : if (gimple_call_num_args (_c1) == 1)
10324 : : {
10325 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10326 : 0 : _q20 = do_valueize (valueize, _q20);
10327 : 0 : {
10328 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10329 : 0 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_POPCOUNT))
10330 : 0 : return true;
10331 : : }
10332 : : }
10333 : : break;
10334 : 0 : case CFN_BUILT_IN_BSWAP16:
10335 : 0 : if (gimple_call_num_args (_c1) == 1)
10336 : : {
10337 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10338 : 0 : _q20 = do_valueize (valueize, _q20);
10339 : 0 : {
10340 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10341 : 0 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_POPCOUNT))
10342 : 0 : return true;
10343 : : }
10344 : : }
10345 : : break;
10346 : 4 : case CFN_BUILT_IN_BSWAP32:
10347 : 4 : if (gimple_call_num_args (_c1) == 1)
10348 : : {
10349 : 4 : tree _q20 = gimple_call_arg (_c1, 0);
10350 : 4 : _q20 = do_valueize (valueize, _q20);
10351 : 4 : {
10352 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10353 : 4 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_POPCOUNT))
10354 : 4 : return true;
10355 : : }
10356 : : }
10357 : : break;
10358 : 0 : case CFN_BUILT_IN_BSWAP64:
10359 : 0 : if (gimple_call_num_args (_c1) == 1)
10360 : : {
10361 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10362 : 0 : _q20 = do_valueize (valueize, _q20);
10363 : 0 : {
10364 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10365 : 0 : if (gimple_simplify_680 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_POPCOUNT))
10366 : 0 : return true;
10367 : : }
10368 : : }
10369 : : break;
10370 : : default:;
10371 : : }
10372 : : }
10373 : : break;
10374 : 5709 : default:;
10375 : : }
10376 : 5709 : {
10377 : 5709 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10378 : 5709 : if (gimple_simplify_682 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNT))
10379 : 8 : return true;
10380 : : }
10381 : 5701 : return false;
10382 : : }
10383 : :
10384 : : bool
10385 : 0 : gimple_simplify_CFN_BUILT_IN_PARITYIMAX (gimple_match_op *res_op, gimple_seq *seq,
10386 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10387 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
10388 : : {
10389 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10390 : 0 : switch (TREE_CODE (_p0))
10391 : : {
10392 : 0 : case SSA_NAME:
10393 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
10394 : : {
10395 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10396 : 0 : switch (gimple_assign_rhs_code (_a1))
10397 : : {
10398 : 0 : case BIT_NOT_EXPR:
10399 : 0 : {
10400 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10401 : 0 : _q20 = do_valueize (valueize, _q20);
10402 : 0 : {
10403 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10404 : 0 : if (gimple_simplify_683 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_PARITYIMAX))
10405 : 0 : return true;
10406 : : }
10407 : 0 : break;
10408 : : }
10409 : 0 : CASE_CONVERT:
10410 : 0 : {
10411 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10412 : 0 : _q20 = do_valueize (valueize, _q20);
10413 : 0 : switch (TREE_CODE (_q20))
10414 : : {
10415 : 0 : case SSA_NAME:
10416 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
10417 : : {
10418 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10419 : 0 : switch (gimple_assign_rhs_code (_a2))
10420 : : {
10421 : 0 : case LROTATE_EXPR:
10422 : 0 : {
10423 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10424 : 0 : _q30 = do_valueize (valueize, _q30);
10425 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
10426 : 0 : _q31 = do_valueize (valueize, _q31);
10427 : 0 : {
10428 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
10429 : 0 : if (gimple_simplify_685 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_PARITYIMAX))
10430 : 0 : return true;
10431 : : }
10432 : 0 : break;
10433 : : }
10434 : 0 : case RROTATE_EXPR:
10435 : 0 : {
10436 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10437 : 0 : _q30 = do_valueize (valueize, _q30);
10438 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
10439 : 0 : _q31 = do_valueize (valueize, _q31);
10440 : 0 : {
10441 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
10442 : 0 : if (gimple_simplify_685 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_PARITYIMAX))
10443 : 0 : return true;
10444 : : }
10445 : 0 : break;
10446 : : }
10447 : : default:;
10448 : : }
10449 : 0 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
10450 : 0 : switch (gimple_call_combined_fn (_c2))
10451 : : {
10452 : 0 : case CFN_BUILT_IN_BSWAP128:
10453 : 0 : if (gimple_call_num_args (_c2) == 1)
10454 : : {
10455 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
10456 : 0 : _q30 = do_valueize (valueize, _q30);
10457 : 0 : {
10458 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10459 : 0 : if (gimple_simplify_684 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_PARITYIMAX))
10460 : 0 : return true;
10461 : : }
10462 : : }
10463 : : break;
10464 : 0 : case CFN_BUILT_IN_BSWAP16:
10465 : 0 : if (gimple_call_num_args (_c2) == 1)
10466 : : {
10467 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
10468 : 0 : _q30 = do_valueize (valueize, _q30);
10469 : 0 : {
10470 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10471 : 0 : if (gimple_simplify_684 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_PARITYIMAX))
10472 : 0 : return true;
10473 : : }
10474 : : }
10475 : : break;
10476 : 0 : case CFN_BUILT_IN_BSWAP32:
10477 : 0 : if (gimple_call_num_args (_c2) == 1)
10478 : : {
10479 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
10480 : 0 : _q30 = do_valueize (valueize, _q30);
10481 : 0 : {
10482 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10483 : 0 : if (gimple_simplify_684 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_PARITYIMAX))
10484 : 0 : return true;
10485 : : }
10486 : : }
10487 : : break;
10488 : 0 : case CFN_BUILT_IN_BSWAP64:
10489 : 0 : if (gimple_call_num_args (_c2) == 1)
10490 : : {
10491 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
10492 : 0 : _q30 = do_valueize (valueize, _q30);
10493 : 0 : {
10494 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
10495 : 0 : if (gimple_simplify_684 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_PARITYIMAX))
10496 : 0 : return true;
10497 : : }
10498 : : }
10499 : : break;
10500 : : default:;
10501 : : }
10502 : : }
10503 : : break;
10504 : 0 : default:;
10505 : : }
10506 : 0 : {
10507 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10508 : 0 : if (gimple_simplify_686 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_PARITYIMAX))
10509 : 0 : return true;
10510 : : }
10511 : 0 : break;
10512 : : }
10513 : 0 : case LROTATE_EXPR:
10514 : 0 : {
10515 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10516 : 0 : _q20 = do_valueize (valueize, _q20);
10517 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10518 : 0 : _q21 = do_valueize (valueize, _q21);
10519 : 0 : {
10520 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
10521 : 0 : if (gimple_simplify_688 (res_op, seq, valueize, type, captures, LROTATE_EXPR, CFN_BUILT_IN_PARITYIMAX))
10522 : 0 : return true;
10523 : : }
10524 : 0 : break;
10525 : : }
10526 : 0 : case RROTATE_EXPR:
10527 : 0 : {
10528 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10529 : 0 : _q20 = do_valueize (valueize, _q20);
10530 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10531 : 0 : _q21 = do_valueize (valueize, _q21);
10532 : 0 : {
10533 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
10534 : 0 : if (gimple_simplify_688 (res_op, seq, valueize, type, captures, RROTATE_EXPR, CFN_BUILT_IN_PARITYIMAX))
10535 : 0 : return true;
10536 : : }
10537 : 0 : break;
10538 : : }
10539 : : default:;
10540 : : }
10541 : 0 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
10542 : 0 : switch (gimple_call_combined_fn (_c1))
10543 : : {
10544 : 0 : case CFN_BUILT_IN_BSWAP128:
10545 : 0 : if (gimple_call_num_args (_c1) == 1)
10546 : : {
10547 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10548 : 0 : _q20 = do_valueize (valueize, _q20);
10549 : 0 : {
10550 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10551 : 0 : if (gimple_simplify_687 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128, CFN_BUILT_IN_PARITYIMAX))
10552 : 0 : return true;
10553 : : }
10554 : : }
10555 : : break;
10556 : 0 : case CFN_BUILT_IN_BSWAP16:
10557 : 0 : if (gimple_call_num_args (_c1) == 1)
10558 : : {
10559 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10560 : 0 : _q20 = do_valueize (valueize, _q20);
10561 : 0 : {
10562 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10563 : 0 : if (gimple_simplify_687 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16, CFN_BUILT_IN_PARITYIMAX))
10564 : 0 : return true;
10565 : : }
10566 : : }
10567 : : break;
10568 : 0 : case CFN_BUILT_IN_BSWAP32:
10569 : 0 : if (gimple_call_num_args (_c1) == 1)
10570 : : {
10571 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10572 : 0 : _q20 = do_valueize (valueize, _q20);
10573 : 0 : {
10574 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10575 : 0 : if (gimple_simplify_687 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32, CFN_BUILT_IN_PARITYIMAX))
10576 : 0 : return true;
10577 : : }
10578 : : }
10579 : : break;
10580 : 0 : case CFN_BUILT_IN_BSWAP64:
10581 : 0 : if (gimple_call_num_args (_c1) == 1)
10582 : : {
10583 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10584 : 0 : _q20 = do_valueize (valueize, _q20);
10585 : 0 : {
10586 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
10587 : 0 : if (gimple_simplify_687 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64, CFN_BUILT_IN_PARITYIMAX))
10588 : 0 : return true;
10589 : : }
10590 : : }
10591 : : break;
10592 : : default:;
10593 : : }
10594 : : }
10595 : : break;
10596 : 0 : default:;
10597 : : }
10598 : 0 : {
10599 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10600 : 0 : if (gimple_simplify_682 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_PARITYIMAX))
10601 : 0 : return true;
10602 : : }
10603 : 0 : return false;
10604 : : }
10605 : :
10606 : : bool
10607 : 76513082 : gimple_simplify_EQ_EXPR (gimple_match_op *res_op, gimple_seq *seq,
10608 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
10609 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
10610 : : {
10611 : 76513082 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10612 : 76513082 : switch (TREE_CODE (_p1))
10613 : : {
10614 : 11871961 : case SSA_NAME:
10615 : 11871961 : if (gimple *_d1 = get_def (valueize, _p1))
10616 : : {
10617 : 3981235 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10618 : 5769302 : switch (gimple_assign_rhs_code (_a1))
10619 : : {
10620 : 470 : case NEGATE_EXPR:
10621 : 470 : {
10622 : 470 : tree _q30 = gimple_assign_rhs1 (_a1);
10623 : 470 : _q30 = do_valueize (valueize, _q30);
10624 : 470 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10625 : : {
10626 : 99 : {
10627 : 99 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10628 : 99 : if (gimple_simplify_222 (res_op, seq, valueize, type, captures, EQ_EXPR))
10629 : 0 : return true;
10630 : : }
10631 : : }
10632 : : break;
10633 : : }
10634 : : default:;
10635 : : }
10636 : : }
10637 : : break;
10638 : 76513082 : default:;
10639 : : }
10640 : 76513082 : switch (TREE_CODE (_p0))
10641 : : {
10642 : 75675386 : case SSA_NAME:
10643 : 75675386 : if (gimple *_d1 = get_def (valueize, _p0))
10644 : : {
10645 : 26023249 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
10646 : 31477616 : switch (gimple_assign_rhs_code (_a1))
10647 : : {
10648 : 7646 : case NEGATE_EXPR:
10649 : 7646 : {
10650 : 7646 : tree _q20 = gimple_assign_rhs1 (_a1);
10651 : 7646 : _q20 = do_valueize (valueize, _q20);
10652 : 7646 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10653 : : {
10654 : 158 : {
10655 : 158 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10656 : 158 : if (gimple_simplify_222 (res_op, seq, valueize, type, captures, EQ_EXPR))
10657 : 21 : return true;
10658 : : }
10659 : : }
10660 : : break;
10661 : : }
10662 : 0 : case CEIL_MOD_EXPR:
10663 : 0 : {
10664 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10665 : 0 : _q20 = do_valueize (valueize, _q20);
10666 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10667 : 0 : _q21 = do_valueize (valueize, _q21);
10668 : 0 : if (integer_pow2p (_q21))
10669 : : {
10670 : 0 : if (integer_zerop (_p1))
10671 : : {
10672 : 0 : {
10673 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10674 : 0 : if (gimple_simplify_223 (res_op, seq, valueize, type, captures, EQ_EXPR, CEIL_MOD_EXPR))
10675 : 0 : return true;
10676 : : }
10677 : : }
10678 : : }
10679 : : break;
10680 : : }
10681 : 402 : case FLOOR_MOD_EXPR:
10682 : 402 : {
10683 : 402 : tree _q20 = gimple_assign_rhs1 (_a1);
10684 : 402 : _q20 = do_valueize (valueize, _q20);
10685 : 402 : tree _q21 = gimple_assign_rhs2 (_a1);
10686 : 402 : _q21 = do_valueize (valueize, _q21);
10687 : 402 : if (integer_pow2p (_q21))
10688 : : {
10689 : 4 : if (integer_zerop (_p1))
10690 : : {
10691 : 2 : {
10692 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10693 : 2 : if (gimple_simplify_223 (res_op, seq, valueize, type, captures, EQ_EXPR, FLOOR_MOD_EXPR))
10694 : 0 : return true;
10695 : : }
10696 : : }
10697 : : }
10698 : : break;
10699 : : }
10700 : 0 : case ROUND_MOD_EXPR:
10701 : 0 : {
10702 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
10703 : 0 : _q20 = do_valueize (valueize, _q20);
10704 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
10705 : 0 : _q21 = do_valueize (valueize, _q21);
10706 : 0 : if (integer_pow2p (_q21))
10707 : : {
10708 : 0 : if (integer_zerop (_p1))
10709 : : {
10710 : 0 : {
10711 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10712 : 0 : if (gimple_simplify_223 (res_op, seq, valueize, type, captures, EQ_EXPR, ROUND_MOD_EXPR))
10713 : 0 : return true;
10714 : : }
10715 : : }
10716 : : }
10717 : : break;
10718 : : }
10719 : 58552 : case TRUNC_MOD_EXPR:
10720 : 58552 : {
10721 : 58552 : tree _q20 = gimple_assign_rhs1 (_a1);
10722 : 58552 : _q20 = do_valueize (valueize, _q20);
10723 : 58552 : tree _q21 = gimple_assign_rhs2 (_a1);
10724 : 58552 : _q21 = do_valueize (valueize, _q21);
10725 : 58552 : if (integer_pow2p (_q21))
10726 : : {
10727 : 3376 : if (integer_zerop (_p1))
10728 : : {
10729 : 475 : {
10730 : 475 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10731 : 475 : if (gimple_simplify_223 (res_op, seq, valueize, type, captures, EQ_EXPR, TRUNC_MOD_EXPR))
10732 : 145 : return true;
10733 : : }
10734 : : }
10735 : : }
10736 : : break;
10737 : : }
10738 : 17472 : case LSHIFT_EXPR:
10739 : 17472 : {
10740 : 17472 : tree _q20 = gimple_assign_rhs1 (_a1);
10741 : 17472 : _q20 = do_valueize (valueize, _q20);
10742 : 17472 : tree _q21 = gimple_assign_rhs2 (_a1);
10743 : 17472 : _q21 = do_valueize (valueize, _q21);
10744 : 17472 : if (gimple_zero_one_valued_p (_q20, valueize))
10745 : : {
10746 : 561 : switch (TREE_CODE (_q21))
10747 : : {
10748 : 55 : case INTEGER_CST:
10749 : 55 : {
10750 : 55 : if (integer_zerop (_p1))
10751 : : {
10752 : 22 : {
10753 : 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10754 : 22 : if (tree_fits_shwi_p (captures[1])
10755 : 22 : && tree_to_shwi (captures[1]) > 0
10756 : 44 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
10757 : : )
10758 : : {
10759 : 22 : gimple_seq *lseq = seq;
10760 : 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2227;
10761 : 22 : {
10762 : 22 : res_op->set_op (EQ_EXPR, type, 2);
10763 : 22 : res_op->ops[0] = captures[0];
10764 : 22 : res_op->ops[1] = captures[2];
10765 : 22 : res_op->resimplify (lseq, valueize);
10766 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1120, __FILE__, __LINE__, true);
10767 : 22 : return true;
10768 : : }
10769 : 0 : next_after_fail2227:;
10770 : : }
10771 : : }
10772 : : }
10773 : : break;
10774 : : }
10775 : : default:;
10776 : : }
10777 : : }
10778 : : break;
10779 : : }
10780 : 1205253 : case BIT_AND_EXPR:
10781 : 1205253 : {
10782 : 1205253 : tree _q20 = gimple_assign_rhs1 (_a1);
10783 : 1205253 : _q20 = do_valueize (valueize, _q20);
10784 : 1205253 : tree _q21 = gimple_assign_rhs2 (_a1);
10785 : 1205253 : _q21 = do_valueize (valueize, _q21);
10786 : 1205253 : if (tree_swap_operands_p (_q20, _q21))
10787 : 5935 : std::swap (_q20, _q21);
10788 : 1205253 : if (gimple_truth_valued_p (_q20, valueize))
10789 : : {
10790 : 453 : if (gimple_truth_valued_p (_q21, valueize))
10791 : : {
10792 : 417 : switch (TREE_CODE (_p1))
10793 : : {
10794 : 10 : case SSA_NAME:
10795 : 10 : if (gimple *_d2 = get_def (valueize, _p1))
10796 : : {
10797 : 10 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10798 : 10 : switch (gimple_assign_rhs_code (_a2))
10799 : : {
10800 : 2 : case BIT_XOR_EXPR:
10801 : 2 : {
10802 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
10803 : 2 : _q50 = do_valueize (valueize, _q50);
10804 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
10805 : 2 : _q51 = do_valueize (valueize, _q51);
10806 : 2 : if (tree_swap_operands_p (_q50, _q51))
10807 : 0 : std::swap (_q50, _q51);
10808 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10809 : : {
10810 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10811 : : {
10812 : 2 : {
10813 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10814 : 2 : gimple_seq *lseq = seq;
10815 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2228;
10816 : 2 : {
10817 : 2 : res_op->set_op (BIT_NOT_EXPR, type, 1);
10818 : 2 : {
10819 : 2 : tree _o1[2], _r1;
10820 : 2 : _o1[0] = captures[0];
10821 : 2 : _o1[1] = captures[1];
10822 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10823 : 2 : tem_op.resimplify (lseq, valueize);
10824 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10825 : 2 : if (!_r1) goto next_after_fail2228;
10826 : 1 : res_op->ops[0] = _r1;
10827 : : }
10828 : 1 : res_op->resimplify (lseq, valueize);
10829 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
10830 : 1 : return true;
10831 : : }
10832 : 1 : next_after_fail2228:;
10833 : : }
10834 : : }
10835 : : }
10836 : 1 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10837 : : {
10838 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10839 : : {
10840 : 0 : {
10841 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10842 : 0 : gimple_seq *lseq = seq;
10843 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2229;
10844 : 0 : {
10845 : 0 : res_op->set_op (BIT_NOT_EXPR, type, 1);
10846 : 0 : {
10847 : 0 : tree _o1[2], _r1;
10848 : 0 : _o1[0] = captures[0];
10849 : 0 : _o1[1] = captures[1];
10850 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10851 : 0 : tem_op.resimplify (lseq, valueize);
10852 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10853 : 0 : if (!_r1) goto next_after_fail2229;
10854 : 0 : res_op->ops[0] = _r1;
10855 : : }
10856 : 0 : res_op->resimplify (lseq, valueize);
10857 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
10858 : 0 : return true;
10859 : : }
10860 : 0 : next_after_fail2229:;
10861 : : }
10862 : : }
10863 : : }
10864 : 76495037 : break;
10865 : : }
10866 : : default:;
10867 : : }
10868 : : }
10869 : : break;
10870 : : default:;
10871 : : }
10872 : : }
10873 : : }
10874 : 76495037 : break;
10875 : : }
10876 : 1126 : case BIT_XOR_EXPR:
10877 : 1126 : {
10878 : 1126 : tree _q20 = gimple_assign_rhs1 (_a1);
10879 : 1126 : _q20 = do_valueize (valueize, _q20);
10880 : 1126 : tree _q21 = gimple_assign_rhs2 (_a1);
10881 : 1126 : _q21 = do_valueize (valueize, _q21);
10882 : 1126 : if (tree_swap_operands_p (_q20, _q21))
10883 : 154 : std::swap (_q20, _q21);
10884 : 1126 : switch (TREE_CODE (_p1))
10885 : : {
10886 : 473 : case SSA_NAME:
10887 : 473 : if (gimple *_d2 = get_def (valueize, _p1))
10888 : : {
10889 : 467 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10890 : 593 : switch (gimple_assign_rhs_code (_a2))
10891 : : {
10892 : 1 : case BIT_AND_EXPR:
10893 : 1 : {
10894 : 1 : tree _q50 = gimple_assign_rhs1 (_a2);
10895 : 1 : _q50 = do_valueize (valueize, _q50);
10896 : 1 : tree _q51 = gimple_assign_rhs2 (_a2);
10897 : 1 : _q51 = do_valueize (valueize, _q51);
10898 : 1 : if (tree_swap_operands_p (_q50, _q51))
10899 : 0 : std::swap (_q50, _q51);
10900 : 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10901 : : {
10902 : 1 : if (gimple_truth_valued_p (_q50, valueize))
10903 : : {
10904 : 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10905 : : {
10906 : 1 : if (gimple_truth_valued_p (_q51, valueize))
10907 : : {
10908 : 1 : {
10909 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10910 : 1 : gimple_seq *lseq = seq;
10911 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2230;
10912 : 1 : {
10913 : 1 : res_op->set_op (BIT_NOT_EXPR, type, 1);
10914 : 1 : {
10915 : 1 : tree _o1[2], _r1;
10916 : 1 : _o1[0] = captures[0];
10917 : 1 : _o1[1] = captures[1];
10918 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10919 : 1 : tem_op.resimplify (lseq, valueize);
10920 : 1 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10921 : 1 : if (!_r1) goto next_after_fail2230;
10922 : 1 : res_op->ops[0] = _r1;
10923 : : }
10924 : 1 : res_op->resimplify (lseq, valueize);
10925 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
10926 : 1 : return true;
10927 : : }
10928 : 0 : next_after_fail2230:;
10929 : : }
10930 : : }
10931 : : }
10932 : : }
10933 : : }
10934 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10935 : : {
10936 : 0 : if (gimple_truth_valued_p (_q50, valueize))
10937 : : {
10938 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10939 : : {
10940 : 0 : if (gimple_truth_valued_p (_q51, valueize))
10941 : : {
10942 : 0 : {
10943 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10944 : 0 : gimple_seq *lseq = seq;
10945 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2231;
10946 : 0 : {
10947 : 0 : res_op->set_op (BIT_NOT_EXPR, type, 1);
10948 : 0 : {
10949 : 0 : tree _o1[2], _r1;
10950 : 0 : _o1[0] = captures[0];
10951 : 0 : _o1[1] = captures[1];
10952 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10953 : 0 : tem_op.resimplify (lseq, valueize);
10954 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
10955 : 0 : if (!_r1) goto next_after_fail2231;
10956 : 0 : res_op->ops[0] = _r1;
10957 : : }
10958 : 0 : res_op->resimplify (lseq, valueize);
10959 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
10960 : 0 : return true;
10961 : : }
10962 : 0 : next_after_fail2231:;
10963 : : }
10964 : : }
10965 : : }
10966 : : }
10967 : : }
10968 : 76495037 : break;
10969 : : }
10970 : : default:;
10971 : : }
10972 : : }
10973 : : break;
10974 : : default:;
10975 : : }
10976 : 76495037 : break;
10977 : : }
10978 : 2119 : case BIT_NOT_EXPR:
10979 : 2119 : {
10980 : 2119 : tree _q20 = gimple_assign_rhs1 (_a1);
10981 : 2119 : _q20 = do_valueize (valueize, _q20);
10982 : 2119 : if (gimple_truth_valued_p (_q20, valueize))
10983 : : {
10984 : 1423 : if (gimple_truth_valued_p (_p1, valueize))
10985 : : {
10986 : 1356 : {
10987 : 1356 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10988 : 1356 : if (gimple_simplify_225 (res_op, seq, valueize, type, captures))
10989 : 1356 : return true;
10990 : : }
10991 : : }
10992 : : }
10993 : : break;
10994 : : }
10995 : 72495 : case MULT_EXPR:
10996 : 72495 : {
10997 : 72495 : tree _q20 = gimple_assign_rhs1 (_a1);
10998 : 72495 : _q20 = do_valueize (valueize, _q20);
10999 : 72495 : tree _q21 = gimple_assign_rhs2 (_a1);
11000 : 72495 : _q21 = do_valueize (valueize, _q21);
11001 : 72495 : if (tree_swap_operands_p (_q20, _q21))
11002 : 449 : std::swap (_q20, _q21);
11003 : 72495 : switch (TREE_CODE (_p1))
11004 : : {
11005 : 33495 : case SSA_NAME:
11006 : 33495 : if (gimple *_d2 = get_def (valueize, _p1))
11007 : : {
11008 : 32370 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11009 : 31827 : switch (gimple_assign_rhs_code (_a2))
11010 : : {
11011 : 635 : case MULT_EXPR:
11012 : 635 : {
11013 : 635 : tree _q50 = gimple_assign_rhs1 (_a2);
11014 : 635 : _q50 = do_valueize (valueize, _q50);
11015 : 635 : tree _q51 = gimple_assign_rhs2 (_a2);
11016 : 635 : _q51 = do_valueize (valueize, _q51);
11017 : 635 : if (tree_swap_operands_p (_q50, _q51))
11018 : 9 : std::swap (_q50, _q51);
11019 : 635 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11020 : : {
11021 : 487 : {
11022 : 487 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11023 : 487 : if (gimple_simplify_226 (res_op, seq, valueize, type, captures, EQ_EXPR))
11024 : 0 : return true;
11025 : : }
11026 : : }
11027 : 635 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11028 : : {
11029 : 0 : {
11030 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
11031 : 0 : if (gimple_simplify_226 (res_op, seq, valueize, type, captures, EQ_EXPR))
11032 : 0 : return true;
11033 : : }
11034 : : }
11035 : 635 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11036 : : {
11037 : 0 : {
11038 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
11039 : 0 : if (gimple_simplify_226 (res_op, seq, valueize, type, captures, EQ_EXPR))
11040 : 0 : return true;
11041 : : }
11042 : : }
11043 : 635 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11044 : : {
11045 : 73 : {
11046 : 73 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
11047 : 73 : if (gimple_simplify_226 (res_op, seq, valueize, type, captures, EQ_EXPR))
11048 : 4 : return true;
11049 : : }
11050 : : }
11051 : 72491 : break;
11052 : : }
11053 : : default:;
11054 : : }
11055 : : }
11056 : : break;
11057 : 72491 : default:;
11058 : : }
11059 : 72491 : switch (TREE_CODE (_q21))
11060 : : {
11061 : 56866 : case INTEGER_CST:
11062 : 56866 : {
11063 : 56866 : switch (TREE_CODE (_p1))
11064 : : {
11065 : 30521 : case SSA_NAME:
11066 : 30521 : if (gimple *_d2 = get_def (valueize, _p1))
11067 : : {
11068 : 29504 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11069 : 30384 : switch (gimple_assign_rhs_code (_a2))
11070 : : {
11071 : 535 : case MULT_EXPR:
11072 : 535 : {
11073 : 535 : tree _q50 = gimple_assign_rhs1 (_a2);
11074 : 535 : _q50 = do_valueize (valueize, _q50);
11075 : 535 : tree _q51 = gimple_assign_rhs2 (_a2);
11076 : 535 : _q51 = do_valueize (valueize, _q51);
11077 : 535 : if (tree_swap_operands_p (_q50, _q51))
11078 : 0 : std::swap (_q50, _q51);
11079 : 535 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11080 : : {
11081 : 399 : {
11082 : 399 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11083 : 399 : if (gimple_simplify_227 (res_op, seq, valueize, type, captures, EQ_EXPR))
11084 : 14 : return true;
11085 : : }
11086 : : }
11087 : 76495037 : break;
11088 : : }
11089 : : default:;
11090 : : }
11091 : : }
11092 : : break;
11093 : : default:;
11094 : : }
11095 : : break;
11096 : : }
11097 : : default:;
11098 : : }
11099 : 76495037 : break;
11100 : : }
11101 : 738034 : CASE_CONVERT:
11102 : 738034 : {
11103 : 738034 : tree _q20 = gimple_assign_rhs1 (_a1);
11104 : 738034 : _q20 = do_valueize (valueize, _q20);
11105 : 738034 : switch (TREE_CODE (_q20))
11106 : : {
11107 : 724814 : case SSA_NAME:
11108 : 724814 : if (gimple *_d2 = get_def (valueize, _q20))
11109 : : {
11110 : 713910 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11111 : 858903 : switch (gimple_assign_rhs_code (_a2))
11112 : : {
11113 : 88727 : case EXACT_DIV_EXPR:
11114 : 88727 : {
11115 : 88727 : tree _q30 = gimple_assign_rhs1 (_a2);
11116 : 88727 : _q30 = do_valueize (valueize, _q30);
11117 : 88727 : tree _q31 = gimple_assign_rhs2 (_a2);
11118 : 88727 : _q31 = do_valueize (valueize, _q31);
11119 : 88727 : switch (TREE_CODE (_q31))
11120 : : {
11121 : 88727 : case INTEGER_CST:
11122 : 88727 : {
11123 : 88727 : switch (TREE_CODE (_p1))
11124 : : {
11125 : 921 : case SSA_NAME:
11126 : 921 : if (gimple *_d3 = get_def (valueize, _p1))
11127 : : {
11128 : 853 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11129 : 789 : switch (gimple_assign_rhs_code (_a3))
11130 : : {
11131 : 130 : CASE_CONVERT:
11132 : 130 : {
11133 : 130 : tree _q60 = gimple_assign_rhs1 (_a3);
11134 : 130 : _q60 = do_valueize (valueize, _q60);
11135 : 130 : switch (TREE_CODE (_q60))
11136 : : {
11137 : 130 : case SSA_NAME:
11138 : 130 : if (gimple *_d4 = get_def (valueize, _q60))
11139 : : {
11140 : 130 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
11141 : 130 : switch (gimple_assign_rhs_code (_a4))
11142 : : {
11143 : 130 : case EXACT_DIV_EXPR:
11144 : 130 : {
11145 : 130 : tree _q70 = gimple_assign_rhs1 (_a4);
11146 : 130 : _q70 = do_valueize (valueize, _q70);
11147 : 130 : tree _q71 = gimple_assign_rhs2 (_a4);
11148 : 130 : _q71 = do_valueize (valueize, _q71);
11149 : 130 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
11150 : : {
11151 : 130 : {
11152 : 130 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
11153 : 130 : if (gimple_simplify_228 (res_op, seq, valueize, type, captures, EQ_EXPR))
11154 : 130 : return true;
11155 : : }
11156 : : }
11157 : : break;
11158 : : }
11159 : : default:;
11160 : : }
11161 : : }
11162 : : break;
11163 : : default:;
11164 : : }
11165 : : break;
11166 : : }
11167 : : default:;
11168 : : }
11169 : : }
11170 : : break;
11171 : : default:;
11172 : : }
11173 : : break;
11174 : : }
11175 : : default:;
11176 : : }
11177 : : break;
11178 : : }
11179 : : default:;
11180 : : }
11181 : : }
11182 : : break;
11183 : 737904 : default:;
11184 : : }
11185 : 737904 : switch (TREE_CODE (_p1))
11186 : : {
11187 : 167998 : case SSA_NAME:
11188 : 167998 : if (gimple *_d2 = get_def (valueize, _p1))
11189 : : {
11190 : 158983 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11191 : 171614 : switch (gimple_assign_rhs_code (_a2))
11192 : : {
11193 : 29269 : case PLUS_EXPR:
11194 : 29269 : {
11195 : 29269 : tree _q40 = gimple_assign_rhs1 (_a2);
11196 : 29269 : _q40 = do_valueize (valueize, _q40);
11197 : 29269 : tree _q41 = gimple_assign_rhs2 (_a2);
11198 : 29269 : _q41 = do_valueize (valueize, _q41);
11199 : 29269 : if (tree_swap_operands_p (_q40, _q41))
11200 : 29 : std::swap (_q40, _q41);
11201 : 29269 : switch (TREE_CODE (_q41))
11202 : : {
11203 : 489 : case SSA_NAME:
11204 : 489 : if (gimple *_d3 = get_def (valueize, _q41))
11205 : : {
11206 : 473 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11207 : 388 : switch (gimple_assign_rhs_code (_a3))
11208 : : {
11209 : 198 : CASE_CONVERT:
11210 : 198 : {
11211 : 198 : tree _q60 = gimple_assign_rhs1 (_a3);
11212 : 198 : _q60 = do_valueize (valueize, _q60);
11213 : 198 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11214 : : {
11215 : 3 : {
11216 : 3 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
11217 : 3 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11218 : 0 : return true;
11219 : : }
11220 : : }
11221 : : break;
11222 : : }
11223 : : default:;
11224 : : }
11225 : : }
11226 : : break;
11227 : 29269 : default:;
11228 : : }
11229 : 29269 : switch (TREE_CODE (_q40))
11230 : : {
11231 : 29269 : case SSA_NAME:
11232 : 29269 : if (gimple *_d3 = get_def (valueize, _q40))
11233 : : {
11234 : 26727 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11235 : 32141 : switch (gimple_assign_rhs_code (_a3))
11236 : : {
11237 : 1293 : CASE_CONVERT:
11238 : 1293 : {
11239 : 1293 : tree _q50 = gimple_assign_rhs1 (_a3);
11240 : 1293 : _q50 = do_valueize (valueize, _q50);
11241 : 1293 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11242 : : {
11243 : 5 : {
11244 : 5 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
11245 : 5 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11246 : 4 : return true;
11247 : : }
11248 : : }
11249 : : break;
11250 : : }
11251 : : default:;
11252 : : }
11253 : : }
11254 : : break;
11255 : 29265 : default:;
11256 : : }
11257 : 29265 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
11258 : : {
11259 : 0 : {
11260 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
11261 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11262 : 0 : return true;
11263 : : }
11264 : : }
11265 : 29265 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
11266 : : {
11267 : 0 : {
11268 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
11269 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11270 : 0 : return true;
11271 : : }
11272 : : }
11273 : 737900 : break;
11274 : : }
11275 : : default:;
11276 : : }
11277 : : }
11278 : : break;
11279 : 737900 : default:;
11280 : : }
11281 : 737900 : {
11282 : 737900 : tree _p1_pops[1];
11283 : 737900 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
11284 : : {
11285 : 34550 : tree _q40 = _p1_pops[0];
11286 : 34550 : switch (TREE_CODE (_q40))
11287 : : {
11288 : 17220 : case SSA_NAME:
11289 : 17220 : if (gimple *_d2 = get_def (valueize, _q40))
11290 : : {
11291 : 17090 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11292 : 22472 : switch (gimple_assign_rhs_code (_a2))
11293 : : {
11294 : 631 : case PLUS_EXPR:
11295 : 631 : {
11296 : 631 : tree _q50 = gimple_assign_rhs1 (_a2);
11297 : 631 : _q50 = do_valueize (valueize, _q50);
11298 : 631 : tree _q51 = gimple_assign_rhs2 (_a2);
11299 : 631 : _q51 = do_valueize (valueize, _q51);
11300 : 631 : if (tree_swap_operands_p (_q50, _q51))
11301 : 20 : std::swap (_q50, _q51);
11302 : 631 : switch (TREE_CODE (_q51))
11303 : : {
11304 : 461 : case SSA_NAME:
11305 : 461 : if (gimple *_d3 = get_def (valueize, _q51))
11306 : : {
11307 : 448 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11308 : 448 : switch (gimple_assign_rhs_code (_a3))
11309 : : {
11310 : 177 : CASE_CONVERT:
11311 : 177 : {
11312 : 177 : tree _q70 = gimple_assign_rhs1 (_a3);
11313 : 177 : _q70 = do_valueize (valueize, _q70);
11314 : 177 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
11315 : : {
11316 : 0 : {
11317 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
11318 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
11319 : 0 : return true;
11320 : : }
11321 : : }
11322 : : break;
11323 : : }
11324 : : default:;
11325 : : }
11326 : : }
11327 : : break;
11328 : 631 : default:;
11329 : : }
11330 : 631 : switch (TREE_CODE (_q50))
11331 : : {
11332 : 631 : case SSA_NAME:
11333 : 631 : if (gimple *_d3 = get_def (valueize, _q50))
11334 : : {
11335 : 581 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11336 : 575 : switch (gimple_assign_rhs_code (_a3))
11337 : : {
11338 : 30 : CASE_CONVERT:
11339 : 30 : {
11340 : 30 : tree _q60 = gimple_assign_rhs1 (_a3);
11341 : 30 : _q60 = do_valueize (valueize, _q60);
11342 : 30 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11343 : : {
11344 : 0 : {
11345 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
11346 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
11347 : 0 : return true;
11348 : : }
11349 : : }
11350 : : break;
11351 : : }
11352 : : default:;
11353 : : }
11354 : : }
11355 : : break;
11356 : 631 : default:;
11357 : : }
11358 : 631 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11359 : : {
11360 : 0 : {
11361 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
11362 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
11363 : 0 : return true;
11364 : : }
11365 : : }
11366 : 631 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11367 : : {
11368 : 0 : {
11369 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
11370 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
11371 : 0 : return true;
11372 : : }
11373 : : }
11374 : 737900 : break;
11375 : : }
11376 : : default:;
11377 : : }
11378 : : }
11379 : : break;
11380 : : default:;
11381 : : }
11382 : : }
11383 : : }
11384 : 737900 : break;
11385 : : }
11386 : 40597 : case EXACT_DIV_EXPR:
11387 : 40597 : {
11388 : 40597 : tree _q20 = gimple_assign_rhs1 (_a1);
11389 : 40597 : _q20 = do_valueize (valueize, _q20);
11390 : 40597 : tree _q21 = gimple_assign_rhs2 (_a1);
11391 : 40597 : _q21 = do_valueize (valueize, _q21);
11392 : 40597 : switch (TREE_CODE (_q21))
11393 : : {
11394 : 40597 : case INTEGER_CST:
11395 : 40597 : {
11396 : 40597 : switch (TREE_CODE (_p1))
11397 : : {
11398 : 19988 : case SSA_NAME:
11399 : 19988 : if (gimple *_d2 = get_def (valueize, _p1))
11400 : : {
11401 : 18232 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11402 : 13132 : switch (gimple_assign_rhs_code (_a2))
11403 : : {
11404 : 2 : case EXACT_DIV_EXPR:
11405 : 2 : {
11406 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
11407 : 2 : _q50 = do_valueize (valueize, _q50);
11408 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
11409 : 2 : _q51 = do_valueize (valueize, _q51);
11410 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11411 : : {
11412 : 2 : {
11413 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
11414 : 2 : if (gimple_simplify_228 (res_op, seq, valueize, type, captures, EQ_EXPR))
11415 : 2 : return true;
11416 : : }
11417 : : }
11418 : : break;
11419 : : }
11420 : : default:;
11421 : : }
11422 : : }
11423 : : break;
11424 : : default:;
11425 : : }
11426 : : break;
11427 : : }
11428 : : default:;
11429 : : }
11430 : : break;
11431 : : }
11432 : 13173 : case TRUNC_DIV_EXPR:
11433 : 13173 : {
11434 : 13173 : tree _q20 = gimple_assign_rhs1 (_a1);
11435 : 13173 : _q20 = do_valueize (valueize, _q20);
11436 : 13173 : tree _q21 = gimple_assign_rhs2 (_a1);
11437 : 13173 : _q21 = do_valueize (valueize, _q21);
11438 : 13173 : switch (TREE_CODE (_q21))
11439 : : {
11440 : 9903 : case INTEGER_CST:
11441 : 9903 : {
11442 : 9903 : switch (TREE_CODE (_p1))
11443 : : {
11444 : 6050 : case INTEGER_CST:
11445 : 6050 : {
11446 : 6050 : {
11447 : 6050 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11448 : 6050 : if (gimple_simplify_231 (res_op, seq, valueize, type, captures, EQ_EXPR))
11449 : 248 : return true;
11450 : : }
11451 : 5802 : break;
11452 : : }
11453 : : default:;
11454 : : }
11455 : : break;
11456 : : }
11457 : : default:;
11458 : : }
11459 : : break;
11460 : : }
11461 : 876666 : case PLUS_EXPR:
11462 : 876666 : {
11463 : 876666 : tree _q20 = gimple_assign_rhs1 (_a1);
11464 : 876666 : _q20 = do_valueize (valueize, _q20);
11465 : 876666 : tree _q21 = gimple_assign_rhs2 (_a1);
11466 : 876666 : _q21 = do_valueize (valueize, _q21);
11467 : 876666 : if (tree_swap_operands_p (_q20, _q21))
11468 : 6677 : std::swap (_q20, _q21);
11469 : 876666 : switch (TREE_CODE (_p1))
11470 : : {
11471 : 286214 : case SSA_NAME:
11472 : 286214 : if (gimple *_d2 = get_def (valueize, _p1))
11473 : : {
11474 : 263816 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11475 : 343035 : switch (gimple_assign_rhs_code (_a2))
11476 : : {
11477 : 67221 : case PLUS_EXPR:
11478 : 67221 : {
11479 : 67221 : tree _q50 = gimple_assign_rhs1 (_a2);
11480 : 67221 : _q50 = do_valueize (valueize, _q50);
11481 : 67221 : tree _q51 = gimple_assign_rhs2 (_a2);
11482 : 67221 : _q51 = do_valueize (valueize, _q51);
11483 : 67221 : if (tree_swap_operands_p (_q50, _q51))
11484 : 168 : std::swap (_q50, _q51);
11485 : 67221 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11486 : : {
11487 : 9193 : {
11488 : 9193 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11489 : 18386 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11490 : 18157 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11491 : 7737 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11492 : : )
11493 : : {
11494 : 8964 : gimple_seq *lseq = seq;
11495 : 8964 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2232;
11496 : 8964 : {
11497 : 8964 : res_op->set_op (EQ_EXPR, type, 2);
11498 : 8964 : res_op->ops[0] = captures[0];
11499 : 8964 : res_op->ops[1] = captures[2];
11500 : 8964 : res_op->resimplify (lseq, valueize);
11501 : 8964 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
11502 : 8964 : return true;
11503 : : }
11504 : 0 : next_after_fail2232:;
11505 : : }
11506 : : }
11507 : : }
11508 : 58257 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11509 : : {
11510 : 17 : {
11511 : 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
11512 : 34 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11513 : 34 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11514 : 17 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11515 : : )
11516 : : {
11517 : 17 : gimple_seq *lseq = seq;
11518 : 17 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2233;
11519 : 17 : {
11520 : 17 : res_op->set_op (EQ_EXPR, type, 2);
11521 : 17 : res_op->ops[0] = captures[0];
11522 : 17 : res_op->ops[1] = captures[2];
11523 : 17 : res_op->resimplify (lseq, valueize);
11524 : 17 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
11525 : 17 : return true;
11526 : : }
11527 : 0 : next_after_fail2233:;
11528 : : }
11529 : : }
11530 : : }
11531 : 58240 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11532 : : {
11533 : 3 : {
11534 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
11535 : 6 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11536 : 6 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11537 : 2 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11538 : : )
11539 : : {
11540 : 3 : gimple_seq *lseq = seq;
11541 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2234;
11542 : 3 : {
11543 : 3 : res_op->set_op (EQ_EXPR, type, 2);
11544 : 3 : res_op->ops[0] = captures[0];
11545 : 3 : res_op->ops[1] = captures[2];
11546 : 3 : res_op->resimplify (lseq, valueize);
11547 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
11548 : 3 : return true;
11549 : : }
11550 : 0 : next_after_fail2234:;
11551 : : }
11552 : : }
11553 : : }
11554 : 58237 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11555 : : {
11556 : 153 : {
11557 : 153 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
11558 : 306 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11559 : 174 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11560 : 21 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11561 : : )
11562 : : {
11563 : 21 : gimple_seq *lseq = seq;
11564 : 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2235;
11565 : 21 : {
11566 : 21 : res_op->set_op (EQ_EXPR, type, 2);
11567 : 21 : res_op->ops[0] = captures[0];
11568 : 21 : res_op->ops[1] = captures[2];
11569 : 21 : res_op->resimplify (lseq, valueize);
11570 : 21 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
11571 : 21 : return true;
11572 : : }
11573 : 0 : next_after_fail2235:;
11574 : : }
11575 : : }
11576 : : }
11577 : 867661 : break;
11578 : : }
11579 : : default:;
11580 : : }
11581 : : }
11582 : : break;
11583 : 867661 : default:;
11584 : : }
11585 : 867661 : switch (TREE_CODE (_q21))
11586 : : {
11587 : 116680 : case SSA_NAME:
11588 : 116680 : if (gimple *_d2 = get_def (valueize, _q21))
11589 : : {
11590 : 114304 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11591 : 101698 : switch (gimple_assign_rhs_code (_a2))
11592 : : {
11593 : 42751 : CASE_CONVERT:
11594 : 42751 : {
11595 : 42751 : tree _q40 = gimple_assign_rhs1 (_a2);
11596 : 42751 : _q40 = do_valueize (valueize, _q40);
11597 : 42751 : switch (TREE_CODE (_p1))
11598 : : {
11599 : 3302 : case SSA_NAME:
11600 : 3302 : if (gimple *_d3 = get_def (valueize, _p1))
11601 : : {
11602 : 2842 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11603 : 2457 : switch (gimple_assign_rhs_code (_a3))
11604 : : {
11605 : 371 : CASE_CONVERT:
11606 : 371 : {
11607 : 371 : tree _q60 = gimple_assign_rhs1 (_a3);
11608 : 371 : _q60 = do_valueize (valueize, _q60);
11609 : 371 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
11610 : : {
11611 : 12 : {
11612 : 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
11613 : 12 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11614 : 8 : return true;
11615 : : }
11616 : : }
11617 : : break;
11618 : : }
11619 : : default:;
11620 : : }
11621 : : }
11622 : : break;
11623 : : default:;
11624 : : }
11625 : : break;
11626 : : }
11627 : : default:;
11628 : : }
11629 : : }
11630 : : break;
11631 : 867653 : default:;
11632 : : }
11633 : 867653 : switch (TREE_CODE (_q20))
11634 : : {
11635 : 867653 : case SSA_NAME:
11636 : 867653 : if (gimple *_d2 = get_def (valueize, _q20))
11637 : : {
11638 : 846951 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11639 : 710777 : switch (gimple_assign_rhs_code (_a2))
11640 : : {
11641 : 104044 : CASE_CONVERT:
11642 : 104044 : {
11643 : 104044 : tree _q30 = gimple_assign_rhs1 (_a2);
11644 : 104044 : _q30 = do_valueize (valueize, _q30);
11645 : 104044 : switch (TREE_CODE (_p1))
11646 : : {
11647 : 60431 : case SSA_NAME:
11648 : 60431 : if (gimple *_d3 = get_def (valueize, _p1))
11649 : : {
11650 : 48478 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11651 : 47457 : switch (gimple_assign_rhs_code (_a3))
11652 : : {
11653 : 24026 : CASE_CONVERT:
11654 : 24026 : {
11655 : 24026 : tree _q60 = gimple_assign_rhs1 (_a3);
11656 : 24026 : _q60 = do_valueize (valueize, _q60);
11657 : 24026 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11658 : : {
11659 : 20 : {
11660 : 20 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
11661 : 20 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11662 : 7 : return true;
11663 : : }
11664 : : }
11665 : : break;
11666 : : }
11667 : : default:;
11668 : : }
11669 : : }
11670 : : break;
11671 : 104037 : default:;
11672 : : }
11673 : 104037 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
11674 : : {
11675 : 0 : {
11676 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
11677 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11678 : 0 : return true;
11679 : : }
11680 : : }
11681 : : break;
11682 : : }
11683 : : default:;
11684 : : }
11685 : : }
11686 : : break;
11687 : 867646 : default:;
11688 : : }
11689 : 867646 : switch (TREE_CODE (_q21))
11690 : : {
11691 : 116671 : case SSA_NAME:
11692 : 116671 : if (gimple *_d2 = get_def (valueize, _q21))
11693 : : {
11694 : 114295 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11695 : 101689 : switch (gimple_assign_rhs_code (_a2))
11696 : : {
11697 : 42743 : CASE_CONVERT:
11698 : 42743 : {
11699 : 42743 : tree _q40 = gimple_assign_rhs1 (_a2);
11700 : 42743 : _q40 = do_valueize (valueize, _q40);
11701 : 42743 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
11702 : : {
11703 : 0 : {
11704 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
11705 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11706 : 0 : return true;
11707 : : }
11708 : : }
11709 : : break;
11710 : : }
11711 : : default:;
11712 : : }
11713 : : }
11714 : : break;
11715 : 867646 : default:;
11716 : : }
11717 : 867646 : switch (TREE_CODE (_p1))
11718 : : {
11719 : 277194 : case SSA_NAME:
11720 : 277194 : if (gimple *_d2 = get_def (valueize, _p1))
11721 : : {
11722 : 254796 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11723 : 334015 : switch (gimple_assign_rhs_code (_a2))
11724 : : {
11725 : 40140 : CASE_CONVERT:
11726 : 40140 : {
11727 : 40140 : tree _q50 = gimple_assign_rhs1 (_a2);
11728 : 40140 : _q50 = do_valueize (valueize, _q50);
11729 : 40140 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11730 : : {
11731 : 0 : {
11732 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
11733 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11734 : 0 : return true;
11735 : : }
11736 : : }
11737 : 40140 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11738 : : {
11739 : 0 : {
11740 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
11741 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11742 : 0 : return true;
11743 : : }
11744 : : }
11745 : : break;
11746 : : }
11747 : : default:;
11748 : : }
11749 : : }
11750 : : break;
11751 : 867646 : default:;
11752 : : }
11753 : 867646 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
11754 : : {
11755 : 57001 : {
11756 : 57001 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
11757 : 57001 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11758 : 4230 : return true;
11759 : : }
11760 : : }
11761 : 863416 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
11762 : : {
11763 : 227 : {
11764 : 227 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
11765 : 227 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
11766 : 178 : return true;
11767 : : }
11768 : : }
11769 : 76495037 : break;
11770 : : }
11771 : 129907 : case POINTER_PLUS_EXPR:
11772 : 129907 : {
11773 : 129907 : tree _q20 = gimple_assign_rhs1 (_a1);
11774 : 129907 : _q20 = do_valueize (valueize, _q20);
11775 : 129907 : tree _q21 = gimple_assign_rhs2 (_a1);
11776 : 129907 : _q21 = do_valueize (valueize, _q21);
11777 : 129907 : switch (TREE_CODE (_p1))
11778 : : {
11779 : 92643 : case SSA_NAME:
11780 : 92643 : if (gimple *_d2 = get_def (valueize, _p1))
11781 : : {
11782 : 91382 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11783 : 110183 : switch (gimple_assign_rhs_code (_a2))
11784 : : {
11785 : 9488 : case POINTER_PLUS_EXPR:
11786 : 9488 : {
11787 : 9488 : tree _q50 = gimple_assign_rhs1 (_a2);
11788 : 9488 : _q50 = do_valueize (valueize, _q50);
11789 : 9488 : tree _q51 = gimple_assign_rhs2 (_a2);
11790 : 9488 : _q51 = do_valueize (valueize, _q51);
11791 : 9488 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11792 : : {
11793 : 1131 : {
11794 : 1131 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
11795 : 1131 : if (gimple_simplify_232 (res_op, seq, valueize, type, captures, EQ_EXPR))
11796 : 1131 : return true;
11797 : : }
11798 : : }
11799 : : break;
11800 : : }
11801 : : default:;
11802 : : }
11803 : : }
11804 : : break;
11805 : 128776 : default:;
11806 : : }
11807 : 128776 : switch (TREE_CODE (_q20))
11808 : : {
11809 : 127277 : case SSA_NAME:
11810 : 127277 : if (gimple *_d2 = get_def (valueize, _q20))
11811 : : {
11812 : 123171 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11813 : 146121 : switch (gimple_assign_rhs_code (_a2))
11814 : : {
11815 : 4036 : CASE_CONVERT:
11816 : 4036 : {
11817 : 4036 : tree _q30 = gimple_assign_rhs1 (_a2);
11818 : 4036 : _q30 = do_valueize (valueize, _q30);
11819 : 4036 : switch (TREE_CODE (_p1))
11820 : : {
11821 : 549 : case SSA_NAME:
11822 : 549 : if (gimple *_d3 = get_def (valueize, _p1))
11823 : : {
11824 : 549 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11825 : 371 : switch (gimple_assign_rhs_code (_a3))
11826 : : {
11827 : 49 : CASE_CONVERT:
11828 : 49 : {
11829 : 49 : tree _q60 = gimple_assign_rhs1 (_a3);
11830 : 49 : _q60 = do_valueize (valueize, _q60);
11831 : 49 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11832 : : {
11833 : 0 : {
11834 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
11835 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
11836 : 0 : return true;
11837 : : }
11838 : : }
11839 : : break;
11840 : : }
11841 : : default:;
11842 : : }
11843 : : }
11844 : : break;
11845 : 4036 : default:;
11846 : : }
11847 : 4036 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
11848 : : {
11849 : 0 : {
11850 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
11851 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
11852 : 0 : return true;
11853 : : }
11854 : : }
11855 : : break;
11856 : : }
11857 : : default:;
11858 : : }
11859 : : }
11860 : : break;
11861 : 128776 : default:;
11862 : : }
11863 : 128776 : switch (TREE_CODE (_p1))
11864 : : {
11865 : 91512 : case SSA_NAME:
11866 : 91512 : if (gimple *_d2 = get_def (valueize, _p1))
11867 : : {
11868 : 90251 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11869 : 109052 : switch (gimple_assign_rhs_code (_a2))
11870 : : {
11871 : 739 : CASE_CONVERT:
11872 : 739 : {
11873 : 739 : tree _q50 = gimple_assign_rhs1 (_a2);
11874 : 739 : _q50 = do_valueize (valueize, _q50);
11875 : 739 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11876 : : {
11877 : 0 : {
11878 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
11879 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
11880 : 0 : return true;
11881 : : }
11882 : : }
11883 : : break;
11884 : : }
11885 : : default:;
11886 : : }
11887 : : }
11888 : : break;
11889 : 128776 : default:;
11890 : : }
11891 : 128776 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
11892 : : {
11893 : 2868 : {
11894 : 2868 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
11895 : 2868 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
11896 : 1026 : return true;
11897 : : }
11898 : : }
11899 : : break;
11900 : : }
11901 : 233589 : case MINUS_EXPR:
11902 : 233589 : {
11903 : 233589 : tree _q20 = gimple_assign_rhs1 (_a1);
11904 : 233589 : _q20 = do_valueize (valueize, _q20);
11905 : 233589 : tree _q21 = gimple_assign_rhs2 (_a1);
11906 : 233589 : _q21 = do_valueize (valueize, _q21);
11907 : 233589 : switch (TREE_CODE (_p1))
11908 : : {
11909 : 43782 : case SSA_NAME:
11910 : 43782 : if (gimple *_d2 = get_def (valueize, _p1))
11911 : : {
11912 : 42581 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11913 : 46021 : switch (gimple_assign_rhs_code (_a2))
11914 : : {
11915 : 1008 : case MINUS_EXPR:
11916 : 1008 : {
11917 : 1008 : tree _q50 = gimple_assign_rhs1 (_a2);
11918 : 1008 : _q50 = do_valueize (valueize, _q50);
11919 : 1008 : tree _q51 = gimple_assign_rhs2 (_a2);
11920 : 1008 : _q51 = do_valueize (valueize, _q51);
11921 : 1008 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11922 : : {
11923 : 254 : {
11924 : 254 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11925 : 508 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11926 : 463 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
11927 : 196 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
11928 : : )
11929 : : {
11930 : 209 : gimple_seq *lseq = seq;
11931 : 209 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2236;
11932 : 209 : {
11933 : 209 : res_op->set_op (EQ_EXPR, type, 2);
11934 : 209 : res_op->ops[0] = captures[0];
11935 : 209 : res_op->ops[1] = captures[2];
11936 : 209 : res_op->resimplify (lseq, valueize);
11937 : 209 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
11938 : 209 : return true;
11939 : : }
11940 : 0 : next_after_fail2236:;
11941 : : }
11942 : : }
11943 : : }
11944 : 799 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11945 : : {
11946 : 45 : {
11947 : 45 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
11948 : 90 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
11949 : 45 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
11950 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
11951 : : )
11952 : : {
11953 : 0 : gimple_seq *lseq = seq;
11954 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2237;
11955 : 0 : {
11956 : 0 : res_op->set_op (EQ_EXPR, type, 2);
11957 : 0 : res_op->ops[0] = captures[2];
11958 : 0 : res_op->ops[1] = captures[1];
11959 : 0 : res_op->resimplify (lseq, valueize);
11960 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
11961 : 0 : return true;
11962 : : }
11963 : 0 : next_after_fail2237:;
11964 : : }
11965 : : }
11966 : : }
11967 : : break;
11968 : : }
11969 : : default:;
11970 : : }
11971 : : }
11972 : : break;
11973 : 233380 : default:;
11974 : : }
11975 : 233380 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
11976 : : {
11977 : 146 : {
11978 : 146 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
11979 : 146 : if (gimple_simplify_234 (res_op, seq, valueize, type, captures, EQ_EXPR))
11980 : 50 : return true;
11981 : : }
11982 : : }
11983 : : break;
11984 : : }
11985 : 99907 : case POINTER_DIFF_EXPR:
11986 : 99907 : {
11987 : 99907 : tree _q20 = gimple_assign_rhs1 (_a1);
11988 : 99907 : _q20 = do_valueize (valueize, _q20);
11989 : 99907 : tree _q21 = gimple_assign_rhs2 (_a1);
11990 : 99907 : _q21 = do_valueize (valueize, _q21);
11991 : 99907 : switch (TREE_CODE (_p1))
11992 : : {
11993 : 26752 : case SSA_NAME:
11994 : 26752 : if (gimple *_d2 = get_def (valueize, _p1))
11995 : : {
11996 : 26718 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11997 : 26336 : switch (gimple_assign_rhs_code (_a2))
11998 : : {
11999 : 2948 : case POINTER_DIFF_EXPR:
12000 : 2948 : {
12001 : 2948 : tree _q50 = gimple_assign_rhs1 (_a2);
12002 : 2948 : _q50 = do_valueize (valueize, _q50);
12003 : 2948 : tree _q51 = gimple_assign_rhs2 (_a2);
12004 : 2948 : _q51 = do_valueize (valueize, _q51);
12005 : 2948 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12006 : : {
12007 : 253 : {
12008 : 253 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
12009 : 253 : if (gimple_simplify_235 (res_op, seq, valueize, type, captures, EQ_EXPR))
12010 : 253 : return true;
12011 : : }
12012 : : }
12013 : 2695 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12014 : : {
12015 : 0 : {
12016 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
12017 : 0 : if (gimple_simplify_236 (res_op, seq, valueize, type, captures, EQ_EXPR))
12018 : 0 : return true;
12019 : : }
12020 : : }
12021 : : break;
12022 : : }
12023 : : default:;
12024 : : }
12025 : : }
12026 : : break;
12027 : : default:;
12028 : : }
12029 : : break;
12030 : : }
12031 : : default:;
12032 : : }
12033 : : }
12034 : : break;
12035 : 76495037 : default:;
12036 : : }
12037 : 76495037 : {
12038 : 76495037 : tree _p0_pops[1];
12039 : 76495037 : if (gimple_logical_inverted_value (_p0, _p0_pops, valueize))
12040 : : {
12041 : 556 : tree _q20 = _p0_pops[0];
12042 : 556 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12043 : : {
12044 : 0 : if (gimple_truth_valued_p (_p1, valueize))
12045 : : {
12046 : 0 : {
12047 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
12048 : 0 : if (gimple_simplify_224 (res_op, seq, valueize, type, captures, EQ_EXPR))
12049 : 0 : return true;
12050 : : }
12051 : : }
12052 : : }
12053 : : }
12054 : : }
12055 : 76495037 : {
12056 : 76495037 : tree _p0_pops[1];
12057 : 76495037 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
12058 : : {
12059 : 440879 : tree _q20 = _p0_pops[0];
12060 : 440879 : switch (TREE_CODE (_q20))
12061 : : {
12062 : 427660 : case SSA_NAME:
12063 : 427660 : if (gimple *_d1 = get_def (valueize, _q20))
12064 : : {
12065 : 423020 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12066 : 446724 : switch (gimple_assign_rhs_code (_a1))
12067 : : {
12068 : 34954 : case PLUS_EXPR:
12069 : 34954 : {
12070 : 34954 : tree _q30 = gimple_assign_rhs1 (_a1);
12071 : 34954 : _q30 = do_valueize (valueize, _q30);
12072 : 34954 : tree _q31 = gimple_assign_rhs2 (_a1);
12073 : 34954 : _q31 = do_valueize (valueize, _q31);
12074 : 34954 : if (tree_swap_operands_p (_q30, _q31))
12075 : 179 : std::swap (_q30, _q31);
12076 : 34954 : switch (TREE_CODE (_q31))
12077 : : {
12078 : 10131 : case SSA_NAME:
12079 : 10131 : if (gimple *_d2 = get_def (valueize, _q31))
12080 : : {
12081 : 10069 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12082 : 9992 : switch (gimple_assign_rhs_code (_a2))
12083 : : {
12084 : 1770 : CASE_CONVERT:
12085 : 1770 : {
12086 : 1770 : tree _q50 = gimple_assign_rhs1 (_a2);
12087 : 1770 : _q50 = do_valueize (valueize, _q50);
12088 : 1770 : switch (TREE_CODE (_p1))
12089 : : {
12090 : 581 : case SSA_NAME:
12091 : 581 : if (gimple *_d3 = get_def (valueize, _p1))
12092 : : {
12093 : 546 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12094 : 608 : switch (gimple_assign_rhs_code (_a3))
12095 : : {
12096 : 177 : CASE_CONVERT:
12097 : 177 : {
12098 : 177 : tree _q70 = gimple_assign_rhs1 (_a3);
12099 : 177 : _q70 = do_valueize (valueize, _q70);
12100 : 177 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
12101 : : {
12102 : 0 : {
12103 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
12104 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12105 : 0 : return true;
12106 : : }
12107 : : }
12108 : : break;
12109 : : }
12110 : : default:;
12111 : : }
12112 : : }
12113 : : break;
12114 : : default:;
12115 : : }
12116 : : break;
12117 : : }
12118 : : default:;
12119 : : }
12120 : : }
12121 : : break;
12122 : 34954 : default:;
12123 : : }
12124 : 34954 : switch (TREE_CODE (_q30))
12125 : : {
12126 : 34954 : case SSA_NAME:
12127 : 34954 : if (gimple *_d2 = get_def (valueize, _q30))
12128 : : {
12129 : 32373 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12130 : 30727 : switch (gimple_assign_rhs_code (_a2))
12131 : : {
12132 : 19750 : CASE_CONVERT:
12133 : 19750 : {
12134 : 19750 : tree _q40 = gimple_assign_rhs1 (_a2);
12135 : 19750 : _q40 = do_valueize (valueize, _q40);
12136 : 19750 : switch (TREE_CODE (_p1))
12137 : : {
12138 : 12407 : case SSA_NAME:
12139 : 12407 : if (gimple *_d3 = get_def (valueize, _p1))
12140 : : {
12141 : 11667 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12142 : 20660 : switch (gimple_assign_rhs_code (_a3))
12143 : : {
12144 : 93 : CASE_CONVERT:
12145 : 93 : {
12146 : 93 : tree _q70 = gimple_assign_rhs1 (_a3);
12147 : 93 : _q70 = do_valueize (valueize, _q70);
12148 : 93 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12149 : : {
12150 : 0 : {
12151 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
12152 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12153 : 0 : return true;
12154 : : }
12155 : : }
12156 : : break;
12157 : : }
12158 : : default:;
12159 : : }
12160 : : }
12161 : : break;
12162 : 19750 : default:;
12163 : : }
12164 : 19750 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
12165 : : {
12166 : 31 : {
12167 : 31 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
12168 : 31 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12169 : 4 : return true;
12170 : : }
12171 : : }
12172 : : break;
12173 : : }
12174 : : default:;
12175 : : }
12176 : : }
12177 : : break;
12178 : 34950 : default:;
12179 : : }
12180 : 34950 : switch (TREE_CODE (_q31))
12181 : : {
12182 : 10131 : case SSA_NAME:
12183 : 10131 : if (gimple *_d2 = get_def (valueize, _q31))
12184 : : {
12185 : 10069 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12186 : 9992 : switch (gimple_assign_rhs_code (_a2))
12187 : : {
12188 : 1770 : CASE_CONVERT:
12189 : 1770 : {
12190 : 1770 : tree _q50 = gimple_assign_rhs1 (_a2);
12191 : 1770 : _q50 = do_valueize (valueize, _q50);
12192 : 1770 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
12193 : : {
12194 : 88 : {
12195 : 88 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
12196 : 88 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12197 : 0 : return true;
12198 : : }
12199 : : }
12200 : : break;
12201 : : }
12202 : : default:;
12203 : : }
12204 : : }
12205 : : break;
12206 : 34950 : default:;
12207 : : }
12208 : 34950 : switch (TREE_CODE (_p1))
12209 : : {
12210 : 17275 : case SSA_NAME:
12211 : 17275 : if (gimple *_d2 = get_def (valueize, _p1))
12212 : : {
12213 : 14420 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12214 : 22079 : switch (gimple_assign_rhs_code (_a2))
12215 : : {
12216 : 557 : CASE_CONVERT:
12217 : 557 : {
12218 : 557 : tree _q60 = gimple_assign_rhs1 (_a2);
12219 : 557 : _q60 = do_valueize (valueize, _q60);
12220 : 557 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
12221 : : {
12222 : 0 : {
12223 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
12224 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12225 : 0 : return true;
12226 : : }
12227 : : }
12228 : 557 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12229 : : {
12230 : 0 : {
12231 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
12232 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12233 : 0 : return true;
12234 : : }
12235 : : }
12236 : : break;
12237 : : }
12238 : : default:;
12239 : : }
12240 : : }
12241 : : break;
12242 : 34950 : default:;
12243 : : }
12244 : 34950 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
12245 : : {
12246 : 0 : {
12247 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
12248 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12249 : 0 : return true;
12250 : : }
12251 : : }
12252 : 34950 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12253 : : {
12254 : 0 : {
12255 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
12256 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12257 : 0 : return true;
12258 : : }
12259 : : }
12260 : 76495032 : break;
12261 : : }
12262 : 41 : case POINTER_PLUS_EXPR:
12263 : 41 : {
12264 : 41 : tree _q30 = gimple_assign_rhs1 (_a1);
12265 : 41 : _q30 = do_valueize (valueize, _q30);
12266 : 41 : tree _q31 = gimple_assign_rhs2 (_a1);
12267 : 41 : _q31 = do_valueize (valueize, _q31);
12268 : 41 : switch (TREE_CODE (_q30))
12269 : : {
12270 : 41 : case SSA_NAME:
12271 : 41 : if (gimple *_d2 = get_def (valueize, _q30))
12272 : : {
12273 : 41 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12274 : 15 : switch (gimple_assign_rhs_code (_a2))
12275 : : {
12276 : 15 : CASE_CONVERT:
12277 : 15 : {
12278 : 15 : tree _q40 = gimple_assign_rhs1 (_a2);
12279 : 15 : _q40 = do_valueize (valueize, _q40);
12280 : 15 : switch (TREE_CODE (_p1))
12281 : : {
12282 : 0 : case SSA_NAME:
12283 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
12284 : : {
12285 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12286 : 0 : switch (gimple_assign_rhs_code (_a3))
12287 : : {
12288 : 0 : CASE_CONVERT:
12289 : 0 : {
12290 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
12291 : 0 : _q70 = do_valueize (valueize, _q70);
12292 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12293 : : {
12294 : 0 : {
12295 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
12296 : 0 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12297 : 0 : return true;
12298 : : }
12299 : : }
12300 : : break;
12301 : : }
12302 : : default:;
12303 : : }
12304 : : }
12305 : : break;
12306 : 15 : default:;
12307 : : }
12308 : 15 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
12309 : : {
12310 : 0 : {
12311 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
12312 : 0 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12313 : 0 : return true;
12314 : : }
12315 : : }
12316 : : break;
12317 : : }
12318 : : default:;
12319 : : }
12320 : : }
12321 : : break;
12322 : 41 : default:;
12323 : : }
12324 : 41 : switch (TREE_CODE (_p1))
12325 : : {
12326 : 15 : case SSA_NAME:
12327 : 15 : if (gimple *_d2 = get_def (valueize, _p1))
12328 : : {
12329 : 15 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12330 : 15 : switch (gimple_assign_rhs_code (_a2))
12331 : : {
12332 : 11 : CASE_CONVERT:
12333 : 11 : {
12334 : 11 : tree _q60 = gimple_assign_rhs1 (_a2);
12335 : 11 : _q60 = do_valueize (valueize, _q60);
12336 : 11 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12337 : : {
12338 : 2 : {
12339 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
12340 : 2 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12341 : 1 : return true;
12342 : : }
12343 : : }
12344 : : break;
12345 : : }
12346 : : default:;
12347 : : }
12348 : : }
12349 : : break;
12350 : 40 : default:;
12351 : : }
12352 : 40 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12353 : : {
12354 : 0 : {
12355 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
12356 : 0 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12357 : 0 : return true;
12358 : : }
12359 : : }
12360 : : break;
12361 : : }
12362 : : default:;
12363 : : }
12364 : : }
12365 : : break;
12366 : : default:;
12367 : : }
12368 : : }
12369 : : }
12370 : 76495032 : if (gimple_truth_valued_p (_p0, valueize))
12371 : : {
12372 : 244495 : switch (TREE_CODE (_p1))
12373 : : {
12374 : 148403 : case SSA_NAME:
12375 : 148403 : if (gimple *_d1 = get_def (valueize, _p1))
12376 : : {
12377 : 69619 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12378 : 95335 : switch (gimple_assign_rhs_code (_a1))
12379 : : {
12380 : 47 : case BIT_NOT_EXPR:
12381 : 47 : {
12382 : 47 : tree _q30 = gimple_assign_rhs1 (_a1);
12383 : 47 : _q30 = do_valueize (valueize, _q30);
12384 : 47 : if (gimple_truth_valued_p (_q30, valueize))
12385 : : {
12386 : 47 : {
12387 : 47 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
12388 : 47 : if (gimple_simplify_225 (res_op, seq, valueize, type, captures))
12389 : 47 : return true;
12390 : : }
12391 : : }
12392 : : break;
12393 : : }
12394 : : default:;
12395 : : }
12396 : : }
12397 : : break;
12398 : 244448 : default:;
12399 : : }
12400 : 244448 : {
12401 : 244448 : tree _p1_pops[1];
12402 : 244448 : if (gimple_logical_inverted_value (_p1, _p1_pops, valueize))
12403 : : {
12404 : 103 : tree _q30 = _p1_pops[0];
12405 : 103 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12406 : : {
12407 : 0 : {
12408 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
12409 : 0 : if (gimple_simplify_224 (res_op, seq, valueize, type, captures, EQ_EXPR))
12410 : 0 : return true;
12411 : : }
12412 : : }
12413 : : }
12414 : : }
12415 : : }
12416 : 76494985 : switch (TREE_CODE (_p1))
12417 : : {
12418 : 11859416 : case SSA_NAME:
12419 : 11859416 : if (gimple *_d1 = get_def (valueize, _p1))
12420 : : {
12421 : 3969021 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12422 : 5757735 : switch (gimple_assign_rhs_code (_a1))
12423 : : {
12424 : 177581 : case PLUS_EXPR:
12425 : 177581 : {
12426 : 177581 : tree _q30 = gimple_assign_rhs1 (_a1);
12427 : 177581 : _q30 = do_valueize (valueize, _q30);
12428 : 177581 : tree _q31 = gimple_assign_rhs2 (_a1);
12429 : 177581 : _q31 = do_valueize (valueize, _q31);
12430 : 177581 : if (tree_swap_operands_p (_q30, _q31))
12431 : 2100 : std::swap (_q30, _q31);
12432 : 177581 : switch (TREE_CODE (_q31))
12433 : : {
12434 : 23849 : case SSA_NAME:
12435 : 23849 : if (gimple *_d2 = get_def (valueize, _q31))
12436 : : {
12437 : 22190 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12438 : 21201 : switch (gimple_assign_rhs_code (_a2))
12439 : : {
12440 : 3416 : CASE_CONVERT:
12441 : 3416 : {
12442 : 3416 : tree _q50 = gimple_assign_rhs1 (_a2);
12443 : 3416 : _q50 = do_valueize (valueize, _q50);
12444 : 3416 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
12445 : : {
12446 : 0 : {
12447 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
12448 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
12449 : 0 : return true;
12450 : : }
12451 : : }
12452 : : break;
12453 : : }
12454 : : default:;
12455 : : }
12456 : : }
12457 : : break;
12458 : 177581 : default:;
12459 : : }
12460 : 177581 : switch (TREE_CODE (_q30))
12461 : : {
12462 : 177581 : case SSA_NAME:
12463 : 177581 : if (gimple *_d2 = get_def (valueize, _q30))
12464 : : {
12465 : 166412 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12466 : 142385 : switch (gimple_assign_rhs_code (_a2))
12467 : : {
12468 : 55700 : CASE_CONVERT:
12469 : 55700 : {
12470 : 55700 : tree _q40 = gimple_assign_rhs1 (_a2);
12471 : 55700 : _q40 = do_valueize (valueize, _q40);
12472 : 55700 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
12473 : : {
12474 : 0 : {
12475 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
12476 : 0 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
12477 : 0 : return true;
12478 : : }
12479 : : }
12480 : : break;
12481 : : }
12482 : : default:;
12483 : : }
12484 : : }
12485 : : break;
12486 : 177581 : default:;
12487 : : }
12488 : 177581 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
12489 : : {
12490 : 15 : {
12491 : 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
12492 : 15 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
12493 : 15 : return true;
12494 : : }
12495 : : }
12496 : 177566 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12497 : : {
12498 : 130 : {
12499 : 130 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
12500 : 130 : if (gimple_simplify_230 (res_op, seq, valueize, type, captures, EQ_EXPR))
12501 : 36 : return true;
12502 : : }
12503 : : }
12504 : 76494934 : break;
12505 : : }
12506 : : default:;
12507 : : }
12508 : : }
12509 : : break;
12510 : 76494934 : default:;
12511 : : }
12512 : 76494934 : {
12513 : 76494934 : tree _p1_pops[1];
12514 : 76494934 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
12515 : : {
12516 : 158250 : tree _q30 = _p1_pops[0];
12517 : 158250 : switch (TREE_CODE (_q30))
12518 : : {
12519 : 135300 : case SSA_NAME:
12520 : 135300 : if (gimple *_d1 = get_def (valueize, _q30))
12521 : : {
12522 : 132793 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12523 : 170707 : switch (gimple_assign_rhs_code (_a1))
12524 : : {
12525 : 45383 : case PLUS_EXPR:
12526 : 45383 : {
12527 : 45383 : tree _q40 = gimple_assign_rhs1 (_a1);
12528 : 45383 : _q40 = do_valueize (valueize, _q40);
12529 : 45383 : tree _q41 = gimple_assign_rhs2 (_a1);
12530 : 45383 : _q41 = do_valueize (valueize, _q41);
12531 : 45383 : if (tree_swap_operands_p (_q40, _q41))
12532 : 150 : std::swap (_q40, _q41);
12533 : 45383 : switch (TREE_CODE (_q41))
12534 : : {
12535 : 2450 : case SSA_NAME:
12536 : 2450 : if (gimple *_d2 = get_def (valueize, _q41))
12537 : : {
12538 : 2350 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12539 : 2279 : switch (gimple_assign_rhs_code (_a2))
12540 : : {
12541 : 970 : CASE_CONVERT:
12542 : 970 : {
12543 : 970 : tree _q60 = gimple_assign_rhs1 (_a2);
12544 : 970 : _q60 = do_valueize (valueize, _q60);
12545 : 970 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
12546 : : {
12547 : 201 : {
12548 : 201 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
12549 : 201 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12550 : 1 : return true;
12551 : : }
12552 : : }
12553 : : break;
12554 : : }
12555 : : default:;
12556 : : }
12557 : : }
12558 : : break;
12559 : 45382 : default:;
12560 : : }
12561 : 45382 : switch (TREE_CODE (_q40))
12562 : : {
12563 : 45382 : case SSA_NAME:
12564 : 45382 : if (gimple *_d2 = get_def (valueize, _q40))
12565 : : {
12566 : 40419 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12567 : 37846 : switch (gimple_assign_rhs_code (_a2))
12568 : : {
12569 : 34671 : CASE_CONVERT:
12570 : 34671 : {
12571 : 34671 : tree _q50 = gimple_assign_rhs1 (_a2);
12572 : 34671 : _q50 = do_valueize (valueize, _q50);
12573 : 34671 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
12574 : : {
12575 : 45 : {
12576 : 45 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
12577 : 45 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12578 : 4 : return true;
12579 : : }
12580 : : }
12581 : : break;
12582 : : }
12583 : : default:;
12584 : : }
12585 : : }
12586 : : break;
12587 : 45378 : default:;
12588 : : }
12589 : 45378 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
12590 : : {
12591 : 0 : {
12592 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
12593 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12594 : 0 : return true;
12595 : : }
12596 : : }
12597 : 45378 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
12598 : : {
12599 : 0 : {
12600 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
12601 : 0 : if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR))
12602 : 0 : return true;
12603 : : }
12604 : : }
12605 : 76494929 : break;
12606 : : }
12607 : : default:;
12608 : : }
12609 : : }
12610 : : break;
12611 : : default:;
12612 : : }
12613 : : }
12614 : : }
12615 : 76494929 : switch (TREE_CODE (_p0))
12616 : : {
12617 : 75657233 : case SSA_NAME:
12618 : 75657233 : if (gimple *_d1 = get_def (valueize, _p0))
12619 : : {
12620 : 26005096 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12621 : 31459424 : switch (gimple_assign_rhs_code (_a1))
12622 : : {
12623 : 737891 : CASE_CONVERT:
12624 : 737891 : {
12625 : 737891 : tree _q20 = gimple_assign_rhs1 (_a1);
12626 : 737891 : _q20 = do_valueize (valueize, _q20);
12627 : 737891 : switch (TREE_CODE (_p1))
12628 : : {
12629 : 167985 : case SSA_NAME:
12630 : 167985 : if (gimple *_d2 = get_def (valueize, _p1))
12631 : : {
12632 : 158970 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12633 : 171605 : switch (gimple_assign_rhs_code (_a2))
12634 : : {
12635 : 438 : case POINTER_PLUS_EXPR:
12636 : 438 : {
12637 : 438 : tree _q40 = gimple_assign_rhs1 (_a2);
12638 : 438 : _q40 = do_valueize (valueize, _q40);
12639 : 438 : tree _q41 = gimple_assign_rhs2 (_a2);
12640 : 438 : _q41 = do_valueize (valueize, _q41);
12641 : 438 : switch (TREE_CODE (_q40))
12642 : : {
12643 : 419 : case SSA_NAME:
12644 : 419 : if (gimple *_d3 = get_def (valueize, _q40))
12645 : : {
12646 : 340 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12647 : 259 : switch (gimple_assign_rhs_code (_a3))
12648 : : {
12649 : 63 : CASE_CONVERT:
12650 : 63 : {
12651 : 63 : tree _q50 = gimple_assign_rhs1 (_a3);
12652 : 63 : _q50 = do_valueize (valueize, _q50);
12653 : 63 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12654 : : {
12655 : 0 : {
12656 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
12657 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
12658 : 0 : return true;
12659 : : }
12660 : : }
12661 : : break;
12662 : : }
12663 : : default:;
12664 : : }
12665 : : }
12666 : : break;
12667 : 438 : default:;
12668 : : }
12669 : 438 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12670 : : {
12671 : 0 : {
12672 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
12673 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
12674 : 0 : return true;
12675 : : }
12676 : : }
12677 : : break;
12678 : : }
12679 : : default:;
12680 : : }
12681 : : }
12682 : : break;
12683 : 737891 : default:;
12684 : : }
12685 : 737891 : {
12686 : 737891 : tree _p1_pops[1];
12687 : 737891 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
12688 : : {
12689 : 34549 : tree _q40 = _p1_pops[0];
12690 : 34549 : switch (TREE_CODE (_q40))
12691 : : {
12692 : 17219 : case SSA_NAME:
12693 : 17219 : if (gimple *_d2 = get_def (valueize, _q40))
12694 : : {
12695 : 17089 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12696 : 22472 : switch (gimple_assign_rhs_code (_a2))
12697 : : {
12698 : 9 : case POINTER_PLUS_EXPR:
12699 : 9 : {
12700 : 9 : tree _q50 = gimple_assign_rhs1 (_a2);
12701 : 9 : _q50 = do_valueize (valueize, _q50);
12702 : 9 : tree _q51 = gimple_assign_rhs2 (_a2);
12703 : 9 : _q51 = do_valueize (valueize, _q51);
12704 : 9 : switch (TREE_CODE (_q50))
12705 : : {
12706 : 9 : case SSA_NAME:
12707 : 9 : if (gimple *_d3 = get_def (valueize, _q50))
12708 : : {
12709 : 9 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12710 : 0 : switch (gimple_assign_rhs_code (_a3))
12711 : : {
12712 : 0 : CASE_CONVERT:
12713 : 0 : {
12714 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
12715 : 0 : _q60 = do_valueize (valueize, _q60);
12716 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
12717 : : {
12718 : 0 : {
12719 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
12720 : 0 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12721 : 0 : return true;
12722 : : }
12723 : : }
12724 : : break;
12725 : : }
12726 : : default:;
12727 : : }
12728 : : }
12729 : : break;
12730 : 9 : default:;
12731 : : }
12732 : 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12733 : : {
12734 : 0 : {
12735 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
12736 : 0 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12737 : 0 : return true;
12738 : : }
12739 : : }
12740 : : break;
12741 : : }
12742 : : default:;
12743 : : }
12744 : : }
12745 : : break;
12746 : : default:;
12747 : : }
12748 : : }
12749 : : }
12750 : 737891 : break;
12751 : : }
12752 : : default:;
12753 : : }
12754 : : }
12755 : : break;
12756 : 76494929 : default:;
12757 : : }
12758 : 76494929 : switch (TREE_CODE (_p1))
12759 : : {
12760 : 11859360 : case SSA_NAME:
12761 : 11859360 : if (gimple *_d1 = get_def (valueize, _p1))
12762 : : {
12763 : 3968965 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12764 : 5757679 : switch (gimple_assign_rhs_code (_a1))
12765 : : {
12766 : 107676 : case POINTER_PLUS_EXPR:
12767 : 107676 : {
12768 : 107676 : tree _q30 = gimple_assign_rhs1 (_a1);
12769 : 107676 : _q30 = do_valueize (valueize, _q30);
12770 : 107676 : tree _q31 = gimple_assign_rhs2 (_a1);
12771 : 107676 : _q31 = do_valueize (valueize, _q31);
12772 : 107676 : switch (TREE_CODE (_q30))
12773 : : {
12774 : 107486 : case SSA_NAME:
12775 : 107486 : if (gimple *_d2 = get_def (valueize, _q30))
12776 : : {
12777 : 102824 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12778 : 106691 : switch (gimple_assign_rhs_code (_a2))
12779 : : {
12780 : 212 : CASE_CONVERT:
12781 : 212 : {
12782 : 212 : tree _q40 = gimple_assign_rhs1 (_a2);
12783 : 212 : _q40 = do_valueize (valueize, _q40);
12784 : 212 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
12785 : : {
12786 : 0 : {
12787 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
12788 : 0 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
12789 : 0 : return true;
12790 : : }
12791 : : }
12792 : : break;
12793 : : }
12794 : : default:;
12795 : : }
12796 : : }
12797 : : break;
12798 : 107676 : default:;
12799 : : }
12800 : 107676 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12801 : : {
12802 : 4209 : {
12803 : 4209 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
12804 : 4209 : if (gimple_simplify_233 (res_op, seq, valueize, type, captures, EQ_EXPR))
12805 : 1490 : return true;
12806 : : }
12807 : : }
12808 : : break;
12809 : : }
12810 : : default:;
12811 : : }
12812 : : }
12813 : : break;
12814 : 76493439 : default:;
12815 : : }
12816 : 76493439 : {
12817 : 76493439 : tree _p1_pops[1];
12818 : 76493439 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
12819 : : {
12820 : 158245 : tree _q30 = _p1_pops[0];
12821 : 158245 : switch (TREE_CODE (_q30))
12822 : : {
12823 : 135295 : case SSA_NAME:
12824 : 135295 : if (gimple *_d1 = get_def (valueize, _q30))
12825 : : {
12826 : 132788 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12827 : 170702 : switch (gimple_assign_rhs_code (_a1))
12828 : : {
12829 : 9 : case POINTER_PLUS_EXPR:
12830 : 9 : {
12831 : 9 : tree _q40 = gimple_assign_rhs1 (_a1);
12832 : 9 : _q40 = do_valueize (valueize, _q40);
12833 : 9 : tree _q41 = gimple_assign_rhs2 (_a1);
12834 : 9 : _q41 = do_valueize (valueize, _q41);
12835 : 9 : switch (TREE_CODE (_q40))
12836 : : {
12837 : 9 : case SSA_NAME:
12838 : 9 : if (gimple *_d2 = get_def (valueize, _q40))
12839 : : {
12840 : 9 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12841 : 0 : switch (gimple_assign_rhs_code (_a2))
12842 : : {
12843 : 0 : CASE_CONVERT:
12844 : 0 : {
12845 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
12846 : 0 : _q50 = do_valueize (valueize, _q50);
12847 : 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
12848 : : {
12849 : 0 : {
12850 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
12851 : 0 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12852 : 0 : return true;
12853 : : }
12854 : : }
12855 : : break;
12856 : : }
12857 : : default:;
12858 : : }
12859 : : }
12860 : : break;
12861 : 9 : default:;
12862 : : }
12863 : 9 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
12864 : : {
12865 : 0 : {
12866 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
12867 : 0 : if (gimple_simplify_237 (res_op, seq, valueize, type, captures, EQ_EXPR))
12868 : 0 : return true;
12869 : : }
12870 : : }
12871 : : break;
12872 : : }
12873 : : default:;
12874 : : }
12875 : : }
12876 : : break;
12877 : : default:;
12878 : : }
12879 : : }
12880 : : }
12881 : 76493439 : switch (TREE_CODE (_p0))
12882 : : {
12883 : 75655743 : case SSA_NAME:
12884 : 75655743 : if (gimple *_d1 = get_def (valueize, _p0))
12885 : : {
12886 : 26003692 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12887 : 31458091 : switch (gimple_assign_rhs_code (_a1))
12888 : : {
12889 : 127613 : case POINTER_PLUS_EXPR:
12890 : 127613 : {
12891 : 127613 : tree _q20 = gimple_assign_rhs1 (_a1);
12892 : 127613 : _q20 = do_valueize (valueize, _q20);
12893 : 127613 : tree _q21 = gimple_assign_rhs2 (_a1);
12894 : 127613 : _q21 = do_valueize (valueize, _q21);
12895 : 127613 : switch (TREE_CODE (_p1))
12896 : : {
12897 : 90854 : case SSA_NAME:
12898 : 90854 : if (gimple *_d2 = get_def (valueize, _p1))
12899 : : {
12900 : 89599 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12901 : 108541 : switch (gimple_assign_rhs_code (_a2))
12902 : : {
12903 : 998 : case ADDR_EXPR:
12904 : 998 : {
12905 : 998 : {
12906 : 998 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
12907 : 998 : if (gimple_simplify_238 (res_op, seq, valueize, type, captures, EQ_EXPR))
12908 : 74 : return true;
12909 : : }
12910 : 924 : break;
12911 : : }
12912 : : default:;
12913 : : }
12914 : : }
12915 : : break;
12916 : 30369 : case ADDR_EXPR:
12917 : 30369 : {
12918 : 30369 : {
12919 : 30369 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
12920 : 30369 : if (gimple_simplify_238 (res_op, seq, valueize, type, captures, EQ_EXPR))
12921 : 281 : return true;
12922 : : }
12923 : 30088 : break;
12924 : : }
12925 : 127258 : default:;
12926 : : }
12927 : 127258 : switch (TREE_CODE (_q20))
12928 : : {
12929 : 126545 : case SSA_NAME:
12930 : 126545 : if (gimple *_d2 = get_def (valueize, _q20))
12931 : : {
12932 : 122446 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12933 : 145701 : switch (gimple_assign_rhs_code (_a2))
12934 : : {
12935 : 122 : case ADDR_EXPR:
12936 : 122 : {
12937 : 122 : switch (TREE_CODE (_p1))
12938 : : {
12939 : 122 : case SSA_NAME:
12940 : 122 : if (gimple *_d3 = get_def (valueize, _p1))
12941 : : {
12942 : 122 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12943 : 172 : switch (gimple_assign_rhs_code (_a3))
12944 : : {
12945 : 72 : case POINTER_PLUS_EXPR:
12946 : 72 : {
12947 : 72 : tree _q50 = gimple_assign_rhs1 (_a3);
12948 : 72 : _q50 = do_valueize (valueize, _q50);
12949 : 72 : tree _q51 = gimple_assign_rhs2 (_a3);
12950 : 72 : _q51 = do_valueize (valueize, _q51);
12951 : 72 : switch (TREE_CODE (_q50))
12952 : : {
12953 : 72 : case SSA_NAME:
12954 : 72 : if (gimple *_d4 = get_def (valueize, _q50))
12955 : : {
12956 : 40 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
12957 : 16 : switch (gimple_assign_rhs_code (_a4))
12958 : : {
12959 : 8 : case ADDR_EXPR:
12960 : 8 : {
12961 : 8 : {
12962 : 8 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
12963 : 8 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, EQ_EXPR))
12964 : 4 : return true;
12965 : : }
12966 : 4 : break;
12967 : : }
12968 : : default:;
12969 : : }
12970 : : }
12971 : : break;
12972 : 0 : case ADDR_EXPR:
12973 : 0 : {
12974 : 0 : {
12975 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
12976 : 0 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, EQ_EXPR))
12977 : 0 : return true;
12978 : : }
12979 : 0 : break;
12980 : : }
12981 : : default:;
12982 : : }
12983 : : break;
12984 : : }
12985 : : default:;
12986 : : }
12987 : : }
12988 : : break;
12989 : : default:;
12990 : : }
12991 : : break;
12992 : : }
12993 : : default:;
12994 : : }
12995 : : }
12996 : : break;
12997 : 713 : case ADDR_EXPR:
12998 : 713 : {
12999 : 713 : switch (TREE_CODE (_p1))
13000 : : {
13001 : 695 : case SSA_NAME:
13002 : 695 : if (gimple *_d2 = get_def (valueize, _p1))
13003 : : {
13004 : 686 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13005 : 782 : switch (gimple_assign_rhs_code (_a2))
13006 : : {
13007 : 120 : case POINTER_PLUS_EXPR:
13008 : 120 : {
13009 : 120 : tree _q50 = gimple_assign_rhs1 (_a2);
13010 : 120 : _q50 = do_valueize (valueize, _q50);
13011 : 120 : tree _q51 = gimple_assign_rhs2 (_a2);
13012 : 120 : _q51 = do_valueize (valueize, _q51);
13013 : 120 : switch (TREE_CODE (_q50))
13014 : : {
13015 : 120 : case SSA_NAME:
13016 : 120 : if (gimple *_d3 = get_def (valueize, _q50))
13017 : : {
13018 : 120 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13019 : 8 : switch (gimple_assign_rhs_code (_a3))
13020 : : {
13021 : 0 : case ADDR_EXPR:
13022 : 0 : {
13023 : 0 : {
13024 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
13025 : 0 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, EQ_EXPR))
13026 : 0 : return true;
13027 : : }
13028 : 0 : break;
13029 : : }
13030 : : default:;
13031 : : }
13032 : : }
13033 : : break;
13034 : 0 : case ADDR_EXPR:
13035 : 0 : {
13036 : 0 : {
13037 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
13038 : 0 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, EQ_EXPR))
13039 : 0 : return true;
13040 : : }
13041 : 0 : break;
13042 : : }
13043 : : default:;
13044 : : }
13045 : : break;
13046 : : }
13047 : : default:;
13048 : : }
13049 : : }
13050 : : break;
13051 : : default:;
13052 : : }
13053 : : break;
13054 : : }
13055 : : default:;
13056 : : }
13057 : : break;
13058 : : }
13059 : 156298 : case ADDR_EXPR:
13060 : 156298 : {
13061 : 156298 : switch (TREE_CODE (_p1))
13062 : : {
13063 : 123370 : case SSA_NAME:
13064 : 123370 : if (gimple *_d2 = get_def (valueize, _p1))
13065 : : {
13066 : 119809 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13067 : 203888 : switch (gimple_assign_rhs_code (_a2))
13068 : : {
13069 : 178 : case POINTER_PLUS_EXPR:
13070 : 178 : {
13071 : 178 : tree _q30 = gimple_assign_rhs1 (_a2);
13072 : 178 : _q30 = do_valueize (valueize, _q30);
13073 : 178 : tree _q31 = gimple_assign_rhs2 (_a2);
13074 : 178 : _q31 = do_valueize (valueize, _q31);
13075 : 178 : {
13076 : 178 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
13077 : 178 : if (gimple_simplify_238 (res_op, seq, valueize, type, captures, EQ_EXPR))
13078 : 69 : return true;
13079 : : }
13080 : 109 : break;
13081 : : }
13082 : : default:;
13083 : : }
13084 : : }
13085 : : break;
13086 : : default:;
13087 : : }
13088 : : break;
13089 : : }
13090 : : default:;
13091 : : }
13092 : : }
13093 : : break;
13094 : 94133 : case ADDR_EXPR:
13095 : 94133 : {
13096 : 94133 : switch (TREE_CODE (_p1))
13097 : : {
13098 : 0 : case SSA_NAME:
13099 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
13100 : : {
13101 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13102 : 0 : switch (gimple_assign_rhs_code (_a1))
13103 : : {
13104 : 0 : case POINTER_PLUS_EXPR:
13105 : 0 : {
13106 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
13107 : 0 : _q30 = do_valueize (valueize, _q30);
13108 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
13109 : 0 : _q31 = do_valueize (valueize, _q31);
13110 : 0 : {
13111 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
13112 : 0 : if (gimple_simplify_238 (res_op, seq, valueize, type, captures, EQ_EXPR))
13113 : 0 : return true;
13114 : : }
13115 : 0 : break;
13116 : : }
13117 : : default:;
13118 : : }
13119 : : }
13120 : : break;
13121 : : default:;
13122 : : }
13123 : : break;
13124 : : }
13125 : 76493011 : default:;
13126 : : }
13127 : 76493011 : switch (TREE_CODE (_p1))
13128 : : {
13129 : 11857723 : case SSA_NAME:
13130 : 11857723 : if (gimple *_d1 = get_def (valueize, _p1))
13131 : : {
13132 : 3967328 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13133 : 5755968 : switch (gimple_assign_rhs_code (_a1))
13134 : : {
13135 : 29313 : case MINUS_EXPR:
13136 : 29313 : {
13137 : 29313 : tree _q30 = gimple_assign_rhs1 (_a1);
13138 : 29313 : _q30 = do_valueize (valueize, _q30);
13139 : 29313 : tree _q31 = gimple_assign_rhs2 (_a1);
13140 : 29313 : _q31 = do_valueize (valueize, _q31);
13141 : 29313 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13142 : : {
13143 : 54 : {
13144 : 54 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
13145 : 54 : if (gimple_simplify_234 (res_op, seq, valueize, type, captures, EQ_EXPR))
13146 : 14 : return true;
13147 : : }
13148 : : }
13149 : : break;
13150 : : }
13151 : : default:;
13152 : : }
13153 : : }
13154 : : break;
13155 : 76492997 : default:;
13156 : : }
13157 : 76492997 : switch (TREE_CODE (_p0))
13158 : : {
13159 : 75655301 : case SSA_NAME:
13160 : 75655301 : if (gimple *_d1 = get_def (valueize, _p0))
13161 : : {
13162 : 26003250 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13163 : 31457575 : switch (gimple_assign_rhs_code (_a1))
13164 : : {
13165 : 12925 : case TRUNC_DIV_EXPR:
13166 : 12925 : {
13167 : 12925 : tree _q20 = gimple_assign_rhs1 (_a1);
13168 : 12925 : _q20 = do_valueize (valueize, _q20);
13169 : 12925 : tree _q21 = gimple_assign_rhs2 (_a1);
13170 : 12925 : _q21 = do_valueize (valueize, _q21);
13171 : 12925 : if (integer_zerop (_p1))
13172 : : {
13173 : 2643 : {
13174 : 2643 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13175 : 2643 : if (gimple_simplify_240 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR))
13176 : 131 : return true;
13177 : : }
13178 : : }
13179 : : break;
13180 : : }
13181 : 737891 : CASE_CONVERT:
13182 : 737891 : {
13183 : 737891 : tree _q20 = gimple_assign_rhs1 (_a1);
13184 : 737891 : _q20 = do_valueize (valueize, _q20);
13185 : 737891 : switch (TREE_CODE (_p1))
13186 : : {
13187 : 167985 : case SSA_NAME:
13188 : 167985 : if (gimple *_d2 = get_def (valueize, _p1))
13189 : : {
13190 : 158970 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13191 : 171605 : switch (gimple_assign_rhs_code (_a2))
13192 : : {
13193 : 42238 : CASE_CONVERT:
13194 : 42238 : {
13195 : 42238 : tree _q40 = gimple_assign_rhs1 (_a2);
13196 : 42238 : _q40 = do_valueize (valueize, _q40);
13197 : 42238 : switch (TREE_CODE (_q40))
13198 : : {
13199 : 24908 : case SSA_NAME:
13200 : 24908 : if (gimple *_d3 = get_def (valueize, _q40))
13201 : : {
13202 : 24691 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13203 : 32142 : switch (gimple_assign_rhs_code (_a3))
13204 : : {
13205 : 40 : case MINUS_EXPR:
13206 : 40 : {
13207 : 40 : tree _q50 = gimple_assign_rhs1 (_a3);
13208 : 40 : _q50 = do_valueize (valueize, _q50);
13209 : 40 : tree _q51 = gimple_assign_rhs2 (_a3);
13210 : 40 : _q51 = do_valueize (valueize, _q51);
13211 : 40 : switch (TREE_CODE (_q50))
13212 : : {
13213 : 6 : case INTEGER_CST:
13214 : 6 : {
13215 : 6 : switch (TREE_CODE (_q51))
13216 : : {
13217 : 6 : case SSA_NAME:
13218 : 6 : if (gimple *_d4 = get_def (valueize, _q51))
13219 : : {
13220 : 6 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13221 : 6 : switch (gimple_assign_rhs_code (_a4))
13222 : : {
13223 : 6 : CASE_CONVERT:
13224 : 6 : {
13225 : 6 : tree _q70 = gimple_assign_rhs1 (_a4);
13226 : 6 : _q70 = do_valueize (valueize, _q70);
13227 : 6 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
13228 : : {
13229 : 0 : {
13230 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
13231 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13232 : 0 : return true;
13233 : : }
13234 : : }
13235 : : break;
13236 : : }
13237 : : default:;
13238 : : }
13239 : : }
13240 : : break;
13241 : : default:;
13242 : : }
13243 : : break;
13244 : : }
13245 : : default:;
13246 : : }
13247 : : break;
13248 : : }
13249 : : default:;
13250 : : }
13251 : : }
13252 : : break;
13253 : : default:;
13254 : : }
13255 : : break;
13256 : : }
13257 : : default:;
13258 : : }
13259 : : }
13260 : : break;
13261 : 737891 : default:;
13262 : : }
13263 : 737891 : switch (TREE_CODE (_q20))
13264 : : {
13265 : 724672 : case SSA_NAME:
13266 : 724672 : if (gimple *_d2 = get_def (valueize, _q20))
13267 : : {
13268 : 713768 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13269 : 858765 : switch (gimple_assign_rhs_code (_a2))
13270 : : {
13271 : 8485 : case MINUS_EXPR:
13272 : 8485 : {
13273 : 8485 : tree _q30 = gimple_assign_rhs1 (_a2);
13274 : 8485 : _q30 = do_valueize (valueize, _q30);
13275 : 8485 : tree _q31 = gimple_assign_rhs2 (_a2);
13276 : 8485 : _q31 = do_valueize (valueize, _q31);
13277 : 8485 : switch (TREE_CODE (_q30))
13278 : : {
13279 : 573 : case INTEGER_CST:
13280 : 573 : {
13281 : 573 : switch (TREE_CODE (_q31))
13282 : : {
13283 : 573 : case SSA_NAME:
13284 : 573 : if (gimple *_d3 = get_def (valueize, _q31))
13285 : : {
13286 : 566 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13287 : 180 : switch (gimple_assign_rhs_code (_a3))
13288 : : {
13289 : 104 : CASE_CONVERT:
13290 : 104 : {
13291 : 104 : tree _q50 = gimple_assign_rhs1 (_a3);
13292 : 104 : _q50 = do_valueize (valueize, _q50);
13293 : 104 : switch (TREE_CODE (_p1))
13294 : : {
13295 : 46 : case SSA_NAME:
13296 : 46 : if (gimple *_d4 = get_def (valueize, _p1))
13297 : : {
13298 : 39 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
13299 : 15 : switch (gimple_assign_rhs_code (_a4))
13300 : : {
13301 : 4 : CASE_CONVERT:
13302 : 4 : {
13303 : 4 : tree _q70 = gimple_assign_rhs1 (_a4);
13304 : 4 : _q70 = do_valueize (valueize, _q70);
13305 : 4 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
13306 : : {
13307 : 0 : {
13308 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
13309 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13310 : 0 : return true;
13311 : : }
13312 : : }
13313 : : break;
13314 : : }
13315 : : default:;
13316 : : }
13317 : : }
13318 : : break;
13319 : 104 : default:;
13320 : : }
13321 : 104 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
13322 : : {
13323 : 0 : {
13324 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
13325 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13326 : 0 : return true;
13327 : : }
13328 : : }
13329 : : break;
13330 : : }
13331 : : default:;
13332 : : }
13333 : : }
13334 : : break;
13335 : 573 : default:;
13336 : : }
13337 : 573 : switch (TREE_CODE (_p1))
13338 : : {
13339 : 85 : case SSA_NAME:
13340 : 85 : if (gimple *_d3 = get_def (valueize, _p1))
13341 : : {
13342 : 73 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13343 : 25 : switch (gimple_assign_rhs_code (_a3))
13344 : : {
13345 : 4 : CASE_CONVERT:
13346 : 4 : {
13347 : 4 : tree _q60 = gimple_assign_rhs1 (_a3);
13348 : 4 : _q60 = do_valueize (valueize, _q60);
13349 : 4 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
13350 : : {
13351 : 0 : {
13352 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
13353 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13354 : 0 : return true;
13355 : : }
13356 : : }
13357 : : break;
13358 : : }
13359 : : default:;
13360 : : }
13361 : : }
13362 : : break;
13363 : 573 : default:;
13364 : : }
13365 : 573 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
13366 : : {
13367 : 0 : {
13368 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
13369 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13370 : 0 : return true;
13371 : : }
13372 : : }
13373 : : break;
13374 : : }
13375 : : default:;
13376 : : }
13377 : : break;
13378 : : }
13379 : : default:;
13380 : : }
13381 : : }
13382 : : break;
13383 : 737891 : default:;
13384 : : }
13385 : 737891 : switch (TREE_CODE (_p1))
13386 : : {
13387 : 167985 : case SSA_NAME:
13388 : 167985 : if (gimple *_d2 = get_def (valueize, _p1))
13389 : : {
13390 : 158970 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13391 : 171605 : switch (gimple_assign_rhs_code (_a2))
13392 : : {
13393 : 42238 : CASE_CONVERT:
13394 : 42238 : {
13395 : 42238 : tree _q40 = gimple_assign_rhs1 (_a2);
13396 : 42238 : _q40 = do_valueize (valueize, _q40);
13397 : 42238 : switch (TREE_CODE (_q40))
13398 : : {
13399 : 24908 : case SSA_NAME:
13400 : 24908 : if (gimple *_d3 = get_def (valueize, _q40))
13401 : : {
13402 : 24691 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13403 : 32142 : switch (gimple_assign_rhs_code (_a3))
13404 : : {
13405 : 40 : case MINUS_EXPR:
13406 : 40 : {
13407 : 40 : tree _q50 = gimple_assign_rhs1 (_a3);
13408 : 40 : _q50 = do_valueize (valueize, _q50);
13409 : 40 : tree _q51 = gimple_assign_rhs2 (_a3);
13410 : 40 : _q51 = do_valueize (valueize, _q51);
13411 : 40 : switch (TREE_CODE (_q50))
13412 : : {
13413 : 6 : case INTEGER_CST:
13414 : 6 : {
13415 : 6 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13416 : : {
13417 : 0 : {
13418 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
13419 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13420 : 0 : return true;
13421 : : }
13422 : : }
13423 : : break;
13424 : : }
13425 : : default:;
13426 : : }
13427 : : break;
13428 : : }
13429 : : default:;
13430 : : }
13431 : : }
13432 : : break;
13433 : : default:;
13434 : : }
13435 : : break;
13436 : : }
13437 : 708 : case MINUS_EXPR:
13438 : 708 : {
13439 : 708 : tree _q40 = gimple_assign_rhs1 (_a2);
13440 : 708 : _q40 = do_valueize (valueize, _q40);
13441 : 708 : tree _q41 = gimple_assign_rhs2 (_a2);
13442 : 708 : _q41 = do_valueize (valueize, _q41);
13443 : 708 : switch (TREE_CODE (_q40))
13444 : : {
13445 : 98 : case INTEGER_CST:
13446 : 98 : {
13447 : 98 : switch (TREE_CODE (_q41))
13448 : : {
13449 : 98 : case SSA_NAME:
13450 : 98 : if (gimple *_d3 = get_def (valueize, _q41))
13451 : : {
13452 : 82 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13453 : 25 : switch (gimple_assign_rhs_code (_a3))
13454 : : {
13455 : 13 : CASE_CONVERT:
13456 : 13 : {
13457 : 13 : tree _q60 = gimple_assign_rhs1 (_a3);
13458 : 13 : _q60 = do_valueize (valueize, _q60);
13459 : 13 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13460 : : {
13461 : 0 : {
13462 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
13463 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13464 : 0 : return true;
13465 : : }
13466 : : }
13467 : : break;
13468 : : }
13469 : : default:;
13470 : : }
13471 : : }
13472 : : break;
13473 : 98 : default:;
13474 : : }
13475 : 98 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
13476 : : {
13477 : 0 : {
13478 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
13479 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13480 : 0 : return true;
13481 : : }
13482 : : }
13483 : : break;
13484 : : }
13485 : : default:;
13486 : : }
13487 : : break;
13488 : : }
13489 : : default:;
13490 : : }
13491 : : }
13492 : : break;
13493 : : default:;
13494 : : }
13495 : : break;
13496 : : }
13497 : 233330 : case MINUS_EXPR:
13498 : 233330 : {
13499 : 233330 : tree _q20 = gimple_assign_rhs1 (_a1);
13500 : 233330 : _q20 = do_valueize (valueize, _q20);
13501 : 233330 : tree _q21 = gimple_assign_rhs2 (_a1);
13502 : 233330 : _q21 = do_valueize (valueize, _q21);
13503 : 233330 : switch (TREE_CODE (_q20))
13504 : : {
13505 : 7922 : case INTEGER_CST:
13506 : 7922 : {
13507 : 7922 : switch (TREE_CODE (_q21))
13508 : : {
13509 : 7922 : case SSA_NAME:
13510 : 7922 : if (gimple *_d2 = get_def (valueize, _q21))
13511 : : {
13512 : 5475 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13513 : 4356 : switch (gimple_assign_rhs_code (_a2))
13514 : : {
13515 : 3212 : CASE_CONVERT:
13516 : 3212 : {
13517 : 3212 : tree _q40 = gimple_assign_rhs1 (_a2);
13518 : 3212 : _q40 = do_valueize (valueize, _q40);
13519 : 3212 : switch (TREE_CODE (_p1))
13520 : : {
13521 : 654 : case SSA_NAME:
13522 : 654 : if (gimple *_d3 = get_def (valueize, _p1))
13523 : : {
13524 : 653 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13525 : 707 : switch (gimple_assign_rhs_code (_a3))
13526 : : {
13527 : 0 : CASE_CONVERT:
13528 : 0 : {
13529 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
13530 : 0 : _q60 = do_valueize (valueize, _q60);
13531 : 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
13532 : : {
13533 : 0 : {
13534 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
13535 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13536 : 0 : return true;
13537 : : }
13538 : : }
13539 : : break;
13540 : : }
13541 : : default:;
13542 : : }
13543 : : }
13544 : : break;
13545 : 3212 : default:;
13546 : : }
13547 : 3212 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
13548 : : {
13549 : 0 : {
13550 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
13551 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13552 : 0 : return true;
13553 : : }
13554 : : }
13555 : : break;
13556 : : }
13557 : : default:;
13558 : : }
13559 : : }
13560 : : break;
13561 : 7922 : default:;
13562 : : }
13563 : 7922 : switch (TREE_CODE (_p1))
13564 : : {
13565 : 1629 : case SSA_NAME:
13566 : 1629 : if (gimple *_d2 = get_def (valueize, _p1))
13567 : : {
13568 : 1509 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13569 : 1000 : switch (gimple_assign_rhs_code (_a2))
13570 : : {
13571 : 4 : CASE_CONVERT:
13572 : 4 : {
13573 : 4 : tree _q50 = gimple_assign_rhs1 (_a2);
13574 : 4 : _q50 = do_valueize (valueize, _q50);
13575 : 4 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13576 : : {
13577 : 0 : {
13578 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13579 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13580 : 0 : return true;
13581 : : }
13582 : : }
13583 : : break;
13584 : : }
13585 : : default:;
13586 : : }
13587 : : }
13588 : : break;
13589 : 7922 : default:;
13590 : : }
13591 : 7922 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
13592 : : {
13593 : 0 : {
13594 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13595 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13596 : 0 : return true;
13597 : : }
13598 : : }
13599 : : break;
13600 : : }
13601 : : default:;
13602 : : }
13603 : : break;
13604 : : }
13605 : : default:;
13606 : : }
13607 : : }
13608 : : break;
13609 : 76492866 : default:;
13610 : : }
13611 : 76492866 : switch (TREE_CODE (_p1))
13612 : : {
13613 : 11857709 : case SSA_NAME:
13614 : 11857709 : if (gimple *_d1 = get_def (valueize, _p1))
13615 : : {
13616 : 3967314 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13617 : 5755954 : switch (gimple_assign_rhs_code (_a1))
13618 : : {
13619 : 234163 : CASE_CONVERT:
13620 : 234163 : {
13621 : 234163 : tree _q30 = gimple_assign_rhs1 (_a1);
13622 : 234163 : _q30 = do_valueize (valueize, _q30);
13623 : 234163 : switch (TREE_CODE (_q30))
13624 : : {
13625 : 211213 : case SSA_NAME:
13626 : 211213 : if (gimple *_d2 = get_def (valueize, _q30))
13627 : : {
13628 : 206450 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13629 : 281013 : switch (gimple_assign_rhs_code (_a2))
13630 : : {
13631 : 5463 : case MINUS_EXPR:
13632 : 5463 : {
13633 : 5463 : tree _q40 = gimple_assign_rhs1 (_a2);
13634 : 5463 : _q40 = do_valueize (valueize, _q40);
13635 : 5463 : tree _q41 = gimple_assign_rhs2 (_a2);
13636 : 5463 : _q41 = do_valueize (valueize, _q41);
13637 : 5463 : switch (TREE_CODE (_q40))
13638 : : {
13639 : 87 : case INTEGER_CST:
13640 : 87 : {
13641 : 87 : switch (TREE_CODE (_q41))
13642 : : {
13643 : 87 : case SSA_NAME:
13644 : 87 : if (gimple *_d3 = get_def (valueize, _q41))
13645 : : {
13646 : 80 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13647 : 34 : switch (gimple_assign_rhs_code (_a3))
13648 : : {
13649 : 30 : CASE_CONVERT:
13650 : 30 : {
13651 : 30 : tree _q60 = gimple_assign_rhs1 (_a3);
13652 : 30 : _q60 = do_valueize (valueize, _q60);
13653 : 30 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
13654 : : {
13655 : 0 : {
13656 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
13657 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13658 : 0 : return true;
13659 : : }
13660 : : }
13661 : : break;
13662 : : }
13663 : : default:;
13664 : : }
13665 : : }
13666 : : break;
13667 : 87 : default:;
13668 : : }
13669 : 87 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
13670 : : {
13671 : 0 : {
13672 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
13673 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13674 : 0 : return true;
13675 : : }
13676 : : }
13677 : : break;
13678 : : }
13679 : : default:;
13680 : : }
13681 : : break;
13682 : : }
13683 : : default:;
13684 : : }
13685 : : }
13686 : : break;
13687 : : default:;
13688 : : }
13689 : : break;
13690 : : }
13691 : 29299 : case MINUS_EXPR:
13692 : 29299 : {
13693 : 29299 : tree _q30 = gimple_assign_rhs1 (_a1);
13694 : 29299 : _q30 = do_valueize (valueize, _q30);
13695 : 29299 : tree _q31 = gimple_assign_rhs2 (_a1);
13696 : 29299 : _q31 = do_valueize (valueize, _q31);
13697 : 29299 : switch (TREE_CODE (_q30))
13698 : : {
13699 : 634 : case INTEGER_CST:
13700 : 634 : {
13701 : 634 : switch (TREE_CODE (_q31))
13702 : : {
13703 : 634 : case SSA_NAME:
13704 : 634 : if (gimple *_d2 = get_def (valueize, _q31))
13705 : : {
13706 : 570 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13707 : 313 : switch (gimple_assign_rhs_code (_a2))
13708 : : {
13709 : 257 : CASE_CONVERT:
13710 : 257 : {
13711 : 257 : tree _q50 = gimple_assign_rhs1 (_a2);
13712 : 257 : _q50 = do_valueize (valueize, _q50);
13713 : 257 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
13714 : : {
13715 : 0 : {
13716 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
13717 : 0 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13718 : 0 : return true;
13719 : : }
13720 : : }
13721 : : break;
13722 : : }
13723 : : default:;
13724 : : }
13725 : : }
13726 : : break;
13727 : 634 : default:;
13728 : : }
13729 : 634 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
13730 : : {
13731 : 40 : {
13732 : 40 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
13733 : 40 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, EQ_EXPR))
13734 : 8 : return true;
13735 : : }
13736 : : }
13737 : : break;
13738 : : }
13739 : : default:;
13740 : : }
13741 : : break;
13742 : : }
13743 : : default:;
13744 : : }
13745 : : }
13746 : : break;
13747 : 76492858 : default:;
13748 : : }
13749 : 76492858 : switch (TREE_CODE (_p0))
13750 : : {
13751 : 75655162 : case SSA_NAME:
13752 : 75655162 : if (gimple *_d1 = get_def (valueize, _p0))
13753 : : {
13754 : 26003111 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13755 : 31457436 : switch (gimple_assign_rhs_code (_a1))
13756 : : {
13757 : 1170 : case LT_EXPR:
13758 : 1170 : {
13759 : 1170 : tree _q20 = gimple_assign_rhs1 (_a1);
13760 : 1170 : _q20 = do_valueize (valueize, _q20);
13761 : 1170 : tree _q21 = gimple_assign_rhs2 (_a1);
13762 : 1170 : _q21 = do_valueize (valueize, _q21);
13763 : 1170 : switch (TREE_CODE (_p1))
13764 : : {
13765 : 319 : case SSA_NAME:
13766 : 319 : if (gimple *_d2 = get_def (valueize, _p1))
13767 : : {
13768 : 315 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13769 : 301 : switch (gimple_assign_rhs_code (_a2))
13770 : : {
13771 : 38 : case GT_EXPR:
13772 : 38 : {
13773 : 38 : tree _q50 = gimple_assign_rhs1 (_a2);
13774 : 38 : _q50 = do_valueize (valueize, _q50);
13775 : 38 : tree _q51 = gimple_assign_rhs2 (_a2);
13776 : 38 : _q51 = do_valueize (valueize, _q51);
13777 : 38 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13778 : : {
13779 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13780 : : {
13781 : 16 : {
13782 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13783 : 16 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR, EQ_EXPR))
13784 : 16 : return true;
13785 : : }
13786 : : }
13787 : : }
13788 : : break;
13789 : : }
13790 : 16 : case EQ_EXPR:
13791 : 16 : {
13792 : 16 : tree _q50 = gimple_assign_rhs1 (_a2);
13793 : 16 : _q50 = do_valueize (valueize, _q50);
13794 : 16 : tree _q51 = gimple_assign_rhs2 (_a2);
13795 : 16 : _q51 = do_valueize (valueize, _q51);
13796 : 16 : if (tree_swap_operands_p (_q50, _q51))
13797 : 0 : std::swap (_q50, _q51);
13798 : 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13799 : : {
13800 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13801 : : {
13802 : 16 : {
13803 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13804 : 16 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR, GT_EXPR))
13805 : 16 : return true;
13806 : : }
13807 : : }
13808 : : }
13809 : 76487161 : break;
13810 : : }
13811 : 35 : case NE_EXPR:
13812 : 35 : {
13813 : 35 : tree _q50 = gimple_assign_rhs1 (_a2);
13814 : 35 : _q50 = do_valueize (valueize, _q50);
13815 : 35 : tree _q51 = gimple_assign_rhs2 (_a2);
13816 : 35 : _q51 = do_valueize (valueize, _q51);
13817 : 35 : if (tree_swap_operands_p (_q50, _q51))
13818 : 0 : std::swap (_q50, _q51);
13819 : 35 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13820 : : {
13821 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13822 : : {
13823 : 16 : {
13824 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13825 : 16 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR, LE_EXPR))
13826 : 16 : return true;
13827 : : }
13828 : : }
13829 : : }
13830 : 76487161 : break;
13831 : : }
13832 : : default:;
13833 : : }
13834 : : }
13835 : : break;
13836 : : default:;
13837 : : }
13838 : : break;
13839 : : }
13840 : 764 : case LE_EXPR:
13841 : 764 : {
13842 : 764 : tree _q20 = gimple_assign_rhs1 (_a1);
13843 : 764 : _q20 = do_valueize (valueize, _q20);
13844 : 764 : tree _q21 = gimple_assign_rhs2 (_a1);
13845 : 764 : _q21 = do_valueize (valueize, _q21);
13846 : 764 : switch (TREE_CODE (_p1))
13847 : : {
13848 : 435 : case SSA_NAME:
13849 : 435 : if (gimple *_d2 = get_def (valueize, _p1))
13850 : : {
13851 : 435 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13852 : 408 : switch (gimple_assign_rhs_code (_a2))
13853 : : {
13854 : 68 : case GE_EXPR:
13855 : 68 : {
13856 : 68 : tree _q50 = gimple_assign_rhs1 (_a2);
13857 : 68 : _q50 = do_valueize (valueize, _q50);
13858 : 68 : tree _q51 = gimple_assign_rhs2 (_a2);
13859 : 68 : _q51 = do_valueize (valueize, _q51);
13860 : 68 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13861 : : {
13862 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13863 : : {
13864 : 16 : {
13865 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13866 : 16 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR, EQ_EXPR))
13867 : 16 : return true;
13868 : : }
13869 : : }
13870 : : }
13871 : : break;
13872 : : }
13873 : 16 : case EQ_EXPR:
13874 : 16 : {
13875 : 16 : tree _q50 = gimple_assign_rhs1 (_a2);
13876 : 16 : _q50 = do_valueize (valueize, _q50);
13877 : 16 : tree _q51 = gimple_assign_rhs2 (_a2);
13878 : 16 : _q51 = do_valueize (valueize, _q51);
13879 : 16 : if (tree_swap_operands_p (_q50, _q51))
13880 : 0 : std::swap (_q50, _q51);
13881 : 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13882 : : {
13883 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13884 : : {
13885 : 16 : {
13886 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13887 : 16 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, GE_EXPR))
13888 : 16 : return true;
13889 : : }
13890 : : }
13891 : : }
13892 : 76487161 : break;
13893 : : }
13894 : 16 : case NE_EXPR:
13895 : 16 : {
13896 : 16 : tree _q50 = gimple_assign_rhs1 (_a2);
13897 : 16 : _q50 = do_valueize (valueize, _q50);
13898 : 16 : tree _q51 = gimple_assign_rhs2 (_a2);
13899 : 16 : _q51 = do_valueize (valueize, _q51);
13900 : 16 : if (tree_swap_operands_p (_q50, _q51))
13901 : 0 : std::swap (_q50, _q51);
13902 : 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13903 : : {
13904 : 16 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13905 : : {
13906 : 16 : {
13907 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13908 : 16 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR, LT_EXPR))
13909 : 16 : return true;
13910 : : }
13911 : : }
13912 : : }
13913 : 76487161 : break;
13914 : : }
13915 : : default:;
13916 : : }
13917 : : }
13918 : : break;
13919 : : default:;
13920 : : }
13921 : : break;
13922 : : }
13923 : 2270 : case GT_EXPR:
13924 : 2270 : {
13925 : 2270 : tree _q20 = gimple_assign_rhs1 (_a1);
13926 : 2270 : _q20 = do_valueize (valueize, _q20);
13927 : 2270 : tree _q21 = gimple_assign_rhs2 (_a1);
13928 : 2270 : _q21 = do_valueize (valueize, _q21);
13929 : 2270 : switch (TREE_CODE (_p1))
13930 : : {
13931 : 1036 : case SSA_NAME:
13932 : 1036 : if (gimple *_d2 = get_def (valueize, _p1))
13933 : : {
13934 : 1028 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13935 : 964 : switch (gimple_assign_rhs_code (_a2))
13936 : : {
13937 : 286 : case GT_EXPR:
13938 : 286 : {
13939 : 286 : tree _q50 = gimple_assign_rhs1 (_a2);
13940 : 286 : _q50 = do_valueize (valueize, _q50);
13941 : 286 : tree _q51 = gimple_assign_rhs2 (_a2);
13942 : 286 : _q51 = do_valueize (valueize, _q51);
13943 : 286 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13944 : : {
13945 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13946 : : {
13947 : 0 : {
13948 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13949 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR, EQ_EXPR))
13950 : 0 : return true;
13951 : : }
13952 : 0 : {
13953 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13954 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR, EQ_EXPR))
13955 : 0 : return true;
13956 : : }
13957 : : }
13958 : : }
13959 : : break;
13960 : : }
13961 : 227 : case EQ_EXPR:
13962 : 227 : {
13963 : 227 : tree _q50 = gimple_assign_rhs1 (_a2);
13964 : 227 : _q50 = do_valueize (valueize, _q50);
13965 : 227 : tree _q51 = gimple_assign_rhs2 (_a2);
13966 : 227 : _q51 = do_valueize (valueize, _q51);
13967 : 227 : if (tree_swap_operands_p (_q50, _q51))
13968 : 3 : std::swap (_q50, _q51);
13969 : 227 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13970 : : {
13971 : 3 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13972 : : {
13973 : 3 : {
13974 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13975 : 3 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR, GT_EXPR))
13976 : 3 : return true;
13977 : : }
13978 : : }
13979 : : }
13980 : 76487161 : break;
13981 : : }
13982 : 117 : case NE_EXPR:
13983 : 117 : {
13984 : 117 : tree _q50 = gimple_assign_rhs1 (_a2);
13985 : 117 : _q50 = do_valueize (valueize, _q50);
13986 : 117 : tree _q51 = gimple_assign_rhs2 (_a2);
13987 : 117 : _q51 = do_valueize (valueize, _q51);
13988 : 117 : if (tree_swap_operands_p (_q50, _q51))
13989 : 3 : std::swap (_q50, _q51);
13990 : 117 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13991 : : {
13992 : 3 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13993 : : {
13994 : 3 : {
13995 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13996 : 3 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR, LE_EXPR))
13997 : 3 : return true;
13998 : : }
13999 : : }
14000 : : }
14001 : 76487161 : break;
14002 : : }
14003 : 176 : case LT_EXPR:
14004 : 176 : {
14005 : 176 : tree _q50 = gimple_assign_rhs1 (_a2);
14006 : 176 : _q50 = do_valueize (valueize, _q50);
14007 : 176 : tree _q51 = gimple_assign_rhs2 (_a2);
14008 : 176 : _q51 = do_valueize (valueize, _q51);
14009 : 176 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14010 : : {
14011 : 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14012 : : {
14013 : 20 : {
14014 : 20 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14015 : 20 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR, EQ_EXPR))
14016 : 20 : return true;
14017 : : }
14018 : : }
14019 : : }
14020 : : break;
14021 : : }
14022 : : default:;
14023 : : }
14024 : : }
14025 : : break;
14026 : : default:;
14027 : : }
14028 : : break;
14029 : : }
14030 : 1340 : case GE_EXPR:
14031 : 1340 : {
14032 : 1340 : tree _q20 = gimple_assign_rhs1 (_a1);
14033 : 1340 : _q20 = do_valueize (valueize, _q20);
14034 : 1340 : tree _q21 = gimple_assign_rhs2 (_a1);
14035 : 1340 : _q21 = do_valueize (valueize, _q21);
14036 : 1340 : switch (TREE_CODE (_p1))
14037 : : {
14038 : 1082 : case SSA_NAME:
14039 : 1082 : if (gimple *_d2 = get_def (valueize, _p1))
14040 : : {
14041 : 1066 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14042 : 983 : switch (gimple_assign_rhs_code (_a2))
14043 : : {
14044 : 100 : case GE_EXPR:
14045 : 100 : {
14046 : 100 : tree _q50 = gimple_assign_rhs1 (_a2);
14047 : 100 : _q50 = do_valueize (valueize, _q50);
14048 : 100 : tree _q51 = gimple_assign_rhs2 (_a2);
14049 : 100 : _q51 = do_valueize (valueize, _q51);
14050 : 100 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14051 : : {
14052 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14053 : : {
14054 : 0 : {
14055 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14056 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR, EQ_EXPR))
14057 : 0 : return true;
14058 : : }
14059 : 0 : {
14060 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14061 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR, EQ_EXPR))
14062 : 0 : return true;
14063 : : }
14064 : : }
14065 : : }
14066 : : break;
14067 : : }
14068 : 349 : case EQ_EXPR:
14069 : 349 : {
14070 : 349 : tree _q50 = gimple_assign_rhs1 (_a2);
14071 : 349 : _q50 = do_valueize (valueize, _q50);
14072 : 349 : tree _q51 = gimple_assign_rhs2 (_a2);
14073 : 349 : _q51 = do_valueize (valueize, _q51);
14074 : 349 : if (tree_swap_operands_p (_q50, _q51))
14075 : 20 : std::swap (_q50, _q51);
14076 : 349 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14077 : : {
14078 : 20 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14079 : : {
14080 : 20 : {
14081 : 20 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14082 : 20 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, GE_EXPR))
14083 : 20 : return true;
14084 : : }
14085 : : }
14086 : : }
14087 : 76487161 : break;
14088 : : }
14089 : 209 : case NE_EXPR:
14090 : 209 : {
14091 : 209 : tree _q50 = gimple_assign_rhs1 (_a2);
14092 : 209 : _q50 = do_valueize (valueize, _q50);
14093 : 209 : tree _q51 = gimple_assign_rhs2 (_a2);
14094 : 209 : _q51 = do_valueize (valueize, _q51);
14095 : 209 : if (tree_swap_operands_p (_q50, _q51))
14096 : 20 : std::swap (_q50, _q51);
14097 : 209 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14098 : : {
14099 : 20 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14100 : : {
14101 : 20 : {
14102 : 20 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14103 : 20 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR, LT_EXPR))
14104 : 20 : return true;
14105 : : }
14106 : : }
14107 : : }
14108 : 76487161 : break;
14109 : : }
14110 : 42 : case LE_EXPR:
14111 : 42 : {
14112 : 42 : tree _q50 = gimple_assign_rhs1 (_a2);
14113 : 42 : _q50 = do_valueize (valueize, _q50);
14114 : 42 : tree _q51 = gimple_assign_rhs2 (_a2);
14115 : 42 : _q51 = do_valueize (valueize, _q51);
14116 : 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14117 : : {
14118 : 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14119 : : {
14120 : 14 : {
14121 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14122 : 14 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR, EQ_EXPR))
14123 : 14 : return true;
14124 : : }
14125 : : }
14126 : : }
14127 : : break;
14128 : : }
14129 : : default:;
14130 : : }
14131 : : }
14132 : : break;
14133 : : default:;
14134 : : }
14135 : : break;
14136 : : }
14137 : 17704 : case EQ_EXPR:
14138 : 17704 : {
14139 : 17704 : tree _q20 = gimple_assign_rhs1 (_a1);
14140 : 17704 : _q20 = do_valueize (valueize, _q20);
14141 : 17704 : tree _q21 = gimple_assign_rhs2 (_a1);
14142 : 17704 : _q21 = do_valueize (valueize, _q21);
14143 : 17704 : if (tree_swap_operands_p (_q20, _q21))
14144 : 557 : std::swap (_q20, _q21);
14145 : 17704 : switch (TREE_CODE (_p1))
14146 : : {
14147 : 15915 : case SSA_NAME:
14148 : 15915 : if (gimple *_d2 = get_def (valueize, _p1))
14149 : : {
14150 : 15723 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14151 : 11850 : switch (gimple_assign_rhs_code (_a2))
14152 : : {
14153 : 0 : case LT_EXPR:
14154 : 0 : {
14155 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
14156 : 0 : _q50 = do_valueize (valueize, _q50);
14157 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
14158 : 0 : _q51 = do_valueize (valueize, _q51);
14159 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14160 : : {
14161 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14162 : : {
14163 : 0 : {
14164 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14165 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR, GT_EXPR))
14166 : 0 : return true;
14167 : : }
14168 : : }
14169 : : }
14170 : : break;
14171 : : }
14172 : 0 : case LE_EXPR:
14173 : 0 : {
14174 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
14175 : 0 : _q50 = do_valueize (valueize, _q50);
14176 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
14177 : 0 : _q51 = do_valueize (valueize, _q51);
14178 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14179 : : {
14180 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14181 : : {
14182 : 0 : {
14183 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14184 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, GE_EXPR))
14185 : 0 : return true;
14186 : : }
14187 : : }
14188 : : }
14189 : : break;
14190 : : }
14191 : 308 : case GT_EXPR:
14192 : 308 : {
14193 : 308 : tree _q50 = gimple_assign_rhs1 (_a2);
14194 : 308 : _q50 = do_valueize (valueize, _q50);
14195 : 308 : tree _q51 = gimple_assign_rhs2 (_a2);
14196 : 308 : _q51 = do_valueize (valueize, _q51);
14197 : 308 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14198 : : {
14199 : 17 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14200 : : {
14201 : 17 : {
14202 : 17 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14203 : 17 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR, GT_EXPR))
14204 : 17 : return true;
14205 : : }
14206 : : }
14207 : : }
14208 : : break;
14209 : : }
14210 : 566 : case GE_EXPR:
14211 : 566 : {
14212 : 566 : tree _q50 = gimple_assign_rhs1 (_a2);
14213 : 566 : _q50 = do_valueize (valueize, _q50);
14214 : 566 : tree _q51 = gimple_assign_rhs2 (_a2);
14215 : 566 : _q51 = do_valueize (valueize, _q51);
14216 : 566 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14217 : : {
14218 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14219 : : {
14220 : 0 : {
14221 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14222 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, GE_EXPR))
14223 : 0 : return true;
14224 : : }
14225 : : }
14226 : : }
14227 : : break;
14228 : : }
14229 : : default:;
14230 : : }
14231 : : }
14232 : : break;
14233 : : default:;
14234 : : }
14235 : 76487161 : break;
14236 : : }
14237 : 8447 : case NE_EXPR:
14238 : 8447 : {
14239 : 8447 : tree _q20 = gimple_assign_rhs1 (_a1);
14240 : 8447 : _q20 = do_valueize (valueize, _q20);
14241 : 8447 : tree _q21 = gimple_assign_rhs2 (_a1);
14242 : 8447 : _q21 = do_valueize (valueize, _q21);
14243 : 8447 : if (tree_swap_operands_p (_q20, _q21))
14244 : 93 : std::swap (_q20, _q21);
14245 : 8447 : switch (TREE_CODE (_p1))
14246 : : {
14247 : 764 : case SSA_NAME:
14248 : 764 : if (gimple *_d2 = get_def (valueize, _p1))
14249 : : {
14250 : 743 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14251 : 751 : switch (gimple_assign_rhs_code (_a2))
14252 : : {
14253 : 0 : case LT_EXPR:
14254 : 0 : {
14255 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
14256 : 0 : _q50 = do_valueize (valueize, _q50);
14257 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
14258 : 0 : _q51 = do_valueize (valueize, _q51);
14259 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14260 : : {
14261 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14262 : : {
14263 : 0 : {
14264 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14265 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR, LE_EXPR))
14266 : 0 : return true;
14267 : : }
14268 : : }
14269 : : }
14270 : : break;
14271 : : }
14272 : 0 : case LE_EXPR:
14273 : 0 : {
14274 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
14275 : 0 : _q50 = do_valueize (valueize, _q50);
14276 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
14277 : 0 : _q51 = do_valueize (valueize, _q51);
14278 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14279 : : {
14280 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14281 : : {
14282 : 0 : {
14283 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14284 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR, LT_EXPR))
14285 : 0 : return true;
14286 : : }
14287 : : }
14288 : : }
14289 : : break;
14290 : : }
14291 : 68 : case GT_EXPR:
14292 : 68 : {
14293 : 68 : tree _q50 = gimple_assign_rhs1 (_a2);
14294 : 68 : _q50 = do_valueize (valueize, _q50);
14295 : 68 : tree _q51 = gimple_assign_rhs2 (_a2);
14296 : 68 : _q51 = do_valueize (valueize, _q51);
14297 : 68 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14298 : : {
14299 : 17 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14300 : : {
14301 : 17 : {
14302 : 17 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14303 : 17 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR, LE_EXPR))
14304 : 17 : return true;
14305 : : }
14306 : : }
14307 : : }
14308 : : break;
14309 : : }
14310 : 6 : case GE_EXPR:
14311 : 6 : {
14312 : 6 : tree _q50 = gimple_assign_rhs1 (_a2);
14313 : 6 : _q50 = do_valueize (valueize, _q50);
14314 : 6 : tree _q51 = gimple_assign_rhs2 (_a2);
14315 : 6 : _q51 = do_valueize (valueize, _q51);
14316 : 6 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14317 : : {
14318 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14319 : : {
14320 : 0 : {
14321 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14322 : 0 : if (gimple_simplify_243 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR, LT_EXPR))
14323 : 0 : return true;
14324 : : }
14325 : : }
14326 : : }
14327 : : break;
14328 : : }
14329 : : default:;
14330 : : }
14331 : : }
14332 : : break;
14333 : : default:;
14334 : : }
14335 : 76487161 : break;
14336 : : }
14337 : 62512 : case MIN_EXPR:
14338 : 62512 : {
14339 : 62512 : tree _q20 = gimple_assign_rhs1 (_a1);
14340 : 62512 : _q20 = do_valueize (valueize, _q20);
14341 : 62512 : tree _q21 = gimple_assign_rhs2 (_a1);
14342 : 62512 : _q21 = do_valueize (valueize, _q21);
14343 : 62512 : if (tree_swap_operands_p (_q20, _q21))
14344 : 7703 : std::swap (_q20, _q21);
14345 : 62512 : switch (TREE_CODE (_p1))
14346 : : {
14347 : 4549 : case SSA_NAME:
14348 : 4549 : if (gimple *_d2 = get_def (valueize, _p1))
14349 : : {
14350 : 4537 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14351 : 4815 : switch (gimple_assign_rhs_code (_a2))
14352 : : {
14353 : 0 : case MAX_EXPR:
14354 : 0 : {
14355 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
14356 : 0 : _q50 = do_valueize (valueize, _q50);
14357 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
14358 : 0 : _q51 = do_valueize (valueize, _q51);
14359 : 0 : if (tree_swap_operands_p (_q50, _q51))
14360 : 0 : std::swap (_q50, _q51);
14361 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14362 : : {
14363 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14364 : : {
14365 : 0 : {
14366 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14367 : 0 : if (!HONOR_NANS (captures[0])
14368 : : )
14369 : : {
14370 : 0 : gimple_seq *lseq = seq;
14371 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2238;
14372 : 0 : {
14373 : 0 : res_op->set_op (EQ_EXPR, type, 2);
14374 : 0 : res_op->ops[0] = captures[0];
14375 : 0 : res_op->ops[1] = captures[1];
14376 : 0 : res_op->resimplify (lseq, valueize);
14377 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
14378 : 0 : return true;
14379 : : }
14380 : 0 : next_after_fail2238:;
14381 : : }
14382 : : }
14383 : : }
14384 : : }
14385 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14386 : : {
14387 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14388 : : {
14389 : 0 : {
14390 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14391 : 0 : if (!HONOR_NANS (captures[0])
14392 : : )
14393 : : {
14394 : 0 : gimple_seq *lseq = seq;
14395 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2239;
14396 : 0 : {
14397 : 0 : res_op->set_op (EQ_EXPR, type, 2);
14398 : 0 : res_op->ops[0] = captures[0];
14399 : 0 : res_op->ops[1] = captures[1];
14400 : 0 : res_op->resimplify (lseq, valueize);
14401 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
14402 : 0 : return true;
14403 : : }
14404 : 0 : next_after_fail2239:;
14405 : : }
14406 : : }
14407 : : }
14408 : : }
14409 : 62512 : break;
14410 : : }
14411 : : default:;
14412 : : }
14413 : : }
14414 : : break;
14415 : 62512 : default:;
14416 : : }
14417 : 62512 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14418 : : {
14419 : 50 : {
14420 : 50 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14421 : 50 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR))
14422 : 50 : return true;
14423 : : }
14424 : : }
14425 : 62462 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
14426 : : {
14427 : 168 : {
14428 : 168 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14429 : 168 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR))
14430 : 168 : return true;
14431 : : }
14432 : : }
14433 : 76487161 : break;
14434 : : }
14435 : 6646 : case MAX_EXPR:
14436 : 6646 : {
14437 : 6646 : tree _q20 = gimple_assign_rhs1 (_a1);
14438 : 6646 : _q20 = do_valueize (valueize, _q20);
14439 : 6646 : tree _q21 = gimple_assign_rhs2 (_a1);
14440 : 6646 : _q21 = do_valueize (valueize, _q21);
14441 : 6646 : if (tree_swap_operands_p (_q20, _q21))
14442 : 89 : std::swap (_q20, _q21);
14443 : 6646 : switch (TREE_CODE (_p1))
14444 : : {
14445 : 454 : case SSA_NAME:
14446 : 454 : if (gimple *_d2 = get_def (valueize, _p1))
14447 : : {
14448 : 432 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14449 : 538 : switch (gimple_assign_rhs_code (_a2))
14450 : : {
14451 : 2 : case MIN_EXPR:
14452 : 2 : {
14453 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
14454 : 2 : _q50 = do_valueize (valueize, _q50);
14455 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
14456 : 2 : _q51 = do_valueize (valueize, _q51);
14457 : 2 : if (tree_swap_operands_p (_q50, _q51))
14458 : 0 : std::swap (_q50, _q51);
14459 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14460 : : {
14461 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14462 : : {
14463 : 2 : {
14464 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14465 : 2 : if (!HONOR_NANS (captures[0])
14466 : : )
14467 : : {
14468 : 2 : gimple_seq *lseq = seq;
14469 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2240;
14470 : 2 : {
14471 : 2 : res_op->set_op (EQ_EXPR, type, 2);
14472 : 2 : res_op->ops[0] = captures[0];
14473 : 2 : res_op->ops[1] = captures[1];
14474 : 2 : res_op->resimplify (lseq, valueize);
14475 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
14476 : 2 : return true;
14477 : : }
14478 : 0 : next_after_fail2240:;
14479 : : }
14480 : : }
14481 : : }
14482 : : }
14483 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14484 : : {
14485 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14486 : : {
14487 : 0 : {
14488 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14489 : 0 : if (!HONOR_NANS (captures[0])
14490 : : )
14491 : : {
14492 : 0 : gimple_seq *lseq = seq;
14493 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2241;
14494 : 0 : {
14495 : 0 : res_op->set_op (EQ_EXPR, type, 2);
14496 : 0 : res_op->ops[0] = captures[0];
14497 : 0 : res_op->ops[1] = captures[1];
14498 : 0 : res_op->resimplify (lseq, valueize);
14499 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
14500 : 0 : return true;
14501 : : }
14502 : 0 : next_after_fail2241:;
14503 : : }
14504 : : }
14505 : : }
14506 : : }
14507 : 6644 : break;
14508 : : }
14509 : : default:;
14510 : : }
14511 : : }
14512 : : break;
14513 : 6644 : default:;
14514 : : }
14515 : 6644 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14516 : : {
14517 : 0 : {
14518 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14519 : 0 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR))
14520 : 0 : return true;
14521 : : }
14522 : : }
14523 : 6644 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
14524 : : {
14525 : 5272 : {
14526 : 5272 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14527 : 5272 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR))
14528 : 5267 : return true;
14529 : : }
14530 : : }
14531 : 76487161 : break;
14532 : : }
14533 : : default:;
14534 : : }
14535 : : }
14536 : : break;
14537 : 76487161 : default:;
14538 : : }
14539 : 76487161 : if (gimple_with_possible_nonzero_bits (_p0, valueize))
14540 : : {
14541 : 75059696 : if (gimple_with_known_nonzero_bits (_p1, valueize))
14542 : : {
14543 : 64842797 : {
14544 : 64842797 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
14545 : 64842797 : if (gimple_simplify_242 (res_op, seq, valueize, type, captures, EQ_EXPR))
14546 : 8735 : return true;
14547 : : }
14548 : : }
14549 : : }
14550 : 76478426 : if (gimple_with_known_nonzero_bits (_p0, valueize))
14551 : : {
14552 : 55807420 : if (gimple_with_possible_nonzero_bits (_p1, valueize))
14553 : : {
14554 : 55807420 : {
14555 : 55807420 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
14556 : 55807420 : if (gimple_simplify_242 (res_op, seq, valueize, type, captures, EQ_EXPR))
14557 : 765 : return true;
14558 : : }
14559 : : }
14560 : : }
14561 : 76477661 : switch (TREE_CODE (_p1))
14562 : : {
14563 : 11857379 : case SSA_NAME:
14564 : 11857379 : if (gimple *_d1 = get_def (valueize, _p1))
14565 : : {
14566 : 3967008 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14567 : 5755627 : switch (gimple_assign_rhs_code (_a1))
14568 : : {
14569 : 1628 : case MIN_EXPR:
14570 : 1628 : {
14571 : 1628 : tree _q30 = gimple_assign_rhs1 (_a1);
14572 : 1628 : _q30 = do_valueize (valueize, _q30);
14573 : 1628 : tree _q31 = gimple_assign_rhs2 (_a1);
14574 : 1628 : _q31 = do_valueize (valueize, _q31);
14575 : 1628 : if (tree_swap_operands_p (_q30, _q31))
14576 : 282 : std::swap (_q30, _q31);
14577 : 1628 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
14578 : : {
14579 : 9 : {
14580 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
14581 : 9 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR))
14582 : 9 : return true;
14583 : : }
14584 : : }
14585 : 1619 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
14586 : : {
14587 : 26 : {
14588 : 26 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
14589 : 26 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR))
14590 : 26 : return true;
14591 : : }
14592 : : }
14593 : 76477612 : break;
14594 : : }
14595 : 470 : case MAX_EXPR:
14596 : 470 : {
14597 : 470 : tree _q30 = gimple_assign_rhs1 (_a1);
14598 : 470 : _q30 = do_valueize (valueize, _q30);
14599 : 470 : tree _q31 = gimple_assign_rhs2 (_a1);
14600 : 470 : _q31 = do_valueize (valueize, _q31);
14601 : 470 : if (tree_swap_operands_p (_q30, _q31))
14602 : 4 : std::swap (_q30, _q31);
14603 : 470 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
14604 : : {
14605 : 0 : {
14606 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
14607 : 0 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR))
14608 : 0 : return true;
14609 : : }
14610 : : }
14611 : 470 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
14612 : : {
14613 : 14 : {
14614 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
14615 : 14 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR))
14616 : 14 : return true;
14617 : : }
14618 : : }
14619 : 76477612 : break;
14620 : : }
14621 : : default:;
14622 : : }
14623 : : }
14624 : : break;
14625 : 76477612 : default:;
14626 : : }
14627 : 76477612 : switch (TREE_CODE (_p0))
14628 : : {
14629 : 75639916 : case SSA_NAME:
14630 : 75639916 : if (gimple *_d1 = get_def (valueize, _p0))
14631 : : {
14632 : 25995636 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14633 : 31450315 : switch (gimple_assign_rhs_code (_a1))
14634 : : {
14635 : 62288 : case MIN_EXPR:
14636 : 62288 : {
14637 : 62288 : tree _q20 = gimple_assign_rhs1 (_a1);
14638 : 62288 : _q20 = do_valueize (valueize, _q20);
14639 : 62288 : tree _q21 = gimple_assign_rhs2 (_a1);
14640 : 62288 : _q21 = do_valueize (valueize, _q21);
14641 : 62288 : if (tree_swap_operands_p (_q20, _q21))
14642 : 7666 : std::swap (_q20, _q21);
14643 : 62288 : switch (TREE_CODE (_q21))
14644 : : {
14645 : 4995 : case INTEGER_CST:
14646 : 4995 : {
14647 : 4995 : switch (TREE_CODE (_p1))
14648 : : {
14649 : 4745 : case INTEGER_CST:
14650 : 4745 : {
14651 : 4745 : {
14652 : 4745 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14653 : 4745 : if (gimple_simplify_245 (res_op, seq, valueize, type, captures, EQ_EXPR))
14654 : 4745 : return true;
14655 : : }
14656 : 0 : break;
14657 : : }
14658 : : default:;
14659 : : }
14660 : : break;
14661 : : }
14662 : : default:;
14663 : : }
14664 : 76472111 : break;
14665 : : }
14666 : 1377 : case MAX_EXPR:
14667 : 1377 : {
14668 : 1377 : tree _q20 = gimple_assign_rhs1 (_a1);
14669 : 1377 : _q20 = do_valueize (valueize, _q20);
14670 : 1377 : tree _q21 = gimple_assign_rhs2 (_a1);
14671 : 1377 : _q21 = do_valueize (valueize, _q21);
14672 : 1377 : if (tree_swap_operands_p (_q20, _q21))
14673 : 89 : std::swap (_q20, _q21);
14674 : 1377 : switch (TREE_CODE (_q21))
14675 : : {
14676 : 615 : case INTEGER_CST:
14677 : 615 : {
14678 : 615 : switch (TREE_CODE (_p1))
14679 : : {
14680 : 179 : case INTEGER_CST:
14681 : 179 : {
14682 : 179 : {
14683 : 179 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14684 : 179 : if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR))
14685 : 179 : return true;
14686 : : }
14687 : 0 : break;
14688 : : }
14689 : : default:;
14690 : : }
14691 : : break;
14692 : : }
14693 : 1198 : default:;
14694 : : }
14695 : 1198 : if (integer_zerop (_p1))
14696 : : {
14697 : 120 : {
14698 : 120 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14699 : 120 : if (gimple_simplify_247 (res_op, seq, valueize, type, captures, EQ_EXPR))
14700 : 30 : return true;
14701 : : }
14702 : : }
14703 : 76472111 : break;
14704 : : }
14705 : 1205238 : case BIT_AND_EXPR:
14706 : 1205238 : {
14707 : 1205238 : tree _q20 = gimple_assign_rhs1 (_a1);
14708 : 1205238 : _q20 = do_valueize (valueize, _q20);
14709 : 1205238 : tree _q21 = gimple_assign_rhs2 (_a1);
14710 : 1205238 : _q21 = do_valueize (valueize, _q21);
14711 : 1205238 : if (tree_swap_operands_p (_q20, _q21))
14712 : 5934 : std::swap (_q20, _q21);
14713 : 1205238 : switch (TREE_CODE (_q20))
14714 : : {
14715 : 1205238 : case SSA_NAME:
14716 : 1205238 : if (gimple *_d2 = get_def (valueize, _q20))
14717 : : {
14718 : 1160601 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14719 : 1651152 : switch (gimple_assign_rhs_code (_a2))
14720 : : {
14721 : 1711 : case LSHIFT_EXPR:
14722 : 1711 : {
14723 : 1711 : tree _q30 = gimple_assign_rhs1 (_a2);
14724 : 1711 : _q30 = do_valueize (valueize, _q30);
14725 : 1711 : tree _q31 = gimple_assign_rhs2 (_a2);
14726 : 1711 : _q31 = do_valueize (valueize, _q31);
14727 : 1711 : if (integer_pow2p (_q30))
14728 : : {
14729 : 1266 : if (integer_pow2p (_q21))
14730 : : {
14731 : 1 : if (integer_zerop (_p1))
14732 : : {
14733 : 1 : {
14734 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
14735 : 1 : if (gimple_simplify_248 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
14736 : 1 : return true;
14737 : : }
14738 : : }
14739 : : }
14740 : : }
14741 : 1710 : switch (TREE_CODE (_q31))
14742 : : {
14743 : 423 : case INTEGER_CST:
14744 : 423 : {
14745 : 423 : switch (TREE_CODE (_q21))
14746 : : {
14747 : 423 : case INTEGER_CST:
14748 : 423 : {
14749 : 423 : switch (TREE_CODE (_p1))
14750 : : {
14751 : 423 : case INTEGER_CST:
14752 : 423 : {
14753 : 423 : {
14754 : 423 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
14755 : 423 : if (gimple_simplify_249 (res_op, seq, valueize, type, captures, EQ_EXPR))
14756 : 15 : return true;
14757 : : }
14758 : 408 : break;
14759 : : }
14760 : : default:;
14761 : : }
14762 : : break;
14763 : : }
14764 : : default:;
14765 : : }
14766 : : break;
14767 : : }
14768 : 1695 : default:;
14769 : : }
14770 : 1695 : if (integer_onep (_q30))
14771 : : {
14772 : 1267 : if (integer_pow2p (_q21))
14773 : : {
14774 : 0 : if (integer_zerop (_p1))
14775 : : {
14776 : 0 : {
14777 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
14778 : 0 : if (gimple_simplify_250 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
14779 : 0 : return true;
14780 : : }
14781 : : }
14782 : : }
14783 : : }
14784 : : break;
14785 : : }
14786 : 22215 : case RSHIFT_EXPR:
14787 : 22215 : {
14788 : 22215 : tree _q30 = gimple_assign_rhs1 (_a2);
14789 : 22215 : _q30 = do_valueize (valueize, _q30);
14790 : 22215 : tree _q31 = gimple_assign_rhs2 (_a2);
14791 : 22215 : _q31 = do_valueize (valueize, _q31);
14792 : 22215 : if (integer_pow2p (_q30))
14793 : : {
14794 : 10 : if (integer_pow2p (_q21))
14795 : : {
14796 : 10 : if (integer_zerop (_p1))
14797 : : {
14798 : 10 : {
14799 : 10 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
14800 : 10 : if (gimple_simplify_251 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
14801 : 10 : return true;
14802 : : }
14803 : : }
14804 : : }
14805 : : }
14806 : 22205 : switch (TREE_CODE (_q31))
14807 : : {
14808 : 5770 : case INTEGER_CST:
14809 : 5770 : {
14810 : 5770 : switch (TREE_CODE (_q21))
14811 : : {
14812 : 5728 : case INTEGER_CST:
14813 : 5728 : {
14814 : 5728 : switch (TREE_CODE (_p1))
14815 : : {
14816 : 5728 : case INTEGER_CST:
14817 : 5728 : {
14818 : 5728 : {
14819 : 5728 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
14820 : 5728 : if (gimple_simplify_252 (res_op, seq, valueize, type, captures, EQ_EXPR))
14821 : 432 : return true;
14822 : : }
14823 : 5296 : break;
14824 : : }
14825 : : default:;
14826 : : }
14827 : : break;
14828 : : }
14829 : : default:;
14830 : : }
14831 : : break;
14832 : : }
14833 : : default:;
14834 : : }
14835 : : break;
14836 : : }
14837 : : default:;
14838 : : }
14839 : : }
14840 : : break;
14841 : 1204780 : default:;
14842 : : }
14843 : 1204780 : {
14844 : 1204780 : tree _q20_pops[1];
14845 : 1204780 : if (gimple_nop_convert (_q20, _q20_pops, valueize))
14846 : : {
14847 : 15209 : tree _q30 = _q20_pops[0];
14848 : 15209 : switch (TREE_CODE (_q30))
14849 : : {
14850 : 15087 : case SSA_NAME:
14851 : 15087 : if (gimple *_d2 = get_def (valueize, _q30))
14852 : : {
14853 : 14882 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14854 : 15006 : switch (gimple_assign_rhs_code (_a2))
14855 : : {
14856 : 1383 : case LSHIFT_EXPR:
14857 : 1383 : {
14858 : 1383 : tree _q40 = gimple_assign_rhs1 (_a2);
14859 : 1383 : _q40 = do_valueize (valueize, _q40);
14860 : 1383 : tree _q41 = gimple_assign_rhs2 (_a2);
14861 : 1383 : _q41 = do_valueize (valueize, _q41);
14862 : 1383 : if (integer_onep (_q40))
14863 : : {
14864 : 1381 : if (integer_pow2p (_q21))
14865 : : {
14866 : 2 : if (integer_zerop (_p1))
14867 : : {
14868 : 2 : {
14869 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
14870 : 2 : if (gimple_simplify_250 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
14871 : 2 : return true;
14872 : : }
14873 : : }
14874 : : }
14875 : : }
14876 : : break;
14877 : : }
14878 : : default:;
14879 : : }
14880 : : }
14881 : : break;
14882 : : default:;
14883 : : }
14884 : : }
14885 : : }
14886 : 1204778 : break;
14887 : : }
14888 : 17448 : case LSHIFT_EXPR:
14889 : 17448 : {
14890 : 17448 : tree _q20 = gimple_assign_rhs1 (_a1);
14891 : 17448 : _q20 = do_valueize (valueize, _q20);
14892 : 17448 : tree _q21 = gimple_assign_rhs2 (_a1);
14893 : 17448 : _q21 = do_valueize (valueize, _q21);
14894 : 17448 : switch (TREE_CODE (_q20))
14895 : : {
14896 : 586 : case INTEGER_CST:
14897 : 586 : {
14898 : 586 : switch (TREE_CODE (_p1))
14899 : : {
14900 : 147 : case INTEGER_CST:
14901 : 147 : {
14902 : 147 : {
14903 : 147 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14904 : 147 : if (gimple_simplify_253 (res_op, seq, valueize, type, captures, EQ_EXPR))
14905 : 75 : return true;
14906 : : }
14907 : 72 : break;
14908 : : }
14909 : : default:;
14910 : : }
14911 : : break;
14912 : : }
14913 : : default:;
14914 : : }
14915 : : break;
14916 : : }
14917 : 0 : case LROTATE_EXPR:
14918 : 0 : {
14919 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14920 : 0 : _q20 = do_valueize (valueize, _q20);
14921 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
14922 : 0 : _q21 = do_valueize (valueize, _q21);
14923 : 0 : switch (TREE_CODE (_p1))
14924 : : {
14925 : 0 : case SSA_NAME:
14926 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
14927 : : {
14928 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14929 : 0 : switch (gimple_assign_rhs_code (_a2))
14930 : : {
14931 : 0 : case LROTATE_EXPR:
14932 : 0 : {
14933 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
14934 : 0 : _q50 = do_valueize (valueize, _q50);
14935 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
14936 : 0 : _q51 = do_valueize (valueize, _q51);
14937 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14938 : : {
14939 : 0 : {
14940 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
14941 : 0 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR))
14942 : 0 : return true;
14943 : : }
14944 : : }
14945 : : break;
14946 : : }
14947 : : default:;
14948 : : }
14949 : : }
14950 : : break;
14951 : 0 : default:;
14952 : : }
14953 : 0 : switch (TREE_CODE (_q21))
14954 : : {
14955 : 0 : case INTEGER_CST:
14956 : 0 : {
14957 : 0 : switch (TREE_CODE (_p1))
14958 : : {
14959 : 0 : case INTEGER_CST:
14960 : 0 : {
14961 : 0 : {
14962 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14963 : 0 : if (gimple_simplify_255 (res_op, seq, valueize, type, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR))
14964 : 0 : return true;
14965 : : }
14966 : 0 : break;
14967 : : }
14968 : : default:;
14969 : : }
14970 : : break;
14971 : : }
14972 : 0 : default:;
14973 : : }
14974 : 0 : switch (TREE_CODE (_p1))
14975 : : {
14976 : 0 : case INTEGER_CST:
14977 : 0 : {
14978 : 0 : {
14979 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14980 : 0 : if (gimple_simplify_256 (res_op, seq, valueize, type, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR))
14981 : 0 : return true;
14982 : : }
14983 : 0 : break;
14984 : : }
14985 : : default:;
14986 : : }
14987 : : break;
14988 : : }
14989 : 44 : case RROTATE_EXPR:
14990 : 44 : {
14991 : 44 : tree _q20 = gimple_assign_rhs1 (_a1);
14992 : 44 : _q20 = do_valueize (valueize, _q20);
14993 : 44 : tree _q21 = gimple_assign_rhs2 (_a1);
14994 : 44 : _q21 = do_valueize (valueize, _q21);
14995 : 44 : switch (TREE_CODE (_p1))
14996 : : {
14997 : 38 : case SSA_NAME:
14998 : 38 : if (gimple *_d2 = get_def (valueize, _p1))
14999 : : {
15000 : 38 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15001 : 74 : switch (gimple_assign_rhs_code (_a2))
15002 : : {
15003 : 2 : case RROTATE_EXPR:
15004 : 2 : {
15005 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
15006 : 2 : _q50 = do_valueize (valueize, _q50);
15007 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
15008 : 2 : _q51 = do_valueize (valueize, _q51);
15009 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15010 : : {
15011 : 2 : {
15012 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
15013 : 2 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR))
15014 : 2 : return true;
15015 : : }
15016 : : }
15017 : : break;
15018 : : }
15019 : : default:;
15020 : : }
15021 : : }
15022 : : break;
15023 : 42 : default:;
15024 : : }
15025 : 42 : switch (TREE_CODE (_q21))
15026 : : {
15027 : 42 : case INTEGER_CST:
15028 : 42 : {
15029 : 42 : switch (TREE_CODE (_p1))
15030 : : {
15031 : 6 : case INTEGER_CST:
15032 : 6 : {
15033 : 6 : {
15034 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15035 : 6 : if (gimple_simplify_255 (res_op, seq, valueize, type, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR))
15036 : 6 : return true;
15037 : : }
15038 : 0 : break;
15039 : : }
15040 : : default:;
15041 : : }
15042 : : break;
15043 : : }
15044 : 36 : default:;
15045 : : }
15046 : 36 : switch (TREE_CODE (_p1))
15047 : : {
15048 : 0 : case INTEGER_CST:
15049 : 0 : {
15050 : 0 : {
15051 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15052 : 0 : if (gimple_simplify_256 (res_op, seq, valueize, type, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR))
15053 : 0 : return true;
15054 : : }
15055 : 0 : break;
15056 : : }
15057 : : default:;
15058 : : }
15059 : : break;
15060 : : }
15061 : 72423 : case MULT_EXPR:
15062 : 72423 : {
15063 : 72423 : tree _q20 = gimple_assign_rhs1 (_a1);
15064 : 72423 : _q20 = do_valueize (valueize, _q20);
15065 : 72423 : tree _q21 = gimple_assign_rhs2 (_a1);
15066 : 72423 : _q21 = do_valueize (valueize, _q21);
15067 : 72423 : if (tree_swap_operands_p (_q20, _q21))
15068 : 448 : std::swap (_q20, _q21);
15069 : 72423 : switch (TREE_CODE (_q20))
15070 : : {
15071 : 72263 : case SSA_NAME:
15072 : 72263 : if (gimple *_d2 = get_def (valueize, _q20))
15073 : : {
15074 : 72005 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15075 : 74572 : switch (gimple_assign_rhs_code (_a2))
15076 : : {
15077 : 545 : case TRUNC_DIV_EXPR:
15078 : 545 : {
15079 : 545 : tree _q30 = gimple_assign_rhs1 (_a2);
15080 : 545 : _q30 = do_valueize (valueize, _q30);
15081 : 545 : tree _q31 = gimple_assign_rhs2 (_a2);
15082 : 545 : _q31 = do_valueize (valueize, _q31);
15083 : 545 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
15084 : : {
15085 : 49 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
15086 : : {
15087 : 17 : {
15088 : 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
15089 : 17 : if (gimple_simplify_257 (res_op, seq, valueize, type, captures))
15090 : 4 : return true;
15091 : : }
15092 : : }
15093 : : }
15094 : : break;
15095 : : }
15096 : : default:;
15097 : : }
15098 : : }
15099 : : break;
15100 : 72419 : default:;
15101 : : }
15102 : 72419 : switch (TREE_CODE (_q21))
15103 : : {
15104 : 6745 : case SSA_NAME:
15105 : 6745 : if (gimple *_d2 = get_def (valueize, _q21))
15106 : : {
15107 : 6645 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15108 : 5970 : switch (gimple_assign_rhs_code (_a2))
15109 : : {
15110 : 6 : case TRUNC_DIV_EXPR:
15111 : 6 : {
15112 : 6 : tree _q40 = gimple_assign_rhs1 (_a2);
15113 : 6 : _q40 = do_valueize (valueize, _q40);
15114 : 6 : tree _q41 = gimple_assign_rhs2 (_a2);
15115 : 6 : _q41 = do_valueize (valueize, _q41);
15116 : 6 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
15117 : : {
15118 : 3 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
15119 : : {
15120 : 0 : {
15121 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15122 : 0 : if (gimple_simplify_257 (res_op, seq, valueize, type, captures))
15123 : 0 : return true;
15124 : : }
15125 : : }
15126 : : }
15127 : : break;
15128 : : }
15129 : : default:;
15130 : : }
15131 : : }
15132 : : break;
15133 : : default:;
15134 : : }
15135 : 76472111 : break;
15136 : : }
15137 : : default:;
15138 : : }
15139 : : }
15140 : : break;
15141 : 76472111 : default:;
15142 : : }
15143 : 76472111 : switch (TREE_CODE (_p1))
15144 : : {
15145 : 11857324 : case SSA_NAME:
15146 : 11857324 : if (gimple *_d1 = get_def (valueize, _p1))
15147 : : {
15148 : 3966953 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15149 : 5755576 : switch (gimple_assign_rhs_code (_a1))
15150 : : {
15151 : 18793 : case MULT_EXPR:
15152 : 18793 : {
15153 : 18793 : tree _q30 = gimple_assign_rhs1 (_a1);
15154 : 18793 : _q30 = do_valueize (valueize, _q30);
15155 : 18793 : tree _q31 = gimple_assign_rhs2 (_a1);
15156 : 18793 : _q31 = do_valueize (valueize, _q31);
15157 : 18793 : if (tree_swap_operands_p (_q30, _q31))
15158 : 63 : std::swap (_q30, _q31);
15159 : 18793 : switch (TREE_CODE (_q30))
15160 : : {
15161 : 18793 : case SSA_NAME:
15162 : 18793 : if (gimple *_d2 = get_def (valueize, _q30))
15163 : : {
15164 : 18555 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15165 : 19127 : switch (gimple_assign_rhs_code (_a2))
15166 : : {
15167 : 80 : case TRUNC_DIV_EXPR:
15168 : 80 : {
15169 : 80 : tree _q40 = gimple_assign_rhs1 (_a2);
15170 : 80 : _q40 = do_valueize (valueize, _q40);
15171 : 80 : tree _q41 = gimple_assign_rhs2 (_a2);
15172 : 80 : _q41 = do_valueize (valueize, _q41);
15173 : 80 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
15174 : : {
15175 : 24 : if ((_q31 == _q41 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q41, 0) && types_match (_q31, _q41)))
15176 : : {
15177 : 24 : {
15178 : 24 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
15179 : 24 : if (gimple_simplify_257 (res_op, seq, valueize, type, captures))
15180 : 0 : return true;
15181 : : }
15182 : : }
15183 : : }
15184 : : break;
15185 : : }
15186 : : default:;
15187 : : }
15188 : : }
15189 : : break;
15190 : 18793 : default:;
15191 : : }
15192 : 18793 : switch (TREE_CODE (_q31))
15193 : : {
15194 : 3530 : case SSA_NAME:
15195 : 3530 : if (gimple *_d2 = get_def (valueize, _q31))
15196 : : {
15197 : 3495 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15198 : 3182 : switch (gimple_assign_rhs_code (_a2))
15199 : : {
15200 : 43 : case TRUNC_DIV_EXPR:
15201 : 43 : {
15202 : 43 : tree _q50 = gimple_assign_rhs1 (_a2);
15203 : 43 : _q50 = do_valueize (valueize, _q50);
15204 : 43 : tree _q51 = gimple_assign_rhs2 (_a2);
15205 : 43 : _q51 = do_valueize (valueize, _q51);
15206 : 43 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
15207 : : {
15208 : 43 : if ((_q51 == _q30 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q30, 0) && types_match (_q51, _q30)))
15209 : : {
15210 : 43 : {
15211 : 43 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _p0, _q30 };
15212 : 43 : if (gimple_simplify_257 (res_op, seq, valueize, type, captures))
15213 : 2 : return true;
15214 : : }
15215 : : }
15216 : : }
15217 : : break;
15218 : : }
15219 : : default:;
15220 : : }
15221 : : }
15222 : : break;
15223 : : default:;
15224 : : }
15225 : 76472109 : break;
15226 : : }
15227 : : default:;
15228 : : }
15229 : : }
15230 : : break;
15231 : 76472109 : default:;
15232 : : }
15233 : 76472109 : switch (TREE_CODE (_p0))
15234 : : {
15235 : 75634413 : case SSA_NAME:
15236 : 75634413 : if (gimple *_d1 = get_def (valueize, _p0))
15237 : : {
15238 : 25990133 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15239 : 31444810 : switch (gimple_assign_rhs_code (_a1))
15240 : : {
15241 : 196 : case VEC_COND_EXPR:
15242 : 196 : {
15243 : 196 : tree _q20 = gimple_assign_rhs1 (_a1);
15244 : 196 : _q20 = do_valueize (valueize, _q20);
15245 : 196 : tree _q21 = gimple_assign_rhs2 (_a1);
15246 : 196 : _q21 = do_valueize (valueize, _q21);
15247 : 196 : tree _q22 = gimple_assign_rhs3 (_a1);
15248 : 196 : _q22 = do_valueize (valueize, _q22);
15249 : 196 : switch (TREE_CODE (_p1))
15250 : : {
15251 : 147 : case SSA_NAME:
15252 : 147 : if (gimple *_d2 = get_def (valueize, _p1))
15253 : : {
15254 : 147 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15255 : 200 : switch (gimple_assign_rhs_code (_a2))
15256 : : {
15257 : 94 : case VEC_COND_EXPR:
15258 : 94 : {
15259 : 94 : tree _q60 = gimple_assign_rhs1 (_a2);
15260 : 94 : _q60 = do_valueize (valueize, _q60);
15261 : 94 : tree _q61 = gimple_assign_rhs2 (_a2);
15262 : 94 : _q61 = do_valueize (valueize, _q61);
15263 : 94 : tree _q62 = gimple_assign_rhs3 (_a2);
15264 : 94 : _q62 = do_valueize (valueize, _q62);
15265 : 94 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15266 : : {
15267 : 0 : {
15268 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
15269 : 0 : if (VECTOR_TYPE_P (type)
15270 : 0 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
15271 : 0 : || types_match (type, TREE_TYPE (captures[2]))
15272 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
15273 : : || (optimize_vectors_before_lowering_p ()
15274 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
15275 : : )
15276 : : {
15277 : 0 : gimple_seq *lseq = seq;
15278 : 0 : if (lseq
15279 : 0 : && (!single_use (captures[0])
15280 : 0 : || !single_use (captures[4])))
15281 : 0 : lseq = NULL;
15282 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2242;
15283 : 0 : {
15284 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
15285 : 0 : res_op->ops[0] = captures[1];
15286 : 0 : {
15287 : 0 : tree _o1[2], _r1;
15288 : 0 : _o1[0] = captures[2];
15289 : 0 : _o1[1] = captures[5];
15290 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o1[0], _o1[1]);
15291 : 0 : tem_op.resimplify (NULL, valueize);
15292 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15293 : 0 : if (!_r1) goto next_after_fail2242;
15294 : 0 : res_op->ops[1] = _r1;
15295 : : }
15296 : 0 : {
15297 : 0 : tree _o1[2], _r1;
15298 : 0 : _o1[0] = captures[3];
15299 : 0 : _o1[1] = captures[6];
15300 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o1[0], _o1[1]);
15301 : 0 : tem_op.resimplify (NULL, valueize);
15302 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15303 : 0 : if (!_r1) goto next_after_fail2242;
15304 : 0 : res_op->ops[2] = _r1;
15305 : : }
15306 : 0 : res_op->resimplify (lseq, valueize);
15307 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
15308 : 0 : return true;
15309 : : }
15310 : 0 : next_after_fail2242:;
15311 : : }
15312 : : }
15313 : : }
15314 : : break;
15315 : : }
15316 : : default:;
15317 : : }
15318 : : }
15319 : : break;
15320 : 196 : default:;
15321 : : }
15322 : 196 : {
15323 : 196 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
15324 : 196 : if (VECTOR_TYPE_P (type)
15325 : 196 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
15326 : 196 : || types_match (type, TREE_TYPE (captures[2]))
15327 : 196 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
15328 : : || (optimize_vectors_before_lowering_p ()
15329 : 86 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
15330 : : )
15331 : : {
15332 : 196 : gimple_seq *lseq = seq;
15333 : 196 : if (lseq
15334 : 70 : && (!single_use (captures[0])))
15335 : 134 : lseq = NULL;
15336 : 196 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2243;
15337 : 196 : {
15338 : 196 : res_op->set_op (VEC_COND_EXPR, type, 3);
15339 : 196 : res_op->ops[0] = captures[1];
15340 : 196 : {
15341 : 196 : tree _o1[2], _r1;
15342 : 196 : _o1[0] = captures[2];
15343 : 196 : _o1[1] = captures[4];
15344 : 196 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o1[0], _o1[1]);
15345 : 196 : tem_op.resimplify (NULL, valueize);
15346 : 196 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15347 : 196 : if (!_r1) goto next_after_fail2243;
15348 : 57 : res_op->ops[1] = _r1;
15349 : : }
15350 : 57 : {
15351 : 57 : tree _o1[2], _r1;
15352 : 57 : _o1[0] = captures[3];
15353 : 57 : _o1[1] = captures[4];
15354 : 57 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o1[0], _o1[1]);
15355 : 57 : tem_op.resimplify (NULL, valueize);
15356 : 57 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15357 : 57 : if (!_r1) goto next_after_fail2243;
15358 : 46 : res_op->ops[2] = _r1;
15359 : : }
15360 : 46 : res_op->resimplify (lseq, valueize);
15361 : 46 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
15362 : 46 : return true;
15363 : : }
15364 : 150 : next_after_fail2243:;
15365 : : }
15366 : : }
15367 : 150 : break;
15368 : : }
15369 : : default:;
15370 : : }
15371 : 8389450 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
15372 : 4813648 : switch (gimple_call_combined_fn (_c1))
15373 : : {
15374 : 0 : case CFN_BUILT_IN_BSWAP128:
15375 : 0 : if (gimple_call_num_args (_c1) == 1)
15376 : : {
15377 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
15378 : 0 : _q20 = do_valueize (valueize, _q20);
15379 : 0 : switch (TREE_CODE (_p1))
15380 : : {
15381 : 0 : case SSA_NAME:
15382 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15383 : : {
15384 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15385 : 0 : switch (gimple_call_combined_fn (_c2))
15386 : : {
15387 : 0 : case CFN_BUILT_IN_BSWAP128:
15388 : 0 : if (gimple_call_num_args (_c2) == 1)
15389 : : {
15390 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
15391 : 0 : _q40 = do_valueize (valueize, _q40);
15392 : 0 : {
15393 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15394 : 0 : if (gimple_simplify_258 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128))
15395 : 0 : return true;
15396 : : }
15397 : : }
15398 : : break;
15399 : : default:;
15400 : : }
15401 : : }
15402 : : break;
15403 : 0 : case INTEGER_CST:
15404 : 0 : {
15405 : 0 : {
15406 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
15407 : 0 : if (gimple_simplify_259 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128))
15408 : 0 : return true;
15409 : : }
15410 : 0 : break;
15411 : : }
15412 : : default:;
15413 : : }
15414 : : }
15415 : : break;
15416 : 23 : case CFN_BUILT_IN_BSWAP16:
15417 : 23 : if (gimple_call_num_args (_c1) == 1)
15418 : : {
15419 : 23 : tree _q20 = gimple_call_arg (_c1, 0);
15420 : 23 : _q20 = do_valueize (valueize, _q20);
15421 : 23 : switch (TREE_CODE (_p1))
15422 : : {
15423 : 21 : case SSA_NAME:
15424 : 21 : if (gimple *_d2 = get_def (valueize, _p1))
15425 : : {
15426 : 21 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15427 : 21 : switch (gimple_call_combined_fn (_c2))
15428 : : {
15429 : 21 : case CFN_BUILT_IN_BSWAP16:
15430 : 21 : if (gimple_call_num_args (_c2) == 1)
15431 : : {
15432 : 21 : tree _q40 = gimple_call_arg (_c2, 0);
15433 : 21 : _q40 = do_valueize (valueize, _q40);
15434 : 21 : {
15435 : 21 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15436 : 21 : if (gimple_simplify_258 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16))
15437 : 21 : return true;
15438 : : }
15439 : : }
15440 : : break;
15441 : : default:;
15442 : : }
15443 : : }
15444 : : break;
15445 : 2 : case INTEGER_CST:
15446 : 2 : {
15447 : 2 : {
15448 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
15449 : 2 : if (gimple_simplify_259 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16))
15450 : 2 : return true;
15451 : : }
15452 : 0 : break;
15453 : : }
15454 : : default:;
15455 : : }
15456 : : }
15457 : : break;
15458 : 36 : case CFN_BUILT_IN_BSWAP32:
15459 : 36 : if (gimple_call_num_args (_c1) == 1)
15460 : : {
15461 : 36 : tree _q20 = gimple_call_arg (_c1, 0);
15462 : 36 : _q20 = do_valueize (valueize, _q20);
15463 : 36 : switch (TREE_CODE (_p1))
15464 : : {
15465 : 14 : case SSA_NAME:
15466 : 14 : if (gimple *_d2 = get_def (valueize, _p1))
15467 : : {
15468 : 14 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15469 : 14 : switch (gimple_call_combined_fn (_c2))
15470 : : {
15471 : 14 : case CFN_BUILT_IN_BSWAP32:
15472 : 14 : if (gimple_call_num_args (_c2) == 1)
15473 : : {
15474 : 14 : tree _q40 = gimple_call_arg (_c2, 0);
15475 : 14 : _q40 = do_valueize (valueize, _q40);
15476 : 14 : {
15477 : 14 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15478 : 14 : if (gimple_simplify_258 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32))
15479 : 14 : return true;
15480 : : }
15481 : : }
15482 : : break;
15483 : : default:;
15484 : : }
15485 : : }
15486 : : break;
15487 : 22 : case INTEGER_CST:
15488 : 22 : {
15489 : 22 : {
15490 : 22 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
15491 : 22 : if (gimple_simplify_259 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32))
15492 : 22 : return true;
15493 : : }
15494 : 0 : break;
15495 : : }
15496 : : default:;
15497 : : }
15498 : : }
15499 : : break;
15500 : 14 : case CFN_BUILT_IN_BSWAP64:
15501 : 14 : if (gimple_call_num_args (_c1) == 1)
15502 : : {
15503 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
15504 : 14 : _q20 = do_valueize (valueize, _q20);
15505 : 14 : switch (TREE_CODE (_p1))
15506 : : {
15507 : 0 : case SSA_NAME:
15508 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15509 : : {
15510 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
15511 : 0 : switch (gimple_call_combined_fn (_c2))
15512 : : {
15513 : 0 : case CFN_BUILT_IN_BSWAP64:
15514 : 0 : if (gimple_call_num_args (_c2) == 1)
15515 : : {
15516 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
15517 : 0 : _q40 = do_valueize (valueize, _q40);
15518 : 0 : {
15519 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
15520 : 0 : if (gimple_simplify_258 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64))
15521 : 0 : return true;
15522 : : }
15523 : : }
15524 : : break;
15525 : : default:;
15526 : : }
15527 : : }
15528 : : break;
15529 : 14 : case INTEGER_CST:
15530 : 14 : {
15531 : 14 : {
15532 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
15533 : 14 : if (gimple_simplify_259 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64))
15534 : 14 : return true;
15535 : : }
15536 : 0 : break;
15537 : : }
15538 : : default:;
15539 : : }
15540 : : }
15541 : : break;
15542 : : default:;
15543 : : }
15544 : : }
15545 : : break;
15546 : 76471990 : default:;
15547 : : }
15548 : 76471990 : switch (TREE_CODE (_p1))
15549 : : {
15550 : 11857287 : case SSA_NAME:
15551 : 11857287 : if (gimple *_d1 = get_def (valueize, _p1))
15552 : : {
15553 : 3966916 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15554 : 5755574 : switch (gimple_assign_rhs_code (_a1))
15555 : : {
15556 : 271 : case VEC_COND_EXPR:
15557 : 271 : {
15558 : 271 : tree _q30 = gimple_assign_rhs1 (_a1);
15559 : 271 : _q30 = do_valueize (valueize, _q30);
15560 : 271 : tree _q31 = gimple_assign_rhs2 (_a1);
15561 : 271 : _q31 = do_valueize (valueize, _q31);
15562 : 271 : tree _q32 = gimple_assign_rhs3 (_a1);
15563 : 271 : _q32 = do_valueize (valueize, _q32);
15564 : 271 : {
15565 : 271 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
15566 : 271 : if (VECTOR_TYPE_P (type)
15567 : 271 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
15568 : 271 : || types_match (type, TREE_TYPE (captures[3]))
15569 : 271 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
15570 : : || (optimize_vectors_before_lowering_p ()
15571 : 222 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
15572 : : )
15573 : : {
15574 : 271 : gimple_seq *lseq = seq;
15575 : 271 : if (lseq
15576 : 43 : && (!single_use (captures[1])))
15577 : 228 : lseq = NULL;
15578 : 271 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2244;
15579 : 271 : {
15580 : 271 : res_op->set_op (VEC_COND_EXPR, type, 3);
15581 : 271 : res_op->ops[0] = captures[2];
15582 : 271 : {
15583 : 271 : tree _o1[2], _r1;
15584 : 271 : _o1[0] = captures[0];
15585 : 271 : _o1[1] = captures[3];
15586 : 271 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o1[0], _o1[1]);
15587 : 271 : tem_op.resimplify (NULL, valueize);
15588 : 271 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15589 : 271 : if (!_r1) goto next_after_fail2244;
15590 : 20 : res_op->ops[1] = _r1;
15591 : : }
15592 : 20 : {
15593 : 20 : tree _o1[2], _r1;
15594 : 20 : _o1[0] = captures[0];
15595 : 20 : _o1[1] = captures[4];
15596 : 20 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o1[0], _o1[1]);
15597 : 20 : tem_op.resimplify (NULL, valueize);
15598 : 20 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15599 : 20 : if (!_r1) goto next_after_fail2244;
15600 : 0 : res_op->ops[2] = _r1;
15601 : : }
15602 : 0 : res_op->resimplify (lseq, valueize);
15603 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
15604 : 0 : return true;
15605 : : }
15606 : 271 : next_after_fail2244:;
15607 : : }
15608 : : }
15609 : 271 : break;
15610 : : }
15611 : : default:;
15612 : : }
15613 : : }
15614 : : break;
15615 : 76471990 : default:;
15616 : : }
15617 : 76471990 : switch (TREE_CODE (_p0))
15618 : : {
15619 : 75634294 : case SSA_NAME:
15620 : 75634294 : if (gimple *_d1 = get_def (valueize, _p0))
15621 : : {
15622 : 25990014 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15623 : 31444764 : switch (gimple_assign_rhs_code (_a1))
15624 : : {
15625 : 9429 : case COND_EXPR:
15626 : 9429 : {
15627 : 9429 : tree _q20 = gimple_assign_rhs1 (_a1);
15628 : 9429 : _q20 = do_valueize (valueize, _q20);
15629 : 9429 : tree _q21 = gimple_assign_rhs2 (_a1);
15630 : 9429 : _q21 = do_valueize (valueize, _q21);
15631 : 9429 : tree _q22 = gimple_assign_rhs3 (_a1);
15632 : 9429 : _q22 = do_valueize (valueize, _q22);
15633 : 9429 : switch (TREE_CODE (_p1))
15634 : : {
15635 : 8620 : case SSA_NAME:
15636 : 8620 : if (gimple *_d2 = get_def (valueize, _p1))
15637 : : {
15638 : 8616 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15639 : 8675 : switch (gimple_assign_rhs_code (_a2))
15640 : : {
15641 : 57 : case COND_EXPR:
15642 : 57 : {
15643 : 57 : tree _q60 = gimple_assign_rhs1 (_a2);
15644 : 57 : _q60 = do_valueize (valueize, _q60);
15645 : 57 : tree _q61 = gimple_assign_rhs2 (_a2);
15646 : 57 : _q61 = do_valueize (valueize, _q61);
15647 : 57 : tree _q62 = gimple_assign_rhs3 (_a2);
15648 : 57 : _q62 = do_valueize (valueize, _q62);
15649 : 57 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
15650 : : {
15651 : 2 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
15652 : : {
15653 : 2 : {
15654 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
15655 : 2 : const enum tree_code eqne = EQ_EXPR;
15656 : 2 : if (!HONOR_NANS (captures[1])
15657 : 2 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
15658 : 4 : && types_match (type, TREE_TYPE (captures[0]))
15659 : : )
15660 : : {
15661 : 2 : gimple_seq *lseq = seq;
15662 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2245;
15663 : 2 : {
15664 : 2 : res_op->set_op (COND_EXPR, type, 3);
15665 : 2 : {
15666 : 2 : tree _o1[2], _r1;
15667 : 2 : {
15668 : 2 : tree _o2[2], _r2;
15669 : 2 : _o2[0] = captures[0];
15670 : 2 : if (COMPARISON_CLASS_P (_o2[0]))
15671 : : {
15672 : 0 : if (!seq) return false;
15673 : 0 : _o2[0] = gimple_build (seq, TREE_CODE (_o2[0]), TREE_TYPE (_o2[0]), TREE_OPERAND (_o2[0], 0), TREE_OPERAND (_o2[0], 1));
15674 : : }
15675 : 2 : _o2[1] = captures[3];
15676 : 2 : if (COMPARISON_CLASS_P (_o2[1]))
15677 : : {
15678 : 0 : if (!seq) return false;
15679 : 0 : _o2[1] = gimple_build (seq, TREE_CODE (_o2[1]), TREE_TYPE (_o2[1]), TREE_OPERAND (_o2[1], 0), TREE_OPERAND (_o2[1], 1));
15680 : : }
15681 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
15682 : 2 : tem_op.resimplify (lseq, valueize);
15683 : 2 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15684 : 2 : if (!_r2) goto next_after_fail2245;
15685 : 1 : _o1[0] = _r2;
15686 : : }
15687 : 1 : {
15688 : 1 : tree _o2[2], _r2;
15689 : 1 : _o2[0] = captures[1];
15690 : 1 : _o2[1] = captures[2];
15691 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o2[0], _o2[1]);
15692 : 1 : tem_op.resimplify (lseq, valueize);
15693 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15694 : 1 : if (!_r2) goto next_after_fail2245;
15695 : 1 : _o1[1] = _r2;
15696 : : }
15697 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15698 : 1 : tem_op.resimplify (lseq, valueize);
15699 : 1 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15700 : 1 : if (!_r1) goto next_after_fail2245;
15701 : 1 : res_op->ops[0] = _r1;
15702 : : }
15703 : 1 : res_op->ops[1] = constant_boolean_node (eqne == NE_EXPR, type);
15704 : 1 : res_op->ops[2] = constant_boolean_node (eqne != NE_EXPR, type);
15705 : 1 : res_op->resimplify (lseq, valueize);
15706 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1121, __FILE__, __LINE__, true);
15707 : 1 : return true;
15708 : : }
15709 : 1 : next_after_fail2245:;
15710 : : }
15711 : : }
15712 : : }
15713 : : }
15714 : 56 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
15715 : : {
15716 : 28 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
15717 : : {
15718 : 28 : {
15719 : 28 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
15720 : 28 : const enum tree_code eqne = EQ_EXPR;
15721 : 28 : if (!HONOR_NANS (captures[1])
15722 : 2 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
15723 : 30 : && types_match (type, TREE_TYPE (captures[0]))
15724 : : )
15725 : : {
15726 : 2 : gimple_seq *lseq = seq;
15727 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2246;
15728 : 2 : {
15729 : 2 : res_op->set_op (COND_EXPR, type, 3);
15730 : 2 : {
15731 : 2 : tree _o1[2], _r1;
15732 : 2 : {
15733 : 2 : tree _o2[2], _r2;
15734 : 2 : _o2[0] = captures[0];
15735 : 2 : if (COMPARISON_CLASS_P (_o2[0]))
15736 : : {
15737 : 0 : if (!seq) return false;
15738 : 0 : _o2[0] = gimple_build (seq, TREE_CODE (_o2[0]), TREE_TYPE (_o2[0]), TREE_OPERAND (_o2[0], 0), TREE_OPERAND (_o2[0], 1));
15739 : : }
15740 : 2 : _o2[1] = captures[3];
15741 : 2 : if (COMPARISON_CLASS_P (_o2[1]))
15742 : : {
15743 : 0 : if (!seq) return false;
15744 : 0 : _o2[1] = gimple_build (seq, TREE_CODE (_o2[1]), TREE_TYPE (_o2[1]), TREE_OPERAND (_o2[1], 0), TREE_OPERAND (_o2[1], 1));
15745 : : }
15746 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
15747 : 2 : tem_op.resimplify (lseq, valueize);
15748 : 2 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15749 : 2 : if (!_r2) goto next_after_fail2246;
15750 : 1 : _o1[0] = _r2;
15751 : : }
15752 : 1 : {
15753 : 1 : tree _o2[2], _r2;
15754 : 1 : _o2[0] = captures[1];
15755 : 1 : _o2[1] = captures[2];
15756 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o2[0], _o2[1]);
15757 : 1 : tem_op.resimplify (lseq, valueize);
15758 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15759 : 1 : if (!_r2) goto next_after_fail2246;
15760 : 1 : _o1[1] = _r2;
15761 : : }
15762 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15763 : 1 : tem_op.resimplify (lseq, valueize);
15764 : 1 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15765 : 1 : if (!_r1) goto next_after_fail2246;
15766 : 1 : res_op->ops[0] = _r1;
15767 : : }
15768 : 1 : res_op->ops[1] = constant_boolean_node (eqne != NE_EXPR, type);
15769 : 1 : res_op->ops[2] = constant_boolean_node (eqne == NE_EXPR, type);
15770 : 1 : res_op->resimplify (lseq, valueize);
15771 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1122, __FILE__, __LINE__, true);
15772 : 1 : return true;
15773 : : }
15774 : 27 : next_after_fail2246:;
15775 : : }
15776 : : }
15777 : : }
15778 : : }
15779 : : break;
15780 : : }
15781 : : default:;
15782 : : }
15783 : : }
15784 : : break;
15785 : : default:;
15786 : : }
15787 : : break;
15788 : : }
15789 : 150 : case VEC_COND_EXPR:
15790 : 150 : {
15791 : 150 : tree _q20 = gimple_assign_rhs1 (_a1);
15792 : 150 : _q20 = do_valueize (valueize, _q20);
15793 : 150 : tree _q21 = gimple_assign_rhs2 (_a1);
15794 : 150 : _q21 = do_valueize (valueize, _q21);
15795 : 150 : tree _q22 = gimple_assign_rhs3 (_a1);
15796 : 150 : _q22 = do_valueize (valueize, _q22);
15797 : 150 : switch (TREE_CODE (_p1))
15798 : : {
15799 : 147 : case SSA_NAME:
15800 : 147 : if (gimple *_d2 = get_def (valueize, _p1))
15801 : : {
15802 : 147 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15803 : 200 : switch (gimple_assign_rhs_code (_a2))
15804 : : {
15805 : 94 : case VEC_COND_EXPR:
15806 : 94 : {
15807 : 94 : tree _q60 = gimple_assign_rhs1 (_a2);
15808 : 94 : _q60 = do_valueize (valueize, _q60);
15809 : 94 : tree _q61 = gimple_assign_rhs2 (_a2);
15810 : 94 : _q61 = do_valueize (valueize, _q61);
15811 : 94 : tree _q62 = gimple_assign_rhs3 (_a2);
15812 : 94 : _q62 = do_valueize (valueize, _q62);
15813 : 94 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
15814 : : {
15815 : 14 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
15816 : : {
15817 : 14 : {
15818 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
15819 : 14 : const enum tree_code eqne = EQ_EXPR;
15820 : 14 : if (!HONOR_NANS (captures[1])
15821 : 14 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
15822 : 28 : && types_match (type, TREE_TYPE (captures[0]))
15823 : : )
15824 : : {
15825 : 14 : gimple_seq *lseq = seq;
15826 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2247;
15827 : 14 : {
15828 : 14 : res_op->set_op (VEC_COND_EXPR, type, 3);
15829 : 14 : {
15830 : 14 : tree _o1[2], _r1;
15831 : 14 : {
15832 : 14 : tree _o2[2], _r2;
15833 : 14 : _o2[0] = captures[0];
15834 : 14 : _o2[1] = captures[3];
15835 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
15836 : 14 : tem_op.resimplify (lseq, valueize);
15837 : 14 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15838 : 14 : if (!_r2) goto next_after_fail2247;
15839 : 4 : _o1[0] = _r2;
15840 : : }
15841 : 4 : {
15842 : 4 : tree _o2[2], _r2;
15843 : 4 : _o2[0] = captures[1];
15844 : 4 : _o2[1] = captures[2];
15845 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, _o2[0], _o2[1]);
15846 : 4 : tem_op.resimplify (lseq, valueize);
15847 : 4 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15848 : 4 : if (!_r2) goto next_after_fail2247;
15849 : 4 : _o1[1] = _r2;
15850 : : }
15851 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15852 : 4 : tem_op.resimplify (lseq, valueize);
15853 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15854 : 4 : if (!_r1) goto next_after_fail2247;
15855 : 4 : res_op->ops[0] = _r1;
15856 : : }
15857 : 4 : res_op->ops[1] = constant_boolean_node (eqne == NE_EXPR, type);
15858 : 4 : res_op->ops[2] = constant_boolean_node (eqne != NE_EXPR, type);
15859 : 4 : res_op->resimplify (lseq, valueize);
15860 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1121, __FILE__, __LINE__, true);
15861 : 4 : return true;
15862 : : }
15863 : 10 : next_after_fail2247:;
15864 : : }
15865 : : }
15866 : : }
15867 : : }
15868 : 90 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
15869 : : {
15870 : 80 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
15871 : : {
15872 : 80 : {
15873 : 80 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
15874 : 80 : const enum tree_code eqne = EQ_EXPR;
15875 : 80 : if (!HONOR_NANS (captures[1])
15876 : 6 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
15877 : 86 : && types_match (type, TREE_TYPE (captures[0]))
15878 : : )
15879 : : {
15880 : 6 : gimple_seq *lseq = seq;
15881 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2248;
15882 : 6 : {
15883 : 6 : res_op->set_op (VEC_COND_EXPR, type, 3);
15884 : 6 : {
15885 : 6 : tree _o1[2], _r1;
15886 : 6 : {
15887 : 6 : tree _o2[2], _r2;
15888 : 6 : _o2[0] = captures[0];
15889 : 6 : _o2[1] = captures[3];
15890 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
15891 : 6 : tem_op.resimplify (lseq, valueize);
15892 : 6 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15893 : 6 : if (!_r2) goto next_after_fail2248;
15894 : 3 : _o1[0] = _r2;
15895 : : }
15896 : 3 : {
15897 : 3 : tree _o2[2], _r2;
15898 : 3 : _o2[0] = captures[1];
15899 : 3 : _o2[1] = captures[2];
15900 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, type, _o2[0], _o2[1]);
15901 : 3 : tem_op.resimplify (lseq, valueize);
15902 : 3 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
15903 : 3 : if (!_r2) goto next_after_fail2248;
15904 : 3 : _o1[1] = _r2;
15905 : : }
15906 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15907 : 3 : tem_op.resimplify (lseq, valueize);
15908 : 3 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15909 : 3 : if (!_r1) goto next_after_fail2248;
15910 : 3 : res_op->ops[0] = _r1;
15911 : : }
15912 : 3 : res_op->ops[1] = constant_boolean_node (eqne != NE_EXPR, type);
15913 : 3 : res_op->ops[2] = constant_boolean_node (eqne == NE_EXPR, type);
15914 : 3 : res_op->resimplify (lseq, valueize);
15915 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1122, __FILE__, __LINE__, true);
15916 : 3 : return true;
15917 : : }
15918 : 77 : next_after_fail2248:;
15919 : : }
15920 : : }
15921 : : }
15922 : : }
15923 : : break;
15924 : : }
15925 : : default:;
15926 : : }
15927 : : }
15928 : : break;
15929 : : default:;
15930 : : }
15931 : : break;
15932 : : }
15933 : 1122 : case LT_EXPR:
15934 : 1122 : {
15935 : 1122 : tree _q20 = gimple_assign_rhs1 (_a1);
15936 : 1122 : _q20 = do_valueize (valueize, _q20);
15937 : 1122 : tree _q21 = gimple_assign_rhs2 (_a1);
15938 : 1122 : _q21 = do_valueize (valueize, _q21);
15939 : 1122 : if (integer_truep (_p1))
15940 : : {
15941 : 80 : {
15942 : 80 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
15943 : 80 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR))
15944 : 80 : return true;
15945 : : }
15946 : : }
15947 : 1042 : if (integer_zerop (_p1))
15948 : : {
15949 : 771 : {
15950 : 771 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
15951 : 771 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR))
15952 : 206 : return true;
15953 : : }
15954 : : }
15955 : : break;
15956 : : }
15957 : 716 : case LE_EXPR:
15958 : 716 : {
15959 : 716 : tree _q20 = gimple_assign_rhs1 (_a1);
15960 : 716 : _q20 = do_valueize (valueize, _q20);
15961 : 716 : tree _q21 = gimple_assign_rhs2 (_a1);
15962 : 716 : _q21 = do_valueize (valueize, _q21);
15963 : 716 : if (integer_truep (_p1))
15964 : : {
15965 : 114 : {
15966 : 114 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
15967 : 114 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR))
15968 : 114 : return true;
15969 : : }
15970 : : }
15971 : 602 : if (integer_zerop (_p1))
15972 : : {
15973 : 215 : {
15974 : 215 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
15975 : 215 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR))
15976 : 167 : return true;
15977 : : }
15978 : : }
15979 : : break;
15980 : : }
15981 : 17687 : case EQ_EXPR:
15982 : 17687 : {
15983 : 17687 : tree _q20 = gimple_assign_rhs1 (_a1);
15984 : 17687 : _q20 = do_valueize (valueize, _q20);
15985 : 17687 : tree _q21 = gimple_assign_rhs2 (_a1);
15986 : 17687 : _q21 = do_valueize (valueize, _q21);
15987 : 17687 : if (tree_swap_operands_p (_q20, _q21))
15988 : 540 : std::swap (_q20, _q21);
15989 : 17687 : if (integer_truep (_p1))
15990 : : {
15991 : 285 : {
15992 : 285 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
15993 : 285 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR))
15994 : 285 : return true;
15995 : : }
15996 : : }
15997 : 17402 : if (integer_zerop (_p1))
15998 : : {
15999 : 1504 : {
16000 : 1504 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16001 : 1504 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR))
16002 : 1212 : return true;
16003 : : }
16004 : : }
16005 : 76445317 : break;
16006 : : }
16007 : 8430 : case NE_EXPR:
16008 : 8430 : {
16009 : 8430 : tree _q20 = gimple_assign_rhs1 (_a1);
16010 : 8430 : _q20 = do_valueize (valueize, _q20);
16011 : 8430 : tree _q21 = gimple_assign_rhs2 (_a1);
16012 : 8430 : _q21 = do_valueize (valueize, _q21);
16013 : 8430 : if (tree_swap_operands_p (_q20, _q21))
16014 : 76 : std::swap (_q20, _q21);
16015 : 8430 : if (integer_truep (_p1))
16016 : : {
16017 : 239 : {
16018 : 239 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16019 : 239 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR))
16020 : 239 : return true;
16021 : : }
16022 : : }
16023 : 8191 : if (integer_zerop (_p1))
16024 : : {
16025 : 7444 : {
16026 : 7444 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16027 : 7444 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR))
16028 : 7205 : return true;
16029 : : }
16030 : : }
16031 : 76445317 : break;
16032 : : }
16033 : 1286 : case GE_EXPR:
16034 : 1286 : {
16035 : 1286 : tree _q20 = gimple_assign_rhs1 (_a1);
16036 : 1286 : _q20 = do_valueize (valueize, _q20);
16037 : 1286 : tree _q21 = gimple_assign_rhs2 (_a1);
16038 : 1286 : _q21 = do_valueize (valueize, _q21);
16039 : 1286 : if (integer_truep (_p1))
16040 : : {
16041 : 148 : {
16042 : 148 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16043 : 148 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR))
16044 : 148 : return true;
16045 : : }
16046 : : }
16047 : 1138 : if (integer_zerop (_p1))
16048 : : {
16049 : 110 : {
16050 : 110 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16051 : 110 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR))
16052 : 86 : return true;
16053 : : }
16054 : : }
16055 : : break;
16056 : : }
16057 : 2244 : case GT_EXPR:
16058 : 2244 : {
16059 : 2244 : tree _q20 = gimple_assign_rhs1 (_a1);
16060 : 2244 : _q20 = do_valueize (valueize, _q20);
16061 : 2244 : tree _q21 = gimple_assign_rhs2 (_a1);
16062 : 2244 : _q21 = do_valueize (valueize, _q21);
16063 : 2244 : if (integer_truep (_p1))
16064 : : {
16065 : 98 : {
16066 : 98 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16067 : 98 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR))
16068 : 98 : return true;
16069 : : }
16070 : : }
16071 : 2146 : if (integer_zerop (_p1))
16072 : : {
16073 : 1136 : {
16074 : 1136 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16075 : 1136 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR))
16076 : 161 : return true;
16077 : : }
16078 : : }
16079 : : break;
16080 : : }
16081 : 3 : case UNORDERED_EXPR:
16082 : 3 : {
16083 : 3 : tree _q20 = gimple_assign_rhs1 (_a1);
16084 : 3 : _q20 = do_valueize (valueize, _q20);
16085 : 3 : tree _q21 = gimple_assign_rhs2 (_a1);
16086 : 3 : _q21 = do_valueize (valueize, _q21);
16087 : 3 : if (tree_swap_operands_p (_q20, _q21))
16088 : 0 : std::swap (_q20, _q21);
16089 : 3 : if (integer_truep (_p1))
16090 : : {
16091 : 0 : {
16092 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16093 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR))
16094 : 0 : return true;
16095 : : }
16096 : : }
16097 : 3 : if (integer_zerop (_p1))
16098 : : {
16099 : 3 : {
16100 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16101 : 3 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR))
16102 : 3 : return true;
16103 : : }
16104 : : }
16105 : 76445317 : break;
16106 : : }
16107 : 0 : case ORDERED_EXPR:
16108 : 0 : {
16109 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16110 : 0 : _q20 = do_valueize (valueize, _q20);
16111 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16112 : 0 : _q21 = do_valueize (valueize, _q21);
16113 : 0 : if (tree_swap_operands_p (_q20, _q21))
16114 : 0 : std::swap (_q20, _q21);
16115 : 0 : if (integer_truep (_p1))
16116 : : {
16117 : 0 : {
16118 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16119 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR))
16120 : 0 : return true;
16121 : : }
16122 : : }
16123 : 0 : if (integer_zerop (_p1))
16124 : : {
16125 : 0 : {
16126 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16127 : 0 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR))
16128 : 0 : return true;
16129 : : }
16130 : : }
16131 : 76445317 : break;
16132 : : }
16133 : 0 : case UNLT_EXPR:
16134 : 0 : {
16135 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16136 : 0 : _q20 = do_valueize (valueize, _q20);
16137 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16138 : 0 : _q21 = do_valueize (valueize, _q21);
16139 : 0 : if (integer_truep (_p1))
16140 : : {
16141 : 0 : {
16142 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16143 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR))
16144 : 0 : return true;
16145 : : }
16146 : : }
16147 : 0 : if (integer_zerop (_p1))
16148 : : {
16149 : 0 : {
16150 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16151 : 0 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR))
16152 : 0 : return true;
16153 : : }
16154 : : }
16155 : : break;
16156 : : }
16157 : 0 : case UNLE_EXPR:
16158 : 0 : {
16159 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16160 : 0 : _q20 = do_valueize (valueize, _q20);
16161 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16162 : 0 : _q21 = do_valueize (valueize, _q21);
16163 : 0 : if (integer_truep (_p1))
16164 : : {
16165 : 0 : {
16166 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16167 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR))
16168 : 0 : return true;
16169 : : }
16170 : : }
16171 : 0 : if (integer_zerop (_p1))
16172 : : {
16173 : 0 : {
16174 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16175 : 0 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR))
16176 : 0 : return true;
16177 : : }
16178 : : }
16179 : : break;
16180 : : }
16181 : 0 : case UNGT_EXPR:
16182 : 0 : {
16183 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16184 : 0 : _q20 = do_valueize (valueize, _q20);
16185 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16186 : 0 : _q21 = do_valueize (valueize, _q21);
16187 : 0 : if (integer_truep (_p1))
16188 : : {
16189 : 0 : {
16190 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16191 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR))
16192 : 0 : return true;
16193 : : }
16194 : : }
16195 : 0 : if (integer_zerop (_p1))
16196 : : {
16197 : 0 : {
16198 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16199 : 0 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR))
16200 : 0 : return true;
16201 : : }
16202 : : }
16203 : : break;
16204 : : }
16205 : 0 : case UNGE_EXPR:
16206 : 0 : {
16207 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16208 : 0 : _q20 = do_valueize (valueize, _q20);
16209 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16210 : 0 : _q21 = do_valueize (valueize, _q21);
16211 : 0 : if (integer_truep (_p1))
16212 : : {
16213 : 0 : {
16214 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16215 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR))
16216 : 0 : return true;
16217 : : }
16218 : : }
16219 : 0 : if (integer_zerop (_p1))
16220 : : {
16221 : 0 : {
16222 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16223 : 0 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR))
16224 : 0 : return true;
16225 : : }
16226 : : }
16227 : : break;
16228 : : }
16229 : 0 : case UNEQ_EXPR:
16230 : 0 : {
16231 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16232 : 0 : _q20 = do_valueize (valueize, _q20);
16233 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16234 : 0 : _q21 = do_valueize (valueize, _q21);
16235 : 0 : if (tree_swap_operands_p (_q20, _q21))
16236 : 0 : std::swap (_q20, _q21);
16237 : 0 : if (integer_truep (_p1))
16238 : : {
16239 : 0 : {
16240 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16241 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR))
16242 : 0 : return true;
16243 : : }
16244 : : }
16245 : 0 : if (integer_zerop (_p1))
16246 : : {
16247 : 0 : {
16248 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16249 : 0 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR))
16250 : 0 : return true;
16251 : : }
16252 : : }
16253 : 76445317 : break;
16254 : : }
16255 : 0 : case LTGT_EXPR:
16256 : 0 : {
16257 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16258 : 0 : _q20 = do_valueize (valueize, _q20);
16259 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16260 : 0 : _q21 = do_valueize (valueize, _q21);
16261 : 0 : if (tree_swap_operands_p (_q20, _q21))
16262 : 0 : std::swap (_q20, _q21);
16263 : 0 : if (integer_truep (_p1))
16264 : : {
16265 : 0 : {
16266 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16267 : 0 : if (gimple_simplify_260 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR))
16268 : 0 : return true;
16269 : : }
16270 : : }
16271 : 0 : if (integer_zerop (_p1))
16272 : : {
16273 : 0 : {
16274 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16275 : 0 : if (gimple_simplify_261 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR))
16276 : 0 : return true;
16277 : : }
16278 : : }
16279 : 76445317 : break;
16280 : : }
16281 : 233241 : case MINUS_EXPR:
16282 : 233241 : {
16283 : 233241 : tree _q20 = gimple_assign_rhs1 (_a1);
16284 : 233241 : _q20 = do_valueize (valueize, _q20);
16285 : 233241 : tree _q21 = gimple_assign_rhs2 (_a1);
16286 : 233241 : _q21 = do_valueize (valueize, _q21);
16287 : 233241 : if (integer_zerop (_p1))
16288 : : {
16289 : 95532 : {
16290 : 95532 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16291 : 95532 : if (gimple_simplify_262 (res_op, seq, valueize, type, captures, EQ_EXPR))
16292 : 12122 : return true;
16293 : : }
16294 : : }
16295 : : break;
16296 : : }
16297 : 99654 : case POINTER_DIFF_EXPR:
16298 : 99654 : {
16299 : 99654 : tree _q20 = gimple_assign_rhs1 (_a1);
16300 : 99654 : _q20 = do_valueize (valueize, _q20);
16301 : 99654 : tree _q21 = gimple_assign_rhs2 (_a1);
16302 : 99654 : _q21 = do_valueize (valueize, _q21);
16303 : 99654 : if (integer_zerop (_p1))
16304 : : {
16305 : 7911 : {
16306 : 7911 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
16307 : 7911 : if (gimple_simplify_263 (res_op, seq, valueize, type, captures, EQ_EXPR))
16308 : 2971 : return true;
16309 : : }
16310 : : }
16311 : : break;
16312 : : }
16313 : 72419 : case MULT_EXPR:
16314 : 72419 : {
16315 : 72419 : tree _q20 = gimple_assign_rhs1 (_a1);
16316 : 72419 : _q20 = do_valueize (valueize, _q20);
16317 : 72419 : tree _q21 = gimple_assign_rhs2 (_a1);
16318 : 72419 : _q21 = do_valueize (valueize, _q21);
16319 : 72419 : if (tree_swap_operands_p (_q20, _q21))
16320 : 448 : std::swap (_q20, _q21);
16321 : 72419 : switch (TREE_CODE (_q21))
16322 : : {
16323 : 56800 : case INTEGER_CST:
16324 : 56800 : {
16325 : 56800 : switch (TREE_CODE (_p1))
16326 : : {
16327 : 26293 : case INTEGER_CST:
16328 : 26293 : {
16329 : 26293 : {
16330 : 26293 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16331 : 26293 : if (gimple_simplify_265 (res_op, seq, valueize, type, captures, EQ_EXPR))
16332 : 1567 : return true;
16333 : : }
16334 : 24726 : break;
16335 : : }
16336 : 55233 : default:;
16337 : : }
16338 : 55233 : if (integer_zerop (_p1))
16339 : : {
16340 : 17020 : {
16341 : 17020 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
16342 : 17020 : if (gimple_simplify_264 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
16343 : 0 : return true;
16344 : : }
16345 : : }
16346 : : break;
16347 : : }
16348 : : default:;
16349 : : }
16350 : 76445317 : break;
16351 : : }
16352 : : default:;
16353 : : }
16354 : : }
16355 : : break;
16356 : 76445317 : default:;
16357 : : }
16358 : 76445317 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
16359 : : {
16360 : 41898 : {
16361 : 41898 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
16362 : 41898 : if (gimple_simplify_266 (res_op, seq, valueize, type, captures, EQ_EXPR))
16363 : 26049 : return true;
16364 : : }
16365 : : }
16366 : 76419268 : switch (TREE_CODE (_p0))
16367 : : {
16368 : 75593252 : case SSA_NAME:
16369 : 75593252 : if (gimple *_d1 = get_def (valueize, _p0))
16370 : : {
16371 : 25950423 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16372 : 31403443 : switch (gimple_assign_rhs_code (_a1))
16373 : : {
16374 : 736290 : CASE_CONVERT:
16375 : 736290 : {
16376 : 736290 : tree _q20 = gimple_assign_rhs1 (_a1);
16377 : 736290 : _q20 = do_valueize (valueize, _q20);
16378 : 736290 : switch (TREE_CODE (_p1))
16379 : : {
16380 : 167343 : case SSA_NAME:
16381 : 167343 : if (gimple *_d2 = get_def (valueize, _p1))
16382 : : {
16383 : 158328 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16384 : 170963 : switch (gimple_assign_rhs_code (_a2))
16385 : : {
16386 : 41596 : CASE_CONVERT:
16387 : 41596 : {
16388 : 41596 : tree _q40 = gimple_assign_rhs1 (_a2);
16389 : 41596 : _q40 = do_valueize (valueize, _q40);
16390 : 41596 : {
16391 : 41596 : tree _q40_pops[1];
16392 : 41596 : if (gimple_maybe_bit_not (_q40, _q40_pops, valueize))
16393 : : {
16394 : 740 : tree _q50 = _q40_pops[0];
16395 : 740 : {
16396 : 740 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
16397 : 740 : if (gimple_simplify_267 (res_op, seq, valueize, type, captures, EQ_EXPR))
16398 : 3 : return true;
16399 : : }
16400 : : }
16401 : : }
16402 : 41593 : break;
16403 : : }
16404 : : default:;
16405 : : }
16406 : : }
16407 : : break;
16408 : 736287 : default:;
16409 : : }
16410 : 736287 : {
16411 : 736287 : tree _q20_pops[1];
16412 : 736287 : if (gimple_maybe_bit_not (_q20, _q20_pops, valueize))
16413 : : {
16414 : 17237 : tree _q30 = _q20_pops[0];
16415 : 17237 : switch (TREE_CODE (_p1))
16416 : : {
16417 : 2630 : case SSA_NAME:
16418 : 2630 : if (gimple *_d2 = get_def (valueize, _p1))
16419 : : {
16420 : 2594 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16421 : 3602 : switch (gimple_assign_rhs_code (_a2))
16422 : : {
16423 : 510 : CASE_CONVERT:
16424 : 510 : {
16425 : 510 : tree _q50 = gimple_assign_rhs1 (_a2);
16426 : 510 : _q50 = do_valueize (valueize, _q50);
16427 : 510 : {
16428 : 510 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
16429 : 510 : if (gimple_simplify_267 (res_op, seq, valueize, type, captures, EQ_EXPR))
16430 : 0 : return true;
16431 : : }
16432 : 510 : break;
16433 : : }
16434 : : default:;
16435 : : }
16436 : : }
16437 : : break;
16438 : : default:;
16439 : : }
16440 : : }
16441 : : }
16442 : 736287 : break;
16443 : : }
16444 : : default:;
16445 : : }
16446 : : }
16447 : : break;
16448 : 76419265 : default:;
16449 : : }
16450 : 76419265 : {
16451 : 76419265 : tree _p1_pops[1];
16452 : 76419265 : if (gimple_maybe_bit_not (_p1, _p1_pops, valueize))
16453 : : {
16454 : 59362974 : tree _q30 = _p1_pops[0];
16455 : 59362974 : {
16456 : 59362974 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
16457 : 59362974 : if (gimple_simplify_267 (res_op, seq, valueize, type, captures, EQ_EXPR))
16458 : 28 : return true;
16459 : : }
16460 : : }
16461 : : }
16462 : 76419237 : switch (TREE_CODE (_p0))
16463 : : {
16464 : 75593221 : case SSA_NAME:
16465 : 75593221 : if (gimple *_d1 = get_def (valueize, _p0))
16466 : : {
16467 : 25950392 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16468 : 31403412 : switch (gimple_assign_rhs_code (_a1))
16469 : : {
16470 : 761 : case BIT_NOT_EXPR:
16471 : 761 : {
16472 : 761 : tree _q20 = gimple_assign_rhs1 (_a1);
16473 : 761 : _q20 = do_valueize (valueize, _q20);
16474 : 761 : switch (TREE_CODE (_p1))
16475 : : {
16476 : 95 : case SSA_NAME:
16477 : 95 : if (gimple *_d2 = get_def (valueize, _p1))
16478 : : {
16479 : 83 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16480 : 71 : switch (gimple_assign_rhs_code (_a2))
16481 : : {
16482 : 2 : case BIT_NOT_EXPR:
16483 : 2 : {
16484 : 2 : tree _q40 = gimple_assign_rhs1 (_a2);
16485 : 2 : _q40 = do_valueize (valueize, _q40);
16486 : 2 : {
16487 : 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
16488 : 2 : if (gimple_simplify_270 (res_op, seq, valueize, type, captures, EQ_EXPR))
16489 : 2 : return true;
16490 : : }
16491 : 0 : break;
16492 : : }
16493 : : default:;
16494 : : }
16495 : : }
16496 : : break;
16497 : 759 : default:;
16498 : : }
16499 : 759 : {
16500 : 759 : tree _p1_pops[1];
16501 : 759 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
16502 : : {
16503 : 4 : tree _q40 = _p1_pops[0];
16504 : 4 : switch (TREE_CODE (_q40))
16505 : : {
16506 : 4 : case SSA_NAME:
16507 : 4 : if (gimple *_d2 = get_def (valueize, _q40))
16508 : : {
16509 : 4 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16510 : 6 : switch (gimple_assign_rhs_code (_a2))
16511 : : {
16512 : 2 : case BIT_NOT_EXPR:
16513 : 2 : {
16514 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
16515 : 2 : _q50 = do_valueize (valueize, _q50);
16516 : 2 : {
16517 : 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
16518 : 2 : if (gimple_simplify_270 (res_op, seq, valueize, type, captures, EQ_EXPR))
16519 : 2 : return true;
16520 : : }
16521 : 0 : break;
16522 : : }
16523 : : default:;
16524 : : }
16525 : : }
16526 : : break;
16527 : : default:;
16528 : : }
16529 : : }
16530 : : }
16531 : 757 : if (CONSTANT_CLASS_P (_p1))
16532 : : {
16533 : 666 : {
16534 : 666 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
16535 : 666 : if (gimple_simplify_269 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
16536 : 92 : return true;
16537 : : }
16538 : : }
16539 : : break;
16540 : : }
16541 : : default:;
16542 : : }
16543 : : }
16544 : : break;
16545 : 76419141 : default:;
16546 : : }
16547 : 76419141 : {
16548 : 76419141 : tree _p0_pops[1];
16549 : 76419141 : if (gimple_maybe_bit_not (_p0, _p0_pops, valueize))
16550 : : {
16551 : 22561 : tree _q20 = _p0_pops[0];
16552 : 22561 : {
16553 : 22561 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
16554 : 22561 : if (gimple_simplify_267 (res_op, seq, valueize, type, captures, EQ_EXPR))
16555 : 0 : return true;
16556 : : }
16557 : : }
16558 : : }
16559 : 76419141 : {
16560 : 76419141 : tree _p0_pops[1];
16561 : 76419141 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
16562 : : {
16563 : 440236 : tree _q20 = _p0_pops[0];
16564 : 440236 : switch (TREE_CODE (_q20))
16565 : : {
16566 : 427351 : case SSA_NAME:
16567 : 427351 : if (gimple *_d1 = get_def (valueize, _q20))
16568 : : {
16569 : 422711 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16570 : 446351 : switch (gimple_assign_rhs_code (_a1))
16571 : : {
16572 : 16 : case BIT_NOT_EXPR:
16573 : 16 : {
16574 : 16 : tree _q30 = gimple_assign_rhs1 (_a1);
16575 : 16 : _q30 = do_valueize (valueize, _q30);
16576 : 16 : switch (TREE_CODE (_p1))
16577 : : {
16578 : 16 : case SSA_NAME:
16579 : 16 : if (gimple *_d2 = get_def (valueize, _p1))
16580 : : {
16581 : 16 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16582 : 16 : switch (gimple_assign_rhs_code (_a2))
16583 : : {
16584 : 16 : case BIT_NOT_EXPR:
16585 : 16 : {
16586 : 16 : tree _q50 = gimple_assign_rhs1 (_a2);
16587 : 16 : _q50 = do_valueize (valueize, _q50);
16588 : 16 : {
16589 : 16 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
16590 : 16 : if (gimple_simplify_268 (res_op, seq, valueize, type, captures, EQ_EXPR))
16591 : 0 : return true;
16592 : : }
16593 : 16 : break;
16594 : : }
16595 : : default:;
16596 : : }
16597 : : }
16598 : : break;
16599 : 16 : default:;
16600 : : }
16601 : 16 : {
16602 : 16 : tree _p1_pops[1];
16603 : 16 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
16604 : : {
16605 : 0 : tree _q50 = _p1_pops[0];
16606 : 0 : switch (TREE_CODE (_q50))
16607 : : {
16608 : 0 : case SSA_NAME:
16609 : 0 : if (gimple *_d2 = get_def (valueize, _q50))
16610 : : {
16611 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16612 : 0 : switch (gimple_assign_rhs_code (_a2))
16613 : : {
16614 : 0 : case BIT_NOT_EXPR:
16615 : 0 : {
16616 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
16617 : 0 : _q60 = do_valueize (valueize, _q60);
16618 : 0 : {
16619 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
16620 : 0 : if (gimple_simplify_268 (res_op, seq, valueize, type, captures, EQ_EXPR))
16621 : 0 : return true;
16622 : : }
16623 : 0 : break;
16624 : : }
16625 : : default:;
16626 : : }
16627 : : }
16628 : : break;
16629 : : default:;
16630 : : }
16631 : : }
16632 : : }
16633 : 16 : if (CONSTANT_CLASS_P (_p1))
16634 : : {
16635 : 0 : {
16636 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
16637 : 0 : if (gimple_simplify_269 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
16638 : 0 : return true;
16639 : : }
16640 : : }
16641 : : break;
16642 : : }
16643 : : default:;
16644 : : }
16645 : : }
16646 : : break;
16647 : : default:;
16648 : : }
16649 : : }
16650 : : }
16651 : 76419141 : switch (TREE_CODE (_p1))
16652 : : {
16653 : 293859 : case REAL_CST:
16654 : 293859 : {
16655 : 293859 : {
16656 : 293859 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
16657 : 293859 : if (gimple_simplify_271 (res_op, seq, valueize, type, captures, EQ_EXPR))
16658 : 91 : return true;
16659 : : }
16660 : 293768 : break;
16661 : : }
16662 : 76419050 : default:;
16663 : : }
16664 : 76419050 : switch (TREE_CODE (_p0))
16665 : : {
16666 : 75593034 : case SSA_NAME:
16667 : 75593034 : if (gimple *_d1 = get_def (valueize, _p0))
16668 : : {
16669 : 25950222 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16670 : 31403298 : switch (gimple_assign_rhs_code (_a1))
16671 : : {
16672 : 863141 : case PLUS_EXPR:
16673 : 863141 : {
16674 : 863141 : tree _q20 = gimple_assign_rhs1 (_a1);
16675 : 863141 : _q20 = do_valueize (valueize, _q20);
16676 : 863141 : tree _q21 = gimple_assign_rhs2 (_a1);
16677 : 863141 : _q21 = do_valueize (valueize, _q21);
16678 : 863141 : if (tree_swap_operands_p (_q20, _q21))
16679 : 6666 : std::swap (_q20, _q21);
16680 : 863141 : switch (TREE_CODE (_q21))
16681 : : {
16682 : 649 : case REAL_CST:
16683 : 649 : {
16684 : 649 : switch (TREE_CODE (_p1))
16685 : : {
16686 : 403 : case REAL_CST:
16687 : 403 : {
16688 : 403 : {
16689 : 403 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16690 : 403 : if (gimple_simplify_272 (res_op, seq, valueize, type, captures, PLUS_EXPR, EQ_EXPR))
16691 : 0 : return true;
16692 : : }
16693 : 403 : break;
16694 : : }
16695 : : default:;
16696 : : }
16697 : : break;
16698 : : }
16699 : : default:;
16700 : : }
16701 : 75500192 : break;
16702 : : }
16703 : 221119 : case MINUS_EXPR:
16704 : 221119 : {
16705 : 221119 : tree _q20 = gimple_assign_rhs1 (_a1);
16706 : 221119 : _q20 = do_valueize (valueize, _q20);
16707 : 221119 : tree _q21 = gimple_assign_rhs2 (_a1);
16708 : 221119 : _q21 = do_valueize (valueize, _q21);
16709 : 221119 : switch (TREE_CODE (_q21))
16710 : : {
16711 : 128 : case REAL_CST:
16712 : 128 : {
16713 : 128 : switch (TREE_CODE (_p1))
16714 : : {
16715 : 128 : case REAL_CST:
16716 : 128 : {
16717 : 128 : {
16718 : 128 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16719 : 128 : if (gimple_simplify_272 (res_op, seq, valueize, type, captures, MINUS_EXPR, EQ_EXPR))
16720 : 0 : return true;
16721 : : }
16722 : 128 : break;
16723 : : }
16724 : : default:;
16725 : : }
16726 : : break;
16727 : : }
16728 : 221119 : default:;
16729 : : }
16730 : 221119 : switch (TREE_CODE (_q20))
16731 : : {
16732 : 120 : case REAL_CST:
16733 : 120 : {
16734 : 120 : switch (TREE_CODE (_p1))
16735 : : {
16736 : 112 : case REAL_CST:
16737 : 112 : {
16738 : 112 : {
16739 : 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16740 : 112 : if (gimple_simplify_273 (res_op, seq, valueize, type, captures, EQ_EXPR))
16741 : 0 : return true;
16742 : : }
16743 : 112 : break;
16744 : : }
16745 : : default:;
16746 : : }
16747 : : break;
16748 : : }
16749 : : default:;
16750 : : }
16751 : : break;
16752 : : }
16753 : 2971 : case FLOAT_EXPR:
16754 : 2971 : {
16755 : 2971 : tree _q20 = gimple_assign_rhs1 (_a1);
16756 : 2971 : _q20 = do_valueize (valueize, _q20);
16757 : 2971 : switch (TREE_CODE (_p1))
16758 : : {
16759 : 2024 : case SSA_NAME:
16760 : 2024 : if (gimple *_d2 = get_def (valueize, _p1))
16761 : : {
16762 : 1930 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16763 : 3769 : switch (gimple_assign_rhs_code (_a2))
16764 : : {
16765 : 0 : case FLOAT_EXPR:
16766 : 0 : {
16767 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
16768 : 0 : _q40 = do_valueize (valueize, _q40);
16769 : 0 : {
16770 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
16771 : 0 : if (gimple_simplify_276 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
16772 : 0 : return true;
16773 : : }
16774 : 0 : break;
16775 : : }
16776 : : default:;
16777 : : }
16778 : : }
16779 : : break;
16780 : 947 : case REAL_CST:
16781 : 947 : {
16782 : 947 : {
16783 : 947 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
16784 : 947 : if (gimple_simplify_277 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
16785 : 104 : return true;
16786 : : }
16787 : 843 : break;
16788 : : }
16789 : : default:;
16790 : : }
16791 : : break;
16792 : : }
16793 : 40587 : case EXACT_DIV_EXPR:
16794 : 40587 : {
16795 : 40587 : tree _q20 = gimple_assign_rhs1 (_a1);
16796 : 40587 : _q20 = do_valueize (valueize, _q20);
16797 : 40587 : tree _q21 = gimple_assign_rhs2 (_a1);
16798 : 40587 : _q21 = do_valueize (valueize, _q21);
16799 : 40587 : switch (TREE_CODE (_p1))
16800 : : {
16801 : 20609 : case INTEGER_CST:
16802 : 20609 : {
16803 : 20609 : {
16804 : 20609 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16805 : 20609 : if (gimple_simplify_278 (res_op, seq, valueize, type, captures, EQ_EXPR))
16806 : 20609 : return true;
16807 : : }
16808 : 0 : break;
16809 : : }
16810 : : default:;
16811 : : }
16812 : : break;
16813 : : }
16814 : 7617 : case NEGATE_EXPR:
16815 : 7617 : {
16816 : 7617 : tree _q20 = gimple_assign_rhs1 (_a1);
16817 : 7617 : _q20 = do_valueize (valueize, _q20);
16818 : 7617 : switch (TREE_CODE (_p1))
16819 : : {
16820 : 923 : case SSA_NAME:
16821 : 923 : if (gimple *_d2 = get_def (valueize, _p1))
16822 : : {
16823 : 893 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16824 : 761 : switch (gimple_assign_rhs_code (_a2))
16825 : : {
16826 : 36 : case NEGATE_EXPR:
16827 : 36 : {
16828 : 36 : tree _q40 = gimple_assign_rhs1 (_a2);
16829 : 36 : _q40 = do_valueize (valueize, _q40);
16830 : 36 : {
16831 : 36 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
16832 : 36 : if (gimple_simplify_279 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
16833 : 36 : return true;
16834 : : }
16835 : 0 : break;
16836 : : }
16837 : : default:;
16838 : : }
16839 : : }
16840 : : break;
16841 : 7581 : default:;
16842 : : }
16843 : 7581 : if (CONSTANT_CLASS_P (_p1))
16844 : : {
16845 : 6694 : {
16846 : 6694 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
16847 : 6694 : if (gimple_simplify_280 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
16848 : 6694 : return true;
16849 : : }
16850 : : }
16851 : : break;
16852 : : }
16853 : 6732 : case ABS_EXPR:
16854 : 6732 : {
16855 : 6732 : tree _q20 = gimple_assign_rhs1 (_a1);
16856 : 6732 : _q20 = do_valueize (valueize, _q20);
16857 : 6732 : if (zerop (_p1))
16858 : : {
16859 : 4349 : {
16860 : 4349 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
16861 : 4349 : const enum tree_code eqne = EQ_EXPR;
16862 : 4349 : gimple_seq *lseq = seq;
16863 : 4349 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2249;
16864 : 4349 : {
16865 : 4349 : res_op->set_op (eqne, type, 2);
16866 : 4349 : res_op->ops[0] = captures[0];
16867 : 4349 : res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0]));
16868 : 4349 : res_op->resimplify (lseq, valueize);
16869 : 4349 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1123, __FILE__, __LINE__, true);
16870 : 4349 : return true;
16871 : : }
16872 : 0 : next_after_fail2249:;
16873 : : }
16874 : : }
16875 : : break;
16876 : : }
16877 : 6 : case ABSU_EXPR:
16878 : 6 : {
16879 : 6 : tree _q20 = gimple_assign_rhs1 (_a1);
16880 : 6 : _q20 = do_valueize (valueize, _q20);
16881 : 6 : if (zerop (_p1))
16882 : : {
16883 : 2 : {
16884 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
16885 : 2 : const enum tree_code eqne = EQ_EXPR;
16886 : 2 : gimple_seq *lseq = seq;
16887 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2250;
16888 : 2 : {
16889 : 2 : res_op->set_op (eqne, type, 2);
16890 : 2 : res_op->ops[0] = captures[0];
16891 : 2 : res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0]));
16892 : 2 : res_op->resimplify (lseq, valueize);
16893 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1123, __FILE__, __LINE__, true);
16894 : 2 : return true;
16895 : : }
16896 : 0 : next_after_fail2250:;
16897 : : }
16898 : : }
16899 : : break;
16900 : : }
16901 : 736287 : CASE_CONVERT:
16902 : 736287 : {
16903 : 736287 : tree _q20 = gimple_assign_rhs1 (_a1);
16904 : 736287 : _q20 = do_valueize (valueize, _q20);
16905 : 736287 : switch (TREE_CODE (_p1))
16906 : : {
16907 : 167340 : case SSA_NAME:
16908 : 167340 : if (gimple *_d2 = get_def (valueize, _p1))
16909 : : {
16910 : 158325 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16911 : 170960 : switch (gimple_assign_rhs_code (_a2))
16912 : : {
16913 : 41593 : CASE_CONVERT:
16914 : 41593 : {
16915 : 41593 : tree _q40 = gimple_assign_rhs1 (_a2);
16916 : 41593 : _q40 = do_valueize (valueize, _q40);
16917 : 41593 : {
16918 : 41593 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
16919 : 41593 : if (gimple_simplify_281 (res_op, seq, valueize, type, captures, EQ_EXPR))
16920 : 4520 : return true;
16921 : : }
16922 : 37073 : break;
16923 : : }
16924 : : default:;
16925 : : }
16926 : : }
16927 : : break;
16928 : 731767 : default:;
16929 : : }
16930 : 731767 : {
16931 : 731767 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
16932 : 731767 : if (gimple_simplify_282 (res_op, seq, valueize, type, captures, EQ_EXPR))
16933 : 56054 : return true;
16934 : : }
16935 : 675713 : switch (TREE_CODE (_q20))
16936 : : {
16937 : 662828 : case SSA_NAME:
16938 : 662828 : if (gimple *_d2 = get_def (valueize, _q20))
16939 : : {
16940 : 654513 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16941 : 787623 : switch (gimple_assign_rhs_code (_a2))
16942 : : {
16943 : 1118 : case BIT_IOR_EXPR:
16944 : 1118 : {
16945 : 1118 : tree _q30 = gimple_assign_rhs1 (_a2);
16946 : 1118 : _q30 = do_valueize (valueize, _q30);
16947 : 1118 : tree _q31 = gimple_assign_rhs2 (_a2);
16948 : 1118 : _q31 = do_valueize (valueize, _q31);
16949 : 1118 : if (tree_swap_operands_p (_q30, _q31))
16950 : 23 : std::swap (_q30, _q31);
16951 : 1118 : switch (TREE_CODE (_q31))
16952 : : {
16953 : 216 : case INTEGER_CST:
16954 : 216 : {
16955 : 216 : switch (TREE_CODE (_p1))
16956 : : {
16957 : 56 : case INTEGER_CST:
16958 : 56 : {
16959 : 56 : {
16960 : 56 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
16961 : 56 : if (gimple_simplify_283 (res_op, seq, valueize, type, captures, EQ_EXPR))
16962 : 0 : return true;
16963 : : }
16964 : 56 : break;
16965 : : }
16966 : : default:;
16967 : : }
16968 : : break;
16969 : : }
16970 : : default:;
16971 : : }
16972 : 75500192 : break;
16973 : : }
16974 : : default:;
16975 : : }
16976 : : }
16977 : : break;
16978 : : default:;
16979 : : }
16980 : : break;
16981 : : }
16982 : 115114 : case BIT_IOR_EXPR:
16983 : 115114 : {
16984 : 115114 : tree _q20 = gimple_assign_rhs1 (_a1);
16985 : 115114 : _q20 = do_valueize (valueize, _q20);
16986 : 115114 : tree _q21 = gimple_assign_rhs2 (_a1);
16987 : 115114 : _q21 = do_valueize (valueize, _q21);
16988 : 115114 : if (tree_swap_operands_p (_q20, _q21))
16989 : 7652 : std::swap (_q20, _q21);
16990 : 115114 : switch (TREE_CODE (_q21))
16991 : : {
16992 : 5521 : case INTEGER_CST:
16993 : 5521 : {
16994 : 5521 : switch (TREE_CODE (_p1))
16995 : : {
16996 : 3809 : case INTEGER_CST:
16997 : 3809 : {
16998 : 3809 : {
16999 : 3809 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
17000 : 3809 : if (gimple_simplify_283 (res_op, seq, valueize, type, captures, EQ_EXPR))
17001 : 4 : return true;
17002 : : }
17003 : 3805 : break;
17004 : : }
17005 : : default:;
17006 : : }
17007 : : break;
17008 : : }
17009 : : default:;
17010 : : }
17011 : 75500192 : break;
17012 : : }
17013 : 1113 : case BIT_XOR_EXPR:
17014 : 1113 : {
17015 : 1113 : tree _q20 = gimple_assign_rhs1 (_a1);
17016 : 1113 : _q20 = do_valueize (valueize, _q20);
17017 : 1113 : tree _q21 = gimple_assign_rhs2 (_a1);
17018 : 1113 : _q21 = do_valueize (valueize, _q21);
17019 : 1113 : if (tree_swap_operands_p (_q20, _q21))
17020 : 148 : std::swap (_q20, _q21);
17021 : 1113 : if (integer_zerop (_p1))
17022 : : {
17023 : 414 : {
17024 : 414 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
17025 : 414 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, EQ_EXPR))
17026 : 414 : return true;
17027 : : }
17028 : : }
17029 : 699 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17030 : : {
17031 : 0 : {
17032 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
17033 : 0 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, EQ_EXPR))
17034 : 0 : return true;
17035 : : }
17036 : : }
17037 : 699 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17038 : : {
17039 : 14 : {
17040 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
17041 : 14 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, EQ_EXPR))
17042 : 14 : return true;
17043 : : }
17044 : : }
17045 : 75500192 : break;
17046 : : }
17047 : : default:;
17048 : : }
17049 : 8384117 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
17050 : 4813374 : switch (gimple_call_combined_fn (_c1))
17051 : : {
17052 : 61 : case CFN_BUILT_IN_SQRTF:
17053 : 61 : if (gimple_call_num_args (_c1) == 1)
17054 : : {
17055 : 61 : tree _q20 = gimple_call_arg (_c1, 0);
17056 : 61 : _q20 = do_valueize (valueize, _q20);
17057 : 61 : switch (TREE_CODE (_p1))
17058 : : {
17059 : 2 : case SSA_NAME:
17060 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
17061 : : {
17062 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17063 : 2 : switch (gimple_call_combined_fn (_c2))
17064 : : {
17065 : 2 : case CFN_BUILT_IN_SQRTF:
17066 : 2 : if (gimple_call_num_args (_c2) == 1)
17067 : : {
17068 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
17069 : 2 : _q40 = do_valueize (valueize, _q40);
17070 : 2 : {
17071 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17072 : 2 : if (gimple_simplify_275 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR))
17073 : 2 : return true;
17074 : : }
17075 : : }
17076 : : break;
17077 : : default:;
17078 : : }
17079 : : }
17080 : : break;
17081 : 59 : case REAL_CST:
17082 : 59 : {
17083 : 59 : {
17084 : 59 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17085 : 59 : if (gimple_simplify_274 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR))
17086 : 12 : return true;
17087 : : }
17088 : 47 : break;
17089 : : }
17090 : : default:;
17091 : : }
17092 : : }
17093 : : break;
17094 : 14 : case CFN_BUILT_IN_SQRTL:
17095 : 14 : if (gimple_call_num_args (_c1) == 1)
17096 : : {
17097 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
17098 : 14 : _q20 = do_valueize (valueize, _q20);
17099 : 14 : switch (TREE_CODE (_p1))
17100 : : {
17101 : 2 : case SSA_NAME:
17102 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
17103 : : {
17104 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17105 : 2 : switch (gimple_call_combined_fn (_c2))
17106 : : {
17107 : 2 : case CFN_BUILT_IN_SQRTL:
17108 : 2 : if (gimple_call_num_args (_c2) == 1)
17109 : : {
17110 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
17111 : 2 : _q40 = do_valueize (valueize, _q40);
17112 : 2 : {
17113 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17114 : 2 : if (gimple_simplify_275 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR))
17115 : 2 : return true;
17116 : : }
17117 : : }
17118 : : break;
17119 : : default:;
17120 : : }
17121 : : }
17122 : : break;
17123 : 12 : case REAL_CST:
17124 : 12 : {
17125 : 12 : {
17126 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17127 : 12 : if (gimple_simplify_274 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR))
17128 : 12 : return true;
17129 : : }
17130 : 0 : break;
17131 : : }
17132 : : default:;
17133 : : }
17134 : : }
17135 : : break;
17136 : 187 : case CFN_BUILT_IN_SQRT:
17137 : 187 : if (gimple_call_num_args (_c1) == 1)
17138 : : {
17139 : 187 : tree _q20 = gimple_call_arg (_c1, 0);
17140 : 187 : _q20 = do_valueize (valueize, _q20);
17141 : 187 : switch (TREE_CODE (_p1))
17142 : : {
17143 : 2 : case SSA_NAME:
17144 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
17145 : : {
17146 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17147 : 2 : switch (gimple_call_combined_fn (_c2))
17148 : : {
17149 : 2 : case CFN_BUILT_IN_SQRT:
17150 : 2 : if (gimple_call_num_args (_c2) == 1)
17151 : : {
17152 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
17153 : 2 : _q40 = do_valueize (valueize, _q40);
17154 : 2 : {
17155 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17156 : 2 : if (gimple_simplify_275 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, EQ_EXPR))
17157 : 2 : return true;
17158 : : }
17159 : : }
17160 : : break;
17161 : : default:;
17162 : : }
17163 : : }
17164 : : break;
17165 : 185 : case REAL_CST:
17166 : 185 : {
17167 : 185 : {
17168 : 185 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17169 : 185 : if (gimple_simplify_274 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, EQ_EXPR))
17170 : 12 : return true;
17171 : : }
17172 : 173 : break;
17173 : : }
17174 : : default:;
17175 : : }
17176 : : }
17177 : : break;
17178 : 129 : case CFN_SQRT:
17179 : 129 : if (gimple_call_num_args (_c1) == 1)
17180 : : {
17181 : 129 : tree _q20 = gimple_call_arg (_c1, 0);
17182 : 129 : _q20 = do_valueize (valueize, _q20);
17183 : 129 : switch (TREE_CODE (_p1))
17184 : : {
17185 : 0 : case SSA_NAME:
17186 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17187 : : {
17188 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17189 : 0 : switch (gimple_call_combined_fn (_c2))
17190 : : {
17191 : 0 : case CFN_SQRT:
17192 : 0 : if (gimple_call_num_args (_c2) == 1)
17193 : : {
17194 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17195 : 0 : _q40 = do_valueize (valueize, _q40);
17196 : 0 : {
17197 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
17198 : 0 : if (gimple_simplify_275 (res_op, seq, valueize, type, captures, CFN_SQRT, EQ_EXPR))
17199 : 0 : return true;
17200 : : }
17201 : : }
17202 : : break;
17203 : : default:;
17204 : : }
17205 : : }
17206 : : break;
17207 : 129 : case REAL_CST:
17208 : 129 : {
17209 : 129 : {
17210 : 129 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
17211 : 129 : if (gimple_simplify_274 (res_op, seq, valueize, type, captures, CFN_SQRT, EQ_EXPR))
17212 : 0 : return true;
17213 : : }
17214 : 129 : break;
17215 : : }
17216 : : default:;
17217 : : }
17218 : : }
17219 : : break;
17220 : : default:;
17221 : : }
17222 : : }
17223 : 75500192 : {
17224 : 75500192 : switch (TREE_CODE (_p1))
17225 : : {
17226 : 11795594 : case SSA_NAME:
17227 : 11795594 : if (gimple *_d1 = get_def (valueize, _p1))
17228 : : {
17229 : 3949392 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17230 : 5736326 : switch (gimple_assign_rhs_code (_a1))
17231 : : {
17232 : 392412 : case ADDR_EXPR:
17233 : 392412 : {
17234 : 392412 : {
17235 : 392412 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
17236 : 392412 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, EQ_EXPR))
17237 : 0 : return true;
17238 : : }
17239 : 392412 : break;
17240 : : }
17241 : : default:;
17242 : : }
17243 : : }
17244 : : break;
17245 : 4820547 : case ADDR_EXPR:
17246 : 4820547 : {
17247 : 4820547 : {
17248 : 4820547 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
17249 : 4820547 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, EQ_EXPR))
17250 : 75 : return true;
17251 : : }
17252 : 4820472 : break;
17253 : : }
17254 : : default:;
17255 : : }
17256 : : }
17257 : : break;
17258 : 76326133 : default:;
17259 : : }
17260 : 76326133 : switch (TREE_CODE (_p1))
17261 : : {
17262 : 11838312 : case SSA_NAME:
17263 : 11838312 : if (gimple *_d1 = get_def (valueize, _p1))
17264 : : {
17265 : 3949392 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17266 : 5736326 : switch (gimple_assign_rhs_code (_a1))
17267 : : {
17268 : 346 : case BIT_XOR_EXPR:
17269 : 346 : {
17270 : 346 : tree _q30 = gimple_assign_rhs1 (_a1);
17271 : 346 : _q30 = do_valueize (valueize, _q30);
17272 : 346 : tree _q31 = gimple_assign_rhs2 (_a1);
17273 : 346 : _q31 = do_valueize (valueize, _q31);
17274 : 346 : if (tree_swap_operands_p (_q30, _q31))
17275 : 16 : std::swap (_q30, _q31);
17276 : 346 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
17277 : : {
17278 : 18 : {
17279 : 18 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
17280 : 18 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, EQ_EXPR))
17281 : 18 : return true;
17282 : : }
17283 : : }
17284 : 328 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
17285 : : {
17286 : 0 : {
17287 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
17288 : 0 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, EQ_EXPR))
17289 : 0 : return true;
17290 : : }
17291 : : }
17292 : 76326115 : break;
17293 : : }
17294 : : default:;
17295 : : }
17296 : : }
17297 : : break;
17298 : 76326115 : default:;
17299 : : }
17300 : 76326115 : switch (TREE_CODE (_p0))
17301 : : {
17302 : 75500099 : case SSA_NAME:
17303 : 75500099 : if (gimple *_d1 = get_def (valueize, _p0))
17304 : : {
17305 : 25857305 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17306 : 31310498 : switch (gimple_assign_rhs_code (_a1))
17307 : : {
17308 : 1204765 : case BIT_AND_EXPR:
17309 : 1204765 : {
17310 : 1204765 : tree _q20 = gimple_assign_rhs1 (_a1);
17311 : 1204765 : _q20 = do_valueize (valueize, _q20);
17312 : 1204765 : tree _q21 = gimple_assign_rhs2 (_a1);
17313 : 1204765 : _q21 = do_valueize (valueize, _q21);
17314 : 1204765 : if (tree_swap_operands_p (_q20, _q21))
17315 : 5928 : std::swap (_q20, _q21);
17316 : 1204765 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17317 : : {
17318 : 3528 : {
17319 : 3528 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
17320 : 3528 : if (gimple_simplify_287 (res_op, seq, valueize, type, captures, EQ_EXPR))
17321 : 2448 : return true;
17322 : : }
17323 : : }
17324 : 1202317 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17325 : : {
17326 : 116838 : {
17327 : 116838 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
17328 : 116838 : if (gimple_simplify_287 (res_op, seq, valueize, type, captures, EQ_EXPR))
17329 : 0 : return true;
17330 : : }
17331 : : }
17332 : 76323667 : break;
17333 : : }
17334 : : default:;
17335 : : }
17336 : : }
17337 : : break;
17338 : 76323667 : default:;
17339 : : }
17340 : 76323667 : switch (TREE_CODE (_p1))
17341 : : {
17342 : 11835846 : case SSA_NAME:
17343 : 11835846 : if (gimple *_d1 = get_def (valueize, _p1))
17344 : : {
17345 : 3946927 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17346 : 5734425 : switch (gimple_assign_rhs_code (_a1))
17347 : : {
17348 : 33097 : case BIT_AND_EXPR:
17349 : 33097 : {
17350 : 33097 : tree _q30 = gimple_assign_rhs1 (_a1);
17351 : 33097 : _q30 = do_valueize (valueize, _q30);
17352 : 33097 : tree _q31 = gimple_assign_rhs2 (_a1);
17353 : 33097 : _q31 = do_valueize (valueize, _q31);
17354 : 33097 : if (tree_swap_operands_p (_q30, _q31))
17355 : 174 : std::swap (_q30, _q31);
17356 : 33097 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
17357 : : {
17358 : 19909 : {
17359 : 19909 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
17360 : 19909 : if (gimple_simplify_287 (res_op, seq, valueize, type, captures, EQ_EXPR))
17361 : 10841 : return true;
17362 : : }
17363 : : }
17364 : 22256 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
17365 : : {
17366 : 16 : {
17367 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
17368 : 16 : if (gimple_simplify_287 (res_op, seq, valueize, type, captures, EQ_EXPR))
17369 : 0 : return true;
17370 : : }
17371 : : }
17372 : 76312826 : break;
17373 : : }
17374 : : default:;
17375 : : }
17376 : : }
17377 : : break;
17378 : 76312826 : default:;
17379 : : }
17380 : 76312826 : switch (TREE_CODE (_p0))
17381 : : {
17382 : 75486810 : case SSA_NAME:
17383 : 75486810 : if (gimple *_d1 = get_def (valueize, _p0))
17384 : : {
17385 : 25844035 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17386 : 31299310 : switch (gimple_assign_rhs_code (_a1))
17387 : : {
17388 : 675066 : CASE_CONVERT:
17389 : 675066 : {
17390 : 675066 : tree _q20 = gimple_assign_rhs1 (_a1);
17391 : 675066 : _q20 = do_valueize (valueize, _q20);
17392 : 675066 : switch (TREE_CODE (_q20))
17393 : : {
17394 : 662181 : case SSA_NAME:
17395 : 662181 : if (gimple *_d2 = get_def (valueize, _q20))
17396 : : {
17397 : 653866 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17398 : 786492 : switch (gimple_assign_rhs_code (_a2))
17399 : : {
17400 : 4632 : case BIT_AND_EXPR:
17401 : 4632 : {
17402 : 4632 : tree _q30 = gimple_assign_rhs1 (_a2);
17403 : 4632 : _q30 = do_valueize (valueize, _q30);
17404 : 4632 : tree _q31 = gimple_assign_rhs2 (_a2);
17405 : 4632 : _q31 = do_valueize (valueize, _q31);
17406 : 4632 : if (tree_swap_operands_p (_q30, _q31))
17407 : 4 : std::swap (_q30, _q31);
17408 : 4632 : switch (TREE_CODE (_q30))
17409 : : {
17410 : 4632 : case SSA_NAME:
17411 : 4632 : if (gimple *_d3 = get_def (valueize, _q30))
17412 : : {
17413 : 4609 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17414 : 7923 : switch (gimple_assign_rhs_code (_a3))
17415 : : {
17416 : 16 : CASE_CONVERT:
17417 : 16 : {
17418 : 16 : tree _q40 = gimple_assign_rhs1 (_a3);
17419 : 16 : _q40 = do_valueize (valueize, _q40);
17420 : 16 : switch (TREE_CODE (_q31))
17421 : : {
17422 : 8 : case INTEGER_CST:
17423 : 8 : {
17424 : 8 : switch (TREE_CODE (_p1))
17425 : : {
17426 : 0 : case SSA_NAME:
17427 : 0 : if (gimple *_d4 = get_def (valueize, _p1))
17428 : : {
17429 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17430 : 0 : switch (gimple_assign_rhs_code (_a4))
17431 : : {
17432 : 0 : CASE_CONVERT:
17433 : 0 : {
17434 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
17435 : 0 : _q70 = do_valueize (valueize, _q70);
17436 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
17437 : : {
17438 : 0 : {
17439 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
17440 : 0 : if (gimple_simplify_288 (res_op, seq, valueize, type, captures, EQ_EXPR))
17441 : 0 : return true;
17442 : : }
17443 : : }
17444 : : break;
17445 : : }
17446 : : default:;
17447 : : }
17448 : : }
17449 : : break;
17450 : : default:;
17451 : : }
17452 : : break;
17453 : : }
17454 : : default:;
17455 : : }
17456 : : break;
17457 : : }
17458 : : default:;
17459 : : }
17460 : : }
17461 : : break;
17462 : : default:;
17463 : : }
17464 : 675066 : break;
17465 : : }
17466 : : default:;
17467 : : }
17468 : : }
17469 : : break;
17470 : 675066 : default:;
17471 : : }
17472 : 675066 : switch (TREE_CODE (_p1))
17473 : : {
17474 : 162173 : case SSA_NAME:
17475 : 162173 : if (gimple *_d2 = get_def (valueize, _p1))
17476 : : {
17477 : 153158 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17478 : 165793 : switch (gimple_assign_rhs_code (_a2))
17479 : : {
17480 : 37073 : CASE_CONVERT:
17481 : 37073 : {
17482 : 37073 : tree _q40 = gimple_assign_rhs1 (_a2);
17483 : 37073 : _q40 = do_valueize (valueize, _q40);
17484 : 37073 : switch (TREE_CODE (_q40))
17485 : : {
17486 : 20075 : case SSA_NAME:
17487 : 20075 : if (gimple *_d3 = get_def (valueize, _q40))
17488 : : {
17489 : 19904 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
17490 : 24715 : switch (gimple_assign_rhs_code (_a3))
17491 : : {
17492 : 4271 : case BIT_AND_EXPR:
17493 : 4271 : {
17494 : 4271 : tree _q50 = gimple_assign_rhs1 (_a3);
17495 : 4271 : _q50 = do_valueize (valueize, _q50);
17496 : 4271 : tree _q51 = gimple_assign_rhs2 (_a3);
17497 : 4271 : _q51 = do_valueize (valueize, _q51);
17498 : 4271 : if (tree_swap_operands_p (_q50, _q51))
17499 : 0 : std::swap (_q50, _q51);
17500 : 4271 : switch (TREE_CODE (_q50))
17501 : : {
17502 : 4271 : case SSA_NAME:
17503 : 4271 : if (gimple *_d4 = get_def (valueize, _q50))
17504 : : {
17505 : 4271 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
17506 : 2635 : switch (gimple_assign_rhs_code (_a4))
17507 : : {
17508 : 12 : CASE_CONVERT:
17509 : 12 : {
17510 : 12 : tree _q60 = gimple_assign_rhs1 (_a4);
17511 : 12 : _q60 = do_valueize (valueize, _q60);
17512 : 12 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
17513 : : {
17514 : 0 : switch (TREE_CODE (_q51))
17515 : : {
17516 : 0 : case INTEGER_CST:
17517 : 0 : {
17518 : 0 : {
17519 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
17520 : 0 : if (gimple_simplify_288 (res_op, seq, valueize, type, captures, EQ_EXPR))
17521 : 0 : return true;
17522 : : }
17523 : 0 : break;
17524 : : }
17525 : : default:;
17526 : : }
17527 : : }
17528 : : break;
17529 : : }
17530 : : default:;
17531 : : }
17532 : : }
17533 : : break;
17534 : : default:;
17535 : : }
17536 : 76310580 : break;
17537 : : }
17538 : : default:;
17539 : : }
17540 : : }
17541 : : break;
17542 : : default:;
17543 : : }
17544 : : break;
17545 : : }
17546 : : default:;
17547 : : }
17548 : : }
17549 : : break;
17550 : : default:;
17551 : : }
17552 : : break;
17553 : : }
17554 : 115110 : case BIT_IOR_EXPR:
17555 : 115110 : {
17556 : 115110 : tree _q20 = gimple_assign_rhs1 (_a1);
17557 : 115110 : _q20 = do_valueize (valueize, _q20);
17558 : 115110 : tree _q21 = gimple_assign_rhs2 (_a1);
17559 : 115110 : _q21 = do_valueize (valueize, _q21);
17560 : 115110 : if (tree_swap_operands_p (_q20, _q21))
17561 : 7650 : std::swap (_q20, _q21);
17562 : 115110 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17563 : : {
17564 : 2278 : {
17565 : 2278 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
17566 : 2278 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, EQ_EXPR))
17567 : 2246 : return true;
17568 : : }
17569 : : }
17570 : 112864 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17571 : : {
17572 : 15 : {
17573 : 15 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
17574 : 15 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, EQ_EXPR))
17575 : 0 : return true;
17576 : : }
17577 : : }
17578 : 76310580 : break;
17579 : : }
17580 : : default:;
17581 : : }
17582 : : }
17583 : : break;
17584 : 76310580 : default:;
17585 : : }
17586 : 76310580 : switch (TREE_CODE (_p1))
17587 : : {
17588 : 11825005 : case SSA_NAME:
17589 : 11825005 : if (gimple *_d1 = get_def (valueize, _p1))
17590 : : {
17591 : 3936086 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17592 : 5723584 : switch (gimple_assign_rhs_code (_a1))
17593 : : {
17594 : 3856 : case BIT_IOR_EXPR:
17595 : 3856 : {
17596 : 3856 : tree _q30 = gimple_assign_rhs1 (_a1);
17597 : 3856 : _q30 = do_valueize (valueize, _q30);
17598 : 3856 : tree _q31 = gimple_assign_rhs2 (_a1);
17599 : 3856 : _q31 = do_valueize (valueize, _q31);
17600 : 3856 : if (tree_swap_operands_p (_q30, _q31))
17601 : 160 : std::swap (_q30, _q31);
17602 : 3856 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
17603 : : {
17604 : 61 : {
17605 : 61 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
17606 : 61 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, EQ_EXPR))
17607 : 0 : return true;
17608 : : }
17609 : : }
17610 : 3856 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
17611 : : {
17612 : 122 : {
17613 : 122 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
17614 : 122 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, EQ_EXPR))
17615 : 0 : return true;
17616 : : }
17617 : : }
17618 : 76310580 : break;
17619 : : }
17620 : : default:;
17621 : : }
17622 : : }
17623 : : break;
17624 : 76310580 : default:;
17625 : : }
17626 : 76310580 : switch (TREE_CODE (_p0))
17627 : : {
17628 : 75484564 : case SSA_NAME:
17629 : 75484564 : if (gimple *_d1 = get_def (valueize, _p0))
17630 : : {
17631 : 25841789 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17632 : 31297064 : switch (gimple_assign_rhs_code (_a1))
17633 : : {
17634 : 675066 : CASE_CONVERT:
17635 : 675066 : {
17636 : 675066 : tree _q20 = gimple_assign_rhs1 (_a1);
17637 : 675066 : _q20 = do_valueize (valueize, _q20);
17638 : 675066 : switch (TREE_CODE (_q20))
17639 : : {
17640 : 662181 : case SSA_NAME:
17641 : 662181 : if (gimple *_d2 = get_def (valueize, _q20))
17642 : : {
17643 : 653866 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17644 : 786492 : switch (gimple_assign_rhs_code (_a2))
17645 : : {
17646 : 25 : case BIT_XOR_EXPR:
17647 : 25 : {
17648 : 25 : tree _q30 = gimple_assign_rhs1 (_a2);
17649 : 25 : _q30 = do_valueize (valueize, _q30);
17650 : 25 : tree _q31 = gimple_assign_rhs2 (_a2);
17651 : 25 : _q31 = do_valueize (valueize, _q31);
17652 : 25 : if (tree_swap_operands_p (_q30, _q31))
17653 : 4 : std::swap (_q30, _q31);
17654 : 25 : switch (TREE_CODE (_q31))
17655 : : {
17656 : 17 : case INTEGER_CST:
17657 : 17 : {
17658 : 17 : switch (TREE_CODE (_p1))
17659 : : {
17660 : 13 : case INTEGER_CST:
17661 : 13 : {
17662 : 13 : {
17663 : 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
17664 : 13 : if (gimple_simplify_290 (res_op, seq, valueize, type, captures, EQ_EXPR))
17665 : 0 : return true;
17666 : : }
17667 : 13 : break;
17668 : : }
17669 : : default:;
17670 : : }
17671 : : break;
17672 : : }
17673 : : default:;
17674 : : }
17675 : 76310574 : break;
17676 : : }
17677 : : default:;
17678 : : }
17679 : : }
17680 : : break;
17681 : : default:;
17682 : : }
17683 : : break;
17684 : : }
17685 : 685 : case BIT_XOR_EXPR:
17686 : 685 : {
17687 : 685 : tree _q20 = gimple_assign_rhs1 (_a1);
17688 : 685 : _q20 = do_valueize (valueize, _q20);
17689 : 685 : tree _q21 = gimple_assign_rhs2 (_a1);
17690 : 685 : _q21 = do_valueize (valueize, _q21);
17691 : 685 : if (tree_swap_operands_p (_q20, _q21))
17692 : 54 : std::swap (_q20, _q21);
17693 : 685 : switch (TREE_CODE (_q21))
17694 : : {
17695 : 178 : case INTEGER_CST:
17696 : 178 : {
17697 : 178 : switch (TREE_CODE (_p1))
17698 : : {
17699 : 6 : case INTEGER_CST:
17700 : 6 : {
17701 : 6 : {
17702 : 6 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
17703 : 6 : if (gimple_simplify_290 (res_op, seq, valueize, type, captures, EQ_EXPR))
17704 : 6 : return true;
17705 : : }
17706 : 0 : break;
17707 : : }
17708 : : default:;
17709 : : }
17710 : : break;
17711 : : }
17712 : : default:;
17713 : : }
17714 : 76310574 : break;
17715 : : }
17716 : : default:;
17717 : : }
17718 : : }
17719 : : break;
17720 : 76310574 : default:;
17721 : : }
17722 : 76310574 : {
17723 : 76310574 : tree _p0_pops[1];
17724 : 76310574 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
17725 : : {
17726 : 407184 : tree _q20 = _p0_pops[0];
17727 : 407184 : if (integer_zerop (_p1))
17728 : : {
17729 : 162236 : {
17730 : 162236 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
17731 : 162236 : if (gimple_simplify_291 (res_op, seq, valueize, type, captures, EQ_EXPR))
17732 : 168 : return true;
17733 : : }
17734 : : }
17735 : : }
17736 : : }
17737 : 76310406 : if (integer_zerop (_p1))
17738 : : {
17739 : 40641086 : {
17740 : 40641086 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
17741 : 40641086 : if (gimple_simplify_291 (res_op, seq, valueize, type, captures, EQ_EXPR))
17742 : 61601 : return true;
17743 : : }
17744 : : }
17745 : 76248805 : switch (TREE_CODE (_p0))
17746 : : {
17747 : 75477975 : case SSA_NAME:
17748 : 75477975 : if (gimple *_d1 = get_def (valueize, _p0))
17749 : : {
17750 : 25838744 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
17751 : 31294487 : switch (gimple_assign_rhs_code (_a1))
17752 : : {
17753 : 1202317 : case BIT_AND_EXPR:
17754 : 1202317 : {
17755 : 1202317 : tree _q20 = gimple_assign_rhs1 (_a1);
17756 : 1202317 : _q20 = do_valueize (valueize, _q20);
17757 : 1202317 : tree _q21 = gimple_assign_rhs2 (_a1);
17758 : 1202317 : _q21 = do_valueize (valueize, _q21);
17759 : 1202317 : if (tree_swap_operands_p (_q20, _q21))
17760 : 5928 : std::swap (_q20, _q21);
17761 : 1202317 : switch (TREE_CODE (_p1))
17762 : : {
17763 : 14573 : case SSA_NAME:
17764 : 14573 : if (gimple *_d2 = get_def (valueize, _p1))
17765 : : {
17766 : 14299 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17767 : 14597 : switch (gimple_assign_rhs_code (_a2))
17768 : : {
17769 : 2867 : case BIT_AND_EXPR:
17770 : 2867 : {
17771 : 2867 : tree _q50 = gimple_assign_rhs1 (_a2);
17772 : 2867 : _q50 = do_valueize (valueize, _q50);
17773 : 2867 : tree _q51 = gimple_assign_rhs2 (_a2);
17774 : 2867 : _q51 = do_valueize (valueize, _q51);
17775 : 2867 : if (tree_swap_operands_p (_q50, _q51))
17776 : 0 : std::swap (_q50, _q51);
17777 : 2867 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17778 : : {
17779 : 1831 : {
17780 : 1831 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
17781 : 1831 : if (gimple_simplify_292 (res_op, seq, valueize, type, captures, EQ_EXPR))
17782 : 16 : return true;
17783 : : }
17784 : : }
17785 : 2851 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17786 : : {
17787 : 0 : {
17788 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
17789 : 0 : if (gimple_simplify_292 (res_op, seq, valueize, type, captures, EQ_EXPR))
17790 : 0 : return true;
17791 : : }
17792 : : }
17793 : 2851 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17794 : : {
17795 : 0 : {
17796 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
17797 : 0 : if (gimple_simplify_292 (res_op, seq, valueize, type, captures, EQ_EXPR))
17798 : 0 : return true;
17799 : : }
17800 : : }
17801 : 2851 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17802 : : {
17803 : 4 : {
17804 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
17805 : 4 : if (gimple_simplify_292 (res_op, seq, valueize, type, captures, EQ_EXPR))
17806 : 0 : return true;
17807 : : }
17808 : : }
17809 : 1202301 : break;
17810 : : }
17811 : : default:;
17812 : : }
17813 : : }
17814 : : break;
17815 : 1202301 : default:;
17816 : : }
17817 : 1202301 : if (integer_pow2p (_q21))
17818 : : {
17819 : 430658 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17820 : : {
17821 : 828 : {
17822 : 828 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
17823 : 828 : if (gimple_simplify_293 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
17824 : 828 : return true;
17825 : : }
17826 : : }
17827 : : }
17828 : 1201473 : switch (TREE_CODE (_q20))
17829 : : {
17830 : 1201473 : case SSA_NAME:
17831 : 1201473 : if (gimple *_d2 = get_def (valueize, _q20))
17832 : : {
17833 : 1156877 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17834 : 1647932 : switch (gimple_assign_rhs_code (_a2))
17835 : : {
17836 : 80021 : CASE_CONVERT:
17837 : 80021 : {
17838 : 80021 : tree _q30 = gimple_assign_rhs1 (_a2);
17839 : 80021 : _q30 = do_valueize (valueize, _q30);
17840 : 80021 : if (integer_pow2p (_q21))
17841 : : {
17842 : 6338 : if (integer_zerop (_p1))
17843 : : {
17844 : 6338 : {
17845 : 6338 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
17846 : 6338 : if (gimple_simplify_294 (res_op, seq, valueize, type, captures, EQ_EXPR, GE_EXPR))
17847 : 20 : return true;
17848 : : }
17849 : : }
17850 : : }
17851 : : break;
17852 : : }
17853 : : default:;
17854 : : }
17855 : : }
17856 : : break;
17857 : 1201453 : default:;
17858 : : }
17859 : 1201453 : if (integer_pow2p (_q21))
17860 : : {
17861 : 429810 : if (integer_zerop (_p1))
17862 : : {
17863 : 429614 : {
17864 : 429614 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
17865 : 429614 : if (gimple_simplify_295 (res_op, seq, valueize, type, captures, EQ_EXPR, GE_EXPR))
17866 : 335 : return true;
17867 : : }
17868 : : }
17869 : : }
17870 : 76233165 : break;
17871 : : }
17872 : 1045 : case GE_EXPR:
17873 : 1045 : {
17874 : 1045 : tree _q20 = gimple_assign_rhs1 (_a1);
17875 : 1045 : _q20 = do_valueize (valueize, _q20);
17876 : 1045 : tree _q21 = gimple_assign_rhs2 (_a1);
17877 : 1045 : _q21 = do_valueize (valueize, _q21);
17878 : 1045 : if (integer_zerop (_q21))
17879 : : {
17880 : 4 : switch (TREE_CODE (_p1))
17881 : : {
17882 : 4 : case SSA_NAME:
17883 : 4 : if (gimple *_d2 = get_def (valueize, _p1))
17884 : : {
17885 : 4 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17886 : 4 : switch (gimple_assign_rhs_code (_a2))
17887 : : {
17888 : 2 : case GE_EXPR:
17889 : 2 : {
17890 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
17891 : 2 : _q50 = do_valueize (valueize, _q50);
17892 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
17893 : 2 : _q51 = do_valueize (valueize, _q51);
17894 : 2 : if (integer_zerop (_q51))
17895 : : {
17896 : 2 : {
17897 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
17898 : 2 : if (gimple_simplify_296 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR, GE_EXPR))
17899 : 1 : return true;
17900 : : }
17901 : : }
17902 : : break;
17903 : : }
17904 : 2 : case LT_EXPR:
17905 : 2 : {
17906 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
17907 : 2 : _q50 = do_valueize (valueize, _q50);
17908 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
17909 : 2 : _q51 = do_valueize (valueize, _q51);
17910 : 2 : if (integer_zerop (_q51))
17911 : : {
17912 : 2 : {
17913 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
17914 : 2 : if (gimple_simplify_297 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR))
17915 : 1 : return true;
17916 : : }
17917 : : }
17918 : : break;
17919 : : }
17920 : : default:;
17921 : : }
17922 : : }
17923 : : break;
17924 : : default:;
17925 : : }
17926 : : }
17927 : : break;
17928 : : }
17929 : 829 : case LT_EXPR:
17930 : 829 : {
17931 : 829 : tree _q20 = gimple_assign_rhs1 (_a1);
17932 : 829 : _q20 = do_valueize (valueize, _q20);
17933 : 829 : tree _q21 = gimple_assign_rhs2 (_a1);
17934 : 829 : _q21 = do_valueize (valueize, _q21);
17935 : 829 : if (integer_zerop (_q21))
17936 : : {
17937 : 77 : switch (TREE_CODE (_p1))
17938 : : {
17939 : 45 : case SSA_NAME:
17940 : 45 : if (gimple *_d2 = get_def (valueize, _p1))
17941 : : {
17942 : 45 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17943 : 45 : switch (gimple_assign_rhs_code (_a2))
17944 : : {
17945 : 20 : case LT_EXPR:
17946 : 20 : {
17947 : 20 : tree _q50 = gimple_assign_rhs1 (_a2);
17948 : 20 : _q50 = do_valueize (valueize, _q50);
17949 : 20 : tree _q51 = gimple_assign_rhs2 (_a2);
17950 : 20 : _q51 = do_valueize (valueize, _q51);
17951 : 20 : if (integer_zerop (_q51))
17952 : : {
17953 : 20 : {
17954 : 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
17955 : 20 : if (gimple_simplify_296 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR, GE_EXPR))
17956 : 10 : return true;
17957 : : }
17958 : : }
17959 : : break;
17960 : : }
17961 : 2 : case GE_EXPR:
17962 : 2 : {
17963 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
17964 : 2 : _q50 = do_valueize (valueize, _q50);
17965 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
17966 : 2 : _q51 = do_valueize (valueize, _q51);
17967 : 2 : if (integer_zerop (_q51))
17968 : : {
17969 : 2 : {
17970 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
17971 : 2 : if (gimple_simplify_298 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR))
17972 : 1 : return true;
17973 : : }
17974 : : }
17975 : : break;
17976 : : }
17977 : : default:;
17978 : : }
17979 : : }
17980 : : break;
17981 : : default:;
17982 : : }
17983 : : }
17984 : : break;
17985 : : }
17986 : 674139 : CASE_CONVERT:
17987 : 674139 : {
17988 : 674139 : tree _q20 = gimple_assign_rhs1 (_a1);
17989 : 674139 : _q20 = do_valueize (valueize, _q20);
17990 : 674139 : switch (TREE_CODE (_q20))
17991 : : {
17992 : 661317 : case SSA_NAME:
17993 : 661317 : if (gimple *_d2 = get_def (valueize, _q20))
17994 : : {
17995 : 653002 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17996 : 786216 : switch (gimple_assign_rhs_code (_a2))
17997 : : {
17998 : 184 : case ADDR_EXPR:
17999 : 184 : {
18000 : 184 : switch (TREE_CODE (_p1))
18001 : : {
18002 : 164 : case SSA_NAME:
18003 : 164 : if (gimple *_d3 = get_def (valueize, _p1))
18004 : : {
18005 : 157 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18006 : 262 : switch (gimple_assign_rhs_code (_a3))
18007 : : {
18008 : 52 : CASE_CONVERT:
18009 : 52 : {
18010 : 52 : tree _q40 = gimple_assign_rhs1 (_a3);
18011 : 52 : _q40 = do_valueize (valueize, _q40);
18012 : 52 : switch (TREE_CODE (_q40))
18013 : : {
18014 : 52 : case SSA_NAME:
18015 : 52 : if (gimple *_d4 = get_def (valueize, _q40))
18016 : : {
18017 : 52 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
18018 : 104 : switch (gimple_assign_rhs_code (_a4))
18019 : : {
18020 : 52 : case ADDR_EXPR:
18021 : 52 : {
18022 : 52 : {
18023 : 52 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18024 : 52 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18025 : 0 : return true;
18026 : : }
18027 : 52 : break;
18028 : : }
18029 : : default:;
18030 : : }
18031 : : }
18032 : : break;
18033 : 0 : case ADDR_EXPR:
18034 : 0 : {
18035 : 0 : {
18036 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18037 : 0 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18038 : 0 : return true;
18039 : : }
18040 : 0 : break;
18041 : : }
18042 : : default:;
18043 : : }
18044 : : break;
18045 : : }
18046 : 0 : case ADDR_EXPR:
18047 : 0 : {
18048 : 0 : {
18049 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18050 : 0 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18051 : 0 : return true;
18052 : : }
18053 : 0 : break;
18054 : : }
18055 : : default:;
18056 : : }
18057 : : }
18058 : : break;
18059 : 0 : case ADDR_EXPR:
18060 : 0 : {
18061 : 0 : {
18062 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18063 : 0 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18064 : 0 : return true;
18065 : : }
18066 : 0 : break;
18067 : : }
18068 : : default:;
18069 : : }
18070 : : break;
18071 : : }
18072 : : default:;
18073 : : }
18074 : : }
18075 : : break;
18076 : 12822 : case ADDR_EXPR:
18077 : 12822 : {
18078 : 12822 : switch (TREE_CODE (_p1))
18079 : : {
18080 : 12792 : case SSA_NAME:
18081 : 12792 : if (gimple *_d2 = get_def (valueize, _p1))
18082 : : {
18083 : 12718 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18084 : 20260 : switch (gimple_assign_rhs_code (_a2))
18085 : : {
18086 : 4811 : CASE_CONVERT:
18087 : 4811 : {
18088 : 4811 : tree _q40 = gimple_assign_rhs1 (_a2);
18089 : 4811 : _q40 = do_valueize (valueize, _q40);
18090 : 4811 : switch (TREE_CODE (_q40))
18091 : : {
18092 : 4609 : case SSA_NAME:
18093 : 4609 : if (gimple *_d3 = get_def (valueize, _q40))
18094 : : {
18095 : 4584 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18096 : 9048 : switch (gimple_assign_rhs_code (_a3))
18097 : : {
18098 : 0 : case ADDR_EXPR:
18099 : 0 : {
18100 : 0 : {
18101 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18102 : 0 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18103 : 0 : return true;
18104 : : }
18105 : 0 : break;
18106 : : }
18107 : : default:;
18108 : : }
18109 : : }
18110 : : break;
18111 : 202 : case ADDR_EXPR:
18112 : 202 : {
18113 : 202 : {
18114 : 202 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
18115 : 202 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18116 : 172 : return true;
18117 : : }
18118 : 30 : break;
18119 : : }
18120 : : default:;
18121 : : }
18122 : : break;
18123 : : }
18124 : 0 : case ADDR_EXPR:
18125 : 0 : {
18126 : 0 : {
18127 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18128 : 0 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18129 : 0 : return true;
18130 : : }
18131 : 0 : break;
18132 : : }
18133 : : default:;
18134 : : }
18135 : : }
18136 : : break;
18137 : 0 : case ADDR_EXPR:
18138 : 0 : {
18139 : 0 : {
18140 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18141 : 0 : if (gimple_simplify_299 (res_op, seq, valueize, type, captures, EQ_EXPR))
18142 : 0 : return true;
18143 : : }
18144 : 0 : break;
18145 : : }
18146 : : default:;
18147 : : }
18148 : : break;
18149 : : }
18150 : : default:;
18151 : : }
18152 : : break;
18153 : : }
18154 : 154250 : case ADDR_EXPR:
18155 : 154250 : {
18156 : 154250 : switch (TREE_CODE (_p1))
18157 : : {
18158 : 121322 : case SSA_NAME:
18159 : 121322 : if (gimple *_d2 = get_def (valueize, _p1))
18160 : : {
18161 : 117761 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18162 : 199861 : switch (gimple_assign_rhs_code (_a2))
18163 : : {
18164 : 0 : CASE_CONVERT:
18165 : 0 : {
18166 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
18167 : 0 : _q30 = do_valueize (valueize, _q30);
18168 : 0 : switch (TREE_CODE (_q30))
18169 : : {
18170 : 0 : case SSA_NAME:
18171 : 0 : if (gimple *_d3 = get_def (valueize, _q30))
18172 : : {
18173 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18174 : 0 : switch (gimple_assign_rhs_code (_a3))
18175 : : {
18176 : 0 : case ADDR_EXPR:
18177 : 0 : {
18178 : 0 : {
18179 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18180 : 0 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18181 : 0 : return true;
18182 : : }
18183 : 0 : break;
18184 : : }
18185 : : default:;
18186 : : }
18187 : : }
18188 : : break;
18189 : 0 : case ADDR_EXPR:
18190 : 0 : {
18191 : 0 : {
18192 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18193 : 0 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18194 : 0 : return true;
18195 : : }
18196 : 0 : break;
18197 : : }
18198 : : default:;
18199 : : }
18200 : : break;
18201 : : }
18202 : 1527 : case ADDR_EXPR:
18203 : 1527 : {
18204 : 1527 : {
18205 : 1527 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18206 : 1527 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18207 : 232 : return true;
18208 : : }
18209 : 1295 : break;
18210 : : }
18211 : : default:;
18212 : : }
18213 : : }
18214 : : break;
18215 : 13934 : case ADDR_EXPR:
18216 : 13934 : {
18217 : 13934 : {
18218 : 13934 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18219 : 13934 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18220 : 23 : return true;
18221 : : }
18222 : 13911 : break;
18223 : : }
18224 : : default:;
18225 : : }
18226 : : break;
18227 : : }
18228 : : default:;
18229 : : }
18230 : : }
18231 : : break;
18232 : 27282 : case ADDR_EXPR:
18233 : 27282 : {
18234 : 27282 : switch (TREE_CODE (_p1))
18235 : : {
18236 : 0 : case SSA_NAME:
18237 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
18238 : : {
18239 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18240 : 0 : switch (gimple_assign_rhs_code (_a1))
18241 : : {
18242 : 0 : CASE_CONVERT:
18243 : 0 : {
18244 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
18245 : 0 : _q30 = do_valueize (valueize, _q30);
18246 : 0 : switch (TREE_CODE (_q30))
18247 : : {
18248 : 0 : case SSA_NAME:
18249 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
18250 : : {
18251 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18252 : 0 : switch (gimple_assign_rhs_code (_a2))
18253 : : {
18254 : 0 : case ADDR_EXPR:
18255 : 0 : {
18256 : 0 : {
18257 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18258 : 0 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18259 : 0 : return true;
18260 : : }
18261 : 0 : break;
18262 : : }
18263 : : default:;
18264 : : }
18265 : : }
18266 : : break;
18267 : 0 : case ADDR_EXPR:
18268 : 0 : {
18269 : 0 : {
18270 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
18271 : 0 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18272 : 0 : return true;
18273 : : }
18274 : 0 : break;
18275 : : }
18276 : : default:;
18277 : : }
18278 : : break;
18279 : : }
18280 : 0 : case ADDR_EXPR:
18281 : 0 : {
18282 : 0 : {
18283 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18284 : 0 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18285 : 0 : return true;
18286 : : }
18287 : 0 : break;
18288 : : }
18289 : : default:;
18290 : : }
18291 : : }
18292 : : break;
18293 : 20883 : case ADDR_EXPR:
18294 : 20883 : {
18295 : 20883 : {
18296 : 20883 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
18297 : 20883 : if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR))
18298 : 14001 : return true;
18299 : : }
18300 : 6882 : break;
18301 : : }
18302 : : default:;
18303 : : }
18304 : : break;
18305 : : }
18306 : 76233165 : default:;
18307 : : }
18308 : 76233165 : {
18309 : 76233165 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
18310 : 76233165 : if (gimple_simplify_301 (res_op, seq, valueize, type, captures, EQ_EXPR))
18311 : 7458 : return true;
18312 : : }
18313 : 76225707 : switch (TREE_CODE (_p0))
18314 : : {
18315 : 75468878 : case SSA_NAME:
18316 : 75468878 : if (gimple *_d1 = get_def (valueize, _p0))
18317 : : {
18318 : 25833399 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18319 : 31288734 : switch (gimple_assign_rhs_code (_a1))
18320 : : {
18321 : 673967 : CASE_CONVERT:
18322 : 673967 : {
18323 : 673967 : tree _q20 = gimple_assign_rhs1 (_a1);
18324 : 673967 : _q20 = do_valueize (valueize, _q20);
18325 : 673967 : switch (TREE_CODE (_p1))
18326 : : {
18327 : 509298 : case INTEGER_CST:
18328 : 509298 : {
18329 : 509298 : {
18330 : 509298 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
18331 : 509298 : if (gimple_simplify_302 (res_op, seq, valueize, type, captures, EQ_EXPR))
18332 : 16166 : return true;
18333 : : }
18334 : 493132 : break;
18335 : : }
18336 : 657801 : default:;
18337 : : }
18338 : 657801 : switch (TREE_CODE (_q20))
18339 : : {
18340 : 645181 : case SSA_NAME:
18341 : 645181 : if (gimple *_d2 = get_def (valueize, _q20))
18342 : : {
18343 : 636920 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18344 : 761916 : switch (gimple_assign_rhs_code (_a2))
18345 : : {
18346 : 1109 : case NE_EXPR:
18347 : 1109 : {
18348 : 1109 : tree _q30 = gimple_assign_rhs1 (_a2);
18349 : 1109 : _q30 = do_valueize (valueize, _q30);
18350 : 1109 : tree _q31 = gimple_assign_rhs2 (_a2);
18351 : 1109 : _q31 = do_valueize (valueize, _q31);
18352 : 1109 : if (tree_swap_operands_p (_q30, _q31))
18353 : 0 : std::swap (_q30, _q31);
18354 : 1109 : switch (TREE_CODE (_q31))
18355 : : {
18356 : 1107 : case INTEGER_CST:
18357 : 1107 : {
18358 : 1107 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
18359 : : {
18360 : 42 : {
18361 : 42 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
18362 : 42 : if (gimple_simplify_303 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
18363 : 34 : return true;
18364 : : }
18365 : : }
18366 : : break;
18367 : : }
18368 : : default:;
18369 : : }
18370 : 76209473 : break;
18371 : : }
18372 : 1631 : case EQ_EXPR:
18373 : 1631 : {
18374 : 1631 : tree _q30 = gimple_assign_rhs1 (_a2);
18375 : 1631 : _q30 = do_valueize (valueize, _q30);
18376 : 1631 : tree _q31 = gimple_assign_rhs2 (_a2);
18377 : 1631 : _q31 = do_valueize (valueize, _q31);
18378 : 1631 : if (tree_swap_operands_p (_q30, _q31))
18379 : 0 : std::swap (_q30, _q31);
18380 : 1631 : switch (TREE_CODE (_q31))
18381 : : {
18382 : 1598 : case INTEGER_CST:
18383 : 1598 : {
18384 : 1598 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
18385 : : {
18386 : 41 : {
18387 : 41 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
18388 : 41 : if (gimple_simplify_303 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
18389 : 34 : return true;
18390 : : }
18391 : : }
18392 : : break;
18393 : : }
18394 : : default:;
18395 : : }
18396 : 76209473 : break;
18397 : : }
18398 : : default:;
18399 : : }
18400 : : }
18401 : : break;
18402 : : default:;
18403 : : }
18404 : : break;
18405 : : }
18406 : : default:;
18407 : : }
18408 : : }
18409 : : break;
18410 : 76209473 : default:;
18411 : : }
18412 : 76209473 : switch (TREE_CODE (_p1))
18413 : : {
18414 : 11824320 : case SSA_NAME:
18415 : 11824320 : if (gimple *_d1 = get_def (valueize, _p1))
18416 : : {
18417 : 3935494 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18418 : 5722760 : switch (gimple_assign_rhs_code (_a1))
18419 : : {
18420 : 228563 : CASE_CONVERT:
18421 : 228563 : {
18422 : 228563 : tree _q30 = gimple_assign_rhs1 (_a1);
18423 : 228563 : _q30 = do_valueize (valueize, _q30);
18424 : 228563 : switch (TREE_CODE (_q30))
18425 : : {
18426 : 206117 : case SSA_NAME:
18427 : 206117 : if (gimple *_d2 = get_def (valueize, _q30))
18428 : : {
18429 : 201400 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18430 : 273139 : switch (gimple_assign_rhs_code (_a2))
18431 : : {
18432 : 404 : case NE_EXPR:
18433 : 404 : {
18434 : 404 : tree _q40 = gimple_assign_rhs1 (_a2);
18435 : 404 : _q40 = do_valueize (valueize, _q40);
18436 : 404 : tree _q41 = gimple_assign_rhs2 (_a2);
18437 : 404 : _q41 = do_valueize (valueize, _q41);
18438 : 404 : if (tree_swap_operands_p (_q40, _q41))
18439 : 14 : std::swap (_q40, _q41);
18440 : 404 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
18441 : : {
18442 : 81 : switch (TREE_CODE (_q41))
18443 : : {
18444 : 1 : case INTEGER_CST:
18445 : 1 : {
18446 : 1 : {
18447 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
18448 : 1 : if (gimple_simplify_303 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
18449 : 0 : return true;
18450 : : }
18451 : 1 : break;
18452 : : }
18453 : : default:;
18454 : : }
18455 : : }
18456 : 76209470 : break;
18457 : : }
18458 : 82 : case EQ_EXPR:
18459 : 82 : {
18460 : 82 : tree _q40 = gimple_assign_rhs1 (_a2);
18461 : 82 : _q40 = do_valueize (valueize, _q40);
18462 : 82 : tree _q41 = gimple_assign_rhs2 (_a2);
18463 : 82 : _q41 = do_valueize (valueize, _q41);
18464 : 82 : if (tree_swap_operands_p (_q40, _q41))
18465 : 0 : std::swap (_q40, _q41);
18466 : 82 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
18467 : : {
18468 : 3 : switch (TREE_CODE (_q41))
18469 : : {
18470 : 3 : case INTEGER_CST:
18471 : 3 : {
18472 : 3 : {
18473 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
18474 : 3 : if (gimple_simplify_303 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
18475 : 3 : return true;
18476 : : }
18477 : 0 : break;
18478 : : }
18479 : : default:;
18480 : : }
18481 : : }
18482 : 76209470 : break;
18483 : : }
18484 : : default:;
18485 : : }
18486 : : }
18487 : : break;
18488 : : default:;
18489 : : }
18490 : : break;
18491 : : }
18492 : : default:;
18493 : : }
18494 : : }
18495 : : break;
18496 : 76209470 : default:;
18497 : : }
18498 : 76209470 : if (integer_onep (_p1))
18499 : : {
18500 : 4341341 : {
18501 : 4341341 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
18502 : 4341341 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
18503 : 4341341 : && types_match (type, TREE_TYPE (captures[0]))
18504 : : )
18505 : : {
18506 : 66502 : gimple_seq *lseq = seq;
18507 : 66502 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2251;
18508 : 66502 : {
18509 : 66502 : tree tem;
18510 : 66502 : tem = captures[0];
18511 : 66502 : res_op->set_value (tem);
18512 : 66502 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1124, __FILE__, __LINE__, true);
18513 : 66502 : return true;
18514 : : }
18515 : 0 : next_after_fail2251:;
18516 : : }
18517 : : }
18518 : : }
18519 : 76142968 : switch (TREE_CODE (_p0))
18520 : : {
18521 : 75387214 : case SSA_NAME:
18522 : 75387214 : if (gimple *_d1 = get_def (valueize, _p0))
18523 : : {
18524 : 25796164 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18525 : 31254090 : switch (gimple_assign_rhs_code (_a1))
18526 : : {
18527 : 8007 : case COND_EXPR:
18528 : 8007 : {
18529 : 8007 : tree _q20 = gimple_assign_rhs1 (_a1);
18530 : 8007 : _q20 = do_valueize (valueize, _q20);
18531 : 8007 : tree _q21 = gimple_assign_rhs2 (_a1);
18532 : 8007 : _q21 = do_valueize (valueize, _q21);
18533 : 8007 : tree _q22 = gimple_assign_rhs3 (_a1);
18534 : 8007 : _q22 = do_valueize (valueize, _q22);
18535 : 8007 : {
18536 : 8007 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1 };
18537 : 8007 : if (gimple_simplify_304 (res_op, seq, valueize, type, captures, EQ_EXPR))
18538 : 361 : return true;
18539 : : }
18540 : 7646 : break;
18541 : : }
18542 : : default:;
18543 : : }
18544 : : }
18545 : : break;
18546 : 76142607 : default:;
18547 : : }
18548 : 76142607 : switch (TREE_CODE (_p1))
18549 : : {
18550 : 11824317 : case SSA_NAME:
18551 : 11824317 : if (gimple *_d1 = get_def (valueize, _p1))
18552 : : {
18553 : 3935491 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18554 : 5722757 : switch (gimple_assign_rhs_code (_a1))
18555 : : {
18556 : 15020 : case COND_EXPR:
18557 : 15020 : {
18558 : 15020 : tree _q30 = gimple_assign_rhs1 (_a1);
18559 : 15020 : _q30 = do_valueize (valueize, _q30);
18560 : 15020 : tree _q31 = gimple_assign_rhs2 (_a1);
18561 : 15020 : _q31 = do_valueize (valueize, _q31);
18562 : 15020 : tree _q32 = gimple_assign_rhs3 (_a1);
18563 : 15020 : _q32 = do_valueize (valueize, _q32);
18564 : 15020 : {
18565 : 15020 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q32, _p0 };
18566 : 15020 : if (gimple_simplify_304 (res_op, seq, valueize, type, captures, EQ_EXPR))
18567 : 0 : return true;
18568 : : }
18569 : 15020 : break;
18570 : : }
18571 : : default:;
18572 : : }
18573 : : }
18574 : : break;
18575 : 76142607 : default:;
18576 : : }
18577 : 76142607 : switch (TREE_CODE (_p0))
18578 : : {
18579 : 75386853 : case SSA_NAME:
18580 : 75386853 : if (gimple *_d1 = get_def (valueize, _p0))
18581 : : {
18582 : 25795803 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18583 : 31253729 : switch (gimple_assign_rhs_code (_a1))
18584 : : {
18585 : 1200783 : case BIT_AND_EXPR:
18586 : 1200783 : {
18587 : 1200783 : tree _q20 = gimple_assign_rhs1 (_a1);
18588 : 1200783 : _q20 = do_valueize (valueize, _q20);
18589 : 1200783 : tree _q21 = gimple_assign_rhs2 (_a1);
18590 : 1200783 : _q21 = do_valueize (valueize, _q21);
18591 : 1200783 : if (tree_swap_operands_p (_q20, _q21))
18592 : 5928 : std::swap (_q20, _q21);
18593 : 1200783 : switch (TREE_CODE (_q21))
18594 : : {
18595 : 2138 : case VECTOR_CST:
18596 : 2138 : {
18597 : 2138 : if (integer_zerop (_p1))
18598 : : {
18599 : 2133 : {
18600 : 2133 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
18601 : 2133 : const enum tree_code cmp = EQ_EXPR;
18602 : 2133 : const enum tree_code icmp = LE_EXPR;
18603 : 2133 : {
18604 : 2133 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
18605 : 2133 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
18606 : : )
18607 : : {
18608 : 9 : {
18609 : 9 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
18610 : 9 : ? optab_vector : optab_default;
18611 : 9 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
18612 : 9 : if (target_supports_op_p (utype, icmp, optab)
18613 : 9 : || (optimize_vectors_before_lowering_p ()
18614 : 6 : && (!target_supports_op_p (type, cmp, optab)
18615 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
18616 : : )
18617 : : {
18618 : 6 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
18619 : : )
18620 : : {
18621 : 4 : gimple_seq *lseq = seq;
18622 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2252;
18623 : 4 : {
18624 : 4 : res_op->set_op (icmp, type, 2);
18625 : 4 : res_op->ops[0] = captures[1];
18626 : 4 : res_op->ops[1] = csts;
18627 : 4 : res_op->resimplify (lseq, valueize);
18628 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1125, __FILE__, __LINE__, true);
18629 : 4 : return true;
18630 : : }
18631 : 0 : next_after_fail2252:;
18632 : : }
18633 : : else
18634 : : {
18635 : 2 : gimple_seq *lseq = seq;
18636 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2253;
18637 : 2 : {
18638 : 2 : res_op->set_op (icmp, type, 2);
18639 : 2 : {
18640 : 2 : tree _o1[1], _r1;
18641 : 2 : _o1[0] = captures[1];
18642 : 2 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
18643 : 2 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
18644 : : {
18645 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
18646 : 2 : tem_op.resimplify (lseq, valueize);
18647 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18648 : 2 : if (!_r1) goto next_after_fail2253;
18649 : : }
18650 : : else
18651 : : _r1 = _o1[0];
18652 : 0 : res_op->ops[0] = _r1;
18653 : : }
18654 : 0 : res_op->ops[1] = csts;
18655 : 0 : res_op->resimplify (lseq, valueize);
18656 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1126, __FILE__, __LINE__, true);
18657 : 0 : return true;
18658 : : }
18659 : 2129 : next_after_fail2253:;
18660 : : }
18661 : : }
18662 : : }
18663 : : }
18664 : : }
18665 : : }
18666 : : }
18667 : : break;
18668 : : }
18669 : 1129419 : case INTEGER_CST:
18670 : 1129419 : {
18671 : 1129419 : if (integer_zerop (_p1))
18672 : : {
18673 : 653557 : {
18674 : 653557 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
18675 : 653557 : const enum tree_code cmp = EQ_EXPR;
18676 : 653557 : const enum tree_code icmp = LE_EXPR;
18677 : 653557 : {
18678 : 653557 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
18679 : 653557 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
18680 : : )
18681 : : {
18682 : 312 : {
18683 : 312 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
18684 : 312 : ? optab_vector : optab_default;
18685 : 312 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
18686 : 312 : if (target_supports_op_p (utype, icmp, optab)
18687 : 312 : || (optimize_vectors_before_lowering_p ()
18688 : 308 : && (!target_supports_op_p (type, cmp, optab)
18689 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
18690 : : )
18691 : : {
18692 : 308 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
18693 : : )
18694 : : {
18695 : 302 : gimple_seq *lseq = seq;
18696 : 302 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2254;
18697 : 302 : {
18698 : 302 : res_op->set_op (icmp, type, 2);
18699 : 302 : res_op->ops[0] = captures[1];
18700 : 302 : res_op->ops[1] = csts;
18701 : 302 : res_op->resimplify (lseq, valueize);
18702 : 302 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1125, __FILE__, __LINE__, true);
18703 : 302 : return true;
18704 : : }
18705 : 0 : next_after_fail2254:;
18706 : : }
18707 : : else
18708 : : {
18709 : 6 : gimple_seq *lseq = seq;
18710 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2255;
18711 : 6 : {
18712 : 6 : res_op->set_op (icmp, type, 2);
18713 : 6 : {
18714 : 6 : tree _o1[1], _r1;
18715 : 6 : _o1[0] = captures[1];
18716 : 6 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
18717 : 6 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
18718 : : {
18719 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
18720 : 6 : tem_op.resimplify (lseq, valueize);
18721 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18722 : 6 : if (!_r1) goto next_after_fail2255;
18723 : : }
18724 : : else
18725 : : _r1 = _o1[0];
18726 : 6 : res_op->ops[0] = _r1;
18727 : : }
18728 : 6 : res_op->ops[1] = csts;
18729 : 6 : res_op->resimplify (lseq, valueize);
18730 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1126, __FILE__, __LINE__, true);
18731 : 6 : return true;
18732 : : }
18733 : 653249 : next_after_fail2255:;
18734 : : }
18735 : : }
18736 : : }
18737 : : }
18738 : : }
18739 : : }
18740 : : }
18741 : : break;
18742 : : }
18743 : 1200471 : default:;
18744 : : }
18745 : 1200471 : switch (TREE_CODE (_q20))
18746 : : {
18747 : 0 : case VECTOR_CST:
18748 : 0 : {
18749 : 0 : if (integer_zerop (_p1))
18750 : : {
18751 : 0 : {
18752 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
18753 : 0 : const enum tree_code cmp = EQ_EXPR;
18754 : 0 : const enum tree_code icmp = LE_EXPR;
18755 : 0 : {
18756 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
18757 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
18758 : : )
18759 : : {
18760 : 0 : {
18761 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
18762 : 0 : ? optab_vector : optab_default;
18763 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
18764 : 0 : if (target_supports_op_p (utype, icmp, optab)
18765 : 0 : || (optimize_vectors_before_lowering_p ()
18766 : 0 : && (!target_supports_op_p (type, cmp, optab)
18767 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
18768 : : )
18769 : : {
18770 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
18771 : : )
18772 : : {
18773 : 0 : gimple_seq *lseq = seq;
18774 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2256;
18775 : 0 : {
18776 : 0 : res_op->set_op (icmp, type, 2);
18777 : 0 : res_op->ops[0] = captures[1];
18778 : 0 : res_op->ops[1] = csts;
18779 : 0 : res_op->resimplify (lseq, valueize);
18780 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1125, __FILE__, __LINE__, true);
18781 : 0 : return true;
18782 : : }
18783 : 0 : next_after_fail2256:;
18784 : : }
18785 : : else
18786 : : {
18787 : 0 : gimple_seq *lseq = seq;
18788 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2257;
18789 : 0 : {
18790 : 0 : res_op->set_op (icmp, type, 2);
18791 : 0 : {
18792 : 0 : tree _o1[1], _r1;
18793 : 0 : _o1[0] = captures[1];
18794 : 0 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
18795 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
18796 : : {
18797 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
18798 : 0 : tem_op.resimplify (lseq, valueize);
18799 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18800 : 0 : if (!_r1) goto next_after_fail2257;
18801 : : }
18802 : : else
18803 : : _r1 = _o1[0];
18804 : 0 : res_op->ops[0] = _r1;
18805 : : }
18806 : 0 : res_op->ops[1] = csts;
18807 : 0 : res_op->resimplify (lseq, valueize);
18808 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1126, __FILE__, __LINE__, true);
18809 : 0 : return true;
18810 : : }
18811 : 0 : next_after_fail2257:;
18812 : : }
18813 : : }
18814 : : }
18815 : : }
18816 : : }
18817 : : }
18818 : : }
18819 : : break;
18820 : : }
18821 : 0 : case INTEGER_CST:
18822 : 0 : {
18823 : 0 : if (integer_zerop (_p1))
18824 : : {
18825 : 0 : {
18826 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
18827 : 0 : const enum tree_code cmp = EQ_EXPR;
18828 : 0 : const enum tree_code icmp = LE_EXPR;
18829 : 0 : {
18830 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
18831 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
18832 : : )
18833 : : {
18834 : 0 : {
18835 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
18836 : 0 : ? optab_vector : optab_default;
18837 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
18838 : 0 : if (target_supports_op_p (utype, icmp, optab)
18839 : 0 : || (optimize_vectors_before_lowering_p ()
18840 : 0 : && (!target_supports_op_p (type, cmp, optab)
18841 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
18842 : : )
18843 : : {
18844 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
18845 : : )
18846 : : {
18847 : 0 : gimple_seq *lseq = seq;
18848 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2258;
18849 : 0 : {
18850 : 0 : res_op->set_op (icmp, type, 2);
18851 : 0 : res_op->ops[0] = captures[1];
18852 : 0 : res_op->ops[1] = csts;
18853 : 0 : res_op->resimplify (lseq, valueize);
18854 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1125, __FILE__, __LINE__, true);
18855 : 0 : return true;
18856 : : }
18857 : 0 : next_after_fail2258:;
18858 : : }
18859 : : else
18860 : : {
18861 : 0 : gimple_seq *lseq = seq;
18862 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2259;
18863 : 0 : {
18864 : 0 : res_op->set_op (icmp, type, 2);
18865 : 0 : {
18866 : 0 : tree _o1[1], _r1;
18867 : 0 : _o1[0] = captures[1];
18868 : 0 : if (utype != TREE_TYPE (_o1[0]) /* XXX */
18869 : 0 : && !useless_type_conversion_p (utype, TREE_TYPE (_o1[0])))
18870 : : {
18871 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o1[0]);
18872 : 0 : tem_op.resimplify (lseq, valueize);
18873 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
18874 : 0 : if (!_r1) goto next_after_fail2259;
18875 : : }
18876 : : else
18877 : : _r1 = _o1[0];
18878 : 0 : res_op->ops[0] = _r1;
18879 : : }
18880 : 0 : res_op->ops[1] = csts;
18881 : 0 : res_op->resimplify (lseq, valueize);
18882 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1126, __FILE__, __LINE__, true);
18883 : 0 : return true;
18884 : : }
18885 : 0 : next_after_fail2259:;
18886 : : }
18887 : : }
18888 : : }
18889 : : }
18890 : : }
18891 : : }
18892 : : }
18893 : : break;
18894 : : }
18895 : : default:;
18896 : : }
18897 : 76513082 : break;
18898 : : }
18899 : 48437 : case RSHIFT_EXPR:
18900 : 48437 : {
18901 : 48437 : tree _q20 = gimple_assign_rhs1 (_a1);
18902 : 48437 : _q20 = do_valueize (valueize, _q20);
18903 : 48437 : tree _q21 = gimple_assign_rhs2 (_a1);
18904 : 48437 : _q21 = do_valueize (valueize, _q21);
18905 : 48437 : switch (TREE_CODE (_q20))
18906 : : {
18907 : 47974 : case SSA_NAME:
18908 : 47974 : if (gimple *_d2 = get_def (valueize, _q20))
18909 : : {
18910 : 47263 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18911 : 33605 : switch (gimple_assign_rhs_code (_a2))
18912 : : {
18913 : 589 : case MULT_EXPR:
18914 : 589 : {
18915 : 589 : tree _q30 = gimple_assign_rhs1 (_a2);
18916 : 589 : _q30 = do_valueize (valueize, _q30);
18917 : 589 : tree _q31 = gimple_assign_rhs2 (_a2);
18918 : 589 : _q31 = do_valueize (valueize, _q31);
18919 : 589 : if (tree_swap_operands_p (_q30, _q31))
18920 : 0 : std::swap (_q30, _q31);
18921 : 589 : switch (TREE_CODE (_q30))
18922 : : {
18923 : 589 : case SSA_NAME:
18924 : 589 : if (gimple *_d3 = get_def (valueize, _q30))
18925 : : {
18926 : 589 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18927 : 544 : switch (gimple_assign_rhs_code (_a3))
18928 : : {
18929 : 538 : CASE_CONVERT:
18930 : 538 : {
18931 : 538 : tree _q40 = gimple_assign_rhs1 (_a3);
18932 : 538 : _q40 = do_valueize (valueize, _q40);
18933 : 538 : switch (TREE_CODE (_q31))
18934 : : {
18935 : 0 : case SSA_NAME:
18936 : 0 : if (gimple *_d4 = get_def (valueize, _q31))
18937 : : {
18938 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
18939 : 0 : switch (gimple_assign_rhs_code (_a4))
18940 : : {
18941 : 0 : CASE_CONVERT:
18942 : 0 : {
18943 : 0 : tree _q60 = gimple_assign_rhs1 (_a4);
18944 : 0 : _q60 = do_valueize (valueize, _q60);
18945 : 0 : switch (TREE_CODE (_q21))
18946 : : {
18947 : 0 : case INTEGER_CST:
18948 : 0 : {
18949 : 0 : if (integer_zerop (_p1))
18950 : : {
18951 : 0 : {
18952 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
18953 : 0 : if (gimple_simplify_305 (res_op, seq, valueize, type, captures, EQ_EXPR))
18954 : 0 : return true;
18955 : : }
18956 : : }
18957 : : break;
18958 : : }
18959 : : default:;
18960 : : }
18961 : : break;
18962 : : }
18963 : : default:;
18964 : : }
18965 : : }
18966 : : break;
18967 : : default:;
18968 : : }
18969 : : break;
18970 : : }
18971 : : default:;
18972 : : }
18973 : : }
18974 : : break;
18975 : : default:;
18976 : : }
18977 : 76513082 : break;
18978 : : }
18979 : : default:;
18980 : : }
18981 : : }
18982 : : break;
18983 : : default:;
18984 : : }
18985 : : break;
18986 : : }
18987 : 859745 : case PLUS_EXPR:
18988 : 859745 : {
18989 : 859745 : tree _q20 = gimple_assign_rhs1 (_a1);
18990 : 859745 : _q20 = do_valueize (valueize, _q20);
18991 : 859745 : tree _q21 = gimple_assign_rhs2 (_a1);
18992 : 859745 : _q21 = do_valueize (valueize, _q21);
18993 : 859745 : if (tree_swap_operands_p (_q20, _q21))
18994 : 6666 : std::swap (_q20, _q21);
18995 : 859745 : switch (TREE_CODE (_q21))
18996 : : {
18997 : 742198 : case INTEGER_CST:
18998 : 742198 : {
18999 : 742198 : switch (TREE_CODE (_p1))
19000 : : {
19001 : 487866 : case INTEGER_CST:
19002 : 487866 : {
19003 : 487866 : {
19004 : 487866 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19005 : 487866 : if (gimple_simplify_306 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, EQ_EXPR))
19006 : 42464 : return true;
19007 : : }
19008 : 445402 : break;
19009 : : }
19010 : : default:;
19011 : : }
19012 : : break;
19013 : : }
19014 : : default:;
19015 : : }
19016 : 76513082 : break;
19017 : : }
19018 : 217392 : case MINUS_EXPR:
19019 : 217392 : {
19020 : 217392 : tree _q20 = gimple_assign_rhs1 (_a1);
19021 : 217392 : _q20 = do_valueize (valueize, _q20);
19022 : 217392 : tree _q21 = gimple_assign_rhs2 (_a1);
19023 : 217392 : _q21 = do_valueize (valueize, _q21);
19024 : 217392 : switch (TREE_CODE (_q21))
19025 : : {
19026 : 21750 : case INTEGER_CST:
19027 : 21750 : {
19028 : 21750 : switch (TREE_CODE (_p1))
19029 : : {
19030 : 21370 : case INTEGER_CST:
19031 : 21370 : {
19032 : 21370 : {
19033 : 21370 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19034 : 21370 : if (gimple_simplify_306 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, EQ_EXPR))
19035 : 1 : return true;
19036 : : }
19037 : 21369 : break;
19038 : : }
19039 : : default:;
19040 : : }
19041 : : break;
19042 : : }
19043 : 217391 : default:;
19044 : : }
19045 : 217391 : switch (TREE_CODE (_q20))
19046 : : {
19047 : 2712 : case INTEGER_CST:
19048 : 2712 : {
19049 : 2712 : switch (TREE_CODE (_p1))
19050 : : {
19051 : 1174 : case INTEGER_CST:
19052 : 1174 : {
19053 : 1174 : {
19054 : 1174 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19055 : 1174 : if (gimple_simplify_307 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
19056 : 1174 : return true;
19057 : : }
19058 : 0 : break;
19059 : : }
19060 : : default:;
19061 : : }
19062 : : break;
19063 : : }
19064 : : default:;
19065 : : }
19066 : : break;
19067 : : }
19068 : : default:;
19069 : : }
19070 : 8377318 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
19071 : 4810392 : switch (gimple_call_combined_fn (_c1))
19072 : : {
19073 : 2651 : case CFN_BUILT_IN_CLZ:
19074 : 2651 : if (gimple_call_num_args (_c1) == 1)
19075 : : {
19076 : 2651 : tree _q20 = gimple_call_arg (_c1, 0);
19077 : 2651 : _q20 = do_valueize (valueize, _q20);
19078 : 2651 : switch (TREE_CODE (_p1))
19079 : : {
19080 : 2651 : case INTEGER_CST:
19081 : 2651 : {
19082 : 2651 : {
19083 : 2651 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19084 : 2651 : if (gimple_simplify_308 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZ))
19085 : 6 : return true;
19086 : : }
19087 : 2645 : break;
19088 : : }
19089 : : default:;
19090 : : }
19091 : : }
19092 : : break;
19093 : 12 : case CFN_BUILT_IN_CTZ:
19094 : 12 : if (gimple_call_num_args (_c1) == 1)
19095 : : {
19096 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
19097 : 12 : _q20 = do_valueize (valueize, _q20);
19098 : 12 : switch (TREE_CODE (_p1))
19099 : : {
19100 : 12 : case INTEGER_CST:
19101 : 12 : {
19102 : 12 : {
19103 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19104 : 12 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_CTZ))
19105 : 6 : return true;
19106 : : }
19107 : 6 : break;
19108 : : }
19109 : : default:;
19110 : : }
19111 : : }
19112 : : break;
19113 : 0 : case CFN_BUILT_IN_FFS:
19114 : 0 : if (gimple_call_num_args (_c1) == 1)
19115 : : {
19116 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19117 : 0 : _q20 = do_valueize (valueize, _q20);
19118 : 0 : switch (TREE_CODE (_p1))
19119 : : {
19120 : 0 : case INTEGER_CST:
19121 : 0 : {
19122 : 0 : {
19123 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19124 : 0 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_FFS))
19125 : 0 : return true;
19126 : : }
19127 : 0 : break;
19128 : : }
19129 : : default:;
19130 : : }
19131 : : }
19132 : : break;
19133 : 765 : case CFN_REDUC_IOR:
19134 : 765 : if (gimple_call_num_args (_c1) == 1)
19135 : : {
19136 : 765 : tree _q20 = gimple_call_arg (_c1, 0);
19137 : 765 : _q20 = do_valueize (valueize, _q20);
19138 : 765 : if (integer_zerop (_p1))
19139 : : {
19140 : 765 : {
19141 : 765 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19142 : 765 : if (gimple_simplify_314 (res_op, seq, valueize, type, captures, EQ_EXPR))
19143 : 5 : return true;
19144 : : }
19145 : : }
19146 : : }
19147 : : break;
19148 : 0 : case CFN_BUILT_IN_FFSIMAX:
19149 : 0 : if (gimple_call_num_args (_c1) == 1)
19150 : : {
19151 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19152 : 0 : _q20 = do_valueize (valueize, _q20);
19153 : 0 : switch (TREE_CODE (_p1))
19154 : : {
19155 : 0 : case INTEGER_CST:
19156 : 0 : {
19157 : 0 : {
19158 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19159 : 0 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_FFSIMAX))
19160 : 0 : return true;
19161 : : }
19162 : 0 : break;
19163 : : }
19164 : : default:;
19165 : : }
19166 : : }
19167 : : break;
19168 : 542 : case CFN_BUILT_IN_POPCOUNT:
19169 : 542 : if (gimple_call_num_args (_c1) == 1)
19170 : : {
19171 : 542 : tree _q20 = gimple_call_arg (_c1, 0);
19172 : 542 : _q20 = do_valueize (valueize, _q20);
19173 : 542 : if (integer_zerop (_p1))
19174 : : {
19175 : 0 : {
19176 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19177 : 0 : if (gimple_simplify_312 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT))
19178 : 0 : return true;
19179 : : }
19180 : : }
19181 : : }
19182 : : break;
19183 : 194 : case CFN_BUILT_IN_CLZL:
19184 : 194 : if (gimple_call_num_args (_c1) == 1)
19185 : : {
19186 : 194 : tree _q20 = gimple_call_arg (_c1, 0);
19187 : 194 : _q20 = do_valueize (valueize, _q20);
19188 : 194 : switch (TREE_CODE (_p1))
19189 : : {
19190 : 191 : case INTEGER_CST:
19191 : 191 : {
19192 : 191 : {
19193 : 191 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19194 : 191 : if (gimple_simplify_308 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZL))
19195 : 7 : return true;
19196 : : }
19197 : 184 : break;
19198 : : }
19199 : : default:;
19200 : : }
19201 : : }
19202 : : break;
19203 : 14 : case CFN_BUILT_IN_CTZL:
19204 : 14 : if (gimple_call_num_args (_c1) == 1)
19205 : : {
19206 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
19207 : 14 : _q20 = do_valueize (valueize, _q20);
19208 : 14 : switch (TREE_CODE (_p1))
19209 : : {
19210 : 14 : case INTEGER_CST:
19211 : 14 : {
19212 : 14 : {
19213 : 14 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19214 : 14 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_CTZL))
19215 : 8 : return true;
19216 : : }
19217 : 6 : break;
19218 : : }
19219 : : default:;
19220 : : }
19221 : : }
19222 : : break;
19223 : 0 : case CFN_BUILT_IN_FFSL:
19224 : 0 : if (gimple_call_num_args (_c1) == 1)
19225 : : {
19226 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19227 : 0 : _q20 = do_valueize (valueize, _q20);
19228 : 0 : switch (TREE_CODE (_p1))
19229 : : {
19230 : 0 : case INTEGER_CST:
19231 : 0 : {
19232 : 0 : {
19233 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19234 : 0 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_FFSL))
19235 : 0 : return true;
19236 : : }
19237 : 0 : break;
19238 : : }
19239 : : default:;
19240 : : }
19241 : : }
19242 : : break;
19243 : 90 : case CFN_BUILT_IN_POPCOUNTLL:
19244 : 90 : if (gimple_call_num_args (_c1) == 1)
19245 : : {
19246 : 90 : tree _q20 = gimple_call_arg (_c1, 0);
19247 : 90 : _q20 = do_valueize (valueize, _q20);
19248 : 90 : if (integer_zerop (_p1))
19249 : : {
19250 : 0 : {
19251 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19252 : 0 : if (gimple_simplify_312 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL))
19253 : 0 : return true;
19254 : : }
19255 : : }
19256 : : }
19257 : : break;
19258 : 0 : case CFN_BUILT_IN_CTZIMAX:
19259 : 0 : if (gimple_call_num_args (_c1) == 1)
19260 : : {
19261 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19262 : 0 : _q20 = do_valueize (valueize, _q20);
19263 : 0 : switch (TREE_CODE (_p1))
19264 : : {
19265 : 0 : case INTEGER_CST:
19266 : 0 : {
19267 : 0 : {
19268 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19269 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_CTZIMAX))
19270 : 0 : return true;
19271 : : }
19272 : 0 : break;
19273 : : }
19274 : : default:;
19275 : : }
19276 : : }
19277 : : break;
19278 : 0 : case CFN_POPCOUNT:
19279 : 0 : if (gimple_call_num_args (_c1) == 1)
19280 : : {
19281 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19282 : 0 : _q20 = do_valueize (valueize, _q20);
19283 : 0 : if (integer_zerop (_p1))
19284 : : {
19285 : 0 : {
19286 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19287 : 0 : if (gimple_simplify_312 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_POPCOUNT))
19288 : 0 : return true;
19289 : : }
19290 : : }
19291 : : }
19292 : : break;
19293 : 0 : case CFN_CLZ:
19294 : 0 : if (gimple_call_num_args (_c1) == 1)
19295 : : {
19296 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19297 : 0 : _q20 = do_valueize (valueize, _q20);
19298 : 0 : switch (TREE_CODE (_p1))
19299 : : {
19300 : 0 : case INTEGER_CST:
19301 : 0 : {
19302 : 0 : {
19303 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19304 : 0 : if (gimple_simplify_308 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR, CFN_CLZ))
19305 : 0 : return true;
19306 : : }
19307 : 0 : break;
19308 : : }
19309 : : default:;
19310 : : }
19311 : : }
19312 : 0 : if (gimple_call_num_args (_c1) == 2)
19313 : : {
19314 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19315 : 0 : _q20 = do_valueize (valueize, _q20);
19316 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
19317 : 0 : _q21 = do_valueize (valueize, _q21);
19318 : 0 : switch (TREE_CODE (_p1))
19319 : : {
19320 : 0 : case INTEGER_CST:
19321 : 0 : {
19322 : 0 : {
19323 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19324 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR))
19325 : 0 : return true;
19326 : : }
19327 : 0 : break;
19328 : : }
19329 : : default:;
19330 : : }
19331 : : }
19332 : : break;
19333 : 0 : case CFN_CTZ:
19334 : 0 : if (gimple_call_num_args (_c1) == 1)
19335 : : {
19336 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19337 : 0 : _q20 = do_valueize (valueize, _q20);
19338 : 0 : switch (TREE_CODE (_p1))
19339 : : {
19340 : 0 : case INTEGER_CST:
19341 : 0 : {
19342 : 0 : {
19343 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19344 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_CTZ))
19345 : 0 : return true;
19346 : : }
19347 : 0 : break;
19348 : : }
19349 : : default:;
19350 : : }
19351 : : }
19352 : 0 : if (gimple_call_num_args (_c1) == 2)
19353 : : {
19354 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19355 : 0 : _q20 = do_valueize (valueize, _q20);
19356 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
19357 : 0 : _q21 = do_valueize (valueize, _q21);
19358 : 0 : switch (TREE_CODE (_p1))
19359 : : {
19360 : 0 : case INTEGER_CST:
19361 : 0 : {
19362 : 0 : {
19363 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19364 : 0 : if (gimple_simplify_311 (res_op, seq, valueize, type, captures, EQ_EXPR))
19365 : 0 : return true;
19366 : : }
19367 : 0 : break;
19368 : : }
19369 : : default:;
19370 : : }
19371 : : }
19372 : : break;
19373 : 0 : case CFN_FFS:
19374 : 0 : if (gimple_call_num_args (_c1) == 1)
19375 : : {
19376 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19377 : 0 : _q20 = do_valueize (valueize, _q20);
19378 : 0 : switch (TREE_CODE (_p1))
19379 : : {
19380 : 0 : case INTEGER_CST:
19381 : 0 : {
19382 : 0 : {
19383 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19384 : 0 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_FFS))
19385 : 0 : return true;
19386 : : }
19387 : 0 : break;
19388 : : }
19389 : : default:;
19390 : : }
19391 : : }
19392 : : break;
19393 : 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
19394 : 0 : if (gimple_call_num_args (_c1) == 1)
19395 : : {
19396 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19397 : 0 : _q20 = do_valueize (valueize, _q20);
19398 : 0 : if (integer_zerop (_p1))
19399 : : {
19400 : 0 : {
19401 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19402 : 0 : if (gimple_simplify_312 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX))
19403 : 0 : return true;
19404 : : }
19405 : : }
19406 : : }
19407 : : break;
19408 : 0 : case CFN_BUILT_IN_CLZIMAX:
19409 : 0 : if (gimple_call_num_args (_c1) == 1)
19410 : : {
19411 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19412 : 0 : _q20 = do_valueize (valueize, _q20);
19413 : 0 : switch (TREE_CODE (_p1))
19414 : : {
19415 : 0 : case INTEGER_CST:
19416 : 0 : {
19417 : 0 : {
19418 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19419 : 0 : if (gimple_simplify_308 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZIMAX))
19420 : 0 : return true;
19421 : : }
19422 : 0 : break;
19423 : : }
19424 : : default:;
19425 : : }
19426 : : }
19427 : : break;
19428 : 35 : case CFN_BUILT_IN_POPCOUNTL:
19429 : 35 : if (gimple_call_num_args (_c1) == 1)
19430 : : {
19431 : 35 : tree _q20 = gimple_call_arg (_c1, 0);
19432 : 35 : _q20 = do_valueize (valueize, _q20);
19433 : 35 : if (integer_zerop (_p1))
19434 : : {
19435 : 0 : {
19436 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
19437 : 0 : if (gimple_simplify_312 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL))
19438 : 0 : return true;
19439 : : }
19440 : : }
19441 : : }
19442 : : break;
19443 : 494 : case CFN_BUILT_IN_CLZLL:
19444 : 494 : if (gimple_call_num_args (_c1) == 1)
19445 : : {
19446 : 494 : tree _q20 = gimple_call_arg (_c1, 0);
19447 : 494 : _q20 = do_valueize (valueize, _q20);
19448 : 494 : switch (TREE_CODE (_p1))
19449 : : {
19450 : 494 : case INTEGER_CST:
19451 : 494 : {
19452 : 494 : {
19453 : 494 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19454 : 494 : if (gimple_simplify_308 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZLL))
19455 : 18 : return true;
19456 : : }
19457 : 476 : break;
19458 : : }
19459 : : default:;
19460 : : }
19461 : : }
19462 : : break;
19463 : 0 : case CFN_BUILT_IN_CTZLL:
19464 : 0 : if (gimple_call_num_args (_c1) == 1)
19465 : : {
19466 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19467 : 0 : _q20 = do_valueize (valueize, _q20);
19468 : 0 : switch (TREE_CODE (_p1))
19469 : : {
19470 : 0 : case INTEGER_CST:
19471 : 0 : {
19472 : 0 : {
19473 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19474 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_CTZLL))
19475 : 0 : return true;
19476 : : }
19477 : 0 : break;
19478 : : }
19479 : : default:;
19480 : : }
19481 : : }
19482 : : break;
19483 : 0 : case CFN_BUILT_IN_FFSLL:
19484 : 0 : if (gimple_call_num_args (_c1) == 1)
19485 : : {
19486 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
19487 : 0 : _q20 = do_valueize (valueize, _q20);
19488 : 0 : switch (TREE_CODE (_p1))
19489 : : {
19490 : 0 : case INTEGER_CST:
19491 : 0 : {
19492 : 0 : {
19493 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19494 : 0 : if (gimple_simplify_313 (res_op, seq, valueize, type, captures, EQ_EXPR, CFN_BUILT_IN_FFSLL))
19495 : 0 : return true;
19496 : : }
19497 : 0 : break;
19498 : : }
19499 : : default:;
19500 : : }
19501 : : }
19502 : : break;
19503 : : default:;
19504 : : }
19505 : : }
19506 : : break;
19507 : : default:;
19508 : : }
19509 : : return false;
19510 : : }
19511 : :
19512 : : bool
19513 : 500 : gimple_simplify_CEIL_MOD_EXPR (gimple_match_op *res_op, gimple_seq *seq,
19514 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
19515 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
19516 : : {
19517 : 500 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
19518 : 500 : if (integer_zerop (_p0))
19519 : : {
19520 : 0 : {
19521 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
19522 : 0 : if (gimple_simplify_342 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR))
19523 : 0 : return true;
19524 : : }
19525 : : }
19526 : 500 : if (integer_onep (_p1))
19527 : : {
19528 : 0 : {
19529 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
19530 : 0 : if (gimple_simplify_343 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR))
19531 : 0 : return true;
19532 : : }
19533 : : }
19534 : 500 : if (integer_minus_onep (_p1))
19535 : : {
19536 : 0 : {
19537 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
19538 : 0 : if (gimple_simplify_344 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR))
19539 : 0 : return true;
19540 : : }
19541 : : }
19542 : 500 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
19543 : : {
19544 : 0 : {
19545 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
19546 : 0 : if (gimple_simplify_345 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR))
19547 : 0 : return true;
19548 : : }
19549 : : }
19550 : 500 : switch (TREE_CODE (_p0))
19551 : : {
19552 : 408 : case SSA_NAME:
19553 : 408 : if (gimple *_d1 = get_def (valueize, _p0))
19554 : : {
19555 : 300 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19556 : 96 : switch (gimple_assign_rhs_code (_a1))
19557 : : {
19558 : 0 : case CEIL_MOD_EXPR:
19559 : 0 : {
19560 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
19561 : 0 : _q20 = do_valueize (valueize, _q20);
19562 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
19563 : 0 : _q21 = do_valueize (valueize, _q21);
19564 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
19565 : : {
19566 : 0 : {
19567 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
19568 : 0 : if (gimple_simplify_346 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR))
19569 : 0 : return true;
19570 : : }
19571 : : }
19572 : : break;
19573 : : }
19574 : 0 : case MULT_EXPR:
19575 : 0 : {
19576 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
19577 : 0 : _q20 = do_valueize (valueize, _q20);
19578 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
19579 : 0 : _q21 = do_valueize (valueize, _q21);
19580 : 0 : if (tree_swap_operands_p (_q20, _q21))
19581 : 0 : std::swap (_q20, _q21);
19582 : 0 : switch (TREE_CODE (_q21))
19583 : : {
19584 : 0 : case INTEGER_CST:
19585 : 0 : {
19586 : 0 : switch (TREE_CODE (_p1))
19587 : : {
19588 : 0 : case INTEGER_CST:
19589 : 0 : {
19590 : 0 : {
19591 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19592 : 0 : if (gimple_simplify_347 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR))
19593 : 0 : return true;
19594 : : }
19595 : 0 : break;
19596 : : }
19597 : : default:;
19598 : : }
19599 : : break;
19600 : : }
19601 : : default:;
19602 : : }
19603 : 500 : break;
19604 : : }
19605 : 0 : case VEC_COND_EXPR:
19606 : 0 : {
19607 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
19608 : 0 : _q20 = do_valueize (valueize, _q20);
19609 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
19610 : 0 : _q21 = do_valueize (valueize, _q21);
19611 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
19612 : 0 : _q22 = do_valueize (valueize, _q22);
19613 : 0 : switch (TREE_CODE (_p1))
19614 : : {
19615 : 0 : case SSA_NAME:
19616 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
19617 : : {
19618 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19619 : 0 : switch (gimple_assign_rhs_code (_a2))
19620 : : {
19621 : 0 : case VEC_COND_EXPR:
19622 : 0 : {
19623 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
19624 : 0 : _q60 = do_valueize (valueize, _q60);
19625 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
19626 : 0 : _q61 = do_valueize (valueize, _q61);
19627 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
19628 : 0 : _q62 = do_valueize (valueize, _q62);
19629 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19630 : : {
19631 : 0 : {
19632 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
19633 : 0 : if (VECTOR_TYPE_P (type)
19634 : 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
19635 : : || types_match (type, TREE_TYPE (captures[2]))
19636 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
19637 : : || (optimize_vectors_before_lowering_p ()
19638 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
19639 : : )
19640 : : {
19641 : 0 : gimple_seq *lseq = seq;
19642 : 0 : if (lseq
19643 : 0 : && (!single_use (captures[0])
19644 : 0 : || !single_use (captures[4])))
19645 : 0 : lseq = NULL;
19646 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2412;
19647 : 0 : {
19648 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
19649 : 0 : res_op->ops[0] = captures[1];
19650 : 0 : {
19651 : 0 : tree _o1[2], _r1;
19652 : 0 : _o1[0] = captures[2];
19653 : 0 : _o1[1] = captures[5];
19654 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CEIL_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19655 : 0 : tem_op.resimplify (NULL, valueize);
19656 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19657 : 0 : if (!_r1) goto next_after_fail2412;
19658 : 0 : res_op->ops[1] = _r1;
19659 : : }
19660 : 0 : {
19661 : 0 : tree _o1[2], _r1;
19662 : 0 : _o1[0] = captures[3];
19663 : 0 : _o1[1] = captures[6];
19664 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CEIL_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19665 : 0 : tem_op.resimplify (NULL, valueize);
19666 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19667 : 0 : if (!_r1) goto next_after_fail2412;
19668 : 0 : res_op->ops[2] = _r1;
19669 : : }
19670 : 0 : res_op->resimplify (lseq, valueize);
19671 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
19672 : 0 : return true;
19673 : : }
19674 : 0 : next_after_fail2412:;
19675 : : }
19676 : : }
19677 : : }
19678 : : break;
19679 : : }
19680 : : default:;
19681 : : }
19682 : : }
19683 : : break;
19684 : 0 : default:;
19685 : : }
19686 : 0 : {
19687 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
19688 : 0 : if (VECTOR_TYPE_P (type)
19689 : 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
19690 : : || types_match (type, TREE_TYPE (captures[2]))
19691 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
19692 : : || (optimize_vectors_before_lowering_p ()
19693 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
19694 : : )
19695 : : {
19696 : 0 : gimple_seq *lseq = seq;
19697 : 0 : if (lseq
19698 : 0 : && (!single_use (captures[0])))
19699 : 0 : lseq = NULL;
19700 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2413;
19701 : 0 : {
19702 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
19703 : 0 : res_op->ops[0] = captures[1];
19704 : 0 : {
19705 : 0 : tree _o1[2], _r1;
19706 : 0 : _o1[0] = captures[2];
19707 : 0 : _o1[1] = captures[4];
19708 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CEIL_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19709 : 0 : tem_op.resimplify (NULL, valueize);
19710 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19711 : 0 : if (!_r1) goto next_after_fail2413;
19712 : 0 : res_op->ops[1] = _r1;
19713 : : }
19714 : 0 : {
19715 : 0 : tree _o1[2], _r1;
19716 : 0 : _o1[0] = captures[3];
19717 : 0 : _o1[1] = captures[4];
19718 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CEIL_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19719 : 0 : tem_op.resimplify (NULL, valueize);
19720 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19721 : 0 : if (!_r1) goto next_after_fail2413;
19722 : 0 : res_op->ops[2] = _r1;
19723 : : }
19724 : 0 : res_op->resimplify (lseq, valueize);
19725 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
19726 : 0 : return true;
19727 : : }
19728 : 0 : next_after_fail2413:;
19729 : : }
19730 : : }
19731 : 0 : break;
19732 : : }
19733 : : default:;
19734 : : }
19735 : : }
19736 : : break;
19737 : 500 : default:;
19738 : : }
19739 : 500 : switch (TREE_CODE (_p1))
19740 : : {
19741 : 396 : case SSA_NAME:
19742 : 396 : if (gimple *_d1 = get_def (valueize, _p1))
19743 : : {
19744 : 300 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19745 : 252 : switch (gimple_assign_rhs_code (_a1))
19746 : : {
19747 : 0 : case VEC_COND_EXPR:
19748 : 0 : {
19749 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
19750 : 0 : _q30 = do_valueize (valueize, _q30);
19751 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
19752 : 0 : _q31 = do_valueize (valueize, _q31);
19753 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
19754 : 0 : _q32 = do_valueize (valueize, _q32);
19755 : 0 : {
19756 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
19757 : 0 : if (VECTOR_TYPE_P (type)
19758 : 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
19759 : : || types_match (type, TREE_TYPE (captures[3]))
19760 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
19761 : : || (optimize_vectors_before_lowering_p ()
19762 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
19763 : : )
19764 : : {
19765 : 0 : gimple_seq *lseq = seq;
19766 : 0 : if (lseq
19767 : 0 : && (!single_use (captures[1])))
19768 : 0 : lseq = NULL;
19769 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2414;
19770 : 0 : {
19771 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
19772 : 0 : res_op->ops[0] = captures[2];
19773 : 0 : {
19774 : 0 : tree _o1[2], _r1;
19775 : 0 : _o1[0] = captures[0];
19776 : 0 : _o1[1] = captures[3];
19777 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CEIL_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19778 : 0 : tem_op.resimplify (NULL, valueize);
19779 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19780 : 0 : if (!_r1) goto next_after_fail2414;
19781 : 0 : res_op->ops[1] = _r1;
19782 : : }
19783 : 0 : {
19784 : 0 : tree _o1[2], _r1;
19785 : 0 : _o1[0] = captures[0];
19786 : 0 : _o1[1] = captures[4];
19787 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CEIL_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19788 : 0 : tem_op.resimplify (NULL, valueize);
19789 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19790 : 0 : if (!_r1) goto next_after_fail2414;
19791 : 0 : res_op->ops[2] = _r1;
19792 : : }
19793 : 0 : res_op->resimplify (lseq, valueize);
19794 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
19795 : 0 : return true;
19796 : : }
19797 : 0 : next_after_fail2414:;
19798 : : }
19799 : : }
19800 : 0 : break;
19801 : : }
19802 : : default:;
19803 : : }
19804 : : }
19805 : : break;
19806 : : default:;
19807 : : }
19808 : : return false;
19809 : : }
19810 : :
19811 : : bool
19812 : 0 : gimple_simplify_ROUND_MOD_EXPR (gimple_match_op *res_op, gimple_seq *seq,
19813 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
19814 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
19815 : : {
19816 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
19817 : 0 : if (integer_zerop (_p0))
19818 : : {
19819 : 0 : {
19820 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
19821 : 0 : if (gimple_simplify_342 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR))
19822 : 0 : return true;
19823 : : }
19824 : : }
19825 : 0 : if (integer_onep (_p1))
19826 : : {
19827 : 0 : {
19828 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
19829 : 0 : if (gimple_simplify_343 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR))
19830 : 0 : return true;
19831 : : }
19832 : : }
19833 : 0 : if (integer_minus_onep (_p1))
19834 : : {
19835 : 0 : {
19836 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
19837 : 0 : if (gimple_simplify_344 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR))
19838 : 0 : return true;
19839 : : }
19840 : : }
19841 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
19842 : : {
19843 : 0 : {
19844 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
19845 : 0 : if (gimple_simplify_345 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR))
19846 : 0 : return true;
19847 : : }
19848 : : }
19849 : 0 : switch (TREE_CODE (_p0))
19850 : : {
19851 : 0 : case SSA_NAME:
19852 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
19853 : : {
19854 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19855 : 0 : switch (gimple_assign_rhs_code (_a1))
19856 : : {
19857 : 0 : case ROUND_MOD_EXPR:
19858 : 0 : {
19859 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
19860 : 0 : _q20 = do_valueize (valueize, _q20);
19861 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
19862 : 0 : _q21 = do_valueize (valueize, _q21);
19863 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
19864 : : {
19865 : 0 : {
19866 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
19867 : 0 : if (gimple_simplify_346 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR))
19868 : 0 : return true;
19869 : : }
19870 : : }
19871 : : break;
19872 : : }
19873 : 0 : case MULT_EXPR:
19874 : 0 : {
19875 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
19876 : 0 : _q20 = do_valueize (valueize, _q20);
19877 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
19878 : 0 : _q21 = do_valueize (valueize, _q21);
19879 : 0 : if (tree_swap_operands_p (_q20, _q21))
19880 : 0 : std::swap (_q20, _q21);
19881 : 0 : switch (TREE_CODE (_q21))
19882 : : {
19883 : 0 : case INTEGER_CST:
19884 : 0 : {
19885 : 0 : switch (TREE_CODE (_p1))
19886 : : {
19887 : 0 : case INTEGER_CST:
19888 : 0 : {
19889 : 0 : {
19890 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19891 : 0 : if (gimple_simplify_347 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR))
19892 : 0 : return true;
19893 : : }
19894 : 0 : break;
19895 : : }
19896 : : default:;
19897 : : }
19898 : : break;
19899 : : }
19900 : : default:;
19901 : : }
19902 : 0 : break;
19903 : : }
19904 : 0 : case VEC_COND_EXPR:
19905 : 0 : {
19906 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
19907 : 0 : _q20 = do_valueize (valueize, _q20);
19908 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
19909 : 0 : _q21 = do_valueize (valueize, _q21);
19910 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
19911 : 0 : _q22 = do_valueize (valueize, _q22);
19912 : 0 : switch (TREE_CODE (_p1))
19913 : : {
19914 : 0 : case SSA_NAME:
19915 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
19916 : : {
19917 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19918 : 0 : switch (gimple_assign_rhs_code (_a2))
19919 : : {
19920 : 0 : case VEC_COND_EXPR:
19921 : 0 : {
19922 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
19923 : 0 : _q60 = do_valueize (valueize, _q60);
19924 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
19925 : 0 : _q61 = do_valueize (valueize, _q61);
19926 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
19927 : 0 : _q62 = do_valueize (valueize, _q62);
19928 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19929 : : {
19930 : 0 : {
19931 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
19932 : 0 : if (VECTOR_TYPE_P (type)
19933 : 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
19934 : : || types_match (type, TREE_TYPE (captures[2]))
19935 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
19936 : : || (optimize_vectors_before_lowering_p ()
19937 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
19938 : : )
19939 : : {
19940 : 0 : gimple_seq *lseq = seq;
19941 : 0 : if (lseq
19942 : 0 : && (!single_use (captures[0])
19943 : 0 : || !single_use (captures[4])))
19944 : 0 : lseq = NULL;
19945 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2415;
19946 : 0 : {
19947 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
19948 : 0 : res_op->ops[0] = captures[1];
19949 : 0 : {
19950 : 0 : tree _o1[2], _r1;
19951 : 0 : _o1[0] = captures[2];
19952 : 0 : _o1[1] = captures[5];
19953 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19954 : 0 : tem_op.resimplify (NULL, valueize);
19955 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19956 : 0 : if (!_r1) goto next_after_fail2415;
19957 : 0 : res_op->ops[1] = _r1;
19958 : : }
19959 : 0 : {
19960 : 0 : tree _o1[2], _r1;
19961 : 0 : _o1[0] = captures[3];
19962 : 0 : _o1[1] = captures[6];
19963 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19964 : 0 : tem_op.resimplify (NULL, valueize);
19965 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19966 : 0 : if (!_r1) goto next_after_fail2415;
19967 : 0 : res_op->ops[2] = _r1;
19968 : : }
19969 : 0 : res_op->resimplify (lseq, valueize);
19970 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
19971 : 0 : return true;
19972 : : }
19973 : 0 : next_after_fail2415:;
19974 : : }
19975 : : }
19976 : : }
19977 : : break;
19978 : : }
19979 : : default:;
19980 : : }
19981 : : }
19982 : : break;
19983 : 0 : default:;
19984 : : }
19985 : 0 : {
19986 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
19987 : 0 : if (VECTOR_TYPE_P (type)
19988 : 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
19989 : : || types_match (type, TREE_TYPE (captures[2]))
19990 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
19991 : : || (optimize_vectors_before_lowering_p ()
19992 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
19993 : : )
19994 : : {
19995 : 0 : gimple_seq *lseq = seq;
19996 : 0 : if (lseq
19997 : 0 : && (!single_use (captures[0])))
19998 : 0 : lseq = NULL;
19999 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2416;
20000 : 0 : {
20001 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20002 : 0 : res_op->ops[0] = captures[1];
20003 : 0 : {
20004 : 0 : tree _o1[2], _r1;
20005 : 0 : _o1[0] = captures[2];
20006 : 0 : _o1[1] = captures[4];
20007 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20008 : 0 : tem_op.resimplify (NULL, valueize);
20009 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20010 : 0 : if (!_r1) goto next_after_fail2416;
20011 : 0 : res_op->ops[1] = _r1;
20012 : : }
20013 : 0 : {
20014 : 0 : tree _o1[2], _r1;
20015 : 0 : _o1[0] = captures[3];
20016 : 0 : _o1[1] = captures[4];
20017 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20018 : 0 : tem_op.resimplify (NULL, valueize);
20019 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20020 : 0 : if (!_r1) goto next_after_fail2416;
20021 : 0 : res_op->ops[2] = _r1;
20022 : : }
20023 : 0 : res_op->resimplify (lseq, valueize);
20024 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
20025 : 0 : return true;
20026 : : }
20027 : 0 : next_after_fail2416:;
20028 : : }
20029 : : }
20030 : 0 : break;
20031 : : }
20032 : : default:;
20033 : : }
20034 : : }
20035 : : break;
20036 : 0 : default:;
20037 : : }
20038 : 0 : switch (TREE_CODE (_p1))
20039 : : {
20040 : 0 : case SSA_NAME:
20041 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
20042 : : {
20043 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20044 : 0 : switch (gimple_assign_rhs_code (_a1))
20045 : : {
20046 : 0 : case VEC_COND_EXPR:
20047 : 0 : {
20048 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
20049 : 0 : _q30 = do_valueize (valueize, _q30);
20050 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
20051 : 0 : _q31 = do_valueize (valueize, _q31);
20052 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
20053 : 0 : _q32 = do_valueize (valueize, _q32);
20054 : 0 : {
20055 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
20056 : 0 : if (VECTOR_TYPE_P (type)
20057 : 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
20058 : : || types_match (type, TREE_TYPE (captures[3]))
20059 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
20060 : : || (optimize_vectors_before_lowering_p ()
20061 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
20062 : : )
20063 : : {
20064 : 0 : gimple_seq *lseq = seq;
20065 : 0 : if (lseq
20066 : 0 : && (!single_use (captures[1])))
20067 : 0 : lseq = NULL;
20068 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2417;
20069 : 0 : {
20070 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20071 : 0 : res_op->ops[0] = captures[2];
20072 : 0 : {
20073 : 0 : tree _o1[2], _r1;
20074 : 0 : _o1[0] = captures[0];
20075 : 0 : _o1[1] = captures[3];
20076 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20077 : 0 : tem_op.resimplify (NULL, valueize);
20078 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20079 : 0 : if (!_r1) goto next_after_fail2417;
20080 : 0 : res_op->ops[1] = _r1;
20081 : : }
20082 : 0 : {
20083 : 0 : tree _o1[2], _r1;
20084 : 0 : _o1[0] = captures[0];
20085 : 0 : _o1[1] = captures[4];
20086 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20087 : 0 : tem_op.resimplify (NULL, valueize);
20088 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20089 : 0 : if (!_r1) goto next_after_fail2417;
20090 : 0 : res_op->ops[2] = _r1;
20091 : : }
20092 : 0 : res_op->resimplify (lseq, valueize);
20093 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
20094 : 0 : return true;
20095 : : }
20096 : 0 : next_after_fail2417:;
20097 : : }
20098 : : }
20099 : 0 : break;
20100 : : }
20101 : : default:;
20102 : : }
20103 : : }
20104 : : break;
20105 : : default:;
20106 : : }
20107 : : return false;
20108 : : }
20109 : :
20110 : : bool
20111 : 1927950 : gimple_simplify_LSHIFT_EXPR (gimple_match_op *res_op, gimple_seq *seq,
20112 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
20113 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
20114 : : {
20115 : 1927950 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
20116 : 1927950 : switch (TREE_CODE (_p1))
20117 : : {
20118 : 667606 : case SSA_NAME:
20119 : 667606 : if (gimple *_d1 = get_def (valueize, _p1))
20120 : : {
20121 : 400179 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20122 : 347031 : switch (gimple_assign_rhs_code (_a1))
20123 : : {
20124 : 260 : case TRUNC_MOD_EXPR:
20125 : 260 : {
20126 : 260 : tree _q30 = gimple_assign_rhs1 (_a1);
20127 : 260 : _q30 = do_valueize (valueize, _q30);
20128 : 260 : tree _q31 = gimple_assign_rhs2 (_a1);
20129 : 260 : _q31 = do_valueize (valueize, _q31);
20130 : 260 : {
20131 : 260 : tree _q31_pops[1];
20132 : 260 : if (gimple_power_of_two_cand (_q31, _q31_pops, valueize))
20133 : : {
20134 : 242 : tree _q50 = _q31_pops[0];
20135 : 242 : {
20136 : 242 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
20137 : 242 : if (gimple_simplify_398 (res_op, seq, valueize, type, captures, LSHIFT_EXPR, TRUNC_MOD_EXPR))
20138 : 92 : return true;
20139 : : }
20140 : : }
20141 : : }
20142 : 168 : break;
20143 : : }
20144 : 0 : case FLOOR_MOD_EXPR:
20145 : 0 : {
20146 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
20147 : 0 : _q30 = do_valueize (valueize, _q30);
20148 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
20149 : 0 : _q31 = do_valueize (valueize, _q31);
20150 : 0 : {
20151 : 0 : tree _q31_pops[1];
20152 : 0 : if (gimple_power_of_two_cand (_q31, _q31_pops, valueize))
20153 : : {
20154 : 0 : tree _q50 = _q31_pops[0];
20155 : 0 : {
20156 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
20157 : 0 : if (gimple_simplify_398 (res_op, seq, valueize, type, captures, LSHIFT_EXPR, FLOOR_MOD_EXPR))
20158 : 0 : return true;
20159 : : }
20160 : : }
20161 : : }
20162 : 0 : break;
20163 : : }
20164 : : default:;
20165 : : }
20166 : : }
20167 : : break;
20168 : 1927858 : default:;
20169 : : }
20170 : 1927858 : if (uniform_integer_cst_p (_p1))
20171 : : {
20172 : 1247970 : {
20173 : 1247970 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20174 : 1247970 : if (gimple_simplify_399 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20175 : 106 : return true;
20176 : : }
20177 : : }
20178 : 1927752 : switch (TREE_CODE (_p0))
20179 : : {
20180 : 1413712 : case SSA_NAME:
20181 : 1413712 : if (gimple *_d1 = get_def (valueize, _p0))
20182 : : {
20183 : 837076 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20184 : 806556 : switch (gimple_assign_rhs_code (_a1))
20185 : : {
20186 : 295818 : CASE_CONVERT:
20187 : 295818 : {
20188 : 295818 : tree _q20 = gimple_assign_rhs1 (_a1);
20189 : 295818 : _q20 = do_valueize (valueize, _q20);
20190 : 295818 : switch (TREE_CODE (_q20))
20191 : : {
20192 : 295818 : case SSA_NAME:
20193 : 295818 : if (gimple *_d2 = get_def (valueize, _q20))
20194 : : {
20195 : 280656 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20196 : 362082 : switch (gimple_assign_rhs_code (_a2))
20197 : : {
20198 : 1227 : case LT_EXPR:
20199 : 1227 : {
20200 : 1227 : tree _q30 = gimple_assign_rhs1 (_a2);
20201 : 1227 : _q30 = do_valueize (valueize, _q30);
20202 : 1227 : tree _q31 = gimple_assign_rhs2 (_a2);
20203 : 1227 : _q31 = do_valueize (valueize, _q31);
20204 : 1227 : if (integer_zerop (_q31))
20205 : : {
20206 : 209 : switch (TREE_CODE (_p1))
20207 : : {
20208 : 209 : case INTEGER_CST:
20209 : 209 : {
20210 : 209 : {
20211 : 209 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
20212 : 209 : if (TYPE_SIGN (TREE_TYPE (captures[0])) == SIGNED
20213 : 209 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])) - 1)
20214 : : )
20215 : : {
20216 : 9 : {
20217 : 9 : wide_int wone = wi::one (TYPE_PRECISION (type));
20218 : 9 : gimple_seq *lseq = seq;
20219 : 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2422;
20220 : 9 : {
20221 : 9 : res_op->set_op (BIT_AND_EXPR, type, 2);
20222 : 9 : {
20223 : 9 : tree _o1[1], _r1;
20224 : 9 : _o1[0] = captures[0];
20225 : 9 : if (type != TREE_TYPE (_o1[0]) /* XXX */
20226 : 9 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
20227 : : {
20228 : 5 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
20229 : 5 : tem_op.resimplify (lseq, valueize);
20230 : 5 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20231 : 5 : if (!_r1) goto next_after_fail2422;
20232 : : }
20233 : : else
20234 : : _r1 = _o1[0];
20235 : 8 : res_op->ops[0] = _r1;
20236 : : }
20237 : 8 : res_op->ops[1] = wide_int_to_tree (type,
20238 : 8 : wi::lshift (wone, wi::to_wide (captures[2])));
20239 : 8 : res_op->resimplify (lseq, valueize);
20240 : 8 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1148, __FILE__, __LINE__, true);
20241 : 8 : return true;
20242 : : }
20243 : 1 : next_after_fail2422:;
20244 : 9 : }
20245 : : }
20246 : : }
20247 : 201 : break;
20248 : : }
20249 : : default:;
20250 : : }
20251 : : }
20252 : : break;
20253 : : }
20254 : 4961 : CASE_CONVERT:
20255 : 4961 : {
20256 : 4961 : tree _q30 = gimple_assign_rhs1 (_a2);
20257 : 4961 : _q30 = do_valueize (valueize, _q30);
20258 : 4961 : switch (TREE_CODE (_q30))
20259 : : {
20260 : 4911 : case SSA_NAME:
20261 : 4911 : if (gimple *_d3 = get_def (valueize, _q30))
20262 : : {
20263 : 4816 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
20264 : 6685 : switch (gimple_assign_rhs_code (_a3))
20265 : : {
20266 : 950 : case RSHIFT_EXPR:
20267 : 950 : {
20268 : 950 : tree _q40 = gimple_assign_rhs1 (_a3);
20269 : 950 : _q40 = do_valueize (valueize, _q40);
20270 : 950 : tree _q41 = gimple_assign_rhs2 (_a3);
20271 : 950 : _q41 = do_valueize (valueize, _q41);
20272 : 950 : switch (TREE_CODE (_q41))
20273 : : {
20274 : 903 : case INTEGER_CST:
20275 : 903 : {
20276 : 903 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
20277 : : {
20278 : 402 : {
20279 : 402 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
20280 : 402 : if (wi::ltu_p (wi::to_wide (captures[2]), element_precision (type))
20281 : 402 : && INTEGRAL_TYPE_P (type)
20282 : 402 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
20283 : 402 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
20284 : 402 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[1]))
20285 : 751 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) >= TYPE_PRECISION (type)
20286 : 331 : || wi::geu_p (wi::to_wide (captures[2]),
20287 : 331 : TYPE_PRECISION (type)
20288 : 392 : - TYPE_PRECISION (TREE_TYPE (captures[0]))))
20289 : : )
20290 : : {
20291 : 341 : gimple_seq *lseq = seq;
20292 : 341 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2423;
20293 : 341 : {
20294 : 341 : res_op->set_op (BIT_AND_EXPR, type, 2);
20295 : 341 : {
20296 : 341 : tree _o1[1], _r1;
20297 : 341 : _o1[0] = captures[1];
20298 : 341 : if (type != TREE_TYPE (_o1[0]) /* XXX */
20299 : 341 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
20300 : : {
20301 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
20302 : 0 : tem_op.resimplify (lseq, valueize);
20303 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20304 : 0 : if (!_r1) goto next_after_fail2423;
20305 : : }
20306 : : else
20307 : : _r1 = _o1[0];
20308 : 341 : res_op->ops[0] = _r1;
20309 : : }
20310 : 341 : {
20311 : 341 : tree _o1[2], _r1;
20312 : 341 : _o1[0] = build_minus_one_cst (type);
20313 : 341 : _o1[1] = captures[2];
20314 : 341 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20315 : 341 : tem_op.resimplify (lseq, valueize);
20316 : 341 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20317 : 341 : if (!_r1) goto next_after_fail2423;
20318 : 341 : res_op->ops[1] = _r1;
20319 : : }
20320 : 341 : res_op->resimplify (lseq, valueize);
20321 : 341 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1149, __FILE__, __LINE__, true);
20322 : 341 : return true;
20323 : : }
20324 : 61 : next_after_fail2423:;
20325 : : }
20326 : : }
20327 : : }
20328 : : break;
20329 : : }
20330 : : default:;
20331 : : }
20332 : : break;
20333 : : }
20334 : : default:;
20335 : : }
20336 : : }
20337 : : break;
20338 : : default:;
20339 : : }
20340 : : break;
20341 : : }
20342 : 6869 : case RSHIFT_EXPR:
20343 : 6869 : {
20344 : 6869 : tree _q30 = gimple_assign_rhs1 (_a2);
20345 : 6869 : _q30 = do_valueize (valueize, _q30);
20346 : 6869 : tree _q31 = gimple_assign_rhs2 (_a2);
20347 : 6869 : _q31 = do_valueize (valueize, _q31);
20348 : 6869 : if (gimple_with_possible_nonzero_bits (_q30, valueize))
20349 : : {
20350 : 6869 : switch (TREE_CODE (_q31))
20351 : : {
20352 : 6633 : case INTEGER_CST:
20353 : 6633 : {
20354 : 6633 : switch (TREE_CODE (_p1))
20355 : : {
20356 : 5915 : case INTEGER_CST:
20357 : 5915 : {
20358 : 5915 : {
20359 : 5915 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
20360 : 5915 : if (gimple_simplify_400 (res_op, seq, valueize, type, captures))
20361 : 4 : return true;
20362 : : }
20363 : 5911 : break;
20364 : : }
20365 : : default:;
20366 : : }
20367 : : break;
20368 : : }
20369 : : default:;
20370 : : }
20371 : : }
20372 : : break;
20373 : : }
20374 : : default:;
20375 : : }
20376 : : }
20377 : : break;
20378 : : default:;
20379 : : }
20380 : : break;
20381 : : }
20382 : 81314 : case RSHIFT_EXPR:
20383 : 81314 : {
20384 : 81314 : tree _q20 = gimple_assign_rhs1 (_a1);
20385 : 81314 : _q20 = do_valueize (valueize, _q20);
20386 : 81314 : tree _q21 = gimple_assign_rhs2 (_a1);
20387 : 81314 : _q21 = do_valueize (valueize, _q21);
20388 : 81314 : switch (TREE_CODE (_q21))
20389 : : {
20390 : 79265 : case INTEGER_CST:
20391 : 79265 : {
20392 : 79265 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
20393 : : {
20394 : 75028 : {
20395 : 75028 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
20396 : 75028 : if (gimple_simplify_401 (res_op, seq, valueize, type, captures))
20397 : 75028 : return true;
20398 : : }
20399 : : }
20400 : : break;
20401 : : }
20402 : 6286 : default:;
20403 : : }
20404 : 6286 : if (gimple_with_possible_nonzero_bits (_q20, valueize))
20405 : : {
20406 : 5995 : switch (TREE_CODE (_q21))
20407 : : {
20408 : 4069 : case INTEGER_CST:
20409 : 4069 : {
20410 : 4069 : switch (TREE_CODE (_p1))
20411 : : {
20412 : 3912 : case INTEGER_CST:
20413 : 3912 : {
20414 : 3912 : {
20415 : 3912 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
20416 : 3912 : if (gimple_simplify_400 (res_op, seq, valueize, type, captures))
20417 : 16 : return true;
20418 : : }
20419 : 3896 : break;
20420 : : }
20421 : : default:;
20422 : : }
20423 : : break;
20424 : : }
20425 : : default:;
20426 : : }
20427 : : }
20428 : : break;
20429 : : }
20430 : : default:;
20431 : : }
20432 : : }
20433 : : break;
20434 : 1852355 : default:;
20435 : : }
20436 : 1852355 : {
20437 : 1852355 : tree _p0_pops[1];
20438 : 1852355 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
20439 : : {
20440 : 25223 : tree _q20 = _p0_pops[0];
20441 : 25223 : switch (TREE_CODE (_q20))
20442 : : {
20443 : 25223 : case SSA_NAME:
20444 : 25223 : if (gimple *_d1 = get_def (valueize, _q20))
20445 : : {
20446 : 23799 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20447 : 22076 : switch (gimple_assign_rhs_code (_a1))
20448 : : {
20449 : 2627 : case RSHIFT_EXPR:
20450 : 2627 : {
20451 : 2627 : tree _q30 = gimple_assign_rhs1 (_a1);
20452 : 2627 : _q30 = do_valueize (valueize, _q30);
20453 : 2627 : tree _q31 = gimple_assign_rhs2 (_a1);
20454 : 2627 : _q31 = do_valueize (valueize, _q31);
20455 : 2627 : switch (TREE_CODE (_q31))
20456 : : {
20457 : 2578 : case INTEGER_CST:
20458 : 2578 : {
20459 : 2578 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
20460 : : {
20461 : 324 : {
20462 : 324 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
20463 : 324 : if (gimple_simplify_401 (res_op, seq, valueize, type, captures))
20464 : 274 : return true;
20465 : : }
20466 : : }
20467 : : break;
20468 : : }
20469 : : default:;
20470 : : }
20471 : : break;
20472 : : }
20473 : : default:;
20474 : : }
20475 : : }
20476 : : break;
20477 : : default:;
20478 : : }
20479 : : }
20480 : : }
20481 : 1852081 : if (integer_onep (_p0))
20482 : : {
20483 : 424340 : switch (TREE_CODE (_p1))
20484 : : {
20485 : 417341 : case SSA_NAME:
20486 : 417341 : if (gimple *_d1 = get_def (valueize, _p1))
20487 : : {
20488 : 224283 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20489 : 192761 : switch (gimple_assign_rhs_code (_a1))
20490 : : {
20491 : 5218 : case MINUS_EXPR:
20492 : 5218 : {
20493 : 5218 : tree _q30 = gimple_assign_rhs1 (_a1);
20494 : 5218 : _q30 = do_valueize (valueize, _q30);
20495 : 5218 : tree _q31 = gimple_assign_rhs2 (_a1);
20496 : 5218 : _q31 = do_valueize (valueize, _q31);
20497 : 5218 : switch (TREE_CODE (_q30))
20498 : : {
20499 : 4886 : case INTEGER_CST:
20500 : 4886 : {
20501 : 4886 : {
20502 : 4886 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
20503 : 4886 : if (INTEGRAL_TYPE_P (type)
20504 : 4900 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
20505 : 4924 : && single_use (captures[1])
20506 : : )
20507 : : {
20508 : 24 : if (TYPE_UNSIGNED (type)
20509 : : )
20510 : : {
20511 : 22 : gimple_seq *lseq = seq;
20512 : 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2424;
20513 : 22 : {
20514 : 22 : res_op->set_op (RSHIFT_EXPR, type, 2);
20515 : 22 : {
20516 : 22 : tree _o1[2], _r1;
20517 : 22 : _o1[0] = captures[0];
20518 : 22 : _o1[1] = captures[2];
20519 : 22 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20520 : 22 : tem_op.resimplify (lseq, valueize);
20521 : 22 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
20522 : 22 : if (!_r1) goto next_after_fail2424;
20523 : 22 : res_op->ops[0] = _r1;
20524 : : }
20525 : 22 : res_op->ops[1] = captures[3];
20526 : 22 : res_op->resimplify (lseq, valueize);
20527 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1150, __FILE__, __LINE__, true);
20528 : 22 : return true;
20529 : : }
20530 : 4862 : next_after_fail2424:;
20531 : : }
20532 : : else
20533 : : {
20534 : 2 : {
20535 : 2 : tree utype = unsigned_type_for (type);
20536 : 2 : gimple_seq *lseq = seq;
20537 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2425;
20538 : 2 : {
20539 : 2 : res_op->set_op (NOP_EXPR, type, 1);
20540 : 2 : {
20541 : 2 : tree _o1[2], _r1;
20542 : 2 : {
20543 : 2 : tree _o2[2], _r2;
20544 : 2 : {
20545 : 2 : tree _o3[1], _r3;
20546 : 2 : _o3[0] = captures[0];
20547 : 2 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
20548 : 2 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
20549 : : {
20550 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
20551 : 2 : tem_op.resimplify (lseq, valueize);
20552 : 2 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
20553 : 2 : if (!_r3) goto next_after_fail2425;
20554 : : }
20555 : : else
20556 : : _r3 = _o3[0];
20557 : 2 : _o2[0] = _r3;
20558 : : }
20559 : 2 : _o2[1] = captures[2];
20560 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
20561 : 2 : tem_op.resimplify (lseq, valueize);
20562 : 2 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
20563 : 2 : if (!_r2) goto next_after_fail2425;
20564 : 2 : _o1[0] = _r2;
20565 : : }
20566 : 2 : _o1[1] = captures[3];
20567 : 2 : (*res_op).set_op (RSHIFT_EXPR, TREE_TYPE (_o1[0]), 2);
20568 : 2 : (*res_op).ops[0] = _o1[0];
20569 : 2 : (*res_op).ops[1] = _o1[1];
20570 : 2 : (*res_op).resimplify (lseq, valueize);
20571 : : }
20572 : 2 : if (type != res_op->type
20573 : 2 : && !useless_type_conversion_p (type, res_op->type))
20574 : : {
20575 : 2 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2425;
20576 : 2 : res_op->set_op (NOP_EXPR, type, 1);
20577 : 2 : res_op->resimplify (lseq, valueize);
20578 : : }
20579 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1151, __FILE__, __LINE__, true);
20580 : 2 : return true;
20581 : : }
20582 : 4862 : next_after_fail2425:;
20583 : : }
20584 : : }
20585 : : }
20586 : : }
20587 : 4862 : break;
20588 : : }
20589 : : default:;
20590 : : }
20591 : : break;
20592 : : }
20593 : : default:;
20594 : : }
20595 : : }
20596 : : break;
20597 : : default:;
20598 : : }
20599 : : }
20600 : 1852057 : if (integer_zerop (_p1))
20601 : : {
20602 : 10397 : {
20603 : 10397 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
20604 : 10397 : if (gimple_simplify_402 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20605 : 10397 : return true;
20606 : : }
20607 : : }
20608 : 1841660 : if (integer_zerop (_p0))
20609 : : {
20610 : 2388 : {
20611 : 2388 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20612 : 2388 : if (gimple_simplify_403 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20613 : 2388 : return true;
20614 : : }
20615 : : }
20616 : 1839272 : switch (TREE_CODE (_p1))
20617 : : {
20618 : 665103 : case SSA_NAME:
20619 : 665103 : if (gimple *_d1 = get_def (valueize, _p1))
20620 : : {
20621 : 398909 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20622 : 345829 : switch (gimple_assign_rhs_code (_a1))
20623 : : {
20624 : 63 : case CONSTRUCTOR:
20625 : 63 : {
20626 : 63 : {
20627 : 63 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20628 : 63 : if (gimple_simplify_405 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20629 : 0 : return true;
20630 : : }
20631 : 63 : break;
20632 : : }
20633 : : default:;
20634 : : }
20635 : : }
20636 : 665103 : {
20637 : 665103 : {
20638 : 665103 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20639 : 665103 : if (gimple_simplify_406 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20640 : 3 : return true;
20641 : : }
20642 : : }
20643 : 665100 : break;
20644 : 323 : case VECTOR_CST:
20645 : 323 : {
20646 : 323 : {
20647 : 323 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
20648 : 323 : if (gimple_simplify_404 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20649 : 173 : return true;
20650 : : }
20651 : 150 : break;
20652 : : }
20653 : 1839096 : default:;
20654 : : }
20655 : 1839096 : switch (TREE_CODE (_p0))
20656 : : {
20657 : 1327506 : case SSA_NAME:
20658 : 1327506 : if (gimple *_d1 = get_def (valueize, _p0))
20659 : : {
20660 : 753413 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20661 : 723577 : switch (gimple_assign_rhs_code (_a1))
20662 : : {
20663 : 3921 : case LSHIFT_EXPR:
20664 : 3921 : {
20665 : 3921 : tree _q20 = gimple_assign_rhs1 (_a1);
20666 : 3921 : _q20 = do_valueize (valueize, _q20);
20667 : 3921 : tree _q21 = gimple_assign_rhs2 (_a1);
20668 : 3921 : _q21 = do_valueize (valueize, _q21);
20669 : 3921 : switch (TREE_CODE (_q21))
20670 : : {
20671 : 1949 : case INTEGER_CST:
20672 : 1949 : {
20673 : 1949 : switch (TREE_CODE (_p1))
20674 : : {
20675 : 1309 : case INTEGER_CST:
20676 : 1309 : {
20677 : 1309 : {
20678 : 1309 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
20679 : 1309 : if (gimple_simplify_407 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
20680 : 1309 : return true;
20681 : : }
20682 : 0 : break;
20683 : : }
20684 : : default:;
20685 : : }
20686 : : break;
20687 : : }
20688 : : default:;
20689 : : }
20690 : : break;
20691 : : }
20692 : 289375 : CASE_CONVERT:
20693 : 289375 : {
20694 : 289375 : tree _q20 = gimple_assign_rhs1 (_a1);
20695 : 289375 : _q20 = do_valueize (valueize, _q20);
20696 : 289375 : switch (TREE_CODE (_q20))
20697 : : {
20698 : 289375 : case SSA_NAME:
20699 : 289375 : if (gimple *_d2 = get_def (valueize, _q20))
20700 : : {
20701 : 274245 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20702 : 355122 : switch (gimple_assign_rhs_code (_a2))
20703 : : {
20704 : 27983 : case BIT_AND_EXPR:
20705 : 27983 : {
20706 : 27983 : tree _q30 = gimple_assign_rhs1 (_a2);
20707 : 27983 : _q30 = do_valueize (valueize, _q30);
20708 : 27983 : tree _q31 = gimple_assign_rhs2 (_a2);
20709 : 27983 : _q31 = do_valueize (valueize, _q31);
20710 : 27983 : if (tree_swap_operands_p (_q30, _q31))
20711 : 53 : std::swap (_q30, _q31);
20712 : 27983 : switch (TREE_CODE (_q31))
20713 : : {
20714 : 27350 : case INTEGER_CST:
20715 : 27350 : {
20716 : 27350 : switch (TREE_CODE (_p1))
20717 : : {
20718 : 11243 : case INTEGER_CST:
20719 : 11243 : {
20720 : 11243 : {
20721 : 11243 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
20722 : 11243 : if (gimple_simplify_408 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LSHIFT_EXPR))
20723 : 154 : return true;
20724 : : }
20725 : 11089 : break;
20726 : : }
20727 : : default:;
20728 : : }
20729 : : break;
20730 : : }
20731 : : default:;
20732 : : }
20733 : 1836906 : break;
20734 : : }
20735 : 471 : case BIT_XOR_EXPR:
20736 : 471 : {
20737 : 471 : tree _q30 = gimple_assign_rhs1 (_a2);
20738 : 471 : _q30 = do_valueize (valueize, _q30);
20739 : 471 : tree _q31 = gimple_assign_rhs2 (_a2);
20740 : 471 : _q31 = do_valueize (valueize, _q31);
20741 : 471 : if (tree_swap_operands_p (_q30, _q31))
20742 : 26 : std::swap (_q30, _q31);
20743 : 471 : switch (TREE_CODE (_q31))
20744 : : {
20745 : 123 : case INTEGER_CST:
20746 : 123 : {
20747 : 123 : switch (TREE_CODE (_p1))
20748 : : {
20749 : 109 : case INTEGER_CST:
20750 : 109 : {
20751 : 109 : {
20752 : 109 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
20753 : 109 : if (gimple_simplify_408 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LSHIFT_EXPR))
20754 : 0 : return true;
20755 : : }
20756 : 109 : break;
20757 : : }
20758 : : default:;
20759 : : }
20760 : : break;
20761 : : }
20762 : : default:;
20763 : : }
20764 : 1836906 : break;
20765 : : }
20766 : 983 : case BIT_IOR_EXPR:
20767 : 983 : {
20768 : 983 : tree _q30 = gimple_assign_rhs1 (_a2);
20769 : 983 : _q30 = do_valueize (valueize, _q30);
20770 : 983 : tree _q31 = gimple_assign_rhs2 (_a2);
20771 : 983 : _q31 = do_valueize (valueize, _q31);
20772 : 983 : if (tree_swap_operands_p (_q30, _q31))
20773 : 29 : std::swap (_q30, _q31);
20774 : 983 : switch (TREE_CODE (_q31))
20775 : : {
20776 : 401 : case INTEGER_CST:
20777 : 401 : {
20778 : 401 : switch (TREE_CODE (_p1))
20779 : : {
20780 : 161 : case INTEGER_CST:
20781 : 161 : {
20782 : 161 : {
20783 : 161 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
20784 : 161 : if (gimple_simplify_408 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LSHIFT_EXPR))
20785 : 0 : return true;
20786 : : }
20787 : 161 : break;
20788 : : }
20789 : : default:;
20790 : : }
20791 : : break;
20792 : : }
20793 : : default:;
20794 : : }
20795 : 1836906 : break;
20796 : : }
20797 : : default:;
20798 : : }
20799 : : }
20800 : : break;
20801 : : default:;
20802 : : }
20803 : : break;
20804 : : }
20805 : 10109 : case BIT_AND_EXPR:
20806 : 10109 : {
20807 : 10109 : tree _q20 = gimple_assign_rhs1 (_a1);
20808 : 10109 : _q20 = do_valueize (valueize, _q20);
20809 : 10109 : tree _q21 = gimple_assign_rhs2 (_a1);
20810 : 10109 : _q21 = do_valueize (valueize, _q21);
20811 : 10109 : if (tree_swap_operands_p (_q20, _q21))
20812 : 316 : std::swap (_q20, _q21);
20813 : 10109 : switch (TREE_CODE (_q21))
20814 : : {
20815 : 6815 : case INTEGER_CST:
20816 : 6815 : {
20817 : 6815 : switch (TREE_CODE (_p1))
20818 : : {
20819 : 3923 : case INTEGER_CST:
20820 : 3923 : {
20821 : 3923 : {
20822 : 3923 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
20823 : 3923 : if (gimple_simplify_409 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LSHIFT_EXPR))
20824 : 611 : return true;
20825 : : }
20826 : 3312 : break;
20827 : : }
20828 : : default:;
20829 : : }
20830 : : break;
20831 : : }
20832 : : default:;
20833 : : }
20834 : 1836906 : break;
20835 : : }
20836 : 9574 : case BIT_XOR_EXPR:
20837 : 9574 : {
20838 : 9574 : tree _q20 = gimple_assign_rhs1 (_a1);
20839 : 9574 : _q20 = do_valueize (valueize, _q20);
20840 : 9574 : tree _q21 = gimple_assign_rhs2 (_a1);
20841 : 9574 : _q21 = do_valueize (valueize, _q21);
20842 : 9574 : if (tree_swap_operands_p (_q20, _q21))
20843 : 775 : std::swap (_q20, _q21);
20844 : 9574 : switch (TREE_CODE (_q21))
20845 : : {
20846 : 571 : case INTEGER_CST:
20847 : 571 : {
20848 : 571 : switch (TREE_CODE (_p1))
20849 : : {
20850 : 571 : case INTEGER_CST:
20851 : 571 : {
20852 : 571 : {
20853 : 571 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
20854 : 571 : if (gimple_simplify_409 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LSHIFT_EXPR))
20855 : 17 : return true;
20856 : : }
20857 : 554 : break;
20858 : : }
20859 : : default:;
20860 : : }
20861 : : break;
20862 : : }
20863 : : default:;
20864 : : }
20865 : 1836906 : break;
20866 : : }
20867 : 13016 : case BIT_IOR_EXPR:
20868 : 13016 : {
20869 : 13016 : tree _q20 = gimple_assign_rhs1 (_a1);
20870 : 13016 : _q20 = do_valueize (valueize, _q20);
20871 : 13016 : tree _q21 = gimple_assign_rhs2 (_a1);
20872 : 13016 : _q21 = do_valueize (valueize, _q21);
20873 : 13016 : if (tree_swap_operands_p (_q20, _q21))
20874 : 441 : std::swap (_q20, _q21);
20875 : 13016 : switch (TREE_CODE (_q21))
20876 : : {
20877 : 1683 : case INTEGER_CST:
20878 : 1683 : {
20879 : 1683 : switch (TREE_CODE (_p1))
20880 : : {
20881 : 570 : case INTEGER_CST:
20882 : 570 : {
20883 : 570 : {
20884 : 570 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
20885 : 570 : if (gimple_simplify_409 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LSHIFT_EXPR))
20886 : 33 : return true;
20887 : : }
20888 : 537 : break;
20889 : : }
20890 : : default:;
20891 : : }
20892 : : break;
20893 : : }
20894 : : default:;
20895 : : }
20896 : 1836906 : break;
20897 : : }
20898 : 357 : case VEC_COND_EXPR:
20899 : 357 : {
20900 : 357 : tree _q20 = gimple_assign_rhs1 (_a1);
20901 : 357 : _q20 = do_valueize (valueize, _q20);
20902 : 357 : tree _q21 = gimple_assign_rhs2 (_a1);
20903 : 357 : _q21 = do_valueize (valueize, _q21);
20904 : 357 : tree _q22 = gimple_assign_rhs3 (_a1);
20905 : 357 : _q22 = do_valueize (valueize, _q22);
20906 : 357 : switch (TREE_CODE (_p1))
20907 : : {
20908 : 33 : case SSA_NAME:
20909 : 33 : if (gimple *_d2 = get_def (valueize, _p1))
20910 : : {
20911 : 33 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20912 : 33 : switch (gimple_assign_rhs_code (_a2))
20913 : : {
20914 : 10 : case VEC_COND_EXPR:
20915 : 10 : {
20916 : 10 : tree _q60 = gimple_assign_rhs1 (_a2);
20917 : 10 : _q60 = do_valueize (valueize, _q60);
20918 : 10 : tree _q61 = gimple_assign_rhs2 (_a2);
20919 : 10 : _q61 = do_valueize (valueize, _q61);
20920 : 10 : tree _q62 = gimple_assign_rhs3 (_a2);
20921 : 10 : _q62 = do_valueize (valueize, _q62);
20922 : 10 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20923 : : {
20924 : 0 : {
20925 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
20926 : 0 : if (VECTOR_TYPE_P (type)
20927 : 0 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
20928 : : || types_match (type, TREE_TYPE (captures[2]))
20929 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
20930 : : || (optimize_vectors_before_lowering_p ()
20931 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
20932 : : )
20933 : : {
20934 : 0 : gimple_seq *lseq = seq;
20935 : 0 : if (lseq
20936 : 0 : && (!single_use (captures[0])
20937 : 0 : || !single_use (captures[4])))
20938 : 0 : lseq = NULL;
20939 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2426;
20940 : 0 : {
20941 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
20942 : 0 : res_op->ops[0] = captures[1];
20943 : 0 : {
20944 : 0 : tree _o1[2], _r1;
20945 : 0 : _o1[0] = captures[2];
20946 : 0 : _o1[1] = captures[5];
20947 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20948 : 0 : tem_op.resimplify (NULL, valueize);
20949 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20950 : 0 : if (!_r1) goto next_after_fail2426;
20951 : 0 : res_op->ops[1] = _r1;
20952 : : }
20953 : 0 : {
20954 : 0 : tree _o1[2], _r1;
20955 : 0 : _o1[0] = captures[3];
20956 : 0 : _o1[1] = captures[6];
20957 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
20958 : 0 : tem_op.resimplify (NULL, valueize);
20959 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
20960 : 0 : if (!_r1) goto next_after_fail2426;
20961 : 0 : res_op->ops[2] = _r1;
20962 : : }
20963 : 0 : res_op->resimplify (lseq, valueize);
20964 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
20965 : 0 : return true;
20966 : : }
20967 : 0 : next_after_fail2426:;
20968 : : }
20969 : : }
20970 : : }
20971 : : break;
20972 : : }
20973 : : default:;
20974 : : }
20975 : : }
20976 : : break;
20977 : 357 : default:;
20978 : : }
20979 : 357 : {
20980 : 357 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
20981 : 357 : if (VECTOR_TYPE_P (type)
20982 : 357 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
20983 : : || types_match (type, TREE_TYPE (captures[2]))
20984 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
20985 : : || (optimize_vectors_before_lowering_p ()
20986 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
20987 : : )
20988 : : {
20989 : 357 : gimple_seq *lseq = seq;
20990 : 357 : if (lseq
20991 : 102 : && (!single_use (captures[0])))
20992 : 294 : lseq = NULL;
20993 : 357 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2427;
20994 : 357 : {
20995 : 357 : res_op->set_op (VEC_COND_EXPR, type, 3);
20996 : 357 : res_op->ops[0] = captures[1];
20997 : 357 : {
20998 : 357 : tree _o1[2], _r1;
20999 : 357 : _o1[0] = captures[2];
21000 : 357 : _o1[1] = captures[4];
21001 : 357 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21002 : 357 : tem_op.resimplify (NULL, valueize);
21003 : 357 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21004 : 357 : if (!_r1) goto next_after_fail2427;
21005 : 81 : res_op->ops[1] = _r1;
21006 : : }
21007 : 81 : {
21008 : 81 : tree _o1[2], _r1;
21009 : 81 : _o1[0] = captures[3];
21010 : 81 : _o1[1] = captures[4];
21011 : 81 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21012 : 81 : tem_op.resimplify (NULL, valueize);
21013 : 81 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21014 : 81 : if (!_r1) goto next_after_fail2427;
21015 : 66 : res_op->ops[2] = _r1;
21016 : : }
21017 : 66 : res_op->resimplify (lseq, valueize);
21018 : 66 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
21019 : 66 : return true;
21020 : : }
21021 : 291 : next_after_fail2427:;
21022 : : }
21023 : : }
21024 : 291 : break;
21025 : : }
21026 : : default:;
21027 : : }
21028 : : }
21029 : : break;
21030 : 1836906 : default:;
21031 : : }
21032 : 1836906 : switch (TREE_CODE (_p1))
21033 : : {
21034 : 665100 : case SSA_NAME:
21035 : 665100 : if (gimple *_d1 = get_def (valueize, _p1))
21036 : : {
21037 : 398907 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21038 : 345827 : switch (gimple_assign_rhs_code (_a1))
21039 : : {
21040 : 67 : case VEC_COND_EXPR:
21041 : 67 : {
21042 : 67 : tree _q30 = gimple_assign_rhs1 (_a1);
21043 : 67 : _q30 = do_valueize (valueize, _q30);
21044 : 67 : tree _q31 = gimple_assign_rhs2 (_a1);
21045 : 67 : _q31 = do_valueize (valueize, _q31);
21046 : 67 : tree _q32 = gimple_assign_rhs3 (_a1);
21047 : 67 : _q32 = do_valueize (valueize, _q32);
21048 : 67 : {
21049 : 67 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
21050 : 67 : if (VECTOR_TYPE_P (type)
21051 : 67 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
21052 : : || types_match (type, TREE_TYPE (captures[3]))
21053 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
21054 : : || (optimize_vectors_before_lowering_p ()
21055 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
21056 : : )
21057 : : {
21058 : 67 : gimple_seq *lseq = seq;
21059 : 67 : if (lseq
21060 : 27 : && (!single_use (captures[1])))
21061 : 42 : lseq = NULL;
21062 : 67 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2428;
21063 : 67 : {
21064 : 67 : res_op->set_op (VEC_COND_EXPR, type, 3);
21065 : 67 : res_op->ops[0] = captures[2];
21066 : 67 : {
21067 : 67 : tree _o1[2], _r1;
21068 : 67 : _o1[0] = captures[0];
21069 : 67 : _o1[1] = captures[3];
21070 : 67 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21071 : 67 : tem_op.resimplify (NULL, valueize);
21072 : 67 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21073 : 67 : if (!_r1) goto next_after_fail2428;
21074 : 14 : res_op->ops[1] = _r1;
21075 : : }
21076 : 14 : {
21077 : 14 : tree _o1[2], _r1;
21078 : 14 : _o1[0] = captures[0];
21079 : 14 : _o1[1] = captures[4];
21080 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21081 : 14 : tem_op.resimplify (NULL, valueize);
21082 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
21083 : 14 : if (!_r1) goto next_after_fail2428;
21084 : 14 : res_op->ops[2] = _r1;
21085 : : }
21086 : 14 : res_op->resimplify (lseq, valueize);
21087 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
21088 : 14 : return true;
21089 : : }
21090 : 53 : next_after_fail2428:;
21091 : : }
21092 : : }
21093 : 53 : break;
21094 : : }
21095 : : default:;
21096 : : }
21097 : : }
21098 : : break;
21099 : 1836892 : default:;
21100 : : }
21101 : 1836892 : switch (TREE_CODE (_p0))
21102 : : {
21103 : 1325316 : case SSA_NAME:
21104 : 1325316 : if (gimple *_d1 = get_def (valueize, _p0))
21105 : : {
21106 : 751223 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21107 : 721387 : switch (gimple_assign_rhs_code (_a1))
21108 : : {
21109 : 315 : case VEC_PERM_EXPR:
21110 : 315 : {
21111 : 315 : tree _q20 = gimple_assign_rhs1 (_a1);
21112 : 315 : _q20 = do_valueize (valueize, _q20);
21113 : 315 : tree _q21 = gimple_assign_rhs2 (_a1);
21114 : 315 : _q21 = do_valueize (valueize, _q21);
21115 : 315 : tree _q22 = gimple_assign_rhs3 (_a1);
21116 : 315 : _q22 = do_valueize (valueize, _q22);
21117 : 315 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
21118 : : {
21119 : 86 : switch (TREE_CODE (_p1))
21120 : : {
21121 : 62 : case SSA_NAME:
21122 : 62 : if (gimple *_d2 = get_def (valueize, _p1))
21123 : : {
21124 : 54 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
21125 : 34 : switch (gimple_assign_rhs_code (_a2))
21126 : : {
21127 : 2 : case VEC_PERM_EXPR:
21128 : 2 : {
21129 : 2 : tree _q60 = gimple_assign_rhs1 (_a2);
21130 : 2 : _q60 = do_valueize (valueize, _q60);
21131 : 2 : tree _q61 = gimple_assign_rhs2 (_a2);
21132 : 2 : _q61 = do_valueize (valueize, _q61);
21133 : 2 : tree _q62 = gimple_assign_rhs3 (_a2);
21134 : 2 : _q62 = do_valueize (valueize, _q62);
21135 : 2 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
21136 : : {
21137 : 2 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
21138 : : {
21139 : 2 : {
21140 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
21141 : 2 : if (VECTOR_INTEGER_TYPE_P (type)
21142 : : )
21143 : : {
21144 : 2 : gimple_seq *lseq = seq;
21145 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2429;
21146 : 2 : {
21147 : 2 : res_op->set_op (VEC_PERM_EXPR, type, 3);
21148 : 2 : {
21149 : 2 : tree _o1[2], _r1;
21150 : 2 : _o1[0] = captures[0];
21151 : 2 : _o1[1] = captures[2];
21152 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21153 : 2 : tem_op.resimplify (lseq, valueize);
21154 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21155 : 2 : if (!_r1) goto next_after_fail2429;
21156 : 1 : captures[3] = _r1;
21157 : : }
21158 : 1 : res_op->ops[0] = captures[3];
21159 : 1 : res_op->ops[1] = captures[3];
21160 : 1 : res_op->ops[2] = captures[1];
21161 : 1 : res_op->resimplify (lseq, valueize);
21162 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
21163 : 1 : return true;
21164 : : }
21165 : : next_after_fail2429:;
21166 : : }
21167 : : }
21168 : : }
21169 : : }
21170 : : break;
21171 : : }
21172 : : default:;
21173 : : }
21174 : : }
21175 : : break;
21176 : : default:;
21177 : : }
21178 : : }
21179 : : break;
21180 : : }
21181 : : default:;
21182 : : }
21183 : : }
21184 : : break;
21185 : : default:;
21186 : : }
21187 : : return false;
21188 : : }
21189 : :
21190 : : bool
21191 : 3059 : gimple_simplify_CFN_BUILT_IN_POWL (gimple_match_op *res_op, gimple_seq *seq,
21192 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
21193 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
21194 : : {
21195 : 3059 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
21196 : 3059 : switch (TREE_CODE (_p0))
21197 : : {
21198 : 1297 : case SSA_NAME:
21199 : 1297 : if (gimple *_d1 = get_def (valueize, _p0))
21200 : : {
21201 : 755 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21202 : 455 : switch (gimple_assign_rhs_code (_a1))
21203 : : {
21204 : 2 : case NEGATE_EXPR:
21205 : 2 : {
21206 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
21207 : 2 : _q20 = do_valueize (valueize, _q20);
21208 : 2 : switch (TREE_CODE (_p1))
21209 : : {
21210 : 2 : case REAL_CST:
21211 : 2 : {
21212 : 2 : {
21213 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21214 : 2 : const combined_fn pows = CFN_BUILT_IN_POWL;
21215 : 2 : {
21216 : 2 : HOST_WIDE_INT n;
21217 : 2 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
21218 : : )
21219 : : {
21220 : 2 : gimple_seq *lseq = seq;
21221 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2471;
21222 : 2 : {
21223 : 2 : res_op->set_op (pows, type, 2);
21224 : 2 : res_op->ops[0] = captures[0];
21225 : 2 : res_op->ops[1] = captures[1];
21226 : 2 : res_op->resimplify (lseq, valueize);
21227 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
21228 : 2 : return true;
21229 : : }
21230 : 0 : next_after_fail2471:;
21231 : : }
21232 : : }
21233 : : }
21234 : 0 : break;
21235 : : }
21236 : : default:;
21237 : : }
21238 : : break;
21239 : : }
21240 : 31 : case ABS_EXPR:
21241 : 31 : {
21242 : 31 : tree _q20 = gimple_assign_rhs1 (_a1);
21243 : 31 : _q20 = do_valueize (valueize, _q20);
21244 : 31 : switch (TREE_CODE (_p1))
21245 : : {
21246 : 2 : case REAL_CST:
21247 : 2 : {
21248 : 2 : {
21249 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21250 : 2 : const combined_fn pows = CFN_BUILT_IN_POWL;
21251 : 2 : {
21252 : 2 : HOST_WIDE_INT n;
21253 : 2 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
21254 : : )
21255 : : {
21256 : 2 : gimple_seq *lseq = seq;
21257 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2472;
21258 : 2 : {
21259 : 2 : res_op->set_op (pows, type, 2);
21260 : 2 : res_op->ops[0] = captures[0];
21261 : 2 : res_op->ops[1] = captures[1];
21262 : 2 : res_op->resimplify (lseq, valueize);
21263 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
21264 : 2 : return true;
21265 : : }
21266 : 0 : next_after_fail2472:;
21267 : : }
21268 : : }
21269 : : }
21270 : 0 : break;
21271 : : }
21272 : : default:;
21273 : : }
21274 : : break;
21275 : : }
21276 : 2 : case RDIV_EXPR:
21277 : 2 : {
21278 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
21279 : 2 : _q20 = do_valueize (valueize, _q20);
21280 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
21281 : 2 : _q21 = do_valueize (valueize, _q21);
21282 : 2 : if (real_onep (_q20))
21283 : : {
21284 : 2 : {
21285 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
21286 : 2 : if (gimple_simplify_430 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
21287 : 1 : return true;
21288 : : }
21289 : : }
21290 : : break;
21291 : : }
21292 : : default:;
21293 : : }
21294 : 348 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21295 : 99 : switch (gimple_call_combined_fn (_c1))
21296 : : {
21297 : 14 : case CFN_BUILT_IN_SQRTL:
21298 : 14 : if (gimple_call_num_args (_c1) == 1)
21299 : : {
21300 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
21301 : 14 : _q20 = do_valueize (valueize, _q20);
21302 : 14 : {
21303 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21304 : 14 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21305 : : )
21306 : : {
21307 : 14 : gimple_seq *lseq = seq;
21308 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2473;
21309 : 14 : {
21310 : 14 : res_op->set_op (CFN_BUILT_IN_POWL, type, 2);
21311 : 14 : res_op->ops[0] = captures[0];
21312 : 14 : {
21313 : 14 : tree _o1[2], _r1;
21314 : 14 : _o1[0] = captures[1];
21315 : 14 : _o1[1] = build_real (type, dconsthalf);
21316 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21317 : 14 : tem_op.resimplify (lseq, valueize);
21318 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21319 : 14 : if (!_r1) goto next_after_fail2473;
21320 : 7 : res_op->ops[1] = _r1;
21321 : : }
21322 : 7 : res_op->resimplify (lseq, valueize);
21323 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1158, __FILE__, __LINE__, true);
21324 : 7 : return true;
21325 : : }
21326 : 7 : next_after_fail2473:;
21327 : : }
21328 : : }
21329 : : }
21330 : : break;
21331 : 12 : case CFN_BUILT_IN_EXP10L:
21332 : 12 : if (gimple_call_num_args (_c1) == 1)
21333 : : {
21334 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21335 : 12 : _q20 = do_valueize (valueize, _q20);
21336 : 12 : {
21337 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21338 : 12 : if (flag_unsafe_math_optimizations
21339 : : )
21340 : : {
21341 : 12 : gimple_seq *lseq = seq;
21342 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2474;
21343 : 12 : {
21344 : 12 : res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1);
21345 : 12 : {
21346 : 12 : tree _o1[2], _r1;
21347 : 12 : _o1[0] = captures[0];
21348 : 12 : _o1[1] = captures[1];
21349 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21350 : 12 : tem_op.resimplify (lseq, valueize);
21351 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21352 : 12 : if (!_r1) goto next_after_fail2474;
21353 : 6 : res_op->ops[0] = _r1;
21354 : : }
21355 : 6 : res_op->resimplify (lseq, valueize);
21356 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1159, __FILE__, __LINE__, true);
21357 : 6 : return true;
21358 : : }
21359 : 6 : next_after_fail2474:;
21360 : : }
21361 : : }
21362 : : }
21363 : : break;
21364 : 14 : case CFN_BUILT_IN_EXPL:
21365 : 14 : if (gimple_call_num_args (_c1) == 1)
21366 : : {
21367 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
21368 : 14 : _q20 = do_valueize (valueize, _q20);
21369 : 14 : {
21370 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21371 : 14 : if (flag_unsafe_math_optimizations
21372 : : )
21373 : : {
21374 : 14 : gimple_seq *lseq = seq;
21375 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2475;
21376 : 14 : {
21377 : 14 : res_op->set_op (CFN_BUILT_IN_EXPL, type, 1);
21378 : 14 : {
21379 : 14 : tree _o1[2], _r1;
21380 : 14 : _o1[0] = captures[0];
21381 : 14 : _o1[1] = captures[1];
21382 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21383 : 14 : tem_op.resimplify (lseq, valueize);
21384 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21385 : 14 : if (!_r1) goto next_after_fail2475;
21386 : 7 : res_op->ops[0] = _r1;
21387 : : }
21388 : 7 : res_op->resimplify (lseq, valueize);
21389 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1159, __FILE__, __LINE__, true);
21390 : 7 : return true;
21391 : : }
21392 : 7 : next_after_fail2475:;
21393 : : }
21394 : : }
21395 : : }
21396 : : break;
21397 : 23 : case CFN_BUILT_IN_POWL:
21398 : 23 : if (gimple_call_num_args (_c1) == 2)
21399 : : {
21400 : 23 : tree _q20 = gimple_call_arg (_c1, 0);
21401 : 23 : _q20 = do_valueize (valueize, _q20);
21402 : 23 : tree _q21 = gimple_call_arg (_c1, 1);
21403 : 23 : _q21 = do_valueize (valueize, _q21);
21404 : 23 : if (tree_expr_nonnegative_p (_q20))
21405 : : {
21406 : 12 : {
21407 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21408 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21409 : : )
21410 : : {
21411 : 12 : gimple_seq *lseq = seq;
21412 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2476;
21413 : 12 : {
21414 : 12 : res_op->set_op (CFN_BUILT_IN_POWL, type, 2);
21415 : 12 : res_op->ops[0] = captures[0];
21416 : 12 : {
21417 : 12 : tree _o1[2], _r1;
21418 : 12 : _o1[0] = captures[1];
21419 : 12 : _o1[1] = captures[2];
21420 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21421 : 12 : tem_op.resimplify (lseq, valueize);
21422 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21423 : 12 : if (!_r1) goto next_after_fail2476;
21424 : 6 : res_op->ops[1] = _r1;
21425 : : }
21426 : 6 : res_op->resimplify (lseq, valueize);
21427 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1160, __FILE__, __LINE__, true);
21428 : 6 : return true;
21429 : : }
21430 : 6 : next_after_fail2476:;
21431 : : }
21432 : : }
21433 : : }
21434 : : }
21435 : : break;
21436 : 12 : case CFN_BUILT_IN_POW10L:
21437 : 12 : if (gimple_call_num_args (_c1) == 1)
21438 : : {
21439 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21440 : 12 : _q20 = do_valueize (valueize, _q20);
21441 : 12 : {
21442 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21443 : 12 : if (flag_unsafe_math_optimizations
21444 : : )
21445 : : {
21446 : 12 : gimple_seq *lseq = seq;
21447 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2477;
21448 : 12 : {
21449 : 12 : res_op->set_op (CFN_BUILT_IN_POW10L, type, 1);
21450 : 12 : {
21451 : 12 : tree _o1[2], _r1;
21452 : 12 : _o1[0] = captures[0];
21453 : 12 : _o1[1] = captures[1];
21454 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21455 : 12 : tem_op.resimplify (lseq, valueize);
21456 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21457 : 12 : if (!_r1) goto next_after_fail2477;
21458 : 6 : res_op->ops[0] = _r1;
21459 : : }
21460 : 6 : res_op->resimplify (lseq, valueize);
21461 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1159, __FILE__, __LINE__, true);
21462 : 6 : return true;
21463 : : }
21464 : 6 : next_after_fail2477:;
21465 : : }
21466 : : }
21467 : : }
21468 : : break;
21469 : 0 : case CFN_BUILT_IN_COPYSIGN:
21470 : 0 : if (gimple_call_num_args (_c1) == 2)
21471 : : {
21472 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21473 : 0 : _q20 = do_valueize (valueize, _q20);
21474 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21475 : 0 : _q21 = do_valueize (valueize, _q21);
21476 : 0 : switch (TREE_CODE (_p1))
21477 : : {
21478 : 0 : case REAL_CST:
21479 : 0 : {
21480 : 0 : {
21481 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21482 : 0 : if (gimple_simplify_429 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_POWL))
21483 : 0 : return true;
21484 : : }
21485 : 0 : break;
21486 : : }
21487 : : default:;
21488 : : }
21489 : : }
21490 : : break;
21491 : 0 : case CFN_BUILT_IN_COPYSIGNF:
21492 : 0 : if (gimple_call_num_args (_c1) == 2)
21493 : : {
21494 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21495 : 0 : _q20 = do_valueize (valueize, _q20);
21496 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21497 : 0 : _q21 = do_valueize (valueize, _q21);
21498 : 0 : switch (TREE_CODE (_p1))
21499 : : {
21500 : 0 : case REAL_CST:
21501 : 0 : {
21502 : 0 : {
21503 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21504 : 0 : if (gimple_simplify_429 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_POWL))
21505 : 0 : return true;
21506 : : }
21507 : 0 : break;
21508 : : }
21509 : : default:;
21510 : : }
21511 : : }
21512 : : break;
21513 : 0 : case CFN_BUILT_IN_COPYSIGNL:
21514 : 0 : if (gimple_call_num_args (_c1) == 2)
21515 : : {
21516 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21517 : 0 : _q20 = do_valueize (valueize, _q20);
21518 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21519 : 0 : _q21 = do_valueize (valueize, _q21);
21520 : 0 : switch (TREE_CODE (_p1))
21521 : : {
21522 : 0 : case REAL_CST:
21523 : 0 : {
21524 : 0 : {
21525 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21526 : 0 : if (gimple_simplify_429 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_POWL))
21527 : 0 : return true;
21528 : : }
21529 : 0 : break;
21530 : : }
21531 : : default:;
21532 : : }
21533 : : }
21534 : : break;
21535 : 12 : case CFN_BUILT_IN_CBRTL:
21536 : 12 : if (gimple_call_num_args (_c1) == 1)
21537 : : {
21538 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21539 : 12 : _q20 = do_valueize (valueize, _q20);
21540 : 12 : if (tree_expr_nonnegative_p (_q20))
21541 : : {
21542 : 12 : {
21543 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21544 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21545 : : )
21546 : : {
21547 : 12 : gimple_seq *lseq = seq;
21548 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2478;
21549 : 12 : {
21550 : 12 : res_op->set_op (CFN_BUILT_IN_POWL, type, 2);
21551 : 12 : res_op->ops[0] = captures[0];
21552 : 12 : {
21553 : 12 : tree _o1[2], _r1;
21554 : 12 : _o1[0] = captures[1];
21555 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
21556 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21557 : 12 : tem_op.resimplify (lseq, valueize);
21558 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21559 : 12 : if (!_r1) goto next_after_fail2478;
21560 : 6 : res_op->ops[1] = _r1;
21561 : : }
21562 : 6 : res_op->resimplify (lseq, valueize);
21563 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1161, __FILE__, __LINE__, true);
21564 : 6 : return true;
21565 : : }
21566 : 6 : next_after_fail2478:;
21567 : : }
21568 : : }
21569 : : }
21570 : : }
21571 : : break;
21572 : 12 : case CFN_BUILT_IN_EXP2L:
21573 : 12 : if (gimple_call_num_args (_c1) == 1)
21574 : : {
21575 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21576 : 12 : _q20 = do_valueize (valueize, _q20);
21577 : 12 : {
21578 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21579 : 12 : if (flag_unsafe_math_optimizations
21580 : : )
21581 : : {
21582 : 12 : gimple_seq *lseq = seq;
21583 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2479;
21584 : 12 : {
21585 : 12 : res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1);
21586 : 12 : {
21587 : 12 : tree _o1[2], _r1;
21588 : 12 : _o1[0] = captures[0];
21589 : 12 : _o1[1] = captures[1];
21590 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21591 : 12 : tem_op.resimplify (lseq, valueize);
21592 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21593 : 12 : if (!_r1) goto next_after_fail2479;
21594 : 6 : res_op->ops[0] = _r1;
21595 : : }
21596 : 6 : res_op->resimplify (lseq, valueize);
21597 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1159, __FILE__, __LINE__, true);
21598 : 6 : return true;
21599 : : }
21600 : 6 : next_after_fail2479:;
21601 : : }
21602 : : }
21603 : : }
21604 : : break;
21605 : 0 : case CFN_COPYSIGN:
21606 : 0 : if (gimple_call_num_args (_c1) == 2)
21607 : : {
21608 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21609 : 0 : _q20 = do_valueize (valueize, _q20);
21610 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21611 : 0 : _q21 = do_valueize (valueize, _q21);
21612 : 0 : switch (TREE_CODE (_p1))
21613 : : {
21614 : 0 : case REAL_CST:
21615 : 0 : {
21616 : 0 : {
21617 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21618 : 0 : if (gimple_simplify_429 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_POWL))
21619 : 0 : return true;
21620 : : }
21621 : 0 : break;
21622 : : }
21623 : : default:;
21624 : : }
21625 : : }
21626 : : break;
21627 : : default:;
21628 : : }
21629 : : }
21630 : : break;
21631 : 1688 : case REAL_CST:
21632 : 1688 : {
21633 : 1688 : {
21634 : 1688 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21635 : 1688 : if (gimple_simplify_432 (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))
21636 : 2 : return true;
21637 : : }
21638 : 1686 : break;
21639 : : }
21640 : 3008 : default:;
21641 : : }
21642 : 3008 : if (real_zerop (_p0))
21643 : : {
21644 : 207 : {
21645 : 207 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21646 : 207 : if (gimple_simplify_431 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
21647 : 1 : return true;
21648 : : }
21649 : : }
21650 : 3007 : if (real_onep (_p0))
21651 : : {
21652 : 100 : {
21653 : 100 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21654 : 100 : if (gimple_simplify_433 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
21655 : 100 : return true;
21656 : : }
21657 : : }
21658 : 2907 : switch (TREE_CODE (_p1))
21659 : : {
21660 : 1573 : case REAL_CST:
21661 : 1573 : {
21662 : 1573 : {
21663 : 1573 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
21664 : 1573 : {
21665 : 1573 : const REAL_VALUE_TYPE *value = TREE_REAL_CST_PTR (captures[1]);
21666 : 1573 : REAL_VALUE_TYPE tmp;
21667 : 1573 : if (real_equal (value, &dconst0)
21668 : : )
21669 : : {
21670 : 6 : gimple_seq *lseq = seq;
21671 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2480;
21672 : 6 : {
21673 : 6 : tree tem;
21674 : 6 : tem = build_real (type, dconst1);
21675 : 6 : res_op->set_value (tem);
21676 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1162, __FILE__, __LINE__, true);
21677 : 7 : return true;
21678 : : }
21679 : 0 : next_after_fail2480:;
21680 : : }
21681 : : else
21682 : : {
21683 : 1567 : if (real_equal (value, &dconst1)
21684 : : )
21685 : : {
21686 : 1 : gimple_seq *lseq = seq;
21687 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2481;
21688 : 1 : {
21689 : 1 : tree tem;
21690 : 1 : tem = captures[0];
21691 : 1 : res_op->set_value (tem);
21692 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1163, __FILE__, __LINE__, true);
21693 : 1 : return true;
21694 : : }
21695 : 0 : next_after_fail2481:;
21696 : : }
21697 : : else
21698 : : {
21699 : 1566 : if (real_equal (value, &dconstm1)
21700 : : )
21701 : : {
21702 : 0 : gimple_seq *lseq = seq;
21703 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2482;
21704 : 0 : {
21705 : 0 : res_op->set_op (RDIV_EXPR, type, 2);
21706 : 0 : res_op->ops[0] = build_real (type, dconst1);
21707 : 0 : res_op->ops[1] = captures[0];
21708 : 0 : res_op->resimplify (lseq, valueize);
21709 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1164, __FILE__, __LINE__, true);
21710 : 0 : return true;
21711 : : }
21712 : 0 : next_after_fail2482:;
21713 : : }
21714 : : else
21715 : : {
21716 : 1566 : if (flag_unsafe_math_optimizations
21717 : : && canonicalize_math_p ()
21718 : 1778 : && real_equal (value, &dconsthalf)
21719 : : )
21720 : : {
21721 : 0 : gimple_seq *lseq = seq;
21722 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2483;
21723 : 0 : {
21724 : 0 : res_op->set_op (CFN_BUILT_IN_SQRTL, type, 1);
21725 : 0 : res_op->ops[0] = captures[0];
21726 : 0 : res_op->resimplify (lseq, valueize);
21727 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1165, __FILE__, __LINE__, true);
21728 : 0 : return true;
21729 : : }
21730 : 0 : next_after_fail2483:;
21731 : : }
21732 : : else
21733 : : {
21734 : 1566 : if (flag_unsafe_math_optimizations
21735 : : && canonicalize_math_p ()
21736 : 1990 : && (tmp = real_value_truncate (TYPE_MODE (type), dconst_third ()),
21737 : 212 : real_equal (value, &tmp))
21738 : : )
21739 : : {
21740 : 0 : gimple_seq *lseq = seq;
21741 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2484;
21742 : 0 : {
21743 : 0 : res_op->set_op (CFN_BUILT_IN_CBRTL, type, 1);
21744 : 0 : res_op->ops[0] = captures[0];
21745 : 0 : res_op->resimplify (lseq, valueize);
21746 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1166, __FILE__, __LINE__, true);
21747 : 0 : return true;
21748 : : }
21749 : 0 : next_after_fail2484:;
21750 : : }
21751 : : }
21752 : : }
21753 : : }
21754 : : }
21755 : : }
21756 : : }
21757 : 1566 : break;
21758 : : }
21759 : : default:;
21760 : : }
21761 : : return false;
21762 : : }
21763 : :
21764 : : bool
21765 : 393 : gimple_simplify_CFN_BUILT_IN_HYPOTF (gimple_match_op *res_op, gimple_seq *seq,
21766 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
21767 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
21768 : : {
21769 : 393 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
21770 : 393 : switch (TREE_CODE (_p0))
21771 : : {
21772 : 358 : case SSA_NAME:
21773 : 358 : if (gimple *_d1 = get_def (valueize, _p0))
21774 : : {
21775 : 232 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21776 : 154 : switch (gimple_assign_rhs_code (_a1))
21777 : : {
21778 : 7 : case NEGATE_EXPR:
21779 : 7 : {
21780 : 7 : tree _q20 = gimple_assign_rhs1 (_a1);
21781 : 7 : _q20 = do_valueize (valueize, _q20);
21782 : 7 : {
21783 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21784 : 7 : const combined_fn hypots = CFN_BUILT_IN_HYPOTF;
21785 : 7 : gimple_seq *lseq = seq;
21786 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2528;
21787 : 7 : {
21788 : 7 : res_op->set_op (hypots, type, 2);
21789 : 7 : res_op->ops[0] = captures[0];
21790 : 7 : res_op->ops[1] = captures[1];
21791 : 7 : res_op->resimplify (lseq, valueize);
21792 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1175, __FILE__, __LINE__, true);
21793 : 7 : return true;
21794 : : }
21795 : 0 : next_after_fail2528:;
21796 : : }
21797 : 0 : break;
21798 : : }
21799 : 5 : case ABS_EXPR:
21800 : 5 : {
21801 : 5 : tree _q20 = gimple_assign_rhs1 (_a1);
21802 : 5 : _q20 = do_valueize (valueize, _q20);
21803 : 5 : {
21804 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21805 : 5 : const combined_fn hypots = CFN_BUILT_IN_HYPOTF;
21806 : 5 : gimple_seq *lseq = seq;
21807 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2529;
21808 : 5 : {
21809 : 5 : res_op->set_op (hypots, type, 2);
21810 : 5 : res_op->ops[0] = captures[0];
21811 : 5 : res_op->ops[1] = captures[1];
21812 : 5 : res_op->resimplify (lseq, valueize);
21813 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1175, __FILE__, __LINE__, true);
21814 : 5 : return true;
21815 : : }
21816 : 0 : next_after_fail2529:;
21817 : : }
21818 : 0 : break;
21819 : : }
21820 : : default:;
21821 : : }
21822 : : }
21823 : : break;
21824 : 381 : default:;
21825 : : }
21826 : 381 : switch (TREE_CODE (_p1))
21827 : : {
21828 : 344 : case SSA_NAME:
21829 : 344 : if (gimple *_d1 = get_def (valueize, _p1))
21830 : : {
21831 : 220 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21832 : 189 : switch (gimple_assign_rhs_code (_a1))
21833 : : {
21834 : 7 : case NEGATE_EXPR:
21835 : 7 : {
21836 : 7 : tree _q30 = gimple_assign_rhs1 (_a1);
21837 : 7 : _q30 = do_valueize (valueize, _q30);
21838 : 7 : {
21839 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
21840 : 7 : const combined_fn hypots = CFN_BUILT_IN_HYPOTF;
21841 : 7 : gimple_seq *lseq = seq;
21842 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2530;
21843 : 7 : {
21844 : 7 : res_op->set_op (hypots, type, 2);
21845 : 7 : res_op->ops[0] = captures[0];
21846 : 7 : res_op->ops[1] = captures[1];
21847 : 7 : res_op->resimplify (lseq, valueize);
21848 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1176, __FILE__, __LINE__, true);
21849 : 7 : return true;
21850 : : }
21851 : 0 : next_after_fail2530:;
21852 : : }
21853 : 0 : break;
21854 : : }
21855 : 5 : case ABS_EXPR:
21856 : 5 : {
21857 : 5 : tree _q30 = gimple_assign_rhs1 (_a1);
21858 : 5 : _q30 = do_valueize (valueize, _q30);
21859 : 5 : {
21860 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
21861 : 5 : const combined_fn hypots = CFN_BUILT_IN_HYPOTF;
21862 : 5 : gimple_seq *lseq = seq;
21863 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2531;
21864 : 5 : {
21865 : 5 : res_op->set_op (hypots, type, 2);
21866 : 5 : res_op->ops[0] = captures[0];
21867 : 5 : res_op->ops[1] = captures[1];
21868 : 5 : res_op->resimplify (lseq, valueize);
21869 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1176, __FILE__, __LINE__, true);
21870 : 5 : return true;
21871 : : }
21872 : 0 : next_after_fail2531:;
21873 : : }
21874 : 0 : break;
21875 : : }
21876 : : default:;
21877 : : }
21878 : : }
21879 : : break;
21880 : 369 : default:;
21881 : : }
21882 : 369 : switch (TREE_CODE (_p0))
21883 : : {
21884 : 334 : case SSA_NAME:
21885 : 334 : if (gimple *_d1 = get_def (valueize, _p0))
21886 : : {
21887 : 208 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21888 : 20 : switch (gimple_call_combined_fn (_c1))
21889 : : {
21890 : 0 : case CFN_BUILT_IN_COPYSIGN:
21891 : 0 : if (gimple_call_num_args (_c1) == 2)
21892 : : {
21893 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21894 : 0 : _q20 = do_valueize (valueize, _q20);
21895 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21896 : 0 : _q21 = do_valueize (valueize, _q21);
21897 : 0 : {
21898 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21899 : 0 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_HYPOTF))
21900 : 0 : return true;
21901 : : }
21902 : : }
21903 : : break;
21904 : 4 : case CFN_BUILT_IN_COPYSIGNF:
21905 : 4 : if (gimple_call_num_args (_c1) == 2)
21906 : : {
21907 : 4 : tree _q20 = gimple_call_arg (_c1, 0);
21908 : 4 : _q20 = do_valueize (valueize, _q20);
21909 : 4 : tree _q21 = gimple_call_arg (_c1, 1);
21910 : 4 : _q21 = do_valueize (valueize, _q21);
21911 : 4 : {
21912 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21913 : 4 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_HYPOTF))
21914 : 4 : return true;
21915 : : }
21916 : : }
21917 : : break;
21918 : 0 : case CFN_BUILT_IN_COPYSIGNL:
21919 : 0 : if (gimple_call_num_args (_c1) == 2)
21920 : : {
21921 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21922 : 0 : _q20 = do_valueize (valueize, _q20);
21923 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21924 : 0 : _q21 = do_valueize (valueize, _q21);
21925 : 0 : {
21926 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21927 : 0 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_HYPOTF))
21928 : 0 : return true;
21929 : : }
21930 : : }
21931 : : break;
21932 : 1 : case CFN_COPYSIGN:
21933 : 1 : if (gimple_call_num_args (_c1) == 2)
21934 : : {
21935 : 1 : tree _q20 = gimple_call_arg (_c1, 0);
21936 : 1 : _q20 = do_valueize (valueize, _q20);
21937 : 1 : tree _q21 = gimple_call_arg (_c1, 1);
21938 : 1 : _q21 = do_valueize (valueize, _q21);
21939 : 1 : {
21940 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21941 : 1 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_HYPOTF))
21942 : 1 : return true;
21943 : : }
21944 : : }
21945 : : break;
21946 : : default:;
21947 : : }
21948 : : }
21949 : : break;
21950 : 364 : default:;
21951 : : }
21952 : 364 : switch (TREE_CODE (_p1))
21953 : : {
21954 : 327 : case SSA_NAME:
21955 : 327 : if (gimple *_d1 = get_def (valueize, _p1))
21956 : : {
21957 : 203 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21958 : 16 : switch (gimple_call_combined_fn (_c1))
21959 : : {
21960 : 0 : case CFN_BUILT_IN_COPYSIGN:
21961 : 0 : if (gimple_call_num_args (_c1) == 2)
21962 : : {
21963 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
21964 : 0 : _q30 = do_valueize (valueize, _q30);
21965 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
21966 : 0 : _q31 = do_valueize (valueize, _q31);
21967 : 0 : {
21968 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
21969 : 0 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_HYPOTF))
21970 : 0 : return true;
21971 : : }
21972 : : }
21973 : : break;
21974 : 0 : case CFN_BUILT_IN_COPYSIGNF:
21975 : 0 : if (gimple_call_num_args (_c1) == 2)
21976 : : {
21977 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
21978 : 0 : _q30 = do_valueize (valueize, _q30);
21979 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
21980 : 0 : _q31 = do_valueize (valueize, _q31);
21981 : 0 : {
21982 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
21983 : 0 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_HYPOTF))
21984 : 0 : return true;
21985 : : }
21986 : : }
21987 : : break;
21988 : 0 : case CFN_BUILT_IN_COPYSIGNL:
21989 : 0 : if (gimple_call_num_args (_c1) == 2)
21990 : : {
21991 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
21992 : 0 : _q30 = do_valueize (valueize, _q30);
21993 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
21994 : 0 : _q31 = do_valueize (valueize, _q31);
21995 : 0 : {
21996 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
21997 : 0 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_HYPOTF))
21998 : 0 : return true;
21999 : : }
22000 : : }
22001 : : break;
22002 : 1 : case CFN_COPYSIGN:
22003 : 1 : if (gimple_call_num_args (_c1) == 2)
22004 : : {
22005 : 1 : tree _q30 = gimple_call_arg (_c1, 0);
22006 : 1 : _q30 = do_valueize (valueize, _q30);
22007 : 1 : tree _q31 = gimple_call_arg (_c1, 1);
22008 : 1 : _q31 = do_valueize (valueize, _q31);
22009 : 1 : {
22010 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
22011 : 1 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_HYPOTF))
22012 : 1 : return true;
22013 : : }
22014 : : }
22015 : : break;
22016 : : default:;
22017 : : }
22018 : : }
22019 : : break;
22020 : 363 : default:;
22021 : : }
22022 : 363 : if (real_zerop (_p1))
22023 : : {
22024 : 2 : {
22025 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22026 : 2 : if (gimple_simplify_437 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF))
22027 : 2 : return true;
22028 : : }
22029 : : }
22030 : 361 : if (real_zerop (_p0))
22031 : : {
22032 : 1 : {
22033 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22034 : 1 : if (gimple_simplify_437 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF))
22035 : 1 : return true;
22036 : : }
22037 : : }
22038 : 360 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22039 : : {
22040 : 7 : {
22041 : 7 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22042 : 7 : if (gimple_simplify_438 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF))
22043 : 3 : return true;
22044 : : }
22045 : : }
22046 : : return false;
22047 : : }
22048 : :
22049 : : bool
22050 : 0 : gimple_simplify_CFN_HYPOT (gimple_match_op *res_op, gimple_seq *seq,
22051 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22052 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22053 : : {
22054 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22055 : 0 : switch (TREE_CODE (_p0))
22056 : : {
22057 : 0 : case SSA_NAME:
22058 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
22059 : : {
22060 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22061 : 0 : switch (gimple_assign_rhs_code (_a1))
22062 : : {
22063 : 0 : case NEGATE_EXPR:
22064 : 0 : {
22065 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22066 : 0 : _q20 = do_valueize (valueize, _q20);
22067 : 0 : {
22068 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22069 : 0 : const combined_fn hypots = CFN_HYPOT;
22070 : 0 : gimple_seq *lseq = seq;
22071 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2540;
22072 : 0 : {
22073 : 0 : res_op->set_op (hypots, type, 2);
22074 : 0 : res_op->ops[0] = captures[0];
22075 : 0 : res_op->ops[1] = captures[1];
22076 : 0 : res_op->resimplify (lseq, valueize);
22077 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1175, __FILE__, __LINE__, true);
22078 : 0 : return true;
22079 : : }
22080 : 0 : next_after_fail2540:;
22081 : : }
22082 : 0 : break;
22083 : : }
22084 : 0 : case ABS_EXPR:
22085 : 0 : {
22086 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22087 : 0 : _q20 = do_valueize (valueize, _q20);
22088 : 0 : {
22089 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22090 : 0 : const combined_fn hypots = CFN_HYPOT;
22091 : 0 : gimple_seq *lseq = seq;
22092 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2541;
22093 : 0 : {
22094 : 0 : res_op->set_op (hypots, type, 2);
22095 : 0 : res_op->ops[0] = captures[0];
22096 : 0 : res_op->ops[1] = captures[1];
22097 : 0 : res_op->resimplify (lseq, valueize);
22098 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1175, __FILE__, __LINE__, true);
22099 : 0 : return true;
22100 : : }
22101 : 0 : next_after_fail2541:;
22102 : : }
22103 : 0 : break;
22104 : : }
22105 : : default:;
22106 : : }
22107 : : }
22108 : : break;
22109 : 0 : default:;
22110 : : }
22111 : 0 : switch (TREE_CODE (_p1))
22112 : : {
22113 : 0 : case SSA_NAME:
22114 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
22115 : : {
22116 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22117 : 0 : switch (gimple_assign_rhs_code (_a1))
22118 : : {
22119 : 0 : case NEGATE_EXPR:
22120 : 0 : {
22121 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
22122 : 0 : _q30 = do_valueize (valueize, _q30);
22123 : 0 : {
22124 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
22125 : 0 : const combined_fn hypots = CFN_HYPOT;
22126 : 0 : gimple_seq *lseq = seq;
22127 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2542;
22128 : 0 : {
22129 : 0 : res_op->set_op (hypots, type, 2);
22130 : 0 : res_op->ops[0] = captures[0];
22131 : 0 : res_op->ops[1] = captures[1];
22132 : 0 : res_op->resimplify (lseq, valueize);
22133 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1176, __FILE__, __LINE__, true);
22134 : 0 : return true;
22135 : : }
22136 : 0 : next_after_fail2542:;
22137 : : }
22138 : 0 : break;
22139 : : }
22140 : 0 : case ABS_EXPR:
22141 : 0 : {
22142 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
22143 : 0 : _q30 = do_valueize (valueize, _q30);
22144 : 0 : {
22145 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
22146 : 0 : const combined_fn hypots = CFN_HYPOT;
22147 : 0 : gimple_seq *lseq = seq;
22148 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2543;
22149 : 0 : {
22150 : 0 : res_op->set_op (hypots, type, 2);
22151 : 0 : res_op->ops[0] = captures[0];
22152 : 0 : res_op->ops[1] = captures[1];
22153 : 0 : res_op->resimplify (lseq, valueize);
22154 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1176, __FILE__, __LINE__, true);
22155 : 0 : return true;
22156 : : }
22157 : 0 : next_after_fail2543:;
22158 : : }
22159 : 0 : break;
22160 : : }
22161 : : default:;
22162 : : }
22163 : : }
22164 : : break;
22165 : 0 : default:;
22166 : : }
22167 : 0 : switch (TREE_CODE (_p0))
22168 : : {
22169 : 0 : case SSA_NAME:
22170 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
22171 : : {
22172 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
22173 : 0 : switch (gimple_call_combined_fn (_c1))
22174 : : {
22175 : 0 : case CFN_BUILT_IN_COPYSIGN:
22176 : 0 : if (gimple_call_num_args (_c1) == 2)
22177 : : {
22178 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22179 : 0 : _q20 = do_valueize (valueize, _q20);
22180 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22181 : 0 : _q21 = do_valueize (valueize, _q21);
22182 : 0 : {
22183 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22184 : 0 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_HYPOT))
22185 : 0 : return true;
22186 : : }
22187 : : }
22188 : : break;
22189 : 0 : case CFN_BUILT_IN_COPYSIGNF:
22190 : 0 : if (gimple_call_num_args (_c1) == 2)
22191 : : {
22192 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22193 : 0 : _q20 = do_valueize (valueize, _q20);
22194 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22195 : 0 : _q21 = do_valueize (valueize, _q21);
22196 : 0 : {
22197 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22198 : 0 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_HYPOT))
22199 : 0 : return true;
22200 : : }
22201 : : }
22202 : : break;
22203 : 0 : case CFN_BUILT_IN_COPYSIGNL:
22204 : 0 : if (gimple_call_num_args (_c1) == 2)
22205 : : {
22206 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22207 : 0 : _q20 = do_valueize (valueize, _q20);
22208 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22209 : 0 : _q21 = do_valueize (valueize, _q21);
22210 : 0 : {
22211 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22212 : 0 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_HYPOT))
22213 : 0 : return true;
22214 : : }
22215 : : }
22216 : : break;
22217 : 0 : case CFN_COPYSIGN:
22218 : 0 : if (gimple_call_num_args (_c1) == 2)
22219 : : {
22220 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22221 : 0 : _q20 = do_valueize (valueize, _q20);
22222 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22223 : 0 : _q21 = do_valueize (valueize, _q21);
22224 : 0 : {
22225 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22226 : 0 : if (gimple_simplify_435 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_HYPOT))
22227 : 0 : return true;
22228 : : }
22229 : : }
22230 : : break;
22231 : : default:;
22232 : : }
22233 : : }
22234 : : break;
22235 : 0 : default:;
22236 : : }
22237 : 0 : switch (TREE_CODE (_p1))
22238 : : {
22239 : 0 : case SSA_NAME:
22240 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
22241 : : {
22242 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
22243 : 0 : switch (gimple_call_combined_fn (_c1))
22244 : : {
22245 : 0 : case CFN_BUILT_IN_COPYSIGN:
22246 : 0 : if (gimple_call_num_args (_c1) == 2)
22247 : : {
22248 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
22249 : 0 : _q30 = do_valueize (valueize, _q30);
22250 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
22251 : 0 : _q31 = do_valueize (valueize, _q31);
22252 : 0 : {
22253 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
22254 : 0 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_HYPOT))
22255 : 0 : return true;
22256 : : }
22257 : : }
22258 : : break;
22259 : 0 : case CFN_BUILT_IN_COPYSIGNF:
22260 : 0 : if (gimple_call_num_args (_c1) == 2)
22261 : : {
22262 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
22263 : 0 : _q30 = do_valueize (valueize, _q30);
22264 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
22265 : 0 : _q31 = do_valueize (valueize, _q31);
22266 : 0 : {
22267 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
22268 : 0 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_HYPOT))
22269 : 0 : return true;
22270 : : }
22271 : : }
22272 : : break;
22273 : 0 : case CFN_BUILT_IN_COPYSIGNL:
22274 : 0 : if (gimple_call_num_args (_c1) == 2)
22275 : : {
22276 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
22277 : 0 : _q30 = do_valueize (valueize, _q30);
22278 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
22279 : 0 : _q31 = do_valueize (valueize, _q31);
22280 : 0 : {
22281 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
22282 : 0 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_HYPOT))
22283 : 0 : return true;
22284 : : }
22285 : : }
22286 : : break;
22287 : 0 : case CFN_COPYSIGN:
22288 : 0 : if (gimple_call_num_args (_c1) == 2)
22289 : : {
22290 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
22291 : 0 : _q30 = do_valueize (valueize, _q30);
22292 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
22293 : 0 : _q31 = do_valueize (valueize, _q31);
22294 : 0 : {
22295 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
22296 : 0 : if (gimple_simplify_436 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_HYPOT))
22297 : 0 : return true;
22298 : : }
22299 : : }
22300 : : break;
22301 : : default:;
22302 : : }
22303 : : }
22304 : : break;
22305 : 0 : default:;
22306 : : }
22307 : 0 : if (real_zerop (_p1))
22308 : : {
22309 : 0 : {
22310 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22311 : 0 : if (gimple_simplify_437 (res_op, seq, valueize, type, captures, CFN_HYPOT))
22312 : 0 : return true;
22313 : : }
22314 : : }
22315 : 0 : if (real_zerop (_p0))
22316 : : {
22317 : 0 : {
22318 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22319 : 0 : if (gimple_simplify_437 (res_op, seq, valueize, type, captures, CFN_HYPOT))
22320 : 0 : return true;
22321 : : }
22322 : : }
22323 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22324 : : {
22325 : 0 : {
22326 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22327 : 0 : if (gimple_simplify_438 (res_op, seq, valueize, type, captures, CFN_HYPOT))
22328 : 0 : return true;
22329 : : }
22330 : : }
22331 : : return false;
22332 : : }
22333 : :
22334 : : bool
22335 : 1779 : gimple_simplify_CFN_BUILT_IN_FMINF (gimple_match_op *res_op, gimple_seq *seq,
22336 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22337 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22338 : : {
22339 : 1779 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22340 : 1779 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22341 : : {
22342 : 43 : {
22343 : 43 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22344 : 43 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF))
22345 : 28 : return true;
22346 : : }
22347 : : }
22348 : 1751 : switch (TREE_CODE (_p1))
22349 : : {
22350 : 886 : case REAL_CST:
22351 : 886 : {
22352 : 886 : {
22353 : 886 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22354 : 886 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF))
22355 : 38 : return true;
22356 : : }
22357 : 848 : break;
22358 : : }
22359 : 1713 : default:;
22360 : : }
22361 : 1713 : switch (TREE_CODE (_p0))
22362 : : {
22363 : 490 : case REAL_CST:
22364 : 490 : {
22365 : 490 : {
22366 : 490 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22367 : 490 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF))
22368 : 60 : return true;
22369 : : }
22370 : 430 : break;
22371 : : }
22372 : 1653 : default:;
22373 : : }
22374 : 1653 : {
22375 : 1653 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22376 : 1653 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF))
22377 : 17 : return true;
22378 : : }
22379 : 1636 : switch (TREE_CODE (_p0))
22380 : : {
22381 : 1060 : case SSA_NAME:
22382 : 1060 : if (gimple *_d1 = get_def (valueize, _p0))
22383 : : {
22384 : 626 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22385 : 478 : switch (gimple_assign_rhs_code (_a1))
22386 : : {
22387 : 40 : case NEGATE_EXPR:
22388 : 40 : {
22389 : 40 : tree _q20 = gimple_assign_rhs1 (_a1);
22390 : 40 : _q20 = do_valueize (valueize, _q20);
22391 : 40 : switch (TREE_CODE (_p1))
22392 : : {
22393 : 0 : case SSA_NAME:
22394 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22395 : : {
22396 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22397 : 0 : switch (gimple_assign_rhs_code (_a2))
22398 : : {
22399 : 0 : case NEGATE_EXPR:
22400 : 0 : {
22401 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
22402 : 0 : _q40 = do_valueize (valueize, _q40);
22403 : 0 : {
22404 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22405 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
22406 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
22407 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
22408 : : )
22409 : : {
22410 : 0 : gimple_seq *lseq = seq;
22411 : 0 : if (lseq
22412 : 0 : && (!single_use (captures[0])
22413 : 0 : || !single_use (captures[2])))
22414 : 0 : lseq = NULL;
22415 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2591;
22416 : 0 : {
22417 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
22418 : 0 : {
22419 : 0 : tree _o1[2], _r1;
22420 : 0 : _o1[0] = captures[1];
22421 : 0 : _o1[1] = captures[3];
22422 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22423 : 0 : tem_op.resimplify (lseq, valueize);
22424 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22425 : 0 : if (!_r1) goto next_after_fail2591;
22426 : 0 : res_op->ops[0] = _r1;
22427 : : }
22428 : 0 : res_op->resimplify (lseq, valueize);
22429 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
22430 : 0 : return true;
22431 : : }
22432 : 0 : next_after_fail2591:;
22433 : : }
22434 : : }
22435 : 0 : break;
22436 : : }
22437 : : default:;
22438 : : }
22439 : : }
22440 : : break;
22441 : : default:;
22442 : : }
22443 : : break;
22444 : : }
22445 : : default:;
22446 : : }
22447 : : }
22448 : : break;
22449 : : default:;
22450 : : }
22451 : : return false;
22452 : : }
22453 : :
22454 : : bool
22455 : 1845 : gimple_simplify_CFN_BUILT_IN_FMIN (gimple_match_op *res_op, gimple_seq *seq,
22456 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22457 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22458 : : {
22459 : 1845 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22460 : 1845 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22461 : : {
22462 : 56 : {
22463 : 56 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22464 : 56 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMIN))
22465 : 28 : return true;
22466 : : }
22467 : : }
22468 : 1817 : switch (TREE_CODE (_p1))
22469 : : {
22470 : 912 : case REAL_CST:
22471 : 912 : {
22472 : 912 : {
22473 : 912 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22474 : 912 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMIN))
22475 : 38 : return true;
22476 : : }
22477 : 874 : break;
22478 : : }
22479 : 1779 : default:;
22480 : : }
22481 : 1779 : switch (TREE_CODE (_p0))
22482 : : {
22483 : 514 : case REAL_CST:
22484 : 514 : {
22485 : 514 : {
22486 : 514 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22487 : 514 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMIN))
22488 : 60 : return true;
22489 : : }
22490 : 454 : break;
22491 : : }
22492 : 1719 : default:;
22493 : : }
22494 : 1719 : {
22495 : 1719 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22496 : 1719 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMIN))
22497 : 23 : return true;
22498 : : }
22499 : 1696 : switch (TREE_CODE (_p0))
22500 : : {
22501 : 1088 : case SSA_NAME:
22502 : 1088 : if (gimple *_d1 = get_def (valueize, _p0))
22503 : : {
22504 : 637 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22505 : 539 : switch (gimple_assign_rhs_code (_a1))
22506 : : {
22507 : 40 : case NEGATE_EXPR:
22508 : 40 : {
22509 : 40 : tree _q20 = gimple_assign_rhs1 (_a1);
22510 : 40 : _q20 = do_valueize (valueize, _q20);
22511 : 40 : switch (TREE_CODE (_p1))
22512 : : {
22513 : 0 : case SSA_NAME:
22514 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22515 : : {
22516 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22517 : 0 : switch (gimple_assign_rhs_code (_a2))
22518 : : {
22519 : 0 : case NEGATE_EXPR:
22520 : 0 : {
22521 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
22522 : 0 : _q40 = do_valueize (valueize, _q40);
22523 : 0 : {
22524 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22525 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
22526 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
22527 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
22528 : : )
22529 : : {
22530 : 0 : gimple_seq *lseq = seq;
22531 : 0 : if (lseq
22532 : 0 : && (!single_use (captures[0])
22533 : 0 : || !single_use (captures[2])))
22534 : 0 : lseq = NULL;
22535 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2592;
22536 : 0 : {
22537 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
22538 : 0 : {
22539 : 0 : tree _o1[2], _r1;
22540 : 0 : _o1[0] = captures[1];
22541 : 0 : _o1[1] = captures[3];
22542 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAX, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22543 : 0 : tem_op.resimplify (lseq, valueize);
22544 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22545 : 0 : if (!_r1) goto next_after_fail2592;
22546 : 0 : res_op->ops[0] = _r1;
22547 : : }
22548 : 0 : res_op->resimplify (lseq, valueize);
22549 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
22550 : 0 : return true;
22551 : : }
22552 : 0 : next_after_fail2592:;
22553 : : }
22554 : : }
22555 : 0 : break;
22556 : : }
22557 : : default:;
22558 : : }
22559 : : }
22560 : : break;
22561 : : default:;
22562 : : }
22563 : : break;
22564 : : }
22565 : : default:;
22566 : : }
22567 : : }
22568 : : break;
22569 : : default:;
22570 : : }
22571 : : return false;
22572 : : }
22573 : :
22574 : : bool
22575 : 1552 : gimple_simplify_CFN_BUILT_IN_FMINL (gimple_match_op *res_op, gimple_seq *seq,
22576 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22577 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22578 : : {
22579 : 1552 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22580 : 1552 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22581 : : {
22582 : 45 : {
22583 : 45 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22584 : 45 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINL))
22585 : 30 : return true;
22586 : : }
22587 : : }
22588 : 1522 : switch (TREE_CODE (_p1))
22589 : : {
22590 : 886 : case REAL_CST:
22591 : 886 : {
22592 : 886 : {
22593 : 886 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22594 : 886 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINL))
22595 : 38 : return true;
22596 : : }
22597 : 848 : break;
22598 : : }
22599 : 1484 : default:;
22600 : : }
22601 : 1484 : switch (TREE_CODE (_p0))
22602 : : {
22603 : 490 : case REAL_CST:
22604 : 490 : {
22605 : 490 : {
22606 : 490 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22607 : 490 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINL))
22608 : 60 : return true;
22609 : : }
22610 : 430 : break;
22611 : : }
22612 : 1424 : default:;
22613 : : }
22614 : 1424 : {
22615 : 1424 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22616 : 1424 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINL))
22617 : 23 : return true;
22618 : : }
22619 : 1401 : switch (TREE_CODE (_p0))
22620 : : {
22621 : 831 : case SSA_NAME:
22622 : 831 : if (gimple *_d1 = get_def (valueize, _p0))
22623 : : {
22624 : 488 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22625 : 295 : switch (gimple_assign_rhs_code (_a1))
22626 : : {
22627 : 40 : case NEGATE_EXPR:
22628 : 40 : {
22629 : 40 : tree _q20 = gimple_assign_rhs1 (_a1);
22630 : 40 : _q20 = do_valueize (valueize, _q20);
22631 : 40 : switch (TREE_CODE (_p1))
22632 : : {
22633 : 0 : case SSA_NAME:
22634 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22635 : : {
22636 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22637 : 0 : switch (gimple_assign_rhs_code (_a2))
22638 : : {
22639 : 0 : case NEGATE_EXPR:
22640 : 0 : {
22641 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
22642 : 0 : _q40 = do_valueize (valueize, _q40);
22643 : 0 : {
22644 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22645 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
22646 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
22647 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
22648 : : )
22649 : : {
22650 : 0 : gimple_seq *lseq = seq;
22651 : 0 : if (lseq
22652 : 0 : && (!single_use (captures[0])
22653 : 0 : || !single_use (captures[2])))
22654 : 0 : lseq = NULL;
22655 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2593;
22656 : 0 : {
22657 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
22658 : 0 : {
22659 : 0 : tree _o1[2], _r1;
22660 : 0 : _o1[0] = captures[1];
22661 : 0 : _o1[1] = captures[3];
22662 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXL, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22663 : 0 : tem_op.resimplify (lseq, valueize);
22664 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22665 : 0 : if (!_r1) goto next_after_fail2593;
22666 : 0 : res_op->ops[0] = _r1;
22667 : : }
22668 : 0 : res_op->resimplify (lseq, valueize);
22669 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
22670 : 0 : return true;
22671 : : }
22672 : 0 : next_after_fail2593:;
22673 : : }
22674 : : }
22675 : 0 : break;
22676 : : }
22677 : : default:;
22678 : : }
22679 : : }
22680 : : break;
22681 : : default:;
22682 : : }
22683 : : break;
22684 : : }
22685 : : default:;
22686 : : }
22687 : : }
22688 : : break;
22689 : : default:;
22690 : : }
22691 : : return false;
22692 : : }
22693 : :
22694 : : bool
22695 : 11 : gimple_simplify_CFN_BUILT_IN_FMINF16 (gimple_match_op *res_op, gimple_seq *seq,
22696 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22697 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22698 : : {
22699 : 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22700 : 11 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22701 : : {
22702 : 0 : {
22703 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22704 : 0 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF16))
22705 : 0 : return true;
22706 : : }
22707 : : }
22708 : 11 : switch (TREE_CODE (_p1))
22709 : : {
22710 : 0 : case REAL_CST:
22711 : 0 : {
22712 : 0 : {
22713 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22714 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF16))
22715 : 0 : return true;
22716 : : }
22717 : 0 : break;
22718 : : }
22719 : 11 : default:;
22720 : : }
22721 : 11 : switch (TREE_CODE (_p0))
22722 : : {
22723 : 0 : case REAL_CST:
22724 : 0 : {
22725 : 0 : {
22726 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22727 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF16))
22728 : 0 : return true;
22729 : : }
22730 : 0 : break;
22731 : : }
22732 : 11 : default:;
22733 : : }
22734 : 11 : {
22735 : 11 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22736 : 11 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF16))
22737 : 11 : return true;
22738 : : }
22739 : 0 : switch (TREE_CODE (_p0))
22740 : : {
22741 : 0 : case SSA_NAME:
22742 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
22743 : : {
22744 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22745 : 0 : switch (gimple_assign_rhs_code (_a1))
22746 : : {
22747 : 0 : case NEGATE_EXPR:
22748 : 0 : {
22749 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22750 : 0 : _q20 = do_valueize (valueize, _q20);
22751 : 0 : switch (TREE_CODE (_p1))
22752 : : {
22753 : 0 : case SSA_NAME:
22754 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22755 : : {
22756 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22757 : 0 : switch (gimple_assign_rhs_code (_a2))
22758 : : {
22759 : 0 : case NEGATE_EXPR:
22760 : 0 : {
22761 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
22762 : 0 : _q40 = do_valueize (valueize, _q40);
22763 : 0 : {
22764 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22765 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
22766 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
22767 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
22768 : : )
22769 : : {
22770 : 0 : gimple_seq *lseq = seq;
22771 : 0 : if (lseq
22772 : 0 : && (!single_use (captures[0])
22773 : 0 : || !single_use (captures[2])))
22774 : 0 : lseq = NULL;
22775 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2594;
22776 : 0 : {
22777 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
22778 : 0 : {
22779 : 0 : tree _o1[2], _r1;
22780 : 0 : _o1[0] = captures[1];
22781 : 0 : _o1[1] = captures[3];
22782 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF16, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22783 : 0 : tem_op.resimplify (lseq, valueize);
22784 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22785 : 0 : if (!_r1) goto next_after_fail2594;
22786 : 0 : res_op->ops[0] = _r1;
22787 : : }
22788 : 0 : res_op->resimplify (lseq, valueize);
22789 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
22790 : 0 : return true;
22791 : : }
22792 : 0 : next_after_fail2594:;
22793 : : }
22794 : : }
22795 : 0 : break;
22796 : : }
22797 : : default:;
22798 : : }
22799 : : }
22800 : : break;
22801 : : default:;
22802 : : }
22803 : : break;
22804 : : }
22805 : : default:;
22806 : : }
22807 : : }
22808 : : break;
22809 : : default:;
22810 : : }
22811 : : return false;
22812 : : }
22813 : :
22814 : : bool
22815 : 44 : gimple_simplify_CFN_BUILT_IN_FMINF128 (gimple_match_op *res_op, gimple_seq *seq,
22816 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22817 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22818 : : {
22819 : 44 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22820 : 44 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22821 : : {
22822 : 0 : {
22823 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22824 : 0 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128))
22825 : 0 : return true;
22826 : : }
22827 : : }
22828 : 44 : switch (TREE_CODE (_p1))
22829 : : {
22830 : 0 : case REAL_CST:
22831 : 0 : {
22832 : 0 : {
22833 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22834 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128))
22835 : 0 : return true;
22836 : : }
22837 : 0 : break;
22838 : : }
22839 : 44 : default:;
22840 : : }
22841 : 44 : switch (TREE_CODE (_p0))
22842 : : {
22843 : 0 : case REAL_CST:
22844 : 0 : {
22845 : 0 : {
22846 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22847 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128))
22848 : 0 : return true;
22849 : : }
22850 : 0 : break;
22851 : : }
22852 : 44 : default:;
22853 : : }
22854 : 44 : {
22855 : 44 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22856 : 44 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128))
22857 : 0 : return true;
22858 : : }
22859 : 44 : switch (TREE_CODE (_p0))
22860 : : {
22861 : 42 : case SSA_NAME:
22862 : 42 : if (gimple *_d1 = get_def (valueize, _p0))
22863 : : {
22864 : 28 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22865 : 44 : switch (gimple_assign_rhs_code (_a1))
22866 : : {
22867 : 0 : case NEGATE_EXPR:
22868 : 0 : {
22869 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22870 : 0 : _q20 = do_valueize (valueize, _q20);
22871 : 0 : switch (TREE_CODE (_p1))
22872 : : {
22873 : 0 : case SSA_NAME:
22874 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22875 : : {
22876 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22877 : 0 : switch (gimple_assign_rhs_code (_a2))
22878 : : {
22879 : 0 : case NEGATE_EXPR:
22880 : 0 : {
22881 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
22882 : 0 : _q40 = do_valueize (valueize, _q40);
22883 : 0 : {
22884 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
22885 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
22886 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
22887 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
22888 : : )
22889 : : {
22890 : 0 : gimple_seq *lseq = seq;
22891 : 0 : if (lseq
22892 : 0 : && (!single_use (captures[0])
22893 : 0 : || !single_use (captures[2])))
22894 : 0 : lseq = NULL;
22895 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2597;
22896 : 0 : {
22897 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
22898 : 0 : {
22899 : 0 : tree _o1[2], _r1;
22900 : 0 : _o1[0] = captures[1];
22901 : 0 : _o1[1] = captures[3];
22902 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF128, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22903 : 0 : tem_op.resimplify (lseq, valueize);
22904 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22905 : 0 : if (!_r1) goto next_after_fail2597;
22906 : 0 : res_op->ops[0] = _r1;
22907 : : }
22908 : 0 : res_op->resimplify (lseq, valueize);
22909 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
22910 : 0 : return true;
22911 : : }
22912 : 0 : next_after_fail2597:;
22913 : : }
22914 : : }
22915 : 0 : break;
22916 : : }
22917 : : default:;
22918 : : }
22919 : : }
22920 : : break;
22921 : : default:;
22922 : : }
22923 : : break;
22924 : : }
22925 : : default:;
22926 : : }
22927 : : }
22928 : : break;
22929 : : default:;
22930 : : }
22931 : : return false;
22932 : : }
22933 : :
22934 : : bool
22935 : 0 : gimple_simplify_CFN_BUILT_IN_FMINF128X (gimple_match_op *res_op, gimple_seq *seq,
22936 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22937 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22938 : : {
22939 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22940 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
22941 : : {
22942 : 0 : {
22943 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22944 : 0 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128X))
22945 : 0 : return true;
22946 : : }
22947 : : }
22948 : 0 : switch (TREE_CODE (_p1))
22949 : : {
22950 : 0 : case REAL_CST:
22951 : 0 : {
22952 : 0 : {
22953 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22954 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128X))
22955 : 0 : return true;
22956 : : }
22957 : 0 : break;
22958 : : }
22959 : 0 : default:;
22960 : : }
22961 : 0 : switch (TREE_CODE (_p0))
22962 : : {
22963 : 0 : case REAL_CST:
22964 : 0 : {
22965 : 0 : {
22966 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
22967 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128X))
22968 : 0 : return true;
22969 : : }
22970 : 0 : break;
22971 : : }
22972 : 0 : default:;
22973 : : }
22974 : 0 : {
22975 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22976 : 0 : if (gimple_simplify_607 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128X))
22977 : 0 : return true;
22978 : : }
22979 : 0 : switch (TREE_CODE (_p0))
22980 : : {
22981 : 0 : case SSA_NAME:
22982 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
22983 : : {
22984 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22985 : 0 : switch (gimple_assign_rhs_code (_a1))
22986 : : {
22987 : 0 : case NEGATE_EXPR:
22988 : 0 : {
22989 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22990 : 0 : _q20 = do_valueize (valueize, _q20);
22991 : 0 : switch (TREE_CODE (_p1))
22992 : : {
22993 : 0 : case SSA_NAME:
22994 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
22995 : : {
22996 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
22997 : 0 : switch (gimple_assign_rhs_code (_a2))
22998 : : {
22999 : 0 : case NEGATE_EXPR:
23000 : 0 : {
23001 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23002 : 0 : _q40 = do_valueize (valueize, _q40);
23003 : 0 : {
23004 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
23005 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
23006 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
23007 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
23008 : : )
23009 : : {
23010 : 0 : gimple_seq *lseq = seq;
23011 : 0 : if (lseq
23012 : 0 : && (!single_use (captures[0])
23013 : 0 : || !single_use (captures[2])))
23014 : 0 : lseq = NULL;
23015 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2600;
23016 : 0 : {
23017 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
23018 : 0 : {
23019 : 0 : tree _o1[2], _r1;
23020 : 0 : _o1[0] = captures[1];
23021 : 0 : _o1[1] = captures[3];
23022 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF128X, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23023 : 0 : tem_op.resimplify (lseq, valueize);
23024 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23025 : 0 : if (!_r1) goto next_after_fail2600;
23026 : 0 : res_op->ops[0] = _r1;
23027 : : }
23028 : 0 : res_op->resimplify (lseq, valueize);
23029 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
23030 : 0 : return true;
23031 : : }
23032 : 0 : next_after_fail2600:;
23033 : : }
23034 : : }
23035 : 0 : break;
23036 : : }
23037 : : default:;
23038 : : }
23039 : : }
23040 : : break;
23041 : : default:;
23042 : : }
23043 : : break;
23044 : : }
23045 : : default:;
23046 : : }
23047 : : }
23048 : : break;
23049 : : default:;
23050 : : }
23051 : : return false;
23052 : : }
23053 : :
23054 : : bool
23055 : 2332 : gimple_simplify_CFN_BUILT_IN_FMAX (gimple_match_op *res_op, gimple_seq *seq,
23056 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23057 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23058 : : {
23059 : 2332 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23060 : 2332 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
23061 : : {
23062 : 56 : {
23063 : 56 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
23064 : 56 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAX))
23065 : 28 : return true;
23066 : : }
23067 : : }
23068 : 2304 : switch (TREE_CODE (_p1))
23069 : : {
23070 : 929 : case REAL_CST:
23071 : 929 : {
23072 : 929 : {
23073 : 929 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23074 : 929 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAX))
23075 : 38 : return true;
23076 : : }
23077 : 891 : break;
23078 : : }
23079 : 2266 : default:;
23080 : : }
23081 : 2266 : switch (TREE_CODE (_p0))
23082 : : {
23083 : 514 : case REAL_CST:
23084 : 514 : {
23085 : 514 : {
23086 : 514 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
23087 : 514 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAX))
23088 : 60 : return true;
23089 : : }
23090 : 454 : break;
23091 : : }
23092 : 2206 : default:;
23093 : : }
23094 : 2206 : {
23095 : 2206 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23096 : 2206 : if (gimple_simplify_608 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAX))
23097 : 30 : return true;
23098 : : }
23099 : 2176 : switch (TREE_CODE (_p0))
23100 : : {
23101 : 1557 : case SSA_NAME:
23102 : 1557 : if (gimple *_d1 = get_def (valueize, _p0))
23103 : : {
23104 : 862 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23105 : 691 : switch (gimple_assign_rhs_code (_a1))
23106 : : {
23107 : 42 : case NEGATE_EXPR:
23108 : 42 : {
23109 : 42 : tree _q20 = gimple_assign_rhs1 (_a1);
23110 : 42 : _q20 = do_valueize (valueize, _q20);
23111 : 42 : switch (TREE_CODE (_p1))
23112 : : {
23113 : 2 : case SSA_NAME:
23114 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
23115 : : {
23116 : 2 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23117 : 2 : switch (gimple_assign_rhs_code (_a2))
23118 : : {
23119 : 2 : case NEGATE_EXPR:
23120 : 2 : {
23121 : 2 : tree _q40 = gimple_assign_rhs1 (_a2);
23122 : 2 : _q40 = do_valueize (valueize, _q40);
23123 : 2 : {
23124 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
23125 : 2 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
23126 : 2 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
23127 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
23128 : : )
23129 : : {
23130 : 2 : gimple_seq *lseq = seq;
23131 : 2 : if (lseq
23132 : 1 : && (!single_use (captures[0])
23133 : 1 : || !single_use (captures[2])))
23134 : 1 : lseq = NULL;
23135 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2603;
23136 : 2 : {
23137 : 2 : res_op->set_op (NEGATE_EXPR, type, 1);
23138 : 2 : {
23139 : 2 : tree _o1[2], _r1;
23140 : 2 : _o1[0] = captures[1];
23141 : 2 : _o1[1] = captures[3];
23142 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMIN, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23143 : 2 : tem_op.resimplify (lseq, valueize);
23144 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23145 : 2 : if (!_r1) goto next_after_fail2603;
23146 : 1 : res_op->ops[0] = _r1;
23147 : : }
23148 : 1 : res_op->resimplify (lseq, valueize);
23149 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
23150 : 1 : return true;
23151 : : }
23152 : 1 : next_after_fail2603:;
23153 : : }
23154 : : }
23155 : 1 : break;
23156 : : }
23157 : : default:;
23158 : : }
23159 : : }
23160 : : break;
23161 : : default:;
23162 : : }
23163 : : break;
23164 : : }
23165 : : default:;
23166 : : }
23167 : : }
23168 : : break;
23169 : : default:;
23170 : : }
23171 : : return false;
23172 : : }
23173 : :
23174 : : bool
23175 : 0 : gimple_simplify_CFN_BUILT_IN_FMAXF32 (gimple_match_op *res_op, gimple_seq *seq,
23176 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23177 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23178 : : {
23179 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23180 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
23181 : : {
23182 : 0 : {
23183 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
23184 : 0 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23185 : 0 : return true;
23186 : : }
23187 : : }
23188 : 0 : switch (TREE_CODE (_p1))
23189 : : {
23190 : 0 : case REAL_CST:
23191 : 0 : {
23192 : 0 : {
23193 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23194 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23195 : 0 : return true;
23196 : : }
23197 : 0 : break;
23198 : : }
23199 : 0 : default:;
23200 : : }
23201 : 0 : switch (TREE_CODE (_p0))
23202 : : {
23203 : 0 : case REAL_CST:
23204 : 0 : {
23205 : 0 : {
23206 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
23207 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23208 : 0 : return true;
23209 : : }
23210 : 0 : break;
23211 : : }
23212 : 0 : default:;
23213 : : }
23214 : 0 : {
23215 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23216 : 0 : if (gimple_simplify_608 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32))
23217 : 0 : return true;
23218 : : }
23219 : 0 : switch (TREE_CODE (_p0))
23220 : : {
23221 : 0 : case SSA_NAME:
23222 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
23223 : : {
23224 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23225 : 0 : switch (gimple_assign_rhs_code (_a1))
23226 : : {
23227 : 0 : case NEGATE_EXPR:
23228 : 0 : {
23229 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23230 : 0 : _q20 = do_valueize (valueize, _q20);
23231 : 0 : switch (TREE_CODE (_p1))
23232 : : {
23233 : 0 : case SSA_NAME:
23234 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23235 : : {
23236 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23237 : 0 : switch (gimple_assign_rhs_code (_a2))
23238 : : {
23239 : 0 : case NEGATE_EXPR:
23240 : 0 : {
23241 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23242 : 0 : _q40 = do_valueize (valueize, _q40);
23243 : 0 : {
23244 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
23245 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
23246 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
23247 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
23248 : : )
23249 : : {
23250 : 0 : gimple_seq *lseq = seq;
23251 : 0 : if (lseq
23252 : 0 : && (!single_use (captures[0])
23253 : 0 : || !single_use (captures[2])))
23254 : 0 : lseq = NULL;
23255 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2606;
23256 : 0 : {
23257 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
23258 : 0 : {
23259 : 0 : tree _o1[2], _r1;
23260 : 0 : _o1[0] = captures[1];
23261 : 0 : _o1[1] = captures[3];
23262 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF32, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23263 : 0 : tem_op.resimplify (lseq, valueize);
23264 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23265 : 0 : if (!_r1) goto next_after_fail2606;
23266 : 0 : res_op->ops[0] = _r1;
23267 : : }
23268 : 0 : res_op->resimplify (lseq, valueize);
23269 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
23270 : 0 : return true;
23271 : : }
23272 : 0 : next_after_fail2606:;
23273 : : }
23274 : : }
23275 : 0 : break;
23276 : : }
23277 : : default:;
23278 : : }
23279 : : }
23280 : : break;
23281 : : default:;
23282 : : }
23283 : : break;
23284 : : }
23285 : : default:;
23286 : : }
23287 : : }
23288 : : break;
23289 : : default:;
23290 : : }
23291 : : return false;
23292 : : }
23293 : :
23294 : : bool
23295 : 0 : gimple_simplify_CFN_BUILT_IN_FMAXF64X (gimple_match_op *res_op, gimple_seq *seq,
23296 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23297 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23298 : : {
23299 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23300 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
23301 : : {
23302 : 0 : {
23303 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
23304 : 0 : if (gimple_simplify_605 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23305 : 0 : return true;
23306 : : }
23307 : : }
23308 : 0 : switch (TREE_CODE (_p1))
23309 : : {
23310 : 0 : case REAL_CST:
23311 : 0 : {
23312 : 0 : {
23313 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23314 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23315 : 0 : return true;
23316 : : }
23317 : 0 : break;
23318 : : }
23319 : 0 : default:;
23320 : : }
23321 : 0 : switch (TREE_CODE (_p0))
23322 : : {
23323 : 0 : case REAL_CST:
23324 : 0 : {
23325 : 0 : {
23326 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
23327 : 0 : if (gimple_simplify_606 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23328 : 0 : return true;
23329 : : }
23330 : 0 : break;
23331 : : }
23332 : 0 : default:;
23333 : : }
23334 : 0 : {
23335 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23336 : 0 : if (gimple_simplify_608 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X))
23337 : 0 : return true;
23338 : : }
23339 : 0 : switch (TREE_CODE (_p0))
23340 : : {
23341 : 0 : case SSA_NAME:
23342 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
23343 : : {
23344 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23345 : 0 : switch (gimple_assign_rhs_code (_a1))
23346 : : {
23347 : 0 : case NEGATE_EXPR:
23348 : 0 : {
23349 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23350 : 0 : _q20 = do_valueize (valueize, _q20);
23351 : 0 : switch (TREE_CODE (_p1))
23352 : : {
23353 : 0 : case SSA_NAME:
23354 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23355 : : {
23356 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23357 : 0 : switch (gimple_assign_rhs_code (_a2))
23358 : : {
23359 : 0 : case NEGATE_EXPR:
23360 : 0 : {
23361 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
23362 : 0 : _q40 = do_valueize (valueize, _q40);
23363 : 0 : {
23364 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
23365 : 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
23366 : 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
23367 : 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
23368 : : )
23369 : : {
23370 : 0 : gimple_seq *lseq = seq;
23371 : 0 : if (lseq
23372 : 0 : && (!single_use (captures[0])
23373 : 0 : || !single_use (captures[2])))
23374 : 0 : lseq = NULL;
23375 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2610;
23376 : 0 : {
23377 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
23378 : 0 : {
23379 : 0 : tree _o1[2], _r1;
23380 : 0 : _o1[0] = captures[1];
23381 : 0 : _o1[1] = captures[3];
23382 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF64X, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23383 : 0 : tem_op.resimplify (lseq, valueize);
23384 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23385 : 0 : if (!_r1) goto next_after_fail2610;
23386 : 0 : res_op->ops[0] = _r1;
23387 : : }
23388 : 0 : res_op->resimplify (lseq, valueize);
23389 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
23390 : 0 : return true;
23391 : : }
23392 : 0 : next_after_fail2610:;
23393 : : }
23394 : : }
23395 : 0 : break;
23396 : : }
23397 : : default:;
23398 : : }
23399 : : }
23400 : : break;
23401 : : default:;
23402 : : }
23403 : : break;
23404 : : }
23405 : : default:;
23406 : : }
23407 : : }
23408 : : break;
23409 : : default:;
23410 : : }
23411 : : return false;
23412 : : }
23413 : :
23414 : : bool
23415 : 143210 : gimple_simplify_UNORDERED_EXPR (gimple_match_op *res_op, gimple_seq *seq,
23416 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23417 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23418 : : {
23419 : 143210 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23420 : 143210 : switch (TREE_CODE (_p0))
23421 : : {
23422 : 140439 : case SSA_NAME:
23423 : 140439 : if (gimple *_d1 = get_def (valueize, _p0))
23424 : : {
23425 : 62185 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23426 : 46862 : switch (gimple_assign_rhs_code (_a1))
23427 : : {
23428 : 0 : case VEC_COND_EXPR:
23429 : 0 : {
23430 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
23431 : 0 : _q20 = do_valueize (valueize, _q20);
23432 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
23433 : 0 : _q21 = do_valueize (valueize, _q21);
23434 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
23435 : 0 : _q22 = do_valueize (valueize, _q22);
23436 : 0 : switch (TREE_CODE (_p1))
23437 : : {
23438 : 0 : case SSA_NAME:
23439 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
23440 : : {
23441 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23442 : 0 : switch (gimple_assign_rhs_code (_a2))
23443 : : {
23444 : 0 : case VEC_COND_EXPR:
23445 : 0 : {
23446 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
23447 : 0 : _q60 = do_valueize (valueize, _q60);
23448 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
23449 : 0 : _q61 = do_valueize (valueize, _q61);
23450 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
23451 : 0 : _q62 = do_valueize (valueize, _q62);
23452 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
23453 : : {
23454 : 0 : {
23455 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
23456 : 0 : if (VECTOR_TYPE_P (type)
23457 : 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
23458 : 0 : || types_match (type, TREE_TYPE (captures[2]))
23459 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
23460 : : || (optimize_vectors_before_lowering_p ()
23461 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
23462 : : )
23463 : : {
23464 : 0 : gimple_seq *lseq = seq;
23465 : 0 : if (lseq
23466 : 0 : && (!single_use (captures[0])
23467 : 0 : || !single_use (captures[4])))
23468 : 0 : lseq = NULL;
23469 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2615;
23470 : 0 : {
23471 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23472 : 0 : res_op->ops[0] = captures[1];
23473 : 0 : {
23474 : 0 : tree _o1[2], _r1;
23475 : 0 : _o1[0] = captures[2];
23476 : 0 : _o1[1] = captures[5];
23477 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNORDERED_EXPR, type, _o1[0], _o1[1]);
23478 : 0 : tem_op.resimplify (NULL, valueize);
23479 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23480 : 0 : if (!_r1) goto next_after_fail2615;
23481 : 0 : res_op->ops[1] = _r1;
23482 : : }
23483 : 0 : {
23484 : 0 : tree _o1[2], _r1;
23485 : 0 : _o1[0] = captures[3];
23486 : 0 : _o1[1] = captures[6];
23487 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNORDERED_EXPR, type, _o1[0], _o1[1]);
23488 : 0 : tem_op.resimplify (NULL, valueize);
23489 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23490 : 0 : if (!_r1) goto next_after_fail2615;
23491 : 0 : res_op->ops[2] = _r1;
23492 : : }
23493 : 0 : res_op->resimplify (lseq, valueize);
23494 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
23495 : 0 : return true;
23496 : : }
23497 : 0 : next_after_fail2615:;
23498 : : }
23499 : : }
23500 : : }
23501 : : break;
23502 : : }
23503 : : default:;
23504 : : }
23505 : : }
23506 : : break;
23507 : 0 : default:;
23508 : : }
23509 : 0 : {
23510 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
23511 : 0 : if (VECTOR_TYPE_P (type)
23512 : 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
23513 : 0 : || types_match (type, TREE_TYPE (captures[2]))
23514 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
23515 : : || (optimize_vectors_before_lowering_p ()
23516 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
23517 : : )
23518 : : {
23519 : 0 : gimple_seq *lseq = seq;
23520 : 0 : if (lseq
23521 : 0 : && (!single_use (captures[0])))
23522 : 0 : lseq = NULL;
23523 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2616;
23524 : 0 : {
23525 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23526 : 0 : res_op->ops[0] = captures[1];
23527 : 0 : {
23528 : 0 : tree _o1[2], _r1;
23529 : 0 : _o1[0] = captures[2];
23530 : 0 : _o1[1] = captures[4];
23531 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNORDERED_EXPR, type, _o1[0], _o1[1]);
23532 : 0 : tem_op.resimplify (NULL, valueize);
23533 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23534 : 0 : if (!_r1) goto next_after_fail2616;
23535 : 0 : res_op->ops[1] = _r1;
23536 : : }
23537 : 0 : {
23538 : 0 : tree _o1[2], _r1;
23539 : 0 : _o1[0] = captures[3];
23540 : 0 : _o1[1] = captures[4];
23541 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNORDERED_EXPR, type, _o1[0], _o1[1]);
23542 : 0 : tem_op.resimplify (NULL, valueize);
23543 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23544 : 0 : if (!_r1) goto next_after_fail2616;
23545 : 0 : res_op->ops[2] = _r1;
23546 : : }
23547 : 0 : res_op->resimplify (lseq, valueize);
23548 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
23549 : 0 : return true;
23550 : : }
23551 : 0 : next_after_fail2616:;
23552 : : }
23553 : : }
23554 : 0 : break;
23555 : : }
23556 : : default:;
23557 : : }
23558 : : }
23559 : : break;
23560 : 143210 : default:;
23561 : : }
23562 : 143210 : switch (TREE_CODE (_p1))
23563 : : {
23564 : 139544 : case SSA_NAME:
23565 : 139544 : if (gimple *_d1 = get_def (valueize, _p1))
23566 : : {
23567 : 61530 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23568 : 46807 : switch (gimple_assign_rhs_code (_a1))
23569 : : {
23570 : 0 : case VEC_COND_EXPR:
23571 : 0 : {
23572 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
23573 : 0 : _q30 = do_valueize (valueize, _q30);
23574 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
23575 : 0 : _q31 = do_valueize (valueize, _q31);
23576 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
23577 : 0 : _q32 = do_valueize (valueize, _q32);
23578 : 0 : {
23579 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
23580 : 0 : if (VECTOR_TYPE_P (type)
23581 : 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
23582 : 0 : || types_match (type, TREE_TYPE (captures[3]))
23583 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
23584 : : || (optimize_vectors_before_lowering_p ()
23585 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
23586 : : )
23587 : : {
23588 : 0 : gimple_seq *lseq = seq;
23589 : 0 : if (lseq
23590 : 0 : && (!single_use (captures[1])))
23591 : 0 : lseq = NULL;
23592 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2617;
23593 : 0 : {
23594 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23595 : 0 : res_op->ops[0] = captures[2];
23596 : 0 : {
23597 : 0 : tree _o1[2], _r1;
23598 : 0 : _o1[0] = captures[0];
23599 : 0 : _o1[1] = captures[3];
23600 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNORDERED_EXPR, type, _o1[0], _o1[1]);
23601 : 0 : tem_op.resimplify (NULL, valueize);
23602 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23603 : 0 : if (!_r1) goto next_after_fail2617;
23604 : 0 : res_op->ops[1] = _r1;
23605 : : }
23606 : 0 : {
23607 : 0 : tree _o1[2], _r1;
23608 : 0 : _o1[0] = captures[0];
23609 : 0 : _o1[1] = captures[4];
23610 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), UNORDERED_EXPR, type, _o1[0], _o1[1]);
23611 : 0 : tem_op.resimplify (NULL, valueize);
23612 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
23613 : 0 : if (!_r1) goto next_after_fail2617;
23614 : 0 : res_op->ops[2] = _r1;
23615 : : }
23616 : 0 : res_op->resimplify (lseq, valueize);
23617 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
23618 : 0 : return true;
23619 : : }
23620 : 0 : next_after_fail2617:;
23621 : : }
23622 : : }
23623 : 0 : break;
23624 : : }
23625 : : default:;
23626 : : }
23627 : : }
23628 : : break;
23629 : 143210 : default:;
23630 : : }
23631 : 143210 : switch (TREE_CODE (_p0))
23632 : : {
23633 : 140439 : case SSA_NAME:
23634 : 140439 : if (gimple *_d1 = get_def (valueize, _p0))
23635 : : {
23636 : 62185 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23637 : 46862 : switch (gimple_assign_rhs_code (_a1))
23638 : : {
23639 : 3 : case FLOAT_EXPR:
23640 : 3 : {
23641 : 3 : tree _q20 = gimple_assign_rhs1 (_a1);
23642 : 3 : _q20 = do_valueize (valueize, _q20);
23643 : 3 : switch (TREE_CODE (_p1))
23644 : : {
23645 : 3 : case SSA_NAME:
23646 : 3 : if (gimple *_d2 = get_def (valueize, _p1))
23647 : : {
23648 : 3 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23649 : 3 : switch (gimple_assign_rhs_code (_a2))
23650 : : {
23651 : 3 : case FLOAT_EXPR:
23652 : 3 : {
23653 : 3 : tree _q40 = gimple_assign_rhs1 (_a2);
23654 : 3 : _q40 = do_valueize (valueize, _q40);
23655 : 3 : {
23656 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
23657 : 3 : if (gimple_simplify_276 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, UNORDERED_EXPR))
23658 : 3 : return true;
23659 : : }
23660 : 0 : break;
23661 : : }
23662 : : default:;
23663 : : }
23664 : : }
23665 : : break;
23666 : : default:;
23667 : : }
23668 : : break;
23669 : : }
23670 : 120 : case NEGATE_EXPR:
23671 : 120 : {
23672 : 120 : tree _q20 = gimple_assign_rhs1 (_a1);
23673 : 120 : _q20 = do_valueize (valueize, _q20);
23674 : 120 : switch (TREE_CODE (_p1))
23675 : : {
23676 : 120 : case SSA_NAME:
23677 : 120 : if (gimple *_d2 = get_def (valueize, _p1))
23678 : : {
23679 : 120 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23680 : 120 : switch (gimple_assign_rhs_code (_a2))
23681 : : {
23682 : 120 : case NEGATE_EXPR:
23683 : 120 : {
23684 : 120 : tree _q40 = gimple_assign_rhs1 (_a2);
23685 : 120 : _q40 = do_valueize (valueize, _q40);
23686 : 120 : {
23687 : 120 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
23688 : 120 : if (gimple_simplify_279 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, UNORDERED_EXPR))
23689 : 120 : return true;
23690 : : }
23691 : 0 : break;
23692 : : }
23693 : : default:;
23694 : : }
23695 : : }
23696 : : break;
23697 : 0 : default:;
23698 : : }
23699 : 0 : if (CONSTANT_CLASS_P (_p1))
23700 : : {
23701 : 0 : {
23702 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
23703 : 0 : if (gimple_simplify_280 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, UNORDERED_EXPR))
23704 : 0 : return true;
23705 : : }
23706 : : }
23707 : : break;
23708 : : }
23709 : : default:;
23710 : : }
23711 : : }
23712 : : break;
23713 : 143087 : default:;
23714 : : }
23715 : 143087 : switch (TREE_CODE (_p1))
23716 : : {
23717 : 1015 : case REAL_CST:
23718 : 1015 : {
23719 : 1015 : {
23720 : 1015 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23721 : 1015 : if (gimple_simplify_636 (res_op, seq, valueize, type, captures, UNORDERED_EXPR))
23722 : 1 : return true;
23723 : : }
23724 : 1014 : break;
23725 : : }
23726 : 143086 : default:;
23727 : : }
23728 : 143086 : {
23729 : 143086 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23730 : 143086 : if (tree_expr_nan_p (captures[0]) || tree_expr_nan_p (captures[1])
23731 : : )
23732 : : {
23733 : 0 : gimple_seq *lseq = seq;
23734 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2618;
23735 : 0 : {
23736 : 0 : tree tem;
23737 : 0 : tem = constant_boolean_node (true, type);
23738 : 0 : res_op->set_value (tem);
23739 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1198, __FILE__, __LINE__, true);
23740 : 0 : return true;
23741 : : }
23742 : 0 : next_after_fail2618:;
23743 : : }
23744 : : else
23745 : : {
23746 : 143086 : if (!tree_expr_maybe_nan_p (captures[0]) && !tree_expr_maybe_nan_p (captures[1])
23747 : : )
23748 : : {
23749 : 0 : gimple_seq *lseq = seq;
23750 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2619;
23751 : 0 : {
23752 : 0 : tree tem;
23753 : 0 : tem = constant_boolean_node (false, type);
23754 : 0 : res_op->set_value (tem);
23755 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1199, __FILE__, __LINE__, true);
23756 : 0 : return true;
23757 : : }
23758 : 0 : next_after_fail2619:;
23759 : : }
23760 : : }
23761 : : }
23762 : 143086 : return false;
23763 : : }
23764 : :
23765 : : bool
23766 : 291156 : gimple_simplify_CFN_SUB_OVERFLOW (gimple_match_op *res_op, gimple_seq *seq,
23767 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23768 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23769 : : {
23770 : 291156 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23771 : 291156 : switch (TREE_CODE (_p0))
23772 : : {
23773 : 170837 : case SSA_NAME:
23774 : 170837 : if (gimple *_d1 = get_def (valueize, _p0))
23775 : : {
23776 : 123409 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23777 : 7330 : switch (gimple_assign_rhs_code (_a1))
23778 : : {
23779 : 3330 : CASE_CONVERT:
23780 : 3330 : {
23781 : 3330 : tree _q20 = gimple_assign_rhs1 (_a1);
23782 : 3330 : _q20 = do_valueize (valueize, _q20);
23783 : 3330 : {
23784 : 3330 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
23785 : 3330 : if (gimple_simplify_639 (res_op, seq, valueize, type, captures, CFN_SUB_OVERFLOW))
23786 : 3327 : return true;
23787 : : }
23788 : 3 : break;
23789 : : }
23790 : : default:;
23791 : : }
23792 : : }
23793 : : break;
23794 : 287829 : default:;
23795 : : }
23796 : 287829 : switch (TREE_CODE (_p1))
23797 : : {
23798 : 165464 : case SSA_NAME:
23799 : 165464 : if (gimple *_d1 = get_def (valueize, _p1))
23800 : : {
23801 : 119308 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23802 : 5598 : switch (gimple_assign_rhs_code (_a1))
23803 : : {
23804 : 3514 : CASE_CONVERT:
23805 : 3514 : {
23806 : 3514 : tree _q30 = gimple_assign_rhs1 (_a1);
23807 : 3514 : _q30 = do_valueize (valueize, _q30);
23808 : 3514 : {
23809 : 3514 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
23810 : 3514 : if (gimple_simplify_640 (res_op, seq, valueize, type, captures, CFN_SUB_OVERFLOW))
23811 : 3361 : return true;
23812 : : }
23813 : 153 : break;
23814 : : }
23815 : : default:;
23816 : : }
23817 : : }
23818 : : break;
23819 : : default:;
23820 : : }
23821 : : return false;
23822 : : }
23823 : :
23824 : : bool
23825 : 1509 : gimple_simplify_CFN_BUILT_IN_LDEXPF (gimple_match_op *res_op, gimple_seq *seq,
23826 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23827 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23828 : : {
23829 : 1509 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23830 : 1509 : if (real_zerop (_p0))
23831 : : {
23832 : 28 : {
23833 : 28 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23834 : 28 : if (gimple_simplify_652 (res_op, seq, valueize, type, captures))
23835 : 28 : return true;
23836 : : }
23837 : : }
23838 : 1481 : if (integer_zerop (_p1))
23839 : : {
23840 : 7 : {
23841 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23842 : 7 : if (gimple_simplify_653 (res_op, seq, valueize, type, captures))
23843 : 7 : return true;
23844 : : }
23845 : : }
23846 : 1474 : switch (TREE_CODE (_p0))
23847 : : {
23848 : 1080 : case REAL_CST:
23849 : 1080 : {
23850 : 1080 : {
23851 : 1080 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23852 : 1080 : if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))
23853 : : )
23854 : : {
23855 : 56 : gimple_seq *lseq = seq;
23856 : 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2644;
23857 : 56 : {
23858 : 56 : tree tem;
23859 : 56 : tem = captures[0];
23860 : 56 : res_op->set_value (tem);
23861 : 56 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1203, __FILE__, __LINE__, true);
23862 : 56 : return true;
23863 : : }
23864 : 0 : next_after_fail2644:;
23865 : : }
23866 : : }
23867 : 1024 : break;
23868 : : }
23869 : : default:;
23870 : : }
23871 : : return false;
23872 : : }
23873 : :
23874 : : bool
23875 : 1124 : gimple_simplify_CFN_BUILT_IN_SCALBLNF (gimple_match_op *res_op, gimple_seq *seq,
23876 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23877 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23878 : : {
23879 : 1124 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23880 : 1124 : if (real_zerop (_p0))
23881 : : {
23882 : 28 : {
23883 : 28 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23884 : 28 : if (gimple_simplify_652 (res_op, seq, valueize, type, captures))
23885 : 28 : return true;
23886 : : }
23887 : : }
23888 : 1096 : if (integer_zerop (_p1))
23889 : : {
23890 : 7 : {
23891 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23892 : 7 : if (gimple_simplify_653 (res_op, seq, valueize, type, captures))
23893 : 7 : return true;
23894 : : }
23895 : : }
23896 : 1089 : switch (TREE_CODE (_p0))
23897 : : {
23898 : 880 : case REAL_CST:
23899 : 880 : {
23900 : 880 : {
23901 : 880 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23902 : 880 : if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))
23903 : : )
23904 : : {
23905 : 56 : gimple_seq *lseq = seq;
23906 : 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2651;
23907 : 56 : {
23908 : 56 : tree tem;
23909 : 56 : tem = captures[0];
23910 : 56 : res_op->set_value (tem);
23911 : 56 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1203, __FILE__, __LINE__, true);
23912 : 56 : return true;
23913 : : }
23914 : 0 : next_after_fail2651:;
23915 : : }
23916 : : }
23917 : 824 : break;
23918 : : }
23919 : : default:;
23920 : : }
23921 : : return false;
23922 : : }
23923 : :
23924 : : bool
23925 : 177283 : gimple_simplify_VEC_COND_EXPR (gimple_match_op *res_op, gimple_seq *seq,
23926 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23927 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
23928 : : {
23929 : 177283 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23930 : 177283 : switch (TREE_CODE (_p0))
23931 : : {
23932 : 176784 : case SSA_NAME:
23933 : 176784 : if (gimple *_d1 = get_def (valueize, _p0))
23934 : : {
23935 : 151657 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23936 : 151062 : switch (gimple_assign_rhs_code (_a1))
23937 : : {
23938 : 30 : case VEC_COND_EXPR:
23939 : 30 : {
23940 : 30 : tree _q20 = gimple_assign_rhs1 (_a1);
23941 : 30 : _q20 = do_valueize (valueize, _q20);
23942 : 30 : tree _q21 = gimple_assign_rhs2 (_a1);
23943 : 30 : _q21 = do_valueize (valueize, _q21);
23944 : 30 : tree _q22 = gimple_assign_rhs3 (_a1);
23945 : 30 : _q22 = do_valueize (valueize, _q22);
23946 : 30 : if (integer_zerop (_q22))
23947 : : {
23948 : 0 : {
23949 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _p2 };
23950 : 0 : if (optimize_vectors_before_lowering_p () && types_match (captures[1], captures[2])
23951 : : )
23952 : : {
23953 : 0 : gimple_seq *lseq = seq;
23954 : 0 : if (lseq
23955 : 0 : && (!single_use (captures[0])))
23956 : 0 : lseq = NULL;
23957 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2710;
23958 : 0 : {
23959 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
23960 : 0 : {
23961 : 0 : tree _o1[2], _r1;
23962 : 0 : _o1[0] = captures[1];
23963 : 0 : _o1[1] = captures[2];
23964 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23965 : 0 : tem_op.resimplify (lseq, valueize);
23966 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23967 : 0 : if (!_r1) goto next_after_fail2710;
23968 : 0 : res_op->ops[0] = _r1;
23969 : : }
23970 : 0 : res_op->ops[1] = captures[3];
23971 : 0 : res_op->ops[2] = captures[4];
23972 : 0 : res_op->resimplify (lseq, valueize);
23973 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1228, __FILE__, __LINE__, true);
23974 : 0 : return true;
23975 : : }
23976 : 0 : next_after_fail2710:;
23977 : : }
23978 : : }
23979 : : }
23980 : 30 : if (integer_all_onesp (_q21))
23981 : : {
23982 : 3 : {
23983 : 3 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q22, _p1, _p2 };
23984 : 6 : if (optimize_vectors_before_lowering_p () && types_match (captures[1], captures[2])
23985 : : )
23986 : : {
23987 : 3 : gimple_seq *lseq = seq;
23988 : 3 : if (lseq
23989 : 3 : && (!single_use (captures[0])))
23990 : 0 : lseq = NULL;
23991 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2711;
23992 : 3 : {
23993 : 3 : res_op->set_op (VEC_COND_EXPR, type, 3);
23994 : 3 : {
23995 : 3 : tree _o1[2], _r1;
23996 : 3 : _o1[0] = captures[1];
23997 : 3 : _o1[1] = captures[2];
23998 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23999 : 3 : tem_op.resimplify (lseq, valueize);
24000 : 3 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24001 : 3 : if (!_r1) goto next_after_fail2711;
24002 : 3 : res_op->ops[0] = _r1;
24003 : : }
24004 : 3 : res_op->ops[1] = captures[3];
24005 : 3 : res_op->ops[2] = captures[4];
24006 : 3 : res_op->resimplify (lseq, valueize);
24007 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1229, __FILE__, __LINE__, true);
24008 : 3 : return true;
24009 : : }
24010 : 0 : next_after_fail2711:;
24011 : : }
24012 : : }
24013 : : }
24014 : 27 : if (integer_zerop (_q21))
24015 : : {
24016 : 12 : {
24017 : 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q22, _p1, _p2 };
24018 : 24 : if (optimize_vectors_before_lowering_p () && types_match (captures[1], captures[2])
24019 : : )
24020 : : {
24021 : 12 : gimple_seq *lseq = seq;
24022 : 12 : if (lseq
24023 : 12 : && (!single_use (captures[0])))
24024 : 0 : lseq = NULL;
24025 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2712;
24026 : 12 : {
24027 : 12 : res_op->set_op (VEC_COND_EXPR, type, 3);
24028 : 12 : {
24029 : 12 : tree _o1[2], _r1;
24030 : 12 : _o1[0] = captures[1];
24031 : 12 : {
24032 : 12 : tree _o2[1], _r2;
24033 : 12 : _o2[0] = captures[2];
24034 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
24035 : 12 : tem_op.resimplify (lseq, valueize);
24036 : 12 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
24037 : 12 : if (!_r2) goto next_after_fail2712;
24038 : 12 : _o1[1] = _r2;
24039 : : }
24040 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
24041 : 12 : tem_op.resimplify (lseq, valueize);
24042 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24043 : 12 : if (!_r1) goto next_after_fail2712;
24044 : 12 : res_op->ops[0] = _r1;
24045 : : }
24046 : 12 : res_op->ops[1] = captures[4];
24047 : 12 : res_op->ops[2] = captures[3];
24048 : 12 : res_op->resimplify (lseq, valueize);
24049 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1230, __FILE__, __LINE__, true);
24050 : 12 : return true;
24051 : : }
24052 : 0 : next_after_fail2712:;
24053 : : }
24054 : : }
24055 : : }
24056 : 15 : if (integer_all_onesp (_q22))
24057 : : {
24058 : 15 : {
24059 : 15 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _p2 };
24060 : 30 : if (optimize_vectors_before_lowering_p () && types_match (captures[1], captures[2])
24061 : : )
24062 : : {
24063 : 15 : gimple_seq *lseq = seq;
24064 : 15 : if (lseq
24065 : 9 : && (!single_use (captures[0])))
24066 : 6 : lseq = NULL;
24067 : 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2713;
24068 : 15 : {
24069 : 15 : res_op->set_op (VEC_COND_EXPR, type, 3);
24070 : 15 : {
24071 : 15 : tree _o1[2], _r1;
24072 : 15 : _o1[0] = captures[1];
24073 : 15 : {
24074 : 15 : tree _o2[1], _r2;
24075 : 15 : _o2[0] = captures[2];
24076 : 15 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
24077 : 15 : tem_op.resimplify (lseq, valueize);
24078 : 15 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
24079 : 15 : if (!_r2) goto next_after_fail2713;
24080 : 15 : _o1[1] = _r2;
24081 : : }
24082 : 15 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
24083 : 15 : tem_op.resimplify (lseq, valueize);
24084 : 15 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24085 : 15 : if (!_r1) goto next_after_fail2713;
24086 : 9 : res_op->ops[0] = _r1;
24087 : : }
24088 : 9 : res_op->ops[1] = captures[4];
24089 : 9 : res_op->ops[2] = captures[3];
24090 : 9 : res_op->resimplify (lseq, valueize);
24091 : 9 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1231, __FILE__, __LINE__, true);
24092 : 9 : return true;
24093 : : }
24094 : 6 : next_after_fail2713:;
24095 : : }
24096 : : }
24097 : : }
24098 : : break;
24099 : : }
24100 : 22498 : case LT_EXPR:
24101 : 22498 : {
24102 : 22498 : tree _q20 = gimple_assign_rhs1 (_a1);
24103 : 22498 : _q20 = do_valueize (valueize, _q20);
24104 : 22498 : tree _q21 = gimple_assign_rhs2 (_a1);
24105 : 22498 : _q21 = do_valueize (valueize, _q21);
24106 : 22498 : switch (TREE_CODE (_q20))
24107 : : {
24108 : 22498 : case SSA_NAME:
24109 : 22498 : if (gimple *_d2 = get_def (valueize, _q20))
24110 : : {
24111 : 19989 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24112 : 24574 : switch (gimple_assign_rhs_code (_a2))
24113 : : {
24114 : 3273 : case VIEW_CONVERT_EXPR:
24115 : 3273 : {
24116 : 3273 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
24117 : 3273 : if ((TREE_CODE (_q30) == SSA_NAME
24118 : 3273 : || is_gimple_min_invariant (_q30)))
24119 : : {
24120 : 3273 : _q30 = do_valueize (valueize, _q30);
24121 : 3273 : switch (TREE_CODE (_q30))
24122 : : {
24123 : 3273 : case SSA_NAME:
24124 : 3273 : if (gimple *_d3 = get_def (valueize, _q30))
24125 : : {
24126 : 3248 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
24127 : 1349 : switch (gimple_assign_rhs_code (_a3))
24128 : : {
24129 : 97 : case VEC_COND_EXPR:
24130 : 97 : {
24131 : 97 : tree _q40 = gimple_assign_rhs1 (_a3);
24132 : 97 : _q40 = do_valueize (valueize, _q40);
24133 : 97 : tree _q41 = gimple_assign_rhs2 (_a3);
24134 : 97 : _q41 = do_valueize (valueize, _q41);
24135 : 97 : tree _q42 = gimple_assign_rhs3 (_a3);
24136 : 97 : _q42 = do_valueize (valueize, _q42);
24137 : 97 : switch (TREE_CODE (_q40))
24138 : : {
24139 : 97 : case SSA_NAME:
24140 : 97 : if (gimple *_d4 = get_def (valueize, _q40))
24141 : : {
24142 : 97 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
24143 : 97 : switch (gimple_assign_rhs_code (_a4))
24144 : : {
24145 : 83 : case LT_EXPR:
24146 : 83 : {
24147 : 83 : tree _q50 = gimple_assign_rhs1 (_a4);
24148 : 83 : _q50 = do_valueize (valueize, _q50);
24149 : 83 : tree _q51 = gimple_assign_rhs2 (_a4);
24150 : 83 : _q51 = do_valueize (valueize, _q51);
24151 : 83 : if (integer_all_onesp (_q41))
24152 : : {
24153 : 2 : if (integer_zerop (_q42))
24154 : : {
24155 : 2 : if (integer_zerop (_q21))
24156 : : {
24157 : 2 : {
24158 : 2 : tree captures[7] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q50, _q51, _p1, _p2 };
24159 : 2 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, LT_EXPR))
24160 : 2 : return true;
24161 : : }
24162 : : }
24163 : : }
24164 : : }
24165 : : break;
24166 : : }
24167 : 0 : case LE_EXPR:
24168 : 0 : {
24169 : 0 : tree _q50 = gimple_assign_rhs1 (_a4);
24170 : 0 : _q50 = do_valueize (valueize, _q50);
24171 : 0 : tree _q51 = gimple_assign_rhs2 (_a4);
24172 : 0 : _q51 = do_valueize (valueize, _q51);
24173 : 0 : if (integer_all_onesp (_q41))
24174 : : {
24175 : 0 : if (integer_zerop (_q42))
24176 : : {
24177 : 0 : if (integer_zerop (_q21))
24178 : : {
24179 : 0 : {
24180 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q50, _q51, _p1, _p2 };
24181 : 0 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, LE_EXPR))
24182 : 0 : return true;
24183 : : }
24184 : : }
24185 : : }
24186 : : }
24187 : : break;
24188 : : }
24189 : 0 : case EQ_EXPR:
24190 : 0 : {
24191 : 0 : tree _q50 = gimple_assign_rhs1 (_a4);
24192 : 0 : _q50 = do_valueize (valueize, _q50);
24193 : 0 : tree _q51 = gimple_assign_rhs2 (_a4);
24194 : 0 : _q51 = do_valueize (valueize, _q51);
24195 : 0 : if (tree_swap_operands_p (_q50, _q51))
24196 : 0 : std::swap (_q50, _q51);
24197 : 0 : if (integer_all_onesp (_q41))
24198 : : {
24199 : 0 : if (integer_zerop (_q42))
24200 : : {
24201 : 0 : if (integer_zerop (_q21))
24202 : : {
24203 : 0 : {
24204 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q50, _q51, _p1, _p2 };
24205 : 0 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, EQ_EXPR))
24206 : 0 : return true;
24207 : : }
24208 : : }
24209 : : }
24210 : : }
24211 : 177042 : break;
24212 : : }
24213 : 0 : case NE_EXPR:
24214 : 0 : {
24215 : 0 : tree _q50 = gimple_assign_rhs1 (_a4);
24216 : 0 : _q50 = do_valueize (valueize, _q50);
24217 : 0 : tree _q51 = gimple_assign_rhs2 (_a4);
24218 : 0 : _q51 = do_valueize (valueize, _q51);
24219 : 0 : if (tree_swap_operands_p (_q50, _q51))
24220 : 0 : std::swap (_q50, _q51);
24221 : 0 : if (integer_all_onesp (_q41))
24222 : : {
24223 : 0 : if (integer_zerop (_q42))
24224 : : {
24225 : 0 : if (integer_zerop (_q21))
24226 : : {
24227 : 0 : {
24228 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q50, _q51, _p1, _p2 };
24229 : 0 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, NE_EXPR))
24230 : 0 : return true;
24231 : : }
24232 : : }
24233 : : }
24234 : : }
24235 : 177042 : break;
24236 : : }
24237 : 12 : case GE_EXPR:
24238 : 12 : {
24239 : 12 : tree _q50 = gimple_assign_rhs1 (_a4);
24240 : 12 : _q50 = do_valueize (valueize, _q50);
24241 : 12 : tree _q51 = gimple_assign_rhs2 (_a4);
24242 : 12 : _q51 = do_valueize (valueize, _q51);
24243 : 12 : if (integer_all_onesp (_q41))
24244 : : {
24245 : 12 : if (integer_zerop (_q42))
24246 : : {
24247 : 12 : if (integer_zerop (_q21))
24248 : : {
24249 : 12 : {
24250 : 12 : tree captures[7] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q50, _q51, _p1, _p2 };
24251 : 12 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, GE_EXPR))
24252 : 8 : return true;
24253 : : }
24254 : : }
24255 : : }
24256 : : }
24257 : : break;
24258 : : }
24259 : 2 : case GT_EXPR:
24260 : 2 : {
24261 : 2 : tree _q50 = gimple_assign_rhs1 (_a4);
24262 : 2 : _q50 = do_valueize (valueize, _q50);
24263 : 2 : tree _q51 = gimple_assign_rhs2 (_a4);
24264 : 2 : _q51 = do_valueize (valueize, _q51);
24265 : 2 : if (integer_all_onesp (_q41))
24266 : : {
24267 : 2 : if (integer_zerop (_q42))
24268 : : {
24269 : 2 : if (integer_zerop (_q21))
24270 : : {
24271 : 2 : {
24272 : 2 : tree captures[7] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q50, _q51, _p1, _p2 };
24273 : 2 : if (gimple_simplify_616 (res_op, seq, valueize, type, captures, GT_EXPR))
24274 : 2 : return true;
24275 : : }
24276 : : }
24277 : : }
24278 : : }
24279 : : break;
24280 : : }
24281 : : default:;
24282 : : }
24283 : : }
24284 : : break;
24285 : : default:;
24286 : : }
24287 : : break;
24288 : : }
24289 : : default:;
24290 : : }
24291 : : }
24292 : : break;
24293 : : default:;
24294 : : }
24295 : : }
24296 : : break;
24297 : : }
24298 : : default:;
24299 : : }
24300 : : }
24301 : : break;
24302 : : default:;
24303 : : }
24304 : : break;
24305 : : }
24306 : : default:;
24307 : : }
24308 : : }
24309 : : break;
24310 : 499 : case VECTOR_CST:
24311 : 499 : {
24312 : 499 : {
24313 : 499 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
24314 : 499 : if (integer_all_onesp (captures[0])
24315 : : )
24316 : : {
24317 : 15 : gimple_seq *lseq = seq;
24318 : 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2714;
24319 : 15 : {
24320 : 15 : tree tem;
24321 : 15 : tem = captures[1];
24322 : 15 : res_op->set_value (tem);
24323 : 15 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1232, __FILE__, __LINE__, true);
24324 : 15 : return true;
24325 : : }
24326 : 0 : next_after_fail2714:;
24327 : : }
24328 : : else
24329 : : {
24330 : 484 : if (integer_zerop (captures[0])
24331 : : )
24332 : : {
24333 : 190 : gimple_seq *lseq = seq;
24334 : 190 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2715;
24335 : 190 : {
24336 : 190 : tree tem;
24337 : 190 : tem = captures[2];
24338 : 190 : res_op->set_value (tem);
24339 : 190 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1233, __FILE__, __LINE__, true);
24340 : 190 : return true;
24341 : : }
24342 : 0 : next_after_fail2715:;
24343 : : }
24344 : : }
24345 : : }
24346 : 294 : break;
24347 : : }
24348 : 177042 : default:;
24349 : : }
24350 : 177042 : switch (TREE_CODE (_p1))
24351 : : {
24352 : 40908 : case SSA_NAME:
24353 : 40908 : if (gimple *_d1 = get_def (valueize, _p1))
24354 : : {
24355 : 34589 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24356 : 34898 : switch (gimple_assign_rhs_code (_a1))
24357 : : {
24358 : 3780 : case VEC_COND_EXPR:
24359 : 3780 : {
24360 : 3780 : tree _q30 = gimple_assign_rhs1 (_a1);
24361 : 3780 : _q30 = do_valueize (valueize, _q30);
24362 : 3780 : tree _q31 = gimple_assign_rhs2 (_a1);
24363 : 3780 : _q31 = do_valueize (valueize, _q31);
24364 : 3780 : tree _q32 = gimple_assign_rhs3 (_a1);
24365 : 3780 : _q32 = do_valueize (valueize, _q32);
24366 : 3780 : if ((_p2 == _q32 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q32, 0) && types_match (_p2, _q32)))
24367 : : {
24368 : 754 : {
24369 : 754 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
24370 : 1039 : if (optimize_vectors_before_lowering_p () && types_match (captures[0], captures[2])
24371 : : )
24372 : : {
24373 : 285 : gimple_seq *lseq = seq;
24374 : 285 : if (lseq
24375 : 29 : && (!single_use (captures[1])))
24376 : 262 : lseq = NULL;
24377 : 285 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2716;
24378 : 285 : {
24379 : 285 : res_op->set_op (VEC_COND_EXPR, type, 3);
24380 : 285 : {
24381 : 285 : tree _o1[2], _r1;
24382 : 285 : _o1[0] = captures[0];
24383 : 285 : _o1[1] = captures[2];
24384 : 285 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
24385 : 285 : tem_op.resimplify (lseq, valueize);
24386 : 285 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24387 : 285 : if (!_r1) goto next_after_fail2716;
24388 : 47 : res_op->ops[0] = _r1;
24389 : : }
24390 : 47 : res_op->ops[1] = captures[3];
24391 : 47 : res_op->ops[2] = captures[4];
24392 : 47 : res_op->resimplify (lseq, valueize);
24393 : 47 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1234, __FILE__, __LINE__, true);
24394 : 47 : return true;
24395 : : }
24396 : 707 : next_after_fail2716:;
24397 : : }
24398 : : }
24399 : : }
24400 : : break;
24401 : : }
24402 : : default:;
24403 : : }
24404 : : }
24405 : : break;
24406 : 176995 : default:;
24407 : : }
24408 : 176995 : switch (TREE_CODE (_p2))
24409 : : {
24410 : 42682 : case SSA_NAME:
24411 : 42682 : if (gimple *_d1 = get_def (valueize, _p2))
24412 : : {
24413 : 36685 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24414 : 38415 : switch (gimple_assign_rhs_code (_a1))
24415 : : {
24416 : 3818 : case VEC_COND_EXPR:
24417 : 3818 : {
24418 : 3818 : tree _q40 = gimple_assign_rhs1 (_a1);
24419 : 3818 : _q40 = do_valueize (valueize, _q40);
24420 : 3818 : tree _q41 = gimple_assign_rhs2 (_a1);
24421 : 3818 : _q41 = do_valueize (valueize, _q41);
24422 : 3818 : tree _q42 = gimple_assign_rhs3 (_a1);
24423 : 3818 : _q42 = do_valueize (valueize, _q42);
24424 : 3818 : if ((_q41 == _p1 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p1, 0) && types_match (_q41, _p1)))
24425 : : {
24426 : 644 : {
24427 : 644 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q42 };
24428 : 775 : if (optimize_vectors_before_lowering_p () && types_match (captures[0], captures[3])
24429 : : )
24430 : : {
24431 : 131 : gimple_seq *lseq = seq;
24432 : 131 : if (lseq
24433 : 45 : && (!single_use (captures[2])))
24434 : 97 : lseq = NULL;
24435 : 131 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2717;
24436 : 131 : {
24437 : 131 : res_op->set_op (VEC_COND_EXPR, type, 3);
24438 : 131 : {
24439 : 131 : tree _o1[2], _r1;
24440 : 131 : _o1[0] = captures[0];
24441 : 131 : _o1[1] = captures[3];
24442 : 131 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
24443 : 131 : tem_op.resimplify (lseq, valueize);
24444 : 131 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24445 : 131 : if (!_r1) goto next_after_fail2717;
24446 : 58 : res_op->ops[0] = _r1;
24447 : : }
24448 : 58 : res_op->ops[1] = captures[1];
24449 : 58 : res_op->ops[2] = captures[4];
24450 : 58 : res_op->resimplify (lseq, valueize);
24451 : 58 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1235, __FILE__, __LINE__, true);
24452 : 58 : return true;
24453 : : }
24454 : 586 : next_after_fail2717:;
24455 : : }
24456 : : }
24457 : : }
24458 : : break;
24459 : : }
24460 : : default:;
24461 : : }
24462 : : }
24463 : : break;
24464 : 176937 : default:;
24465 : : }
24466 : 176937 : switch (TREE_CODE (_p1))
24467 : : {
24468 : 40852 : case SSA_NAME:
24469 : 40852 : if (gimple *_d1 = get_def (valueize, _p1))
24470 : : {
24471 : 34542 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24472 : 34851 : switch (gimple_assign_rhs_code (_a1))
24473 : : {
24474 : 3733 : case VEC_COND_EXPR:
24475 : 3733 : {
24476 : 3733 : tree _q30 = gimple_assign_rhs1 (_a1);
24477 : 3733 : _q30 = do_valueize (valueize, _q30);
24478 : 3733 : tree _q31 = gimple_assign_rhs2 (_a1);
24479 : 3733 : _q31 = do_valueize (valueize, _q31);
24480 : 3733 : tree _q32 = gimple_assign_rhs3 (_a1);
24481 : 3733 : _q32 = do_valueize (valueize, _q32);
24482 : 3733 : if ((_p2 == _q31 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q31, 0) && types_match (_p2, _q31)))
24483 : : {
24484 : 15 : {
24485 : 15 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
24486 : 30 : if (optimize_vectors_before_lowering_p () && types_match (captures[0], captures[2])
24487 : : )
24488 : : {
24489 : 15 : gimple_seq *lseq = seq;
24490 : 15 : if (lseq
24491 : 9 : && (!single_use (captures[1])))
24492 : 6 : lseq = NULL;
24493 : 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2718;
24494 : 15 : {
24495 : 15 : res_op->set_op (VEC_COND_EXPR, type, 3);
24496 : 15 : {
24497 : 15 : tree _o1[2], _r1;
24498 : 15 : {
24499 : 15 : tree _o2[1], _r2;
24500 : 15 : _o2[0] = captures[0];
24501 : 15 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
24502 : 15 : tem_op.resimplify (lseq, valueize);
24503 : 15 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
24504 : 15 : if (!_r2) goto next_after_fail2718;
24505 : 9 : _o1[0] = _r2;
24506 : : }
24507 : 9 : _o1[1] = captures[2];
24508 : 9 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
24509 : 9 : tem_op.resimplify (lseq, valueize);
24510 : 9 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24511 : 9 : if (!_r1) goto next_after_fail2718;
24512 : 9 : res_op->ops[0] = _r1;
24513 : : }
24514 : 9 : res_op->ops[1] = captures[3];
24515 : 9 : res_op->ops[2] = captures[4];
24516 : 9 : res_op->resimplify (lseq, valueize);
24517 : 9 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1236, __FILE__, __LINE__, true);
24518 : 9 : return true;
24519 : : }
24520 : 6 : next_after_fail2718:;
24521 : : }
24522 : : }
24523 : : }
24524 : : break;
24525 : : }
24526 : : default:;
24527 : : }
24528 : : }
24529 : : break;
24530 : 176928 : default:;
24531 : : }
24532 : 176928 : switch (TREE_CODE (_p2))
24533 : : {
24534 : 42624 : case SSA_NAME:
24535 : 42624 : if (gimple *_d1 = get_def (valueize, _p2))
24536 : : {
24537 : 36627 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24538 : 38357 : switch (gimple_assign_rhs_code (_a1))
24539 : : {
24540 : 3760 : case VEC_COND_EXPR:
24541 : 3760 : {
24542 : 3760 : tree _q40 = gimple_assign_rhs1 (_a1);
24543 : 3760 : _q40 = do_valueize (valueize, _q40);
24544 : 3760 : tree _q41 = gimple_assign_rhs2 (_a1);
24545 : 3760 : _q41 = do_valueize (valueize, _q41);
24546 : 3760 : tree _q42 = gimple_assign_rhs3 (_a1);
24547 : 3760 : _q42 = do_valueize (valueize, _q42);
24548 : 3760 : if ((_q42 == _p1 && ! TREE_SIDE_EFFECTS (_q42)) || (operand_equal_p (_q42, _p1, 0) && types_match (_q42, _p1)))
24549 : : {
24550 : 0 : {
24551 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
24552 : 0 : if (optimize_vectors_before_lowering_p () && types_match (captures[0], captures[3])
24553 : : )
24554 : : {
24555 : 0 : gimple_seq *lseq = seq;
24556 : 0 : if (lseq
24557 : 0 : && (!single_use (captures[2])))
24558 : 0 : lseq = NULL;
24559 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2719;
24560 : 0 : {
24561 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
24562 : 0 : {
24563 : 0 : tree _o1[2], _r1;
24564 : 0 : {
24565 : 0 : tree _o2[1], _r2;
24566 : 0 : _o2[0] = captures[0];
24567 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
24568 : 0 : tem_op.resimplify (lseq, valueize);
24569 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
24570 : 0 : if (!_r2) goto next_after_fail2719;
24571 : 0 : _o1[0] = _r2;
24572 : : }
24573 : 0 : _o1[1] = captures[3];
24574 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
24575 : 0 : tem_op.resimplify (lseq, valueize);
24576 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
24577 : 0 : if (!_r1) goto next_after_fail2719;
24578 : 0 : res_op->ops[0] = _r1;
24579 : : }
24580 : 0 : res_op->ops[1] = captures[4];
24581 : 0 : res_op->ops[2] = captures[1];
24582 : 0 : res_op->resimplify (lseq, valueize);
24583 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1237, __FILE__, __LINE__, true);
24584 : 0 : return true;
24585 : : }
24586 : 0 : next_after_fail2719:;
24587 : : }
24588 : : }
24589 : : }
24590 : : break;
24591 : : }
24592 : : default:;
24593 : : }
24594 : : }
24595 : : break;
24596 : 176928 : default:;
24597 : : }
24598 : 176928 : switch (TREE_CODE (_p1))
24599 : : {
24600 : 135496 : case VECTOR_CST:
24601 : 135496 : {
24602 : 135496 : switch (TREE_CODE (_p2))
24603 : : {
24604 : 129698 : case VECTOR_CST:
24605 : 129698 : {
24606 : 129698 : {
24607 : 129698 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
24608 : 129698 : if (VECTOR_BOOLEAN_TYPE_P (type)
24609 : 129880 : && types_match (type, TREE_TYPE (captures[0]))
24610 : : )
24611 : : {
24612 : 182 : if (integer_zerop (captures[1]) && integer_all_onesp (captures[2])
24613 : : )
24614 : : {
24615 : 49 : gimple_seq *lseq = seq;
24616 : 49 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2720;
24617 : 49 : {
24618 : 49 : res_op->set_op (BIT_NOT_EXPR, type, 1);
24619 : 49 : res_op->ops[0] = captures[0];
24620 : 49 : res_op->resimplify (lseq, valueize);
24621 : 49 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1238, __FILE__, __LINE__, true);
24622 : 49 : return true;
24623 : : }
24624 : 0 : next_after_fail2720:;
24625 : : }
24626 : : else
24627 : : {
24628 : 133 : if (integer_all_onesp (captures[1]) && integer_zerop (captures[2])
24629 : : )
24630 : : {
24631 : 68 : gimple_seq *lseq = seq;
24632 : 68 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2721;
24633 : 68 : {
24634 : 68 : tree tem;
24635 : 68 : tem = captures[0];
24636 : 68 : res_op->set_value (tem);
24637 : 68 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1239, __FILE__, __LINE__, true);
24638 : 68 : return true;
24639 : : }
24640 : 0 : next_after_fail2721:;
24641 : : }
24642 : : }
24643 : : }
24644 : : }
24645 : 129581 : break;
24646 : : }
24647 : : default:;
24648 : : }
24649 : : break;
24650 : : }
24651 : 176811 : default:;
24652 : : }
24653 : 176811 : switch (TREE_CODE (_p0))
24654 : : {
24655 : 176517 : case SSA_NAME:
24656 : 176517 : if (gimple *_d1 = get_def (valueize, _p0))
24657 : : {
24658 : 151402 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24659 : 150807 : switch (gimple_assign_rhs_code (_a1))
24660 : : {
24661 : 22445 : case LT_EXPR:
24662 : 22445 : {
24663 : 22445 : tree _q20 = gimple_assign_rhs1 (_a1);
24664 : 22445 : _q20 = do_valueize (valueize, _q20);
24665 : 22445 : tree _q21 = gimple_assign_rhs2 (_a1);
24666 : 22445 : _q21 = do_valueize (valueize, _q21);
24667 : 22445 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24668 : : {
24669 : 5027 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24670 : : {
24671 : 4704 : {
24672 : 4704 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24673 : 4704 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, LT_EXPR, MIN_EXPR, MIN_EXPR))
24674 : 56 : return true;
24675 : : }
24676 : : }
24677 : : }
24678 : 22389 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24679 : : {
24680 : 1887 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24681 : : {
24682 : 1779 : {
24683 : 1779 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24684 : 1779 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, LT_EXPR, MAX_EXPR, MAX_EXPR))
24685 : 2 : return true;
24686 : : }
24687 : : }
24688 : : }
24689 : 22387 : if (integer_zerop (_q21))
24690 : : {
24691 : 6464 : if (integer_all_onesp (_p1))
24692 : : {
24693 : 1099 : if (integer_zerop (_p2))
24694 : : {
24695 : 1089 : {
24696 : 1089 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
24697 : 2178 : if (VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[0]))
24698 : 1089 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
24699 : 1089 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
24700 : 2178 : && target_supports_op_p (TREE_TYPE (captures[0]), RSHIFT_EXPR, optab_scalar)
24701 : : )
24702 : : {
24703 : 825 : {
24704 : 825 : unsigned int prec = element_precision (TREE_TYPE (captures[0]));
24705 : 825 : gimple_seq *lseq = seq;
24706 : 825 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2722;
24707 : 825 : {
24708 : 825 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
24709 : 825 : {
24710 : 825 : tree _o1[2], _r1;
24711 : 825 : _o1[0] = captures[0];
24712 : 825 : _o1[1] = build_int_cst (integer_type_node, prec - 1);
24713 : 825 : (*res_op).set_op (RSHIFT_EXPR, TREE_TYPE (_o1[0]), 2);
24714 : 825 : (*res_op).ops[0] = _o1[0];
24715 : 825 : (*res_op).ops[1] = _o1[1];
24716 : 825 : (*res_op).resimplify (lseq, valueize);
24717 : : }
24718 : 825 : if (type != res_op->type
24719 : 825 : && !useless_type_conversion_p (type, res_op->type))
24720 : : {
24721 : 354 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2722;
24722 : 101 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
24723 : 101 : res_op->resimplify (lseq, valueize);
24724 : : }
24725 : 572 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1240, __FILE__, __LINE__, true);
24726 : 572 : return true;
24727 : : }
24728 : : next_after_fail2722:;
24729 : : }
24730 : : }
24731 : : }
24732 : : }
24733 : : }
24734 : 5892 : if (integer_onep (_p1))
24735 : : {
24736 : 598 : if (integer_zerop (_p2))
24737 : : {
24738 : 551 : {
24739 : 551 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
24740 : 1102 : if (VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[0]))
24741 : 551 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
24742 : 1102 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
24743 : : )
24744 : : {
24745 : 551 : {
24746 : 551 : unsigned int prec = element_precision (TREE_TYPE (captures[0]));
24747 : 551 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
24748 : 551 : if (target_supports_op_p (utype, RSHIFT_EXPR, optab_scalar)
24749 : : )
24750 : : {
24751 : 524 : gimple_seq *lseq = seq;
24752 : 524 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2723;
24753 : 524 : {
24754 : 524 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
24755 : 524 : {
24756 : 524 : tree _o1[2], _r1;
24757 : 524 : {
24758 : 524 : tree _o2[1], _r2;
24759 : 524 : _o2[0] = captures[0];
24760 : 524 : if (utype != TREE_TYPE (_o2[0]) /* XXX */
24761 : 524 : && !useless_type_conversion_p (utype, TREE_TYPE (_o2[0])))
24762 : : {
24763 : 524 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, _o2[0]);
24764 : 524 : tem_op.resimplify (lseq, valueize);
24765 : 524 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
24766 : 524 : if (!_r2) goto next_after_fail2723;
24767 : : }
24768 : : else
24769 : : _r2 = _o2[0];
24770 : 174 : _o1[0] = _r2;
24771 : : }
24772 : 174 : _o1[1] = build_int_cst (integer_type_node, prec - 1);
24773 : 174 : (*res_op).set_op (RSHIFT_EXPR, TREE_TYPE (_o1[0]), 2);
24774 : 174 : (*res_op).ops[0] = _o1[0];
24775 : 174 : (*res_op).ops[1] = _o1[1];
24776 : 174 : (*res_op).resimplify (lseq, valueize);
24777 : : }
24778 : 174 : if (type != res_op->type
24779 : 174 : && !useless_type_conversion_p (type, res_op->type))
24780 : : {
24781 : 146 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2723;
24782 : 107 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
24783 : 107 : res_op->resimplify (lseq, valueize);
24784 : : }
24785 : 135 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1241, __FILE__, __LINE__, true);
24786 : 135 : return true;
24787 : : }
24788 : : next_after_fail2723:;
24789 : : }
24790 : : }
24791 : : }
24792 : : }
24793 : : }
24794 : : }
24795 : : }
24796 : : break;
24797 : : }
24798 : 9270 : case LE_EXPR:
24799 : 9270 : {
24800 : 9270 : tree _q20 = gimple_assign_rhs1 (_a1);
24801 : 9270 : _q20 = do_valueize (valueize, _q20);
24802 : 9270 : tree _q21 = gimple_assign_rhs2 (_a1);
24803 : 9270 : _q21 = do_valueize (valueize, _q21);
24804 : 9270 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24805 : : {
24806 : 271 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24807 : : {
24808 : 0 : {
24809 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24810 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, LE_EXPR, MIN_EXPR, MIN_EXPR))
24811 : 0 : return true;
24812 : : }
24813 : : }
24814 : : }
24815 : 9270 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24816 : : {
24817 : 31 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24818 : : {
24819 : 0 : {
24820 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24821 : 0 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, LE_EXPR, MAX_EXPR, MAX_EXPR))
24822 : 0 : return true;
24823 : : }
24824 : : }
24825 : : }
24826 : : break;
24827 : : }
24828 : 142 : case UNGT_EXPR:
24829 : 142 : {
24830 : 142 : tree _q20 = gimple_assign_rhs1 (_a1);
24831 : 142 : _q20 = do_valueize (valueize, _q20);
24832 : 142 : tree _q21 = gimple_assign_rhs2 (_a1);
24833 : 142 : _q21 = do_valueize (valueize, _q21);
24834 : 142 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24835 : : {
24836 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24837 : : {
24838 : 0 : {
24839 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24840 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, UNGT_EXPR, MIN_EXPR, MIN_EXPR))
24841 : 0 : return true;
24842 : : }
24843 : : }
24844 : : }
24845 : 142 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24846 : : {
24847 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24848 : : {
24849 : 0 : {
24850 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24851 : 0 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, UNGT_EXPR, MAX_EXPR, MAX_EXPR))
24852 : 0 : return true;
24853 : : }
24854 : : }
24855 : : }
24856 : : break;
24857 : : }
24858 : 112 : case UNGE_EXPR:
24859 : 112 : {
24860 : 112 : tree _q20 = gimple_assign_rhs1 (_a1);
24861 : 112 : _q20 = do_valueize (valueize, _q20);
24862 : 112 : tree _q21 = gimple_assign_rhs2 (_a1);
24863 : 112 : _q21 = do_valueize (valueize, _q21);
24864 : 112 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24865 : : {
24866 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24867 : : {
24868 : 0 : {
24869 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24870 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, UNGE_EXPR, MIN_EXPR, MIN_EXPR))
24871 : 0 : return true;
24872 : : }
24873 : : }
24874 : : }
24875 : 112 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24876 : : {
24877 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24878 : : {
24879 : 0 : {
24880 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24881 : 0 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, UNGE_EXPR, MAX_EXPR, MAX_EXPR))
24882 : 0 : return true;
24883 : : }
24884 : : }
24885 : : }
24886 : : break;
24887 : : }
24888 : 17824 : case GT_EXPR:
24889 : 17824 : {
24890 : 17824 : tree _q20 = gimple_assign_rhs1 (_a1);
24891 : 17824 : _q20 = do_valueize (valueize, _q20);
24892 : 17824 : tree _q21 = gimple_assign_rhs2 (_a1);
24893 : 17824 : _q21 = do_valueize (valueize, _q21);
24894 : 17824 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24895 : : {
24896 : 4729 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24897 : : {
24898 : 4690 : {
24899 : 4690 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24900 : 4690 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, GT_EXPR, MAX_EXPR, MAX_EXPR))
24901 : 3 : return true;
24902 : : }
24903 : : }
24904 : : }
24905 : 17821 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24906 : : {
24907 : 1303 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24908 : : {
24909 : 1259 : {
24910 : 1259 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24911 : 1259 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, GT_EXPR, MIN_EXPR, MIN_EXPR))
24912 : 2 : return true;
24913 : : }
24914 : : }
24915 : : }
24916 : : break;
24917 : : }
24918 : 9362 : case GE_EXPR:
24919 : 9362 : {
24920 : 9362 : tree _q20 = gimple_assign_rhs1 (_a1);
24921 : 9362 : _q20 = do_valueize (valueize, _q20);
24922 : 9362 : tree _q21 = gimple_assign_rhs2 (_a1);
24923 : 9362 : _q21 = do_valueize (valueize, _q21);
24924 : 9362 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24925 : : {
24926 : 376 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24927 : : {
24928 : 0 : {
24929 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24930 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, GE_EXPR, MAX_EXPR, MAX_EXPR))
24931 : 0 : return true;
24932 : : }
24933 : : }
24934 : : }
24935 : 9362 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24936 : : {
24937 : 53 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24938 : : {
24939 : 0 : {
24940 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24941 : 0 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, GE_EXPR, MIN_EXPR, MIN_EXPR))
24942 : 0 : return true;
24943 : : }
24944 : : }
24945 : : }
24946 : : break;
24947 : : }
24948 : 142 : case UNLT_EXPR:
24949 : 142 : {
24950 : 142 : tree _q20 = gimple_assign_rhs1 (_a1);
24951 : 142 : _q20 = do_valueize (valueize, _q20);
24952 : 142 : tree _q21 = gimple_assign_rhs2 (_a1);
24953 : 142 : _q21 = do_valueize (valueize, _q21);
24954 : 142 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24955 : : {
24956 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24957 : : {
24958 : 0 : {
24959 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24960 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, UNLT_EXPR, MAX_EXPR, MAX_EXPR))
24961 : 0 : return true;
24962 : : }
24963 : : }
24964 : : }
24965 : 142 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24966 : : {
24967 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24968 : : {
24969 : 0 : {
24970 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24971 : 0 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, UNLT_EXPR, MIN_EXPR, MIN_EXPR))
24972 : 0 : return true;
24973 : : }
24974 : : }
24975 : : }
24976 : : break;
24977 : : }
24978 : 172 : case UNLE_EXPR:
24979 : 172 : {
24980 : 172 : tree _q20 = gimple_assign_rhs1 (_a1);
24981 : 172 : _q20 = do_valueize (valueize, _q20);
24982 : 172 : tree _q21 = gimple_assign_rhs2 (_a1);
24983 : 172 : _q21 = do_valueize (valueize, _q21);
24984 : 172 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
24985 : : {
24986 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
24987 : : {
24988 : 0 : {
24989 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
24990 : 0 : if (gimple_simplify_617 (res_op, seq, valueize, type, captures, UNLE_EXPR, MAX_EXPR, MAX_EXPR))
24991 : 0 : return true;
24992 : : }
24993 : : }
24994 : : }
24995 : 172 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
24996 : : {
24997 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
24998 : : {
24999 : 0 : {
25000 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
25001 : 0 : if (gimple_simplify_618 (res_op, seq, valueize, type, captures, UNLE_EXPR, MIN_EXPR, MIN_EXPR))
25002 : 0 : return true;
25003 : : }
25004 : : }
25005 : : }
25006 : : break;
25007 : : }
25008 : 18996 : case NE_EXPR:
25009 : 18996 : {
25010 : 18996 : tree _q20 = gimple_assign_rhs1 (_a1);
25011 : 18996 : _q20 = do_valueize (valueize, _q20);
25012 : 18996 : tree _q21 = gimple_assign_rhs2 (_a1);
25013 : 18996 : _q21 = do_valueize (valueize, _q21);
25014 : 18996 : if (tree_swap_operands_p (_q20, _q21))
25015 : 3671 : std::swap (_q20, _q21);
25016 : 18996 : switch (TREE_CODE (_p1))
25017 : : {
25018 : 2615 : case SSA_NAME:
25019 : 2615 : if (gimple *_d2 = get_def (valueize, _p1))
25020 : : {
25021 : 2557 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25022 : 3921 : switch (gimple_assign_rhs_code (_a2))
25023 : : {
25024 : 236 : case MINUS_EXPR:
25025 : 236 : {
25026 : 236 : tree _q50 = gimple_assign_rhs1 (_a2);
25027 : 236 : _q50 = do_valueize (valueize, _q50);
25028 : 236 : tree _q51 = gimple_assign_rhs2 (_a2);
25029 : 236 : _q51 = do_valueize (valueize, _q51);
25030 : 236 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25031 : : {
25032 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25033 : : {
25034 : 0 : if (integer_zerop (_p2))
25035 : : {
25036 : 0 : {
25037 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25038 : 0 : if (gimple_simplify_619 (res_op, seq, valueize, type, captures))
25039 : 0 : return true;
25040 : : }
25041 : : }
25042 : : }
25043 : : }
25044 : 236 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25045 : : {
25046 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25047 : : {
25048 : 0 : if (integer_zerop (_p2))
25049 : : {
25050 : 0 : {
25051 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25052 : 0 : if (gimple_simplify_619 (res_op, seq, valueize, type, captures))
25053 : 0 : return true;
25054 : : }
25055 : : }
25056 : : }
25057 : : }
25058 : : break;
25059 : : }
25060 : 21 : case BIT_XOR_EXPR:
25061 : 21 : {
25062 : 21 : tree _q50 = gimple_assign_rhs1 (_a2);
25063 : 21 : _q50 = do_valueize (valueize, _q50);
25064 : 21 : tree _q51 = gimple_assign_rhs2 (_a2);
25065 : 21 : _q51 = do_valueize (valueize, _q51);
25066 : 21 : if (tree_swap_operands_p (_q50, _q51))
25067 : 0 : std::swap (_q50, _q51);
25068 : 21 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25069 : : {
25070 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25071 : : {
25072 : 0 : if (integer_zerop (_p2))
25073 : : {
25074 : 0 : {
25075 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25076 : 0 : if (gimple_simplify_620 (res_op, seq, valueize, type, captures))
25077 : 0 : return true;
25078 : : }
25079 : : }
25080 : : }
25081 : : }
25082 : 21 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25083 : : {
25084 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25085 : : {
25086 : 0 : if (integer_zerop (_p2))
25087 : : {
25088 : 0 : {
25089 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25090 : 0 : if (gimple_simplify_620 (res_op, seq, valueize, type, captures))
25091 : 0 : return true;
25092 : : }
25093 : : }
25094 : : }
25095 : : }
25096 : 176035 : break;
25097 : : }
25098 : 33 : case BIT_AND_EXPR:
25099 : 33 : {
25100 : 33 : tree _q50 = gimple_assign_rhs1 (_a2);
25101 : 33 : _q50 = do_valueize (valueize, _q50);
25102 : 33 : tree _q51 = gimple_assign_rhs2 (_a2);
25103 : 33 : _q51 = do_valueize (valueize, _q51);
25104 : 33 : if (tree_swap_operands_p (_q50, _q51))
25105 : 0 : std::swap (_q50, _q51);
25106 : 33 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25107 : : {
25108 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25109 : : {
25110 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25111 : : {
25112 : 0 : {
25113 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25114 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25115 : 0 : return true;
25116 : : }
25117 : : }
25118 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25119 : : {
25120 : 0 : {
25121 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25122 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25123 : 0 : return true;
25124 : : }
25125 : : }
25126 : : }
25127 : : }
25128 : 33 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25129 : : {
25130 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25131 : : {
25132 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25133 : : {
25134 : 0 : {
25135 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25136 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25137 : 0 : return true;
25138 : : }
25139 : : }
25140 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25141 : : {
25142 : 0 : {
25143 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25144 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25145 : 0 : return true;
25146 : : }
25147 : : }
25148 : : }
25149 : : }
25150 : 176035 : break;
25151 : : }
25152 : 33 : case BIT_IOR_EXPR:
25153 : 33 : {
25154 : 33 : tree _q50 = gimple_assign_rhs1 (_a2);
25155 : 33 : _q50 = do_valueize (valueize, _q50);
25156 : 33 : tree _q51 = gimple_assign_rhs2 (_a2);
25157 : 33 : _q51 = do_valueize (valueize, _q51);
25158 : 33 : if (tree_swap_operands_p (_q50, _q51))
25159 : 2 : std::swap (_q50, _q51);
25160 : 33 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25161 : : {
25162 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25163 : : {
25164 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25165 : : {
25166 : 0 : {
25167 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25168 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR))
25169 : 0 : return true;
25170 : : }
25171 : : }
25172 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25173 : : {
25174 : 0 : {
25175 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25176 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR))
25177 : 0 : return true;
25178 : : }
25179 : : }
25180 : : }
25181 : : }
25182 : 33 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25183 : : {
25184 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25185 : : {
25186 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25187 : : {
25188 : 0 : {
25189 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25190 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR))
25191 : 0 : return true;
25192 : : }
25193 : : }
25194 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25195 : : {
25196 : 0 : {
25197 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25198 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR))
25199 : 0 : return true;
25200 : : }
25201 : : }
25202 : : }
25203 : : }
25204 : 176035 : break;
25205 : : }
25206 : 3 : case MIN_EXPR:
25207 : 3 : {
25208 : 3 : tree _q50 = gimple_assign_rhs1 (_a2);
25209 : 3 : _q50 = do_valueize (valueize, _q50);
25210 : 3 : tree _q51 = gimple_assign_rhs2 (_a2);
25211 : 3 : _q51 = do_valueize (valueize, _q51);
25212 : 3 : if (tree_swap_operands_p (_q50, _q51))
25213 : 0 : std::swap (_q50, _q51);
25214 : 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25215 : : {
25216 : 3 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25217 : : {
25218 : 3 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25219 : : {
25220 : 3 : {
25221 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25222 : 3 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR))
25223 : 3 : return true;
25224 : : }
25225 : : }
25226 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25227 : : {
25228 : 0 : {
25229 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25230 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR))
25231 : 0 : return true;
25232 : : }
25233 : : }
25234 : : }
25235 : : }
25236 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25237 : : {
25238 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25239 : : {
25240 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25241 : : {
25242 : 0 : {
25243 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25244 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR))
25245 : 0 : return true;
25246 : : }
25247 : : }
25248 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25249 : : {
25250 : 0 : {
25251 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25252 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MIN_EXPR))
25253 : 0 : return true;
25254 : : }
25255 : : }
25256 : : }
25257 : : }
25258 : 176035 : break;
25259 : : }
25260 : 15 : case MAX_EXPR:
25261 : 15 : {
25262 : 15 : tree _q50 = gimple_assign_rhs1 (_a2);
25263 : 15 : _q50 = do_valueize (valueize, _q50);
25264 : 15 : tree _q51 = gimple_assign_rhs2 (_a2);
25265 : 15 : _q51 = do_valueize (valueize, _q51);
25266 : 15 : if (tree_swap_operands_p (_q50, _q51))
25267 : 0 : std::swap (_q50, _q51);
25268 : 15 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25269 : : {
25270 : 3 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25271 : : {
25272 : 3 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25273 : : {
25274 : 3 : {
25275 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25276 : 3 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MAX_EXPR))
25277 : 3 : return true;
25278 : : }
25279 : : }
25280 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25281 : : {
25282 : 0 : {
25283 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25284 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MAX_EXPR))
25285 : 0 : return true;
25286 : : }
25287 : : }
25288 : : }
25289 : : }
25290 : 12 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25291 : : {
25292 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25293 : : {
25294 : 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
25295 : : {
25296 : 0 : {
25297 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25298 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MAX_EXPR))
25299 : 0 : return true;
25300 : : }
25301 : : }
25302 : 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
25303 : : {
25304 : 0 : {
25305 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25306 : 0 : if (gimple_simplify_621 (res_op, seq, valueize, type, captures, MAX_EXPR))
25307 : 0 : return true;
25308 : : }
25309 : : }
25310 : : }
25311 : : }
25312 : 176035 : break;
25313 : : }
25314 : 25 : case MULT_EXPR:
25315 : 25 : {
25316 : 25 : tree _q50 = gimple_assign_rhs1 (_a2);
25317 : 25 : _q50 = do_valueize (valueize, _q50);
25318 : 25 : tree _q51 = gimple_assign_rhs2 (_a2);
25319 : 25 : _q51 = do_valueize (valueize, _q51);
25320 : 25 : if (tree_swap_operands_p (_q50, _q51))
25321 : 0 : std::swap (_q50, _q51);
25322 : 25 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25323 : : {
25324 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25325 : : {
25326 : 0 : switch (TREE_CODE (_p2))
25327 : : {
25328 : 0 : case SSA_NAME:
25329 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
25330 : : {
25331 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25332 : 0 : switch (gimple_assign_rhs_code (_a3))
25333 : : {
25334 : 0 : case MULT_EXPR:
25335 : 0 : {
25336 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
25337 : 0 : _q80 = do_valueize (valueize, _q80);
25338 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
25339 : 0 : _q81 = do_valueize (valueize, _q81);
25340 : 0 : if (tree_swap_operands_p (_q80, _q81))
25341 : 0 : std::swap (_q80, _q81);
25342 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
25343 : : {
25344 : 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
25345 : : {
25346 : 0 : {
25347 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25348 : 0 : const enum tree_code op = MULT_EXPR;
25349 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
25350 : : )
25351 : : {
25352 : 0 : gimple_seq *lseq = seq;
25353 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2724;
25354 : 0 : {
25355 : 0 : tree tem;
25356 : 0 : tem = captures[2];
25357 : 0 : res_op->set_value (tem);
25358 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 799, __FILE__, __LINE__, true);
25359 : 0 : return true;
25360 : : }
25361 : 0 : next_after_fail2724:;
25362 : : }
25363 : : }
25364 : : }
25365 : : }
25366 : 25 : break;
25367 : : }
25368 : : default:;
25369 : : }
25370 : : }
25371 : : break;
25372 : : default:;
25373 : : }
25374 : : }
25375 : : }
25376 : 25 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25377 : : {
25378 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25379 : : {
25380 : 0 : switch (TREE_CODE (_p2))
25381 : : {
25382 : 0 : case SSA_NAME:
25383 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
25384 : : {
25385 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25386 : 0 : switch (gimple_assign_rhs_code (_a3))
25387 : : {
25388 : 0 : case MULT_EXPR:
25389 : 0 : {
25390 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
25391 : 0 : _q80 = do_valueize (valueize, _q80);
25392 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
25393 : 0 : _q81 = do_valueize (valueize, _q81);
25394 : 0 : if (tree_swap_operands_p (_q80, _q81))
25395 : 0 : std::swap (_q80, _q81);
25396 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
25397 : : {
25398 : 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
25399 : : {
25400 : 0 : {
25401 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25402 : 0 : const enum tree_code op = MULT_EXPR;
25403 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
25404 : : )
25405 : : {
25406 : 0 : gimple_seq *lseq = seq;
25407 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2725;
25408 : 0 : {
25409 : 0 : tree tem;
25410 : 0 : tem = captures[2];
25411 : 0 : res_op->set_value (tem);
25412 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 799, __FILE__, __LINE__, true);
25413 : 0 : return true;
25414 : : }
25415 : 0 : next_after_fail2725:;
25416 : : }
25417 : : }
25418 : : }
25419 : : }
25420 : 176035 : break;
25421 : : }
25422 : : default:;
25423 : : }
25424 : : }
25425 : : break;
25426 : : default:;
25427 : : }
25428 : : }
25429 : : }
25430 : 176035 : break;
25431 : : }
25432 : 16 : case PLUS_EXPR:
25433 : 16 : {
25434 : 16 : tree _q50 = gimple_assign_rhs1 (_a2);
25435 : 16 : _q50 = do_valueize (valueize, _q50);
25436 : 16 : tree _q51 = gimple_assign_rhs2 (_a2);
25437 : 16 : _q51 = do_valueize (valueize, _q51);
25438 : 16 : if (tree_swap_operands_p (_q50, _q51))
25439 : 0 : std::swap (_q50, _q51);
25440 : 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25441 : : {
25442 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25443 : : {
25444 : 0 : switch (TREE_CODE (_p2))
25445 : : {
25446 : 0 : case SSA_NAME:
25447 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
25448 : : {
25449 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25450 : 0 : switch (gimple_assign_rhs_code (_a3))
25451 : : {
25452 : 0 : case PLUS_EXPR:
25453 : 0 : {
25454 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
25455 : 0 : _q80 = do_valueize (valueize, _q80);
25456 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
25457 : 0 : _q81 = do_valueize (valueize, _q81);
25458 : 0 : if (tree_swap_operands_p (_q80, _q81))
25459 : 0 : std::swap (_q80, _q81);
25460 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
25461 : : {
25462 : 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
25463 : : {
25464 : 0 : {
25465 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
25466 : 0 : const enum tree_code op = PLUS_EXPR;
25467 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
25468 : : )
25469 : : {
25470 : 0 : gimple_seq *lseq = seq;
25471 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2726;
25472 : 0 : {
25473 : 0 : tree tem;
25474 : 0 : tem = captures[2];
25475 : 0 : res_op->set_value (tem);
25476 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 799, __FILE__, __LINE__, true);
25477 : 0 : return true;
25478 : : }
25479 : 0 : next_after_fail2726:;
25480 : : }
25481 : : }
25482 : : }
25483 : : }
25484 : 16 : break;
25485 : : }
25486 : 0 : case MULT_EXPR:
25487 : 0 : {
25488 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
25489 : 0 : _q80 = do_valueize (valueize, _q80);
25490 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
25491 : 0 : _q81 = do_valueize (valueize, _q81);
25492 : 0 : if (tree_swap_operands_p (_q80, _q81))
25493 : 0 : std::swap (_q80, _q81);
25494 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
25495 : : {
25496 : 0 : if (uniform_integer_cst_p (_q81))
25497 : : {
25498 : 0 : {
25499 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
25500 : 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
25501 : : )
25502 : : {
25503 : 0 : gimple_seq *lseq = seq;
25504 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2727;
25505 : 0 : {
25506 : 0 : tree tem;
25507 : 0 : tem = captures[2];
25508 : 0 : res_op->set_value (tem);
25509 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
25510 : 0 : return true;
25511 : : }
25512 : 0 : next_after_fail2727:;
25513 : : }
25514 : : }
25515 : : }
25516 : : }
25517 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
25518 : : {
25519 : 0 : if (uniform_integer_cst_p (_q81))
25520 : : {
25521 : 0 : {
25522 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
25523 : 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
25524 : : )
25525 : : {
25526 : 0 : gimple_seq *lseq = seq;
25527 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2728;
25528 : 0 : {
25529 : 0 : tree tem;
25530 : 0 : tem = captures[2];
25531 : 0 : res_op->set_value (tem);
25532 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
25533 : 0 : return true;
25534 : : }
25535 : 0 : next_after_fail2728:;
25536 : : }
25537 : : }
25538 : : }
25539 : : }
25540 : 16 : break;
25541 : : }
25542 : : default:;
25543 : : }
25544 : : }
25545 : : break;
25546 : : default:;
25547 : : }
25548 : : }
25549 : : }
25550 : 16 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25551 : : {
25552 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25553 : : {
25554 : 0 : switch (TREE_CODE (_p2))
25555 : : {
25556 : 0 : case SSA_NAME:
25557 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
25558 : : {
25559 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25560 : 0 : switch (gimple_assign_rhs_code (_a3))
25561 : : {
25562 : 0 : case PLUS_EXPR:
25563 : 0 : {
25564 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
25565 : 0 : _q80 = do_valueize (valueize, _q80);
25566 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
25567 : 0 : _q81 = do_valueize (valueize, _q81);
25568 : 0 : if (tree_swap_operands_p (_q80, _q81))
25569 : 0 : std::swap (_q80, _q81);
25570 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
25571 : : {
25572 : 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
25573 : : {
25574 : 0 : {
25575 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
25576 : 0 : const enum tree_code op = PLUS_EXPR;
25577 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
25578 : : )
25579 : : {
25580 : 0 : gimple_seq *lseq = seq;
25581 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2729;
25582 : 0 : {
25583 : 0 : tree tem;
25584 : 0 : tem = captures[2];
25585 : 0 : res_op->set_value (tem);
25586 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 799, __FILE__, __LINE__, true);
25587 : 0 : return true;
25588 : : }
25589 : 0 : next_after_fail2729:;
25590 : : }
25591 : : }
25592 : : }
25593 : : }
25594 : 176035 : break;
25595 : : }
25596 : 0 : case MULT_EXPR:
25597 : 0 : {
25598 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
25599 : 0 : _q80 = do_valueize (valueize, _q80);
25600 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
25601 : 0 : _q81 = do_valueize (valueize, _q81);
25602 : 0 : if (tree_swap_operands_p (_q80, _q81))
25603 : 0 : std::swap (_q80, _q81);
25604 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
25605 : : {
25606 : 0 : if (uniform_integer_cst_p (_q81))
25607 : : {
25608 : 0 : {
25609 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
25610 : 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
25611 : : )
25612 : : {
25613 : 0 : gimple_seq *lseq = seq;
25614 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2730;
25615 : 0 : {
25616 : 0 : tree tem;
25617 : 0 : tem = captures[2];
25618 : 0 : res_op->set_value (tem);
25619 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
25620 : 0 : return true;
25621 : : }
25622 : 0 : next_after_fail2730:;
25623 : : }
25624 : : }
25625 : : }
25626 : : }
25627 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
25628 : : {
25629 : 0 : if (uniform_integer_cst_p (_q81))
25630 : : {
25631 : 0 : {
25632 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
25633 : 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
25634 : : )
25635 : : {
25636 : 0 : gimple_seq *lseq = seq;
25637 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2731;
25638 : 0 : {
25639 : 0 : tree tem;
25640 : 0 : tem = captures[2];
25641 : 0 : res_op->set_value (tem);
25642 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
25643 : 0 : return true;
25644 : : }
25645 : 0 : next_after_fail2731:;
25646 : : }
25647 : : }
25648 : : }
25649 : : }
25650 : 176035 : break;
25651 : : }
25652 : : default:;
25653 : : }
25654 : : }
25655 : : break;
25656 : : default:;
25657 : : }
25658 : : }
25659 : : }
25660 : 176035 : break;
25661 : : }
25662 : : default:;
25663 : : }
25664 : : }
25665 : : break;
25666 : : default:;
25667 : : }
25668 : 176035 : break;
25669 : : }
25670 : : default:;
25671 : : }
25672 : : }
25673 : : break;
25674 : 176035 : default:;
25675 : : }
25676 : 176035 : switch (TREE_CODE (_p1))
25677 : : {
25678 : 40774 : case SSA_NAME:
25679 : 40774 : if (gimple *_d1 = get_def (valueize, _p1))
25680 : : {
25681 : 34464 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25682 : 34820 : switch (gimple_assign_rhs_code (_a1))
25683 : : {
25684 : 3724 : case VEC_COND_EXPR:
25685 : 3724 : {
25686 : 3724 : tree _q30 = gimple_assign_rhs1 (_a1);
25687 : 3724 : _q30 = do_valueize (valueize, _q30);
25688 : 3724 : tree _q31 = gimple_assign_rhs2 (_a1);
25689 : 3724 : _q31 = do_valueize (valueize, _q31);
25690 : 3724 : tree _q32 = gimple_assign_rhs3 (_a1);
25691 : 3724 : _q32 = do_valueize (valueize, _q32);
25692 : 3724 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
25693 : : {
25694 : 0 : {
25695 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _p2 };
25696 : 0 : gimple_seq *lseq = seq;
25697 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2732;
25698 : 0 : {
25699 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
25700 : 0 : res_op->ops[0] = captures[0];
25701 : 0 : res_op->ops[1] = captures[1];
25702 : 0 : res_op->ops[2] = captures[3];
25703 : 0 : res_op->resimplify (lseq, valueize);
25704 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1220, __FILE__, __LINE__, true);
25705 : 0 : return true;
25706 : : }
25707 : 0 : next_after_fail2732:;
25708 : : }
25709 : : }
25710 : : break;
25711 : : }
25712 : : default:;
25713 : : }
25714 : : }
25715 : : break;
25716 : 176035 : default:;
25717 : : }
25718 : 176035 : switch (TREE_CODE (_p2))
25719 : : {
25720 : 42555 : case SSA_NAME:
25721 : 42555 : if (gimple *_d1 = get_def (valueize, _p2))
25722 : : {
25723 : 36558 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25724 : 38341 : switch (gimple_assign_rhs_code (_a1))
25725 : : {
25726 : 3760 : case VEC_COND_EXPR:
25727 : 3760 : {
25728 : 3760 : tree _q40 = gimple_assign_rhs1 (_a1);
25729 : 3760 : _q40 = do_valueize (valueize, _q40);
25730 : 3760 : tree _q41 = gimple_assign_rhs2 (_a1);
25731 : 3760 : _q41 = do_valueize (valueize, _q41);
25732 : 3760 : tree _q42 = gimple_assign_rhs3 (_a1);
25733 : 3760 : _q42 = do_valueize (valueize, _q42);
25734 : 3760 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
25735 : : {
25736 : 24 : {
25737 : 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q41, _q42 };
25738 : 24 : gimple_seq *lseq = seq;
25739 : 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2733;
25740 : 24 : {
25741 : 24 : res_op->set_op (VEC_COND_EXPR, type, 3);
25742 : 24 : res_op->ops[0] = captures[0];
25743 : 24 : res_op->ops[1] = captures[1];
25744 : 24 : res_op->ops[2] = captures[3];
25745 : 24 : res_op->resimplify (lseq, valueize);
25746 : 24 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1221, __FILE__, __LINE__, true);
25747 : 24 : return true;
25748 : : }
25749 : 0 : next_after_fail2733:;
25750 : : }
25751 : : }
25752 : 3736 : {
25753 : 3736 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42 };
25754 : 3736 : if (inverse_conditions_p (captures[0], captures[2])
25755 : : )
25756 : : {
25757 : 0 : gimple_seq *lseq = seq;
25758 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2734;
25759 : 0 : {
25760 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
25761 : 0 : res_op->ops[0] = captures[0];
25762 : 0 : res_op->ops[1] = captures[1];
25763 : 0 : res_op->ops[2] = captures[3];
25764 : 0 : res_op->resimplify (lseq, valueize);
25765 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1222, __FILE__, __LINE__, true);
25766 : 0 : return true;
25767 : : }
25768 : 0 : next_after_fail2734:;
25769 : : }
25770 : : }
25771 : 3736 : break;
25772 : : }
25773 : : default:;
25774 : : }
25775 : : }
25776 : : break;
25777 : 176011 : default:;
25778 : : }
25779 : 176011 : switch (TREE_CODE (_p1))
25780 : : {
25781 : 40758 : case SSA_NAME:
25782 : 40758 : if (gimple *_d1 = get_def (valueize, _p1))
25783 : : {
25784 : 34448 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25785 : 34788 : switch (gimple_assign_rhs_code (_a1))
25786 : : {
25787 : 3724 : case VEC_COND_EXPR:
25788 : 3724 : {
25789 : 3724 : tree _q30 = gimple_assign_rhs1 (_a1);
25790 : 3724 : _q30 = do_valueize (valueize, _q30);
25791 : 3724 : tree _q31 = gimple_assign_rhs2 (_a1);
25792 : 3724 : _q31 = do_valueize (valueize, _q31);
25793 : 3724 : tree _q32 = gimple_assign_rhs3 (_a1);
25794 : 3724 : _q32 = do_valueize (valueize, _q32);
25795 : 3724 : {
25796 : 3724 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q32, _p2 };
25797 : 3724 : if (inverse_conditions_p (captures[0], captures[1])
25798 : : )
25799 : : {
25800 : 0 : gimple_seq *lseq = seq;
25801 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2735;
25802 : 0 : {
25803 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
25804 : 0 : res_op->ops[0] = captures[0];
25805 : 0 : res_op->ops[1] = captures[3];
25806 : 0 : res_op->ops[2] = captures[4];
25807 : 0 : res_op->resimplify (lseq, valueize);
25808 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1223, __FILE__, __LINE__, true);
25809 : 0 : return true;
25810 : : }
25811 : 0 : next_after_fail2735:;
25812 : : }
25813 : : }
25814 : 3724 : break;
25815 : : }
25816 : : default:;
25817 : : }
25818 : : }
25819 : : break;
25820 : 176011 : default:;
25821 : : }
25822 : 176011 : if ((_p2 == _p1 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _p1, 0) && types_match (_p2, _p1)))
25823 : : {
25824 : 1352 : {
25825 : 1352 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
25826 : 1352 : gimple_seq *lseq = seq;
25827 : 1352 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2736;
25828 : 1352 : {
25829 : 1352 : tree tem;
25830 : 1352 : tem = captures[1];
25831 : 1352 : res_op->set_value (tem);
25832 : 1352 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1224, __FILE__, __LINE__, true);
25833 : 1352 : return true;
25834 : : }
25835 : 0 : next_after_fail2736:;
25836 : : }
25837 : : }
25838 : 174659 : switch (TREE_CODE (_p0))
25839 : : {
25840 : 174365 : case SSA_NAME:
25841 : 174365 : if (gimple *_d1 = get_def (valueize, _p0))
25842 : : {
25843 : 149426 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25844 : 148831 : switch (gimple_assign_rhs_code (_a1))
25845 : : {
25846 : 39807 : case EQ_EXPR:
25847 : 39807 : {
25848 : 39807 : tree _q20 = gimple_assign_rhs1 (_a1);
25849 : 39807 : _q20 = do_valueize (valueize, _q20);
25850 : 39807 : tree _q21 = gimple_assign_rhs2 (_a1);
25851 : 39807 : _q21 = do_valueize (valueize, _q21);
25852 : 39807 : if (tree_swap_operands_p (_q20, _q21))
25853 : 3581 : std::swap (_q20, _q21);
25854 : 39807 : if (zerop (_q21))
25855 : : {
25856 : 6557 : switch (TREE_CODE (_p2))
25857 : : {
25858 : 1779 : case SSA_NAME:
25859 : 1779 : if (gimple *_d2 = get_def (valueize, _p2))
25860 : : {
25861 : 1769 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25862 : 2051 : switch (gimple_assign_rhs_code (_a2))
25863 : : {
25864 : 0 : case NEGATE_EXPR:
25865 : 0 : {
25866 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
25867 : 0 : _q60 = do_valueize (valueize, _q60);
25868 : 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
25869 : : {
25870 : 0 : {
25871 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
25872 : 0 : const enum tree_code cmp = EQ_EXPR;
25873 : 0 : if (!HONOR_SIGNED_ZEROS (type)
25874 : 0 : && bitwise_equal_p (captures[0], captures[1])
25875 : : )
25876 : : {
25877 : 0 : gimple_seq *lseq = seq;
25878 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2737;
25879 : 0 : {
25880 : 0 : tree tem;
25881 : 0 : tem = captures[2];
25882 : 0 : res_op->set_value (tem);
25883 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 808, __FILE__, __LINE__, true);
25884 : 0 : return true;
25885 : : }
25886 : 0 : next_after_fail2737:;
25887 : : }
25888 : : }
25889 : : }
25890 : : break;
25891 : : }
25892 : : default:;
25893 : : }
25894 : : }
25895 : : break;
25896 : 6557 : default:;
25897 : : }
25898 : 6557 : if (zerop (_p1))
25899 : : {
25900 : 126 : switch (TREE_CODE (_p2))
25901 : : {
25902 : 105 : case SSA_NAME:
25903 : 105 : if (gimple *_d2 = get_def (valueize, _p2))
25904 : : {
25905 : 105 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25906 : 50 : switch (gimple_assign_rhs_code (_a2))
25907 : : {
25908 : 0 : case NEGATE_EXPR:
25909 : 0 : {
25910 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
25911 : 0 : _q60 = do_valueize (valueize, _q60);
25912 : 0 : {
25913 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
25914 : 0 : const enum tree_code cmp = EQ_EXPR;
25915 : 0 : if (!HONOR_SIGNED_ZEROS (type)
25916 : 0 : && bitwise_equal_p (captures[0], captures[2])
25917 : : )
25918 : : {
25919 : 0 : gimple_seq *lseq = seq;
25920 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2738;
25921 : 0 : {
25922 : 0 : tree tem;
25923 : 0 : tem = captures[1];
25924 : 0 : res_op->set_value (tem);
25925 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
25926 : 0 : return true;
25927 : : }
25928 : 0 : next_after_fail2738:;
25929 : : }
25930 : : }
25931 : 0 : break;
25932 : : }
25933 : : default:;
25934 : : }
25935 : : }
25936 : : break;
25937 : : default:;
25938 : : }
25939 : : }
25940 : : }
25941 : 39807 : switch (TREE_CODE (_q20))
25942 : : {
25943 : 39807 : case SSA_NAME:
25944 : 39807 : if (gimple *_d2 = get_def (valueize, _q20))
25945 : : {
25946 : 39243 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25947 : 66393 : switch (gimple_assign_rhs_code (_a2))
25948 : : {
25949 : 1715 : case MINUS_EXPR:
25950 : 1715 : {
25951 : 1715 : tree _q30 = gimple_assign_rhs1 (_a2);
25952 : 1715 : _q30 = do_valueize (valueize, _q30);
25953 : 1715 : tree _q31 = gimple_assign_rhs2 (_a2);
25954 : 1715 : _q31 = do_valueize (valueize, _q31);
25955 : 1715 : if (zerop (_q21))
25956 : : {
25957 : 8 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
25958 : : {
25959 : 0 : switch (TREE_CODE (_p2))
25960 : : {
25961 : 0 : case SSA_NAME:
25962 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
25963 : : {
25964 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25965 : 0 : switch (gimple_assign_rhs_code (_a3))
25966 : : {
25967 : 0 : case MINUS_EXPR:
25968 : 0 : {
25969 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
25970 : 0 : _q80 = do_valueize (valueize, _q80);
25971 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
25972 : 0 : _q81 = do_valueize (valueize, _q81);
25973 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
25974 : : {
25975 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
25976 : : {
25977 : 0 : {
25978 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
25979 : 0 : const enum tree_code cmp = EQ_EXPR;
25980 : 0 : if (!HONOR_SIGNED_ZEROS (type)
25981 : : )
25982 : : {
25983 : 0 : gimple_seq *lseq = seq;
25984 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2739;
25985 : 0 : {
25986 : 0 : tree tem;
25987 : 0 : tem = captures[3];
25988 : 0 : res_op->set_value (tem);
25989 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 810, __FILE__, __LINE__, true);
25990 : 0 : return true;
25991 : : }
25992 : 0 : next_after_fail2739:;
25993 : : }
25994 : : }
25995 : : }
25996 : : }
25997 : : break;
25998 : : }
25999 : : default:;
26000 : : }
26001 : : }
26002 : : break;
26003 : : default:;
26004 : : }
26005 : : }
26006 : : }
26007 : 1715 : if (integer_zerop (_q21))
26008 : : {
26009 : 8 : if (integer_zerop (_p1))
26010 : : {
26011 : 0 : switch (TREE_CODE (_p2))
26012 : : {
26013 : 0 : case SSA_NAME:
26014 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26015 : : {
26016 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26017 : 0 : switch (gimple_assign_rhs_code (_a3))
26018 : : {
26019 : 0 : case MINUS_EXPR:
26020 : 0 : {
26021 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
26022 : 0 : _q80 = do_valueize (valueize, _q80);
26023 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
26024 : 0 : _q81 = do_valueize (valueize, _q81);
26025 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
26026 : : {
26027 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
26028 : : {
26029 : 0 : {
26030 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
26031 : 0 : if (gimple_simplify_622 (res_op, seq, valueize, type, captures, EQ_EXPR))
26032 : 0 : return true;
26033 : : }
26034 : : }
26035 : : }
26036 : : break;
26037 : : }
26038 : : default:;
26039 : : }
26040 : : }
26041 : : break;
26042 : : default:;
26043 : : }
26044 : : }
26045 : : }
26046 : : break;
26047 : : }
26048 : : default:;
26049 : : }
26050 : : }
26051 : : break;
26052 : : default:;
26053 : : }
26054 : 174650 : break;
26055 : : }
26056 : 148 : case UNEQ_EXPR:
26057 : 148 : {
26058 : 148 : tree _q20 = gimple_assign_rhs1 (_a1);
26059 : 148 : _q20 = do_valueize (valueize, _q20);
26060 : 148 : tree _q21 = gimple_assign_rhs2 (_a1);
26061 : 148 : _q21 = do_valueize (valueize, _q21);
26062 : 148 : if (tree_swap_operands_p (_q20, _q21))
26063 : 4 : std::swap (_q20, _q21);
26064 : 148 : if (zerop (_q21))
26065 : : {
26066 : 6 : switch (TREE_CODE (_p2))
26067 : : {
26068 : 0 : case SSA_NAME:
26069 : 0 : if (gimple *_d2 = get_def (valueize, _p2))
26070 : : {
26071 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26072 : 0 : switch (gimple_assign_rhs_code (_a2))
26073 : : {
26074 : 0 : case NEGATE_EXPR:
26075 : 0 : {
26076 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
26077 : 0 : _q60 = do_valueize (valueize, _q60);
26078 : 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
26079 : : {
26080 : 0 : {
26081 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
26082 : 0 : const enum tree_code cmp = UNEQ_EXPR;
26083 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26084 : 0 : && bitwise_equal_p (captures[0], captures[1])
26085 : : )
26086 : : {
26087 : 0 : gimple_seq *lseq = seq;
26088 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2740;
26089 : 0 : {
26090 : 0 : tree tem;
26091 : 0 : tem = captures[2];
26092 : 0 : res_op->set_value (tem);
26093 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 808, __FILE__, __LINE__, true);
26094 : 0 : return true;
26095 : : }
26096 : 0 : next_after_fail2740:;
26097 : : }
26098 : : }
26099 : : }
26100 : : break;
26101 : : }
26102 : : default:;
26103 : : }
26104 : : }
26105 : : break;
26106 : 6 : default:;
26107 : : }
26108 : 6 : if (zerop (_p1))
26109 : : {
26110 : 0 : switch (TREE_CODE (_p2))
26111 : : {
26112 : 0 : case SSA_NAME:
26113 : 0 : if (gimple *_d2 = get_def (valueize, _p2))
26114 : : {
26115 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26116 : 0 : switch (gimple_assign_rhs_code (_a2))
26117 : : {
26118 : 0 : case NEGATE_EXPR:
26119 : 0 : {
26120 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
26121 : 0 : _q60 = do_valueize (valueize, _q60);
26122 : 0 : {
26123 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
26124 : 0 : const enum tree_code cmp = UNEQ_EXPR;
26125 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26126 : 0 : && bitwise_equal_p (captures[0], captures[2])
26127 : : )
26128 : : {
26129 : 0 : gimple_seq *lseq = seq;
26130 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2741;
26131 : 0 : {
26132 : 0 : tree tem;
26133 : 0 : tem = captures[1];
26134 : 0 : res_op->set_value (tem);
26135 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
26136 : 0 : return true;
26137 : : }
26138 : 0 : next_after_fail2741:;
26139 : : }
26140 : : }
26141 : 0 : break;
26142 : : }
26143 : : default:;
26144 : : }
26145 : : }
26146 : : break;
26147 : : default:;
26148 : : }
26149 : : }
26150 : : }
26151 : 148 : switch (TREE_CODE (_q20))
26152 : : {
26153 : 148 : case SSA_NAME:
26154 : 148 : if (gimple *_d2 = get_def (valueize, _q20))
26155 : : {
26156 : 146 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26157 : 292 : switch (gimple_assign_rhs_code (_a2))
26158 : : {
26159 : 0 : case MINUS_EXPR:
26160 : 0 : {
26161 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
26162 : 0 : _q30 = do_valueize (valueize, _q30);
26163 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
26164 : 0 : _q31 = do_valueize (valueize, _q31);
26165 : 0 : if (zerop (_q21))
26166 : : {
26167 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
26168 : : {
26169 : 0 : switch (TREE_CODE (_p2))
26170 : : {
26171 : 0 : case SSA_NAME:
26172 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26173 : : {
26174 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26175 : 0 : switch (gimple_assign_rhs_code (_a3))
26176 : : {
26177 : 0 : case MINUS_EXPR:
26178 : 0 : {
26179 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
26180 : 0 : _q80 = do_valueize (valueize, _q80);
26181 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
26182 : 0 : _q81 = do_valueize (valueize, _q81);
26183 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
26184 : : {
26185 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
26186 : : {
26187 : 0 : {
26188 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
26189 : 0 : const enum tree_code cmp = UNEQ_EXPR;
26190 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26191 : : )
26192 : : {
26193 : 0 : gimple_seq *lseq = seq;
26194 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2742;
26195 : 0 : {
26196 : 0 : tree tem;
26197 : 0 : tem = captures[3];
26198 : 0 : res_op->set_value (tem);
26199 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 810, __FILE__, __LINE__, true);
26200 : 0 : return true;
26201 : : }
26202 : 0 : next_after_fail2742:;
26203 : : }
26204 : : }
26205 : : }
26206 : : }
26207 : : break;
26208 : : }
26209 : : default:;
26210 : : }
26211 : : }
26212 : : break;
26213 : : default:;
26214 : : }
26215 : : }
26216 : : }
26217 : 0 : if (integer_zerop (_q21))
26218 : : {
26219 : 0 : if (integer_zerop (_p1))
26220 : : {
26221 : 0 : switch (TREE_CODE (_p2))
26222 : : {
26223 : 0 : case SSA_NAME:
26224 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26225 : : {
26226 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26227 : 0 : switch (gimple_assign_rhs_code (_a3))
26228 : : {
26229 : 0 : case MINUS_EXPR:
26230 : 0 : {
26231 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
26232 : 0 : _q80 = do_valueize (valueize, _q80);
26233 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
26234 : 0 : _q81 = do_valueize (valueize, _q81);
26235 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
26236 : : {
26237 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
26238 : : {
26239 : 0 : {
26240 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
26241 : 0 : if (gimple_simplify_622 (res_op, seq, valueize, type, captures, UNEQ_EXPR))
26242 : 0 : return true;
26243 : : }
26244 : : }
26245 : : }
26246 : : break;
26247 : : }
26248 : : default:;
26249 : : }
26250 : : }
26251 : : break;
26252 : : default:;
26253 : : }
26254 : : }
26255 : : }
26256 : : break;
26257 : : }
26258 : : default:;
26259 : : }
26260 : : }
26261 : : break;
26262 : : default:;
26263 : : }
26264 : 174650 : break;
26265 : : }
26266 : 18368 : case NE_EXPR:
26267 : 18368 : {
26268 : 18368 : tree _q20 = gimple_assign_rhs1 (_a1);
26269 : 18368 : _q20 = do_valueize (valueize, _q20);
26270 : 18368 : tree _q21 = gimple_assign_rhs2 (_a1);
26271 : 18368 : _q21 = do_valueize (valueize, _q21);
26272 : 18368 : if (tree_swap_operands_p (_q20, _q21))
26273 : 3644 : std::swap (_q20, _q21);
26274 : 18368 : if (zerop (_q21))
26275 : : {
26276 : 5633 : switch (TREE_CODE (_p2))
26277 : : {
26278 : 1719 : case SSA_NAME:
26279 : 1719 : if (gimple *_d2 = get_def (valueize, _p2))
26280 : : {
26281 : 1686 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26282 : 2212 : switch (gimple_assign_rhs_code (_a2))
26283 : : {
26284 : 2 : case NEGATE_EXPR:
26285 : 2 : {
26286 : 2 : tree _q60 = gimple_assign_rhs1 (_a2);
26287 : 2 : _q60 = do_valueize (valueize, _q60);
26288 : 2 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
26289 : : {
26290 : 2 : {
26291 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
26292 : 2 : const enum tree_code cmp = NE_EXPR;
26293 : 2 : if (!HONOR_SIGNED_ZEROS (type)
26294 : 2 : && bitwise_equal_p (captures[0], captures[1])
26295 : : )
26296 : : {
26297 : 0 : gimple_seq *lseq = seq;
26298 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2743;
26299 : 0 : {
26300 : 0 : tree tem;
26301 : 0 : tem = captures[1];
26302 : 0 : res_op->set_value (tem);
26303 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 812, __FILE__, __LINE__, true);
26304 : 0 : return true;
26305 : : }
26306 : 0 : next_after_fail2743:;
26307 : : }
26308 : : }
26309 : : }
26310 : : break;
26311 : : }
26312 : : default:;
26313 : : }
26314 : : }
26315 : : break;
26316 : 5633 : default:;
26317 : : }
26318 : 5633 : if (integer_zerop (_p2))
26319 : : {
26320 : 3267 : {
26321 : 3267 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
26322 : 3267 : const enum tree_code cmp = NE_EXPR;
26323 : 3267 : if (!HONOR_SIGNED_ZEROS (type)
26324 : 3267 : && bitwise_equal_p (captures[0], captures[1])
26325 : : )
26326 : : {
26327 : 3 : gimple_seq *lseq = seq;
26328 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2744;
26329 : 3 : {
26330 : 3 : tree tem;
26331 : 3 : tem = captures[1];
26332 : 3 : res_op->set_value (tem);
26333 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 813, __FILE__, __LINE__, true);
26334 : 3 : return true;
26335 : : }
26336 : 0 : next_after_fail2744:;
26337 : : }
26338 : : }
26339 : : }
26340 : : }
26341 : 18365 : switch (TREE_CODE (_q20))
26342 : : {
26343 : 18365 : case SSA_NAME:
26344 : 18365 : if (gimple *_d2 = get_def (valueize, _q20))
26345 : : {
26346 : 17696 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26347 : 28278 : switch (gimple_assign_rhs_code (_a2))
26348 : : {
26349 : 119 : case MINUS_EXPR:
26350 : 119 : {
26351 : 119 : tree _q30 = gimple_assign_rhs1 (_a2);
26352 : 119 : _q30 = do_valueize (valueize, _q30);
26353 : 119 : tree _q31 = gimple_assign_rhs2 (_a2);
26354 : 119 : _q31 = do_valueize (valueize, _q31);
26355 : 119 : if (zerop (_q21))
26356 : : {
26357 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
26358 : : {
26359 : 0 : switch (TREE_CODE (_p2))
26360 : : {
26361 : 0 : case SSA_NAME:
26362 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26363 : : {
26364 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26365 : 0 : switch (gimple_assign_rhs_code (_a3))
26366 : : {
26367 : 0 : case MINUS_EXPR:
26368 : 0 : {
26369 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
26370 : 0 : _q80 = do_valueize (valueize, _q80);
26371 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
26372 : 0 : _q81 = do_valueize (valueize, _q81);
26373 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
26374 : : {
26375 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
26376 : : {
26377 : 0 : {
26378 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
26379 : 0 : const enum tree_code cmp = NE_EXPR;
26380 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26381 : : )
26382 : : {
26383 : 0 : gimple_seq *lseq = seq;
26384 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2745;
26385 : 0 : {
26386 : 0 : tree tem;
26387 : 0 : tem = captures[0];
26388 : 0 : res_op->set_value (tem);
26389 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
26390 : 0 : return true;
26391 : : }
26392 : 0 : next_after_fail2745:;
26393 : : }
26394 : : }
26395 : : }
26396 : : }
26397 : : break;
26398 : : }
26399 : : default:;
26400 : : }
26401 : : }
26402 : : break;
26403 : : default:;
26404 : : }
26405 : : }
26406 : : }
26407 : 119 : if (integer_zerop (_q21))
26408 : : {
26409 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
26410 : : {
26411 : 0 : if (integer_zerop (_p2))
26412 : : {
26413 : 0 : {
26414 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
26415 : 0 : if (gimple_simplify_623 (res_op, seq, valueize, type, captures, NE_EXPR))
26416 : 0 : return true;
26417 : : }
26418 : : }
26419 : : }
26420 : : }
26421 : : break;
26422 : : }
26423 : : default:;
26424 : : }
26425 : : }
26426 : : break;
26427 : : default:;
26428 : : }
26429 : 174650 : break;
26430 : : }
26431 : 243 : case LTGT_EXPR:
26432 : 243 : {
26433 : 243 : tree _q20 = gimple_assign_rhs1 (_a1);
26434 : 243 : _q20 = do_valueize (valueize, _q20);
26435 : 243 : tree _q21 = gimple_assign_rhs2 (_a1);
26436 : 243 : _q21 = do_valueize (valueize, _q21);
26437 : 243 : if (tree_swap_operands_p (_q20, _q21))
26438 : 38 : std::swap (_q20, _q21);
26439 : 243 : if (zerop (_q21))
26440 : : {
26441 : 0 : switch (TREE_CODE (_p2))
26442 : : {
26443 : 0 : case SSA_NAME:
26444 : 0 : if (gimple *_d2 = get_def (valueize, _p2))
26445 : : {
26446 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26447 : 0 : switch (gimple_assign_rhs_code (_a2))
26448 : : {
26449 : 0 : case NEGATE_EXPR:
26450 : 0 : {
26451 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
26452 : 0 : _q60 = do_valueize (valueize, _q60);
26453 : 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
26454 : : {
26455 : 0 : {
26456 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
26457 : 0 : const enum tree_code cmp = LTGT_EXPR;
26458 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26459 : 0 : && bitwise_equal_p (captures[0], captures[1])
26460 : : )
26461 : : {
26462 : 0 : gimple_seq *lseq = seq;
26463 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2746;
26464 : 0 : {
26465 : 0 : tree tem;
26466 : 0 : tem = captures[1];
26467 : 0 : res_op->set_value (tem);
26468 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 812, __FILE__, __LINE__, true);
26469 : 0 : return true;
26470 : : }
26471 : 0 : next_after_fail2746:;
26472 : : }
26473 : : }
26474 : : }
26475 : : break;
26476 : : }
26477 : : default:;
26478 : : }
26479 : : }
26480 : : break;
26481 : 0 : default:;
26482 : : }
26483 : 0 : if (integer_zerop (_p2))
26484 : : {
26485 : 0 : {
26486 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
26487 : 0 : const enum tree_code cmp = LTGT_EXPR;
26488 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26489 : 0 : && bitwise_equal_p (captures[0], captures[1])
26490 : : )
26491 : : {
26492 : 0 : gimple_seq *lseq = seq;
26493 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2747;
26494 : 0 : {
26495 : 0 : tree tem;
26496 : 0 : tem = captures[1];
26497 : 0 : res_op->set_value (tem);
26498 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 813, __FILE__, __LINE__, true);
26499 : 0 : return true;
26500 : : }
26501 : 0 : next_after_fail2747:;
26502 : : }
26503 : : }
26504 : : }
26505 : : }
26506 : 243 : switch (TREE_CODE (_q20))
26507 : : {
26508 : 243 : case SSA_NAME:
26509 : 243 : if (gimple *_d2 = get_def (valueize, _q20))
26510 : : {
26511 : 233 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26512 : 446 : switch (gimple_assign_rhs_code (_a2))
26513 : : {
26514 : 0 : case MINUS_EXPR:
26515 : 0 : {
26516 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
26517 : 0 : _q30 = do_valueize (valueize, _q30);
26518 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
26519 : 0 : _q31 = do_valueize (valueize, _q31);
26520 : 0 : if (zerop (_q21))
26521 : : {
26522 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
26523 : : {
26524 : 0 : switch (TREE_CODE (_p2))
26525 : : {
26526 : 0 : case SSA_NAME:
26527 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26528 : : {
26529 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26530 : 0 : switch (gimple_assign_rhs_code (_a3))
26531 : : {
26532 : 0 : case MINUS_EXPR:
26533 : 0 : {
26534 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
26535 : 0 : _q80 = do_valueize (valueize, _q80);
26536 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
26537 : 0 : _q81 = do_valueize (valueize, _q81);
26538 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
26539 : : {
26540 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
26541 : : {
26542 : 0 : {
26543 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
26544 : 0 : const enum tree_code cmp = LTGT_EXPR;
26545 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26546 : : )
26547 : : {
26548 : 0 : gimple_seq *lseq = seq;
26549 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2748;
26550 : 0 : {
26551 : 0 : tree tem;
26552 : 0 : tem = captures[0];
26553 : 0 : res_op->set_value (tem);
26554 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
26555 : 0 : return true;
26556 : : }
26557 : 0 : next_after_fail2748:;
26558 : : }
26559 : : }
26560 : : }
26561 : : }
26562 : : break;
26563 : : }
26564 : : default:;
26565 : : }
26566 : : }
26567 : : break;
26568 : : default:;
26569 : : }
26570 : : }
26571 : : }
26572 : 0 : if (integer_zerop (_q21))
26573 : : {
26574 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
26575 : : {
26576 : 0 : if (integer_zerop (_p2))
26577 : : {
26578 : 0 : {
26579 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
26580 : 0 : if (gimple_simplify_623 (res_op, seq, valueize, type, captures, LTGT_EXPR))
26581 : 0 : return true;
26582 : : }
26583 : : }
26584 : : }
26585 : : }
26586 : : break;
26587 : : }
26588 : : default:;
26589 : : }
26590 : : }
26591 : : break;
26592 : : default:;
26593 : : }
26594 : 174650 : break;
26595 : : }
26596 : 9361 : case GE_EXPR:
26597 : 9361 : {
26598 : 9361 : tree _q20 = gimple_assign_rhs1 (_a1);
26599 : 9361 : _q20 = do_valueize (valueize, _q20);
26600 : 9361 : tree _q21 = gimple_assign_rhs2 (_a1);
26601 : 9361 : _q21 = do_valueize (valueize, _q21);
26602 : 9361 : switch (TREE_CODE (_q20))
26603 : : {
26604 : 9334 : case SSA_NAME:
26605 : 9334 : if (gimple *_d2 = get_def (valueize, _q20))
26606 : : {
26607 : 8885 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26608 : 8846 : switch (gimple_assign_rhs_code (_a2))
26609 : : {
26610 : 0 : CASE_CONVERT:
26611 : 0 : {
26612 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
26613 : 0 : _q30 = do_valueize (valueize, _q30);
26614 : 0 : if (zerop (_q21))
26615 : : {
26616 : 0 : switch (TREE_CODE (_p2))
26617 : : {
26618 : 0 : case SSA_NAME:
26619 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26620 : : {
26621 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26622 : 0 : switch (gimple_assign_rhs_code (_a3))
26623 : : {
26624 : 0 : case NEGATE_EXPR:
26625 : 0 : {
26626 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
26627 : 0 : _q70 = do_valueize (valueize, _q70);
26628 : 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
26629 : : {
26630 : 0 : {
26631 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
26632 : 0 : const enum tree_code cmp = GE_EXPR;
26633 : 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
26634 : 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
26635 : 0 : && element_precision (captures[1])
26636 : 0 : <= element_precision (captures[0])
26637 : 0 : && bitwise_equal_p (captures[1], captures[2])
26638 : : )
26639 : : {
26640 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
26641 : : )
26642 : : {
26643 : 0 : {
26644 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
26645 : 0 : if (types_match (captures[0], stype)
26646 : : )
26647 : : {
26648 : 0 : gimple_seq *lseq = seq;
26649 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2749;
26650 : 0 : {
26651 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
26652 : 0 : res_op->ops[0] = captures[0];
26653 : 0 : res_op->resimplify (lseq, valueize);
26654 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
26655 : 0 : return true;
26656 : : }
26657 : 0 : next_after_fail2749:;
26658 : : }
26659 : : else
26660 : : {
26661 : 0 : gimple_seq *lseq = seq;
26662 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2750;
26663 : 0 : {
26664 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
26665 : 0 : {
26666 : 0 : tree _o1[1], _r1;
26667 : 0 : _o1[0] = captures[2];
26668 : 0 : if (stype != TREE_TYPE (_o1[0]) /* XXX */
26669 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o1[0])))
26670 : : {
26671 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o1[0]);
26672 : 0 : tem_op.resimplify (lseq, valueize);
26673 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
26674 : 0 : if (!_r1) goto next_after_fail2750;
26675 : : }
26676 : : else
26677 : : _r1 = _o1[0];
26678 : 0 : res_op->ops[0] = _r1;
26679 : : }
26680 : 0 : res_op->resimplify (lseq, valueize);
26681 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
26682 : 0 : return true;
26683 : : }
26684 : 0 : next_after_fail2750:;
26685 : : }
26686 : : }
26687 : : }
26688 : : else
26689 : : {
26690 : 0 : gimple_seq *lseq = seq;
26691 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2751;
26692 : 0 : {
26693 : 0 : res_op->set_op (ABS_EXPR, type, 1);
26694 : 0 : res_op->ops[0] = captures[2];
26695 : 0 : res_op->resimplify (lseq, valueize);
26696 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
26697 : 0 : return true;
26698 : : }
26699 : 0 : next_after_fail2751:;
26700 : : }
26701 : : }
26702 : : }
26703 : : }
26704 : : break;
26705 : : }
26706 : : default:;
26707 : : }
26708 : : }
26709 : : break;
26710 : : default:;
26711 : : }
26712 : : }
26713 : : break;
26714 : : }
26715 : : default:;
26716 : : }
26717 : : }
26718 : : break;
26719 : 9361 : default:;
26720 : : }
26721 : 9361 : if (zerop (_q21))
26722 : : {
26723 : 2017 : switch (TREE_CODE (_p2))
26724 : : {
26725 : 1171 : case SSA_NAME:
26726 : 1171 : if (gimple *_d2 = get_def (valueize, _p2))
26727 : : {
26728 : 1160 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26729 : 186 : switch (gimple_assign_rhs_code (_a2))
26730 : : {
26731 : 0 : case NEGATE_EXPR:
26732 : 0 : {
26733 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
26734 : 0 : _q60 = do_valueize (valueize, _q60);
26735 : 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
26736 : : {
26737 : 0 : {
26738 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
26739 : 0 : const enum tree_code cmp = GE_EXPR;
26740 : 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
26741 : 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
26742 : 0 : && element_precision (captures[1])
26743 : 0 : <= element_precision (captures[0])
26744 : 0 : && bitwise_equal_p (captures[1], captures[2])
26745 : : )
26746 : : {
26747 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
26748 : : )
26749 : : {
26750 : 0 : {
26751 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
26752 : 0 : if (types_match (captures[0], stype)
26753 : : )
26754 : : {
26755 : 0 : gimple_seq *lseq = seq;
26756 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2752;
26757 : 0 : {
26758 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
26759 : 0 : res_op->ops[0] = captures[0];
26760 : 0 : res_op->resimplify (lseq, valueize);
26761 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
26762 : 0 : return true;
26763 : : }
26764 : 0 : next_after_fail2752:;
26765 : : }
26766 : : else
26767 : : {
26768 : 0 : gimple_seq *lseq = seq;
26769 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2753;
26770 : 0 : {
26771 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
26772 : 0 : {
26773 : 0 : tree _o1[1], _r1;
26774 : 0 : _o1[0] = captures[2];
26775 : 0 : if (stype != TREE_TYPE (_o1[0]) /* XXX */
26776 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o1[0])))
26777 : : {
26778 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o1[0]);
26779 : 0 : tem_op.resimplify (lseq, valueize);
26780 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
26781 : 0 : if (!_r1) goto next_after_fail2753;
26782 : : }
26783 : : else
26784 : : _r1 = _o1[0];
26785 : 0 : res_op->ops[0] = _r1;
26786 : : }
26787 : 0 : res_op->resimplify (lseq, valueize);
26788 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
26789 : 0 : return true;
26790 : : }
26791 : 0 : next_after_fail2753:;
26792 : : }
26793 : : }
26794 : : }
26795 : : else
26796 : : {
26797 : 0 : gimple_seq *lseq = seq;
26798 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2754;
26799 : 0 : {
26800 : 0 : res_op->set_op (ABS_EXPR, type, 1);
26801 : 0 : res_op->ops[0] = captures[2];
26802 : 0 : res_op->resimplify (lseq, valueize);
26803 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
26804 : 0 : return true;
26805 : : }
26806 : 0 : next_after_fail2754:;
26807 : : }
26808 : : }
26809 : : }
26810 : : }
26811 : : break;
26812 : : }
26813 : : default:;
26814 : : }
26815 : : }
26816 : : break;
26817 : : default:;
26818 : : }
26819 : : }
26820 : 9361 : switch (TREE_CODE (_q20))
26821 : : {
26822 : 9334 : case SSA_NAME:
26823 : 9334 : if (gimple *_d2 = get_def (valueize, _q20))
26824 : : {
26825 : 8885 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26826 : 8846 : switch (gimple_assign_rhs_code (_a2))
26827 : : {
26828 : 10 : case MINUS_EXPR:
26829 : 10 : {
26830 : 10 : tree _q30 = gimple_assign_rhs1 (_a2);
26831 : 10 : _q30 = do_valueize (valueize, _q30);
26832 : 10 : tree _q31 = gimple_assign_rhs2 (_a2);
26833 : 10 : _q31 = do_valueize (valueize, _q31);
26834 : 10 : if (zerop (_q21))
26835 : : {
26836 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
26837 : : {
26838 : 0 : switch (TREE_CODE (_p2))
26839 : : {
26840 : 0 : case SSA_NAME:
26841 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26842 : : {
26843 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26844 : 0 : switch (gimple_assign_rhs_code (_a3))
26845 : : {
26846 : 0 : case MINUS_EXPR:
26847 : 0 : {
26848 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
26849 : 0 : _q80 = do_valueize (valueize, _q80);
26850 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
26851 : 0 : _q81 = do_valueize (valueize, _q81);
26852 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
26853 : : {
26854 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
26855 : : {
26856 : 0 : {
26857 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
26858 : 0 : const enum tree_code cmp = GE_EXPR;
26859 : 0 : if (!HONOR_SIGNED_ZEROS (type)
26860 : 0 : && !TYPE_UNSIGNED (type)
26861 : : )
26862 : : {
26863 : 0 : gimple_seq *lseq = seq;
26864 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2755;
26865 : 0 : {
26866 : 0 : res_op->set_op (ABS_EXPR, type, 1);
26867 : 0 : res_op->ops[0] = captures[0];
26868 : 0 : res_op->resimplify (lseq, valueize);
26869 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
26870 : 0 : return true;
26871 : : }
26872 : 0 : next_after_fail2755:;
26873 : : }
26874 : : }
26875 : : }
26876 : : }
26877 : : break;
26878 : : }
26879 : : default:;
26880 : : }
26881 : : }
26882 : : break;
26883 : : default:;
26884 : : }
26885 : : }
26886 : : }
26887 : : break;
26888 : : }
26889 : : default:;
26890 : : }
26891 : : }
26892 : : break;
26893 : : default:;
26894 : : }
26895 : : break;
26896 : : }
26897 : 17811 : case GT_EXPR:
26898 : 17811 : {
26899 : 17811 : tree _q20 = gimple_assign_rhs1 (_a1);
26900 : 17811 : _q20 = do_valueize (valueize, _q20);
26901 : 17811 : tree _q21 = gimple_assign_rhs2 (_a1);
26902 : 17811 : _q21 = do_valueize (valueize, _q21);
26903 : 17811 : switch (TREE_CODE (_q20))
26904 : : {
26905 : 17811 : case SSA_NAME:
26906 : 17811 : if (gimple *_d2 = get_def (valueize, _q20))
26907 : : {
26908 : 15915 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26909 : 15209 : switch (gimple_assign_rhs_code (_a2))
26910 : : {
26911 : 2 : CASE_CONVERT:
26912 : 2 : {
26913 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
26914 : 2 : _q30 = do_valueize (valueize, _q30);
26915 : 2 : if (zerop (_q21))
26916 : : {
26917 : 0 : switch (TREE_CODE (_p2))
26918 : : {
26919 : 0 : case SSA_NAME:
26920 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
26921 : : {
26922 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26923 : 0 : switch (gimple_assign_rhs_code (_a3))
26924 : : {
26925 : 0 : case NEGATE_EXPR:
26926 : 0 : {
26927 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
26928 : 0 : _q70 = do_valueize (valueize, _q70);
26929 : 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
26930 : : {
26931 : 0 : {
26932 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
26933 : 0 : const enum tree_code cmp = GT_EXPR;
26934 : 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
26935 : 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
26936 : 0 : && element_precision (captures[1])
26937 : 0 : <= element_precision (captures[0])
26938 : 0 : && bitwise_equal_p (captures[1], captures[2])
26939 : : )
26940 : : {
26941 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
26942 : : )
26943 : : {
26944 : 0 : {
26945 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
26946 : 0 : if (types_match (captures[0], stype)
26947 : : )
26948 : : {
26949 : 0 : gimple_seq *lseq = seq;
26950 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2756;
26951 : 0 : {
26952 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
26953 : 0 : res_op->ops[0] = captures[0];
26954 : 0 : res_op->resimplify (lseq, valueize);
26955 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
26956 : 0 : return true;
26957 : : }
26958 : 0 : next_after_fail2756:;
26959 : : }
26960 : : else
26961 : : {
26962 : 0 : gimple_seq *lseq = seq;
26963 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2757;
26964 : 0 : {
26965 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
26966 : 0 : {
26967 : 0 : tree _o1[1], _r1;
26968 : 0 : _o1[0] = captures[2];
26969 : 0 : if (stype != TREE_TYPE (_o1[0]) /* XXX */
26970 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o1[0])))
26971 : : {
26972 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o1[0]);
26973 : 0 : tem_op.resimplify (lseq, valueize);
26974 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
26975 : 0 : if (!_r1) goto next_after_fail2757;
26976 : : }
26977 : : else
26978 : : _r1 = _o1[0];
26979 : 0 : res_op->ops[0] = _r1;
26980 : : }
26981 : 0 : res_op->resimplify (lseq, valueize);
26982 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
26983 : 0 : return true;
26984 : : }
26985 : 0 : next_after_fail2757:;
26986 : : }
26987 : : }
26988 : : }
26989 : : else
26990 : : {
26991 : 0 : gimple_seq *lseq = seq;
26992 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2758;
26993 : 0 : {
26994 : 0 : res_op->set_op (ABS_EXPR, type, 1);
26995 : 0 : res_op->ops[0] = captures[2];
26996 : 0 : res_op->resimplify (lseq, valueize);
26997 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
26998 : 0 : return true;
26999 : : }
27000 : 0 : next_after_fail2758:;
27001 : : }
27002 : : }
27003 : : }
27004 : : }
27005 : : break;
27006 : : }
27007 : : default:;
27008 : : }
27009 : : }
27010 : : break;
27011 : : default:;
27012 : : }
27013 : : }
27014 : : break;
27015 : : }
27016 : : default:;
27017 : : }
27018 : : }
27019 : : break;
27020 : 17811 : default:;
27021 : : }
27022 : 17811 : if (zerop (_q21))
27023 : : {
27024 : 377 : switch (TREE_CODE (_p2))
27025 : : {
27026 : 57 : case SSA_NAME:
27027 : 57 : if (gimple *_d2 = get_def (valueize, _p2))
27028 : : {
27029 : 53 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27030 : 66 : switch (gimple_assign_rhs_code (_a2))
27031 : : {
27032 : 6 : case NEGATE_EXPR:
27033 : 6 : {
27034 : 6 : tree _q60 = gimple_assign_rhs1 (_a2);
27035 : 6 : _q60 = do_valueize (valueize, _q60);
27036 : 6 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
27037 : : {
27038 : 6 : {
27039 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
27040 : 6 : const enum tree_code cmp = GT_EXPR;
27041 : 6 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
27042 : 6 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
27043 : 12 : && element_precision (captures[1])
27044 : 6 : <= element_precision (captures[0])
27045 : 12 : && bitwise_equal_p (captures[1], captures[2])
27046 : : )
27047 : : {
27048 : 6 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
27049 : : )
27050 : : {
27051 : 0 : {
27052 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
27053 : 0 : if (types_match (captures[0], stype)
27054 : : )
27055 : : {
27056 : 0 : gimple_seq *lseq = seq;
27057 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2759;
27058 : 0 : {
27059 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
27060 : 0 : res_op->ops[0] = captures[0];
27061 : 0 : res_op->resimplify (lseq, valueize);
27062 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
27063 : 0 : return true;
27064 : : }
27065 : 0 : next_after_fail2759:;
27066 : : }
27067 : : else
27068 : : {
27069 : 0 : gimple_seq *lseq = seq;
27070 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2760;
27071 : 0 : {
27072 : 0 : res_op->set_op (ABSU_EXPR, type, 1);
27073 : 0 : {
27074 : 0 : tree _o1[1], _r1;
27075 : 0 : _o1[0] = captures[2];
27076 : 0 : if (stype != TREE_TYPE (_o1[0]) /* XXX */
27077 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o1[0])))
27078 : : {
27079 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o1[0]);
27080 : 0 : tem_op.resimplify (lseq, valueize);
27081 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
27082 : 0 : if (!_r1) goto next_after_fail2760;
27083 : : }
27084 : : else
27085 : : _r1 = _o1[0];
27086 : 0 : res_op->ops[0] = _r1;
27087 : : }
27088 : 0 : res_op->resimplify (lseq, valueize);
27089 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
27090 : 0 : return true;
27091 : : }
27092 : 0 : next_after_fail2760:;
27093 : : }
27094 : : }
27095 : : }
27096 : : else
27097 : : {
27098 : 6 : gimple_seq *lseq = seq;
27099 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2761;
27100 : 6 : {
27101 : 6 : res_op->set_op (ABS_EXPR, type, 1);
27102 : 6 : res_op->ops[0] = captures[2];
27103 : 6 : res_op->resimplify (lseq, valueize);
27104 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
27105 : 6 : return true;
27106 : : }
27107 : 0 : next_after_fail2761:;
27108 : : }
27109 : : }
27110 : : }
27111 : : }
27112 : : break;
27113 : : }
27114 : : default:;
27115 : : }
27116 : : }
27117 : : break;
27118 : : default:;
27119 : : }
27120 : : }
27121 : 17805 : switch (TREE_CODE (_q20))
27122 : : {
27123 : 17805 : case SSA_NAME:
27124 : 17805 : if (gimple *_d2 = get_def (valueize, _q20))
27125 : : {
27126 : 15909 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27127 : 15209 : switch (gimple_assign_rhs_code (_a2))
27128 : : {
27129 : 0 : case MINUS_EXPR:
27130 : 0 : {
27131 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
27132 : 0 : _q30 = do_valueize (valueize, _q30);
27133 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
27134 : 0 : _q31 = do_valueize (valueize, _q31);
27135 : 0 : if (zerop (_q21))
27136 : : {
27137 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
27138 : : {
27139 : 0 : switch (TREE_CODE (_p2))
27140 : : {
27141 : 0 : case SSA_NAME:
27142 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
27143 : : {
27144 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27145 : 0 : switch (gimple_assign_rhs_code (_a3))
27146 : : {
27147 : 0 : case MINUS_EXPR:
27148 : 0 : {
27149 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
27150 : 0 : _q80 = do_valueize (valueize, _q80);
27151 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
27152 : 0 : _q81 = do_valueize (valueize, _q81);
27153 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
27154 : : {
27155 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
27156 : : {
27157 : 0 : {
27158 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
27159 : 0 : const enum tree_code cmp = GT_EXPR;
27160 : 0 : if (!HONOR_SIGNED_ZEROS (type)
27161 : 0 : && !TYPE_UNSIGNED (type)
27162 : : )
27163 : : {
27164 : 0 : gimple_seq *lseq = seq;
27165 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2762;
27166 : 0 : {
27167 : 0 : res_op->set_op (ABS_EXPR, type, 1);
27168 : 0 : res_op->ops[0] = captures[0];
27169 : 0 : res_op->resimplify (lseq, valueize);
27170 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
27171 : 0 : return true;
27172 : : }
27173 : 0 : next_after_fail2762:;
27174 : : }
27175 : : }
27176 : : }
27177 : : }
27178 : : break;
27179 : : }
27180 : : default:;
27181 : : }
27182 : : }
27183 : : break;
27184 : : default:;
27185 : : }
27186 : : }
27187 : : }
27188 : : break;
27189 : : }
27190 : : default:;
27191 : : }
27192 : : }
27193 : : break;
27194 : : default:;
27195 : : }
27196 : : break;
27197 : : }
27198 : 9250 : case LE_EXPR:
27199 : 9250 : {
27200 : 9250 : tree _q20 = gimple_assign_rhs1 (_a1);
27201 : 9250 : _q20 = do_valueize (valueize, _q20);
27202 : 9250 : tree _q21 = gimple_assign_rhs2 (_a1);
27203 : 9250 : _q21 = do_valueize (valueize, _q21);
27204 : 9250 : switch (TREE_CODE (_q20))
27205 : : {
27206 : 9248 : case SSA_NAME:
27207 : 9248 : if (gimple *_d2 = get_def (valueize, _q20))
27208 : : {
27209 : 8704 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27210 : 9732 : switch (gimple_assign_rhs_code (_a2))
27211 : : {
27212 : 28 : CASE_CONVERT:
27213 : 28 : {
27214 : 28 : tree _q30 = gimple_assign_rhs1 (_a2);
27215 : 28 : _q30 = do_valueize (valueize, _q30);
27216 : 28 : if (zerop (_q21))
27217 : : {
27218 : 0 : switch (TREE_CODE (_p2))
27219 : : {
27220 : 0 : case SSA_NAME:
27221 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
27222 : : {
27223 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27224 : 0 : switch (gimple_assign_rhs_code (_a3))
27225 : : {
27226 : 0 : case NEGATE_EXPR:
27227 : 0 : {
27228 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
27229 : 0 : _q70 = do_valueize (valueize, _q70);
27230 : 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
27231 : : {
27232 : 0 : {
27233 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
27234 : 0 : const enum tree_code cmp = LE_EXPR;
27235 : 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
27236 : 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
27237 : 0 : && element_precision (captures[1])
27238 : 0 : <= element_precision (captures[0])
27239 : 0 : && bitwise_equal_p (captures[1], captures[2])
27240 : : )
27241 : : {
27242 : 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
27243 : 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
27244 : 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
27245 : : )
27246 : : {
27247 : 0 : {
27248 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
27249 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
27250 : 0 : if (types_match (captures[0], stype)
27251 : : )
27252 : : {
27253 : 0 : gimple_seq *lseq = seq;
27254 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2763;
27255 : 0 : {
27256 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27257 : 0 : {
27258 : 0 : tree _o1[1], _r1;
27259 : 0 : {
27260 : 0 : tree _o2[1], _r2;
27261 : 0 : _o2[0] = captures[0];
27262 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27263 : 0 : tem_op.resimplify (lseq, valueize);
27264 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27265 : 0 : if (!_r2) goto next_after_fail2763;
27266 : 0 : _o1[0] = _r2;
27267 : : }
27268 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27269 : 0 : (*res_op).ops[0] = _o1[0];
27270 : 0 : (*res_op).resimplify (lseq, valueize);
27271 : : }
27272 : 0 : if (type != res_op->type
27273 : 0 : && !useless_type_conversion_p (type, res_op->type))
27274 : : {
27275 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2763;
27276 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27277 : 0 : res_op->resimplify (lseq, valueize);
27278 : : }
27279 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
27280 : 0 : return true;
27281 : : }
27282 : 0 : next_after_fail2763:;
27283 : : }
27284 : : else
27285 : : {
27286 : 0 : gimple_seq *lseq = seq;
27287 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2764;
27288 : 0 : {
27289 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27290 : 0 : {
27291 : 0 : tree _o1[1], _r1;
27292 : 0 : {
27293 : 0 : tree _o2[1], _r2;
27294 : 0 : {
27295 : 0 : tree _o3[1], _r3;
27296 : 0 : _o3[0] = captures[2];
27297 : 0 : if (stype != TREE_TYPE (_o3[0]) /* XXX */
27298 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o3[0])))
27299 : : {
27300 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o3[0]);
27301 : 0 : tem_op.resimplify (lseq, valueize);
27302 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
27303 : 0 : if (!_r3) goto next_after_fail2764;
27304 : : }
27305 : : else
27306 : : _r3 = _o3[0];
27307 : 0 : _o2[0] = _r3;
27308 : : }
27309 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27310 : 0 : tem_op.resimplify (lseq, valueize);
27311 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27312 : 0 : if (!_r2) goto next_after_fail2764;
27313 : 0 : _o1[0] = _r2;
27314 : : }
27315 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27316 : 0 : (*res_op).ops[0] = _o1[0];
27317 : 0 : (*res_op).resimplify (lseq, valueize);
27318 : : }
27319 : 0 : if (type != res_op->type
27320 : 0 : && !useless_type_conversion_p (type, res_op->type))
27321 : : {
27322 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2764;
27323 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27324 : 0 : res_op->resimplify (lseq, valueize);
27325 : : }
27326 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
27327 : 0 : return true;
27328 : : }
27329 : 0 : next_after_fail2764:;
27330 : : }
27331 : : }
27332 : : }
27333 : : else
27334 : : {
27335 : 0 : gimple_seq *lseq = seq;
27336 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2765;
27337 : 0 : {
27338 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27339 : 0 : {
27340 : 0 : tree _o1[1], _r1;
27341 : 0 : {
27342 : 0 : tree _o2[1], _r2;
27343 : 0 : _o2[0] = captures[2];
27344 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27345 : 0 : tem_op.resimplify (lseq, valueize);
27346 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27347 : 0 : if (!_r2) goto next_after_fail2765;
27348 : 0 : _o1[0] = _r2;
27349 : : }
27350 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27351 : 0 : (*res_op).ops[0] = _o1[0];
27352 : 0 : (*res_op).resimplify (lseq, valueize);
27353 : : }
27354 : 0 : if (type != res_op->type
27355 : 0 : && !useless_type_conversion_p (type, res_op->type))
27356 : : {
27357 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2765;
27358 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27359 : 0 : res_op->resimplify (lseq, valueize);
27360 : : }
27361 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
27362 : 0 : return true;
27363 : : }
27364 : 0 : next_after_fail2765:;
27365 : : }
27366 : : }
27367 : : }
27368 : : }
27369 : : break;
27370 : : }
27371 : : default:;
27372 : : }
27373 : : }
27374 : : break;
27375 : : default:;
27376 : : }
27377 : : }
27378 : : break;
27379 : : }
27380 : : default:;
27381 : : }
27382 : : }
27383 : : break;
27384 : 9250 : default:;
27385 : : }
27386 : 9250 : if (zerop (_q21))
27387 : : {
27388 : 846 : switch (TREE_CODE (_p2))
27389 : : {
27390 : 129 : case SSA_NAME:
27391 : 129 : if (gimple *_d2 = get_def (valueize, _p2))
27392 : : {
27393 : 129 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27394 : 206 : switch (gimple_assign_rhs_code (_a2))
27395 : : {
27396 : 0 : case NEGATE_EXPR:
27397 : 0 : {
27398 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
27399 : 0 : _q60 = do_valueize (valueize, _q60);
27400 : 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
27401 : : {
27402 : 0 : {
27403 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
27404 : 0 : const enum tree_code cmp = LE_EXPR;
27405 : 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
27406 : 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
27407 : 0 : && element_precision (captures[1])
27408 : 0 : <= element_precision (captures[0])
27409 : 0 : && bitwise_equal_p (captures[1], captures[2])
27410 : : )
27411 : : {
27412 : 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
27413 : 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
27414 : 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
27415 : : )
27416 : : {
27417 : 0 : {
27418 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
27419 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
27420 : 0 : if (types_match (captures[0], stype)
27421 : : )
27422 : : {
27423 : 0 : gimple_seq *lseq = seq;
27424 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2766;
27425 : 0 : {
27426 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27427 : 0 : {
27428 : 0 : tree _o1[1], _r1;
27429 : 0 : {
27430 : 0 : tree _o2[1], _r2;
27431 : 0 : _o2[0] = captures[0];
27432 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27433 : 0 : tem_op.resimplify (lseq, valueize);
27434 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27435 : 0 : if (!_r2) goto next_after_fail2766;
27436 : 0 : _o1[0] = _r2;
27437 : : }
27438 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27439 : 0 : (*res_op).ops[0] = _o1[0];
27440 : 0 : (*res_op).resimplify (lseq, valueize);
27441 : : }
27442 : 0 : if (type != res_op->type
27443 : 0 : && !useless_type_conversion_p (type, res_op->type))
27444 : : {
27445 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2766;
27446 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27447 : 0 : res_op->resimplify (lseq, valueize);
27448 : : }
27449 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
27450 : 0 : return true;
27451 : : }
27452 : 0 : next_after_fail2766:;
27453 : : }
27454 : : else
27455 : : {
27456 : 0 : gimple_seq *lseq = seq;
27457 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2767;
27458 : 0 : {
27459 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27460 : 0 : {
27461 : 0 : tree _o1[1], _r1;
27462 : 0 : {
27463 : 0 : tree _o2[1], _r2;
27464 : 0 : {
27465 : 0 : tree _o3[1], _r3;
27466 : 0 : _o3[0] = captures[2];
27467 : 0 : if (stype != TREE_TYPE (_o3[0]) /* XXX */
27468 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o3[0])))
27469 : : {
27470 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o3[0]);
27471 : 0 : tem_op.resimplify (lseq, valueize);
27472 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
27473 : 0 : if (!_r3) goto next_after_fail2767;
27474 : : }
27475 : : else
27476 : : _r3 = _o3[0];
27477 : 0 : _o2[0] = _r3;
27478 : : }
27479 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27480 : 0 : tem_op.resimplify (lseq, valueize);
27481 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27482 : 0 : if (!_r2) goto next_after_fail2767;
27483 : 0 : _o1[0] = _r2;
27484 : : }
27485 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27486 : 0 : (*res_op).ops[0] = _o1[0];
27487 : 0 : (*res_op).resimplify (lseq, valueize);
27488 : : }
27489 : 0 : if (type != res_op->type
27490 : 0 : && !useless_type_conversion_p (type, res_op->type))
27491 : : {
27492 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2767;
27493 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27494 : 0 : res_op->resimplify (lseq, valueize);
27495 : : }
27496 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
27497 : 0 : return true;
27498 : : }
27499 : 0 : next_after_fail2767:;
27500 : : }
27501 : : }
27502 : : }
27503 : : else
27504 : : {
27505 : 0 : gimple_seq *lseq = seq;
27506 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2768;
27507 : 0 : {
27508 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27509 : 0 : {
27510 : 0 : tree _o1[1], _r1;
27511 : 0 : {
27512 : 0 : tree _o2[1], _r2;
27513 : 0 : _o2[0] = captures[2];
27514 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27515 : 0 : tem_op.resimplify (lseq, valueize);
27516 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27517 : 0 : if (!_r2) goto next_after_fail2768;
27518 : 0 : _o1[0] = _r2;
27519 : : }
27520 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27521 : 0 : (*res_op).ops[0] = _o1[0];
27522 : 0 : (*res_op).resimplify (lseq, valueize);
27523 : : }
27524 : 0 : if (type != res_op->type
27525 : 0 : && !useless_type_conversion_p (type, res_op->type))
27526 : : {
27527 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2768;
27528 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27529 : 0 : res_op->resimplify (lseq, valueize);
27530 : : }
27531 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
27532 : 0 : return true;
27533 : : }
27534 : 0 : next_after_fail2768:;
27535 : : }
27536 : : }
27537 : : }
27538 : : }
27539 : : break;
27540 : : }
27541 : : default:;
27542 : : }
27543 : : }
27544 : : break;
27545 : : default:;
27546 : : }
27547 : : }
27548 : 9250 : switch (TREE_CODE (_q20))
27549 : : {
27550 : 9248 : case SSA_NAME:
27551 : 9248 : if (gimple *_d2 = get_def (valueize, _q20))
27552 : : {
27553 : 8704 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27554 : 9732 : switch (gimple_assign_rhs_code (_a2))
27555 : : {
27556 : 120 : case MINUS_EXPR:
27557 : 120 : {
27558 : 120 : tree _q30 = gimple_assign_rhs1 (_a2);
27559 : 120 : _q30 = do_valueize (valueize, _q30);
27560 : 120 : tree _q31 = gimple_assign_rhs2 (_a2);
27561 : 120 : _q31 = do_valueize (valueize, _q31);
27562 : 120 : if (zerop (_q21))
27563 : : {
27564 : 120 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
27565 : : {
27566 : 0 : switch (TREE_CODE (_p2))
27567 : : {
27568 : 0 : case SSA_NAME:
27569 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
27570 : : {
27571 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27572 : 0 : switch (gimple_assign_rhs_code (_a3))
27573 : : {
27574 : 0 : case MINUS_EXPR:
27575 : 0 : {
27576 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
27577 : 0 : _q80 = do_valueize (valueize, _q80);
27578 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
27579 : 0 : _q81 = do_valueize (valueize, _q81);
27580 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
27581 : : {
27582 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
27583 : : {
27584 : 0 : {
27585 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
27586 : 0 : const enum tree_code cmp = LE_EXPR;
27587 : 0 : if (!HONOR_SIGNED_ZEROS (type)
27588 : 0 : && !TYPE_UNSIGNED (type)
27589 : : )
27590 : : {
27591 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
27592 : 0 : && !TYPE_OVERFLOW_WRAPS (type)
27593 : : )
27594 : : {
27595 : 0 : {
27596 : 0 : tree utype = unsigned_type_for (type);
27597 : 0 : gimple_seq *lseq = seq;
27598 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2769;
27599 : 0 : {
27600 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27601 : 0 : {
27602 : 0 : tree _o1[1], _r1;
27603 : 0 : {
27604 : 0 : tree _o2[1], _r2;
27605 : 0 : _o2[0] = captures[0];
27606 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27607 : 0 : tem_op.resimplify (lseq, valueize);
27608 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27609 : 0 : if (!_r2) goto next_after_fail2769;
27610 : 0 : _o1[0] = _r2;
27611 : : }
27612 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27613 : 0 : (*res_op).ops[0] = _o1[0];
27614 : 0 : (*res_op).resimplify (lseq, valueize);
27615 : : }
27616 : 0 : if (type != res_op->type
27617 : 0 : && !useless_type_conversion_p (type, res_op->type))
27618 : : {
27619 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2769;
27620 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27621 : 0 : res_op->resimplify (lseq, valueize);
27622 : : }
27623 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 829, __FILE__, __LINE__, true);
27624 : 0 : return true;
27625 : : }
27626 : 0 : next_after_fail2769:;
27627 : : }
27628 : : }
27629 : : else
27630 : : {
27631 : 0 : gimple_seq *lseq = seq;
27632 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2770;
27633 : 0 : {
27634 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
27635 : 0 : {
27636 : 0 : tree _o1[1], _r1;
27637 : 0 : _o1[0] = captures[0];
27638 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
27639 : 0 : tem_op.resimplify (lseq, valueize);
27640 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
27641 : 0 : if (!_r1) goto next_after_fail2770;
27642 : 0 : res_op->ops[0] = _r1;
27643 : : }
27644 : 0 : res_op->resimplify (lseq, valueize);
27645 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
27646 : 0 : return true;
27647 : : }
27648 : 0 : next_after_fail2770:;
27649 : : }
27650 : : }
27651 : : }
27652 : : }
27653 : : }
27654 : : break;
27655 : : }
27656 : : default:;
27657 : : }
27658 : : }
27659 : : break;
27660 : : default:;
27661 : : }
27662 : : }
27663 : : }
27664 : : break;
27665 : : }
27666 : : default:;
27667 : : }
27668 : : }
27669 : : break;
27670 : : default:;
27671 : : }
27672 : : break;
27673 : : }
27674 : 21668 : case LT_EXPR:
27675 : 21668 : {
27676 : 21668 : tree _q20 = gimple_assign_rhs1 (_a1);
27677 : 21668 : _q20 = do_valueize (valueize, _q20);
27678 : 21668 : tree _q21 = gimple_assign_rhs2 (_a1);
27679 : 21668 : _q21 = do_valueize (valueize, _q21);
27680 : 21668 : switch (TREE_CODE (_q20))
27681 : : {
27682 : 21668 : case SSA_NAME:
27683 : 21668 : if (gimple *_d2 = get_def (valueize, _q20))
27684 : : {
27685 : 19332 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27686 : 23899 : switch (gimple_assign_rhs_code (_a2))
27687 : : {
27688 : 0 : CASE_CONVERT:
27689 : 0 : {
27690 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
27691 : 0 : _q30 = do_valueize (valueize, _q30);
27692 : 0 : if (zerop (_q21))
27693 : : {
27694 : 0 : switch (TREE_CODE (_p2))
27695 : : {
27696 : 0 : case SSA_NAME:
27697 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
27698 : : {
27699 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27700 : 0 : switch (gimple_assign_rhs_code (_a3))
27701 : : {
27702 : 0 : case NEGATE_EXPR:
27703 : 0 : {
27704 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
27705 : 0 : _q70 = do_valueize (valueize, _q70);
27706 : 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
27707 : : {
27708 : 0 : {
27709 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
27710 : 0 : const enum tree_code cmp = LT_EXPR;
27711 : 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
27712 : 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
27713 : 0 : && element_precision (captures[1])
27714 : 0 : <= element_precision (captures[0])
27715 : 0 : && bitwise_equal_p (captures[1], captures[2])
27716 : : )
27717 : : {
27718 : 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
27719 : 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
27720 : 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
27721 : : )
27722 : : {
27723 : 0 : {
27724 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
27725 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
27726 : 0 : if (types_match (captures[0], stype)
27727 : : )
27728 : : {
27729 : 0 : gimple_seq *lseq = seq;
27730 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2771;
27731 : 0 : {
27732 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27733 : 0 : {
27734 : 0 : tree _o1[1], _r1;
27735 : 0 : {
27736 : 0 : tree _o2[1], _r2;
27737 : 0 : _o2[0] = captures[0];
27738 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27739 : 0 : tem_op.resimplify (lseq, valueize);
27740 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27741 : 0 : if (!_r2) goto next_after_fail2771;
27742 : 0 : _o1[0] = _r2;
27743 : : }
27744 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27745 : 0 : (*res_op).ops[0] = _o1[0];
27746 : 0 : (*res_op).resimplify (lseq, valueize);
27747 : : }
27748 : 0 : if (type != res_op->type
27749 : 0 : && !useless_type_conversion_p (type, res_op->type))
27750 : : {
27751 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2771;
27752 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27753 : 0 : res_op->resimplify (lseq, valueize);
27754 : : }
27755 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
27756 : 0 : return true;
27757 : : }
27758 : 0 : next_after_fail2771:;
27759 : : }
27760 : : else
27761 : : {
27762 : 0 : gimple_seq *lseq = seq;
27763 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2772;
27764 : 0 : {
27765 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27766 : 0 : {
27767 : 0 : tree _o1[1], _r1;
27768 : 0 : {
27769 : 0 : tree _o2[1], _r2;
27770 : 0 : {
27771 : 0 : tree _o3[1], _r3;
27772 : 0 : _o3[0] = captures[2];
27773 : 0 : if (stype != TREE_TYPE (_o3[0]) /* XXX */
27774 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o3[0])))
27775 : : {
27776 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o3[0]);
27777 : 0 : tem_op.resimplify (lseq, valueize);
27778 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
27779 : 0 : if (!_r3) goto next_after_fail2772;
27780 : : }
27781 : : else
27782 : : _r3 = _o3[0];
27783 : 0 : _o2[0] = _r3;
27784 : : }
27785 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27786 : 0 : tem_op.resimplify (lseq, valueize);
27787 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27788 : 0 : if (!_r2) goto next_after_fail2772;
27789 : 0 : _o1[0] = _r2;
27790 : : }
27791 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27792 : 0 : (*res_op).ops[0] = _o1[0];
27793 : 0 : (*res_op).resimplify (lseq, valueize);
27794 : : }
27795 : 0 : if (type != res_op->type
27796 : 0 : && !useless_type_conversion_p (type, res_op->type))
27797 : : {
27798 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2772;
27799 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27800 : 0 : res_op->resimplify (lseq, valueize);
27801 : : }
27802 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
27803 : 0 : return true;
27804 : : }
27805 : 0 : next_after_fail2772:;
27806 : : }
27807 : : }
27808 : : }
27809 : : else
27810 : : {
27811 : 0 : gimple_seq *lseq = seq;
27812 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2773;
27813 : 0 : {
27814 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27815 : 0 : {
27816 : 0 : tree _o1[1], _r1;
27817 : 0 : {
27818 : 0 : tree _o2[1], _r2;
27819 : 0 : _o2[0] = captures[2];
27820 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27821 : 0 : tem_op.resimplify (lseq, valueize);
27822 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27823 : 0 : if (!_r2) goto next_after_fail2773;
27824 : 0 : _o1[0] = _r2;
27825 : : }
27826 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27827 : 0 : (*res_op).ops[0] = _o1[0];
27828 : 0 : (*res_op).resimplify (lseq, valueize);
27829 : : }
27830 : 0 : if (type != res_op->type
27831 : 0 : && !useless_type_conversion_p (type, res_op->type))
27832 : : {
27833 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2773;
27834 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27835 : 0 : res_op->resimplify (lseq, valueize);
27836 : : }
27837 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
27838 : 0 : return true;
27839 : : }
27840 : 0 : next_after_fail2773:;
27841 : : }
27842 : : }
27843 : : }
27844 : : }
27845 : : break;
27846 : : }
27847 : : default:;
27848 : : }
27849 : : }
27850 : : break;
27851 : : default:;
27852 : : }
27853 : : }
27854 : : break;
27855 : : }
27856 : : default:;
27857 : : }
27858 : : }
27859 : : break;
27860 : 21668 : default:;
27861 : : }
27862 : 21668 : if (zerop (_q21))
27863 : : {
27864 : 6019 : switch (TREE_CODE (_p2))
27865 : : {
27866 : 3350 : case SSA_NAME:
27867 : 3350 : if (gimple *_d2 = get_def (valueize, _p2))
27868 : : {
27869 : 3274 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27870 : 3264 : switch (gimple_assign_rhs_code (_a2))
27871 : : {
27872 : 10 : case NEGATE_EXPR:
27873 : 10 : {
27874 : 10 : tree _q60 = gimple_assign_rhs1 (_a2);
27875 : 10 : _q60 = do_valueize (valueize, _q60);
27876 : 10 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
27877 : : {
27878 : 0 : {
27879 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
27880 : 0 : const enum tree_code cmp = LT_EXPR;
27881 : 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
27882 : 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
27883 : 0 : && element_precision (captures[1])
27884 : 0 : <= element_precision (captures[0])
27885 : 0 : && bitwise_equal_p (captures[1], captures[2])
27886 : : )
27887 : : {
27888 : 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
27889 : 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
27890 : 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
27891 : : )
27892 : : {
27893 : 0 : {
27894 : 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
27895 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
27896 : 0 : if (types_match (captures[0], stype)
27897 : : )
27898 : : {
27899 : 0 : gimple_seq *lseq = seq;
27900 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2774;
27901 : 0 : {
27902 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27903 : 0 : {
27904 : 0 : tree _o1[1], _r1;
27905 : 0 : {
27906 : 0 : tree _o2[1], _r2;
27907 : 0 : _o2[0] = captures[0];
27908 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27909 : 0 : tem_op.resimplify (lseq, valueize);
27910 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27911 : 0 : if (!_r2) goto next_after_fail2774;
27912 : 0 : _o1[0] = _r2;
27913 : : }
27914 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27915 : 0 : (*res_op).ops[0] = _o1[0];
27916 : 0 : (*res_op).resimplify (lseq, valueize);
27917 : : }
27918 : 0 : if (type != res_op->type
27919 : 0 : && !useless_type_conversion_p (type, res_op->type))
27920 : : {
27921 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2774;
27922 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27923 : 0 : res_op->resimplify (lseq, valueize);
27924 : : }
27925 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
27926 : 0 : return true;
27927 : : }
27928 : 0 : next_after_fail2774:;
27929 : : }
27930 : : else
27931 : : {
27932 : 0 : gimple_seq *lseq = seq;
27933 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2775;
27934 : 0 : {
27935 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27936 : 0 : {
27937 : 0 : tree _o1[1], _r1;
27938 : 0 : {
27939 : 0 : tree _o2[1], _r2;
27940 : 0 : {
27941 : 0 : tree _o3[1], _r3;
27942 : 0 : _o3[0] = captures[2];
27943 : 0 : if (stype != TREE_TYPE (_o3[0]) /* XXX */
27944 : 0 : && !useless_type_conversion_p (stype, TREE_TYPE (_o3[0])))
27945 : : {
27946 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o3[0]);
27947 : 0 : tem_op.resimplify (lseq, valueize);
27948 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
27949 : 0 : if (!_r3) goto next_after_fail2775;
27950 : : }
27951 : : else
27952 : : _r3 = _o3[0];
27953 : 0 : _o2[0] = _r3;
27954 : : }
27955 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
27956 : 0 : tem_op.resimplify (lseq, valueize);
27957 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27958 : 0 : if (!_r2) goto next_after_fail2775;
27959 : 0 : _o1[0] = _r2;
27960 : : }
27961 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27962 : 0 : (*res_op).ops[0] = _o1[0];
27963 : 0 : (*res_op).resimplify (lseq, valueize);
27964 : : }
27965 : 0 : if (type != res_op->type
27966 : 0 : && !useless_type_conversion_p (type, res_op->type))
27967 : : {
27968 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2775;
27969 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27970 : 0 : res_op->resimplify (lseq, valueize);
27971 : : }
27972 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
27973 : 0 : return true;
27974 : : }
27975 : 0 : next_after_fail2775:;
27976 : : }
27977 : : }
27978 : : }
27979 : : else
27980 : : {
27981 : 0 : gimple_seq *lseq = seq;
27982 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2776;
27983 : 0 : {
27984 : 0 : res_op->set_op (NOP_EXPR, type, 1);
27985 : 0 : {
27986 : 0 : tree _o1[1], _r1;
27987 : 0 : {
27988 : 0 : tree _o2[1], _r2;
27989 : 0 : _o2[0] = captures[2];
27990 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
27991 : 0 : tem_op.resimplify (lseq, valueize);
27992 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
27993 : 0 : if (!_r2) goto next_after_fail2776;
27994 : 0 : _o1[0] = _r2;
27995 : : }
27996 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
27997 : 0 : (*res_op).ops[0] = _o1[0];
27998 : 0 : (*res_op).resimplify (lseq, valueize);
27999 : : }
28000 : 0 : if (type != res_op->type
28001 : 0 : && !useless_type_conversion_p (type, res_op->type))
28002 : : {
28003 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2776;
28004 : 0 : res_op->set_op (NOP_EXPR, type, 1);
28005 : 0 : res_op->resimplify (lseq, valueize);
28006 : : }
28007 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
28008 : 0 : return true;
28009 : : }
28010 : 0 : next_after_fail2776:;
28011 : : }
28012 : : }
28013 : : }
28014 : : }
28015 : : break;
28016 : : }
28017 : : default:;
28018 : : }
28019 : : }
28020 : : break;
28021 : : default:;
28022 : : }
28023 : : }
28024 : 21668 : switch (TREE_CODE (_q20))
28025 : : {
28026 : 21668 : case SSA_NAME:
28027 : 21668 : if (gimple *_d2 = get_def (valueize, _q20))
28028 : : {
28029 : 19332 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28030 : 23899 : switch (gimple_assign_rhs_code (_a2))
28031 : : {
28032 : 81 : case MINUS_EXPR:
28033 : 81 : {
28034 : 81 : tree _q30 = gimple_assign_rhs1 (_a2);
28035 : 81 : _q30 = do_valueize (valueize, _q30);
28036 : 81 : tree _q31 = gimple_assign_rhs2 (_a2);
28037 : 81 : _q31 = do_valueize (valueize, _q31);
28038 : 81 : if (zerop (_q21))
28039 : : {
28040 : 66 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
28041 : : {
28042 : 0 : switch (TREE_CODE (_p2))
28043 : : {
28044 : 0 : case SSA_NAME:
28045 : 0 : if (gimple *_d3 = get_def (valueize, _p2))
28046 : : {
28047 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
28048 : 0 : switch (gimple_assign_rhs_code (_a3))
28049 : : {
28050 : 0 : case MINUS_EXPR:
28051 : 0 : {
28052 : 0 : tree _q80 = gimple_assign_rhs1 (_a3);
28053 : 0 : _q80 = do_valueize (valueize, _q80);
28054 : 0 : tree _q81 = gimple_assign_rhs2 (_a3);
28055 : 0 : _q81 = do_valueize (valueize, _q81);
28056 : 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
28057 : : {
28058 : 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
28059 : : {
28060 : 0 : {
28061 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
28062 : 0 : const enum tree_code cmp = LT_EXPR;
28063 : 0 : if (!HONOR_SIGNED_ZEROS (type)
28064 : 0 : && !TYPE_UNSIGNED (type)
28065 : : )
28066 : : {
28067 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
28068 : 0 : && !TYPE_OVERFLOW_WRAPS (type)
28069 : : )
28070 : : {
28071 : 0 : {
28072 : 0 : tree utype = unsigned_type_for (type);
28073 : 0 : gimple_seq *lseq = seq;
28074 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2777;
28075 : 0 : {
28076 : 0 : res_op->set_op (NOP_EXPR, type, 1);
28077 : 0 : {
28078 : 0 : tree _o1[1], _r1;
28079 : 0 : {
28080 : 0 : tree _o2[1], _r2;
28081 : 0 : _o2[0] = captures[0];
28082 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, _o2[0]);
28083 : 0 : tem_op.resimplify (lseq, valueize);
28084 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28085 : 0 : if (!_r2) goto next_after_fail2777;
28086 : 0 : _o1[0] = _r2;
28087 : : }
28088 : 0 : (*res_op).set_op (NEGATE_EXPR, TREE_TYPE (_o1[0]), 1);
28089 : 0 : (*res_op).ops[0] = _o1[0];
28090 : 0 : (*res_op).resimplify (lseq, valueize);
28091 : : }
28092 : 0 : if (type != res_op->type
28093 : 0 : && !useless_type_conversion_p (type, res_op->type))
28094 : : {
28095 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2777;
28096 : 0 : res_op->set_op (NOP_EXPR, type, 1);
28097 : 0 : res_op->resimplify (lseq, valueize);
28098 : : }
28099 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 829, __FILE__, __LINE__, true);
28100 : 0 : return true;
28101 : : }
28102 : 0 : next_after_fail2777:;
28103 : : }
28104 : : }
28105 : : else
28106 : : {
28107 : 0 : gimple_seq *lseq = seq;
28108 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2778;
28109 : 0 : {
28110 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
28111 : 0 : {
28112 : 0 : tree _o1[1], _r1;
28113 : 0 : _o1[0] = captures[0];
28114 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
28115 : 0 : tem_op.resimplify (lseq, valueize);
28116 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28117 : 0 : if (!_r1) goto next_after_fail2778;
28118 : 0 : res_op->ops[0] = _r1;
28119 : : }
28120 : 0 : res_op->resimplify (lseq, valueize);
28121 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
28122 : 0 : return true;
28123 : : }
28124 : 0 : next_after_fail2778:;
28125 : : }
28126 : : }
28127 : : }
28128 : : }
28129 : : }
28130 : : break;
28131 : : }
28132 : : default:;
28133 : : }
28134 : : }
28135 : : break;
28136 : : default:;
28137 : : }
28138 : : }
28139 : : }
28140 : : break;
28141 : : }
28142 : : default:;
28143 : : }
28144 : : }
28145 : : break;
28146 : : default:;
28147 : : }
28148 : : break;
28149 : : }
28150 : : default:;
28151 : : }
28152 : : }
28153 : : break;
28154 : 174650 : default:;
28155 : : }
28156 : 174650 : {
28157 : 174650 : tree _p0_pops[1];
28158 : 174650 : if (gimple_logical_inverted_value (_p0, _p0_pops, valueize))
28159 : : {
28160 : 6504 : tree _q20 = _p0_pops[0];
28161 : 6504 : if (gimple_truth_valued_p (_q20, valueize))
28162 : : {
28163 : 24 : {
28164 : 24 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
28165 : 24 : if (VEC_COND_EXPR == VEC_COND_EXPR
28166 : : || TYPE_UNSIGNED (TREE_TYPE (captures[0]))
28167 : : )
28168 : : {
28169 : 24 : gimple_seq *lseq = seq;
28170 : 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2779;
28171 : 24 : {
28172 : 24 : res_op->set_op (VEC_COND_EXPR, type, 3);
28173 : 24 : res_op->ops[0] = captures[0];
28174 : 24 : res_op->ops[1] = captures[2];
28175 : 24 : res_op->ops[2] = captures[1];
28176 : 24 : res_op->resimplify (lseq, valueize);
28177 : 24 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1225, __FILE__, __LINE__, true);
28178 : 24 : return true;
28179 : : }
28180 : 0 : next_after_fail2779:;
28181 : : }
28182 : : }
28183 : : }
28184 : : }
28185 : : }
28186 : 174626 : switch (TREE_CODE (_p1))
28187 : : {
28188 : 40151 : case SSA_NAME:
28189 : 40151 : if (gimple *_d1 = get_def (valueize, _p1))
28190 : : {
28191 : 34181 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
28192 : 34266 : switch (gimple_assign_rhs_code (_a1))
28193 : : {
28194 : 3346 : case VIEW_CONVERT_EXPR:
28195 : 3346 : {
28196 : 3346 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
28197 : 3346 : if ((TREE_CODE (_q30) == SSA_NAME
28198 : 3346 : || is_gimple_min_invariant (_q30)))
28199 : : {
28200 : 3346 : _q30 = do_valueize (valueize, _q30);
28201 : 3346 : switch (TREE_CODE (_q30))
28202 : : {
28203 : 3346 : case SSA_NAME:
28204 : 3346 : if (gimple *_d2 = get_def (valueize, _q30))
28205 : : {
28206 : 3262 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28207 : 1914 : switch (gimple_assign_rhs_code (_a2))
28208 : : {
28209 : 96 : case NEGATE_EXPR:
28210 : 96 : {
28211 : 96 : tree _q40 = gimple_assign_rhs1 (_a2);
28212 : 96 : _q40 = do_valueize (valueize, _q40);
28213 : 96 : {
28214 : 96 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _p2 };
28215 : 96 : {
28216 : 96 : tree op_type = TREE_TYPE (captures[1]);
28217 : 96 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NEG), op_type)
28218 : 96 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28219 : : )
28220 : : {
28221 : 0 : gimple_seq *lseq = seq;
28222 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2780;
28223 : 0 : {
28224 : 0 : res_op->set_op (CFN_COND_NEG, type, 3);
28225 : 0 : res_op->ops[0] = captures[0];
28226 : 0 : {
28227 : 0 : tree _o1[1], _r1;
28228 : 0 : _o1[0] = captures[2];
28229 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28230 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28231 : : {
28232 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28233 : 0 : tem_op.resimplify (lseq, valueize);
28234 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28235 : 0 : if (!_r1) goto next_after_fail2780;
28236 : : }
28237 : : else
28238 : : _r1 = _o1[0];
28239 : 0 : res_op->ops[1] = _r1;
28240 : : }
28241 : 0 : res_op->ops[2] = captures[3];
28242 : 0 : res_op->resimplify (lseq, valueize);
28243 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1242, __FILE__, __LINE__, true);
28244 : 0 : return true;
28245 : : }
28246 : 96 : next_after_fail2780:;
28247 : : }
28248 : : }
28249 : : }
28250 : 96 : break;
28251 : : }
28252 : 0 : case BIT_NOT_EXPR:
28253 : 0 : {
28254 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
28255 : 0 : _q40 = do_valueize (valueize, _q40);
28256 : 0 : {
28257 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _p2 };
28258 : 0 : {
28259 : 0 : tree op_type = TREE_TYPE (captures[1]);
28260 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NOT), op_type)
28261 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28262 : : )
28263 : : {
28264 : 0 : gimple_seq *lseq = seq;
28265 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2781;
28266 : 0 : {
28267 : 0 : res_op->set_op (CFN_COND_NOT, type, 3);
28268 : 0 : res_op->ops[0] = captures[0];
28269 : 0 : {
28270 : 0 : tree _o1[1], _r1;
28271 : 0 : _o1[0] = captures[2];
28272 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28273 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28274 : : {
28275 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28276 : 0 : tem_op.resimplify (lseq, valueize);
28277 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28278 : 0 : if (!_r1) goto next_after_fail2781;
28279 : : }
28280 : : else
28281 : : _r1 = _o1[0];
28282 : 0 : res_op->ops[1] = _r1;
28283 : : }
28284 : 0 : res_op->ops[2] = captures[3];
28285 : 0 : res_op->resimplify (lseq, valueize);
28286 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1242, __FILE__, __LINE__, true);
28287 : 0 : return true;
28288 : : }
28289 : 0 : next_after_fail2781:;
28290 : : }
28291 : : }
28292 : : }
28293 : 0 : break;
28294 : : }
28295 : : default:;
28296 : : }
28297 : : }
28298 : : break;
28299 : : default:;
28300 : : }
28301 : : }
28302 : : break;
28303 : : }
28304 : 50 : case NEGATE_EXPR:
28305 : 50 : {
28306 : 50 : tree _q30 = gimple_assign_rhs1 (_a1);
28307 : 50 : _q30 = do_valueize (valueize, _q30);
28308 : 50 : {
28309 : 50 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _p2 };
28310 : 50 : {
28311 : 50 : tree op_type = TREE_TYPE (captures[1]);
28312 : 50 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NEG), op_type)
28313 : 50 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28314 : : )
28315 : : {
28316 : 0 : gimple_seq *lseq = seq;
28317 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2782;
28318 : 0 : {
28319 : 0 : res_op->set_op (CFN_COND_NEG, type, 3);
28320 : 0 : res_op->ops[0] = captures[0];
28321 : 0 : {
28322 : 0 : tree _o1[1], _r1;
28323 : 0 : _o1[0] = captures[2];
28324 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28325 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28326 : : {
28327 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28328 : 0 : tem_op.resimplify (lseq, valueize);
28329 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28330 : 0 : if (!_r1) goto next_after_fail2782;
28331 : : }
28332 : : else
28333 : : _r1 = _o1[0];
28334 : 0 : res_op->ops[1] = _r1;
28335 : : }
28336 : 0 : res_op->ops[2] = captures[3];
28337 : 0 : res_op->resimplify (lseq, valueize);
28338 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1242, __FILE__, __LINE__, true);
28339 : 0 : return true;
28340 : : }
28341 : 50 : next_after_fail2782:;
28342 : : }
28343 : : }
28344 : : }
28345 : 50 : break;
28346 : : }
28347 : 0 : case BIT_NOT_EXPR:
28348 : 0 : {
28349 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
28350 : 0 : _q30 = do_valueize (valueize, _q30);
28351 : 0 : {
28352 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _p2 };
28353 : 0 : {
28354 : 0 : tree op_type = TREE_TYPE (captures[1]);
28355 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NOT), op_type)
28356 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28357 : : )
28358 : : {
28359 : 0 : gimple_seq *lseq = seq;
28360 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2783;
28361 : 0 : {
28362 : 0 : res_op->set_op (CFN_COND_NOT, type, 3);
28363 : 0 : res_op->ops[0] = captures[0];
28364 : 0 : {
28365 : 0 : tree _o1[1], _r1;
28366 : 0 : _o1[0] = captures[2];
28367 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28368 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28369 : : {
28370 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28371 : 0 : tem_op.resimplify (lseq, valueize);
28372 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28373 : 0 : if (!_r1) goto next_after_fail2783;
28374 : : }
28375 : : else
28376 : : _r1 = _o1[0];
28377 : 0 : res_op->ops[1] = _r1;
28378 : : }
28379 : 0 : res_op->ops[2] = captures[3];
28380 : 0 : res_op->resimplify (lseq, valueize);
28381 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1242, __FILE__, __LINE__, true);
28382 : 0 : return true;
28383 : : }
28384 : 0 : next_after_fail2783:;
28385 : : }
28386 : : }
28387 : : }
28388 : 0 : break;
28389 : : }
28390 : : default:;
28391 : : }
28392 : : }
28393 : : break;
28394 : 174626 : default:;
28395 : : }
28396 : 174626 : switch (TREE_CODE (_p2))
28397 : : {
28398 : 41927 : case SSA_NAME:
28399 : 41927 : if (gimple *_d1 = get_def (valueize, _p2))
28400 : : {
28401 : 36270 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
28402 : 37795 : switch (gimple_assign_rhs_code (_a1))
28403 : : {
28404 : 5193 : case VIEW_CONVERT_EXPR:
28405 : 5193 : {
28406 : 5193 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
28407 : 5193 : if ((TREE_CODE (_q40) == SSA_NAME
28408 : 5193 : || is_gimple_min_invariant (_q40)))
28409 : : {
28410 : 5193 : _q40 = do_valueize (valueize, _q40);
28411 : 5193 : switch (TREE_CODE (_q40))
28412 : : {
28413 : 5193 : case SSA_NAME:
28414 : 5193 : if (gimple *_d2 = get_def (valueize, _q40))
28415 : : {
28416 : 5131 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28417 : 3447 : switch (gimple_assign_rhs_code (_a2))
28418 : : {
28419 : 20 : case NEGATE_EXPR:
28420 : 20 : {
28421 : 20 : tree _q50 = gimple_assign_rhs1 (_a2);
28422 : 20 : _q50 = do_valueize (valueize, _q50);
28423 : 20 : {
28424 : 20 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50 };
28425 : 20 : {
28426 : 20 : tree op_type = TREE_TYPE (captures[2]);
28427 : 20 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NEG), op_type)
28428 : 20 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28429 : : )
28430 : : {
28431 : 0 : gimple_seq *lseq = seq;
28432 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2784;
28433 : 0 : {
28434 : 0 : res_op->set_op (CFN_COND_NEG, type, 3);
28435 : 0 : {
28436 : 0 : tree _o1[1], _r1;
28437 : 0 : _o1[0] = captures[0];
28438 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
28439 : 0 : tem_op.resimplify (lseq, valueize);
28440 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28441 : 0 : if (!_r1) goto next_after_fail2784;
28442 : 0 : res_op->ops[0] = _r1;
28443 : : }
28444 : 0 : {
28445 : 0 : tree _o1[1], _r1;
28446 : 0 : _o1[0] = captures[3];
28447 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28448 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28449 : : {
28450 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28451 : 0 : tem_op.resimplify (lseq, valueize);
28452 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28453 : 0 : if (!_r1) goto next_after_fail2784;
28454 : : }
28455 : : else
28456 : : _r1 = _o1[0];
28457 : 0 : res_op->ops[1] = _r1;
28458 : : }
28459 : 0 : res_op->ops[2] = captures[1];
28460 : 0 : res_op->resimplify (lseq, valueize);
28461 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1243, __FILE__, __LINE__, true);
28462 : 0 : return true;
28463 : : }
28464 : 20 : next_after_fail2784:;
28465 : : }
28466 : : }
28467 : : }
28468 : 20 : break;
28469 : : }
28470 : 0 : case BIT_NOT_EXPR:
28471 : 0 : {
28472 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
28473 : 0 : _q50 = do_valueize (valueize, _q50);
28474 : 0 : {
28475 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50 };
28476 : 0 : {
28477 : 0 : tree op_type = TREE_TYPE (captures[2]);
28478 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NOT), op_type)
28479 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28480 : : )
28481 : : {
28482 : 0 : gimple_seq *lseq = seq;
28483 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2785;
28484 : 0 : {
28485 : 0 : res_op->set_op (CFN_COND_NOT, type, 3);
28486 : 0 : {
28487 : 0 : tree _o1[1], _r1;
28488 : 0 : _o1[0] = captures[0];
28489 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
28490 : 0 : tem_op.resimplify (lseq, valueize);
28491 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28492 : 0 : if (!_r1) goto next_after_fail2785;
28493 : 0 : res_op->ops[0] = _r1;
28494 : : }
28495 : 0 : {
28496 : 0 : tree _o1[1], _r1;
28497 : 0 : _o1[0] = captures[3];
28498 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28499 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28500 : : {
28501 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28502 : 0 : tem_op.resimplify (lseq, valueize);
28503 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28504 : 0 : if (!_r1) goto next_after_fail2785;
28505 : : }
28506 : : else
28507 : : _r1 = _o1[0];
28508 : 0 : res_op->ops[1] = _r1;
28509 : : }
28510 : 0 : res_op->ops[2] = captures[1];
28511 : 0 : res_op->resimplify (lseq, valueize);
28512 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1243, __FILE__, __LINE__, true);
28513 : 0 : return true;
28514 : : }
28515 : 0 : next_after_fail2785:;
28516 : : }
28517 : : }
28518 : : }
28519 : 0 : break;
28520 : : }
28521 : : default:;
28522 : : }
28523 : : }
28524 : : break;
28525 : : default:;
28526 : : }
28527 : : }
28528 : : break;
28529 : : }
28530 : 46 : case NEGATE_EXPR:
28531 : 46 : {
28532 : 46 : tree _q40 = gimple_assign_rhs1 (_a1);
28533 : 46 : _q40 = do_valueize (valueize, _q40);
28534 : 46 : {
28535 : 46 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40 };
28536 : 46 : {
28537 : 46 : tree op_type = TREE_TYPE (captures[2]);
28538 : 46 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NEG), op_type)
28539 : 46 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28540 : : )
28541 : : {
28542 : 0 : gimple_seq *lseq = seq;
28543 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2786;
28544 : 0 : {
28545 : 0 : res_op->set_op (CFN_COND_NEG, type, 3);
28546 : 0 : {
28547 : 0 : tree _o1[1], _r1;
28548 : 0 : _o1[0] = captures[0];
28549 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
28550 : 0 : tem_op.resimplify (lseq, valueize);
28551 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28552 : 0 : if (!_r1) goto next_after_fail2786;
28553 : 0 : res_op->ops[0] = _r1;
28554 : : }
28555 : 0 : {
28556 : 0 : tree _o1[1], _r1;
28557 : 0 : _o1[0] = captures[3];
28558 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28559 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28560 : : {
28561 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28562 : 0 : tem_op.resimplify (lseq, valueize);
28563 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28564 : 0 : if (!_r1) goto next_after_fail2786;
28565 : : }
28566 : : else
28567 : : _r1 = _o1[0];
28568 : 0 : res_op->ops[1] = _r1;
28569 : : }
28570 : 0 : res_op->ops[2] = captures[1];
28571 : 0 : res_op->resimplify (lseq, valueize);
28572 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1243, __FILE__, __LINE__, true);
28573 : 0 : return true;
28574 : : }
28575 : 46 : next_after_fail2786:;
28576 : : }
28577 : : }
28578 : : }
28579 : 46 : break;
28580 : : }
28581 : 2 : case BIT_NOT_EXPR:
28582 : 2 : {
28583 : 2 : tree _q40 = gimple_assign_rhs1 (_a1);
28584 : 2 : _q40 = do_valueize (valueize, _q40);
28585 : 2 : {
28586 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40 };
28587 : 2 : {
28588 : 2 : tree op_type = TREE_TYPE (captures[2]);
28589 : 2 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_NOT), op_type)
28590 : 2 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28591 : : )
28592 : : {
28593 : 0 : gimple_seq *lseq = seq;
28594 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2787;
28595 : 0 : {
28596 : 0 : res_op->set_op (CFN_COND_NOT, type, 3);
28597 : 0 : {
28598 : 0 : tree _o1[1], _r1;
28599 : 0 : _o1[0] = captures[0];
28600 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
28601 : 0 : tem_op.resimplify (lseq, valueize);
28602 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28603 : 0 : if (!_r1) goto next_after_fail2787;
28604 : 0 : res_op->ops[0] = _r1;
28605 : : }
28606 : 0 : {
28607 : 0 : tree _o1[1], _r1;
28608 : 0 : _o1[0] = captures[3];
28609 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
28610 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
28611 : : {
28612 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, _o1[0]);
28613 : 0 : tem_op.resimplify (lseq, valueize);
28614 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
28615 : 0 : if (!_r1) goto next_after_fail2787;
28616 : : }
28617 : : else
28618 : : _r1 = _o1[0];
28619 : 0 : res_op->ops[1] = _r1;
28620 : : }
28621 : 0 : res_op->ops[2] = captures[1];
28622 : 0 : res_op->resimplify (lseq, valueize);
28623 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1243, __FILE__, __LINE__, true);
28624 : 0 : return true;
28625 : : }
28626 : 2 : next_after_fail2787:;
28627 : : }
28628 : : }
28629 : : }
28630 : 2 : break;
28631 : : }
28632 : : default:;
28633 : : }
28634 : : }
28635 : : break;
28636 : 174626 : default:;
28637 : : }
28638 : 174626 : switch (TREE_CODE (_p1))
28639 : : {
28640 : 40151 : case SSA_NAME:
28641 : 40151 : if (gimple *_d1 = get_def (valueize, _p1))
28642 : : {
28643 : 34181 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
28644 : 34266 : switch (gimple_assign_rhs_code (_a1))
28645 : : {
28646 : 3346 : case VIEW_CONVERT_EXPR:
28647 : 3346 : {
28648 : 3346 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
28649 : 3346 : if ((TREE_CODE (_q30) == SSA_NAME
28650 : 3346 : || is_gimple_min_invariant (_q30)))
28651 : : {
28652 : 3346 : _q30 = do_valueize (valueize, _q30);
28653 : 3346 : switch (TREE_CODE (_q30))
28654 : : {
28655 : 3346 : case SSA_NAME:
28656 : 3346 : if (gimple *_d2 = get_def (valueize, _q30))
28657 : : {
28658 : 3262 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28659 : 1914 : switch (gimple_assign_rhs_code (_a2))
28660 : : {
28661 : 290 : case PLUS_EXPR:
28662 : 290 : {
28663 : 290 : tree _q40 = gimple_assign_rhs1 (_a2);
28664 : 290 : _q40 = do_valueize (valueize, _q40);
28665 : 290 : tree _q41 = gimple_assign_rhs2 (_a2);
28666 : 290 : _q41 = do_valueize (valueize, _q41);
28667 : 290 : if (tree_swap_operands_p (_q40, _q41))
28668 : 20 : std::swap (_q40, _q41);
28669 : 290 : {
28670 : 290 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
28671 : 290 : {
28672 : 290 : tree op_type = TREE_TYPE (captures[1]);
28673 : 290 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_ADD), op_type)
28674 : 31 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28675 : 321 : && single_use (captures[1])
28676 : : )
28677 : : {
28678 : 31 : gimple_seq *lseq = seq;
28679 : 31 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2788;
28680 : 31 : {
28681 : 31 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28682 : 31 : {
28683 : 31 : tree _o1[4], _r1;
28684 : 31 : _o1[0] = captures[0];
28685 : 31 : _o1[1] = captures[2];
28686 : 31 : _o1[2] = captures[3];
28687 : 31 : {
28688 : 31 : tree _o2[1], _r2;
28689 : 31 : _o2[0] = captures[4];
28690 : 31 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28691 : 31 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28692 : : {
28693 : 31 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28694 : 31 : tem_op.resimplify (lseq, valueize);
28695 : 31 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28696 : 31 : if (!_r2) goto next_after_fail2788;
28697 : : }
28698 : : else
28699 : : _r2 = _o2[0];
28700 : 13 : _o1[3] = _r2;
28701 : : }
28702 : 13 : (*res_op).set_op (CFN_COND_ADD, TREE_TYPE (_o1[1]), 4);
28703 : 13 : (*res_op).ops[0] = _o1[0];
28704 : 13 : (*res_op).ops[1] = _o1[1];
28705 : 13 : (*res_op).ops[2] = _o1[2];
28706 : 13 : (*res_op).ops[3] = _o1[3];
28707 : 13 : (*res_op).resimplify (lseq, valueize);
28708 : : }
28709 : 13 : if (type != res_op->type
28710 : 13 : && !useless_type_conversion_p (type, res_op->type))
28711 : : {
28712 : 13 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2788;
28713 : 10 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28714 : 10 : res_op->resimplify (lseq, valueize);
28715 : : }
28716 : 10 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
28717 : 10 : return true;
28718 : : }
28719 : 280 : next_after_fail2788:;
28720 : : }
28721 : : }
28722 : : }
28723 : 280 : break;
28724 : : }
28725 : 82 : case MINUS_EXPR:
28726 : 82 : {
28727 : 82 : tree _q40 = gimple_assign_rhs1 (_a2);
28728 : 82 : _q40 = do_valueize (valueize, _q40);
28729 : 82 : tree _q41 = gimple_assign_rhs2 (_a2);
28730 : 82 : _q41 = do_valueize (valueize, _q41);
28731 : 82 : {
28732 : 82 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
28733 : 82 : {
28734 : 82 : tree op_type = TREE_TYPE (captures[1]);
28735 : 82 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SUB), op_type)
28736 : 27 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28737 : 109 : && single_use (captures[1])
28738 : : )
28739 : : {
28740 : 27 : gimple_seq *lseq = seq;
28741 : 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2789;
28742 : 27 : {
28743 : 27 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28744 : 27 : {
28745 : 27 : tree _o1[4], _r1;
28746 : 27 : _o1[0] = captures[0];
28747 : 27 : _o1[1] = captures[2];
28748 : 27 : _o1[2] = captures[3];
28749 : 27 : {
28750 : 27 : tree _o2[1], _r2;
28751 : 27 : _o2[0] = captures[4];
28752 : 27 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28753 : 27 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28754 : : {
28755 : 27 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28756 : 27 : tem_op.resimplify (lseq, valueize);
28757 : 27 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28758 : 27 : if (!_r2) goto next_after_fail2789;
28759 : : }
28760 : : else
28761 : : _r2 = _o2[0];
28762 : 9 : _o1[3] = _r2;
28763 : : }
28764 : 9 : (*res_op).set_op (CFN_COND_SUB, TREE_TYPE (_o1[1]), 4);
28765 : 9 : (*res_op).ops[0] = _o1[0];
28766 : 9 : (*res_op).ops[1] = _o1[1];
28767 : 9 : (*res_op).ops[2] = _o1[2];
28768 : 9 : (*res_op).ops[3] = _o1[3];
28769 : 9 : (*res_op).resimplify (lseq, valueize);
28770 : : }
28771 : 9 : if (type != res_op->type
28772 : 9 : && !useless_type_conversion_p (type, res_op->type))
28773 : : {
28774 : 9 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2789;
28775 : 9 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28776 : 9 : res_op->resimplify (lseq, valueize);
28777 : : }
28778 : 9 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
28779 : 9 : return true;
28780 : : }
28781 : 73 : next_after_fail2789:;
28782 : : }
28783 : : }
28784 : : }
28785 : 73 : break;
28786 : : }
28787 : 180 : case MULT_EXPR:
28788 : 180 : {
28789 : 180 : tree _q40 = gimple_assign_rhs1 (_a2);
28790 : 180 : _q40 = do_valueize (valueize, _q40);
28791 : 180 : tree _q41 = gimple_assign_rhs2 (_a2);
28792 : 180 : _q41 = do_valueize (valueize, _q41);
28793 : 180 : if (tree_swap_operands_p (_q40, _q41))
28794 : 9 : std::swap (_q40, _q41);
28795 : 180 : {
28796 : 180 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
28797 : 180 : {
28798 : 180 : tree op_type = TREE_TYPE (captures[1]);
28799 : 180 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MUL), op_type)
28800 : 27 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28801 : 207 : && single_use (captures[1])
28802 : : )
28803 : : {
28804 : 27 : gimple_seq *lseq = seq;
28805 : 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2790;
28806 : 27 : {
28807 : 27 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28808 : 27 : {
28809 : 27 : tree _o1[4], _r1;
28810 : 27 : _o1[0] = captures[0];
28811 : 27 : _o1[1] = captures[2];
28812 : 27 : _o1[2] = captures[3];
28813 : 27 : {
28814 : 27 : tree _o2[1], _r2;
28815 : 27 : _o2[0] = captures[4];
28816 : 27 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28817 : 27 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28818 : : {
28819 : 27 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28820 : 27 : tem_op.resimplify (lseq, valueize);
28821 : 27 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28822 : 27 : if (!_r2) goto next_after_fail2790;
28823 : : }
28824 : : else
28825 : : _r2 = _o2[0];
28826 : 9 : _o1[3] = _r2;
28827 : : }
28828 : 9 : (*res_op).set_op (CFN_COND_MUL, TREE_TYPE (_o1[1]), 4);
28829 : 9 : (*res_op).ops[0] = _o1[0];
28830 : 9 : (*res_op).ops[1] = _o1[1];
28831 : 9 : (*res_op).ops[2] = _o1[2];
28832 : 9 : (*res_op).ops[3] = _o1[3];
28833 : 9 : (*res_op).resimplify (lseq, valueize);
28834 : : }
28835 : 9 : if (type != res_op->type
28836 : 9 : && !useless_type_conversion_p (type, res_op->type))
28837 : : {
28838 : 9 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2790;
28839 : 9 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28840 : 9 : res_op->resimplify (lseq, valueize);
28841 : : }
28842 : 9 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
28843 : 9 : return true;
28844 : : }
28845 : 171 : next_after_fail2790:;
28846 : : }
28847 : : }
28848 : : }
28849 : 171 : break;
28850 : : }
28851 : 0 : case TRUNC_DIV_EXPR:
28852 : 0 : {
28853 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
28854 : 0 : _q40 = do_valueize (valueize, _q40);
28855 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
28856 : 0 : _q41 = do_valueize (valueize, _q41);
28857 : 0 : {
28858 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
28859 : 0 : {
28860 : 0 : tree op_type = TREE_TYPE (captures[1]);
28861 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_DIV), op_type)
28862 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28863 : 0 : && single_use (captures[1])
28864 : : )
28865 : : {
28866 : 0 : gimple_seq *lseq = seq;
28867 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2791;
28868 : 0 : {
28869 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28870 : 0 : {
28871 : 0 : tree _o1[4], _r1;
28872 : 0 : _o1[0] = captures[0];
28873 : 0 : _o1[1] = captures[2];
28874 : 0 : _o1[2] = captures[3];
28875 : 0 : {
28876 : 0 : tree _o2[1], _r2;
28877 : 0 : _o2[0] = captures[4];
28878 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28879 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28880 : : {
28881 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28882 : 0 : tem_op.resimplify (lseq, valueize);
28883 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28884 : 0 : if (!_r2) goto next_after_fail2791;
28885 : : }
28886 : : else
28887 : : _r2 = _o2[0];
28888 : 0 : _o1[3] = _r2;
28889 : : }
28890 : 0 : (*res_op).set_op (CFN_COND_DIV, TREE_TYPE (_o1[1]), 4);
28891 : 0 : (*res_op).ops[0] = _o1[0];
28892 : 0 : (*res_op).ops[1] = _o1[1];
28893 : 0 : (*res_op).ops[2] = _o1[2];
28894 : 0 : (*res_op).ops[3] = _o1[3];
28895 : 0 : (*res_op).resimplify (lseq, valueize);
28896 : : }
28897 : 0 : if (type != res_op->type
28898 : 0 : && !useless_type_conversion_p (type, res_op->type))
28899 : : {
28900 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2791;
28901 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28902 : 0 : res_op->resimplify (lseq, valueize);
28903 : : }
28904 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
28905 : 0 : return true;
28906 : : }
28907 : 0 : next_after_fail2791:;
28908 : : }
28909 : : }
28910 : : }
28911 : 0 : break;
28912 : : }
28913 : 0 : case TRUNC_MOD_EXPR:
28914 : 0 : {
28915 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
28916 : 0 : _q40 = do_valueize (valueize, _q40);
28917 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
28918 : 0 : _q41 = do_valueize (valueize, _q41);
28919 : 0 : {
28920 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
28921 : 0 : {
28922 : 0 : tree op_type = TREE_TYPE (captures[1]);
28923 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MOD), op_type)
28924 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28925 : 0 : && single_use (captures[1])
28926 : : )
28927 : : {
28928 : 0 : gimple_seq *lseq = seq;
28929 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2792;
28930 : 0 : {
28931 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28932 : 0 : {
28933 : 0 : tree _o1[4], _r1;
28934 : 0 : _o1[0] = captures[0];
28935 : 0 : _o1[1] = captures[2];
28936 : 0 : _o1[2] = captures[3];
28937 : 0 : {
28938 : 0 : tree _o2[1], _r2;
28939 : 0 : _o2[0] = captures[4];
28940 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
28941 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
28942 : : {
28943 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
28944 : 0 : tem_op.resimplify (lseq, valueize);
28945 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
28946 : 0 : if (!_r2) goto next_after_fail2792;
28947 : : }
28948 : : else
28949 : : _r2 = _o2[0];
28950 : 0 : _o1[3] = _r2;
28951 : : }
28952 : 0 : (*res_op).set_op (CFN_COND_MOD, TREE_TYPE (_o1[1]), 4);
28953 : 0 : (*res_op).ops[0] = _o1[0];
28954 : 0 : (*res_op).ops[1] = _o1[1];
28955 : 0 : (*res_op).ops[2] = _o1[2];
28956 : 0 : (*res_op).ops[3] = _o1[3];
28957 : 0 : (*res_op).resimplify (lseq, valueize);
28958 : : }
28959 : 0 : if (type != res_op->type
28960 : 0 : && !useless_type_conversion_p (type, res_op->type))
28961 : : {
28962 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2792;
28963 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28964 : 0 : res_op->resimplify (lseq, valueize);
28965 : : }
28966 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
28967 : 0 : return true;
28968 : : }
28969 : 0 : next_after_fail2792:;
28970 : : }
28971 : : }
28972 : : }
28973 : 0 : break;
28974 : : }
28975 : 0 : case RDIV_EXPR:
28976 : 0 : {
28977 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
28978 : 0 : _q40 = do_valueize (valueize, _q40);
28979 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
28980 : 0 : _q41 = do_valueize (valueize, _q41);
28981 : 0 : {
28982 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
28983 : 0 : {
28984 : 0 : tree op_type = TREE_TYPE (captures[1]);
28985 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_RDIV), op_type)
28986 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
28987 : 0 : && single_use (captures[1])
28988 : : )
28989 : : {
28990 : 0 : gimple_seq *lseq = seq;
28991 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2793;
28992 : 0 : {
28993 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
28994 : 0 : {
28995 : 0 : tree _o1[4], _r1;
28996 : 0 : _o1[0] = captures[0];
28997 : 0 : _o1[1] = captures[2];
28998 : 0 : _o1[2] = captures[3];
28999 : 0 : {
29000 : 0 : tree _o2[1], _r2;
29001 : 0 : _o2[0] = captures[4];
29002 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29003 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29004 : : {
29005 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29006 : 0 : tem_op.resimplify (lseq, valueize);
29007 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29008 : 0 : if (!_r2) goto next_after_fail2793;
29009 : : }
29010 : : else
29011 : : _r2 = _o2[0];
29012 : 0 : _o1[3] = _r2;
29013 : : }
29014 : 0 : (*res_op).set_op (CFN_COND_RDIV, TREE_TYPE (_o1[1]), 4);
29015 : 0 : (*res_op).ops[0] = _o1[0];
29016 : 0 : (*res_op).ops[1] = _o1[1];
29017 : 0 : (*res_op).ops[2] = _o1[2];
29018 : 0 : (*res_op).ops[3] = _o1[3];
29019 : 0 : (*res_op).resimplify (lseq, valueize);
29020 : : }
29021 : 0 : if (type != res_op->type
29022 : 0 : && !useless_type_conversion_p (type, res_op->type))
29023 : : {
29024 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2793;
29025 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29026 : 0 : res_op->resimplify (lseq, valueize);
29027 : : }
29028 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29029 : 0 : return true;
29030 : : }
29031 : 0 : next_after_fail2793:;
29032 : : }
29033 : : }
29034 : : }
29035 : 0 : break;
29036 : : }
29037 : 0 : case MIN_EXPR:
29038 : 0 : {
29039 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
29040 : 0 : _q40 = do_valueize (valueize, _q40);
29041 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
29042 : 0 : _q41 = do_valueize (valueize, _q41);
29043 : 0 : if (tree_swap_operands_p (_q40, _q41))
29044 : 0 : std::swap (_q40, _q41);
29045 : 0 : {
29046 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29047 : 0 : {
29048 : 0 : tree op_type = TREE_TYPE (captures[1]);
29049 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MIN), op_type)
29050 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29051 : 0 : && single_use (captures[1])
29052 : : )
29053 : : {
29054 : 0 : gimple_seq *lseq = seq;
29055 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2794;
29056 : 0 : {
29057 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29058 : 0 : {
29059 : 0 : tree _o1[4], _r1;
29060 : 0 : _o1[0] = captures[0];
29061 : 0 : _o1[1] = captures[2];
29062 : 0 : _o1[2] = captures[3];
29063 : 0 : {
29064 : 0 : tree _o2[1], _r2;
29065 : 0 : _o2[0] = captures[4];
29066 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29067 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29068 : : {
29069 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29070 : 0 : tem_op.resimplify (lseq, valueize);
29071 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29072 : 0 : if (!_r2) goto next_after_fail2794;
29073 : : }
29074 : : else
29075 : : _r2 = _o2[0];
29076 : 0 : _o1[3] = _r2;
29077 : : }
29078 : 0 : (*res_op).set_op (CFN_COND_MIN, TREE_TYPE (_o1[1]), 4);
29079 : 0 : (*res_op).ops[0] = _o1[0];
29080 : 0 : (*res_op).ops[1] = _o1[1];
29081 : 0 : (*res_op).ops[2] = _o1[2];
29082 : 0 : (*res_op).ops[3] = _o1[3];
29083 : 0 : (*res_op).resimplify (lseq, valueize);
29084 : : }
29085 : 0 : if (type != res_op->type
29086 : 0 : && !useless_type_conversion_p (type, res_op->type))
29087 : : {
29088 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2794;
29089 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29090 : 0 : res_op->resimplify (lseq, valueize);
29091 : : }
29092 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29093 : 0 : return true;
29094 : : }
29095 : 0 : next_after_fail2794:;
29096 : : }
29097 : : }
29098 : : }
29099 : 0 : break;
29100 : : }
29101 : 0 : case MAX_EXPR:
29102 : 0 : {
29103 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
29104 : 0 : _q40 = do_valueize (valueize, _q40);
29105 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
29106 : 0 : _q41 = do_valueize (valueize, _q41);
29107 : 0 : if (tree_swap_operands_p (_q40, _q41))
29108 : 0 : std::swap (_q40, _q41);
29109 : 0 : {
29110 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29111 : 0 : {
29112 : 0 : tree op_type = TREE_TYPE (captures[1]);
29113 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MAX), op_type)
29114 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29115 : 0 : && single_use (captures[1])
29116 : : )
29117 : : {
29118 : 0 : gimple_seq *lseq = seq;
29119 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2795;
29120 : 0 : {
29121 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29122 : 0 : {
29123 : 0 : tree _o1[4], _r1;
29124 : 0 : _o1[0] = captures[0];
29125 : 0 : _o1[1] = captures[2];
29126 : 0 : _o1[2] = captures[3];
29127 : 0 : {
29128 : 0 : tree _o2[1], _r2;
29129 : 0 : _o2[0] = captures[4];
29130 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29131 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29132 : : {
29133 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29134 : 0 : tem_op.resimplify (lseq, valueize);
29135 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29136 : 0 : if (!_r2) goto next_after_fail2795;
29137 : : }
29138 : : else
29139 : : _r2 = _o2[0];
29140 : 0 : _o1[3] = _r2;
29141 : : }
29142 : 0 : (*res_op).set_op (CFN_COND_MAX, TREE_TYPE (_o1[1]), 4);
29143 : 0 : (*res_op).ops[0] = _o1[0];
29144 : 0 : (*res_op).ops[1] = _o1[1];
29145 : 0 : (*res_op).ops[2] = _o1[2];
29146 : 0 : (*res_op).ops[3] = _o1[3];
29147 : 0 : (*res_op).resimplify (lseq, valueize);
29148 : : }
29149 : 0 : if (type != res_op->type
29150 : 0 : && !useless_type_conversion_p (type, res_op->type))
29151 : : {
29152 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2795;
29153 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29154 : 0 : res_op->resimplify (lseq, valueize);
29155 : : }
29156 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29157 : 0 : return true;
29158 : : }
29159 : 0 : next_after_fail2795:;
29160 : : }
29161 : : }
29162 : : }
29163 : 0 : break;
29164 : : }
29165 : 7 : case BIT_AND_EXPR:
29166 : 7 : {
29167 : 7 : tree _q40 = gimple_assign_rhs1 (_a2);
29168 : 7 : _q40 = do_valueize (valueize, _q40);
29169 : 7 : tree _q41 = gimple_assign_rhs2 (_a2);
29170 : 7 : _q41 = do_valueize (valueize, _q41);
29171 : 7 : if (tree_swap_operands_p (_q40, _q41))
29172 : 0 : std::swap (_q40, _q41);
29173 : 7 : {
29174 : 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29175 : 7 : {
29176 : 7 : tree op_type = TREE_TYPE (captures[1]);
29177 : 7 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_AND), op_type)
29178 : 1 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29179 : 8 : && single_use (captures[1])
29180 : : )
29181 : : {
29182 : 1 : gimple_seq *lseq = seq;
29183 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2796;
29184 : 1 : {
29185 : 1 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29186 : 1 : {
29187 : 1 : tree _o1[4], _r1;
29188 : 1 : _o1[0] = captures[0];
29189 : 1 : _o1[1] = captures[2];
29190 : 1 : _o1[2] = captures[3];
29191 : 1 : {
29192 : 1 : tree _o2[1], _r2;
29193 : 1 : _o2[0] = captures[4];
29194 : 1 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29195 : 1 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29196 : : {
29197 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29198 : 1 : tem_op.resimplify (lseq, valueize);
29199 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29200 : 1 : if (!_r2) goto next_after_fail2796;
29201 : : }
29202 : : else
29203 : : _r2 = _o2[0];
29204 : 1 : _o1[3] = _r2;
29205 : : }
29206 : 1 : (*res_op).set_op (CFN_COND_AND, TREE_TYPE (_o1[1]), 4);
29207 : 1 : (*res_op).ops[0] = _o1[0];
29208 : 1 : (*res_op).ops[1] = _o1[1];
29209 : 1 : (*res_op).ops[2] = _o1[2];
29210 : 1 : (*res_op).ops[3] = _o1[3];
29211 : 1 : (*res_op).resimplify (lseq, valueize);
29212 : : }
29213 : 1 : if (type != res_op->type
29214 : 1 : && !useless_type_conversion_p (type, res_op->type))
29215 : : {
29216 : 1 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2796;
29217 : 1 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29218 : 1 : res_op->resimplify (lseq, valueize);
29219 : : }
29220 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29221 : 1 : return true;
29222 : : }
29223 : 6 : next_after_fail2796:;
29224 : : }
29225 : : }
29226 : : }
29227 : 6 : break;
29228 : : }
29229 : 97 : case BIT_IOR_EXPR:
29230 : 97 : {
29231 : 97 : tree _q40 = gimple_assign_rhs1 (_a2);
29232 : 97 : _q40 = do_valueize (valueize, _q40);
29233 : 97 : tree _q41 = gimple_assign_rhs2 (_a2);
29234 : 97 : _q41 = do_valueize (valueize, _q41);
29235 : 97 : if (tree_swap_operands_p (_q40, _q41))
29236 : 0 : std::swap (_q40, _q41);
29237 : 97 : {
29238 : 97 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29239 : 97 : {
29240 : 97 : tree op_type = TREE_TYPE (captures[1]);
29241 : 97 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_IOR), op_type)
29242 : 41 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29243 : 138 : && single_use (captures[1])
29244 : : )
29245 : : {
29246 : 41 : gimple_seq *lseq = seq;
29247 : 41 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2797;
29248 : 41 : {
29249 : 41 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29250 : 41 : {
29251 : 41 : tree _o1[4], _r1;
29252 : 41 : _o1[0] = captures[0];
29253 : 41 : _o1[1] = captures[2];
29254 : 41 : _o1[2] = captures[3];
29255 : 41 : {
29256 : 41 : tree _o2[1], _r2;
29257 : 41 : _o2[0] = captures[4];
29258 : 41 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29259 : 41 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29260 : : {
29261 : 41 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29262 : 41 : tem_op.resimplify (lseq, valueize);
29263 : 41 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29264 : 41 : if (!_r2) goto next_after_fail2797;
29265 : : }
29266 : : else
29267 : : _r2 = _o2[0];
29268 : 41 : _o1[3] = _r2;
29269 : : }
29270 : 41 : (*res_op).set_op (CFN_COND_IOR, TREE_TYPE (_o1[1]), 4);
29271 : 41 : (*res_op).ops[0] = _o1[0];
29272 : 41 : (*res_op).ops[1] = _o1[1];
29273 : 41 : (*res_op).ops[2] = _o1[2];
29274 : 41 : (*res_op).ops[3] = _o1[3];
29275 : 41 : (*res_op).resimplify (lseq, valueize);
29276 : : }
29277 : 41 : if (type != res_op->type
29278 : 41 : && !useless_type_conversion_p (type, res_op->type))
29279 : : {
29280 : 41 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2797;
29281 : 13 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29282 : 13 : res_op->resimplify (lseq, valueize);
29283 : : }
29284 : 13 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29285 : 13 : return true;
29286 : : }
29287 : 84 : next_after_fail2797:;
29288 : : }
29289 : : }
29290 : : }
29291 : 84 : break;
29292 : : }
29293 : 102 : case BIT_XOR_EXPR:
29294 : 102 : {
29295 : 102 : tree _q40 = gimple_assign_rhs1 (_a2);
29296 : 102 : _q40 = do_valueize (valueize, _q40);
29297 : 102 : tree _q41 = gimple_assign_rhs2 (_a2);
29298 : 102 : _q41 = do_valueize (valueize, _q41);
29299 : 102 : if (tree_swap_operands_p (_q40, _q41))
29300 : 0 : std::swap (_q40, _q41);
29301 : 102 : {
29302 : 102 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29303 : 102 : {
29304 : 102 : tree op_type = TREE_TYPE (captures[1]);
29305 : 102 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_XOR), op_type)
29306 : 1 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29307 : 103 : && single_use (captures[1])
29308 : : )
29309 : : {
29310 : 1 : gimple_seq *lseq = seq;
29311 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2798;
29312 : 1 : {
29313 : 1 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29314 : 1 : {
29315 : 1 : tree _o1[4], _r1;
29316 : 1 : _o1[0] = captures[0];
29317 : 1 : _o1[1] = captures[2];
29318 : 1 : _o1[2] = captures[3];
29319 : 1 : {
29320 : 1 : tree _o2[1], _r2;
29321 : 1 : _o2[0] = captures[4];
29322 : 1 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29323 : 1 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29324 : : {
29325 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29326 : 1 : tem_op.resimplify (lseq, valueize);
29327 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29328 : 1 : if (!_r2) goto next_after_fail2798;
29329 : : }
29330 : : else
29331 : : _r2 = _o2[0];
29332 : 1 : _o1[3] = _r2;
29333 : : }
29334 : 1 : (*res_op).set_op (CFN_COND_XOR, TREE_TYPE (_o1[1]), 4);
29335 : 1 : (*res_op).ops[0] = _o1[0];
29336 : 1 : (*res_op).ops[1] = _o1[1];
29337 : 1 : (*res_op).ops[2] = _o1[2];
29338 : 1 : (*res_op).ops[3] = _o1[3];
29339 : 1 : (*res_op).resimplify (lseq, valueize);
29340 : : }
29341 : 1 : if (type != res_op->type
29342 : 1 : && !useless_type_conversion_p (type, res_op->type))
29343 : : {
29344 : 1 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2798;
29345 : 1 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29346 : 1 : res_op->resimplify (lseq, valueize);
29347 : : }
29348 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29349 : 1 : return true;
29350 : : }
29351 : 101 : next_after_fail2798:;
29352 : : }
29353 : : }
29354 : : }
29355 : 101 : break;
29356 : : }
29357 : 86 : case LSHIFT_EXPR:
29358 : 86 : {
29359 : 86 : tree _q40 = gimple_assign_rhs1 (_a2);
29360 : 86 : _q40 = do_valueize (valueize, _q40);
29361 : 86 : tree _q41 = gimple_assign_rhs2 (_a2);
29362 : 86 : _q41 = do_valueize (valueize, _q41);
29363 : 86 : {
29364 : 86 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29365 : 86 : {
29366 : 86 : tree op_type = TREE_TYPE (captures[1]);
29367 : 86 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHL), op_type)
29368 : 64 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29369 : 150 : && single_use (captures[1])
29370 : : )
29371 : : {
29372 : 64 : gimple_seq *lseq = seq;
29373 : 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2799;
29374 : 64 : {
29375 : 64 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29376 : 64 : {
29377 : 64 : tree _o1[4], _r1;
29378 : 64 : _o1[0] = captures[0];
29379 : 64 : _o1[1] = captures[2];
29380 : 64 : _o1[2] = captures[3];
29381 : 64 : {
29382 : 64 : tree _o2[1], _r2;
29383 : 64 : _o2[0] = captures[4];
29384 : 64 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29385 : 64 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29386 : : {
29387 : 64 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29388 : 64 : tem_op.resimplify (lseq, valueize);
29389 : 64 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29390 : 64 : if (!_r2) goto next_after_fail2799;
29391 : : }
29392 : : else
29393 : : _r2 = _o2[0];
29394 : 64 : _o1[3] = _r2;
29395 : : }
29396 : 64 : (*res_op).set_op (CFN_COND_SHL, TREE_TYPE (_o1[1]), 4);
29397 : 64 : (*res_op).ops[0] = _o1[0];
29398 : 64 : (*res_op).ops[1] = _o1[1];
29399 : 64 : (*res_op).ops[2] = _o1[2];
29400 : 64 : (*res_op).ops[3] = _o1[3];
29401 : 64 : (*res_op).resimplify (lseq, valueize);
29402 : : }
29403 : 64 : if (type != res_op->type
29404 : 64 : && !useless_type_conversion_p (type, res_op->type))
29405 : : {
29406 : 64 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2799;
29407 : 4 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29408 : 4 : res_op->resimplify (lseq, valueize);
29409 : : }
29410 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29411 : 4 : return true;
29412 : : }
29413 : 82 : next_after_fail2799:;
29414 : : }
29415 : : }
29416 : : }
29417 : 82 : break;
29418 : : }
29419 : 0 : case RSHIFT_EXPR:
29420 : 0 : {
29421 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
29422 : 0 : _q40 = do_valueize (valueize, _q40);
29423 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
29424 : 0 : _q41 = do_valueize (valueize, _q41);
29425 : 0 : {
29426 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29427 : 0 : {
29428 : 0 : tree op_type = TREE_TYPE (captures[1]);
29429 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHR), op_type)
29430 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29431 : 0 : && single_use (captures[1])
29432 : : )
29433 : : {
29434 : 0 : gimple_seq *lseq = seq;
29435 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2800;
29436 : 0 : {
29437 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29438 : 0 : {
29439 : 0 : tree _o1[4], _r1;
29440 : 0 : _o1[0] = captures[0];
29441 : 0 : _o1[1] = captures[2];
29442 : 0 : _o1[2] = captures[3];
29443 : 0 : {
29444 : 0 : tree _o2[1], _r2;
29445 : 0 : _o2[0] = captures[4];
29446 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29447 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29448 : : {
29449 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29450 : 0 : tem_op.resimplify (lseq, valueize);
29451 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29452 : 0 : if (!_r2) goto next_after_fail2800;
29453 : : }
29454 : : else
29455 : : _r2 = _o2[0];
29456 : 0 : _o1[3] = _r2;
29457 : : }
29458 : 0 : (*res_op).set_op (CFN_COND_SHR, TREE_TYPE (_o1[1]), 4);
29459 : 0 : (*res_op).ops[0] = _o1[0];
29460 : 0 : (*res_op).ops[1] = _o1[1];
29461 : 0 : (*res_op).ops[2] = _o1[2];
29462 : 0 : (*res_op).ops[3] = _o1[3];
29463 : 0 : (*res_op).resimplify (lseq, valueize);
29464 : : }
29465 : 0 : if (type != res_op->type
29466 : 0 : && !useless_type_conversion_p (type, res_op->type))
29467 : : {
29468 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2800;
29469 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29470 : 0 : res_op->resimplify (lseq, valueize);
29471 : : }
29472 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29473 : 0 : return true;
29474 : : }
29475 : 0 : next_after_fail2800:;
29476 : : }
29477 : : }
29478 : : }
29479 : 0 : break;
29480 : : }
29481 : : default:;
29482 : : }
29483 : 1832 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
29484 : 998 : switch (gimple_call_combined_fn (_c2))
29485 : : {
29486 : 0 : case CFN_FMAX:
29487 : 0 : if (gimple_call_num_args (_c2) == 2)
29488 : : {
29489 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
29490 : 0 : _q40 = do_valueize (valueize, _q40);
29491 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
29492 : 0 : _q41 = do_valueize (valueize, _q41);
29493 : 0 : {
29494 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29495 : 0 : {
29496 : 0 : tree op_type = TREE_TYPE (captures[1]);
29497 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMAX), op_type)
29498 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29499 : 0 : && single_use (captures[1])
29500 : : )
29501 : : {
29502 : 0 : gimple_seq *lseq = seq;
29503 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2801;
29504 : 0 : {
29505 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29506 : 0 : {
29507 : 0 : tree _o1[4], _r1;
29508 : 0 : _o1[0] = captures[0];
29509 : 0 : _o1[1] = captures[2];
29510 : 0 : _o1[2] = captures[3];
29511 : 0 : {
29512 : 0 : tree _o2[1], _r2;
29513 : 0 : _o2[0] = captures[4];
29514 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29515 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29516 : : {
29517 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29518 : 0 : tem_op.resimplify (lseq, valueize);
29519 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29520 : 0 : if (!_r2) goto next_after_fail2801;
29521 : : }
29522 : : else
29523 : : _r2 = _o2[0];
29524 : 0 : _o1[3] = _r2;
29525 : : }
29526 : 0 : (*res_op).set_op (CFN_COND_FMAX, TREE_TYPE (_o1[1]), 4);
29527 : 0 : (*res_op).ops[0] = _o1[0];
29528 : 0 : (*res_op).ops[1] = _o1[1];
29529 : 0 : (*res_op).ops[2] = _o1[2];
29530 : 0 : (*res_op).ops[3] = _o1[3];
29531 : 0 : (*res_op).resimplify (lseq, valueize);
29532 : : }
29533 : 0 : if (type != res_op->type
29534 : 0 : && !useless_type_conversion_p (type, res_op->type))
29535 : : {
29536 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2801;
29537 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29538 : 0 : res_op->resimplify (lseq, valueize);
29539 : : }
29540 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29541 : 0 : return true;
29542 : : }
29543 : 0 : next_after_fail2801:;
29544 : : }
29545 : : }
29546 : : }
29547 : : }
29548 : : break;
29549 : 0 : case CFN_FMIN:
29550 : 0 : if (gimple_call_num_args (_c2) == 2)
29551 : : {
29552 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
29553 : 0 : _q40 = do_valueize (valueize, _q40);
29554 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
29555 : 0 : _q41 = do_valueize (valueize, _q41);
29556 : 0 : {
29557 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29558 : 0 : {
29559 : 0 : tree op_type = TREE_TYPE (captures[1]);
29560 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMIN), op_type)
29561 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29562 : 0 : && single_use (captures[1])
29563 : : )
29564 : : {
29565 : 0 : gimple_seq *lseq = seq;
29566 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2802;
29567 : 0 : {
29568 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29569 : 0 : {
29570 : 0 : tree _o1[4], _r1;
29571 : 0 : _o1[0] = captures[0];
29572 : 0 : _o1[1] = captures[2];
29573 : 0 : _o1[2] = captures[3];
29574 : 0 : {
29575 : 0 : tree _o2[1], _r2;
29576 : 0 : _o2[0] = captures[4];
29577 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29578 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29579 : : {
29580 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29581 : 0 : tem_op.resimplify (lseq, valueize);
29582 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29583 : 0 : if (!_r2) goto next_after_fail2802;
29584 : : }
29585 : : else
29586 : : _r2 = _o2[0];
29587 : 0 : _o1[3] = _r2;
29588 : : }
29589 : 0 : (*res_op).set_op (CFN_COND_FMIN, TREE_TYPE (_o1[1]), 4);
29590 : 0 : (*res_op).ops[0] = _o1[0];
29591 : 0 : (*res_op).ops[1] = _o1[1];
29592 : 0 : (*res_op).ops[2] = _o1[2];
29593 : 0 : (*res_op).ops[3] = _o1[3];
29594 : 0 : (*res_op).resimplify (lseq, valueize);
29595 : : }
29596 : 0 : if (type != res_op->type
29597 : 0 : && !useless_type_conversion_p (type, res_op->type))
29598 : : {
29599 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2802;
29600 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29601 : 0 : res_op->resimplify (lseq, valueize);
29602 : : }
29603 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29604 : 0 : return true;
29605 : : }
29606 : 0 : next_after_fail2802:;
29607 : : }
29608 : : }
29609 : : }
29610 : : }
29611 : : break;
29612 : 0 : case CFN_COPYSIGN:
29613 : 0 : if (gimple_call_num_args (_c2) == 2)
29614 : : {
29615 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
29616 : 0 : _q40 = do_valueize (valueize, _q40);
29617 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
29618 : 0 : _q41 = do_valueize (valueize, _q41);
29619 : 0 : {
29620 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _p2 };
29621 : 0 : {
29622 : 0 : tree op_type = TREE_TYPE (captures[1]);
29623 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_COPYSIGN), op_type)
29624 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29625 : 0 : && single_use (captures[1])
29626 : : )
29627 : : {
29628 : 0 : gimple_seq *lseq = seq;
29629 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2803;
29630 : 0 : {
29631 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29632 : 0 : {
29633 : 0 : tree _o1[4], _r1;
29634 : 0 : _o1[0] = captures[0];
29635 : 0 : _o1[1] = captures[2];
29636 : 0 : _o1[2] = captures[3];
29637 : 0 : {
29638 : 0 : tree _o2[1], _r2;
29639 : 0 : _o2[0] = captures[4];
29640 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29641 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29642 : : {
29643 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29644 : 0 : tem_op.resimplify (lseq, valueize);
29645 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29646 : 0 : if (!_r2) goto next_after_fail2803;
29647 : : }
29648 : : else
29649 : : _r2 = _o2[0];
29650 : 0 : _o1[3] = _r2;
29651 : : }
29652 : 0 : (*res_op).set_op (CFN_COND_COPYSIGN, TREE_TYPE (_o1[1]), 4);
29653 : 0 : (*res_op).ops[0] = _o1[0];
29654 : 0 : (*res_op).ops[1] = _o1[1];
29655 : 0 : (*res_op).ops[2] = _o1[2];
29656 : 0 : (*res_op).ops[3] = _o1[3];
29657 : 0 : (*res_op).resimplify (lseq, valueize);
29658 : : }
29659 : 0 : if (type != res_op->type
29660 : 0 : && !useless_type_conversion_p (type, res_op->type))
29661 : : {
29662 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2803;
29663 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29664 : 0 : res_op->resimplify (lseq, valueize);
29665 : : }
29666 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29667 : 0 : return true;
29668 : : }
29669 : 0 : next_after_fail2803:;
29670 : : }
29671 : : }
29672 : : }
29673 : : }
29674 : : break;
29675 : : default:;
29676 : : }
29677 : : }
29678 : : break;
29679 : : default:;
29680 : : }
29681 : : }
29682 : : break;
29683 : : }
29684 : 295 : case PLUS_EXPR:
29685 : 295 : {
29686 : 295 : tree _q30 = gimple_assign_rhs1 (_a1);
29687 : 295 : _q30 = do_valueize (valueize, _q30);
29688 : 295 : tree _q31 = gimple_assign_rhs2 (_a1);
29689 : 295 : _q31 = do_valueize (valueize, _q31);
29690 : 295 : if (tree_swap_operands_p (_q30, _q31))
29691 : 13 : std::swap (_q30, _q31);
29692 : 295 : {
29693 : 295 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
29694 : 295 : {
29695 : 295 : tree op_type = TREE_TYPE (captures[1]);
29696 : 295 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_ADD), op_type)
29697 : 19 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29698 : 314 : && single_use (captures[1])
29699 : : )
29700 : : {
29701 : 19 : gimple_seq *lseq = seq;
29702 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2804;
29703 : 19 : {
29704 : 19 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29705 : 19 : {
29706 : 19 : tree _o1[4], _r1;
29707 : 19 : _o1[0] = captures[0];
29708 : 19 : _o1[1] = captures[2];
29709 : 19 : _o1[2] = captures[3];
29710 : 19 : {
29711 : 19 : tree _o2[1], _r2;
29712 : 19 : _o2[0] = captures[4];
29713 : 19 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29714 : 19 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29715 : : {
29716 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29717 : 0 : tem_op.resimplify (lseq, valueize);
29718 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29719 : 0 : if (!_r2) goto next_after_fail2804;
29720 : : }
29721 : : else
29722 : : _r2 = _o2[0];
29723 : 19 : _o1[3] = _r2;
29724 : : }
29725 : 19 : (*res_op).set_op (CFN_COND_ADD, TREE_TYPE (_o1[1]), 4);
29726 : 19 : (*res_op).ops[0] = _o1[0];
29727 : 19 : (*res_op).ops[1] = _o1[1];
29728 : 19 : (*res_op).ops[2] = _o1[2];
29729 : 19 : (*res_op).ops[3] = _o1[3];
29730 : 19 : (*res_op).resimplify (lseq, valueize);
29731 : : }
29732 : 19 : if (type != res_op->type
29733 : 19 : && !useless_type_conversion_p (type, res_op->type))
29734 : : {
29735 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2804;
29736 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29737 : 0 : res_op->resimplify (lseq, valueize);
29738 : : }
29739 : 19 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29740 : 19 : return true;
29741 : : }
29742 : 276 : next_after_fail2804:;
29743 : : }
29744 : : }
29745 : : }
29746 : 276 : break;
29747 : : }
29748 : 397 : case MINUS_EXPR:
29749 : 397 : {
29750 : 397 : tree _q30 = gimple_assign_rhs1 (_a1);
29751 : 397 : _q30 = do_valueize (valueize, _q30);
29752 : 397 : tree _q31 = gimple_assign_rhs2 (_a1);
29753 : 397 : _q31 = do_valueize (valueize, _q31);
29754 : 397 : {
29755 : 397 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
29756 : 397 : {
29757 : 397 : tree op_type = TREE_TYPE (captures[1]);
29758 : 397 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SUB), op_type)
29759 : 51 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29760 : 448 : && single_use (captures[1])
29761 : : )
29762 : : {
29763 : 51 : gimple_seq *lseq = seq;
29764 : 51 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2805;
29765 : 51 : {
29766 : 51 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29767 : 51 : {
29768 : 51 : tree _o1[4], _r1;
29769 : 51 : _o1[0] = captures[0];
29770 : 51 : _o1[1] = captures[2];
29771 : 51 : _o1[2] = captures[3];
29772 : 51 : {
29773 : 51 : tree _o2[1], _r2;
29774 : 51 : _o2[0] = captures[4];
29775 : 51 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29776 : 51 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29777 : : {
29778 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29779 : 0 : tem_op.resimplify (lseq, valueize);
29780 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29781 : 0 : if (!_r2) goto next_after_fail2805;
29782 : : }
29783 : : else
29784 : : _r2 = _o2[0];
29785 : 51 : _o1[3] = _r2;
29786 : : }
29787 : 51 : (*res_op).set_op (CFN_COND_SUB, TREE_TYPE (_o1[1]), 4);
29788 : 51 : (*res_op).ops[0] = _o1[0];
29789 : 51 : (*res_op).ops[1] = _o1[1];
29790 : 51 : (*res_op).ops[2] = _o1[2];
29791 : 51 : (*res_op).ops[3] = _o1[3];
29792 : 51 : (*res_op).resimplify (lseq, valueize);
29793 : : }
29794 : 51 : if (type != res_op->type
29795 : 51 : && !useless_type_conversion_p (type, res_op->type))
29796 : : {
29797 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2805;
29798 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29799 : 0 : res_op->resimplify (lseq, valueize);
29800 : : }
29801 : 51 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29802 : 51 : return true;
29803 : : }
29804 : 346 : next_after_fail2805:;
29805 : : }
29806 : : }
29807 : : }
29808 : 346 : break;
29809 : : }
29810 : 211 : case MULT_EXPR:
29811 : 211 : {
29812 : 211 : tree _q30 = gimple_assign_rhs1 (_a1);
29813 : 211 : _q30 = do_valueize (valueize, _q30);
29814 : 211 : tree _q31 = gimple_assign_rhs2 (_a1);
29815 : 211 : _q31 = do_valueize (valueize, _q31);
29816 : 211 : if (tree_swap_operands_p (_q30, _q31))
29817 : 28 : std::swap (_q30, _q31);
29818 : 211 : {
29819 : 211 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
29820 : 211 : {
29821 : 211 : tree op_type = TREE_TYPE (captures[1]);
29822 : 211 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MUL), op_type)
29823 : 3 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29824 : 214 : && single_use (captures[1])
29825 : : )
29826 : : {
29827 : 3 : gimple_seq *lseq = seq;
29828 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2806;
29829 : 3 : {
29830 : 3 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29831 : 3 : {
29832 : 3 : tree _o1[4], _r1;
29833 : 3 : _o1[0] = captures[0];
29834 : 3 : _o1[1] = captures[2];
29835 : 3 : _o1[2] = captures[3];
29836 : 3 : {
29837 : 3 : tree _o2[1], _r2;
29838 : 3 : _o2[0] = captures[4];
29839 : 3 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29840 : 3 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29841 : : {
29842 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29843 : 0 : tem_op.resimplify (lseq, valueize);
29844 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29845 : 0 : if (!_r2) goto next_after_fail2806;
29846 : : }
29847 : : else
29848 : : _r2 = _o2[0];
29849 : 3 : _o1[3] = _r2;
29850 : : }
29851 : 3 : (*res_op).set_op (CFN_COND_MUL, TREE_TYPE (_o1[1]), 4);
29852 : 3 : (*res_op).ops[0] = _o1[0];
29853 : 3 : (*res_op).ops[1] = _o1[1];
29854 : 3 : (*res_op).ops[2] = _o1[2];
29855 : 3 : (*res_op).ops[3] = _o1[3];
29856 : 3 : (*res_op).resimplify (lseq, valueize);
29857 : : }
29858 : 3 : if (type != res_op->type
29859 : 3 : && !useless_type_conversion_p (type, res_op->type))
29860 : : {
29861 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2806;
29862 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29863 : 0 : res_op->resimplify (lseq, valueize);
29864 : : }
29865 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29866 : 3 : return true;
29867 : : }
29868 : 208 : next_after_fail2806:;
29869 : : }
29870 : : }
29871 : : }
29872 : 208 : break;
29873 : : }
29874 : 0 : case TRUNC_DIV_EXPR:
29875 : 0 : {
29876 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
29877 : 0 : _q30 = do_valueize (valueize, _q30);
29878 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
29879 : 0 : _q31 = do_valueize (valueize, _q31);
29880 : 0 : {
29881 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
29882 : 0 : {
29883 : 0 : tree op_type = TREE_TYPE (captures[1]);
29884 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_DIV), op_type)
29885 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29886 : 0 : && single_use (captures[1])
29887 : : )
29888 : : {
29889 : 0 : gimple_seq *lseq = seq;
29890 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2807;
29891 : 0 : {
29892 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29893 : 0 : {
29894 : 0 : tree _o1[4], _r1;
29895 : 0 : _o1[0] = captures[0];
29896 : 0 : _o1[1] = captures[2];
29897 : 0 : _o1[2] = captures[3];
29898 : 0 : {
29899 : 0 : tree _o2[1], _r2;
29900 : 0 : _o2[0] = captures[4];
29901 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29902 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29903 : : {
29904 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29905 : 0 : tem_op.resimplify (lseq, valueize);
29906 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29907 : 0 : if (!_r2) goto next_after_fail2807;
29908 : : }
29909 : : else
29910 : : _r2 = _o2[0];
29911 : 0 : _o1[3] = _r2;
29912 : : }
29913 : 0 : (*res_op).set_op (CFN_COND_DIV, TREE_TYPE (_o1[1]), 4);
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).resimplify (lseq, valueize);
29919 : : }
29920 : 0 : if (type != res_op->type
29921 : 0 : && !useless_type_conversion_p (type, res_op->type))
29922 : : {
29923 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2807;
29924 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29925 : 0 : res_op->resimplify (lseq, valueize);
29926 : : }
29927 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29928 : 0 : return true;
29929 : : }
29930 : 0 : next_after_fail2807:;
29931 : : }
29932 : : }
29933 : : }
29934 : 0 : break;
29935 : : }
29936 : 0 : case TRUNC_MOD_EXPR:
29937 : 0 : {
29938 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
29939 : 0 : _q30 = do_valueize (valueize, _q30);
29940 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
29941 : 0 : _q31 = do_valueize (valueize, _q31);
29942 : 0 : {
29943 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
29944 : 0 : {
29945 : 0 : tree op_type = TREE_TYPE (captures[1]);
29946 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MOD), op_type)
29947 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
29948 : 0 : && single_use (captures[1])
29949 : : )
29950 : : {
29951 : 0 : gimple_seq *lseq = seq;
29952 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2808;
29953 : 0 : {
29954 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29955 : 0 : {
29956 : 0 : tree _o1[4], _r1;
29957 : 0 : _o1[0] = captures[0];
29958 : 0 : _o1[1] = captures[2];
29959 : 0 : _o1[2] = captures[3];
29960 : 0 : {
29961 : 0 : tree _o2[1], _r2;
29962 : 0 : _o2[0] = captures[4];
29963 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
29964 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
29965 : : {
29966 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
29967 : 0 : tem_op.resimplify (lseq, valueize);
29968 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
29969 : 0 : if (!_r2) goto next_after_fail2808;
29970 : : }
29971 : : else
29972 : : _r2 = _o2[0];
29973 : 0 : _o1[3] = _r2;
29974 : : }
29975 : 0 : (*res_op).set_op (CFN_COND_MOD, TREE_TYPE (_o1[1]), 4);
29976 : 0 : (*res_op).ops[0] = _o1[0];
29977 : 0 : (*res_op).ops[1] = _o1[1];
29978 : 0 : (*res_op).ops[2] = _o1[2];
29979 : 0 : (*res_op).ops[3] = _o1[3];
29980 : 0 : (*res_op).resimplify (lseq, valueize);
29981 : : }
29982 : 0 : if (type != res_op->type
29983 : 0 : && !useless_type_conversion_p (type, res_op->type))
29984 : : {
29985 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2808;
29986 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
29987 : 0 : res_op->resimplify (lseq, valueize);
29988 : : }
29989 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
29990 : 0 : return true;
29991 : : }
29992 : 0 : next_after_fail2808:;
29993 : : }
29994 : : }
29995 : : }
29996 : 0 : break;
29997 : : }
29998 : 15 : case RDIV_EXPR:
29999 : 15 : {
30000 : 15 : tree _q30 = gimple_assign_rhs1 (_a1);
30001 : 15 : _q30 = do_valueize (valueize, _q30);
30002 : 15 : tree _q31 = gimple_assign_rhs2 (_a1);
30003 : 15 : _q31 = do_valueize (valueize, _q31);
30004 : 15 : {
30005 : 15 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30006 : 15 : {
30007 : 15 : tree op_type = TREE_TYPE (captures[1]);
30008 : 15 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_RDIV), op_type)
30009 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30010 : 15 : && single_use (captures[1])
30011 : : )
30012 : : {
30013 : 0 : gimple_seq *lseq = seq;
30014 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2809;
30015 : 0 : {
30016 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30017 : 0 : {
30018 : 0 : tree _o1[4], _r1;
30019 : 0 : _o1[0] = captures[0];
30020 : 0 : _o1[1] = captures[2];
30021 : 0 : _o1[2] = captures[3];
30022 : 0 : {
30023 : 0 : tree _o2[1], _r2;
30024 : 0 : _o2[0] = captures[4];
30025 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30026 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30027 : : {
30028 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30029 : 0 : tem_op.resimplify (lseq, valueize);
30030 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30031 : 0 : if (!_r2) goto next_after_fail2809;
30032 : : }
30033 : : else
30034 : : _r2 = _o2[0];
30035 : 0 : _o1[3] = _r2;
30036 : : }
30037 : 0 : (*res_op).set_op (CFN_COND_RDIV, TREE_TYPE (_o1[1]), 4);
30038 : 0 : (*res_op).ops[0] = _o1[0];
30039 : 0 : (*res_op).ops[1] = _o1[1];
30040 : 0 : (*res_op).ops[2] = _o1[2];
30041 : 0 : (*res_op).ops[3] = _o1[3];
30042 : 0 : (*res_op).resimplify (lseq, valueize);
30043 : : }
30044 : 0 : if (type != res_op->type
30045 : 0 : && !useless_type_conversion_p (type, res_op->type))
30046 : : {
30047 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2809;
30048 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30049 : 0 : res_op->resimplify (lseq, valueize);
30050 : : }
30051 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30052 : 0 : return true;
30053 : : }
30054 : 15 : next_after_fail2809:;
30055 : : }
30056 : : }
30057 : : }
30058 : 15 : break;
30059 : : }
30060 : 96 : case MIN_EXPR:
30061 : 96 : {
30062 : 96 : tree _q30 = gimple_assign_rhs1 (_a1);
30063 : 96 : _q30 = do_valueize (valueize, _q30);
30064 : 96 : tree _q31 = gimple_assign_rhs2 (_a1);
30065 : 96 : _q31 = do_valueize (valueize, _q31);
30066 : 96 : if (tree_swap_operands_p (_q30, _q31))
30067 : 22 : std::swap (_q30, _q31);
30068 : 96 : {
30069 : 96 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30070 : 96 : {
30071 : 96 : tree op_type = TREE_TYPE (captures[1]);
30072 : 96 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MIN), op_type)
30073 : 96 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30074 : 192 : && single_use (captures[1])
30075 : : )
30076 : : {
30077 : 96 : gimple_seq *lseq = seq;
30078 : 96 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2810;
30079 : 96 : {
30080 : 96 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30081 : 96 : {
30082 : 96 : tree _o1[4], _r1;
30083 : 96 : _o1[0] = captures[0];
30084 : 96 : _o1[1] = captures[2];
30085 : 96 : _o1[2] = captures[3];
30086 : 96 : {
30087 : 96 : tree _o2[1], _r2;
30088 : 96 : _o2[0] = captures[4];
30089 : 96 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30090 : 96 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30091 : : {
30092 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30093 : 0 : tem_op.resimplify (lseq, valueize);
30094 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30095 : 0 : if (!_r2) goto next_after_fail2810;
30096 : : }
30097 : : else
30098 : : _r2 = _o2[0];
30099 : 96 : _o1[3] = _r2;
30100 : : }
30101 : 96 : (*res_op).set_op (CFN_COND_MIN, TREE_TYPE (_o1[1]), 4);
30102 : 96 : (*res_op).ops[0] = _o1[0];
30103 : 96 : (*res_op).ops[1] = _o1[1];
30104 : 96 : (*res_op).ops[2] = _o1[2];
30105 : 96 : (*res_op).ops[3] = _o1[3];
30106 : 96 : (*res_op).resimplify (lseq, valueize);
30107 : : }
30108 : 96 : if (type != res_op->type
30109 : 96 : && !useless_type_conversion_p (type, res_op->type))
30110 : : {
30111 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2810;
30112 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30113 : 0 : res_op->resimplify (lseq, valueize);
30114 : : }
30115 : 96 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30116 : 96 : return true;
30117 : : }
30118 : 0 : next_after_fail2810:;
30119 : : }
30120 : : }
30121 : : }
30122 : 0 : break;
30123 : : }
30124 : 135 : case MAX_EXPR:
30125 : 135 : {
30126 : 135 : tree _q30 = gimple_assign_rhs1 (_a1);
30127 : 135 : _q30 = do_valueize (valueize, _q30);
30128 : 135 : tree _q31 = gimple_assign_rhs2 (_a1);
30129 : 135 : _q31 = do_valueize (valueize, _q31);
30130 : 135 : if (tree_swap_operands_p (_q30, _q31))
30131 : 22 : std::swap (_q30, _q31);
30132 : 135 : {
30133 : 135 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30134 : 135 : {
30135 : 135 : tree op_type = TREE_TYPE (captures[1]);
30136 : 135 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MAX), op_type)
30137 : 99 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30138 : 234 : && single_use (captures[1])
30139 : : )
30140 : : {
30141 : 99 : gimple_seq *lseq = seq;
30142 : 99 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2811;
30143 : 99 : {
30144 : 99 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30145 : 99 : {
30146 : 99 : tree _o1[4], _r1;
30147 : 99 : _o1[0] = captures[0];
30148 : 99 : _o1[1] = captures[2];
30149 : 99 : _o1[2] = captures[3];
30150 : 99 : {
30151 : 99 : tree _o2[1], _r2;
30152 : 99 : _o2[0] = captures[4];
30153 : 99 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30154 : 99 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30155 : : {
30156 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30157 : 0 : tem_op.resimplify (lseq, valueize);
30158 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30159 : 0 : if (!_r2) goto next_after_fail2811;
30160 : : }
30161 : : else
30162 : : _r2 = _o2[0];
30163 : 99 : _o1[3] = _r2;
30164 : : }
30165 : 99 : (*res_op).set_op (CFN_COND_MAX, TREE_TYPE (_o1[1]), 4);
30166 : 99 : (*res_op).ops[0] = _o1[0];
30167 : 99 : (*res_op).ops[1] = _o1[1];
30168 : 99 : (*res_op).ops[2] = _o1[2];
30169 : 99 : (*res_op).ops[3] = _o1[3];
30170 : 99 : (*res_op).resimplify (lseq, valueize);
30171 : : }
30172 : 99 : if (type != res_op->type
30173 : 99 : && !useless_type_conversion_p (type, res_op->type))
30174 : : {
30175 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2811;
30176 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30177 : 0 : res_op->resimplify (lseq, valueize);
30178 : : }
30179 : 99 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30180 : 99 : return true;
30181 : : }
30182 : 36 : next_after_fail2811:;
30183 : : }
30184 : : }
30185 : : }
30186 : 36 : break;
30187 : : }
30188 : 69 : case BIT_AND_EXPR:
30189 : 69 : {
30190 : 69 : tree _q30 = gimple_assign_rhs1 (_a1);
30191 : 69 : _q30 = do_valueize (valueize, _q30);
30192 : 69 : tree _q31 = gimple_assign_rhs2 (_a1);
30193 : 69 : _q31 = do_valueize (valueize, _q31);
30194 : 69 : if (tree_swap_operands_p (_q30, _q31))
30195 : 4 : std::swap (_q30, _q31);
30196 : 69 : {
30197 : 69 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30198 : 69 : {
30199 : 69 : tree op_type = TREE_TYPE (captures[1]);
30200 : 69 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_AND), op_type)
30201 : 30 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30202 : 99 : && single_use (captures[1])
30203 : : )
30204 : : {
30205 : 30 : gimple_seq *lseq = seq;
30206 : 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2812;
30207 : 30 : {
30208 : 30 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30209 : 30 : {
30210 : 30 : tree _o1[4], _r1;
30211 : 30 : _o1[0] = captures[0];
30212 : 30 : _o1[1] = captures[2];
30213 : 30 : _o1[2] = captures[3];
30214 : 30 : {
30215 : 30 : tree _o2[1], _r2;
30216 : 30 : _o2[0] = captures[4];
30217 : 30 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30218 : 30 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30219 : : {
30220 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30221 : 0 : tem_op.resimplify (lseq, valueize);
30222 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30223 : 0 : if (!_r2) goto next_after_fail2812;
30224 : : }
30225 : : else
30226 : : _r2 = _o2[0];
30227 : 30 : _o1[3] = _r2;
30228 : : }
30229 : 30 : (*res_op).set_op (CFN_COND_AND, TREE_TYPE (_o1[1]), 4);
30230 : 30 : (*res_op).ops[0] = _o1[0];
30231 : 30 : (*res_op).ops[1] = _o1[1];
30232 : 30 : (*res_op).ops[2] = _o1[2];
30233 : 30 : (*res_op).ops[3] = _o1[3];
30234 : 30 : (*res_op).resimplify (lseq, valueize);
30235 : : }
30236 : 30 : if (type != res_op->type
30237 : 30 : && !useless_type_conversion_p (type, res_op->type))
30238 : : {
30239 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2812;
30240 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30241 : 0 : res_op->resimplify (lseq, valueize);
30242 : : }
30243 : 30 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30244 : 30 : return true;
30245 : : }
30246 : 39 : next_after_fail2812:;
30247 : : }
30248 : : }
30249 : : }
30250 : 39 : break;
30251 : : }
30252 : 393 : case BIT_IOR_EXPR:
30253 : 393 : {
30254 : 393 : tree _q30 = gimple_assign_rhs1 (_a1);
30255 : 393 : _q30 = do_valueize (valueize, _q30);
30256 : 393 : tree _q31 = gimple_assign_rhs2 (_a1);
30257 : 393 : _q31 = do_valueize (valueize, _q31);
30258 : 393 : if (tree_swap_operands_p (_q30, _q31))
30259 : 6 : std::swap (_q30, _q31);
30260 : 393 : {
30261 : 393 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30262 : 393 : {
30263 : 393 : tree op_type = TREE_TYPE (captures[1]);
30264 : 393 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_IOR), op_type)
30265 : 101 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30266 : 494 : && single_use (captures[1])
30267 : : )
30268 : : {
30269 : 101 : gimple_seq *lseq = seq;
30270 : 101 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2813;
30271 : 101 : {
30272 : 101 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30273 : 101 : {
30274 : 101 : tree _o1[4], _r1;
30275 : 101 : _o1[0] = captures[0];
30276 : 101 : _o1[1] = captures[2];
30277 : 101 : _o1[2] = captures[3];
30278 : 101 : {
30279 : 101 : tree _o2[1], _r2;
30280 : 101 : _o2[0] = captures[4];
30281 : 101 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30282 : 101 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30283 : : {
30284 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30285 : 0 : tem_op.resimplify (lseq, valueize);
30286 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30287 : 0 : if (!_r2) goto next_after_fail2813;
30288 : : }
30289 : : else
30290 : : _r2 = _o2[0];
30291 : 101 : _o1[3] = _r2;
30292 : : }
30293 : 101 : (*res_op).set_op (CFN_COND_IOR, TREE_TYPE (_o1[1]), 4);
30294 : 101 : (*res_op).ops[0] = _o1[0];
30295 : 101 : (*res_op).ops[1] = _o1[1];
30296 : 101 : (*res_op).ops[2] = _o1[2];
30297 : 101 : (*res_op).ops[3] = _o1[3];
30298 : 101 : (*res_op).resimplify (lseq, valueize);
30299 : : }
30300 : 101 : if (type != res_op->type
30301 : 101 : && !useless_type_conversion_p (type, res_op->type))
30302 : : {
30303 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2813;
30304 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30305 : 0 : res_op->resimplify (lseq, valueize);
30306 : : }
30307 : 101 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30308 : 101 : return true;
30309 : : }
30310 : 292 : next_after_fail2813:;
30311 : : }
30312 : : }
30313 : : }
30314 : 292 : break;
30315 : : }
30316 : 208 : case BIT_XOR_EXPR:
30317 : 208 : {
30318 : 208 : tree _q30 = gimple_assign_rhs1 (_a1);
30319 : 208 : _q30 = do_valueize (valueize, _q30);
30320 : 208 : tree _q31 = gimple_assign_rhs2 (_a1);
30321 : 208 : _q31 = do_valueize (valueize, _q31);
30322 : 208 : if (tree_swap_operands_p (_q30, _q31))
30323 : 21 : std::swap (_q30, _q31);
30324 : 208 : {
30325 : 208 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30326 : 208 : {
30327 : 208 : tree op_type = TREE_TYPE (captures[1]);
30328 : 208 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_XOR), op_type)
30329 : 21 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30330 : 229 : && single_use (captures[1])
30331 : : )
30332 : : {
30333 : 21 : gimple_seq *lseq = seq;
30334 : 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2814;
30335 : 21 : {
30336 : 21 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30337 : 21 : {
30338 : 21 : tree _o1[4], _r1;
30339 : 21 : _o1[0] = captures[0];
30340 : 21 : _o1[1] = captures[2];
30341 : 21 : _o1[2] = captures[3];
30342 : 21 : {
30343 : 21 : tree _o2[1], _r2;
30344 : 21 : _o2[0] = captures[4];
30345 : 21 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30346 : 21 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30347 : : {
30348 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30349 : 0 : tem_op.resimplify (lseq, valueize);
30350 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30351 : 0 : if (!_r2) goto next_after_fail2814;
30352 : : }
30353 : : else
30354 : : _r2 = _o2[0];
30355 : 21 : _o1[3] = _r2;
30356 : : }
30357 : 21 : (*res_op).set_op (CFN_COND_XOR, TREE_TYPE (_o1[1]), 4);
30358 : 21 : (*res_op).ops[0] = _o1[0];
30359 : 21 : (*res_op).ops[1] = _o1[1];
30360 : 21 : (*res_op).ops[2] = _o1[2];
30361 : 21 : (*res_op).ops[3] = _o1[3];
30362 : 21 : (*res_op).resimplify (lseq, valueize);
30363 : : }
30364 : 21 : if (type != res_op->type
30365 : 21 : && !useless_type_conversion_p (type, res_op->type))
30366 : : {
30367 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2814;
30368 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30369 : 0 : res_op->resimplify (lseq, valueize);
30370 : : }
30371 : 21 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30372 : 21 : return true;
30373 : : }
30374 : 187 : next_after_fail2814:;
30375 : : }
30376 : : }
30377 : : }
30378 : 187 : break;
30379 : : }
30380 : 118 : case LSHIFT_EXPR:
30381 : 118 : {
30382 : 118 : tree _q30 = gimple_assign_rhs1 (_a1);
30383 : 118 : _q30 = do_valueize (valueize, _q30);
30384 : 118 : tree _q31 = gimple_assign_rhs2 (_a1);
30385 : 118 : _q31 = do_valueize (valueize, _q31);
30386 : 118 : {
30387 : 118 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30388 : 118 : {
30389 : 118 : tree op_type = TREE_TYPE (captures[1]);
30390 : 118 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHL), op_type)
30391 : 103 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30392 : 221 : && single_use (captures[1])
30393 : : )
30394 : : {
30395 : 103 : gimple_seq *lseq = seq;
30396 : 103 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2815;
30397 : 103 : {
30398 : 103 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30399 : 103 : {
30400 : 103 : tree _o1[4], _r1;
30401 : 103 : _o1[0] = captures[0];
30402 : 103 : _o1[1] = captures[2];
30403 : 103 : _o1[2] = captures[3];
30404 : 103 : {
30405 : 103 : tree _o2[1], _r2;
30406 : 103 : _o2[0] = captures[4];
30407 : 103 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30408 : 103 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30409 : : {
30410 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30411 : 0 : tem_op.resimplify (lseq, valueize);
30412 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30413 : 0 : if (!_r2) goto next_after_fail2815;
30414 : : }
30415 : : else
30416 : : _r2 = _o2[0];
30417 : 103 : _o1[3] = _r2;
30418 : : }
30419 : 103 : (*res_op).set_op (CFN_COND_SHL, TREE_TYPE (_o1[1]), 4);
30420 : 103 : (*res_op).ops[0] = _o1[0];
30421 : 103 : (*res_op).ops[1] = _o1[1];
30422 : 103 : (*res_op).ops[2] = _o1[2];
30423 : 103 : (*res_op).ops[3] = _o1[3];
30424 : 103 : (*res_op).resimplify (lseq, valueize);
30425 : : }
30426 : 103 : if (type != res_op->type
30427 : 103 : && !useless_type_conversion_p (type, res_op->type))
30428 : : {
30429 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2815;
30430 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30431 : 0 : res_op->resimplify (lseq, valueize);
30432 : : }
30433 : 103 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30434 : 103 : return true;
30435 : : }
30436 : 15 : next_after_fail2815:;
30437 : : }
30438 : : }
30439 : : }
30440 : 15 : break;
30441 : : }
30442 : 284 : case RSHIFT_EXPR:
30443 : 284 : {
30444 : 284 : tree _q30 = gimple_assign_rhs1 (_a1);
30445 : 284 : _q30 = do_valueize (valueize, _q30);
30446 : 284 : tree _q31 = gimple_assign_rhs2 (_a1);
30447 : 284 : _q31 = do_valueize (valueize, _q31);
30448 : 284 : {
30449 : 284 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30450 : 284 : {
30451 : 284 : tree op_type = TREE_TYPE (captures[1]);
30452 : 284 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHR), op_type)
30453 : 188 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30454 : 472 : && single_use (captures[1])
30455 : : )
30456 : : {
30457 : 188 : gimple_seq *lseq = seq;
30458 : 188 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2816;
30459 : 188 : {
30460 : 188 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30461 : 188 : {
30462 : 188 : tree _o1[4], _r1;
30463 : 188 : _o1[0] = captures[0];
30464 : 188 : _o1[1] = captures[2];
30465 : 188 : _o1[2] = captures[3];
30466 : 188 : {
30467 : 188 : tree _o2[1], _r2;
30468 : 188 : _o2[0] = captures[4];
30469 : 188 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30470 : 188 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30471 : : {
30472 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30473 : 0 : tem_op.resimplify (lseq, valueize);
30474 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30475 : 0 : if (!_r2) goto next_after_fail2816;
30476 : : }
30477 : : else
30478 : : _r2 = _o2[0];
30479 : 188 : _o1[3] = _r2;
30480 : : }
30481 : 188 : (*res_op).set_op (CFN_COND_SHR, TREE_TYPE (_o1[1]), 4);
30482 : 188 : (*res_op).ops[0] = _o1[0];
30483 : 188 : (*res_op).ops[1] = _o1[1];
30484 : 188 : (*res_op).ops[2] = _o1[2];
30485 : 188 : (*res_op).ops[3] = _o1[3];
30486 : 188 : (*res_op).resimplify (lseq, valueize);
30487 : : }
30488 : 188 : if (type != res_op->type
30489 : 188 : && !useless_type_conversion_p (type, res_op->type))
30490 : : {
30491 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2816;
30492 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30493 : 0 : res_op->resimplify (lseq, valueize);
30494 : : }
30495 : 188 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30496 : 188 : return true;
30497 : : }
30498 : 96 : next_after_fail2816:;
30499 : : }
30500 : : }
30501 : : }
30502 : 96 : break;
30503 : : }
30504 : : default:;
30505 : : }
30506 : 13825 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
30507 : 3288 : switch (gimple_call_combined_fn (_c1))
30508 : : {
30509 : 0 : case CFN_FMAX:
30510 : 0 : if (gimple_call_num_args (_c1) == 2)
30511 : : {
30512 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
30513 : 0 : _q30 = do_valueize (valueize, _q30);
30514 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
30515 : 0 : _q31 = do_valueize (valueize, _q31);
30516 : 0 : {
30517 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30518 : 0 : {
30519 : 0 : tree op_type = TREE_TYPE (captures[1]);
30520 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMAX), op_type)
30521 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30522 : 0 : && single_use (captures[1])
30523 : : )
30524 : : {
30525 : 0 : gimple_seq *lseq = seq;
30526 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2817;
30527 : 0 : {
30528 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30529 : 0 : {
30530 : 0 : tree _o1[4], _r1;
30531 : 0 : _o1[0] = captures[0];
30532 : 0 : _o1[1] = captures[2];
30533 : 0 : _o1[2] = captures[3];
30534 : 0 : {
30535 : 0 : tree _o2[1], _r2;
30536 : 0 : _o2[0] = captures[4];
30537 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30538 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30539 : : {
30540 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30541 : 0 : tem_op.resimplify (lseq, valueize);
30542 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30543 : 0 : if (!_r2) goto next_after_fail2817;
30544 : : }
30545 : : else
30546 : : _r2 = _o2[0];
30547 : 0 : _o1[3] = _r2;
30548 : : }
30549 : 0 : (*res_op).set_op (CFN_COND_FMAX, TREE_TYPE (_o1[1]), 4);
30550 : 0 : (*res_op).ops[0] = _o1[0];
30551 : 0 : (*res_op).ops[1] = _o1[1];
30552 : 0 : (*res_op).ops[2] = _o1[2];
30553 : 0 : (*res_op).ops[3] = _o1[3];
30554 : 0 : (*res_op).resimplify (lseq, valueize);
30555 : : }
30556 : 0 : if (type != res_op->type
30557 : 0 : && !useless_type_conversion_p (type, res_op->type))
30558 : : {
30559 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2817;
30560 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30561 : 0 : res_op->resimplify (lseq, valueize);
30562 : : }
30563 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30564 : 0 : return true;
30565 : : }
30566 : 0 : next_after_fail2817:;
30567 : : }
30568 : : }
30569 : : }
30570 : : }
30571 : : break;
30572 : 0 : case CFN_FMIN:
30573 : 0 : if (gimple_call_num_args (_c1) == 2)
30574 : : {
30575 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
30576 : 0 : _q30 = do_valueize (valueize, _q30);
30577 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
30578 : 0 : _q31 = do_valueize (valueize, _q31);
30579 : 0 : {
30580 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30581 : 0 : {
30582 : 0 : tree op_type = TREE_TYPE (captures[1]);
30583 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMIN), op_type)
30584 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30585 : 0 : && single_use (captures[1])
30586 : : )
30587 : : {
30588 : 0 : gimple_seq *lseq = seq;
30589 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2818;
30590 : 0 : {
30591 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30592 : 0 : {
30593 : 0 : tree _o1[4], _r1;
30594 : 0 : _o1[0] = captures[0];
30595 : 0 : _o1[1] = captures[2];
30596 : 0 : _o1[2] = captures[3];
30597 : 0 : {
30598 : 0 : tree _o2[1], _r2;
30599 : 0 : _o2[0] = captures[4];
30600 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30601 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30602 : : {
30603 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30604 : 0 : tem_op.resimplify (lseq, valueize);
30605 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30606 : 0 : if (!_r2) goto next_after_fail2818;
30607 : : }
30608 : : else
30609 : : _r2 = _o2[0];
30610 : 0 : _o1[3] = _r2;
30611 : : }
30612 : 0 : (*res_op).set_op (CFN_COND_FMIN, TREE_TYPE (_o1[1]), 4);
30613 : 0 : (*res_op).ops[0] = _o1[0];
30614 : 0 : (*res_op).ops[1] = _o1[1];
30615 : 0 : (*res_op).ops[2] = _o1[2];
30616 : 0 : (*res_op).ops[3] = _o1[3];
30617 : 0 : (*res_op).resimplify (lseq, valueize);
30618 : : }
30619 : 0 : if (type != res_op->type
30620 : 0 : && !useless_type_conversion_p (type, res_op->type))
30621 : : {
30622 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2818;
30623 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30624 : 0 : res_op->resimplify (lseq, valueize);
30625 : : }
30626 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30627 : 0 : return true;
30628 : : }
30629 : 0 : next_after_fail2818:;
30630 : : }
30631 : : }
30632 : : }
30633 : : }
30634 : : break;
30635 : 0 : case CFN_COPYSIGN:
30636 : 0 : if (gimple_call_num_args (_c1) == 2)
30637 : : {
30638 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
30639 : 0 : _q30 = do_valueize (valueize, _q30);
30640 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
30641 : 0 : _q31 = do_valueize (valueize, _q31);
30642 : 0 : {
30643 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _p2 };
30644 : 0 : {
30645 : 0 : tree op_type = TREE_TYPE (captures[1]);
30646 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_COPYSIGN), op_type)
30647 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30648 : 0 : && single_use (captures[1])
30649 : : )
30650 : : {
30651 : 0 : gimple_seq *lseq = seq;
30652 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2819;
30653 : 0 : {
30654 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30655 : 0 : {
30656 : 0 : tree _o1[4], _r1;
30657 : 0 : _o1[0] = captures[0];
30658 : 0 : _o1[1] = captures[2];
30659 : 0 : _o1[2] = captures[3];
30660 : 0 : {
30661 : 0 : tree _o2[1], _r2;
30662 : 0 : _o2[0] = captures[4];
30663 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30664 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30665 : : {
30666 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30667 : 0 : tem_op.resimplify (lseq, valueize);
30668 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30669 : 0 : if (!_r2) goto next_after_fail2819;
30670 : : }
30671 : : else
30672 : : _r2 = _o2[0];
30673 : 0 : _o1[3] = _r2;
30674 : : }
30675 : 0 : (*res_op).set_op (CFN_COND_COPYSIGN, TREE_TYPE (_o1[1]), 4);
30676 : 0 : (*res_op).ops[0] = _o1[0];
30677 : 0 : (*res_op).ops[1] = _o1[1];
30678 : 0 : (*res_op).ops[2] = _o1[2];
30679 : 0 : (*res_op).ops[3] = _o1[3];
30680 : 0 : (*res_op).resimplify (lseq, valueize);
30681 : : }
30682 : 0 : if (type != res_op->type
30683 : 0 : && !useless_type_conversion_p (type, res_op->type))
30684 : : {
30685 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2819;
30686 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30687 : 0 : res_op->resimplify (lseq, valueize);
30688 : : }
30689 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1244, __FILE__, __LINE__, true);
30690 : 0 : return true;
30691 : : }
30692 : 0 : next_after_fail2819:;
30693 : : }
30694 : : }
30695 : : }
30696 : : }
30697 : : break;
30698 : : default:;
30699 : : }
30700 : : }
30701 : : break;
30702 : 173868 : default:;
30703 : : }
30704 : 173868 : switch (TREE_CODE (_p2))
30705 : : {
30706 : 41275 : case SSA_NAME:
30707 : 41275 : if (gimple *_d1 = get_def (valueize, _p2))
30708 : : {
30709 : 35656 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
30710 : 36988 : switch (gimple_assign_rhs_code (_a1))
30711 : : {
30712 : 5000 : case VIEW_CONVERT_EXPR:
30713 : 5000 : {
30714 : 5000 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
30715 : 5000 : if ((TREE_CODE (_q40) == SSA_NAME
30716 : 5000 : || is_gimple_min_invariant (_q40)))
30717 : : {
30718 : 5000 : _q40 = do_valueize (valueize, _q40);
30719 : 5000 : switch (TREE_CODE (_q40))
30720 : : {
30721 : 5000 : case SSA_NAME:
30722 : 5000 : if (gimple *_d2 = get_def (valueize, _q40))
30723 : : {
30724 : 4950 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
30725 : 3234 : switch (gimple_assign_rhs_code (_a2))
30726 : : {
30727 : 1328 : case PLUS_EXPR:
30728 : 1328 : {
30729 : 1328 : tree _q50 = gimple_assign_rhs1 (_a2);
30730 : 1328 : _q50 = do_valueize (valueize, _q50);
30731 : 1328 : tree _q51 = gimple_assign_rhs2 (_a2);
30732 : 1328 : _q51 = do_valueize (valueize, _q51);
30733 : 1328 : if (tree_swap_operands_p (_q50, _q51))
30734 : 58 : std::swap (_q50, _q51);
30735 : 1328 : {
30736 : 1328 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
30737 : 1328 : {
30738 : 1328 : tree op_type = TREE_TYPE (captures[2]);
30739 : 1328 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_ADD), op_type)
30740 : 129 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30741 : 1457 : && single_use (captures[2])
30742 : : )
30743 : : {
30744 : 101 : gimple_seq *lseq = seq;
30745 : 101 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2820;
30746 : 101 : {
30747 : 101 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30748 : 101 : {
30749 : 101 : tree _o1[4], _r1;
30750 : 101 : {
30751 : 101 : tree _o2[1], _r2;
30752 : 101 : _o2[0] = captures[0];
30753 : 101 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
30754 : 101 : tem_op.resimplify (lseq, valueize);
30755 : 101 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30756 : 101 : if (!_r2) goto next_after_fail2820;
30757 : 33 : _o1[0] = _r2;
30758 : : }
30759 : 33 : _o1[1] = captures[3];
30760 : 33 : _o1[2] = captures[4];
30761 : 33 : {
30762 : 33 : tree _o2[1], _r2;
30763 : 33 : _o2[0] = captures[1];
30764 : 33 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30765 : 33 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30766 : : {
30767 : 33 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30768 : 33 : tem_op.resimplify (lseq, valueize);
30769 : 33 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30770 : 33 : if (!_r2) goto next_after_fail2820;
30771 : : }
30772 : : else
30773 : : _r2 = _o2[0];
30774 : 33 : _o1[3] = _r2;
30775 : : }
30776 : 33 : (*res_op).set_op (CFN_COND_ADD, TREE_TYPE (_o1[1]), 4);
30777 : 33 : (*res_op).ops[0] = _o1[0];
30778 : 33 : (*res_op).ops[1] = _o1[1];
30779 : 33 : (*res_op).ops[2] = _o1[2];
30780 : 33 : (*res_op).ops[3] = _o1[3];
30781 : 33 : (*res_op).resimplify (lseq, valueize);
30782 : : }
30783 : 33 : if (type != res_op->type
30784 : 33 : && !useless_type_conversion_p (type, res_op->type))
30785 : : {
30786 : 33 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2820;
30787 : 33 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30788 : 33 : res_op->resimplify (lseq, valueize);
30789 : : }
30790 : 33 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
30791 : 33 : return true;
30792 : : }
30793 : 1295 : next_after_fail2820:;
30794 : : }
30795 : : }
30796 : : }
30797 : 1295 : break;
30798 : : }
30799 : 26 : case MINUS_EXPR:
30800 : 26 : {
30801 : 26 : tree _q50 = gimple_assign_rhs1 (_a2);
30802 : 26 : _q50 = do_valueize (valueize, _q50);
30803 : 26 : tree _q51 = gimple_assign_rhs2 (_a2);
30804 : 26 : _q51 = do_valueize (valueize, _q51);
30805 : 26 : {
30806 : 26 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
30807 : 26 : {
30808 : 26 : tree op_type = TREE_TYPE (captures[2]);
30809 : 26 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SUB), op_type)
30810 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30811 : 26 : && single_use (captures[2])
30812 : : )
30813 : : {
30814 : 0 : gimple_seq *lseq = seq;
30815 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2821;
30816 : 0 : {
30817 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30818 : 0 : {
30819 : 0 : tree _o1[4], _r1;
30820 : 0 : {
30821 : 0 : tree _o2[1], _r2;
30822 : 0 : _o2[0] = captures[0];
30823 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
30824 : 0 : tem_op.resimplify (lseq, valueize);
30825 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30826 : 0 : if (!_r2) goto next_after_fail2821;
30827 : 0 : _o1[0] = _r2;
30828 : : }
30829 : 0 : _o1[1] = captures[3];
30830 : 0 : _o1[2] = captures[4];
30831 : 0 : {
30832 : 0 : tree _o2[1], _r2;
30833 : 0 : _o2[0] = captures[1];
30834 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30835 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30836 : : {
30837 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30838 : 0 : tem_op.resimplify (lseq, valueize);
30839 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30840 : 0 : if (!_r2) goto next_after_fail2821;
30841 : : }
30842 : : else
30843 : : _r2 = _o2[0];
30844 : 0 : _o1[3] = _r2;
30845 : : }
30846 : 0 : (*res_op).set_op (CFN_COND_SUB, TREE_TYPE (_o1[1]), 4);
30847 : 0 : (*res_op).ops[0] = _o1[0];
30848 : 0 : (*res_op).ops[1] = _o1[1];
30849 : 0 : (*res_op).ops[2] = _o1[2];
30850 : 0 : (*res_op).ops[3] = _o1[3];
30851 : 0 : (*res_op).resimplify (lseq, valueize);
30852 : : }
30853 : 0 : if (type != res_op->type
30854 : 0 : && !useless_type_conversion_p (type, res_op->type))
30855 : : {
30856 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2821;
30857 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30858 : 0 : res_op->resimplify (lseq, valueize);
30859 : : }
30860 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
30861 : 0 : return true;
30862 : : }
30863 : 26 : next_after_fail2821:;
30864 : : }
30865 : : }
30866 : : }
30867 : 26 : break;
30868 : : }
30869 : 166 : case MULT_EXPR:
30870 : 166 : {
30871 : 166 : tree _q50 = gimple_assign_rhs1 (_a2);
30872 : 166 : _q50 = do_valueize (valueize, _q50);
30873 : 166 : tree _q51 = gimple_assign_rhs2 (_a2);
30874 : 166 : _q51 = do_valueize (valueize, _q51);
30875 : 166 : if (tree_swap_operands_p (_q50, _q51))
30876 : 20 : std::swap (_q50, _q51);
30877 : 166 : {
30878 : 166 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
30879 : 166 : {
30880 : 166 : tree op_type = TREE_TYPE (captures[2]);
30881 : 166 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MUL), op_type)
30882 : 6 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30883 : 172 : && single_use (captures[2])
30884 : : )
30885 : : {
30886 : 6 : gimple_seq *lseq = seq;
30887 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2822;
30888 : 6 : {
30889 : 6 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30890 : 6 : {
30891 : 6 : tree _o1[4], _r1;
30892 : 6 : {
30893 : 6 : tree _o2[1], _r2;
30894 : 6 : _o2[0] = captures[0];
30895 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
30896 : 6 : tem_op.resimplify (lseq, valueize);
30897 : 6 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30898 : 6 : if (!_r2) goto next_after_fail2822;
30899 : 0 : _o1[0] = _r2;
30900 : : }
30901 : 0 : _o1[1] = captures[3];
30902 : 0 : _o1[2] = captures[4];
30903 : 0 : {
30904 : 0 : tree _o2[1], _r2;
30905 : 0 : _o2[0] = captures[1];
30906 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30907 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30908 : : {
30909 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30910 : 0 : tem_op.resimplify (lseq, valueize);
30911 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30912 : 0 : if (!_r2) goto next_after_fail2822;
30913 : : }
30914 : : else
30915 : : _r2 = _o2[0];
30916 : 0 : _o1[3] = _r2;
30917 : : }
30918 : 0 : (*res_op).set_op (CFN_COND_MUL, TREE_TYPE (_o1[1]), 4);
30919 : 0 : (*res_op).ops[0] = _o1[0];
30920 : 0 : (*res_op).ops[1] = _o1[1];
30921 : 0 : (*res_op).ops[2] = _o1[2];
30922 : 0 : (*res_op).ops[3] = _o1[3];
30923 : 0 : (*res_op).resimplify (lseq, valueize);
30924 : : }
30925 : 0 : if (type != res_op->type
30926 : 0 : && !useless_type_conversion_p (type, res_op->type))
30927 : : {
30928 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2822;
30929 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30930 : 0 : res_op->resimplify (lseq, valueize);
30931 : : }
30932 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
30933 : 0 : return true;
30934 : : }
30935 : 166 : next_after_fail2822:;
30936 : : }
30937 : : }
30938 : : }
30939 : 166 : break;
30940 : : }
30941 : 0 : case TRUNC_DIV_EXPR:
30942 : 0 : {
30943 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
30944 : 0 : _q50 = do_valueize (valueize, _q50);
30945 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
30946 : 0 : _q51 = do_valueize (valueize, _q51);
30947 : 0 : {
30948 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
30949 : 0 : {
30950 : 0 : tree op_type = TREE_TYPE (captures[2]);
30951 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_DIV), op_type)
30952 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
30953 : 0 : && single_use (captures[2])
30954 : : )
30955 : : {
30956 : 0 : gimple_seq *lseq = seq;
30957 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2823;
30958 : 0 : {
30959 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
30960 : 0 : {
30961 : 0 : tree _o1[4], _r1;
30962 : 0 : {
30963 : 0 : tree _o2[1], _r2;
30964 : 0 : _o2[0] = captures[0];
30965 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
30966 : 0 : tem_op.resimplify (lseq, valueize);
30967 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30968 : 0 : if (!_r2) goto next_after_fail2823;
30969 : 0 : _o1[0] = _r2;
30970 : : }
30971 : 0 : _o1[1] = captures[3];
30972 : 0 : _o1[2] = captures[4];
30973 : 0 : {
30974 : 0 : tree _o2[1], _r2;
30975 : 0 : _o2[0] = captures[1];
30976 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
30977 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
30978 : : {
30979 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
30980 : 0 : tem_op.resimplify (lseq, valueize);
30981 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
30982 : 0 : if (!_r2) goto next_after_fail2823;
30983 : : }
30984 : : else
30985 : : _r2 = _o2[0];
30986 : 0 : _o1[3] = _r2;
30987 : : }
30988 : 0 : (*res_op).set_op (CFN_COND_DIV, TREE_TYPE (_o1[1]), 4);
30989 : 0 : (*res_op).ops[0] = _o1[0];
30990 : 0 : (*res_op).ops[1] = _o1[1];
30991 : 0 : (*res_op).ops[2] = _o1[2];
30992 : 0 : (*res_op).ops[3] = _o1[3];
30993 : 0 : (*res_op).resimplify (lseq, valueize);
30994 : : }
30995 : 0 : if (type != res_op->type
30996 : 0 : && !useless_type_conversion_p (type, res_op->type))
30997 : : {
30998 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2823;
30999 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31000 : 0 : res_op->resimplify (lseq, valueize);
31001 : : }
31002 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31003 : 0 : return true;
31004 : : }
31005 : 0 : next_after_fail2823:;
31006 : : }
31007 : : }
31008 : : }
31009 : 0 : break;
31010 : : }
31011 : 0 : case TRUNC_MOD_EXPR:
31012 : 0 : {
31013 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31014 : 0 : _q50 = do_valueize (valueize, _q50);
31015 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31016 : 0 : _q51 = do_valueize (valueize, _q51);
31017 : 0 : {
31018 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31019 : 0 : {
31020 : 0 : tree op_type = TREE_TYPE (captures[2]);
31021 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MOD), op_type)
31022 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31023 : 0 : && single_use (captures[2])
31024 : : )
31025 : : {
31026 : 0 : gimple_seq *lseq = seq;
31027 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2824;
31028 : 0 : {
31029 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31030 : 0 : {
31031 : 0 : tree _o1[4], _r1;
31032 : 0 : {
31033 : 0 : tree _o2[1], _r2;
31034 : 0 : _o2[0] = captures[0];
31035 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31036 : 0 : tem_op.resimplify (lseq, valueize);
31037 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31038 : 0 : if (!_r2) goto next_after_fail2824;
31039 : 0 : _o1[0] = _r2;
31040 : : }
31041 : 0 : _o1[1] = captures[3];
31042 : 0 : _o1[2] = captures[4];
31043 : 0 : {
31044 : 0 : tree _o2[1], _r2;
31045 : 0 : _o2[0] = captures[1];
31046 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31047 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31048 : : {
31049 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31050 : 0 : tem_op.resimplify (lseq, valueize);
31051 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31052 : 0 : if (!_r2) goto next_after_fail2824;
31053 : : }
31054 : : else
31055 : : _r2 = _o2[0];
31056 : 0 : _o1[3] = _r2;
31057 : : }
31058 : 0 : (*res_op).set_op (CFN_COND_MOD, TREE_TYPE (_o1[1]), 4);
31059 : 0 : (*res_op).ops[0] = _o1[0];
31060 : 0 : (*res_op).ops[1] = _o1[1];
31061 : 0 : (*res_op).ops[2] = _o1[2];
31062 : 0 : (*res_op).ops[3] = _o1[3];
31063 : 0 : (*res_op).resimplify (lseq, valueize);
31064 : : }
31065 : 0 : if (type != res_op->type
31066 : 0 : && !useless_type_conversion_p (type, res_op->type))
31067 : : {
31068 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2824;
31069 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31070 : 0 : res_op->resimplify (lseq, valueize);
31071 : : }
31072 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31073 : 0 : return true;
31074 : : }
31075 : 0 : next_after_fail2824:;
31076 : : }
31077 : : }
31078 : : }
31079 : 0 : break;
31080 : : }
31081 : 0 : case RDIV_EXPR:
31082 : 0 : {
31083 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31084 : 0 : _q50 = do_valueize (valueize, _q50);
31085 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31086 : 0 : _q51 = do_valueize (valueize, _q51);
31087 : 0 : {
31088 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31089 : 0 : {
31090 : 0 : tree op_type = TREE_TYPE (captures[2]);
31091 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_RDIV), op_type)
31092 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31093 : 0 : && single_use (captures[2])
31094 : : )
31095 : : {
31096 : 0 : gimple_seq *lseq = seq;
31097 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2825;
31098 : 0 : {
31099 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31100 : 0 : {
31101 : 0 : tree _o1[4], _r1;
31102 : 0 : {
31103 : 0 : tree _o2[1], _r2;
31104 : 0 : _o2[0] = captures[0];
31105 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31106 : 0 : tem_op.resimplify (lseq, valueize);
31107 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31108 : 0 : if (!_r2) goto next_after_fail2825;
31109 : 0 : _o1[0] = _r2;
31110 : : }
31111 : 0 : _o1[1] = captures[3];
31112 : 0 : _o1[2] = captures[4];
31113 : 0 : {
31114 : 0 : tree _o2[1], _r2;
31115 : 0 : _o2[0] = captures[1];
31116 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31117 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31118 : : {
31119 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31120 : 0 : tem_op.resimplify (lseq, valueize);
31121 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31122 : 0 : if (!_r2) goto next_after_fail2825;
31123 : : }
31124 : : else
31125 : : _r2 = _o2[0];
31126 : 0 : _o1[3] = _r2;
31127 : : }
31128 : 0 : (*res_op).set_op (CFN_COND_RDIV, TREE_TYPE (_o1[1]), 4);
31129 : 0 : (*res_op).ops[0] = _o1[0];
31130 : 0 : (*res_op).ops[1] = _o1[1];
31131 : 0 : (*res_op).ops[2] = _o1[2];
31132 : 0 : (*res_op).ops[3] = _o1[3];
31133 : 0 : (*res_op).resimplify (lseq, valueize);
31134 : : }
31135 : 0 : if (type != res_op->type
31136 : 0 : && !useless_type_conversion_p (type, res_op->type))
31137 : : {
31138 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2825;
31139 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31140 : 0 : res_op->resimplify (lseq, valueize);
31141 : : }
31142 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31143 : 0 : return true;
31144 : : }
31145 : 0 : next_after_fail2825:;
31146 : : }
31147 : : }
31148 : : }
31149 : 0 : break;
31150 : : }
31151 : 0 : case MIN_EXPR:
31152 : 0 : {
31153 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31154 : 0 : _q50 = do_valueize (valueize, _q50);
31155 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31156 : 0 : _q51 = do_valueize (valueize, _q51);
31157 : 0 : if (tree_swap_operands_p (_q50, _q51))
31158 : 0 : std::swap (_q50, _q51);
31159 : 0 : {
31160 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31161 : 0 : {
31162 : 0 : tree op_type = TREE_TYPE (captures[2]);
31163 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MIN), op_type)
31164 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31165 : 0 : && single_use (captures[2])
31166 : : )
31167 : : {
31168 : 0 : gimple_seq *lseq = seq;
31169 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2826;
31170 : 0 : {
31171 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31172 : 0 : {
31173 : 0 : tree _o1[4], _r1;
31174 : 0 : {
31175 : 0 : tree _o2[1], _r2;
31176 : 0 : _o2[0] = captures[0];
31177 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31178 : 0 : tem_op.resimplify (lseq, valueize);
31179 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31180 : 0 : if (!_r2) goto next_after_fail2826;
31181 : 0 : _o1[0] = _r2;
31182 : : }
31183 : 0 : _o1[1] = captures[3];
31184 : 0 : _o1[2] = captures[4];
31185 : 0 : {
31186 : 0 : tree _o2[1], _r2;
31187 : 0 : _o2[0] = captures[1];
31188 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31189 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31190 : : {
31191 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31192 : 0 : tem_op.resimplify (lseq, valueize);
31193 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31194 : 0 : if (!_r2) goto next_after_fail2826;
31195 : : }
31196 : : else
31197 : : _r2 = _o2[0];
31198 : 0 : _o1[3] = _r2;
31199 : : }
31200 : 0 : (*res_op).set_op (CFN_COND_MIN, TREE_TYPE (_o1[1]), 4);
31201 : 0 : (*res_op).ops[0] = _o1[0];
31202 : 0 : (*res_op).ops[1] = _o1[1];
31203 : 0 : (*res_op).ops[2] = _o1[2];
31204 : 0 : (*res_op).ops[3] = _o1[3];
31205 : 0 : (*res_op).resimplify (lseq, valueize);
31206 : : }
31207 : 0 : if (type != res_op->type
31208 : 0 : && !useless_type_conversion_p (type, res_op->type))
31209 : : {
31210 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2826;
31211 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31212 : 0 : res_op->resimplify (lseq, valueize);
31213 : : }
31214 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31215 : 0 : return true;
31216 : : }
31217 : 0 : next_after_fail2826:;
31218 : : }
31219 : : }
31220 : : }
31221 : 0 : break;
31222 : : }
31223 : 0 : case MAX_EXPR:
31224 : 0 : {
31225 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31226 : 0 : _q50 = do_valueize (valueize, _q50);
31227 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31228 : 0 : _q51 = do_valueize (valueize, _q51);
31229 : 0 : if (tree_swap_operands_p (_q50, _q51))
31230 : 0 : std::swap (_q50, _q51);
31231 : 0 : {
31232 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31233 : 0 : {
31234 : 0 : tree op_type = TREE_TYPE (captures[2]);
31235 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MAX), op_type)
31236 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31237 : 0 : && single_use (captures[2])
31238 : : )
31239 : : {
31240 : 0 : gimple_seq *lseq = seq;
31241 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2827;
31242 : 0 : {
31243 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31244 : 0 : {
31245 : 0 : tree _o1[4], _r1;
31246 : 0 : {
31247 : 0 : tree _o2[1], _r2;
31248 : 0 : _o2[0] = captures[0];
31249 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31250 : 0 : tem_op.resimplify (lseq, valueize);
31251 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31252 : 0 : if (!_r2) goto next_after_fail2827;
31253 : 0 : _o1[0] = _r2;
31254 : : }
31255 : 0 : _o1[1] = captures[3];
31256 : 0 : _o1[2] = captures[4];
31257 : 0 : {
31258 : 0 : tree _o2[1], _r2;
31259 : 0 : _o2[0] = captures[1];
31260 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31261 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31262 : : {
31263 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31264 : 0 : tem_op.resimplify (lseq, valueize);
31265 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31266 : 0 : if (!_r2) goto next_after_fail2827;
31267 : : }
31268 : : else
31269 : : _r2 = _o2[0];
31270 : 0 : _o1[3] = _r2;
31271 : : }
31272 : 0 : (*res_op).set_op (CFN_COND_MAX, TREE_TYPE (_o1[1]), 4);
31273 : 0 : (*res_op).ops[0] = _o1[0];
31274 : 0 : (*res_op).ops[1] = _o1[1];
31275 : 0 : (*res_op).ops[2] = _o1[2];
31276 : 0 : (*res_op).ops[3] = _o1[3];
31277 : 0 : (*res_op).resimplify (lseq, valueize);
31278 : : }
31279 : 0 : if (type != res_op->type
31280 : 0 : && !useless_type_conversion_p (type, res_op->type))
31281 : : {
31282 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2827;
31283 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31284 : 0 : res_op->resimplify (lseq, valueize);
31285 : : }
31286 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31287 : 0 : return true;
31288 : : }
31289 : 0 : next_after_fail2827:;
31290 : : }
31291 : : }
31292 : : }
31293 : 0 : break;
31294 : : }
31295 : 0 : case BIT_AND_EXPR:
31296 : 0 : {
31297 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31298 : 0 : _q50 = do_valueize (valueize, _q50);
31299 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31300 : 0 : _q51 = do_valueize (valueize, _q51);
31301 : 0 : if (tree_swap_operands_p (_q50, _q51))
31302 : 0 : std::swap (_q50, _q51);
31303 : 0 : {
31304 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31305 : 0 : {
31306 : 0 : tree op_type = TREE_TYPE (captures[2]);
31307 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_AND), op_type)
31308 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31309 : 0 : && single_use (captures[2])
31310 : : )
31311 : : {
31312 : 0 : gimple_seq *lseq = seq;
31313 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2828;
31314 : 0 : {
31315 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31316 : 0 : {
31317 : 0 : tree _o1[4], _r1;
31318 : 0 : {
31319 : 0 : tree _o2[1], _r2;
31320 : 0 : _o2[0] = captures[0];
31321 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31322 : 0 : tem_op.resimplify (lseq, valueize);
31323 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31324 : 0 : if (!_r2) goto next_after_fail2828;
31325 : 0 : _o1[0] = _r2;
31326 : : }
31327 : 0 : _o1[1] = captures[3];
31328 : 0 : _o1[2] = captures[4];
31329 : 0 : {
31330 : 0 : tree _o2[1], _r2;
31331 : 0 : _o2[0] = captures[1];
31332 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31333 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31334 : : {
31335 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31336 : 0 : tem_op.resimplify (lseq, valueize);
31337 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31338 : 0 : if (!_r2) goto next_after_fail2828;
31339 : : }
31340 : : else
31341 : : _r2 = _o2[0];
31342 : 0 : _o1[3] = _r2;
31343 : : }
31344 : 0 : (*res_op).set_op (CFN_COND_AND, TREE_TYPE (_o1[1]), 4);
31345 : 0 : (*res_op).ops[0] = _o1[0];
31346 : 0 : (*res_op).ops[1] = _o1[1];
31347 : 0 : (*res_op).ops[2] = _o1[2];
31348 : 0 : (*res_op).ops[3] = _o1[3];
31349 : 0 : (*res_op).resimplify (lseq, valueize);
31350 : : }
31351 : 0 : if (type != res_op->type
31352 : 0 : && !useless_type_conversion_p (type, res_op->type))
31353 : : {
31354 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2828;
31355 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31356 : 0 : res_op->resimplify (lseq, valueize);
31357 : : }
31358 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31359 : 0 : return true;
31360 : : }
31361 : 0 : next_after_fail2828:;
31362 : : }
31363 : : }
31364 : : }
31365 : 0 : break;
31366 : : }
31367 : 0 : case BIT_IOR_EXPR:
31368 : 0 : {
31369 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31370 : 0 : _q50 = do_valueize (valueize, _q50);
31371 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31372 : 0 : _q51 = do_valueize (valueize, _q51);
31373 : 0 : if (tree_swap_operands_p (_q50, _q51))
31374 : 0 : std::swap (_q50, _q51);
31375 : 0 : {
31376 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31377 : 0 : {
31378 : 0 : tree op_type = TREE_TYPE (captures[2]);
31379 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_IOR), op_type)
31380 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31381 : 0 : && single_use (captures[2])
31382 : : )
31383 : : {
31384 : 0 : gimple_seq *lseq = seq;
31385 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2829;
31386 : 0 : {
31387 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31388 : 0 : {
31389 : 0 : tree _o1[4], _r1;
31390 : 0 : {
31391 : 0 : tree _o2[1], _r2;
31392 : 0 : _o2[0] = captures[0];
31393 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31394 : 0 : tem_op.resimplify (lseq, valueize);
31395 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31396 : 0 : if (!_r2) goto next_after_fail2829;
31397 : 0 : _o1[0] = _r2;
31398 : : }
31399 : 0 : _o1[1] = captures[3];
31400 : 0 : _o1[2] = captures[4];
31401 : 0 : {
31402 : 0 : tree _o2[1], _r2;
31403 : 0 : _o2[0] = captures[1];
31404 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31405 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31406 : : {
31407 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31408 : 0 : tem_op.resimplify (lseq, valueize);
31409 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31410 : 0 : if (!_r2) goto next_after_fail2829;
31411 : : }
31412 : : else
31413 : : _r2 = _o2[0];
31414 : 0 : _o1[3] = _r2;
31415 : : }
31416 : 0 : (*res_op).set_op (CFN_COND_IOR, TREE_TYPE (_o1[1]), 4);
31417 : 0 : (*res_op).ops[0] = _o1[0];
31418 : 0 : (*res_op).ops[1] = _o1[1];
31419 : 0 : (*res_op).ops[2] = _o1[2];
31420 : 0 : (*res_op).ops[3] = _o1[3];
31421 : 0 : (*res_op).resimplify (lseq, valueize);
31422 : : }
31423 : 0 : if (type != res_op->type
31424 : 0 : && !useless_type_conversion_p (type, res_op->type))
31425 : : {
31426 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2829;
31427 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31428 : 0 : res_op->resimplify (lseq, valueize);
31429 : : }
31430 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31431 : 0 : return true;
31432 : : }
31433 : 0 : next_after_fail2829:;
31434 : : }
31435 : : }
31436 : : }
31437 : 0 : break;
31438 : : }
31439 : 0 : case BIT_XOR_EXPR:
31440 : 0 : {
31441 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31442 : 0 : _q50 = do_valueize (valueize, _q50);
31443 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31444 : 0 : _q51 = do_valueize (valueize, _q51);
31445 : 0 : if (tree_swap_operands_p (_q50, _q51))
31446 : 0 : std::swap (_q50, _q51);
31447 : 0 : {
31448 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31449 : 0 : {
31450 : 0 : tree op_type = TREE_TYPE (captures[2]);
31451 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_XOR), op_type)
31452 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31453 : 0 : && single_use (captures[2])
31454 : : )
31455 : : {
31456 : 0 : gimple_seq *lseq = seq;
31457 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2830;
31458 : 0 : {
31459 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31460 : 0 : {
31461 : 0 : tree _o1[4], _r1;
31462 : 0 : {
31463 : 0 : tree _o2[1], _r2;
31464 : 0 : _o2[0] = captures[0];
31465 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31466 : 0 : tem_op.resimplify (lseq, valueize);
31467 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31468 : 0 : if (!_r2) goto next_after_fail2830;
31469 : 0 : _o1[0] = _r2;
31470 : : }
31471 : 0 : _o1[1] = captures[3];
31472 : 0 : _o1[2] = captures[4];
31473 : 0 : {
31474 : 0 : tree _o2[1], _r2;
31475 : 0 : _o2[0] = captures[1];
31476 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31477 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31478 : : {
31479 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31480 : 0 : tem_op.resimplify (lseq, valueize);
31481 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31482 : 0 : if (!_r2) goto next_after_fail2830;
31483 : : }
31484 : : else
31485 : : _r2 = _o2[0];
31486 : 0 : _o1[3] = _r2;
31487 : : }
31488 : 0 : (*res_op).set_op (CFN_COND_XOR, TREE_TYPE (_o1[1]), 4);
31489 : 0 : (*res_op).ops[0] = _o1[0];
31490 : 0 : (*res_op).ops[1] = _o1[1];
31491 : 0 : (*res_op).ops[2] = _o1[2];
31492 : 0 : (*res_op).ops[3] = _o1[3];
31493 : 0 : (*res_op).resimplify (lseq, valueize);
31494 : : }
31495 : 0 : if (type != res_op->type
31496 : 0 : && !useless_type_conversion_p (type, res_op->type))
31497 : : {
31498 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2830;
31499 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31500 : 0 : res_op->resimplify (lseq, valueize);
31501 : : }
31502 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31503 : 0 : return true;
31504 : : }
31505 : 0 : next_after_fail2830:;
31506 : : }
31507 : : }
31508 : : }
31509 : 0 : break;
31510 : : }
31511 : 72 : case LSHIFT_EXPR:
31512 : 72 : {
31513 : 72 : tree _q50 = gimple_assign_rhs1 (_a2);
31514 : 72 : _q50 = do_valueize (valueize, _q50);
31515 : 72 : tree _q51 = gimple_assign_rhs2 (_a2);
31516 : 72 : _q51 = do_valueize (valueize, _q51);
31517 : 72 : {
31518 : 72 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31519 : 72 : {
31520 : 72 : tree op_type = TREE_TYPE (captures[2]);
31521 : 72 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHL), op_type)
31522 : 24 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31523 : 96 : && single_use (captures[2])
31524 : : )
31525 : : {
31526 : 0 : gimple_seq *lseq = seq;
31527 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2831;
31528 : 0 : {
31529 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31530 : 0 : {
31531 : 0 : tree _o1[4], _r1;
31532 : 0 : {
31533 : 0 : tree _o2[1], _r2;
31534 : 0 : _o2[0] = captures[0];
31535 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31536 : 0 : tem_op.resimplify (lseq, valueize);
31537 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31538 : 0 : if (!_r2) goto next_after_fail2831;
31539 : 0 : _o1[0] = _r2;
31540 : : }
31541 : 0 : _o1[1] = captures[3];
31542 : 0 : _o1[2] = captures[4];
31543 : 0 : {
31544 : 0 : tree _o2[1], _r2;
31545 : 0 : _o2[0] = captures[1];
31546 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31547 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31548 : : {
31549 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31550 : 0 : tem_op.resimplify (lseq, valueize);
31551 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31552 : 0 : if (!_r2) goto next_after_fail2831;
31553 : : }
31554 : : else
31555 : : _r2 = _o2[0];
31556 : 0 : _o1[3] = _r2;
31557 : : }
31558 : 0 : (*res_op).set_op (CFN_COND_SHL, TREE_TYPE (_o1[1]), 4);
31559 : 0 : (*res_op).ops[0] = _o1[0];
31560 : 0 : (*res_op).ops[1] = _o1[1];
31561 : 0 : (*res_op).ops[2] = _o1[2];
31562 : 0 : (*res_op).ops[3] = _o1[3];
31563 : 0 : (*res_op).resimplify (lseq, valueize);
31564 : : }
31565 : 0 : if (type != res_op->type
31566 : 0 : && !useless_type_conversion_p (type, res_op->type))
31567 : : {
31568 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2831;
31569 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31570 : 0 : res_op->resimplify (lseq, valueize);
31571 : : }
31572 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31573 : 0 : return true;
31574 : : }
31575 : 72 : next_after_fail2831:;
31576 : : }
31577 : : }
31578 : : }
31579 : 72 : break;
31580 : : }
31581 : 0 : case RSHIFT_EXPR:
31582 : 0 : {
31583 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
31584 : 0 : _q50 = do_valueize (valueize, _q50);
31585 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
31586 : 0 : _q51 = do_valueize (valueize, _q51);
31587 : 0 : {
31588 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31589 : 0 : {
31590 : 0 : tree op_type = TREE_TYPE (captures[2]);
31591 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHR), op_type)
31592 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31593 : 0 : && single_use (captures[2])
31594 : : )
31595 : : {
31596 : 0 : gimple_seq *lseq = seq;
31597 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2832;
31598 : 0 : {
31599 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31600 : 0 : {
31601 : 0 : tree _o1[4], _r1;
31602 : 0 : {
31603 : 0 : tree _o2[1], _r2;
31604 : 0 : _o2[0] = captures[0];
31605 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31606 : 0 : tem_op.resimplify (lseq, valueize);
31607 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31608 : 0 : if (!_r2) goto next_after_fail2832;
31609 : 0 : _o1[0] = _r2;
31610 : : }
31611 : 0 : _o1[1] = captures[3];
31612 : 0 : _o1[2] = captures[4];
31613 : 0 : {
31614 : 0 : tree _o2[1], _r2;
31615 : 0 : _o2[0] = captures[1];
31616 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31617 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31618 : : {
31619 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31620 : 0 : tem_op.resimplify (lseq, valueize);
31621 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31622 : 0 : if (!_r2) goto next_after_fail2832;
31623 : : }
31624 : : else
31625 : : _r2 = _o2[0];
31626 : 0 : _o1[3] = _r2;
31627 : : }
31628 : 0 : (*res_op).set_op (CFN_COND_SHR, TREE_TYPE (_o1[1]), 4);
31629 : 0 : (*res_op).ops[0] = _o1[0];
31630 : 0 : (*res_op).ops[1] = _o1[1];
31631 : 0 : (*res_op).ops[2] = _o1[2];
31632 : 0 : (*res_op).ops[3] = _o1[3];
31633 : 0 : (*res_op).resimplify (lseq, valueize);
31634 : : }
31635 : 0 : if (type != res_op->type
31636 : 0 : && !useless_type_conversion_p (type, res_op->type))
31637 : : {
31638 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2832;
31639 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31640 : 0 : res_op->resimplify (lseq, valueize);
31641 : : }
31642 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31643 : 0 : return true;
31644 : : }
31645 : 0 : next_after_fail2832:;
31646 : : }
31647 : : }
31648 : : }
31649 : 0 : break;
31650 : : }
31651 : : default:;
31652 : : }
31653 : 1891 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
31654 : 1217 : switch (gimple_call_combined_fn (_c2))
31655 : : {
31656 : 0 : case CFN_FMAX:
31657 : 0 : if (gimple_call_num_args (_c2) == 2)
31658 : : {
31659 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
31660 : 0 : _q50 = do_valueize (valueize, _q50);
31661 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
31662 : 0 : _q51 = do_valueize (valueize, _q51);
31663 : 0 : {
31664 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31665 : 0 : {
31666 : 0 : tree op_type = TREE_TYPE (captures[2]);
31667 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMAX), op_type)
31668 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31669 : 0 : && single_use (captures[2])
31670 : : )
31671 : : {
31672 : 0 : gimple_seq *lseq = seq;
31673 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2833;
31674 : 0 : {
31675 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31676 : 0 : {
31677 : 0 : tree _o1[4], _r1;
31678 : 0 : {
31679 : 0 : tree _o2[1], _r2;
31680 : 0 : _o2[0] = captures[0];
31681 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31682 : 0 : tem_op.resimplify (lseq, valueize);
31683 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31684 : 0 : if (!_r2) goto next_after_fail2833;
31685 : 0 : _o1[0] = _r2;
31686 : : }
31687 : 0 : _o1[1] = captures[3];
31688 : 0 : _o1[2] = captures[4];
31689 : 0 : {
31690 : 0 : tree _o2[1], _r2;
31691 : 0 : _o2[0] = captures[1];
31692 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31693 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31694 : : {
31695 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31696 : 0 : tem_op.resimplify (lseq, valueize);
31697 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31698 : 0 : if (!_r2) goto next_after_fail2833;
31699 : : }
31700 : : else
31701 : : _r2 = _o2[0];
31702 : 0 : _o1[3] = _r2;
31703 : : }
31704 : 0 : (*res_op).set_op (CFN_COND_FMAX, TREE_TYPE (_o1[1]), 4);
31705 : 0 : (*res_op).ops[0] = _o1[0];
31706 : 0 : (*res_op).ops[1] = _o1[1];
31707 : 0 : (*res_op).ops[2] = _o1[2];
31708 : 0 : (*res_op).ops[3] = _o1[3];
31709 : 0 : (*res_op).resimplify (lseq, valueize);
31710 : : }
31711 : 0 : if (type != res_op->type
31712 : 0 : && !useless_type_conversion_p (type, res_op->type))
31713 : : {
31714 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2833;
31715 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31716 : 0 : res_op->resimplify (lseq, valueize);
31717 : : }
31718 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31719 : 0 : return true;
31720 : : }
31721 : 0 : next_after_fail2833:;
31722 : : }
31723 : : }
31724 : : }
31725 : : }
31726 : : break;
31727 : 0 : case CFN_FMIN:
31728 : 0 : if (gimple_call_num_args (_c2) == 2)
31729 : : {
31730 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
31731 : 0 : _q50 = do_valueize (valueize, _q50);
31732 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
31733 : 0 : _q51 = do_valueize (valueize, _q51);
31734 : 0 : {
31735 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31736 : 0 : {
31737 : 0 : tree op_type = TREE_TYPE (captures[2]);
31738 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMIN), op_type)
31739 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31740 : 0 : && single_use (captures[2])
31741 : : )
31742 : : {
31743 : 0 : gimple_seq *lseq = seq;
31744 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2834;
31745 : 0 : {
31746 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31747 : 0 : {
31748 : 0 : tree _o1[4], _r1;
31749 : 0 : {
31750 : 0 : tree _o2[1], _r2;
31751 : 0 : _o2[0] = captures[0];
31752 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31753 : 0 : tem_op.resimplify (lseq, valueize);
31754 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31755 : 0 : if (!_r2) goto next_after_fail2834;
31756 : 0 : _o1[0] = _r2;
31757 : : }
31758 : 0 : _o1[1] = captures[3];
31759 : 0 : _o1[2] = captures[4];
31760 : 0 : {
31761 : 0 : tree _o2[1], _r2;
31762 : 0 : _o2[0] = captures[1];
31763 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31764 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31765 : : {
31766 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31767 : 0 : tem_op.resimplify (lseq, valueize);
31768 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31769 : 0 : if (!_r2) goto next_after_fail2834;
31770 : : }
31771 : : else
31772 : : _r2 = _o2[0];
31773 : 0 : _o1[3] = _r2;
31774 : : }
31775 : 0 : (*res_op).set_op (CFN_COND_FMIN, TREE_TYPE (_o1[1]), 4);
31776 : 0 : (*res_op).ops[0] = _o1[0];
31777 : 0 : (*res_op).ops[1] = _o1[1];
31778 : 0 : (*res_op).ops[2] = _o1[2];
31779 : 0 : (*res_op).ops[3] = _o1[3];
31780 : 0 : (*res_op).resimplify (lseq, valueize);
31781 : : }
31782 : 0 : if (type != res_op->type
31783 : 0 : && !useless_type_conversion_p (type, res_op->type))
31784 : : {
31785 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2834;
31786 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31787 : 0 : res_op->resimplify (lseq, valueize);
31788 : : }
31789 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31790 : 0 : return true;
31791 : : }
31792 : 0 : next_after_fail2834:;
31793 : : }
31794 : : }
31795 : : }
31796 : : }
31797 : : break;
31798 : 0 : case CFN_COPYSIGN:
31799 : 0 : if (gimple_call_num_args (_c2) == 2)
31800 : : {
31801 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
31802 : 0 : _q50 = do_valueize (valueize, _q50);
31803 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
31804 : 0 : _q51 = do_valueize (valueize, _q51);
31805 : 0 : {
31806 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51 };
31807 : 0 : {
31808 : 0 : tree op_type = TREE_TYPE (captures[2]);
31809 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_COPYSIGN), op_type)
31810 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31811 : 0 : && single_use (captures[2])
31812 : : )
31813 : : {
31814 : 0 : gimple_seq *lseq = seq;
31815 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2835;
31816 : 0 : {
31817 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31818 : 0 : {
31819 : 0 : tree _o1[4], _r1;
31820 : 0 : {
31821 : 0 : tree _o2[1], _r2;
31822 : 0 : _o2[0] = captures[0];
31823 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31824 : 0 : tem_op.resimplify (lseq, valueize);
31825 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31826 : 0 : if (!_r2) goto next_after_fail2835;
31827 : 0 : _o1[0] = _r2;
31828 : : }
31829 : 0 : _o1[1] = captures[3];
31830 : 0 : _o1[2] = captures[4];
31831 : 0 : {
31832 : 0 : tree _o2[1], _r2;
31833 : 0 : _o2[0] = captures[1];
31834 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31835 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31836 : : {
31837 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31838 : 0 : tem_op.resimplify (lseq, valueize);
31839 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31840 : 0 : if (!_r2) goto next_after_fail2835;
31841 : : }
31842 : : else
31843 : : _r2 = _o2[0];
31844 : 0 : _o1[3] = _r2;
31845 : : }
31846 : 0 : (*res_op).set_op (CFN_COND_COPYSIGN, TREE_TYPE (_o1[1]), 4);
31847 : 0 : (*res_op).ops[0] = _o1[0];
31848 : 0 : (*res_op).ops[1] = _o1[1];
31849 : 0 : (*res_op).ops[2] = _o1[2];
31850 : 0 : (*res_op).ops[3] = _o1[3];
31851 : 0 : (*res_op).resimplify (lseq, valueize);
31852 : : }
31853 : 0 : if (type != res_op->type
31854 : 0 : && !useless_type_conversion_p (type, res_op->type))
31855 : : {
31856 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2835;
31857 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31858 : 0 : res_op->resimplify (lseq, valueize);
31859 : : }
31860 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31861 : 0 : return true;
31862 : : }
31863 : 0 : next_after_fail2835:;
31864 : : }
31865 : : }
31866 : : }
31867 : : }
31868 : : break;
31869 : : default:;
31870 : : }
31871 : : }
31872 : : break;
31873 : : default:;
31874 : : }
31875 : : }
31876 : : break;
31877 : : }
31878 : 1094 : case PLUS_EXPR:
31879 : 1094 : {
31880 : 1094 : tree _q40 = gimple_assign_rhs1 (_a1);
31881 : 1094 : _q40 = do_valueize (valueize, _q40);
31882 : 1094 : tree _q41 = gimple_assign_rhs2 (_a1);
31883 : 1094 : _q41 = do_valueize (valueize, _q41);
31884 : 1094 : if (tree_swap_operands_p (_q40, _q41))
31885 : 30 : std::swap (_q40, _q41);
31886 : 1094 : {
31887 : 1094 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
31888 : 1094 : {
31889 : 1094 : tree op_type = TREE_TYPE (captures[2]);
31890 : 1094 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_ADD), op_type)
31891 : 169 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31892 : 1263 : && single_use (captures[2])
31893 : : )
31894 : : {
31895 : 48 : gimple_seq *lseq = seq;
31896 : 48 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2836;
31897 : 48 : {
31898 : 48 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31899 : 48 : {
31900 : 48 : tree _o1[4], _r1;
31901 : 48 : {
31902 : 48 : tree _o2[1], _r2;
31903 : 48 : _o2[0] = captures[0];
31904 : 48 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31905 : 48 : tem_op.resimplify (lseq, valueize);
31906 : 48 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31907 : 48 : if (!_r2) goto next_after_fail2836;
31908 : 12 : _o1[0] = _r2;
31909 : : }
31910 : 12 : _o1[1] = captures[3];
31911 : 12 : _o1[2] = captures[4];
31912 : 12 : {
31913 : 12 : tree _o2[1], _r2;
31914 : 12 : _o2[0] = captures[1];
31915 : 12 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31916 : 12 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31917 : : {
31918 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31919 : 0 : tem_op.resimplify (lseq, valueize);
31920 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31921 : 0 : if (!_r2) goto next_after_fail2836;
31922 : : }
31923 : : else
31924 : : _r2 = _o2[0];
31925 : 12 : _o1[3] = _r2;
31926 : : }
31927 : 12 : (*res_op).set_op (CFN_COND_ADD, TREE_TYPE (_o1[1]), 4);
31928 : 12 : (*res_op).ops[0] = _o1[0];
31929 : 12 : (*res_op).ops[1] = _o1[1];
31930 : 12 : (*res_op).ops[2] = _o1[2];
31931 : 12 : (*res_op).ops[3] = _o1[3];
31932 : 12 : (*res_op).resimplify (lseq, valueize);
31933 : : }
31934 : 12 : if (type != res_op->type
31935 : 12 : && !useless_type_conversion_p (type, res_op->type))
31936 : : {
31937 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2836;
31938 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31939 : 0 : res_op->resimplify (lseq, valueize);
31940 : : }
31941 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
31942 : 12 : return true;
31943 : : }
31944 : 1082 : next_after_fail2836:;
31945 : : }
31946 : : }
31947 : : }
31948 : 1082 : break;
31949 : : }
31950 : 262 : case MINUS_EXPR:
31951 : 262 : {
31952 : 262 : tree _q40 = gimple_assign_rhs1 (_a1);
31953 : 262 : _q40 = do_valueize (valueize, _q40);
31954 : 262 : tree _q41 = gimple_assign_rhs2 (_a1);
31955 : 262 : _q41 = do_valueize (valueize, _q41);
31956 : 262 : {
31957 : 262 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
31958 : 262 : {
31959 : 262 : tree op_type = TREE_TYPE (captures[2]);
31960 : 262 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SUB), op_type)
31961 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
31962 : 262 : && single_use (captures[2])
31963 : : )
31964 : : {
31965 : 0 : gimple_seq *lseq = seq;
31966 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2837;
31967 : 0 : {
31968 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
31969 : 0 : {
31970 : 0 : tree _o1[4], _r1;
31971 : 0 : {
31972 : 0 : tree _o2[1], _r2;
31973 : 0 : _o2[0] = captures[0];
31974 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
31975 : 0 : tem_op.resimplify (lseq, valueize);
31976 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31977 : 0 : if (!_r2) goto next_after_fail2837;
31978 : 0 : _o1[0] = _r2;
31979 : : }
31980 : 0 : _o1[1] = captures[3];
31981 : 0 : _o1[2] = captures[4];
31982 : 0 : {
31983 : 0 : tree _o2[1], _r2;
31984 : 0 : _o2[0] = captures[1];
31985 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
31986 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
31987 : : {
31988 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
31989 : 0 : tem_op.resimplify (lseq, valueize);
31990 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
31991 : 0 : if (!_r2) goto next_after_fail2837;
31992 : : }
31993 : : else
31994 : : _r2 = _o2[0];
31995 : 0 : _o1[3] = _r2;
31996 : : }
31997 : 0 : (*res_op).set_op (CFN_COND_SUB, TREE_TYPE (_o1[1]), 4);
31998 : 0 : (*res_op).ops[0] = _o1[0];
31999 : 0 : (*res_op).ops[1] = _o1[1];
32000 : 0 : (*res_op).ops[2] = _o1[2];
32001 : 0 : (*res_op).ops[3] = _o1[3];
32002 : 0 : (*res_op).resimplify (lseq, valueize);
32003 : : }
32004 : 0 : if (type != res_op->type
32005 : 0 : && !useless_type_conversion_p (type, res_op->type))
32006 : : {
32007 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2837;
32008 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32009 : 0 : res_op->resimplify (lseq, valueize);
32010 : : }
32011 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32012 : 0 : return true;
32013 : : }
32014 : 262 : next_after_fail2837:;
32015 : : }
32016 : : }
32017 : : }
32018 : 262 : break;
32019 : : }
32020 : 287 : case MULT_EXPR:
32021 : 287 : {
32022 : 287 : tree _q40 = gimple_assign_rhs1 (_a1);
32023 : 287 : _q40 = do_valueize (valueize, _q40);
32024 : 287 : tree _q41 = gimple_assign_rhs2 (_a1);
32025 : 287 : _q41 = do_valueize (valueize, _q41);
32026 : 287 : if (tree_swap_operands_p (_q40, _q41))
32027 : 8 : std::swap (_q40, _q41);
32028 : 287 : {
32029 : 287 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32030 : 287 : {
32031 : 287 : tree op_type = TREE_TYPE (captures[2]);
32032 : 287 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MUL), op_type)
32033 : 6 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32034 : 293 : && single_use (captures[2])
32035 : : )
32036 : : {
32037 : 6 : gimple_seq *lseq = seq;
32038 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2838;
32039 : 6 : {
32040 : 6 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32041 : 6 : {
32042 : 6 : tree _o1[4], _r1;
32043 : 6 : {
32044 : 6 : tree _o2[1], _r2;
32045 : 6 : _o2[0] = captures[0];
32046 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32047 : 6 : tem_op.resimplify (lseq, valueize);
32048 : 6 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32049 : 6 : if (!_r2) goto next_after_fail2838;
32050 : 2 : _o1[0] = _r2;
32051 : : }
32052 : 2 : _o1[1] = captures[3];
32053 : 2 : _o1[2] = captures[4];
32054 : 2 : {
32055 : 2 : tree _o2[1], _r2;
32056 : 2 : _o2[0] = captures[1];
32057 : 2 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32058 : 2 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32059 : : {
32060 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32061 : 0 : tem_op.resimplify (lseq, valueize);
32062 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32063 : 0 : if (!_r2) goto next_after_fail2838;
32064 : : }
32065 : : else
32066 : : _r2 = _o2[0];
32067 : 2 : _o1[3] = _r2;
32068 : : }
32069 : 2 : (*res_op).set_op (CFN_COND_MUL, TREE_TYPE (_o1[1]), 4);
32070 : 2 : (*res_op).ops[0] = _o1[0];
32071 : 2 : (*res_op).ops[1] = _o1[1];
32072 : 2 : (*res_op).ops[2] = _o1[2];
32073 : 2 : (*res_op).ops[3] = _o1[3];
32074 : 2 : (*res_op).resimplify (lseq, valueize);
32075 : : }
32076 : 2 : if (type != res_op->type
32077 : 2 : && !useless_type_conversion_p (type, res_op->type))
32078 : : {
32079 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2838;
32080 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32081 : 0 : res_op->resimplify (lseq, valueize);
32082 : : }
32083 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32084 : 2 : return true;
32085 : : }
32086 : 285 : next_after_fail2838:;
32087 : : }
32088 : : }
32089 : : }
32090 : 285 : break;
32091 : : }
32092 : 0 : case TRUNC_DIV_EXPR:
32093 : 0 : {
32094 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
32095 : 0 : _q40 = do_valueize (valueize, _q40);
32096 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
32097 : 0 : _q41 = do_valueize (valueize, _q41);
32098 : 0 : {
32099 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32100 : 0 : {
32101 : 0 : tree op_type = TREE_TYPE (captures[2]);
32102 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_DIV), op_type)
32103 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32104 : 0 : && single_use (captures[2])
32105 : : )
32106 : : {
32107 : 0 : gimple_seq *lseq = seq;
32108 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2839;
32109 : 0 : {
32110 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32111 : 0 : {
32112 : 0 : tree _o1[4], _r1;
32113 : 0 : {
32114 : 0 : tree _o2[1], _r2;
32115 : 0 : _o2[0] = captures[0];
32116 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32117 : 0 : tem_op.resimplify (lseq, valueize);
32118 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32119 : 0 : if (!_r2) goto next_after_fail2839;
32120 : 0 : _o1[0] = _r2;
32121 : : }
32122 : 0 : _o1[1] = captures[3];
32123 : 0 : _o1[2] = captures[4];
32124 : 0 : {
32125 : 0 : tree _o2[1], _r2;
32126 : 0 : _o2[0] = captures[1];
32127 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32128 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32129 : : {
32130 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32131 : 0 : tem_op.resimplify (lseq, valueize);
32132 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32133 : 0 : if (!_r2) goto next_after_fail2839;
32134 : : }
32135 : : else
32136 : : _r2 = _o2[0];
32137 : 0 : _o1[3] = _r2;
32138 : : }
32139 : 0 : (*res_op).set_op (CFN_COND_DIV, TREE_TYPE (_o1[1]), 4);
32140 : 0 : (*res_op).ops[0] = _o1[0];
32141 : 0 : (*res_op).ops[1] = _o1[1];
32142 : 0 : (*res_op).ops[2] = _o1[2];
32143 : 0 : (*res_op).ops[3] = _o1[3];
32144 : 0 : (*res_op).resimplify (lseq, valueize);
32145 : : }
32146 : 0 : if (type != res_op->type
32147 : 0 : && !useless_type_conversion_p (type, res_op->type))
32148 : : {
32149 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2839;
32150 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32151 : 0 : res_op->resimplify (lseq, valueize);
32152 : : }
32153 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32154 : 0 : return true;
32155 : : }
32156 : 0 : next_after_fail2839:;
32157 : : }
32158 : : }
32159 : : }
32160 : 0 : break;
32161 : : }
32162 : 0 : case TRUNC_MOD_EXPR:
32163 : 0 : {
32164 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
32165 : 0 : _q40 = do_valueize (valueize, _q40);
32166 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
32167 : 0 : _q41 = do_valueize (valueize, _q41);
32168 : 0 : {
32169 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32170 : 0 : {
32171 : 0 : tree op_type = TREE_TYPE (captures[2]);
32172 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MOD), op_type)
32173 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32174 : 0 : && single_use (captures[2])
32175 : : )
32176 : : {
32177 : 0 : gimple_seq *lseq = seq;
32178 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2840;
32179 : 0 : {
32180 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32181 : 0 : {
32182 : 0 : tree _o1[4], _r1;
32183 : 0 : {
32184 : 0 : tree _o2[1], _r2;
32185 : 0 : _o2[0] = captures[0];
32186 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32187 : 0 : tem_op.resimplify (lseq, valueize);
32188 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32189 : 0 : if (!_r2) goto next_after_fail2840;
32190 : 0 : _o1[0] = _r2;
32191 : : }
32192 : 0 : _o1[1] = captures[3];
32193 : 0 : _o1[2] = captures[4];
32194 : 0 : {
32195 : 0 : tree _o2[1], _r2;
32196 : 0 : _o2[0] = captures[1];
32197 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32198 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32199 : : {
32200 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32201 : 0 : tem_op.resimplify (lseq, valueize);
32202 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32203 : 0 : if (!_r2) goto next_after_fail2840;
32204 : : }
32205 : : else
32206 : : _r2 = _o2[0];
32207 : 0 : _o1[3] = _r2;
32208 : : }
32209 : 0 : (*res_op).set_op (CFN_COND_MOD, TREE_TYPE (_o1[1]), 4);
32210 : 0 : (*res_op).ops[0] = _o1[0];
32211 : 0 : (*res_op).ops[1] = _o1[1];
32212 : 0 : (*res_op).ops[2] = _o1[2];
32213 : 0 : (*res_op).ops[3] = _o1[3];
32214 : 0 : (*res_op).resimplify (lseq, valueize);
32215 : : }
32216 : 0 : if (type != res_op->type
32217 : 0 : && !useless_type_conversion_p (type, res_op->type))
32218 : : {
32219 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2840;
32220 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32221 : 0 : res_op->resimplify (lseq, valueize);
32222 : : }
32223 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32224 : 0 : return true;
32225 : : }
32226 : 0 : next_after_fail2840:;
32227 : : }
32228 : : }
32229 : : }
32230 : 0 : break;
32231 : : }
32232 : 18 : case RDIV_EXPR:
32233 : 18 : {
32234 : 18 : tree _q40 = gimple_assign_rhs1 (_a1);
32235 : 18 : _q40 = do_valueize (valueize, _q40);
32236 : 18 : tree _q41 = gimple_assign_rhs2 (_a1);
32237 : 18 : _q41 = do_valueize (valueize, _q41);
32238 : 18 : {
32239 : 18 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32240 : 18 : {
32241 : 18 : tree op_type = TREE_TYPE (captures[2]);
32242 : 18 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_RDIV), op_type)
32243 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32244 : 18 : && single_use (captures[2])
32245 : : )
32246 : : {
32247 : 0 : gimple_seq *lseq = seq;
32248 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2841;
32249 : 0 : {
32250 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32251 : 0 : {
32252 : 0 : tree _o1[4], _r1;
32253 : 0 : {
32254 : 0 : tree _o2[1], _r2;
32255 : 0 : _o2[0] = captures[0];
32256 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32257 : 0 : tem_op.resimplify (lseq, valueize);
32258 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32259 : 0 : if (!_r2) goto next_after_fail2841;
32260 : 0 : _o1[0] = _r2;
32261 : : }
32262 : 0 : _o1[1] = captures[3];
32263 : 0 : _o1[2] = captures[4];
32264 : 0 : {
32265 : 0 : tree _o2[1], _r2;
32266 : 0 : _o2[0] = captures[1];
32267 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32268 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32269 : : {
32270 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32271 : 0 : tem_op.resimplify (lseq, valueize);
32272 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32273 : 0 : if (!_r2) goto next_after_fail2841;
32274 : : }
32275 : : else
32276 : : _r2 = _o2[0];
32277 : 0 : _o1[3] = _r2;
32278 : : }
32279 : 0 : (*res_op).set_op (CFN_COND_RDIV, TREE_TYPE (_o1[1]), 4);
32280 : 0 : (*res_op).ops[0] = _o1[0];
32281 : 0 : (*res_op).ops[1] = _o1[1];
32282 : 0 : (*res_op).ops[2] = _o1[2];
32283 : 0 : (*res_op).ops[3] = _o1[3];
32284 : 0 : (*res_op).resimplify (lseq, valueize);
32285 : : }
32286 : 0 : if (type != res_op->type
32287 : 0 : && !useless_type_conversion_p (type, res_op->type))
32288 : : {
32289 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2841;
32290 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32291 : 0 : res_op->resimplify (lseq, valueize);
32292 : : }
32293 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32294 : 0 : return true;
32295 : : }
32296 : 18 : next_after_fail2841:;
32297 : : }
32298 : : }
32299 : : }
32300 : 18 : break;
32301 : : }
32302 : 18 : case MIN_EXPR:
32303 : 18 : {
32304 : 18 : tree _q40 = gimple_assign_rhs1 (_a1);
32305 : 18 : _q40 = do_valueize (valueize, _q40);
32306 : 18 : tree _q41 = gimple_assign_rhs2 (_a1);
32307 : 18 : _q41 = do_valueize (valueize, _q41);
32308 : 18 : if (tree_swap_operands_p (_q40, _q41))
32309 : 0 : std::swap (_q40, _q41);
32310 : 18 : {
32311 : 18 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32312 : 18 : {
32313 : 18 : tree op_type = TREE_TYPE (captures[2]);
32314 : 18 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MIN), op_type)
32315 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32316 : 18 : && single_use (captures[2])
32317 : : )
32318 : : {
32319 : 0 : gimple_seq *lseq = seq;
32320 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2842;
32321 : 0 : {
32322 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32323 : 0 : {
32324 : 0 : tree _o1[4], _r1;
32325 : 0 : {
32326 : 0 : tree _o2[1], _r2;
32327 : 0 : _o2[0] = captures[0];
32328 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32329 : 0 : tem_op.resimplify (lseq, valueize);
32330 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32331 : 0 : if (!_r2) goto next_after_fail2842;
32332 : 0 : _o1[0] = _r2;
32333 : : }
32334 : 0 : _o1[1] = captures[3];
32335 : 0 : _o1[2] = captures[4];
32336 : 0 : {
32337 : 0 : tree _o2[1], _r2;
32338 : 0 : _o2[0] = captures[1];
32339 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32340 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32341 : : {
32342 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32343 : 0 : tem_op.resimplify (lseq, valueize);
32344 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32345 : 0 : if (!_r2) goto next_after_fail2842;
32346 : : }
32347 : : else
32348 : : _r2 = _o2[0];
32349 : 0 : _o1[3] = _r2;
32350 : : }
32351 : 0 : (*res_op).set_op (CFN_COND_MIN, TREE_TYPE (_o1[1]), 4);
32352 : 0 : (*res_op).ops[0] = _o1[0];
32353 : 0 : (*res_op).ops[1] = _o1[1];
32354 : 0 : (*res_op).ops[2] = _o1[2];
32355 : 0 : (*res_op).ops[3] = _o1[3];
32356 : 0 : (*res_op).resimplify (lseq, valueize);
32357 : : }
32358 : 0 : if (type != res_op->type
32359 : 0 : && !useless_type_conversion_p (type, res_op->type))
32360 : : {
32361 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2842;
32362 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32363 : 0 : res_op->resimplify (lseq, valueize);
32364 : : }
32365 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32366 : 0 : return true;
32367 : : }
32368 : 18 : next_after_fail2842:;
32369 : : }
32370 : : }
32371 : : }
32372 : 18 : break;
32373 : : }
32374 : 108 : case MAX_EXPR:
32375 : 108 : {
32376 : 108 : tree _q40 = gimple_assign_rhs1 (_a1);
32377 : 108 : _q40 = do_valueize (valueize, _q40);
32378 : 108 : tree _q41 = gimple_assign_rhs2 (_a1);
32379 : 108 : _q41 = do_valueize (valueize, _q41);
32380 : 108 : if (tree_swap_operands_p (_q40, _q41))
32381 : 44 : std::swap (_q40, _q41);
32382 : 108 : {
32383 : 108 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32384 : 108 : {
32385 : 108 : tree op_type = TREE_TYPE (captures[2]);
32386 : 108 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_MAX), op_type)
32387 : 90 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32388 : 198 : && single_use (captures[2])
32389 : : )
32390 : : {
32391 : 90 : gimple_seq *lseq = seq;
32392 : 90 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2843;
32393 : 90 : {
32394 : 90 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32395 : 90 : {
32396 : 90 : tree _o1[4], _r1;
32397 : 90 : {
32398 : 90 : tree _o2[1], _r2;
32399 : 90 : _o2[0] = captures[0];
32400 : 90 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32401 : 90 : tem_op.resimplify (lseq, valueize);
32402 : 90 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32403 : 90 : if (!_r2) goto next_after_fail2843;
32404 : 12 : _o1[0] = _r2;
32405 : : }
32406 : 12 : _o1[1] = captures[3];
32407 : 12 : _o1[2] = captures[4];
32408 : 12 : {
32409 : 12 : tree _o2[1], _r2;
32410 : 12 : _o2[0] = captures[1];
32411 : 12 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32412 : 12 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32413 : : {
32414 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32415 : 0 : tem_op.resimplify (lseq, valueize);
32416 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32417 : 0 : if (!_r2) goto next_after_fail2843;
32418 : : }
32419 : : else
32420 : : _r2 = _o2[0];
32421 : 12 : _o1[3] = _r2;
32422 : : }
32423 : 12 : (*res_op).set_op (CFN_COND_MAX, TREE_TYPE (_o1[1]), 4);
32424 : 12 : (*res_op).ops[0] = _o1[0];
32425 : 12 : (*res_op).ops[1] = _o1[1];
32426 : 12 : (*res_op).ops[2] = _o1[2];
32427 : 12 : (*res_op).ops[3] = _o1[3];
32428 : 12 : (*res_op).resimplify (lseq, valueize);
32429 : : }
32430 : 12 : if (type != res_op->type
32431 : 12 : && !useless_type_conversion_p (type, res_op->type))
32432 : : {
32433 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2843;
32434 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32435 : 0 : res_op->resimplify (lseq, valueize);
32436 : : }
32437 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32438 : 12 : return true;
32439 : : }
32440 : 96 : next_after_fail2843:;
32441 : : }
32442 : : }
32443 : : }
32444 : 96 : break;
32445 : : }
32446 : 0 : case BIT_AND_EXPR:
32447 : 0 : {
32448 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
32449 : 0 : _q40 = do_valueize (valueize, _q40);
32450 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
32451 : 0 : _q41 = do_valueize (valueize, _q41);
32452 : 0 : if (tree_swap_operands_p (_q40, _q41))
32453 : 0 : std::swap (_q40, _q41);
32454 : 0 : {
32455 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32456 : 0 : {
32457 : 0 : tree op_type = TREE_TYPE (captures[2]);
32458 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_AND), op_type)
32459 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32460 : 0 : && single_use (captures[2])
32461 : : )
32462 : : {
32463 : 0 : gimple_seq *lseq = seq;
32464 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2844;
32465 : 0 : {
32466 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32467 : 0 : {
32468 : 0 : tree _o1[4], _r1;
32469 : 0 : {
32470 : 0 : tree _o2[1], _r2;
32471 : 0 : _o2[0] = captures[0];
32472 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32473 : 0 : tem_op.resimplify (lseq, valueize);
32474 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32475 : 0 : if (!_r2) goto next_after_fail2844;
32476 : 0 : _o1[0] = _r2;
32477 : : }
32478 : 0 : _o1[1] = captures[3];
32479 : 0 : _o1[2] = captures[4];
32480 : 0 : {
32481 : 0 : tree _o2[1], _r2;
32482 : 0 : _o2[0] = captures[1];
32483 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32484 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32485 : : {
32486 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32487 : 0 : tem_op.resimplify (lseq, valueize);
32488 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32489 : 0 : if (!_r2) goto next_after_fail2844;
32490 : : }
32491 : : else
32492 : : _r2 = _o2[0];
32493 : 0 : _o1[3] = _r2;
32494 : : }
32495 : 0 : (*res_op).set_op (CFN_COND_AND, TREE_TYPE (_o1[1]), 4);
32496 : 0 : (*res_op).ops[0] = _o1[0];
32497 : 0 : (*res_op).ops[1] = _o1[1];
32498 : 0 : (*res_op).ops[2] = _o1[2];
32499 : 0 : (*res_op).ops[3] = _o1[3];
32500 : 0 : (*res_op).resimplify (lseq, valueize);
32501 : : }
32502 : 0 : if (type != res_op->type
32503 : 0 : && !useless_type_conversion_p (type, res_op->type))
32504 : : {
32505 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2844;
32506 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32507 : 0 : res_op->resimplify (lseq, valueize);
32508 : : }
32509 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32510 : 0 : return true;
32511 : : }
32512 : 0 : next_after_fail2844:;
32513 : : }
32514 : : }
32515 : : }
32516 : 0 : break;
32517 : : }
32518 : 44 : case BIT_IOR_EXPR:
32519 : 44 : {
32520 : 44 : tree _q40 = gimple_assign_rhs1 (_a1);
32521 : 44 : _q40 = do_valueize (valueize, _q40);
32522 : 44 : tree _q41 = gimple_assign_rhs2 (_a1);
32523 : 44 : _q41 = do_valueize (valueize, _q41);
32524 : 44 : if (tree_swap_operands_p (_q40, _q41))
32525 : 8 : std::swap (_q40, _q41);
32526 : 44 : {
32527 : 44 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32528 : 44 : {
32529 : 44 : tree op_type = TREE_TYPE (captures[2]);
32530 : 44 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_IOR), op_type)
32531 : 8 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32532 : 52 : && single_use (captures[2])
32533 : : )
32534 : : {
32535 : 8 : gimple_seq *lseq = seq;
32536 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2845;
32537 : 8 : {
32538 : 8 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32539 : 8 : {
32540 : 8 : tree _o1[4], _r1;
32541 : 8 : {
32542 : 8 : tree _o2[1], _r2;
32543 : 8 : _o2[0] = captures[0];
32544 : 8 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32545 : 8 : tem_op.resimplify (lseq, valueize);
32546 : 8 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32547 : 8 : if (!_r2) goto next_after_fail2845;
32548 : 2 : _o1[0] = _r2;
32549 : : }
32550 : 2 : _o1[1] = captures[3];
32551 : 2 : _o1[2] = captures[4];
32552 : 2 : {
32553 : 2 : tree _o2[1], _r2;
32554 : 2 : _o2[0] = captures[1];
32555 : 2 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32556 : 2 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32557 : : {
32558 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32559 : 0 : tem_op.resimplify (lseq, valueize);
32560 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32561 : 0 : if (!_r2) goto next_after_fail2845;
32562 : : }
32563 : : else
32564 : : _r2 = _o2[0];
32565 : 2 : _o1[3] = _r2;
32566 : : }
32567 : 2 : (*res_op).set_op (CFN_COND_IOR, TREE_TYPE (_o1[1]), 4);
32568 : 2 : (*res_op).ops[0] = _o1[0];
32569 : 2 : (*res_op).ops[1] = _o1[1];
32570 : 2 : (*res_op).ops[2] = _o1[2];
32571 : 2 : (*res_op).ops[3] = _o1[3];
32572 : 2 : (*res_op).resimplify (lseq, valueize);
32573 : : }
32574 : 2 : if (type != res_op->type
32575 : 2 : && !useless_type_conversion_p (type, res_op->type))
32576 : : {
32577 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2845;
32578 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32579 : 0 : res_op->resimplify (lseq, valueize);
32580 : : }
32581 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32582 : 2 : return true;
32583 : : }
32584 : 42 : next_after_fail2845:;
32585 : : }
32586 : : }
32587 : : }
32588 : 42 : break;
32589 : : }
32590 : 0 : case BIT_XOR_EXPR:
32591 : 0 : {
32592 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
32593 : 0 : _q40 = do_valueize (valueize, _q40);
32594 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
32595 : 0 : _q41 = do_valueize (valueize, _q41);
32596 : 0 : if (tree_swap_operands_p (_q40, _q41))
32597 : 0 : std::swap (_q40, _q41);
32598 : 0 : {
32599 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32600 : 0 : {
32601 : 0 : tree op_type = TREE_TYPE (captures[2]);
32602 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_XOR), op_type)
32603 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32604 : 0 : && single_use (captures[2])
32605 : : )
32606 : : {
32607 : 0 : gimple_seq *lseq = seq;
32608 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2846;
32609 : 0 : {
32610 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32611 : 0 : {
32612 : 0 : tree _o1[4], _r1;
32613 : 0 : {
32614 : 0 : tree _o2[1], _r2;
32615 : 0 : _o2[0] = captures[0];
32616 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32617 : 0 : tem_op.resimplify (lseq, valueize);
32618 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32619 : 0 : if (!_r2) goto next_after_fail2846;
32620 : 0 : _o1[0] = _r2;
32621 : : }
32622 : 0 : _o1[1] = captures[3];
32623 : 0 : _o1[2] = captures[4];
32624 : 0 : {
32625 : 0 : tree _o2[1], _r2;
32626 : 0 : _o2[0] = captures[1];
32627 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32628 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32629 : : {
32630 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32631 : 0 : tem_op.resimplify (lseq, valueize);
32632 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32633 : 0 : if (!_r2) goto next_after_fail2846;
32634 : : }
32635 : : else
32636 : : _r2 = _o2[0];
32637 : 0 : _o1[3] = _r2;
32638 : : }
32639 : 0 : (*res_op).set_op (CFN_COND_XOR, TREE_TYPE (_o1[1]), 4);
32640 : 0 : (*res_op).ops[0] = _o1[0];
32641 : 0 : (*res_op).ops[1] = _o1[1];
32642 : 0 : (*res_op).ops[2] = _o1[2];
32643 : 0 : (*res_op).ops[3] = _o1[3];
32644 : 0 : (*res_op).resimplify (lseq, valueize);
32645 : : }
32646 : 0 : if (type != res_op->type
32647 : 0 : && !useless_type_conversion_p (type, res_op->type))
32648 : : {
32649 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2846;
32650 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32651 : 0 : res_op->resimplify (lseq, valueize);
32652 : : }
32653 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32654 : 0 : return true;
32655 : : }
32656 : 0 : next_after_fail2846:;
32657 : : }
32658 : : }
32659 : : }
32660 : 0 : break;
32661 : : }
32662 : 219 : case LSHIFT_EXPR:
32663 : 219 : {
32664 : 219 : tree _q40 = gimple_assign_rhs1 (_a1);
32665 : 219 : _q40 = do_valueize (valueize, _q40);
32666 : 219 : tree _q41 = gimple_assign_rhs2 (_a1);
32667 : 219 : _q41 = do_valueize (valueize, _q41);
32668 : 219 : {
32669 : 219 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32670 : 219 : {
32671 : 219 : tree op_type = TREE_TYPE (captures[2]);
32672 : 219 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHL), op_type)
32673 : 34 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32674 : 253 : && single_use (captures[2])
32675 : : )
32676 : : {
32677 : 6 : gimple_seq *lseq = seq;
32678 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2847;
32679 : 6 : {
32680 : 6 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32681 : 6 : {
32682 : 6 : tree _o1[4], _r1;
32683 : 6 : {
32684 : 6 : tree _o2[1], _r2;
32685 : 6 : _o2[0] = captures[0];
32686 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32687 : 6 : tem_op.resimplify (lseq, valueize);
32688 : 6 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32689 : 6 : if (!_r2) goto next_after_fail2847;
32690 : 2 : _o1[0] = _r2;
32691 : : }
32692 : 2 : _o1[1] = captures[3];
32693 : 2 : _o1[2] = captures[4];
32694 : 2 : {
32695 : 2 : tree _o2[1], _r2;
32696 : 2 : _o2[0] = captures[1];
32697 : 2 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32698 : 2 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32699 : : {
32700 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32701 : 0 : tem_op.resimplify (lseq, valueize);
32702 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32703 : 0 : if (!_r2) goto next_after_fail2847;
32704 : : }
32705 : : else
32706 : : _r2 = _o2[0];
32707 : 2 : _o1[3] = _r2;
32708 : : }
32709 : 2 : (*res_op).set_op (CFN_COND_SHL, TREE_TYPE (_o1[1]), 4);
32710 : 2 : (*res_op).ops[0] = _o1[0];
32711 : 2 : (*res_op).ops[1] = _o1[1];
32712 : 2 : (*res_op).ops[2] = _o1[2];
32713 : 2 : (*res_op).ops[3] = _o1[3];
32714 : 2 : (*res_op).resimplify (lseq, valueize);
32715 : : }
32716 : 2 : if (type != res_op->type
32717 : 2 : && !useless_type_conversion_p (type, res_op->type))
32718 : : {
32719 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2847;
32720 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32721 : 0 : res_op->resimplify (lseq, valueize);
32722 : : }
32723 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32724 : 2 : return true;
32725 : : }
32726 : 217 : next_after_fail2847:;
32727 : : }
32728 : : }
32729 : : }
32730 : 217 : break;
32731 : : }
32732 : 65 : case RSHIFT_EXPR:
32733 : 65 : {
32734 : 65 : tree _q40 = gimple_assign_rhs1 (_a1);
32735 : 65 : _q40 = do_valueize (valueize, _q40);
32736 : 65 : tree _q41 = gimple_assign_rhs2 (_a1);
32737 : 65 : _q41 = do_valueize (valueize, _q41);
32738 : 65 : {
32739 : 65 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32740 : 65 : {
32741 : 65 : tree op_type = TREE_TYPE (captures[2]);
32742 : 65 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_SHR), op_type)
32743 : 10 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32744 : 75 : && single_use (captures[2])
32745 : : )
32746 : : {
32747 : 0 : gimple_seq *lseq = seq;
32748 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2848;
32749 : 0 : {
32750 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32751 : 0 : {
32752 : 0 : tree _o1[4], _r1;
32753 : 0 : {
32754 : 0 : tree _o2[1], _r2;
32755 : 0 : _o2[0] = captures[0];
32756 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32757 : 0 : tem_op.resimplify (lseq, valueize);
32758 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32759 : 0 : if (!_r2) goto next_after_fail2848;
32760 : 0 : _o1[0] = _r2;
32761 : : }
32762 : 0 : _o1[1] = captures[3];
32763 : 0 : _o1[2] = captures[4];
32764 : 0 : {
32765 : 0 : tree _o2[1], _r2;
32766 : 0 : _o2[0] = captures[1];
32767 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32768 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32769 : : {
32770 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32771 : 0 : tem_op.resimplify (lseq, valueize);
32772 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32773 : 0 : if (!_r2) goto next_after_fail2848;
32774 : : }
32775 : : else
32776 : : _r2 = _o2[0];
32777 : 0 : _o1[3] = _r2;
32778 : : }
32779 : 0 : (*res_op).set_op (CFN_COND_SHR, TREE_TYPE (_o1[1]), 4);
32780 : 0 : (*res_op).ops[0] = _o1[0];
32781 : 0 : (*res_op).ops[1] = _o1[1];
32782 : 0 : (*res_op).ops[2] = _o1[2];
32783 : 0 : (*res_op).ops[3] = _o1[3];
32784 : 0 : (*res_op).resimplify (lseq, valueize);
32785 : : }
32786 : 0 : if (type != res_op->type
32787 : 0 : && !useless_type_conversion_p (type, res_op->type))
32788 : : {
32789 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2848;
32790 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32791 : 0 : res_op->resimplify (lseq, valueize);
32792 : : }
32793 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32794 : 0 : return true;
32795 : : }
32796 : 65 : next_after_fail2848:;
32797 : : }
32798 : : }
32799 : : }
32800 : 65 : break;
32801 : : }
32802 : : default:;
32803 : : }
32804 : 11892 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
32805 : 1976 : switch (gimple_call_combined_fn (_c1))
32806 : : {
32807 : 0 : case CFN_FMAX:
32808 : 0 : if (gimple_call_num_args (_c1) == 2)
32809 : : {
32810 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
32811 : 0 : _q40 = do_valueize (valueize, _q40);
32812 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
32813 : 0 : _q41 = do_valueize (valueize, _q41);
32814 : 0 : {
32815 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32816 : 0 : {
32817 : 0 : tree op_type = TREE_TYPE (captures[2]);
32818 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMAX), op_type)
32819 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32820 : 0 : && single_use (captures[2])
32821 : : )
32822 : : {
32823 : 0 : gimple_seq *lseq = seq;
32824 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2849;
32825 : 0 : {
32826 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32827 : 0 : {
32828 : 0 : tree _o1[4], _r1;
32829 : 0 : {
32830 : 0 : tree _o2[1], _r2;
32831 : 0 : _o2[0] = captures[0];
32832 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32833 : 0 : tem_op.resimplify (lseq, valueize);
32834 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32835 : 0 : if (!_r2) goto next_after_fail2849;
32836 : 0 : _o1[0] = _r2;
32837 : : }
32838 : 0 : _o1[1] = captures[3];
32839 : 0 : _o1[2] = captures[4];
32840 : 0 : {
32841 : 0 : tree _o2[1], _r2;
32842 : 0 : _o2[0] = captures[1];
32843 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32844 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32845 : : {
32846 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32847 : 0 : tem_op.resimplify (lseq, valueize);
32848 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32849 : 0 : if (!_r2) goto next_after_fail2849;
32850 : : }
32851 : : else
32852 : : _r2 = _o2[0];
32853 : 0 : _o1[3] = _r2;
32854 : : }
32855 : 0 : (*res_op).set_op (CFN_COND_FMAX, TREE_TYPE (_o1[1]), 4);
32856 : 0 : (*res_op).ops[0] = _o1[0];
32857 : 0 : (*res_op).ops[1] = _o1[1];
32858 : 0 : (*res_op).ops[2] = _o1[2];
32859 : 0 : (*res_op).ops[3] = _o1[3];
32860 : 0 : (*res_op).resimplify (lseq, valueize);
32861 : : }
32862 : 0 : if (type != res_op->type
32863 : 0 : && !useless_type_conversion_p (type, res_op->type))
32864 : : {
32865 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2849;
32866 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32867 : 0 : res_op->resimplify (lseq, valueize);
32868 : : }
32869 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32870 : 0 : return true;
32871 : : }
32872 : 0 : next_after_fail2849:;
32873 : : }
32874 : : }
32875 : : }
32876 : : }
32877 : : break;
32878 : 0 : case CFN_FMIN:
32879 : 0 : if (gimple_call_num_args (_c1) == 2)
32880 : : {
32881 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
32882 : 0 : _q40 = do_valueize (valueize, _q40);
32883 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
32884 : 0 : _q41 = do_valueize (valueize, _q41);
32885 : 0 : {
32886 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32887 : 0 : {
32888 : 0 : tree op_type = TREE_TYPE (captures[2]);
32889 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_FMIN), op_type)
32890 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32891 : 0 : && single_use (captures[2])
32892 : : )
32893 : : {
32894 : 0 : gimple_seq *lseq = seq;
32895 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2850;
32896 : 0 : {
32897 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32898 : 0 : {
32899 : 0 : tree _o1[4], _r1;
32900 : 0 : {
32901 : 0 : tree _o2[1], _r2;
32902 : 0 : _o2[0] = captures[0];
32903 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32904 : 0 : tem_op.resimplify (lseq, valueize);
32905 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32906 : 0 : if (!_r2) goto next_after_fail2850;
32907 : 0 : _o1[0] = _r2;
32908 : : }
32909 : 0 : _o1[1] = captures[3];
32910 : 0 : _o1[2] = captures[4];
32911 : 0 : {
32912 : 0 : tree _o2[1], _r2;
32913 : 0 : _o2[0] = captures[1];
32914 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32915 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32916 : : {
32917 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32918 : 0 : tem_op.resimplify (lseq, valueize);
32919 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32920 : 0 : if (!_r2) goto next_after_fail2850;
32921 : : }
32922 : : else
32923 : : _r2 = _o2[0];
32924 : 0 : _o1[3] = _r2;
32925 : : }
32926 : 0 : (*res_op).set_op (CFN_COND_FMIN, TREE_TYPE (_o1[1]), 4);
32927 : 0 : (*res_op).ops[0] = _o1[0];
32928 : 0 : (*res_op).ops[1] = _o1[1];
32929 : 0 : (*res_op).ops[2] = _o1[2];
32930 : 0 : (*res_op).ops[3] = _o1[3];
32931 : 0 : (*res_op).resimplify (lseq, valueize);
32932 : : }
32933 : 0 : if (type != res_op->type
32934 : 0 : && !useless_type_conversion_p (type, res_op->type))
32935 : : {
32936 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2850;
32937 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32938 : 0 : res_op->resimplify (lseq, valueize);
32939 : : }
32940 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
32941 : 0 : return true;
32942 : : }
32943 : 0 : next_after_fail2850:;
32944 : : }
32945 : : }
32946 : : }
32947 : : }
32948 : : break;
32949 : 0 : case CFN_COPYSIGN:
32950 : 0 : if (gimple_call_num_args (_c1) == 2)
32951 : : {
32952 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
32953 : 0 : _q40 = do_valueize (valueize, _q40);
32954 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
32955 : 0 : _q41 = do_valueize (valueize, _q41);
32956 : 0 : {
32957 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41 };
32958 : 0 : {
32959 : 0 : tree op_type = TREE_TYPE (captures[2]);
32960 : 0 : if (vectorized_internal_fn_supported_p (as_internal_fn (CFN_COND_COPYSIGN), op_type)
32961 : 0 : && is_truth_type_for (op_type, TREE_TYPE (captures[0]))
32962 : 0 : && single_use (captures[2])
32963 : : )
32964 : : {
32965 : 0 : gimple_seq *lseq = seq;
32966 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2851;
32967 : 0 : {
32968 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
32969 : 0 : {
32970 : 0 : tree _o1[4], _r1;
32971 : 0 : {
32972 : 0 : tree _o2[1], _r2;
32973 : 0 : _o2[0] = captures[0];
32974 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
32975 : 0 : tem_op.resimplify (lseq, valueize);
32976 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32977 : 0 : if (!_r2) goto next_after_fail2851;
32978 : 0 : _o1[0] = _r2;
32979 : : }
32980 : 0 : _o1[1] = captures[3];
32981 : 0 : _o1[2] = captures[4];
32982 : 0 : {
32983 : 0 : tree _o2[1], _r2;
32984 : 0 : _o2[0] = captures[1];
32985 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
32986 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
32987 : : {
32988 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
32989 : 0 : tem_op.resimplify (lseq, valueize);
32990 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
32991 : 0 : if (!_r2) goto next_after_fail2851;
32992 : : }
32993 : : else
32994 : : _r2 = _o2[0];
32995 : 0 : _o1[3] = _r2;
32996 : : }
32997 : 0 : (*res_op).set_op (CFN_COND_COPYSIGN, TREE_TYPE (_o1[1]), 4);
32998 : 0 : (*res_op).ops[0] = _o1[0];
32999 : 0 : (*res_op).ops[1] = _o1[1];
33000 : 0 : (*res_op).ops[2] = _o1[2];
33001 : 0 : (*res_op).ops[3] = _o1[3];
33002 : 0 : (*res_op).resimplify (lseq, valueize);
33003 : : }
33004 : 0 : if (type != res_op->type
33005 : 0 : && !useless_type_conversion_p (type, res_op->type))
33006 : : {
33007 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2851;
33008 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
33009 : 0 : res_op->resimplify (lseq, valueize);
33010 : : }
33011 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1245, __FILE__, __LINE__, true);
33012 : 0 : return true;
33013 : : }
33014 : 0 : next_after_fail2851:;
33015 : : }
33016 : : }
33017 : : }
33018 : : }
33019 : : break;
33020 : : default:;
33021 : : }
33022 : : }
33023 : : break;
33024 : 173805 : default:;
33025 : : }
33026 : 173805 : switch (TREE_CODE (_p1))
33027 : : {
33028 : 39354 : case SSA_NAME:
33029 : 39354 : if (gimple *_d1 = get_def (valueize, _p1))
33030 : : {
33031 : 33384 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
33032 : 33395 : switch (gimple_assign_rhs_code (_a1))
33033 : : {
33034 : 3297 : case VIEW_CONVERT_EXPR:
33035 : 3297 : {
33036 : 3297 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
33037 : 3297 : if ((TREE_CODE (_q30) == SSA_NAME
33038 : 3297 : || is_gimple_min_invariant (_q30)))
33039 : : {
33040 : 3297 : _q30 = do_valueize (valueize, _q30);
33041 : 3297 : switch (TREE_CODE (_q30))
33042 : : {
33043 : 3297 : case SSA_NAME:
33044 : 3297 : if (gimple *_d2 = get_def (valueize, _q30))
33045 : : {
33046 : 3214 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
33047 : 998 : switch (gimple_call_combined_fn (_c2))
33048 : : {
33049 : 0 : case CFN_FMA:
33050 : 0 : if (gimple_call_num_args (_c2) == 3)
33051 : : {
33052 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33053 : 0 : _q40 = do_valueize (valueize, _q40);
33054 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33055 : 0 : _q41 = do_valueize (valueize, _q41);
33056 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33057 : 0 : _q42 = do_valueize (valueize, _q42);
33058 : 0 : if (tree_swap_operands_p (_q40, _q41))
33059 : 0 : std::swap (_q40, _q41);
33060 : 0 : {
33061 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2 };
33062 : 0 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA))
33063 : 0 : return true;
33064 : : }
33065 : : }
33066 : : break;
33067 : 0 : case CFN_FMS:
33068 : 0 : if (gimple_call_num_args (_c2) == 3)
33069 : : {
33070 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33071 : 0 : _q40 = do_valueize (valueize, _q40);
33072 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33073 : 0 : _q41 = do_valueize (valueize, _q41);
33074 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33075 : 0 : _q42 = do_valueize (valueize, _q42);
33076 : 0 : if (tree_swap_operands_p (_q40, _q41))
33077 : 0 : std::swap (_q40, _q41);
33078 : 0 : {
33079 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2 };
33080 : 0 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS))
33081 : 0 : return true;
33082 : : }
33083 : : }
33084 : : break;
33085 : 0 : case CFN_FNMA:
33086 : 0 : if (gimple_call_num_args (_c2) == 3)
33087 : : {
33088 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33089 : 0 : _q40 = do_valueize (valueize, _q40);
33090 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33091 : 0 : _q41 = do_valueize (valueize, _q41);
33092 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33093 : 0 : _q42 = do_valueize (valueize, _q42);
33094 : 0 : if (tree_swap_operands_p (_q40, _q41))
33095 : 0 : std::swap (_q40, _q41);
33096 : 0 : {
33097 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2 };
33098 : 0 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA))
33099 : 0 : return true;
33100 : : }
33101 : : }
33102 : : break;
33103 : 0 : case CFN_FNMS:
33104 : 0 : if (gimple_call_num_args (_c2) == 3)
33105 : : {
33106 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33107 : 0 : _q40 = do_valueize (valueize, _q40);
33108 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33109 : 0 : _q41 = do_valueize (valueize, _q41);
33110 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33111 : 0 : _q42 = do_valueize (valueize, _q42);
33112 : 0 : if (tree_swap_operands_p (_q40, _q41))
33113 : 0 : std::swap (_q40, _q41);
33114 : 0 : {
33115 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42, _p2 };
33116 : 0 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS))
33117 : 0 : return true;
33118 : : }
33119 : : }
33120 : : break;
33121 : : default:;
33122 : : }
33123 : : }
33124 : : break;
33125 : : default:;
33126 : : }
33127 : : }
33128 : : break;
33129 : : }
33130 : : default:;
33131 : : }
33132 : 13825 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
33133 : 3288 : switch (gimple_call_combined_fn (_c1))
33134 : : {
33135 : 390 : case CFN_FMA:
33136 : 390 : if (gimple_call_num_args (_c1) == 3)
33137 : : {
33138 : 390 : tree _q30 = gimple_call_arg (_c1, 0);
33139 : 390 : _q30 = do_valueize (valueize, _q30);
33140 : 390 : tree _q31 = gimple_call_arg (_c1, 1);
33141 : 390 : _q31 = do_valueize (valueize, _q31);
33142 : 390 : tree _q32 = gimple_call_arg (_c1, 2);
33143 : 390 : _q32 = do_valueize (valueize, _q32);
33144 : 390 : if (tree_swap_operands_p (_q30, _q31))
33145 : 60 : std::swap (_q30, _q31);
33146 : 390 : {
33147 : 390 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
33148 : 390 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA))
33149 : 390 : return true;
33150 : : }
33151 : : }
33152 : : break;
33153 : 42 : case CFN_FMS:
33154 : 42 : if (gimple_call_num_args (_c1) == 3)
33155 : : {
33156 : 42 : tree _q30 = gimple_call_arg (_c1, 0);
33157 : 42 : _q30 = do_valueize (valueize, _q30);
33158 : 42 : tree _q31 = gimple_call_arg (_c1, 1);
33159 : 42 : _q31 = do_valueize (valueize, _q31);
33160 : 42 : tree _q32 = gimple_call_arg (_c1, 2);
33161 : 42 : _q32 = do_valueize (valueize, _q32);
33162 : 42 : if (tree_swap_operands_p (_q30, _q31))
33163 : 0 : std::swap (_q30, _q31);
33164 : 42 : {
33165 : 42 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
33166 : 42 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS))
33167 : 42 : return true;
33168 : : }
33169 : : }
33170 : : break;
33171 : 42 : case CFN_FNMA:
33172 : 42 : if (gimple_call_num_args (_c1) == 3)
33173 : : {
33174 : 42 : tree _q30 = gimple_call_arg (_c1, 0);
33175 : 42 : _q30 = do_valueize (valueize, _q30);
33176 : 42 : tree _q31 = gimple_call_arg (_c1, 1);
33177 : 42 : _q31 = do_valueize (valueize, _q31);
33178 : 42 : tree _q32 = gimple_call_arg (_c1, 2);
33179 : 42 : _q32 = do_valueize (valueize, _q32);
33180 : 42 : if (tree_swap_operands_p (_q30, _q31))
33181 : 0 : std::swap (_q30, _q31);
33182 : 42 : {
33183 : 42 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
33184 : 42 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA))
33185 : 42 : return true;
33186 : : }
33187 : : }
33188 : : break;
33189 : 42 : case CFN_FNMS:
33190 : 42 : if (gimple_call_num_args (_c1) == 3)
33191 : : {
33192 : 42 : tree _q30 = gimple_call_arg (_c1, 0);
33193 : 42 : _q30 = do_valueize (valueize, _q30);
33194 : 42 : tree _q31 = gimple_call_arg (_c1, 1);
33195 : 42 : _q31 = do_valueize (valueize, _q31);
33196 : 42 : tree _q32 = gimple_call_arg (_c1, 2);
33197 : 42 : _q32 = do_valueize (valueize, _q32);
33198 : 42 : if (tree_swap_operands_p (_q30, _q31))
33199 : 0 : std::swap (_q30, _q31);
33200 : 42 : {
33201 : 42 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
33202 : 42 : if (gimple_simplify_624 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS))
33203 : 42 : return true;
33204 : : }
33205 : : }
33206 : : break;
33207 : : default:;
33208 : : }
33209 : : }
33210 : : break;
33211 : 173289 : default:;
33212 : : }
33213 : 173289 : switch (TREE_CODE (_p2))
33214 : : {
33215 : 40868 : case SSA_NAME:
33216 : 40868 : if (gimple *_d1 = get_def (valueize, _p2))
33217 : : {
33218 : 35361 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
33219 : 36544 : switch (gimple_assign_rhs_code (_a1))
33220 : : {
33221 : 4967 : case VIEW_CONVERT_EXPR:
33222 : 4967 : {
33223 : 4967 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
33224 : 4967 : if ((TREE_CODE (_q40) == SSA_NAME
33225 : 4967 : || is_gimple_min_invariant (_q40)))
33226 : : {
33227 : 4967 : _q40 = do_valueize (valueize, _q40);
33228 : 4967 : switch (TREE_CODE (_q40))
33229 : : {
33230 : 4967 : case SSA_NAME:
33231 : 4967 : if (gimple *_d2 = get_def (valueize, _q40))
33232 : : {
33233 : 4917 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
33234 : 1217 : switch (gimple_call_combined_fn (_c2))
33235 : : {
33236 : 0 : case CFN_FMA:
33237 : 0 : if (gimple_call_num_args (_c2) == 3)
33238 : : {
33239 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
33240 : 0 : _q50 = do_valueize (valueize, _q50);
33241 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
33242 : 0 : _q51 = do_valueize (valueize, _q51);
33243 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
33244 : 0 : _q52 = do_valueize (valueize, _q52);
33245 : 0 : if (tree_swap_operands_p (_q50, _q51))
33246 : 0 : std::swap (_q50, _q51);
33247 : 0 : {
33248 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52 };
33249 : 0 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA))
33250 : 0 : return true;
33251 : : }
33252 : : }
33253 : : break;
33254 : 0 : case CFN_FMS:
33255 : 0 : if (gimple_call_num_args (_c2) == 3)
33256 : : {
33257 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
33258 : 0 : _q50 = do_valueize (valueize, _q50);
33259 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
33260 : 0 : _q51 = do_valueize (valueize, _q51);
33261 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
33262 : 0 : _q52 = do_valueize (valueize, _q52);
33263 : 0 : if (tree_swap_operands_p (_q50, _q51))
33264 : 0 : std::swap (_q50, _q51);
33265 : 0 : {
33266 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52 };
33267 : 0 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS))
33268 : 0 : return true;
33269 : : }
33270 : : }
33271 : : break;
33272 : 0 : case CFN_FNMA:
33273 : 0 : if (gimple_call_num_args (_c2) == 3)
33274 : : {
33275 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
33276 : 0 : _q50 = do_valueize (valueize, _q50);
33277 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
33278 : 0 : _q51 = do_valueize (valueize, _q51);
33279 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
33280 : 0 : _q52 = do_valueize (valueize, _q52);
33281 : 0 : if (tree_swap_operands_p (_q50, _q51))
33282 : 0 : std::swap (_q50, _q51);
33283 : 0 : {
33284 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52 };
33285 : 0 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA))
33286 : 0 : return true;
33287 : : }
33288 : : }
33289 : : break;
33290 : 0 : case CFN_FNMS:
33291 : 0 : if (gimple_call_num_args (_c2) == 3)
33292 : : {
33293 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
33294 : 0 : _q50 = do_valueize (valueize, _q50);
33295 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
33296 : 0 : _q51 = do_valueize (valueize, _q51);
33297 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
33298 : 0 : _q52 = do_valueize (valueize, _q52);
33299 : 0 : if (tree_swap_operands_p (_q50, _q51))
33300 : 0 : std::swap (_q50, _q51);
33301 : 0 : {
33302 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q50, _q51, _q52 };
33303 : 0 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS))
33304 : 0 : return true;
33305 : : }
33306 : : }
33307 : : break;
33308 : : default:;
33309 : : }
33310 : : }
33311 : : break;
33312 : : default:;
33313 : : }
33314 : : }
33315 : : break;
33316 : : }
33317 : : default:;
33318 : : }
33319 : 11892 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
33320 : 1976 : switch (gimple_call_combined_fn (_c1))
33321 : : {
33322 : 10 : case CFN_FMA:
33323 : 10 : if (gimple_call_num_args (_c1) == 3)
33324 : : {
33325 : 10 : tree _q40 = gimple_call_arg (_c1, 0);
33326 : 10 : _q40 = do_valueize (valueize, _q40);
33327 : 10 : tree _q41 = gimple_call_arg (_c1, 1);
33328 : 10 : _q41 = do_valueize (valueize, _q41);
33329 : 10 : tree _q42 = gimple_call_arg (_c1, 2);
33330 : 10 : _q42 = do_valueize (valueize, _q42);
33331 : 10 : if (tree_swap_operands_p (_q40, _q41))
33332 : 0 : std::swap (_q40, _q41);
33333 : 10 : {
33334 : 10 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42 };
33335 : 10 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA))
33336 : 0 : return true;
33337 : : }
33338 : : }
33339 : : break;
33340 : 0 : case CFN_FMS:
33341 : 0 : if (gimple_call_num_args (_c1) == 3)
33342 : : {
33343 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
33344 : 0 : _q40 = do_valueize (valueize, _q40);
33345 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
33346 : 0 : _q41 = do_valueize (valueize, _q41);
33347 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
33348 : 0 : _q42 = do_valueize (valueize, _q42);
33349 : 0 : if (tree_swap_operands_p (_q40, _q41))
33350 : 0 : std::swap (_q40, _q41);
33351 : 0 : {
33352 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42 };
33353 : 0 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS))
33354 : 0 : return true;
33355 : : }
33356 : : }
33357 : : break;
33358 : 0 : case CFN_FNMA:
33359 : 0 : if (gimple_call_num_args (_c1) == 3)
33360 : : {
33361 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
33362 : 0 : _q40 = do_valueize (valueize, _q40);
33363 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
33364 : 0 : _q41 = do_valueize (valueize, _q41);
33365 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
33366 : 0 : _q42 = do_valueize (valueize, _q42);
33367 : 0 : if (tree_swap_operands_p (_q40, _q41))
33368 : 0 : std::swap (_q40, _q41);
33369 : 0 : {
33370 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42 };
33371 : 0 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA))
33372 : 0 : return true;
33373 : : }
33374 : : }
33375 : : break;
33376 : 0 : case CFN_FNMS:
33377 : 0 : if (gimple_call_num_args (_c1) == 3)
33378 : : {
33379 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
33380 : 0 : _q40 = do_valueize (valueize, _q40);
33381 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
33382 : 0 : _q41 = do_valueize (valueize, _q41);
33383 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
33384 : 0 : _q42 = do_valueize (valueize, _q42);
33385 : 0 : if (tree_swap_operands_p (_q40, _q41))
33386 : 0 : std::swap (_q40, _q41);
33387 : 0 : {
33388 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _p2, _q40, _q41, _q42 };
33389 : 0 : if (gimple_simplify_625 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS))
33390 : 0 : return true;
33391 : : }
33392 : : }
33393 : : break;
33394 : : default:;
33395 : : }
33396 : : }
33397 : : break;
33398 : 173289 : default:;
33399 : : }
33400 : 173289 : switch (TREE_CODE (_p1))
33401 : : {
33402 : 38838 : case SSA_NAME:
33403 : 38838 : if (gimple *_d1 = get_def (valueize, _p1))
33404 : : {
33405 : 32868 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
33406 : 33395 : switch (gimple_assign_rhs_code (_a1))
33407 : : {
33408 : 3297 : case VIEW_CONVERT_EXPR:
33409 : 3297 : {
33410 : 3297 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
33411 : 3297 : if ((TREE_CODE (_q30) == SSA_NAME
33412 : 3297 : || is_gimple_min_invariant (_q30)))
33413 : : {
33414 : 3297 : _q30 = do_valueize (valueize, _q30);
33415 : 3297 : switch (TREE_CODE (_q30))
33416 : : {
33417 : 3297 : case SSA_NAME:
33418 : 3297 : if (gimple *_d2 = get_def (valueize, _q30))
33419 : : {
33420 : 3214 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
33421 : 998 : switch (gimple_call_combined_fn (_c2))
33422 : : {
33423 : 0 : case CFN_COND_ADD:
33424 : 0 : if (gimple_call_num_args (_c2) == 4)
33425 : : {
33426 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33427 : 0 : _q40 = do_valueize (valueize, _q40);
33428 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33429 : 0 : _q41 = do_valueize (valueize, _q41);
33430 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33431 : 0 : _q42 = do_valueize (valueize, _q42);
33432 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33433 : 0 : _q43 = do_valueize (valueize, _q43);
33434 : 0 : if (tree_swap_operands_p (_q41, _q42))
33435 : 0 : std::swap (_q41, _q42);
33436 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33437 : : {
33438 : 0 : {
33439 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33440 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_ADD))
33441 : 0 : return true;
33442 : : }
33443 : : }
33444 : : }
33445 : : break;
33446 : 0 : case CFN_COND_AND:
33447 : 0 : if (gimple_call_num_args (_c2) == 4)
33448 : : {
33449 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33450 : 0 : _q40 = do_valueize (valueize, _q40);
33451 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33452 : 0 : _q41 = do_valueize (valueize, _q41);
33453 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33454 : 0 : _q42 = do_valueize (valueize, _q42);
33455 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33456 : 0 : _q43 = do_valueize (valueize, _q43);
33457 : 0 : if (tree_swap_operands_p (_q41, _q42))
33458 : 0 : std::swap (_q41, _q42);
33459 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33460 : : {
33461 : 0 : {
33462 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33463 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_AND))
33464 : 0 : return true;
33465 : : }
33466 : : }
33467 : : }
33468 : : break;
33469 : 0 : case CFN_COND_DIV:
33470 : 0 : if (gimple_call_num_args (_c2) == 4)
33471 : : {
33472 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33473 : 0 : _q40 = do_valueize (valueize, _q40);
33474 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33475 : 0 : _q41 = do_valueize (valueize, _q41);
33476 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33477 : 0 : _q42 = do_valueize (valueize, _q42);
33478 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33479 : 0 : _q43 = do_valueize (valueize, _q43);
33480 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33481 : : {
33482 : 0 : {
33483 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33484 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_DIV))
33485 : 0 : return true;
33486 : : }
33487 : : }
33488 : : }
33489 : : break;
33490 : 0 : case CFN_COND_IOR:
33491 : 0 : if (gimple_call_num_args (_c2) == 4)
33492 : : {
33493 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33494 : 0 : _q40 = do_valueize (valueize, _q40);
33495 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33496 : 0 : _q41 = do_valueize (valueize, _q41);
33497 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33498 : 0 : _q42 = do_valueize (valueize, _q42);
33499 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33500 : 0 : _q43 = do_valueize (valueize, _q43);
33501 : 0 : if (tree_swap_operands_p (_q41, _q42))
33502 : 0 : std::swap (_q41, _q42);
33503 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33504 : : {
33505 : 0 : {
33506 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33507 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_IOR))
33508 : 0 : return true;
33509 : : }
33510 : : }
33511 : : }
33512 : : break;
33513 : 0 : case CFN_COND_MAX:
33514 : 0 : if (gimple_call_num_args (_c2) == 4)
33515 : : {
33516 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33517 : 0 : _q40 = do_valueize (valueize, _q40);
33518 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33519 : 0 : _q41 = do_valueize (valueize, _q41);
33520 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33521 : 0 : _q42 = do_valueize (valueize, _q42);
33522 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33523 : 0 : _q43 = do_valueize (valueize, _q43);
33524 : 0 : if (tree_swap_operands_p (_q41, _q42))
33525 : 0 : std::swap (_q41, _q42);
33526 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33527 : : {
33528 : 0 : {
33529 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33530 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MAX))
33531 : 0 : return true;
33532 : : }
33533 : : }
33534 : : }
33535 : : break;
33536 : 0 : case CFN_COND_MIN:
33537 : 0 : if (gimple_call_num_args (_c2) == 4)
33538 : : {
33539 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33540 : 0 : _q40 = do_valueize (valueize, _q40);
33541 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33542 : 0 : _q41 = do_valueize (valueize, _q41);
33543 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33544 : 0 : _q42 = do_valueize (valueize, _q42);
33545 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33546 : 0 : _q43 = do_valueize (valueize, _q43);
33547 : 0 : if (tree_swap_operands_p (_q41, _q42))
33548 : 0 : std::swap (_q41, _q42);
33549 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33550 : : {
33551 : 0 : {
33552 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33553 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MIN))
33554 : 0 : return true;
33555 : : }
33556 : : }
33557 : : }
33558 : : break;
33559 : 0 : case CFN_COND_MOD:
33560 : 0 : if (gimple_call_num_args (_c2) == 4)
33561 : : {
33562 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33563 : 0 : _q40 = do_valueize (valueize, _q40);
33564 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33565 : 0 : _q41 = do_valueize (valueize, _q41);
33566 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33567 : 0 : _q42 = do_valueize (valueize, _q42);
33568 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33569 : 0 : _q43 = do_valueize (valueize, _q43);
33570 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33571 : : {
33572 : 0 : {
33573 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33574 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MOD))
33575 : 0 : return true;
33576 : : }
33577 : : }
33578 : : }
33579 : : break;
33580 : 0 : case CFN_COND_MUL:
33581 : 0 : if (gimple_call_num_args (_c2) == 4)
33582 : : {
33583 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33584 : 0 : _q40 = do_valueize (valueize, _q40);
33585 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33586 : 0 : _q41 = do_valueize (valueize, _q41);
33587 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33588 : 0 : _q42 = do_valueize (valueize, _q42);
33589 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33590 : 0 : _q43 = do_valueize (valueize, _q43);
33591 : 0 : if (tree_swap_operands_p (_q41, _q42))
33592 : 0 : std::swap (_q41, _q42);
33593 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33594 : : {
33595 : 0 : {
33596 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33597 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MUL))
33598 : 0 : return true;
33599 : : }
33600 : : }
33601 : : }
33602 : : break;
33603 : 0 : case CFN_COND_SHL:
33604 : 0 : if (gimple_call_num_args (_c2) == 4)
33605 : : {
33606 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33607 : 0 : _q40 = do_valueize (valueize, _q40);
33608 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33609 : 0 : _q41 = do_valueize (valueize, _q41);
33610 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33611 : 0 : _q42 = do_valueize (valueize, _q42);
33612 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33613 : 0 : _q43 = do_valueize (valueize, _q43);
33614 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33615 : : {
33616 : 0 : {
33617 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33618 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_SHL))
33619 : 0 : return true;
33620 : : }
33621 : : }
33622 : : }
33623 : : break;
33624 : 0 : case CFN_COND_SHR:
33625 : 0 : if (gimple_call_num_args (_c2) == 4)
33626 : : {
33627 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33628 : 0 : _q40 = do_valueize (valueize, _q40);
33629 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33630 : 0 : _q41 = do_valueize (valueize, _q41);
33631 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33632 : 0 : _q42 = do_valueize (valueize, _q42);
33633 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33634 : 0 : _q43 = do_valueize (valueize, _q43);
33635 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33636 : : {
33637 : 0 : {
33638 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33639 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_SHR))
33640 : 0 : return true;
33641 : : }
33642 : : }
33643 : : }
33644 : : break;
33645 : 0 : case CFN_COND_SUB:
33646 : 0 : if (gimple_call_num_args (_c2) == 4)
33647 : : {
33648 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33649 : 0 : _q40 = do_valueize (valueize, _q40);
33650 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33651 : 0 : _q41 = do_valueize (valueize, _q41);
33652 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33653 : 0 : _q42 = do_valueize (valueize, _q42);
33654 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33655 : 0 : _q43 = do_valueize (valueize, _q43);
33656 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33657 : : {
33658 : 0 : {
33659 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33660 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_SUB))
33661 : 0 : return true;
33662 : : }
33663 : : }
33664 : : }
33665 : : break;
33666 : 0 : case CFN_COND_XOR:
33667 : 0 : if (gimple_call_num_args (_c2) == 4)
33668 : : {
33669 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33670 : 0 : _q40 = do_valueize (valueize, _q40);
33671 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33672 : 0 : _q41 = do_valueize (valueize, _q41);
33673 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33674 : 0 : _q42 = do_valueize (valueize, _q42);
33675 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33676 : 0 : _q43 = do_valueize (valueize, _q43);
33677 : 0 : if (tree_swap_operands_p (_q41, _q42))
33678 : 0 : std::swap (_q41, _q42);
33679 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33680 : : {
33681 : 0 : {
33682 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33683 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_XOR))
33684 : 0 : return true;
33685 : : }
33686 : : }
33687 : : }
33688 : : break;
33689 : 0 : case CFN_COND_COPYSIGN:
33690 : 0 : if (gimple_call_num_args (_c2) == 4)
33691 : : {
33692 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33693 : 0 : _q40 = do_valueize (valueize, _q40);
33694 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33695 : 0 : _q41 = do_valueize (valueize, _q41);
33696 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33697 : 0 : _q42 = do_valueize (valueize, _q42);
33698 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33699 : 0 : _q43 = do_valueize (valueize, _q43);
33700 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33701 : : {
33702 : 0 : {
33703 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33704 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_COPYSIGN))
33705 : 0 : return true;
33706 : : }
33707 : : }
33708 : : }
33709 : : break;
33710 : 0 : case CFN_COND_FMAX:
33711 : 0 : if (gimple_call_num_args (_c2) == 4)
33712 : : {
33713 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33714 : 0 : _q40 = do_valueize (valueize, _q40);
33715 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33716 : 0 : _q41 = do_valueize (valueize, _q41);
33717 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33718 : 0 : _q42 = do_valueize (valueize, _q42);
33719 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33720 : 0 : _q43 = do_valueize (valueize, _q43);
33721 : 0 : if (tree_swap_operands_p (_q41, _q42))
33722 : 0 : std::swap (_q41, _q42);
33723 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33724 : : {
33725 : 0 : {
33726 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33727 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_FMAX))
33728 : 0 : return true;
33729 : : }
33730 : : }
33731 : : }
33732 : : break;
33733 : 0 : case CFN_COND_FMIN:
33734 : 0 : if (gimple_call_num_args (_c2) == 4)
33735 : : {
33736 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33737 : 0 : _q40 = do_valueize (valueize, _q40);
33738 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33739 : 0 : _q41 = do_valueize (valueize, _q41);
33740 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33741 : 0 : _q42 = do_valueize (valueize, _q42);
33742 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33743 : 0 : _q43 = do_valueize (valueize, _q43);
33744 : 0 : if (tree_swap_operands_p (_q41, _q42))
33745 : 0 : std::swap (_q41, _q42);
33746 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33747 : : {
33748 : 0 : {
33749 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33750 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_FMIN))
33751 : 0 : return true;
33752 : : }
33753 : : }
33754 : : }
33755 : : break;
33756 : 0 : case CFN_COND_RDIV:
33757 : 0 : if (gimple_call_num_args (_c2) == 4)
33758 : : {
33759 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
33760 : 0 : _q40 = do_valueize (valueize, _q40);
33761 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
33762 : 0 : _q41 = do_valueize (valueize, _q41);
33763 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
33764 : 0 : _q42 = do_valueize (valueize, _q42);
33765 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
33766 : 0 : _q43 = do_valueize (valueize, _q43);
33767 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
33768 : : {
33769 : 0 : {
33770 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _p2 };
33771 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_RDIV))
33772 : 0 : return true;
33773 : : }
33774 : : }
33775 : : }
33776 : : break;
33777 : : default:;
33778 : : }
33779 : : }
33780 : : break;
33781 : : default:;
33782 : : }
33783 : : }
33784 : : break;
33785 : : }
33786 : : default:;
33787 : : }
33788 : 13309 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
33789 : 2772 : switch (gimple_call_combined_fn (_c1))
33790 : : {
33791 : 144 : case CFN_COND_ADD:
33792 : 144 : if (gimple_call_num_args (_c1) == 4)
33793 : : {
33794 : 144 : tree _q30 = gimple_call_arg (_c1, 0);
33795 : 144 : _q30 = do_valueize (valueize, _q30);
33796 : 144 : tree _q31 = gimple_call_arg (_c1, 1);
33797 : 144 : _q31 = do_valueize (valueize, _q31);
33798 : 144 : tree _q32 = gimple_call_arg (_c1, 2);
33799 : 144 : _q32 = do_valueize (valueize, _q32);
33800 : 144 : tree _q33 = gimple_call_arg (_c1, 3);
33801 : 144 : _q33 = do_valueize (valueize, _q33);
33802 : 144 : if (tree_swap_operands_p (_q31, _q32))
33803 : 12 : std::swap (_q31, _q32);
33804 : 144 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33805 : : {
33806 : 144 : {
33807 : 144 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33808 : 144 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_ADD))
33809 : 144 : return true;
33810 : : }
33811 : : }
33812 : : }
33813 : : break;
33814 : 0 : case CFN_COND_AND:
33815 : 0 : if (gimple_call_num_args (_c1) == 4)
33816 : : {
33817 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33818 : 0 : _q30 = do_valueize (valueize, _q30);
33819 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33820 : 0 : _q31 = do_valueize (valueize, _q31);
33821 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
33822 : 0 : _q32 = do_valueize (valueize, _q32);
33823 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
33824 : 0 : _q33 = do_valueize (valueize, _q33);
33825 : 0 : if (tree_swap_operands_p (_q31, _q32))
33826 : 0 : std::swap (_q31, _q32);
33827 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33828 : : {
33829 : 0 : {
33830 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33831 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_AND))
33832 : 0 : return true;
33833 : : }
33834 : : }
33835 : : }
33836 : : break;
33837 : 0 : case CFN_COND_DIV:
33838 : 0 : if (gimple_call_num_args (_c1) == 4)
33839 : : {
33840 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33841 : 0 : _q30 = do_valueize (valueize, _q30);
33842 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33843 : 0 : _q31 = do_valueize (valueize, _q31);
33844 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
33845 : 0 : _q32 = do_valueize (valueize, _q32);
33846 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
33847 : 0 : _q33 = do_valueize (valueize, _q33);
33848 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33849 : : {
33850 : 0 : {
33851 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33852 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_DIV))
33853 : 0 : return true;
33854 : : }
33855 : : }
33856 : : }
33857 : : break;
33858 : 0 : case CFN_COND_IOR:
33859 : 0 : if (gimple_call_num_args (_c1) == 4)
33860 : : {
33861 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33862 : 0 : _q30 = do_valueize (valueize, _q30);
33863 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33864 : 0 : _q31 = do_valueize (valueize, _q31);
33865 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
33866 : 0 : _q32 = do_valueize (valueize, _q32);
33867 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
33868 : 0 : _q33 = do_valueize (valueize, _q33);
33869 : 0 : if (tree_swap_operands_p (_q31, _q32))
33870 : 0 : std::swap (_q31, _q32);
33871 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33872 : : {
33873 : 0 : {
33874 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33875 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_IOR))
33876 : 0 : return true;
33877 : : }
33878 : : }
33879 : : }
33880 : : break;
33881 : 0 : case CFN_COND_MAX:
33882 : 0 : if (gimple_call_num_args (_c1) == 4)
33883 : : {
33884 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33885 : 0 : _q30 = do_valueize (valueize, _q30);
33886 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33887 : 0 : _q31 = do_valueize (valueize, _q31);
33888 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
33889 : 0 : _q32 = do_valueize (valueize, _q32);
33890 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
33891 : 0 : _q33 = do_valueize (valueize, _q33);
33892 : 0 : if (tree_swap_operands_p (_q31, _q32))
33893 : 0 : std::swap (_q31, _q32);
33894 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33895 : : {
33896 : 0 : {
33897 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33898 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MAX))
33899 : 0 : return true;
33900 : : }
33901 : : }
33902 : : }
33903 : : break;
33904 : 0 : case CFN_COND_MIN:
33905 : 0 : if (gimple_call_num_args (_c1) == 4)
33906 : : {
33907 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33908 : 0 : _q30 = do_valueize (valueize, _q30);
33909 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33910 : 0 : _q31 = do_valueize (valueize, _q31);
33911 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
33912 : 0 : _q32 = do_valueize (valueize, _q32);
33913 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
33914 : 0 : _q33 = do_valueize (valueize, _q33);
33915 : 0 : if (tree_swap_operands_p (_q31, _q32))
33916 : 0 : std::swap (_q31, _q32);
33917 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33918 : : {
33919 : 0 : {
33920 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33921 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MIN))
33922 : 0 : return true;
33923 : : }
33924 : : }
33925 : : }
33926 : : break;
33927 : 0 : case CFN_COND_MOD:
33928 : 0 : if (gimple_call_num_args (_c1) == 4)
33929 : : {
33930 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33931 : 0 : _q30 = do_valueize (valueize, _q30);
33932 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33933 : 0 : _q31 = do_valueize (valueize, _q31);
33934 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
33935 : 0 : _q32 = do_valueize (valueize, _q32);
33936 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
33937 : 0 : _q33 = do_valueize (valueize, _q33);
33938 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33939 : : {
33940 : 0 : {
33941 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33942 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MOD))
33943 : 0 : return true;
33944 : : }
33945 : : }
33946 : : }
33947 : : break;
33948 : 12 : case CFN_COND_MUL:
33949 : 12 : if (gimple_call_num_args (_c1) == 4)
33950 : : {
33951 : 12 : tree _q30 = gimple_call_arg (_c1, 0);
33952 : 12 : _q30 = do_valueize (valueize, _q30);
33953 : 12 : tree _q31 = gimple_call_arg (_c1, 1);
33954 : 12 : _q31 = do_valueize (valueize, _q31);
33955 : 12 : tree _q32 = gimple_call_arg (_c1, 2);
33956 : 12 : _q32 = do_valueize (valueize, _q32);
33957 : 12 : tree _q33 = gimple_call_arg (_c1, 3);
33958 : 12 : _q33 = do_valueize (valueize, _q33);
33959 : 12 : if (tree_swap_operands_p (_q31, _q32))
33960 : 0 : std::swap (_q31, _q32);
33961 : 12 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33962 : : {
33963 : 12 : {
33964 : 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33965 : 12 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_MUL))
33966 : 12 : return true;
33967 : : }
33968 : : }
33969 : : }
33970 : : break;
33971 : 0 : case CFN_COND_SHL:
33972 : 0 : if (gimple_call_num_args (_c1) == 4)
33973 : : {
33974 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33975 : 0 : _q30 = do_valueize (valueize, _q30);
33976 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33977 : 0 : _q31 = do_valueize (valueize, _q31);
33978 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
33979 : 0 : _q32 = do_valueize (valueize, _q32);
33980 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
33981 : 0 : _q33 = do_valueize (valueize, _q33);
33982 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
33983 : : {
33984 : 0 : {
33985 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
33986 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_SHL))
33987 : 0 : return true;
33988 : : }
33989 : : }
33990 : : }
33991 : : break;
33992 : 0 : case CFN_COND_SHR:
33993 : 0 : if (gimple_call_num_args (_c1) == 4)
33994 : : {
33995 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
33996 : 0 : _q30 = do_valueize (valueize, _q30);
33997 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
33998 : 0 : _q31 = do_valueize (valueize, _q31);
33999 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
34000 : 0 : _q32 = do_valueize (valueize, _q32);
34001 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
34002 : 0 : _q33 = do_valueize (valueize, _q33);
34003 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34004 : : {
34005 : 0 : {
34006 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
34007 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_SHR))
34008 : 0 : return true;
34009 : : }
34010 : : }
34011 : : }
34012 : : break;
34013 : 168 : case CFN_COND_SUB:
34014 : 168 : if (gimple_call_num_args (_c1) == 4)
34015 : : {
34016 : 168 : tree _q30 = gimple_call_arg (_c1, 0);
34017 : 168 : _q30 = do_valueize (valueize, _q30);
34018 : 168 : tree _q31 = gimple_call_arg (_c1, 1);
34019 : 168 : _q31 = do_valueize (valueize, _q31);
34020 : 168 : tree _q32 = gimple_call_arg (_c1, 2);
34021 : 168 : _q32 = do_valueize (valueize, _q32);
34022 : 168 : tree _q33 = gimple_call_arg (_c1, 3);
34023 : 168 : _q33 = do_valueize (valueize, _q33);
34024 : 168 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34025 : : {
34026 : 168 : {
34027 : 168 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
34028 : 168 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_SUB))
34029 : 168 : return true;
34030 : : }
34031 : : }
34032 : : }
34033 : : break;
34034 : 0 : case CFN_COND_XOR:
34035 : 0 : if (gimple_call_num_args (_c1) == 4)
34036 : : {
34037 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
34038 : 0 : _q30 = do_valueize (valueize, _q30);
34039 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
34040 : 0 : _q31 = do_valueize (valueize, _q31);
34041 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
34042 : 0 : _q32 = do_valueize (valueize, _q32);
34043 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
34044 : 0 : _q33 = do_valueize (valueize, _q33);
34045 : 0 : if (tree_swap_operands_p (_q31, _q32))
34046 : 0 : std::swap (_q31, _q32);
34047 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34048 : : {
34049 : 0 : {
34050 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
34051 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_XOR))
34052 : 0 : return true;
34053 : : }
34054 : : }
34055 : : }
34056 : : break;
34057 : 0 : case CFN_COND_COPYSIGN:
34058 : 0 : if (gimple_call_num_args (_c1) == 4)
34059 : : {
34060 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
34061 : 0 : _q30 = do_valueize (valueize, _q30);
34062 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
34063 : 0 : _q31 = do_valueize (valueize, _q31);
34064 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
34065 : 0 : _q32 = do_valueize (valueize, _q32);
34066 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
34067 : 0 : _q33 = do_valueize (valueize, _q33);
34068 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34069 : : {
34070 : 0 : {
34071 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
34072 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_COPYSIGN))
34073 : 0 : return true;
34074 : : }
34075 : : }
34076 : : }
34077 : : break;
34078 : 0 : case CFN_COND_FMAX:
34079 : 0 : if (gimple_call_num_args (_c1) == 4)
34080 : : {
34081 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
34082 : 0 : _q30 = do_valueize (valueize, _q30);
34083 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
34084 : 0 : _q31 = do_valueize (valueize, _q31);
34085 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
34086 : 0 : _q32 = do_valueize (valueize, _q32);
34087 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
34088 : 0 : _q33 = do_valueize (valueize, _q33);
34089 : 0 : if (tree_swap_operands_p (_q31, _q32))
34090 : 0 : std::swap (_q31, _q32);
34091 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34092 : : {
34093 : 0 : {
34094 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
34095 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_FMAX))
34096 : 0 : return true;
34097 : : }
34098 : : }
34099 : : }
34100 : : break;
34101 : 0 : case CFN_COND_FMIN:
34102 : 0 : if (gimple_call_num_args (_c1) == 4)
34103 : : {
34104 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
34105 : 0 : _q30 = do_valueize (valueize, _q30);
34106 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
34107 : 0 : _q31 = do_valueize (valueize, _q31);
34108 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
34109 : 0 : _q32 = do_valueize (valueize, _q32);
34110 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
34111 : 0 : _q33 = do_valueize (valueize, _q33);
34112 : 0 : if (tree_swap_operands_p (_q31, _q32))
34113 : 0 : std::swap (_q31, _q32);
34114 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34115 : : {
34116 : 0 : {
34117 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
34118 : 0 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_FMIN))
34119 : 0 : return true;
34120 : : }
34121 : : }
34122 : : }
34123 : : break;
34124 : 58 : case CFN_COND_RDIV:
34125 : 58 : if (gimple_call_num_args (_c1) == 4)
34126 : : {
34127 : 58 : tree _q30 = gimple_call_arg (_c1, 0);
34128 : 58 : _q30 = do_valueize (valueize, _q30);
34129 : 58 : tree _q31 = gimple_call_arg (_c1, 1);
34130 : 58 : _q31 = do_valueize (valueize, _q31);
34131 : 58 : tree _q32 = gimple_call_arg (_c1, 2);
34132 : 58 : _q32 = do_valueize (valueize, _q32);
34133 : 58 : tree _q33 = gimple_call_arg (_c1, 3);
34134 : 58 : _q33 = do_valueize (valueize, _q33);
34135 : 58 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34136 : : {
34137 : 36 : {
34138 : 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _p2 };
34139 : 36 : if (gimple_simplify_626 (res_op, seq, valueize, type, captures, CFN_COND_RDIV))
34140 : 36 : return true;
34141 : : }
34142 : : }
34143 : : }
34144 : : break;
34145 : : default:;
34146 : : }
34147 : : }
34148 : : break;
34149 : 172929 : default:;
34150 : : }
34151 : 172929 : switch (TREE_CODE (_p2))
34152 : : {
34153 : 40520 : case SSA_NAME:
34154 : 40520 : if (gimple *_d1 = get_def (valueize, _p2))
34155 : : {
34156 : 35013 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
34157 : 36064 : switch (gimple_assign_rhs_code (_a1))
34158 : : {
34159 : 4919 : case VIEW_CONVERT_EXPR:
34160 : 4919 : {
34161 : 4919 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
34162 : 4919 : if ((TREE_CODE (_q40) == SSA_NAME
34163 : 4919 : || is_gimple_min_invariant (_q40)))
34164 : : {
34165 : 4919 : _q40 = do_valueize (valueize, _q40);
34166 : 4919 : switch (TREE_CODE (_q40))
34167 : : {
34168 : 4919 : case SSA_NAME:
34169 : 4919 : if (gimple *_d2 = get_def (valueize, _q40))
34170 : : {
34171 : 4869 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
34172 : 1217 : switch (gimple_call_combined_fn (_c2))
34173 : : {
34174 : 0 : case CFN_COND_ADD:
34175 : 0 : if (gimple_call_num_args (_c2) == 4)
34176 : : {
34177 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34178 : 0 : _q50 = do_valueize (valueize, _q50);
34179 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34180 : 0 : _q51 = do_valueize (valueize, _q51);
34181 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34182 : 0 : _q52 = do_valueize (valueize, _q52);
34183 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34184 : 0 : _q53 = do_valueize (valueize, _q53);
34185 : 0 : if (tree_swap_operands_p (_q51, _q52))
34186 : 0 : std::swap (_q51, _q52);
34187 : 0 : {
34188 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34189 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_ADD))
34190 : 0 : return true;
34191 : : }
34192 : : }
34193 : : break;
34194 : 0 : case CFN_COND_AND:
34195 : 0 : if (gimple_call_num_args (_c2) == 4)
34196 : : {
34197 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34198 : 0 : _q50 = do_valueize (valueize, _q50);
34199 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34200 : 0 : _q51 = do_valueize (valueize, _q51);
34201 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34202 : 0 : _q52 = do_valueize (valueize, _q52);
34203 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34204 : 0 : _q53 = do_valueize (valueize, _q53);
34205 : 0 : if (tree_swap_operands_p (_q51, _q52))
34206 : 0 : std::swap (_q51, _q52);
34207 : 0 : {
34208 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34209 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_AND))
34210 : 0 : return true;
34211 : : }
34212 : : }
34213 : : break;
34214 : 0 : case CFN_COND_DIV:
34215 : 0 : if (gimple_call_num_args (_c2) == 4)
34216 : : {
34217 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34218 : 0 : _q50 = do_valueize (valueize, _q50);
34219 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34220 : 0 : _q51 = do_valueize (valueize, _q51);
34221 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34222 : 0 : _q52 = do_valueize (valueize, _q52);
34223 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34224 : 0 : _q53 = do_valueize (valueize, _q53);
34225 : 0 : {
34226 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34227 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_DIV))
34228 : 0 : return true;
34229 : : }
34230 : : }
34231 : : break;
34232 : 0 : case CFN_COND_IOR:
34233 : 0 : if (gimple_call_num_args (_c2) == 4)
34234 : : {
34235 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34236 : 0 : _q50 = do_valueize (valueize, _q50);
34237 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34238 : 0 : _q51 = do_valueize (valueize, _q51);
34239 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34240 : 0 : _q52 = do_valueize (valueize, _q52);
34241 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34242 : 0 : _q53 = do_valueize (valueize, _q53);
34243 : 0 : if (tree_swap_operands_p (_q51, _q52))
34244 : 0 : std::swap (_q51, _q52);
34245 : 0 : {
34246 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34247 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_IOR))
34248 : 0 : return true;
34249 : : }
34250 : : }
34251 : : break;
34252 : 0 : case CFN_COND_MAX:
34253 : 0 : if (gimple_call_num_args (_c2) == 4)
34254 : : {
34255 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34256 : 0 : _q50 = do_valueize (valueize, _q50);
34257 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34258 : 0 : _q51 = do_valueize (valueize, _q51);
34259 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34260 : 0 : _q52 = do_valueize (valueize, _q52);
34261 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34262 : 0 : _q53 = do_valueize (valueize, _q53);
34263 : 0 : if (tree_swap_operands_p (_q51, _q52))
34264 : 0 : std::swap (_q51, _q52);
34265 : 0 : {
34266 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34267 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MAX))
34268 : 0 : return true;
34269 : : }
34270 : : }
34271 : : break;
34272 : 0 : case CFN_COND_MIN:
34273 : 0 : if (gimple_call_num_args (_c2) == 4)
34274 : : {
34275 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34276 : 0 : _q50 = do_valueize (valueize, _q50);
34277 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34278 : 0 : _q51 = do_valueize (valueize, _q51);
34279 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34280 : 0 : _q52 = do_valueize (valueize, _q52);
34281 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34282 : 0 : _q53 = do_valueize (valueize, _q53);
34283 : 0 : if (tree_swap_operands_p (_q51, _q52))
34284 : 0 : std::swap (_q51, _q52);
34285 : 0 : {
34286 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34287 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MIN))
34288 : 0 : return true;
34289 : : }
34290 : : }
34291 : : break;
34292 : 0 : case CFN_COND_MOD:
34293 : 0 : if (gimple_call_num_args (_c2) == 4)
34294 : : {
34295 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34296 : 0 : _q50 = do_valueize (valueize, _q50);
34297 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34298 : 0 : _q51 = do_valueize (valueize, _q51);
34299 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34300 : 0 : _q52 = do_valueize (valueize, _q52);
34301 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34302 : 0 : _q53 = do_valueize (valueize, _q53);
34303 : 0 : {
34304 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34305 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MOD))
34306 : 0 : return true;
34307 : : }
34308 : : }
34309 : : break;
34310 : 0 : case CFN_COND_MUL:
34311 : 0 : if (gimple_call_num_args (_c2) == 4)
34312 : : {
34313 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34314 : 0 : _q50 = do_valueize (valueize, _q50);
34315 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34316 : 0 : _q51 = do_valueize (valueize, _q51);
34317 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34318 : 0 : _q52 = do_valueize (valueize, _q52);
34319 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34320 : 0 : _q53 = do_valueize (valueize, _q53);
34321 : 0 : if (tree_swap_operands_p (_q51, _q52))
34322 : 0 : std::swap (_q51, _q52);
34323 : 0 : {
34324 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34325 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MUL))
34326 : 0 : return true;
34327 : : }
34328 : : }
34329 : : break;
34330 : 0 : case CFN_COND_SHL:
34331 : 0 : if (gimple_call_num_args (_c2) == 4)
34332 : : {
34333 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34334 : 0 : _q50 = do_valueize (valueize, _q50);
34335 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34336 : 0 : _q51 = do_valueize (valueize, _q51);
34337 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34338 : 0 : _q52 = do_valueize (valueize, _q52);
34339 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34340 : 0 : _q53 = do_valueize (valueize, _q53);
34341 : 0 : {
34342 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34343 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_SHL))
34344 : 0 : return true;
34345 : : }
34346 : : }
34347 : : break;
34348 : 0 : case CFN_COND_SHR:
34349 : 0 : if (gimple_call_num_args (_c2) == 4)
34350 : : {
34351 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34352 : 0 : _q50 = do_valueize (valueize, _q50);
34353 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34354 : 0 : _q51 = do_valueize (valueize, _q51);
34355 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34356 : 0 : _q52 = do_valueize (valueize, _q52);
34357 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34358 : 0 : _q53 = do_valueize (valueize, _q53);
34359 : 0 : {
34360 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34361 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_SHR))
34362 : 0 : return true;
34363 : : }
34364 : : }
34365 : : break;
34366 : 0 : case CFN_COND_SUB:
34367 : 0 : if (gimple_call_num_args (_c2) == 4)
34368 : : {
34369 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34370 : 0 : _q50 = do_valueize (valueize, _q50);
34371 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34372 : 0 : _q51 = do_valueize (valueize, _q51);
34373 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34374 : 0 : _q52 = do_valueize (valueize, _q52);
34375 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34376 : 0 : _q53 = do_valueize (valueize, _q53);
34377 : 0 : {
34378 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34379 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_SUB))
34380 : 0 : return true;
34381 : : }
34382 : : }
34383 : : break;
34384 : 0 : case CFN_COND_XOR:
34385 : 0 : if (gimple_call_num_args (_c2) == 4)
34386 : : {
34387 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34388 : 0 : _q50 = do_valueize (valueize, _q50);
34389 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34390 : 0 : _q51 = do_valueize (valueize, _q51);
34391 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34392 : 0 : _q52 = do_valueize (valueize, _q52);
34393 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34394 : 0 : _q53 = do_valueize (valueize, _q53);
34395 : 0 : if (tree_swap_operands_p (_q51, _q52))
34396 : 0 : std::swap (_q51, _q52);
34397 : 0 : {
34398 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34399 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_XOR))
34400 : 0 : return true;
34401 : : }
34402 : : }
34403 : : break;
34404 : 0 : case CFN_COND_COPYSIGN:
34405 : 0 : if (gimple_call_num_args (_c2) == 4)
34406 : : {
34407 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34408 : 0 : _q50 = do_valueize (valueize, _q50);
34409 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34410 : 0 : _q51 = do_valueize (valueize, _q51);
34411 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34412 : 0 : _q52 = do_valueize (valueize, _q52);
34413 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34414 : 0 : _q53 = do_valueize (valueize, _q53);
34415 : 0 : {
34416 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34417 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_COPYSIGN))
34418 : 0 : return true;
34419 : : }
34420 : : }
34421 : : break;
34422 : 0 : case CFN_COND_FMAX:
34423 : 0 : if (gimple_call_num_args (_c2) == 4)
34424 : : {
34425 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34426 : 0 : _q50 = do_valueize (valueize, _q50);
34427 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34428 : 0 : _q51 = do_valueize (valueize, _q51);
34429 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34430 : 0 : _q52 = do_valueize (valueize, _q52);
34431 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34432 : 0 : _q53 = do_valueize (valueize, _q53);
34433 : 0 : if (tree_swap_operands_p (_q51, _q52))
34434 : 0 : std::swap (_q51, _q52);
34435 : 0 : {
34436 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34437 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_FMAX))
34438 : 0 : return true;
34439 : : }
34440 : : }
34441 : : break;
34442 : 0 : case CFN_COND_FMIN:
34443 : 0 : if (gimple_call_num_args (_c2) == 4)
34444 : : {
34445 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34446 : 0 : _q50 = do_valueize (valueize, _q50);
34447 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34448 : 0 : _q51 = do_valueize (valueize, _q51);
34449 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34450 : 0 : _q52 = do_valueize (valueize, _q52);
34451 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34452 : 0 : _q53 = do_valueize (valueize, _q53);
34453 : 0 : if (tree_swap_operands_p (_q51, _q52))
34454 : 0 : std::swap (_q51, _q52);
34455 : 0 : {
34456 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34457 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_FMIN))
34458 : 0 : return true;
34459 : : }
34460 : : }
34461 : : break;
34462 : 0 : case CFN_COND_RDIV:
34463 : 0 : if (gimple_call_num_args (_c2) == 4)
34464 : : {
34465 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
34466 : 0 : _q50 = do_valueize (valueize, _q50);
34467 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
34468 : 0 : _q51 = do_valueize (valueize, _q51);
34469 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
34470 : 0 : _q52 = do_valueize (valueize, _q52);
34471 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
34472 : 0 : _q53 = do_valueize (valueize, _q53);
34473 : 0 : {
34474 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53 };
34475 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_RDIV))
34476 : 0 : return true;
34477 : : }
34478 : : }
34479 : : break;
34480 : : default:;
34481 : : }
34482 : : }
34483 : : break;
34484 : : default:;
34485 : : }
34486 : : }
34487 : : break;
34488 : : }
34489 : : default:;
34490 : : }
34491 : 11796 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
34492 : 1880 : switch (gimple_call_combined_fn (_c1))
34493 : : {
34494 : 104 : case CFN_COND_ADD:
34495 : 104 : if (gimple_call_num_args (_c1) == 4)
34496 : : {
34497 : 104 : tree _q40 = gimple_call_arg (_c1, 0);
34498 : 104 : _q40 = do_valueize (valueize, _q40);
34499 : 104 : tree _q41 = gimple_call_arg (_c1, 1);
34500 : 104 : _q41 = do_valueize (valueize, _q41);
34501 : 104 : tree _q42 = gimple_call_arg (_c1, 2);
34502 : 104 : _q42 = do_valueize (valueize, _q42);
34503 : 104 : tree _q43 = gimple_call_arg (_c1, 3);
34504 : 104 : _q43 = do_valueize (valueize, _q43);
34505 : 104 : if (tree_swap_operands_p (_q41, _q42))
34506 : 18 : std::swap (_q41, _q42);
34507 : 104 : {
34508 : 104 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34509 : 104 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_ADD))
34510 : 0 : return true;
34511 : : }
34512 : : }
34513 : : break;
34514 : 1 : case CFN_COND_AND:
34515 : 1 : if (gimple_call_num_args (_c1) == 4)
34516 : : {
34517 : 1 : tree _q40 = gimple_call_arg (_c1, 0);
34518 : 1 : _q40 = do_valueize (valueize, _q40);
34519 : 1 : tree _q41 = gimple_call_arg (_c1, 1);
34520 : 1 : _q41 = do_valueize (valueize, _q41);
34521 : 1 : tree _q42 = gimple_call_arg (_c1, 2);
34522 : 1 : _q42 = do_valueize (valueize, _q42);
34523 : 1 : tree _q43 = gimple_call_arg (_c1, 3);
34524 : 1 : _q43 = do_valueize (valueize, _q43);
34525 : 1 : if (tree_swap_operands_p (_q41, _q42))
34526 : 0 : std::swap (_q41, _q42);
34527 : 1 : {
34528 : 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34529 : 1 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_AND))
34530 : 0 : return true;
34531 : : }
34532 : : }
34533 : : break;
34534 : 0 : case CFN_COND_DIV:
34535 : 0 : if (gimple_call_num_args (_c1) == 4)
34536 : : {
34537 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34538 : 0 : _q40 = do_valueize (valueize, _q40);
34539 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34540 : 0 : _q41 = do_valueize (valueize, _q41);
34541 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34542 : 0 : _q42 = do_valueize (valueize, _q42);
34543 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34544 : 0 : _q43 = do_valueize (valueize, _q43);
34545 : 0 : {
34546 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34547 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_DIV))
34548 : 0 : return true;
34549 : : }
34550 : : }
34551 : : break;
34552 : 1 : case CFN_COND_IOR:
34553 : 1 : if (gimple_call_num_args (_c1) == 4)
34554 : : {
34555 : 1 : tree _q40 = gimple_call_arg (_c1, 0);
34556 : 1 : _q40 = do_valueize (valueize, _q40);
34557 : 1 : tree _q41 = gimple_call_arg (_c1, 1);
34558 : 1 : _q41 = do_valueize (valueize, _q41);
34559 : 1 : tree _q42 = gimple_call_arg (_c1, 2);
34560 : 1 : _q42 = do_valueize (valueize, _q42);
34561 : 1 : tree _q43 = gimple_call_arg (_c1, 3);
34562 : 1 : _q43 = do_valueize (valueize, _q43);
34563 : 1 : if (tree_swap_operands_p (_q41, _q42))
34564 : 0 : std::swap (_q41, _q42);
34565 : 1 : {
34566 : 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34567 : 1 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_IOR))
34568 : 0 : return true;
34569 : : }
34570 : : }
34571 : : break;
34572 : 0 : case CFN_COND_MAX:
34573 : 0 : if (gimple_call_num_args (_c1) == 4)
34574 : : {
34575 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34576 : 0 : _q40 = do_valueize (valueize, _q40);
34577 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34578 : 0 : _q41 = do_valueize (valueize, _q41);
34579 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34580 : 0 : _q42 = do_valueize (valueize, _q42);
34581 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34582 : 0 : _q43 = do_valueize (valueize, _q43);
34583 : 0 : if (tree_swap_operands_p (_q41, _q42))
34584 : 0 : std::swap (_q41, _q42);
34585 : 0 : {
34586 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34587 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MAX))
34588 : 0 : return true;
34589 : : }
34590 : : }
34591 : : break;
34592 : 0 : case CFN_COND_MIN:
34593 : 0 : if (gimple_call_num_args (_c1) == 4)
34594 : : {
34595 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34596 : 0 : _q40 = do_valueize (valueize, _q40);
34597 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34598 : 0 : _q41 = do_valueize (valueize, _q41);
34599 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34600 : 0 : _q42 = do_valueize (valueize, _q42);
34601 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34602 : 0 : _q43 = do_valueize (valueize, _q43);
34603 : 0 : if (tree_swap_operands_p (_q41, _q42))
34604 : 0 : std::swap (_q41, _q42);
34605 : 0 : {
34606 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34607 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MIN))
34608 : 0 : return true;
34609 : : }
34610 : : }
34611 : : break;
34612 : 0 : case CFN_COND_MOD:
34613 : 0 : if (gimple_call_num_args (_c1) == 4)
34614 : : {
34615 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34616 : 0 : _q40 = do_valueize (valueize, _q40);
34617 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34618 : 0 : _q41 = do_valueize (valueize, _q41);
34619 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34620 : 0 : _q42 = do_valueize (valueize, _q42);
34621 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34622 : 0 : _q43 = do_valueize (valueize, _q43);
34623 : 0 : {
34624 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34625 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MOD))
34626 : 0 : return true;
34627 : : }
34628 : : }
34629 : : break;
34630 : 27 : case CFN_COND_MUL:
34631 : 27 : if (gimple_call_num_args (_c1) == 4)
34632 : : {
34633 : 27 : tree _q40 = gimple_call_arg (_c1, 0);
34634 : 27 : _q40 = do_valueize (valueize, _q40);
34635 : 27 : tree _q41 = gimple_call_arg (_c1, 1);
34636 : 27 : _q41 = do_valueize (valueize, _q41);
34637 : 27 : tree _q42 = gimple_call_arg (_c1, 2);
34638 : 27 : _q42 = do_valueize (valueize, _q42);
34639 : 27 : tree _q43 = gimple_call_arg (_c1, 3);
34640 : 27 : _q43 = do_valueize (valueize, _q43);
34641 : 27 : if (tree_swap_operands_p (_q41, _q42))
34642 : 0 : std::swap (_q41, _q42);
34643 : 27 : {
34644 : 27 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34645 : 27 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_MUL))
34646 : 0 : return true;
34647 : : }
34648 : : }
34649 : : break;
34650 : 0 : case CFN_COND_SHL:
34651 : 0 : if (gimple_call_num_args (_c1) == 4)
34652 : : {
34653 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34654 : 0 : _q40 = do_valueize (valueize, _q40);
34655 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34656 : 0 : _q41 = do_valueize (valueize, _q41);
34657 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34658 : 0 : _q42 = do_valueize (valueize, _q42);
34659 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34660 : 0 : _q43 = do_valueize (valueize, _q43);
34661 : 0 : {
34662 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34663 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_SHL))
34664 : 0 : return true;
34665 : : }
34666 : : }
34667 : : break;
34668 : 0 : case CFN_COND_SHR:
34669 : 0 : if (gimple_call_num_args (_c1) == 4)
34670 : : {
34671 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34672 : 0 : _q40 = do_valueize (valueize, _q40);
34673 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34674 : 0 : _q41 = do_valueize (valueize, _q41);
34675 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34676 : 0 : _q42 = do_valueize (valueize, _q42);
34677 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34678 : 0 : _q43 = do_valueize (valueize, _q43);
34679 : 0 : {
34680 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34681 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_SHR))
34682 : 0 : return true;
34683 : : }
34684 : : }
34685 : : break;
34686 : 189 : case CFN_COND_SUB:
34687 : 189 : if (gimple_call_num_args (_c1) == 4)
34688 : : {
34689 : 189 : tree _q40 = gimple_call_arg (_c1, 0);
34690 : 189 : _q40 = do_valueize (valueize, _q40);
34691 : 189 : tree _q41 = gimple_call_arg (_c1, 1);
34692 : 189 : _q41 = do_valueize (valueize, _q41);
34693 : 189 : tree _q42 = gimple_call_arg (_c1, 2);
34694 : 189 : _q42 = do_valueize (valueize, _q42);
34695 : 189 : tree _q43 = gimple_call_arg (_c1, 3);
34696 : 189 : _q43 = do_valueize (valueize, _q43);
34697 : 189 : {
34698 : 189 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34699 : 189 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_SUB))
34700 : 0 : return true;
34701 : : }
34702 : : }
34703 : : break;
34704 : 1 : case CFN_COND_XOR:
34705 : 1 : if (gimple_call_num_args (_c1) == 4)
34706 : : {
34707 : 1 : tree _q40 = gimple_call_arg (_c1, 0);
34708 : 1 : _q40 = do_valueize (valueize, _q40);
34709 : 1 : tree _q41 = gimple_call_arg (_c1, 1);
34710 : 1 : _q41 = do_valueize (valueize, _q41);
34711 : 1 : tree _q42 = gimple_call_arg (_c1, 2);
34712 : 1 : _q42 = do_valueize (valueize, _q42);
34713 : 1 : tree _q43 = gimple_call_arg (_c1, 3);
34714 : 1 : _q43 = do_valueize (valueize, _q43);
34715 : 1 : if (tree_swap_operands_p (_q41, _q42))
34716 : 0 : std::swap (_q41, _q42);
34717 : 1 : {
34718 : 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34719 : 1 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_XOR))
34720 : 0 : return true;
34721 : : }
34722 : : }
34723 : : break;
34724 : 0 : case CFN_COND_COPYSIGN:
34725 : 0 : if (gimple_call_num_args (_c1) == 4)
34726 : : {
34727 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34728 : 0 : _q40 = do_valueize (valueize, _q40);
34729 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34730 : 0 : _q41 = do_valueize (valueize, _q41);
34731 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34732 : 0 : _q42 = do_valueize (valueize, _q42);
34733 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34734 : 0 : _q43 = do_valueize (valueize, _q43);
34735 : 0 : {
34736 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34737 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_COPYSIGN))
34738 : 0 : return true;
34739 : : }
34740 : : }
34741 : : break;
34742 : 0 : case CFN_COND_FMAX:
34743 : 0 : if (gimple_call_num_args (_c1) == 4)
34744 : : {
34745 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34746 : 0 : _q40 = do_valueize (valueize, _q40);
34747 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34748 : 0 : _q41 = do_valueize (valueize, _q41);
34749 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34750 : 0 : _q42 = do_valueize (valueize, _q42);
34751 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34752 : 0 : _q43 = do_valueize (valueize, _q43);
34753 : 0 : if (tree_swap_operands_p (_q41, _q42))
34754 : 0 : std::swap (_q41, _q42);
34755 : 0 : {
34756 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34757 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_FMAX))
34758 : 0 : return true;
34759 : : }
34760 : : }
34761 : : break;
34762 : 0 : case CFN_COND_FMIN:
34763 : 0 : if (gimple_call_num_args (_c1) == 4)
34764 : : {
34765 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
34766 : 0 : _q40 = do_valueize (valueize, _q40);
34767 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
34768 : 0 : _q41 = do_valueize (valueize, _q41);
34769 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
34770 : 0 : _q42 = do_valueize (valueize, _q42);
34771 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
34772 : 0 : _q43 = do_valueize (valueize, _q43);
34773 : 0 : if (tree_swap_operands_p (_q41, _q42))
34774 : 0 : std::swap (_q41, _q42);
34775 : 0 : {
34776 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34777 : 0 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_FMIN))
34778 : 0 : return true;
34779 : : }
34780 : : }
34781 : : break;
34782 : 76 : case CFN_COND_RDIV:
34783 : 76 : if (gimple_call_num_args (_c1) == 4)
34784 : : {
34785 : 76 : tree _q40 = gimple_call_arg (_c1, 0);
34786 : 76 : _q40 = do_valueize (valueize, _q40);
34787 : 76 : tree _q41 = gimple_call_arg (_c1, 1);
34788 : 76 : _q41 = do_valueize (valueize, _q41);
34789 : 76 : tree _q42 = gimple_call_arg (_c1, 2);
34790 : 76 : _q42 = do_valueize (valueize, _q42);
34791 : 76 : tree _q43 = gimple_call_arg (_c1, 3);
34792 : 76 : _q43 = do_valueize (valueize, _q43);
34793 : 76 : {
34794 : 76 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43 };
34795 : 76 : if (gimple_simplify_627 (res_op, seq, valueize, type, captures, CFN_COND_RDIV))
34796 : 0 : return true;
34797 : : }
34798 : : }
34799 : : break;
34800 : : default:;
34801 : : }
34802 : : }
34803 : : break;
34804 : 172929 : default:;
34805 : : }
34806 : 172929 : switch (TREE_CODE (_p1))
34807 : : {
34808 : 38478 : case SSA_NAME:
34809 : 38478 : if (gimple *_d1 = get_def (valueize, _p1))
34810 : : {
34811 : 32508 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
34812 : 33395 : switch (gimple_assign_rhs_code (_a1))
34813 : : {
34814 : 3297 : case VIEW_CONVERT_EXPR:
34815 : 3297 : {
34816 : 3297 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
34817 : 3297 : if ((TREE_CODE (_q30) == SSA_NAME
34818 : 3297 : || is_gimple_min_invariant (_q30)))
34819 : : {
34820 : 3297 : _q30 = do_valueize (valueize, _q30);
34821 : 3297 : switch (TREE_CODE (_q30))
34822 : : {
34823 : 3297 : case SSA_NAME:
34824 : 3297 : if (gimple *_d2 = get_def (valueize, _q30))
34825 : : {
34826 : 3214 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
34827 : 998 : switch (gimple_call_combined_fn (_c2))
34828 : : {
34829 : 0 : case CFN_COND_FMA:
34830 : 0 : if (gimple_call_num_args (_c2) == 5)
34831 : : {
34832 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
34833 : 0 : _q40 = do_valueize (valueize, _q40);
34834 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
34835 : 0 : _q41 = do_valueize (valueize, _q41);
34836 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
34837 : 0 : _q42 = do_valueize (valueize, _q42);
34838 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
34839 : 0 : _q43 = do_valueize (valueize, _q43);
34840 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
34841 : 0 : _q44 = do_valueize (valueize, _q44);
34842 : 0 : if (tree_swap_operands_p (_q41, _q42))
34843 : 0 : std::swap (_q41, _q42);
34844 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
34845 : : {
34846 : 0 : {
34847 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _p2 };
34848 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FMA))
34849 : 0 : return true;
34850 : : }
34851 : : }
34852 : : }
34853 : : break;
34854 : 0 : case CFN_COND_FMS:
34855 : 0 : if (gimple_call_num_args (_c2) == 5)
34856 : : {
34857 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
34858 : 0 : _q40 = do_valueize (valueize, _q40);
34859 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
34860 : 0 : _q41 = do_valueize (valueize, _q41);
34861 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
34862 : 0 : _q42 = do_valueize (valueize, _q42);
34863 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
34864 : 0 : _q43 = do_valueize (valueize, _q43);
34865 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
34866 : 0 : _q44 = do_valueize (valueize, _q44);
34867 : 0 : if (tree_swap_operands_p (_q41, _q42))
34868 : 0 : std::swap (_q41, _q42);
34869 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
34870 : : {
34871 : 0 : {
34872 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _p2 };
34873 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FMS))
34874 : 0 : return true;
34875 : : }
34876 : : }
34877 : : }
34878 : : break;
34879 : 0 : case CFN_COND_FNMA:
34880 : 0 : if (gimple_call_num_args (_c2) == 5)
34881 : : {
34882 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
34883 : 0 : _q40 = do_valueize (valueize, _q40);
34884 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
34885 : 0 : _q41 = do_valueize (valueize, _q41);
34886 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
34887 : 0 : _q42 = do_valueize (valueize, _q42);
34888 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
34889 : 0 : _q43 = do_valueize (valueize, _q43);
34890 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
34891 : 0 : _q44 = do_valueize (valueize, _q44);
34892 : 0 : if (tree_swap_operands_p (_q41, _q42))
34893 : 0 : std::swap (_q41, _q42);
34894 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
34895 : : {
34896 : 0 : {
34897 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _p2 };
34898 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FNMA))
34899 : 0 : return true;
34900 : : }
34901 : : }
34902 : : }
34903 : : break;
34904 : 0 : case CFN_COND_FNMS:
34905 : 0 : if (gimple_call_num_args (_c2) == 5)
34906 : : {
34907 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
34908 : 0 : _q40 = do_valueize (valueize, _q40);
34909 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
34910 : 0 : _q41 = do_valueize (valueize, _q41);
34911 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
34912 : 0 : _q42 = do_valueize (valueize, _q42);
34913 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
34914 : 0 : _q43 = do_valueize (valueize, _q43);
34915 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
34916 : 0 : _q44 = do_valueize (valueize, _q44);
34917 : 0 : if (tree_swap_operands_p (_q41, _q42))
34918 : 0 : std::swap (_q41, _q42);
34919 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
34920 : : {
34921 : 0 : {
34922 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _p2 };
34923 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FNMS))
34924 : 0 : return true;
34925 : : }
34926 : : }
34927 : : }
34928 : : break;
34929 : : default:;
34930 : : }
34931 : : }
34932 : : break;
34933 : : default:;
34934 : : }
34935 : : }
34936 : : break;
34937 : : }
34938 : : default:;
34939 : : }
34940 : 12949 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
34941 : 2412 : switch (gimple_call_combined_fn (_c1))
34942 : : {
34943 : 0 : case CFN_COND_FMA:
34944 : 0 : if (gimple_call_num_args (_c1) == 5)
34945 : : {
34946 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
34947 : 0 : _q30 = do_valueize (valueize, _q30);
34948 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
34949 : 0 : _q31 = do_valueize (valueize, _q31);
34950 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
34951 : 0 : _q32 = do_valueize (valueize, _q32);
34952 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
34953 : 0 : _q33 = do_valueize (valueize, _q33);
34954 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
34955 : 0 : _q34 = do_valueize (valueize, _q34);
34956 : 0 : if (tree_swap_operands_p (_q31, _q32))
34957 : 0 : std::swap (_q31, _q32);
34958 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34959 : : {
34960 : 0 : {
34961 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _p2 };
34962 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FMA))
34963 : 0 : return true;
34964 : : }
34965 : : }
34966 : : }
34967 : : break;
34968 : 0 : case CFN_COND_FMS:
34969 : 0 : if (gimple_call_num_args (_c1) == 5)
34970 : : {
34971 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
34972 : 0 : _q30 = do_valueize (valueize, _q30);
34973 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
34974 : 0 : _q31 = do_valueize (valueize, _q31);
34975 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
34976 : 0 : _q32 = do_valueize (valueize, _q32);
34977 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
34978 : 0 : _q33 = do_valueize (valueize, _q33);
34979 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
34980 : 0 : _q34 = do_valueize (valueize, _q34);
34981 : 0 : if (tree_swap_operands_p (_q31, _q32))
34982 : 0 : std::swap (_q31, _q32);
34983 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
34984 : : {
34985 : 0 : {
34986 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _p2 };
34987 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FMS))
34988 : 0 : return true;
34989 : : }
34990 : : }
34991 : : }
34992 : : break;
34993 : 0 : case CFN_COND_FNMA:
34994 : 0 : if (gimple_call_num_args (_c1) == 5)
34995 : : {
34996 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
34997 : 0 : _q30 = do_valueize (valueize, _q30);
34998 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
34999 : 0 : _q31 = do_valueize (valueize, _q31);
35000 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35001 : 0 : _q32 = do_valueize (valueize, _q32);
35002 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35003 : 0 : _q33 = do_valueize (valueize, _q33);
35004 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35005 : 0 : _q34 = do_valueize (valueize, _q34);
35006 : 0 : if (tree_swap_operands_p (_q31, _q32))
35007 : 0 : std::swap (_q31, _q32);
35008 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35009 : : {
35010 : 0 : {
35011 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _p2 };
35012 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FNMA))
35013 : 0 : return true;
35014 : : }
35015 : : }
35016 : : }
35017 : : break;
35018 : 0 : case CFN_COND_FNMS:
35019 : 0 : if (gimple_call_num_args (_c1) == 5)
35020 : : {
35021 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35022 : 0 : _q30 = do_valueize (valueize, _q30);
35023 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35024 : 0 : _q31 = do_valueize (valueize, _q31);
35025 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35026 : 0 : _q32 = do_valueize (valueize, _q32);
35027 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35028 : 0 : _q33 = do_valueize (valueize, _q33);
35029 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35030 : 0 : _q34 = do_valueize (valueize, _q34);
35031 : 0 : if (tree_swap_operands_p (_q31, _q32))
35032 : 0 : std::swap (_q31, _q32);
35033 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35034 : : {
35035 : 0 : {
35036 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _p2 };
35037 : 0 : if (gimple_simplify_628 (res_op, seq, valueize, type, captures, CFN_COND_FNMS))
35038 : 0 : return true;
35039 : : }
35040 : : }
35041 : : }
35042 : : break;
35043 : : default:;
35044 : : }
35045 : : }
35046 : : break;
35047 : 172929 : default:;
35048 : : }
35049 : 172929 : switch (TREE_CODE (_p2))
35050 : : {
35051 : 40520 : case SSA_NAME:
35052 : 40520 : if (gimple *_d1 = get_def (valueize, _p2))
35053 : : {
35054 : 35013 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
35055 : 36064 : switch (gimple_assign_rhs_code (_a1))
35056 : : {
35057 : 4919 : case VIEW_CONVERT_EXPR:
35058 : 4919 : {
35059 : 4919 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
35060 : 4919 : if ((TREE_CODE (_q40) == SSA_NAME
35061 : 4919 : || is_gimple_min_invariant (_q40)))
35062 : : {
35063 : 4919 : _q40 = do_valueize (valueize, _q40);
35064 : 4919 : switch (TREE_CODE (_q40))
35065 : : {
35066 : 4919 : case SSA_NAME:
35067 : 4919 : if (gimple *_d2 = get_def (valueize, _q40))
35068 : : {
35069 : 4869 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
35070 : 1217 : switch (gimple_call_combined_fn (_c2))
35071 : : {
35072 : 0 : case CFN_COND_FMA:
35073 : 0 : if (gimple_call_num_args (_c2) == 5)
35074 : : {
35075 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
35076 : 0 : _q50 = do_valueize (valueize, _q50);
35077 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
35078 : 0 : _q51 = do_valueize (valueize, _q51);
35079 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
35080 : 0 : _q52 = do_valueize (valueize, _q52);
35081 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
35082 : 0 : _q53 = do_valueize (valueize, _q53);
35083 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
35084 : 0 : _q54 = do_valueize (valueize, _q54);
35085 : 0 : if (tree_swap_operands_p (_q51, _q52))
35086 : 0 : std::swap (_q51, _q52);
35087 : 0 : {
35088 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54 };
35089 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FMA))
35090 : 0 : return true;
35091 : : }
35092 : : }
35093 : : break;
35094 : 0 : case CFN_COND_FMS:
35095 : 0 : if (gimple_call_num_args (_c2) == 5)
35096 : : {
35097 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
35098 : 0 : _q50 = do_valueize (valueize, _q50);
35099 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
35100 : 0 : _q51 = do_valueize (valueize, _q51);
35101 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
35102 : 0 : _q52 = do_valueize (valueize, _q52);
35103 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
35104 : 0 : _q53 = do_valueize (valueize, _q53);
35105 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
35106 : 0 : _q54 = do_valueize (valueize, _q54);
35107 : 0 : if (tree_swap_operands_p (_q51, _q52))
35108 : 0 : std::swap (_q51, _q52);
35109 : 0 : {
35110 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54 };
35111 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FMS))
35112 : 0 : return true;
35113 : : }
35114 : : }
35115 : : break;
35116 : 0 : case CFN_COND_FNMA:
35117 : 0 : if (gimple_call_num_args (_c2) == 5)
35118 : : {
35119 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
35120 : 0 : _q50 = do_valueize (valueize, _q50);
35121 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
35122 : 0 : _q51 = do_valueize (valueize, _q51);
35123 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
35124 : 0 : _q52 = do_valueize (valueize, _q52);
35125 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
35126 : 0 : _q53 = do_valueize (valueize, _q53);
35127 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
35128 : 0 : _q54 = do_valueize (valueize, _q54);
35129 : 0 : if (tree_swap_operands_p (_q51, _q52))
35130 : 0 : std::swap (_q51, _q52);
35131 : 0 : {
35132 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54 };
35133 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FNMA))
35134 : 0 : return true;
35135 : : }
35136 : : }
35137 : : break;
35138 : 0 : case CFN_COND_FNMS:
35139 : 0 : if (gimple_call_num_args (_c2) == 5)
35140 : : {
35141 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
35142 : 0 : _q50 = do_valueize (valueize, _q50);
35143 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
35144 : 0 : _q51 = do_valueize (valueize, _q51);
35145 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
35146 : 0 : _q52 = do_valueize (valueize, _q52);
35147 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
35148 : 0 : _q53 = do_valueize (valueize, _q53);
35149 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
35150 : 0 : _q54 = do_valueize (valueize, _q54);
35151 : 0 : if (tree_swap_operands_p (_q51, _q52))
35152 : 0 : std::swap (_q51, _q52);
35153 : 0 : {
35154 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54 };
35155 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FNMS))
35156 : 0 : return true;
35157 : : }
35158 : : }
35159 : : break;
35160 : : default:;
35161 : : }
35162 : : }
35163 : : break;
35164 : : default:;
35165 : : }
35166 : : }
35167 : : break;
35168 : : }
35169 : : default:;
35170 : : }
35171 : 11796 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
35172 : 1880 : switch (gimple_call_combined_fn (_c1))
35173 : : {
35174 : 0 : case CFN_COND_FMA:
35175 : 0 : if (gimple_call_num_args (_c1) == 5)
35176 : : {
35177 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
35178 : 0 : _q40 = do_valueize (valueize, _q40);
35179 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
35180 : 0 : _q41 = do_valueize (valueize, _q41);
35181 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
35182 : 0 : _q42 = do_valueize (valueize, _q42);
35183 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
35184 : 0 : _q43 = do_valueize (valueize, _q43);
35185 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
35186 : 0 : _q44 = do_valueize (valueize, _q44);
35187 : 0 : if (tree_swap_operands_p (_q41, _q42))
35188 : 0 : std::swap (_q41, _q42);
35189 : 0 : {
35190 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44 };
35191 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FMA))
35192 : 0 : return true;
35193 : : }
35194 : : }
35195 : : break;
35196 : 0 : case CFN_COND_FMS:
35197 : 0 : if (gimple_call_num_args (_c1) == 5)
35198 : : {
35199 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
35200 : 0 : _q40 = do_valueize (valueize, _q40);
35201 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
35202 : 0 : _q41 = do_valueize (valueize, _q41);
35203 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
35204 : 0 : _q42 = do_valueize (valueize, _q42);
35205 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
35206 : 0 : _q43 = do_valueize (valueize, _q43);
35207 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
35208 : 0 : _q44 = do_valueize (valueize, _q44);
35209 : 0 : if (tree_swap_operands_p (_q41, _q42))
35210 : 0 : std::swap (_q41, _q42);
35211 : 0 : {
35212 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44 };
35213 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FMS))
35214 : 0 : return true;
35215 : : }
35216 : : }
35217 : : break;
35218 : 0 : case CFN_COND_FNMA:
35219 : 0 : if (gimple_call_num_args (_c1) == 5)
35220 : : {
35221 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
35222 : 0 : _q40 = do_valueize (valueize, _q40);
35223 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
35224 : 0 : _q41 = do_valueize (valueize, _q41);
35225 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
35226 : 0 : _q42 = do_valueize (valueize, _q42);
35227 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
35228 : 0 : _q43 = do_valueize (valueize, _q43);
35229 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
35230 : 0 : _q44 = do_valueize (valueize, _q44);
35231 : 0 : if (tree_swap_operands_p (_q41, _q42))
35232 : 0 : std::swap (_q41, _q42);
35233 : 0 : {
35234 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44 };
35235 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FNMA))
35236 : 0 : return true;
35237 : : }
35238 : : }
35239 : : break;
35240 : 0 : case CFN_COND_FNMS:
35241 : 0 : if (gimple_call_num_args (_c1) == 5)
35242 : : {
35243 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
35244 : 0 : _q40 = do_valueize (valueize, _q40);
35245 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
35246 : 0 : _q41 = do_valueize (valueize, _q41);
35247 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
35248 : 0 : _q42 = do_valueize (valueize, _q42);
35249 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
35250 : 0 : _q43 = do_valueize (valueize, _q43);
35251 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
35252 : 0 : _q44 = do_valueize (valueize, _q44);
35253 : 0 : if (tree_swap_operands_p (_q41, _q42))
35254 : 0 : std::swap (_q41, _q42);
35255 : 0 : {
35256 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44 };
35257 : 0 : if (gimple_simplify_629 (res_op, seq, valueize, type, captures, CFN_COND_FNMS))
35258 : 0 : return true;
35259 : : }
35260 : : }
35261 : : break;
35262 : : default:;
35263 : : }
35264 : : }
35265 : : break;
35266 : 172929 : default:;
35267 : : }
35268 : 172929 : switch (TREE_CODE (_p1))
35269 : : {
35270 : 38478 : case SSA_NAME:
35271 : 38478 : if (gimple *_d1 = get_def (valueize, _p1))
35272 : : {
35273 : 32508 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
35274 : 33395 : switch (gimple_assign_rhs_code (_a1))
35275 : : {
35276 : 3297 : case VIEW_CONVERT_EXPR:
35277 : 3297 : {
35278 : 3297 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
35279 : 3297 : if ((TREE_CODE (_q30) == SSA_NAME
35280 : 3297 : || is_gimple_min_invariant (_q30)))
35281 : : {
35282 : 3297 : _q30 = do_valueize (valueize, _q30);
35283 : 3297 : switch (TREE_CODE (_q30))
35284 : : {
35285 : 3297 : case SSA_NAME:
35286 : 3297 : if (gimple *_d2 = get_def (valueize, _q30))
35287 : : {
35288 : 3214 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
35289 : 998 : switch (gimple_call_combined_fn (_c2))
35290 : : {
35291 : 0 : case CFN_COND_LEN_ADD:
35292 : 0 : if (gimple_call_num_args (_c2) == 6)
35293 : : {
35294 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35295 : 0 : _q40 = do_valueize (valueize, _q40);
35296 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35297 : 0 : _q41 = do_valueize (valueize, _q41);
35298 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35299 : 0 : _q42 = do_valueize (valueize, _q42);
35300 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35301 : 0 : _q43 = do_valueize (valueize, _q43);
35302 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35303 : 0 : _q44 = do_valueize (valueize, _q44);
35304 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35305 : 0 : _q45 = do_valueize (valueize, _q45);
35306 : 0 : if (tree_swap_operands_p (_q41, _q42))
35307 : 0 : std::swap (_q41, _q42);
35308 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35309 : : {
35310 : 0 : {
35311 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35312 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_ADD))
35313 : 0 : return true;
35314 : : }
35315 : : }
35316 : : }
35317 : : break;
35318 : 0 : case CFN_COND_LEN_AND:
35319 : 0 : if (gimple_call_num_args (_c2) == 6)
35320 : : {
35321 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35322 : 0 : _q40 = do_valueize (valueize, _q40);
35323 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35324 : 0 : _q41 = do_valueize (valueize, _q41);
35325 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35326 : 0 : _q42 = do_valueize (valueize, _q42);
35327 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35328 : 0 : _q43 = do_valueize (valueize, _q43);
35329 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35330 : 0 : _q44 = do_valueize (valueize, _q44);
35331 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35332 : 0 : _q45 = do_valueize (valueize, _q45);
35333 : 0 : if (tree_swap_operands_p (_q41, _q42))
35334 : 0 : std::swap (_q41, _q42);
35335 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35336 : : {
35337 : 0 : {
35338 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35339 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_AND))
35340 : 0 : return true;
35341 : : }
35342 : : }
35343 : : }
35344 : : break;
35345 : 0 : case CFN_COND_LEN_DIV:
35346 : 0 : if (gimple_call_num_args (_c2) == 6)
35347 : : {
35348 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35349 : 0 : _q40 = do_valueize (valueize, _q40);
35350 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35351 : 0 : _q41 = do_valueize (valueize, _q41);
35352 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35353 : 0 : _q42 = do_valueize (valueize, _q42);
35354 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35355 : 0 : _q43 = do_valueize (valueize, _q43);
35356 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35357 : 0 : _q44 = do_valueize (valueize, _q44);
35358 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35359 : 0 : _q45 = do_valueize (valueize, _q45);
35360 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35361 : : {
35362 : 0 : {
35363 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35364 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_DIV))
35365 : 0 : return true;
35366 : : }
35367 : : }
35368 : : }
35369 : : break;
35370 : 0 : case CFN_COND_LEN_IOR:
35371 : 0 : if (gimple_call_num_args (_c2) == 6)
35372 : : {
35373 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35374 : 0 : _q40 = do_valueize (valueize, _q40);
35375 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35376 : 0 : _q41 = do_valueize (valueize, _q41);
35377 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35378 : 0 : _q42 = do_valueize (valueize, _q42);
35379 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35380 : 0 : _q43 = do_valueize (valueize, _q43);
35381 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35382 : 0 : _q44 = do_valueize (valueize, _q44);
35383 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35384 : 0 : _q45 = do_valueize (valueize, _q45);
35385 : 0 : if (tree_swap_operands_p (_q41, _q42))
35386 : 0 : std::swap (_q41, _q42);
35387 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35388 : : {
35389 : 0 : {
35390 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35391 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_IOR))
35392 : 0 : return true;
35393 : : }
35394 : : }
35395 : : }
35396 : : break;
35397 : 0 : case CFN_COND_LEN_MAX:
35398 : 0 : if (gimple_call_num_args (_c2) == 6)
35399 : : {
35400 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35401 : 0 : _q40 = do_valueize (valueize, _q40);
35402 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35403 : 0 : _q41 = do_valueize (valueize, _q41);
35404 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35405 : 0 : _q42 = do_valueize (valueize, _q42);
35406 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35407 : 0 : _q43 = do_valueize (valueize, _q43);
35408 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35409 : 0 : _q44 = do_valueize (valueize, _q44);
35410 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35411 : 0 : _q45 = do_valueize (valueize, _q45);
35412 : 0 : if (tree_swap_operands_p (_q41, _q42))
35413 : 0 : std::swap (_q41, _q42);
35414 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35415 : : {
35416 : 0 : {
35417 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35418 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MAX))
35419 : 0 : return true;
35420 : : }
35421 : : }
35422 : : }
35423 : : break;
35424 : 0 : case CFN_COND_LEN_MIN:
35425 : 0 : if (gimple_call_num_args (_c2) == 6)
35426 : : {
35427 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35428 : 0 : _q40 = do_valueize (valueize, _q40);
35429 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35430 : 0 : _q41 = do_valueize (valueize, _q41);
35431 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35432 : 0 : _q42 = do_valueize (valueize, _q42);
35433 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35434 : 0 : _q43 = do_valueize (valueize, _q43);
35435 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35436 : 0 : _q44 = do_valueize (valueize, _q44);
35437 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35438 : 0 : _q45 = do_valueize (valueize, _q45);
35439 : 0 : if (tree_swap_operands_p (_q41, _q42))
35440 : 0 : std::swap (_q41, _q42);
35441 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35442 : : {
35443 : 0 : {
35444 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35445 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MIN))
35446 : 0 : return true;
35447 : : }
35448 : : }
35449 : : }
35450 : : break;
35451 : 0 : case CFN_COND_LEN_MOD:
35452 : 0 : if (gimple_call_num_args (_c2) == 6)
35453 : : {
35454 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35455 : 0 : _q40 = do_valueize (valueize, _q40);
35456 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35457 : 0 : _q41 = do_valueize (valueize, _q41);
35458 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35459 : 0 : _q42 = do_valueize (valueize, _q42);
35460 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35461 : 0 : _q43 = do_valueize (valueize, _q43);
35462 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35463 : 0 : _q44 = do_valueize (valueize, _q44);
35464 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35465 : 0 : _q45 = do_valueize (valueize, _q45);
35466 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35467 : : {
35468 : 0 : {
35469 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35470 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MOD))
35471 : 0 : return true;
35472 : : }
35473 : : }
35474 : : }
35475 : : break;
35476 : 0 : case CFN_COND_LEN_MUL:
35477 : 0 : if (gimple_call_num_args (_c2) == 6)
35478 : : {
35479 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35480 : 0 : _q40 = do_valueize (valueize, _q40);
35481 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35482 : 0 : _q41 = do_valueize (valueize, _q41);
35483 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35484 : 0 : _q42 = do_valueize (valueize, _q42);
35485 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35486 : 0 : _q43 = do_valueize (valueize, _q43);
35487 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35488 : 0 : _q44 = do_valueize (valueize, _q44);
35489 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35490 : 0 : _q45 = do_valueize (valueize, _q45);
35491 : 0 : if (tree_swap_operands_p (_q41, _q42))
35492 : 0 : std::swap (_q41, _q42);
35493 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35494 : : {
35495 : 0 : {
35496 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35497 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MUL))
35498 : 0 : return true;
35499 : : }
35500 : : }
35501 : : }
35502 : : break;
35503 : 0 : case CFN_COND_LEN_SHL:
35504 : 0 : if (gimple_call_num_args (_c2) == 6)
35505 : : {
35506 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35507 : 0 : _q40 = do_valueize (valueize, _q40);
35508 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35509 : 0 : _q41 = do_valueize (valueize, _q41);
35510 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35511 : 0 : _q42 = do_valueize (valueize, _q42);
35512 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35513 : 0 : _q43 = do_valueize (valueize, _q43);
35514 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35515 : 0 : _q44 = do_valueize (valueize, _q44);
35516 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35517 : 0 : _q45 = do_valueize (valueize, _q45);
35518 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35519 : : {
35520 : 0 : {
35521 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35522 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHL))
35523 : 0 : return true;
35524 : : }
35525 : : }
35526 : : }
35527 : : break;
35528 : 0 : case CFN_COND_LEN_SHR:
35529 : 0 : if (gimple_call_num_args (_c2) == 6)
35530 : : {
35531 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35532 : 0 : _q40 = do_valueize (valueize, _q40);
35533 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35534 : 0 : _q41 = do_valueize (valueize, _q41);
35535 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35536 : 0 : _q42 = do_valueize (valueize, _q42);
35537 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35538 : 0 : _q43 = do_valueize (valueize, _q43);
35539 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35540 : 0 : _q44 = do_valueize (valueize, _q44);
35541 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35542 : 0 : _q45 = do_valueize (valueize, _q45);
35543 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35544 : : {
35545 : 0 : {
35546 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35547 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHR))
35548 : 0 : return true;
35549 : : }
35550 : : }
35551 : : }
35552 : : break;
35553 : 0 : case CFN_COND_LEN_SUB:
35554 : 0 : if (gimple_call_num_args (_c2) == 6)
35555 : : {
35556 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35557 : 0 : _q40 = do_valueize (valueize, _q40);
35558 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35559 : 0 : _q41 = do_valueize (valueize, _q41);
35560 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35561 : 0 : _q42 = do_valueize (valueize, _q42);
35562 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35563 : 0 : _q43 = do_valueize (valueize, _q43);
35564 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35565 : 0 : _q44 = do_valueize (valueize, _q44);
35566 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35567 : 0 : _q45 = do_valueize (valueize, _q45);
35568 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35569 : : {
35570 : 0 : {
35571 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35572 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SUB))
35573 : 0 : return true;
35574 : : }
35575 : : }
35576 : : }
35577 : : break;
35578 : 0 : case CFN_COND_LEN_XOR:
35579 : 0 : if (gimple_call_num_args (_c2) == 6)
35580 : : {
35581 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35582 : 0 : _q40 = do_valueize (valueize, _q40);
35583 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35584 : 0 : _q41 = do_valueize (valueize, _q41);
35585 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35586 : 0 : _q42 = do_valueize (valueize, _q42);
35587 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35588 : 0 : _q43 = do_valueize (valueize, _q43);
35589 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35590 : 0 : _q44 = do_valueize (valueize, _q44);
35591 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35592 : 0 : _q45 = do_valueize (valueize, _q45);
35593 : 0 : if (tree_swap_operands_p (_q41, _q42))
35594 : 0 : std::swap (_q41, _q42);
35595 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35596 : : {
35597 : 0 : {
35598 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35599 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_XOR))
35600 : 0 : return true;
35601 : : }
35602 : : }
35603 : : }
35604 : : break;
35605 : 0 : case CFN_COND_LEN_FMAX:
35606 : 0 : if (gimple_call_num_args (_c2) == 6)
35607 : : {
35608 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35609 : 0 : _q40 = do_valueize (valueize, _q40);
35610 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35611 : 0 : _q41 = do_valueize (valueize, _q41);
35612 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35613 : 0 : _q42 = do_valueize (valueize, _q42);
35614 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35615 : 0 : _q43 = do_valueize (valueize, _q43);
35616 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35617 : 0 : _q44 = do_valueize (valueize, _q44);
35618 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35619 : 0 : _q45 = do_valueize (valueize, _q45);
35620 : 0 : if (tree_swap_operands_p (_q41, _q42))
35621 : 0 : std::swap (_q41, _q42);
35622 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35623 : : {
35624 : 0 : {
35625 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35626 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMAX))
35627 : 0 : return true;
35628 : : }
35629 : : }
35630 : : }
35631 : : break;
35632 : 0 : case CFN_COND_LEN_FMIN:
35633 : 0 : if (gimple_call_num_args (_c2) == 6)
35634 : : {
35635 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35636 : 0 : _q40 = do_valueize (valueize, _q40);
35637 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35638 : 0 : _q41 = do_valueize (valueize, _q41);
35639 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35640 : 0 : _q42 = do_valueize (valueize, _q42);
35641 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35642 : 0 : _q43 = do_valueize (valueize, _q43);
35643 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35644 : 0 : _q44 = do_valueize (valueize, _q44);
35645 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35646 : 0 : _q45 = do_valueize (valueize, _q45);
35647 : 0 : if (tree_swap_operands_p (_q41, _q42))
35648 : 0 : std::swap (_q41, _q42);
35649 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35650 : : {
35651 : 0 : {
35652 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35653 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMIN))
35654 : 0 : return true;
35655 : : }
35656 : : }
35657 : : }
35658 : : break;
35659 : 0 : case CFN_COND_LEN_RDIV:
35660 : 0 : if (gimple_call_num_args (_c2) == 6)
35661 : : {
35662 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35663 : 0 : _q40 = do_valueize (valueize, _q40);
35664 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35665 : 0 : _q41 = do_valueize (valueize, _q41);
35666 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35667 : 0 : _q42 = do_valueize (valueize, _q42);
35668 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35669 : 0 : _q43 = do_valueize (valueize, _q43);
35670 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35671 : 0 : _q44 = do_valueize (valueize, _q44);
35672 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35673 : 0 : _q45 = do_valueize (valueize, _q45);
35674 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35675 : : {
35676 : 0 : {
35677 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35678 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_RDIV))
35679 : 0 : return true;
35680 : : }
35681 : : }
35682 : : }
35683 : : break;
35684 : 0 : case CFN_COND_LEN_COPYSIGN:
35685 : 0 : if (gimple_call_num_args (_c2) == 6)
35686 : : {
35687 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
35688 : 0 : _q40 = do_valueize (valueize, _q40);
35689 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
35690 : 0 : _q41 = do_valueize (valueize, _q41);
35691 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
35692 : 0 : _q42 = do_valueize (valueize, _q42);
35693 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
35694 : 0 : _q43 = do_valueize (valueize, _q43);
35695 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
35696 : 0 : _q44 = do_valueize (valueize, _q44);
35697 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
35698 : 0 : _q45 = do_valueize (valueize, _q45);
35699 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35700 : : {
35701 : 0 : {
35702 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _p2 };
35703 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_COPYSIGN))
35704 : 0 : return true;
35705 : : }
35706 : : }
35707 : : }
35708 : : break;
35709 : : default:;
35710 : : }
35711 : : }
35712 : : break;
35713 : : default:;
35714 : : }
35715 : : }
35716 : : break;
35717 : : }
35718 : : default:;
35719 : : }
35720 : 12949 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
35721 : 2412 : switch (gimple_call_combined_fn (_c1))
35722 : : {
35723 : 0 : case CFN_COND_LEN_ADD:
35724 : 0 : if (gimple_call_num_args (_c1) == 6)
35725 : : {
35726 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35727 : 0 : _q30 = do_valueize (valueize, _q30);
35728 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35729 : 0 : _q31 = do_valueize (valueize, _q31);
35730 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35731 : 0 : _q32 = do_valueize (valueize, _q32);
35732 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35733 : 0 : _q33 = do_valueize (valueize, _q33);
35734 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35735 : 0 : _q34 = do_valueize (valueize, _q34);
35736 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35737 : 0 : _q35 = do_valueize (valueize, _q35);
35738 : 0 : if (tree_swap_operands_p (_q31, _q32))
35739 : 0 : std::swap (_q31, _q32);
35740 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35741 : : {
35742 : 0 : {
35743 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35744 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_ADD))
35745 : 0 : return true;
35746 : : }
35747 : : }
35748 : : }
35749 : : break;
35750 : 0 : case CFN_COND_LEN_AND:
35751 : 0 : if (gimple_call_num_args (_c1) == 6)
35752 : : {
35753 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35754 : 0 : _q30 = do_valueize (valueize, _q30);
35755 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35756 : 0 : _q31 = do_valueize (valueize, _q31);
35757 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35758 : 0 : _q32 = do_valueize (valueize, _q32);
35759 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35760 : 0 : _q33 = do_valueize (valueize, _q33);
35761 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35762 : 0 : _q34 = do_valueize (valueize, _q34);
35763 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35764 : 0 : _q35 = do_valueize (valueize, _q35);
35765 : 0 : if (tree_swap_operands_p (_q31, _q32))
35766 : 0 : std::swap (_q31, _q32);
35767 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35768 : : {
35769 : 0 : {
35770 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35771 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_AND))
35772 : 0 : return true;
35773 : : }
35774 : : }
35775 : : }
35776 : : break;
35777 : 0 : case CFN_COND_LEN_DIV:
35778 : 0 : if (gimple_call_num_args (_c1) == 6)
35779 : : {
35780 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35781 : 0 : _q30 = do_valueize (valueize, _q30);
35782 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35783 : 0 : _q31 = do_valueize (valueize, _q31);
35784 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35785 : 0 : _q32 = do_valueize (valueize, _q32);
35786 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35787 : 0 : _q33 = do_valueize (valueize, _q33);
35788 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35789 : 0 : _q34 = do_valueize (valueize, _q34);
35790 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35791 : 0 : _q35 = do_valueize (valueize, _q35);
35792 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35793 : : {
35794 : 0 : {
35795 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35796 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_DIV))
35797 : 0 : return true;
35798 : : }
35799 : : }
35800 : : }
35801 : : break;
35802 : 0 : case CFN_COND_LEN_IOR:
35803 : 0 : if (gimple_call_num_args (_c1) == 6)
35804 : : {
35805 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35806 : 0 : _q30 = do_valueize (valueize, _q30);
35807 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35808 : 0 : _q31 = do_valueize (valueize, _q31);
35809 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35810 : 0 : _q32 = do_valueize (valueize, _q32);
35811 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35812 : 0 : _q33 = do_valueize (valueize, _q33);
35813 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35814 : 0 : _q34 = do_valueize (valueize, _q34);
35815 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35816 : 0 : _q35 = do_valueize (valueize, _q35);
35817 : 0 : if (tree_swap_operands_p (_q31, _q32))
35818 : 0 : std::swap (_q31, _q32);
35819 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35820 : : {
35821 : 0 : {
35822 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35823 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_IOR))
35824 : 0 : return true;
35825 : : }
35826 : : }
35827 : : }
35828 : : break;
35829 : 0 : case CFN_COND_LEN_MAX:
35830 : 0 : if (gimple_call_num_args (_c1) == 6)
35831 : : {
35832 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35833 : 0 : _q30 = do_valueize (valueize, _q30);
35834 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35835 : 0 : _q31 = do_valueize (valueize, _q31);
35836 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35837 : 0 : _q32 = do_valueize (valueize, _q32);
35838 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35839 : 0 : _q33 = do_valueize (valueize, _q33);
35840 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35841 : 0 : _q34 = do_valueize (valueize, _q34);
35842 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35843 : 0 : _q35 = do_valueize (valueize, _q35);
35844 : 0 : if (tree_swap_operands_p (_q31, _q32))
35845 : 0 : std::swap (_q31, _q32);
35846 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35847 : : {
35848 : 0 : {
35849 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35850 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MAX))
35851 : 0 : return true;
35852 : : }
35853 : : }
35854 : : }
35855 : : break;
35856 : 0 : case CFN_COND_LEN_MIN:
35857 : 0 : if (gimple_call_num_args (_c1) == 6)
35858 : : {
35859 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35860 : 0 : _q30 = do_valueize (valueize, _q30);
35861 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35862 : 0 : _q31 = do_valueize (valueize, _q31);
35863 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35864 : 0 : _q32 = do_valueize (valueize, _q32);
35865 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35866 : 0 : _q33 = do_valueize (valueize, _q33);
35867 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35868 : 0 : _q34 = do_valueize (valueize, _q34);
35869 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35870 : 0 : _q35 = do_valueize (valueize, _q35);
35871 : 0 : if (tree_swap_operands_p (_q31, _q32))
35872 : 0 : std::swap (_q31, _q32);
35873 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35874 : : {
35875 : 0 : {
35876 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35877 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MIN))
35878 : 0 : return true;
35879 : : }
35880 : : }
35881 : : }
35882 : : break;
35883 : 0 : case CFN_COND_LEN_MOD:
35884 : 0 : if (gimple_call_num_args (_c1) == 6)
35885 : : {
35886 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35887 : 0 : _q30 = do_valueize (valueize, _q30);
35888 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35889 : 0 : _q31 = do_valueize (valueize, _q31);
35890 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35891 : 0 : _q32 = do_valueize (valueize, _q32);
35892 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35893 : 0 : _q33 = do_valueize (valueize, _q33);
35894 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35895 : 0 : _q34 = do_valueize (valueize, _q34);
35896 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35897 : 0 : _q35 = do_valueize (valueize, _q35);
35898 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35899 : : {
35900 : 0 : {
35901 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35902 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MOD))
35903 : 0 : return true;
35904 : : }
35905 : : }
35906 : : }
35907 : : break;
35908 : 0 : case CFN_COND_LEN_MUL:
35909 : 0 : if (gimple_call_num_args (_c1) == 6)
35910 : : {
35911 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35912 : 0 : _q30 = do_valueize (valueize, _q30);
35913 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35914 : 0 : _q31 = do_valueize (valueize, _q31);
35915 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35916 : 0 : _q32 = do_valueize (valueize, _q32);
35917 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35918 : 0 : _q33 = do_valueize (valueize, _q33);
35919 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35920 : 0 : _q34 = do_valueize (valueize, _q34);
35921 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35922 : 0 : _q35 = do_valueize (valueize, _q35);
35923 : 0 : if (tree_swap_operands_p (_q31, _q32))
35924 : 0 : std::swap (_q31, _q32);
35925 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35926 : : {
35927 : 0 : {
35928 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35929 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MUL))
35930 : 0 : return true;
35931 : : }
35932 : : }
35933 : : }
35934 : : break;
35935 : 0 : case CFN_COND_LEN_SHL:
35936 : 0 : if (gimple_call_num_args (_c1) == 6)
35937 : : {
35938 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35939 : 0 : _q30 = do_valueize (valueize, _q30);
35940 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35941 : 0 : _q31 = do_valueize (valueize, _q31);
35942 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35943 : 0 : _q32 = do_valueize (valueize, _q32);
35944 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35945 : 0 : _q33 = do_valueize (valueize, _q33);
35946 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35947 : 0 : _q34 = do_valueize (valueize, _q34);
35948 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35949 : 0 : _q35 = do_valueize (valueize, _q35);
35950 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35951 : : {
35952 : 0 : {
35953 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35954 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHL))
35955 : 0 : return true;
35956 : : }
35957 : : }
35958 : : }
35959 : : break;
35960 : 0 : case CFN_COND_LEN_SHR:
35961 : 0 : if (gimple_call_num_args (_c1) == 6)
35962 : : {
35963 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35964 : 0 : _q30 = do_valueize (valueize, _q30);
35965 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35966 : 0 : _q31 = do_valueize (valueize, _q31);
35967 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35968 : 0 : _q32 = do_valueize (valueize, _q32);
35969 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35970 : 0 : _q33 = do_valueize (valueize, _q33);
35971 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35972 : 0 : _q34 = do_valueize (valueize, _q34);
35973 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35974 : 0 : _q35 = do_valueize (valueize, _q35);
35975 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
35976 : : {
35977 : 0 : {
35978 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
35979 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHR))
35980 : 0 : return true;
35981 : : }
35982 : : }
35983 : : }
35984 : : break;
35985 : 0 : case CFN_COND_LEN_SUB:
35986 : 0 : if (gimple_call_num_args (_c1) == 6)
35987 : : {
35988 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
35989 : 0 : _q30 = do_valueize (valueize, _q30);
35990 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
35991 : 0 : _q31 = do_valueize (valueize, _q31);
35992 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
35993 : 0 : _q32 = do_valueize (valueize, _q32);
35994 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
35995 : 0 : _q33 = do_valueize (valueize, _q33);
35996 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
35997 : 0 : _q34 = do_valueize (valueize, _q34);
35998 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
35999 : 0 : _q35 = do_valueize (valueize, _q35);
36000 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
36001 : : {
36002 : 0 : {
36003 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
36004 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SUB))
36005 : 0 : return true;
36006 : : }
36007 : : }
36008 : : }
36009 : : break;
36010 : 0 : case CFN_COND_LEN_XOR:
36011 : 0 : if (gimple_call_num_args (_c1) == 6)
36012 : : {
36013 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
36014 : 0 : _q30 = do_valueize (valueize, _q30);
36015 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
36016 : 0 : _q31 = do_valueize (valueize, _q31);
36017 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
36018 : 0 : _q32 = do_valueize (valueize, _q32);
36019 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
36020 : 0 : _q33 = do_valueize (valueize, _q33);
36021 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
36022 : 0 : _q34 = do_valueize (valueize, _q34);
36023 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
36024 : 0 : _q35 = do_valueize (valueize, _q35);
36025 : 0 : if (tree_swap_operands_p (_q31, _q32))
36026 : 0 : std::swap (_q31, _q32);
36027 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
36028 : : {
36029 : 0 : {
36030 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
36031 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_XOR))
36032 : 0 : return true;
36033 : : }
36034 : : }
36035 : : }
36036 : : break;
36037 : 0 : case CFN_COND_LEN_FMAX:
36038 : 0 : if (gimple_call_num_args (_c1) == 6)
36039 : : {
36040 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
36041 : 0 : _q30 = do_valueize (valueize, _q30);
36042 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
36043 : 0 : _q31 = do_valueize (valueize, _q31);
36044 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
36045 : 0 : _q32 = do_valueize (valueize, _q32);
36046 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
36047 : 0 : _q33 = do_valueize (valueize, _q33);
36048 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
36049 : 0 : _q34 = do_valueize (valueize, _q34);
36050 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
36051 : 0 : _q35 = do_valueize (valueize, _q35);
36052 : 0 : if (tree_swap_operands_p (_q31, _q32))
36053 : 0 : std::swap (_q31, _q32);
36054 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
36055 : : {
36056 : 0 : {
36057 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
36058 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMAX))
36059 : 0 : return true;
36060 : : }
36061 : : }
36062 : : }
36063 : : break;
36064 : 0 : case CFN_COND_LEN_FMIN:
36065 : 0 : if (gimple_call_num_args (_c1) == 6)
36066 : : {
36067 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
36068 : 0 : _q30 = do_valueize (valueize, _q30);
36069 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
36070 : 0 : _q31 = do_valueize (valueize, _q31);
36071 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
36072 : 0 : _q32 = do_valueize (valueize, _q32);
36073 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
36074 : 0 : _q33 = do_valueize (valueize, _q33);
36075 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
36076 : 0 : _q34 = do_valueize (valueize, _q34);
36077 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
36078 : 0 : _q35 = do_valueize (valueize, _q35);
36079 : 0 : if (tree_swap_operands_p (_q31, _q32))
36080 : 0 : std::swap (_q31, _q32);
36081 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
36082 : : {
36083 : 0 : {
36084 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
36085 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMIN))
36086 : 0 : return true;
36087 : : }
36088 : : }
36089 : : }
36090 : : break;
36091 : 0 : case CFN_COND_LEN_RDIV:
36092 : 0 : if (gimple_call_num_args (_c1) == 6)
36093 : : {
36094 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
36095 : 0 : _q30 = do_valueize (valueize, _q30);
36096 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
36097 : 0 : _q31 = do_valueize (valueize, _q31);
36098 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
36099 : 0 : _q32 = do_valueize (valueize, _q32);
36100 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
36101 : 0 : _q33 = do_valueize (valueize, _q33);
36102 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
36103 : 0 : _q34 = do_valueize (valueize, _q34);
36104 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
36105 : 0 : _q35 = do_valueize (valueize, _q35);
36106 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
36107 : : {
36108 : 0 : {
36109 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
36110 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_RDIV))
36111 : 0 : return true;
36112 : : }
36113 : : }
36114 : : }
36115 : : break;
36116 : 0 : case CFN_COND_LEN_COPYSIGN:
36117 : 0 : if (gimple_call_num_args (_c1) == 6)
36118 : : {
36119 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
36120 : 0 : _q30 = do_valueize (valueize, _q30);
36121 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
36122 : 0 : _q31 = do_valueize (valueize, _q31);
36123 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
36124 : 0 : _q32 = do_valueize (valueize, _q32);
36125 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
36126 : 0 : _q33 = do_valueize (valueize, _q33);
36127 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
36128 : 0 : _q34 = do_valueize (valueize, _q34);
36129 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
36130 : 0 : _q35 = do_valueize (valueize, _q35);
36131 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
36132 : : {
36133 : 0 : {
36134 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _p2 };
36135 : 0 : if (gimple_simplify_630 (res_op, seq, valueize, type, captures, CFN_COND_LEN_COPYSIGN))
36136 : 0 : return true;
36137 : : }
36138 : : }
36139 : : }
36140 : : break;
36141 : : default:;
36142 : : }
36143 : : }
36144 : : break;
36145 : 172929 : default:;
36146 : : }
36147 : 172929 : switch (TREE_CODE (_p2))
36148 : : {
36149 : 40520 : case SSA_NAME:
36150 : 40520 : if (gimple *_d1 = get_def (valueize, _p2))
36151 : : {
36152 : 35013 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
36153 : 36064 : switch (gimple_assign_rhs_code (_a1))
36154 : : {
36155 : 4919 : case VIEW_CONVERT_EXPR:
36156 : 4919 : {
36157 : 4919 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
36158 : 4919 : if ((TREE_CODE (_q40) == SSA_NAME
36159 : 4919 : || is_gimple_min_invariant (_q40)))
36160 : : {
36161 : 4919 : _q40 = do_valueize (valueize, _q40);
36162 : 4919 : switch (TREE_CODE (_q40))
36163 : : {
36164 : 4919 : case SSA_NAME:
36165 : 4919 : if (gimple *_d2 = get_def (valueize, _q40))
36166 : : {
36167 : 4869 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
36168 : 1217 : switch (gimple_call_combined_fn (_c2))
36169 : : {
36170 : 0 : case CFN_COND_LEN_ADD:
36171 : 0 : if (gimple_call_num_args (_c2) == 6)
36172 : : {
36173 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36174 : 0 : _q50 = do_valueize (valueize, _q50);
36175 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36176 : 0 : _q51 = do_valueize (valueize, _q51);
36177 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36178 : 0 : _q52 = do_valueize (valueize, _q52);
36179 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36180 : 0 : _q53 = do_valueize (valueize, _q53);
36181 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36182 : 0 : _q54 = do_valueize (valueize, _q54);
36183 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36184 : 0 : _q55 = do_valueize (valueize, _q55);
36185 : 0 : if (tree_swap_operands_p (_q51, _q52))
36186 : 0 : std::swap (_q51, _q52);
36187 : 0 : {
36188 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36189 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_ADD))
36190 : 0 : return true;
36191 : : }
36192 : : }
36193 : : break;
36194 : 0 : case CFN_COND_LEN_AND:
36195 : 0 : if (gimple_call_num_args (_c2) == 6)
36196 : : {
36197 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36198 : 0 : _q50 = do_valueize (valueize, _q50);
36199 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36200 : 0 : _q51 = do_valueize (valueize, _q51);
36201 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36202 : 0 : _q52 = do_valueize (valueize, _q52);
36203 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36204 : 0 : _q53 = do_valueize (valueize, _q53);
36205 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36206 : 0 : _q54 = do_valueize (valueize, _q54);
36207 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36208 : 0 : _q55 = do_valueize (valueize, _q55);
36209 : 0 : if (tree_swap_operands_p (_q51, _q52))
36210 : 0 : std::swap (_q51, _q52);
36211 : 0 : {
36212 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36213 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_AND))
36214 : 0 : return true;
36215 : : }
36216 : : }
36217 : : break;
36218 : 0 : case CFN_COND_LEN_DIV:
36219 : 0 : if (gimple_call_num_args (_c2) == 6)
36220 : : {
36221 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36222 : 0 : _q50 = do_valueize (valueize, _q50);
36223 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36224 : 0 : _q51 = do_valueize (valueize, _q51);
36225 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36226 : 0 : _q52 = do_valueize (valueize, _q52);
36227 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36228 : 0 : _q53 = do_valueize (valueize, _q53);
36229 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36230 : 0 : _q54 = do_valueize (valueize, _q54);
36231 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36232 : 0 : _q55 = do_valueize (valueize, _q55);
36233 : 0 : {
36234 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36235 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_DIV))
36236 : 0 : return true;
36237 : : }
36238 : : }
36239 : : break;
36240 : 0 : case CFN_COND_LEN_IOR:
36241 : 0 : if (gimple_call_num_args (_c2) == 6)
36242 : : {
36243 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36244 : 0 : _q50 = do_valueize (valueize, _q50);
36245 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36246 : 0 : _q51 = do_valueize (valueize, _q51);
36247 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36248 : 0 : _q52 = do_valueize (valueize, _q52);
36249 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36250 : 0 : _q53 = do_valueize (valueize, _q53);
36251 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36252 : 0 : _q54 = do_valueize (valueize, _q54);
36253 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36254 : 0 : _q55 = do_valueize (valueize, _q55);
36255 : 0 : if (tree_swap_operands_p (_q51, _q52))
36256 : 0 : std::swap (_q51, _q52);
36257 : 0 : {
36258 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36259 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_IOR))
36260 : 0 : return true;
36261 : : }
36262 : : }
36263 : : break;
36264 : 0 : case CFN_COND_LEN_MAX:
36265 : 0 : if (gimple_call_num_args (_c2) == 6)
36266 : : {
36267 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36268 : 0 : _q50 = do_valueize (valueize, _q50);
36269 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36270 : 0 : _q51 = do_valueize (valueize, _q51);
36271 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36272 : 0 : _q52 = do_valueize (valueize, _q52);
36273 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36274 : 0 : _q53 = do_valueize (valueize, _q53);
36275 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36276 : 0 : _q54 = do_valueize (valueize, _q54);
36277 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36278 : 0 : _q55 = do_valueize (valueize, _q55);
36279 : 0 : if (tree_swap_operands_p (_q51, _q52))
36280 : 0 : std::swap (_q51, _q52);
36281 : 0 : {
36282 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36283 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MAX))
36284 : 0 : return true;
36285 : : }
36286 : : }
36287 : : break;
36288 : 0 : case CFN_COND_LEN_MIN:
36289 : 0 : if (gimple_call_num_args (_c2) == 6)
36290 : : {
36291 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36292 : 0 : _q50 = do_valueize (valueize, _q50);
36293 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36294 : 0 : _q51 = do_valueize (valueize, _q51);
36295 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36296 : 0 : _q52 = do_valueize (valueize, _q52);
36297 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36298 : 0 : _q53 = do_valueize (valueize, _q53);
36299 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36300 : 0 : _q54 = do_valueize (valueize, _q54);
36301 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36302 : 0 : _q55 = do_valueize (valueize, _q55);
36303 : 0 : if (tree_swap_operands_p (_q51, _q52))
36304 : 0 : std::swap (_q51, _q52);
36305 : 0 : {
36306 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36307 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MIN))
36308 : 0 : return true;
36309 : : }
36310 : : }
36311 : : break;
36312 : 0 : case CFN_COND_LEN_MOD:
36313 : 0 : if (gimple_call_num_args (_c2) == 6)
36314 : : {
36315 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36316 : 0 : _q50 = do_valueize (valueize, _q50);
36317 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36318 : 0 : _q51 = do_valueize (valueize, _q51);
36319 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36320 : 0 : _q52 = do_valueize (valueize, _q52);
36321 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36322 : 0 : _q53 = do_valueize (valueize, _q53);
36323 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36324 : 0 : _q54 = do_valueize (valueize, _q54);
36325 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36326 : 0 : _q55 = do_valueize (valueize, _q55);
36327 : 0 : {
36328 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36329 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MOD))
36330 : 0 : return true;
36331 : : }
36332 : : }
36333 : : break;
36334 : 0 : case CFN_COND_LEN_MUL:
36335 : 0 : if (gimple_call_num_args (_c2) == 6)
36336 : : {
36337 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36338 : 0 : _q50 = do_valueize (valueize, _q50);
36339 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36340 : 0 : _q51 = do_valueize (valueize, _q51);
36341 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36342 : 0 : _q52 = do_valueize (valueize, _q52);
36343 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36344 : 0 : _q53 = do_valueize (valueize, _q53);
36345 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36346 : 0 : _q54 = do_valueize (valueize, _q54);
36347 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36348 : 0 : _q55 = do_valueize (valueize, _q55);
36349 : 0 : if (tree_swap_operands_p (_q51, _q52))
36350 : 0 : std::swap (_q51, _q52);
36351 : 0 : {
36352 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36353 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MUL))
36354 : 0 : return true;
36355 : : }
36356 : : }
36357 : : break;
36358 : 0 : case CFN_COND_LEN_SHL:
36359 : 0 : if (gimple_call_num_args (_c2) == 6)
36360 : : {
36361 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36362 : 0 : _q50 = do_valueize (valueize, _q50);
36363 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36364 : 0 : _q51 = do_valueize (valueize, _q51);
36365 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36366 : 0 : _q52 = do_valueize (valueize, _q52);
36367 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36368 : 0 : _q53 = do_valueize (valueize, _q53);
36369 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36370 : 0 : _q54 = do_valueize (valueize, _q54);
36371 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36372 : 0 : _q55 = do_valueize (valueize, _q55);
36373 : 0 : {
36374 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36375 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHL))
36376 : 0 : return true;
36377 : : }
36378 : : }
36379 : : break;
36380 : 0 : case CFN_COND_LEN_SHR:
36381 : 0 : if (gimple_call_num_args (_c2) == 6)
36382 : : {
36383 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36384 : 0 : _q50 = do_valueize (valueize, _q50);
36385 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36386 : 0 : _q51 = do_valueize (valueize, _q51);
36387 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36388 : 0 : _q52 = do_valueize (valueize, _q52);
36389 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36390 : 0 : _q53 = do_valueize (valueize, _q53);
36391 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36392 : 0 : _q54 = do_valueize (valueize, _q54);
36393 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36394 : 0 : _q55 = do_valueize (valueize, _q55);
36395 : 0 : {
36396 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36397 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHR))
36398 : 0 : return true;
36399 : : }
36400 : : }
36401 : : break;
36402 : 0 : case CFN_COND_LEN_SUB:
36403 : 0 : if (gimple_call_num_args (_c2) == 6)
36404 : : {
36405 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36406 : 0 : _q50 = do_valueize (valueize, _q50);
36407 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36408 : 0 : _q51 = do_valueize (valueize, _q51);
36409 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36410 : 0 : _q52 = do_valueize (valueize, _q52);
36411 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36412 : 0 : _q53 = do_valueize (valueize, _q53);
36413 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36414 : 0 : _q54 = do_valueize (valueize, _q54);
36415 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36416 : 0 : _q55 = do_valueize (valueize, _q55);
36417 : 0 : {
36418 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36419 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SUB))
36420 : 0 : return true;
36421 : : }
36422 : : }
36423 : : break;
36424 : 0 : case CFN_COND_LEN_XOR:
36425 : 0 : if (gimple_call_num_args (_c2) == 6)
36426 : : {
36427 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36428 : 0 : _q50 = do_valueize (valueize, _q50);
36429 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36430 : 0 : _q51 = do_valueize (valueize, _q51);
36431 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36432 : 0 : _q52 = do_valueize (valueize, _q52);
36433 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36434 : 0 : _q53 = do_valueize (valueize, _q53);
36435 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36436 : 0 : _q54 = do_valueize (valueize, _q54);
36437 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36438 : 0 : _q55 = do_valueize (valueize, _q55);
36439 : 0 : if (tree_swap_operands_p (_q51, _q52))
36440 : 0 : std::swap (_q51, _q52);
36441 : 0 : {
36442 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36443 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_XOR))
36444 : 0 : return true;
36445 : : }
36446 : : }
36447 : : break;
36448 : 0 : case CFN_COND_LEN_FMAX:
36449 : 0 : if (gimple_call_num_args (_c2) == 6)
36450 : : {
36451 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36452 : 0 : _q50 = do_valueize (valueize, _q50);
36453 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36454 : 0 : _q51 = do_valueize (valueize, _q51);
36455 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36456 : 0 : _q52 = do_valueize (valueize, _q52);
36457 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36458 : 0 : _q53 = do_valueize (valueize, _q53);
36459 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36460 : 0 : _q54 = do_valueize (valueize, _q54);
36461 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36462 : 0 : _q55 = do_valueize (valueize, _q55);
36463 : 0 : if (tree_swap_operands_p (_q51, _q52))
36464 : 0 : std::swap (_q51, _q52);
36465 : 0 : {
36466 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36467 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMAX))
36468 : 0 : return true;
36469 : : }
36470 : : }
36471 : : break;
36472 : 0 : case CFN_COND_LEN_FMIN:
36473 : 0 : if (gimple_call_num_args (_c2) == 6)
36474 : : {
36475 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36476 : 0 : _q50 = do_valueize (valueize, _q50);
36477 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36478 : 0 : _q51 = do_valueize (valueize, _q51);
36479 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36480 : 0 : _q52 = do_valueize (valueize, _q52);
36481 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36482 : 0 : _q53 = do_valueize (valueize, _q53);
36483 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36484 : 0 : _q54 = do_valueize (valueize, _q54);
36485 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36486 : 0 : _q55 = do_valueize (valueize, _q55);
36487 : 0 : if (tree_swap_operands_p (_q51, _q52))
36488 : 0 : std::swap (_q51, _q52);
36489 : 0 : {
36490 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36491 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMIN))
36492 : 0 : return true;
36493 : : }
36494 : : }
36495 : : break;
36496 : 0 : case CFN_COND_LEN_RDIV:
36497 : 0 : if (gimple_call_num_args (_c2) == 6)
36498 : : {
36499 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36500 : 0 : _q50 = do_valueize (valueize, _q50);
36501 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36502 : 0 : _q51 = do_valueize (valueize, _q51);
36503 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36504 : 0 : _q52 = do_valueize (valueize, _q52);
36505 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36506 : 0 : _q53 = do_valueize (valueize, _q53);
36507 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36508 : 0 : _q54 = do_valueize (valueize, _q54);
36509 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36510 : 0 : _q55 = do_valueize (valueize, _q55);
36511 : 0 : {
36512 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36513 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_RDIV))
36514 : 0 : return true;
36515 : : }
36516 : : }
36517 : : break;
36518 : 0 : case CFN_COND_LEN_COPYSIGN:
36519 : 0 : if (gimple_call_num_args (_c2) == 6)
36520 : : {
36521 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
36522 : 0 : _q50 = do_valueize (valueize, _q50);
36523 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
36524 : 0 : _q51 = do_valueize (valueize, _q51);
36525 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
36526 : 0 : _q52 = do_valueize (valueize, _q52);
36527 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
36528 : 0 : _q53 = do_valueize (valueize, _q53);
36529 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
36530 : 0 : _q54 = do_valueize (valueize, _q54);
36531 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
36532 : 0 : _q55 = do_valueize (valueize, _q55);
36533 : 0 : {
36534 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55 };
36535 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_COPYSIGN))
36536 : 0 : return true;
36537 : : }
36538 : : }
36539 : : break;
36540 : : default:;
36541 : : }
36542 : : }
36543 : : break;
36544 : : default:;
36545 : : }
36546 : : }
36547 : : break;
36548 : : }
36549 : : default:;
36550 : : }
36551 : 11796 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
36552 : 1880 : switch (gimple_call_combined_fn (_c1))
36553 : : {
36554 : 0 : case CFN_COND_LEN_ADD:
36555 : 0 : if (gimple_call_num_args (_c1) == 6)
36556 : : {
36557 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36558 : 0 : _q40 = do_valueize (valueize, _q40);
36559 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36560 : 0 : _q41 = do_valueize (valueize, _q41);
36561 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36562 : 0 : _q42 = do_valueize (valueize, _q42);
36563 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36564 : 0 : _q43 = do_valueize (valueize, _q43);
36565 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36566 : 0 : _q44 = do_valueize (valueize, _q44);
36567 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36568 : 0 : _q45 = do_valueize (valueize, _q45);
36569 : 0 : if (tree_swap_operands_p (_q41, _q42))
36570 : 0 : std::swap (_q41, _q42);
36571 : 0 : {
36572 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36573 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_ADD))
36574 : 0 : return true;
36575 : : }
36576 : : }
36577 : : break;
36578 : 0 : case CFN_COND_LEN_AND:
36579 : 0 : if (gimple_call_num_args (_c1) == 6)
36580 : : {
36581 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36582 : 0 : _q40 = do_valueize (valueize, _q40);
36583 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36584 : 0 : _q41 = do_valueize (valueize, _q41);
36585 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36586 : 0 : _q42 = do_valueize (valueize, _q42);
36587 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36588 : 0 : _q43 = do_valueize (valueize, _q43);
36589 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36590 : 0 : _q44 = do_valueize (valueize, _q44);
36591 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36592 : 0 : _q45 = do_valueize (valueize, _q45);
36593 : 0 : if (tree_swap_operands_p (_q41, _q42))
36594 : 0 : std::swap (_q41, _q42);
36595 : 0 : {
36596 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36597 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_AND))
36598 : 0 : return true;
36599 : : }
36600 : : }
36601 : : break;
36602 : 0 : case CFN_COND_LEN_DIV:
36603 : 0 : if (gimple_call_num_args (_c1) == 6)
36604 : : {
36605 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36606 : 0 : _q40 = do_valueize (valueize, _q40);
36607 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36608 : 0 : _q41 = do_valueize (valueize, _q41);
36609 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36610 : 0 : _q42 = do_valueize (valueize, _q42);
36611 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36612 : 0 : _q43 = do_valueize (valueize, _q43);
36613 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36614 : 0 : _q44 = do_valueize (valueize, _q44);
36615 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36616 : 0 : _q45 = do_valueize (valueize, _q45);
36617 : 0 : {
36618 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36619 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_DIV))
36620 : 0 : return true;
36621 : : }
36622 : : }
36623 : : break;
36624 : 0 : case CFN_COND_LEN_IOR:
36625 : 0 : if (gimple_call_num_args (_c1) == 6)
36626 : : {
36627 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36628 : 0 : _q40 = do_valueize (valueize, _q40);
36629 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36630 : 0 : _q41 = do_valueize (valueize, _q41);
36631 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36632 : 0 : _q42 = do_valueize (valueize, _q42);
36633 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36634 : 0 : _q43 = do_valueize (valueize, _q43);
36635 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36636 : 0 : _q44 = do_valueize (valueize, _q44);
36637 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36638 : 0 : _q45 = do_valueize (valueize, _q45);
36639 : 0 : if (tree_swap_operands_p (_q41, _q42))
36640 : 0 : std::swap (_q41, _q42);
36641 : 0 : {
36642 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36643 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_IOR))
36644 : 0 : return true;
36645 : : }
36646 : : }
36647 : : break;
36648 : 0 : case CFN_COND_LEN_MAX:
36649 : 0 : if (gimple_call_num_args (_c1) == 6)
36650 : : {
36651 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36652 : 0 : _q40 = do_valueize (valueize, _q40);
36653 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36654 : 0 : _q41 = do_valueize (valueize, _q41);
36655 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36656 : 0 : _q42 = do_valueize (valueize, _q42);
36657 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36658 : 0 : _q43 = do_valueize (valueize, _q43);
36659 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36660 : 0 : _q44 = do_valueize (valueize, _q44);
36661 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36662 : 0 : _q45 = do_valueize (valueize, _q45);
36663 : 0 : if (tree_swap_operands_p (_q41, _q42))
36664 : 0 : std::swap (_q41, _q42);
36665 : 0 : {
36666 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36667 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MAX))
36668 : 0 : return true;
36669 : : }
36670 : : }
36671 : : break;
36672 : 0 : case CFN_COND_LEN_MIN:
36673 : 0 : if (gimple_call_num_args (_c1) == 6)
36674 : : {
36675 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36676 : 0 : _q40 = do_valueize (valueize, _q40);
36677 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36678 : 0 : _q41 = do_valueize (valueize, _q41);
36679 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36680 : 0 : _q42 = do_valueize (valueize, _q42);
36681 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36682 : 0 : _q43 = do_valueize (valueize, _q43);
36683 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36684 : 0 : _q44 = do_valueize (valueize, _q44);
36685 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36686 : 0 : _q45 = do_valueize (valueize, _q45);
36687 : 0 : if (tree_swap_operands_p (_q41, _q42))
36688 : 0 : std::swap (_q41, _q42);
36689 : 0 : {
36690 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36691 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MIN))
36692 : 0 : return true;
36693 : : }
36694 : : }
36695 : : break;
36696 : 0 : case CFN_COND_LEN_MOD:
36697 : 0 : if (gimple_call_num_args (_c1) == 6)
36698 : : {
36699 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36700 : 0 : _q40 = do_valueize (valueize, _q40);
36701 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36702 : 0 : _q41 = do_valueize (valueize, _q41);
36703 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36704 : 0 : _q42 = do_valueize (valueize, _q42);
36705 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36706 : 0 : _q43 = do_valueize (valueize, _q43);
36707 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36708 : 0 : _q44 = do_valueize (valueize, _q44);
36709 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36710 : 0 : _q45 = do_valueize (valueize, _q45);
36711 : 0 : {
36712 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36713 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MOD))
36714 : 0 : return true;
36715 : : }
36716 : : }
36717 : : break;
36718 : 0 : case CFN_COND_LEN_MUL:
36719 : 0 : if (gimple_call_num_args (_c1) == 6)
36720 : : {
36721 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36722 : 0 : _q40 = do_valueize (valueize, _q40);
36723 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36724 : 0 : _q41 = do_valueize (valueize, _q41);
36725 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36726 : 0 : _q42 = do_valueize (valueize, _q42);
36727 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36728 : 0 : _q43 = do_valueize (valueize, _q43);
36729 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36730 : 0 : _q44 = do_valueize (valueize, _q44);
36731 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36732 : 0 : _q45 = do_valueize (valueize, _q45);
36733 : 0 : if (tree_swap_operands_p (_q41, _q42))
36734 : 0 : std::swap (_q41, _q42);
36735 : 0 : {
36736 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36737 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_MUL))
36738 : 0 : return true;
36739 : : }
36740 : : }
36741 : : break;
36742 : 0 : case CFN_COND_LEN_SHL:
36743 : 0 : if (gimple_call_num_args (_c1) == 6)
36744 : : {
36745 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36746 : 0 : _q40 = do_valueize (valueize, _q40);
36747 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36748 : 0 : _q41 = do_valueize (valueize, _q41);
36749 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36750 : 0 : _q42 = do_valueize (valueize, _q42);
36751 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36752 : 0 : _q43 = do_valueize (valueize, _q43);
36753 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36754 : 0 : _q44 = do_valueize (valueize, _q44);
36755 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36756 : 0 : _q45 = do_valueize (valueize, _q45);
36757 : 0 : {
36758 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36759 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHL))
36760 : 0 : return true;
36761 : : }
36762 : : }
36763 : : break;
36764 : 0 : case CFN_COND_LEN_SHR:
36765 : 0 : if (gimple_call_num_args (_c1) == 6)
36766 : : {
36767 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36768 : 0 : _q40 = do_valueize (valueize, _q40);
36769 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36770 : 0 : _q41 = do_valueize (valueize, _q41);
36771 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36772 : 0 : _q42 = do_valueize (valueize, _q42);
36773 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36774 : 0 : _q43 = do_valueize (valueize, _q43);
36775 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36776 : 0 : _q44 = do_valueize (valueize, _q44);
36777 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36778 : 0 : _q45 = do_valueize (valueize, _q45);
36779 : 0 : {
36780 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36781 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SHR))
36782 : 0 : return true;
36783 : : }
36784 : : }
36785 : : break;
36786 : 0 : case CFN_COND_LEN_SUB:
36787 : 0 : if (gimple_call_num_args (_c1) == 6)
36788 : : {
36789 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36790 : 0 : _q40 = do_valueize (valueize, _q40);
36791 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36792 : 0 : _q41 = do_valueize (valueize, _q41);
36793 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36794 : 0 : _q42 = do_valueize (valueize, _q42);
36795 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36796 : 0 : _q43 = do_valueize (valueize, _q43);
36797 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36798 : 0 : _q44 = do_valueize (valueize, _q44);
36799 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36800 : 0 : _q45 = do_valueize (valueize, _q45);
36801 : 0 : {
36802 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36803 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_SUB))
36804 : 0 : return true;
36805 : : }
36806 : : }
36807 : : break;
36808 : 0 : case CFN_COND_LEN_XOR:
36809 : 0 : if (gimple_call_num_args (_c1) == 6)
36810 : : {
36811 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36812 : 0 : _q40 = do_valueize (valueize, _q40);
36813 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36814 : 0 : _q41 = do_valueize (valueize, _q41);
36815 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36816 : 0 : _q42 = do_valueize (valueize, _q42);
36817 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36818 : 0 : _q43 = do_valueize (valueize, _q43);
36819 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36820 : 0 : _q44 = do_valueize (valueize, _q44);
36821 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36822 : 0 : _q45 = do_valueize (valueize, _q45);
36823 : 0 : if (tree_swap_operands_p (_q41, _q42))
36824 : 0 : std::swap (_q41, _q42);
36825 : 0 : {
36826 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36827 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_XOR))
36828 : 0 : return true;
36829 : : }
36830 : : }
36831 : : break;
36832 : 0 : case CFN_COND_LEN_FMAX:
36833 : 0 : if (gimple_call_num_args (_c1) == 6)
36834 : : {
36835 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36836 : 0 : _q40 = do_valueize (valueize, _q40);
36837 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36838 : 0 : _q41 = do_valueize (valueize, _q41);
36839 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36840 : 0 : _q42 = do_valueize (valueize, _q42);
36841 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36842 : 0 : _q43 = do_valueize (valueize, _q43);
36843 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36844 : 0 : _q44 = do_valueize (valueize, _q44);
36845 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36846 : 0 : _q45 = do_valueize (valueize, _q45);
36847 : 0 : if (tree_swap_operands_p (_q41, _q42))
36848 : 0 : std::swap (_q41, _q42);
36849 : 0 : {
36850 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36851 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMAX))
36852 : 0 : return true;
36853 : : }
36854 : : }
36855 : : break;
36856 : 0 : case CFN_COND_LEN_FMIN:
36857 : 0 : if (gimple_call_num_args (_c1) == 6)
36858 : : {
36859 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36860 : 0 : _q40 = do_valueize (valueize, _q40);
36861 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36862 : 0 : _q41 = do_valueize (valueize, _q41);
36863 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36864 : 0 : _q42 = do_valueize (valueize, _q42);
36865 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36866 : 0 : _q43 = do_valueize (valueize, _q43);
36867 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36868 : 0 : _q44 = do_valueize (valueize, _q44);
36869 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36870 : 0 : _q45 = do_valueize (valueize, _q45);
36871 : 0 : if (tree_swap_operands_p (_q41, _q42))
36872 : 0 : std::swap (_q41, _q42);
36873 : 0 : {
36874 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36875 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMIN))
36876 : 0 : return true;
36877 : : }
36878 : : }
36879 : : break;
36880 : 0 : case CFN_COND_LEN_RDIV:
36881 : 0 : if (gimple_call_num_args (_c1) == 6)
36882 : : {
36883 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36884 : 0 : _q40 = do_valueize (valueize, _q40);
36885 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36886 : 0 : _q41 = do_valueize (valueize, _q41);
36887 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36888 : 0 : _q42 = do_valueize (valueize, _q42);
36889 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36890 : 0 : _q43 = do_valueize (valueize, _q43);
36891 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36892 : 0 : _q44 = do_valueize (valueize, _q44);
36893 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36894 : 0 : _q45 = do_valueize (valueize, _q45);
36895 : 0 : {
36896 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36897 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_RDIV))
36898 : 0 : return true;
36899 : : }
36900 : : }
36901 : : break;
36902 : 0 : case CFN_COND_LEN_COPYSIGN:
36903 : 0 : if (gimple_call_num_args (_c1) == 6)
36904 : : {
36905 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
36906 : 0 : _q40 = do_valueize (valueize, _q40);
36907 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
36908 : 0 : _q41 = do_valueize (valueize, _q41);
36909 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
36910 : 0 : _q42 = do_valueize (valueize, _q42);
36911 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
36912 : 0 : _q43 = do_valueize (valueize, _q43);
36913 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
36914 : 0 : _q44 = do_valueize (valueize, _q44);
36915 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
36916 : 0 : _q45 = do_valueize (valueize, _q45);
36917 : 0 : {
36918 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45 };
36919 : 0 : if (gimple_simplify_631 (res_op, seq, valueize, type, captures, CFN_COND_LEN_COPYSIGN))
36920 : 0 : return true;
36921 : : }
36922 : : }
36923 : : break;
36924 : : default:;
36925 : : }
36926 : : }
36927 : : break;
36928 : 172929 : default:;
36929 : : }
36930 : 172929 : switch (TREE_CODE (_p1))
36931 : : {
36932 : 38478 : case SSA_NAME:
36933 : 38478 : if (gimple *_d1 = get_def (valueize, _p1))
36934 : : {
36935 : 32508 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
36936 : 33395 : switch (gimple_assign_rhs_code (_a1))
36937 : : {
36938 : 3297 : case VIEW_CONVERT_EXPR:
36939 : 3297 : {
36940 : 3297 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
36941 : 3297 : if ((TREE_CODE (_q30) == SSA_NAME
36942 : 3297 : || is_gimple_min_invariant (_q30)))
36943 : : {
36944 : 3297 : _q30 = do_valueize (valueize, _q30);
36945 : 3297 : switch (TREE_CODE (_q30))
36946 : : {
36947 : 3297 : case SSA_NAME:
36948 : 3297 : if (gimple *_d2 = get_def (valueize, _q30))
36949 : : {
36950 : 3214 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
36951 : 998 : switch (gimple_call_combined_fn (_c2))
36952 : : {
36953 : 0 : case CFN_COND_LEN_FMA:
36954 : 0 : if (gimple_call_num_args (_c2) == 7)
36955 : : {
36956 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
36957 : 0 : _q40 = do_valueize (valueize, _q40);
36958 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
36959 : 0 : _q41 = do_valueize (valueize, _q41);
36960 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
36961 : 0 : _q42 = do_valueize (valueize, _q42);
36962 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
36963 : 0 : _q43 = do_valueize (valueize, _q43);
36964 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
36965 : 0 : _q44 = do_valueize (valueize, _q44);
36966 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
36967 : 0 : _q45 = do_valueize (valueize, _q45);
36968 : 0 : tree _q46 = gimple_call_arg (_c2, 6);
36969 : 0 : _q46 = do_valueize (valueize, _q46);
36970 : 0 : if (tree_swap_operands_p (_q41, _q42))
36971 : 0 : std::swap (_q41, _q42);
36972 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
36973 : : {
36974 : 0 : {
36975 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _q46, _p2 };
36976 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMA))
36977 : 0 : return true;
36978 : : }
36979 : : }
36980 : : }
36981 : : break;
36982 : 0 : case CFN_COND_LEN_FMS:
36983 : 0 : if (gimple_call_num_args (_c2) == 7)
36984 : : {
36985 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
36986 : 0 : _q40 = do_valueize (valueize, _q40);
36987 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
36988 : 0 : _q41 = do_valueize (valueize, _q41);
36989 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
36990 : 0 : _q42 = do_valueize (valueize, _q42);
36991 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
36992 : 0 : _q43 = do_valueize (valueize, _q43);
36993 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
36994 : 0 : _q44 = do_valueize (valueize, _q44);
36995 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
36996 : 0 : _q45 = do_valueize (valueize, _q45);
36997 : 0 : tree _q46 = gimple_call_arg (_c2, 6);
36998 : 0 : _q46 = do_valueize (valueize, _q46);
36999 : 0 : if (tree_swap_operands_p (_q41, _q42))
37000 : 0 : std::swap (_q41, _q42);
37001 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
37002 : : {
37003 : 0 : {
37004 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _q46, _p2 };
37005 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMS))
37006 : 0 : return true;
37007 : : }
37008 : : }
37009 : : }
37010 : : break;
37011 : 0 : case CFN_COND_LEN_FNMA:
37012 : 0 : if (gimple_call_num_args (_c2) == 7)
37013 : : {
37014 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
37015 : 0 : _q40 = do_valueize (valueize, _q40);
37016 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
37017 : 0 : _q41 = do_valueize (valueize, _q41);
37018 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
37019 : 0 : _q42 = do_valueize (valueize, _q42);
37020 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
37021 : 0 : _q43 = do_valueize (valueize, _q43);
37022 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
37023 : 0 : _q44 = do_valueize (valueize, _q44);
37024 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
37025 : 0 : _q45 = do_valueize (valueize, _q45);
37026 : 0 : tree _q46 = gimple_call_arg (_c2, 6);
37027 : 0 : _q46 = do_valueize (valueize, _q46);
37028 : 0 : if (tree_swap_operands_p (_q41, _q42))
37029 : 0 : std::swap (_q41, _q42);
37030 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
37031 : : {
37032 : 0 : {
37033 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _q46, _p2 };
37034 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMA))
37035 : 0 : return true;
37036 : : }
37037 : : }
37038 : : }
37039 : : break;
37040 : 0 : case CFN_COND_LEN_FNMS:
37041 : 0 : if (gimple_call_num_args (_c2) == 7)
37042 : : {
37043 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
37044 : 0 : _q40 = do_valueize (valueize, _q40);
37045 : 0 : tree _q41 = gimple_call_arg (_c2, 1);
37046 : 0 : _q41 = do_valueize (valueize, _q41);
37047 : 0 : tree _q42 = gimple_call_arg (_c2, 2);
37048 : 0 : _q42 = do_valueize (valueize, _q42);
37049 : 0 : tree _q43 = gimple_call_arg (_c2, 3);
37050 : 0 : _q43 = do_valueize (valueize, _q43);
37051 : 0 : tree _q44 = gimple_call_arg (_c2, 4);
37052 : 0 : _q44 = do_valueize (valueize, _q44);
37053 : 0 : tree _q45 = gimple_call_arg (_c2, 5);
37054 : 0 : _q45 = do_valueize (valueize, _q45);
37055 : 0 : tree _q46 = gimple_call_arg (_c2, 6);
37056 : 0 : _q46 = do_valueize (valueize, _q46);
37057 : 0 : if (tree_swap_operands_p (_q41, _q42))
37058 : 0 : std::swap (_q41, _q42);
37059 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
37060 : : {
37061 : 0 : {
37062 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q41, _q42, _q43, _q44, _q45, _q46, _p2 };
37063 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMS))
37064 : 0 : return true;
37065 : : }
37066 : : }
37067 : : }
37068 : : break;
37069 : : default:;
37070 : : }
37071 : : }
37072 : : break;
37073 : : default:;
37074 : : }
37075 : : }
37076 : : break;
37077 : : }
37078 : : default:;
37079 : : }
37080 : 12949 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
37081 : 2412 : switch (gimple_call_combined_fn (_c1))
37082 : : {
37083 : 0 : case CFN_COND_LEN_FMA:
37084 : 0 : if (gimple_call_num_args (_c1) == 7)
37085 : : {
37086 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37087 : 0 : _q30 = do_valueize (valueize, _q30);
37088 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37089 : 0 : _q31 = do_valueize (valueize, _q31);
37090 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37091 : 0 : _q32 = do_valueize (valueize, _q32);
37092 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37093 : 0 : _q33 = do_valueize (valueize, _q33);
37094 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37095 : 0 : _q34 = do_valueize (valueize, _q34);
37096 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
37097 : 0 : _q35 = do_valueize (valueize, _q35);
37098 : 0 : tree _q36 = gimple_call_arg (_c1, 6);
37099 : 0 : _q36 = do_valueize (valueize, _q36);
37100 : 0 : if (tree_swap_operands_p (_q31, _q32))
37101 : 0 : std::swap (_q31, _q32);
37102 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
37103 : : {
37104 : 0 : {
37105 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _q36, _p2 };
37106 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMA))
37107 : 0 : return true;
37108 : : }
37109 : : }
37110 : : }
37111 : : break;
37112 : 0 : case CFN_COND_LEN_FMS:
37113 : 0 : if (gimple_call_num_args (_c1) == 7)
37114 : : {
37115 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37116 : 0 : _q30 = do_valueize (valueize, _q30);
37117 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37118 : 0 : _q31 = do_valueize (valueize, _q31);
37119 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37120 : 0 : _q32 = do_valueize (valueize, _q32);
37121 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37122 : 0 : _q33 = do_valueize (valueize, _q33);
37123 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37124 : 0 : _q34 = do_valueize (valueize, _q34);
37125 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
37126 : 0 : _q35 = do_valueize (valueize, _q35);
37127 : 0 : tree _q36 = gimple_call_arg (_c1, 6);
37128 : 0 : _q36 = do_valueize (valueize, _q36);
37129 : 0 : if (tree_swap_operands_p (_q31, _q32))
37130 : 0 : std::swap (_q31, _q32);
37131 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
37132 : : {
37133 : 0 : {
37134 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _q36, _p2 };
37135 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMS))
37136 : 0 : return true;
37137 : : }
37138 : : }
37139 : : }
37140 : : break;
37141 : 0 : case CFN_COND_LEN_FNMA:
37142 : 0 : if (gimple_call_num_args (_c1) == 7)
37143 : : {
37144 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37145 : 0 : _q30 = do_valueize (valueize, _q30);
37146 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37147 : 0 : _q31 = do_valueize (valueize, _q31);
37148 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37149 : 0 : _q32 = do_valueize (valueize, _q32);
37150 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37151 : 0 : _q33 = do_valueize (valueize, _q33);
37152 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37153 : 0 : _q34 = do_valueize (valueize, _q34);
37154 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
37155 : 0 : _q35 = do_valueize (valueize, _q35);
37156 : 0 : tree _q36 = gimple_call_arg (_c1, 6);
37157 : 0 : _q36 = do_valueize (valueize, _q36);
37158 : 0 : if (tree_swap_operands_p (_q31, _q32))
37159 : 0 : std::swap (_q31, _q32);
37160 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
37161 : : {
37162 : 0 : {
37163 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _q36, _p2 };
37164 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMA))
37165 : 0 : return true;
37166 : : }
37167 : : }
37168 : : }
37169 : : break;
37170 : 0 : case CFN_COND_LEN_FNMS:
37171 : 0 : if (gimple_call_num_args (_c1) == 7)
37172 : : {
37173 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37174 : 0 : _q30 = do_valueize (valueize, _q30);
37175 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37176 : 0 : _q31 = do_valueize (valueize, _q31);
37177 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37178 : 0 : _q32 = do_valueize (valueize, _q32);
37179 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37180 : 0 : _q33 = do_valueize (valueize, _q33);
37181 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37182 : 0 : _q34 = do_valueize (valueize, _q34);
37183 : 0 : tree _q35 = gimple_call_arg (_c1, 5);
37184 : 0 : _q35 = do_valueize (valueize, _q35);
37185 : 0 : tree _q36 = gimple_call_arg (_c1, 6);
37186 : 0 : _q36 = do_valueize (valueize, _q36);
37187 : 0 : if (tree_swap_operands_p (_q31, _q32))
37188 : 0 : std::swap (_q31, _q32);
37189 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
37190 : : {
37191 : 0 : {
37192 : 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _q33, _q34, _q35, _q36, _p2 };
37193 : 0 : if (gimple_simplify_632 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMS))
37194 : 0 : return true;
37195 : : }
37196 : : }
37197 : : }
37198 : : break;
37199 : : default:;
37200 : : }
37201 : : }
37202 : : break;
37203 : 172929 : default:;
37204 : : }
37205 : 172929 : switch (TREE_CODE (_p2))
37206 : : {
37207 : 40520 : case SSA_NAME:
37208 : 40520 : if (gimple *_d1 = get_def (valueize, _p2))
37209 : : {
37210 : 35013 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
37211 : 36064 : switch (gimple_assign_rhs_code (_a1))
37212 : : {
37213 : 4919 : case VIEW_CONVERT_EXPR:
37214 : 4919 : {
37215 : 4919 : tree _q40 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
37216 : 4919 : if ((TREE_CODE (_q40) == SSA_NAME
37217 : 4919 : || is_gimple_min_invariant (_q40)))
37218 : : {
37219 : 4919 : _q40 = do_valueize (valueize, _q40);
37220 : 4919 : switch (TREE_CODE (_q40))
37221 : : {
37222 : 4919 : case SSA_NAME:
37223 : 4919 : if (gimple *_d2 = get_def (valueize, _q40))
37224 : : {
37225 : 4869 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
37226 : 1217 : switch (gimple_call_combined_fn (_c2))
37227 : : {
37228 : 0 : case CFN_COND_LEN_FMA:
37229 : 0 : if (gimple_call_num_args (_c2) == 7)
37230 : : {
37231 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
37232 : 0 : _q50 = do_valueize (valueize, _q50);
37233 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
37234 : 0 : _q51 = do_valueize (valueize, _q51);
37235 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
37236 : 0 : _q52 = do_valueize (valueize, _q52);
37237 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
37238 : 0 : _q53 = do_valueize (valueize, _q53);
37239 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
37240 : 0 : _q54 = do_valueize (valueize, _q54);
37241 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
37242 : 0 : _q55 = do_valueize (valueize, _q55);
37243 : 0 : tree _q56 = gimple_call_arg (_c2, 6);
37244 : 0 : _q56 = do_valueize (valueize, _q56);
37245 : 0 : if (tree_swap_operands_p (_q51, _q52))
37246 : 0 : std::swap (_q51, _q52);
37247 : 0 : {
37248 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55, _q56 };
37249 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMA))
37250 : 0 : return true;
37251 : : }
37252 : : }
37253 : : break;
37254 : 0 : case CFN_COND_LEN_FMS:
37255 : 0 : if (gimple_call_num_args (_c2) == 7)
37256 : : {
37257 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
37258 : 0 : _q50 = do_valueize (valueize, _q50);
37259 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
37260 : 0 : _q51 = do_valueize (valueize, _q51);
37261 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
37262 : 0 : _q52 = do_valueize (valueize, _q52);
37263 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
37264 : 0 : _q53 = do_valueize (valueize, _q53);
37265 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
37266 : 0 : _q54 = do_valueize (valueize, _q54);
37267 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
37268 : 0 : _q55 = do_valueize (valueize, _q55);
37269 : 0 : tree _q56 = gimple_call_arg (_c2, 6);
37270 : 0 : _q56 = do_valueize (valueize, _q56);
37271 : 0 : if (tree_swap_operands_p (_q51, _q52))
37272 : 0 : std::swap (_q51, _q52);
37273 : 0 : {
37274 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55, _q56 };
37275 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMS))
37276 : 0 : return true;
37277 : : }
37278 : : }
37279 : : break;
37280 : 0 : case CFN_COND_LEN_FNMA:
37281 : 0 : if (gimple_call_num_args (_c2) == 7)
37282 : : {
37283 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
37284 : 0 : _q50 = do_valueize (valueize, _q50);
37285 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
37286 : 0 : _q51 = do_valueize (valueize, _q51);
37287 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
37288 : 0 : _q52 = do_valueize (valueize, _q52);
37289 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
37290 : 0 : _q53 = do_valueize (valueize, _q53);
37291 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
37292 : 0 : _q54 = do_valueize (valueize, _q54);
37293 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
37294 : 0 : _q55 = do_valueize (valueize, _q55);
37295 : 0 : tree _q56 = gimple_call_arg (_c2, 6);
37296 : 0 : _q56 = do_valueize (valueize, _q56);
37297 : 0 : if (tree_swap_operands_p (_q51, _q52))
37298 : 0 : std::swap (_q51, _q52);
37299 : 0 : {
37300 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55, _q56 };
37301 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMA))
37302 : 0 : return true;
37303 : : }
37304 : : }
37305 : : break;
37306 : 0 : case CFN_COND_LEN_FNMS:
37307 : 0 : if (gimple_call_num_args (_c2) == 7)
37308 : : {
37309 : 0 : tree _q50 = gimple_call_arg (_c2, 0);
37310 : 0 : _q50 = do_valueize (valueize, _q50);
37311 : 0 : tree _q51 = gimple_call_arg (_c2, 1);
37312 : 0 : _q51 = do_valueize (valueize, _q51);
37313 : 0 : tree _q52 = gimple_call_arg (_c2, 2);
37314 : 0 : _q52 = do_valueize (valueize, _q52);
37315 : 0 : tree _q53 = gimple_call_arg (_c2, 3);
37316 : 0 : _q53 = do_valueize (valueize, _q53);
37317 : 0 : tree _q54 = gimple_call_arg (_c2, 4);
37318 : 0 : _q54 = do_valueize (valueize, _q54);
37319 : 0 : tree _q55 = gimple_call_arg (_c2, 5);
37320 : 0 : _q55 = do_valueize (valueize, _q55);
37321 : 0 : tree _q56 = gimple_call_arg (_c2, 6);
37322 : 0 : _q56 = do_valueize (valueize, _q56);
37323 : 0 : if (tree_swap_operands_p (_q51, _q52))
37324 : 0 : std::swap (_q51, _q52);
37325 : 0 : {
37326 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q50, _q51, _q52, _q53, _q54, _q55, _q56 };
37327 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMS))
37328 : 0 : return true;
37329 : : }
37330 : : }
37331 : : break;
37332 : : default:;
37333 : : }
37334 : : }
37335 : : break;
37336 : : default:;
37337 : : }
37338 : : }
37339 : : break;
37340 : : }
37341 : : default:;
37342 : : }
37343 : 11796 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
37344 : 1880 : switch (gimple_call_combined_fn (_c1))
37345 : : {
37346 : 0 : case CFN_COND_LEN_FMA:
37347 : 0 : if (gimple_call_num_args (_c1) == 7)
37348 : : {
37349 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
37350 : 0 : _q40 = do_valueize (valueize, _q40);
37351 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
37352 : 0 : _q41 = do_valueize (valueize, _q41);
37353 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
37354 : 0 : _q42 = do_valueize (valueize, _q42);
37355 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
37356 : 0 : _q43 = do_valueize (valueize, _q43);
37357 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
37358 : 0 : _q44 = do_valueize (valueize, _q44);
37359 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
37360 : 0 : _q45 = do_valueize (valueize, _q45);
37361 : 0 : tree _q46 = gimple_call_arg (_c1, 6);
37362 : 0 : _q46 = do_valueize (valueize, _q46);
37363 : 0 : if (tree_swap_operands_p (_q41, _q42))
37364 : 0 : std::swap (_q41, _q42);
37365 : 0 : {
37366 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45, _q46 };
37367 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMA))
37368 : 0 : return true;
37369 : : }
37370 : : }
37371 : : break;
37372 : 0 : case CFN_COND_LEN_FMS:
37373 : 0 : if (gimple_call_num_args (_c1) == 7)
37374 : : {
37375 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
37376 : 0 : _q40 = do_valueize (valueize, _q40);
37377 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
37378 : 0 : _q41 = do_valueize (valueize, _q41);
37379 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
37380 : 0 : _q42 = do_valueize (valueize, _q42);
37381 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
37382 : 0 : _q43 = do_valueize (valueize, _q43);
37383 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
37384 : 0 : _q44 = do_valueize (valueize, _q44);
37385 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
37386 : 0 : _q45 = do_valueize (valueize, _q45);
37387 : 0 : tree _q46 = gimple_call_arg (_c1, 6);
37388 : 0 : _q46 = do_valueize (valueize, _q46);
37389 : 0 : if (tree_swap_operands_p (_q41, _q42))
37390 : 0 : std::swap (_q41, _q42);
37391 : 0 : {
37392 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45, _q46 };
37393 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FMS))
37394 : 0 : return true;
37395 : : }
37396 : : }
37397 : : break;
37398 : 0 : case CFN_COND_LEN_FNMA:
37399 : 0 : if (gimple_call_num_args (_c1) == 7)
37400 : : {
37401 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
37402 : 0 : _q40 = do_valueize (valueize, _q40);
37403 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
37404 : 0 : _q41 = do_valueize (valueize, _q41);
37405 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
37406 : 0 : _q42 = do_valueize (valueize, _q42);
37407 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
37408 : 0 : _q43 = do_valueize (valueize, _q43);
37409 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
37410 : 0 : _q44 = do_valueize (valueize, _q44);
37411 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
37412 : 0 : _q45 = do_valueize (valueize, _q45);
37413 : 0 : tree _q46 = gimple_call_arg (_c1, 6);
37414 : 0 : _q46 = do_valueize (valueize, _q46);
37415 : 0 : if (tree_swap_operands_p (_q41, _q42))
37416 : 0 : std::swap (_q41, _q42);
37417 : 0 : {
37418 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45, _q46 };
37419 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMA))
37420 : 0 : return true;
37421 : : }
37422 : : }
37423 : : break;
37424 : 0 : case CFN_COND_LEN_FNMS:
37425 : 0 : if (gimple_call_num_args (_c1) == 7)
37426 : : {
37427 : 0 : tree _q40 = gimple_call_arg (_c1, 0);
37428 : 0 : _q40 = do_valueize (valueize, _q40);
37429 : 0 : tree _q41 = gimple_call_arg (_c1, 1);
37430 : 0 : _q41 = do_valueize (valueize, _q41);
37431 : 0 : tree _q42 = gimple_call_arg (_c1, 2);
37432 : 0 : _q42 = do_valueize (valueize, _q42);
37433 : 0 : tree _q43 = gimple_call_arg (_c1, 3);
37434 : 0 : _q43 = do_valueize (valueize, _q43);
37435 : 0 : tree _q44 = gimple_call_arg (_c1, 4);
37436 : 0 : _q44 = do_valueize (valueize, _q44);
37437 : 0 : tree _q45 = gimple_call_arg (_c1, 5);
37438 : 0 : _q45 = do_valueize (valueize, _q45);
37439 : 0 : tree _q46 = gimple_call_arg (_c1, 6);
37440 : 0 : _q46 = do_valueize (valueize, _q46);
37441 : 0 : if (tree_swap_operands_p (_q41, _q42))
37442 : 0 : std::swap (_q41, _q42);
37443 : 0 : {
37444 : 0 : tree captures[9] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42, _q43, _q44, _q45, _q46 };
37445 : 0 : if (gimple_simplify_633 (res_op, seq, valueize, type, captures, CFN_COND_LEN_FNMS))
37446 : 0 : return true;
37447 : : }
37448 : : }
37449 : : break;
37450 : : default:;
37451 : : }
37452 : : }
37453 : : break;
37454 : 172929 : default:;
37455 : : }
37456 : 172929 : switch (TREE_CODE (_p1))
37457 : : {
37458 : 38478 : case SSA_NAME:
37459 : 38478 : if (gimple *_d1 = get_def (valueize, _p1))
37460 : : {
37461 : 32508 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
37462 : 2412 : switch (gimple_call_combined_fn (_c1))
37463 : : {
37464 : 0 : case CFN_COND_ADD:
37465 : 0 : if (gimple_call_num_args (_c1) == 4)
37466 : : {
37467 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37468 : 0 : _q30 = do_valueize (valueize, _q30);
37469 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37470 : 0 : _q31 = do_valueize (valueize, _q31);
37471 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37472 : 0 : _q32 = do_valueize (valueize, _q32);
37473 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37474 : 0 : _q33 = do_valueize (valueize, _q33);
37475 : 0 : if (tree_swap_operands_p (_q31, _q32))
37476 : 0 : std::swap (_q31, _q32);
37477 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37478 : : {
37479 : 0 : {
37480 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37481 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_ADD))
37482 : 0 : return true;
37483 : : }
37484 : : }
37485 : : }
37486 : : break;
37487 : 0 : case CFN_COND_AND:
37488 : 0 : if (gimple_call_num_args (_c1) == 4)
37489 : : {
37490 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37491 : 0 : _q30 = do_valueize (valueize, _q30);
37492 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37493 : 0 : _q31 = do_valueize (valueize, _q31);
37494 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37495 : 0 : _q32 = do_valueize (valueize, _q32);
37496 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37497 : 0 : _q33 = do_valueize (valueize, _q33);
37498 : 0 : if (tree_swap_operands_p (_q31, _q32))
37499 : 0 : std::swap (_q31, _q32);
37500 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37501 : : {
37502 : 0 : {
37503 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37504 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_AND))
37505 : 0 : return true;
37506 : : }
37507 : : }
37508 : : }
37509 : : break;
37510 : 0 : case CFN_COND_DIV:
37511 : 0 : if (gimple_call_num_args (_c1) == 4)
37512 : : {
37513 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37514 : 0 : _q30 = do_valueize (valueize, _q30);
37515 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37516 : 0 : _q31 = do_valueize (valueize, _q31);
37517 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37518 : 0 : _q32 = do_valueize (valueize, _q32);
37519 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37520 : 0 : _q33 = do_valueize (valueize, _q33);
37521 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37522 : : {
37523 : 0 : {
37524 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37525 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_DIV))
37526 : 0 : return true;
37527 : : }
37528 : : }
37529 : : }
37530 : : break;
37531 : 0 : case CFN_COND_FMA:
37532 : 0 : if (gimple_call_num_args (_c1) == 5)
37533 : : {
37534 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37535 : 0 : _q30 = do_valueize (valueize, _q30);
37536 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37537 : 0 : _q31 = do_valueize (valueize, _q31);
37538 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37539 : 0 : _q32 = do_valueize (valueize, _q32);
37540 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37541 : 0 : _q33 = do_valueize (valueize, _q33);
37542 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37543 : 0 : _q34 = do_valueize (valueize, _q34);
37544 : 0 : if (tree_swap_operands_p (_q31, _q32))
37545 : 0 : std::swap (_q31, _q32);
37546 : 0 : if ((_p2 == _q34 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q34, 0) && types_match (_p2, _q34)))
37547 : : {
37548 : 0 : {
37549 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33, _q34 };
37550 : 0 : if (gimple_simplify_635 (res_op, seq, valueize, type, captures, CFN_COND_FMA))
37551 : 0 : return true;
37552 : : }
37553 : : }
37554 : : }
37555 : : break;
37556 : 0 : case CFN_COND_FMS:
37557 : 0 : if (gimple_call_num_args (_c1) == 5)
37558 : : {
37559 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37560 : 0 : _q30 = do_valueize (valueize, _q30);
37561 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37562 : 0 : _q31 = do_valueize (valueize, _q31);
37563 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37564 : 0 : _q32 = do_valueize (valueize, _q32);
37565 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37566 : 0 : _q33 = do_valueize (valueize, _q33);
37567 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37568 : 0 : _q34 = do_valueize (valueize, _q34);
37569 : 0 : if (tree_swap_operands_p (_q31, _q32))
37570 : 0 : std::swap (_q31, _q32);
37571 : 0 : if ((_p2 == _q34 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q34, 0) && types_match (_p2, _q34)))
37572 : : {
37573 : 0 : {
37574 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33, _q34 };
37575 : 0 : if (gimple_simplify_635 (res_op, seq, valueize, type, captures, CFN_COND_FMS))
37576 : 0 : return true;
37577 : : }
37578 : : }
37579 : : }
37580 : : break;
37581 : 0 : case CFN_COND_IOR:
37582 : 0 : if (gimple_call_num_args (_c1) == 4)
37583 : : {
37584 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37585 : 0 : _q30 = do_valueize (valueize, _q30);
37586 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37587 : 0 : _q31 = do_valueize (valueize, _q31);
37588 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37589 : 0 : _q32 = do_valueize (valueize, _q32);
37590 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37591 : 0 : _q33 = do_valueize (valueize, _q33);
37592 : 0 : if (tree_swap_operands_p (_q31, _q32))
37593 : 0 : std::swap (_q31, _q32);
37594 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37595 : : {
37596 : 0 : {
37597 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37598 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_IOR))
37599 : 0 : return true;
37600 : : }
37601 : : }
37602 : : }
37603 : : break;
37604 : 0 : case CFN_COND_MAX:
37605 : 0 : if (gimple_call_num_args (_c1) == 4)
37606 : : {
37607 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37608 : 0 : _q30 = do_valueize (valueize, _q30);
37609 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37610 : 0 : _q31 = do_valueize (valueize, _q31);
37611 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37612 : 0 : _q32 = do_valueize (valueize, _q32);
37613 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37614 : 0 : _q33 = do_valueize (valueize, _q33);
37615 : 0 : if (tree_swap_operands_p (_q31, _q32))
37616 : 0 : std::swap (_q31, _q32);
37617 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37618 : : {
37619 : 0 : {
37620 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37621 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_MAX))
37622 : 0 : return true;
37623 : : }
37624 : : }
37625 : : }
37626 : : break;
37627 : 0 : case CFN_COND_MIN:
37628 : 0 : if (gimple_call_num_args (_c1) == 4)
37629 : : {
37630 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37631 : 0 : _q30 = do_valueize (valueize, _q30);
37632 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37633 : 0 : _q31 = do_valueize (valueize, _q31);
37634 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37635 : 0 : _q32 = do_valueize (valueize, _q32);
37636 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37637 : 0 : _q33 = do_valueize (valueize, _q33);
37638 : 0 : if (tree_swap_operands_p (_q31, _q32))
37639 : 0 : std::swap (_q31, _q32);
37640 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37641 : : {
37642 : 0 : {
37643 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37644 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_MIN))
37645 : 0 : return true;
37646 : : }
37647 : : }
37648 : : }
37649 : : break;
37650 : 0 : case CFN_COND_MOD:
37651 : 0 : if (gimple_call_num_args (_c1) == 4)
37652 : : {
37653 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37654 : 0 : _q30 = do_valueize (valueize, _q30);
37655 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37656 : 0 : _q31 = do_valueize (valueize, _q31);
37657 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37658 : 0 : _q32 = do_valueize (valueize, _q32);
37659 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37660 : 0 : _q33 = do_valueize (valueize, _q33);
37661 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37662 : : {
37663 : 0 : {
37664 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37665 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_MOD))
37666 : 0 : return true;
37667 : : }
37668 : : }
37669 : : }
37670 : : break;
37671 : 0 : case CFN_COND_MUL:
37672 : 0 : if (gimple_call_num_args (_c1) == 4)
37673 : : {
37674 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37675 : 0 : _q30 = do_valueize (valueize, _q30);
37676 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37677 : 0 : _q31 = do_valueize (valueize, _q31);
37678 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37679 : 0 : _q32 = do_valueize (valueize, _q32);
37680 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37681 : 0 : _q33 = do_valueize (valueize, _q33);
37682 : 0 : if (tree_swap_operands_p (_q31, _q32))
37683 : 0 : std::swap (_q31, _q32);
37684 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37685 : : {
37686 : 0 : {
37687 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37688 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_MUL))
37689 : 0 : return true;
37690 : : }
37691 : : }
37692 : : }
37693 : : break;
37694 : 0 : case CFN_COND_SHL:
37695 : 0 : if (gimple_call_num_args (_c1) == 4)
37696 : : {
37697 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37698 : 0 : _q30 = do_valueize (valueize, _q30);
37699 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37700 : 0 : _q31 = do_valueize (valueize, _q31);
37701 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37702 : 0 : _q32 = do_valueize (valueize, _q32);
37703 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37704 : 0 : _q33 = do_valueize (valueize, _q33);
37705 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37706 : : {
37707 : 0 : {
37708 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37709 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_SHL))
37710 : 0 : return true;
37711 : : }
37712 : : }
37713 : : }
37714 : : break;
37715 : 0 : case CFN_COND_SHR:
37716 : 0 : if (gimple_call_num_args (_c1) == 4)
37717 : : {
37718 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37719 : 0 : _q30 = do_valueize (valueize, _q30);
37720 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37721 : 0 : _q31 = do_valueize (valueize, _q31);
37722 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37723 : 0 : _q32 = do_valueize (valueize, _q32);
37724 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37725 : 0 : _q33 = do_valueize (valueize, _q33);
37726 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37727 : : {
37728 : 0 : {
37729 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37730 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_SHR))
37731 : 0 : return true;
37732 : : }
37733 : : }
37734 : : }
37735 : : break;
37736 : 0 : case CFN_COND_SUB:
37737 : 0 : if (gimple_call_num_args (_c1) == 4)
37738 : : {
37739 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37740 : 0 : _q30 = do_valueize (valueize, _q30);
37741 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37742 : 0 : _q31 = do_valueize (valueize, _q31);
37743 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37744 : 0 : _q32 = do_valueize (valueize, _q32);
37745 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37746 : 0 : _q33 = do_valueize (valueize, _q33);
37747 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37748 : : {
37749 : 0 : {
37750 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37751 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_SUB))
37752 : 0 : return true;
37753 : : }
37754 : : }
37755 : : }
37756 : : break;
37757 : 0 : case CFN_COND_XOR:
37758 : 0 : if (gimple_call_num_args (_c1) == 4)
37759 : : {
37760 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37761 : 0 : _q30 = do_valueize (valueize, _q30);
37762 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37763 : 0 : _q31 = do_valueize (valueize, _q31);
37764 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37765 : 0 : _q32 = do_valueize (valueize, _q32);
37766 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37767 : 0 : _q33 = do_valueize (valueize, _q33);
37768 : 0 : if (tree_swap_operands_p (_q31, _q32))
37769 : 0 : std::swap (_q31, _q32);
37770 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37771 : : {
37772 : 0 : {
37773 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37774 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_XOR))
37775 : 0 : return true;
37776 : : }
37777 : : }
37778 : : }
37779 : : break;
37780 : 0 : case CFN_COND_COPYSIGN:
37781 : 0 : if (gimple_call_num_args (_c1) == 4)
37782 : : {
37783 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37784 : 0 : _q30 = do_valueize (valueize, _q30);
37785 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37786 : 0 : _q31 = do_valueize (valueize, _q31);
37787 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37788 : 0 : _q32 = do_valueize (valueize, _q32);
37789 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37790 : 0 : _q33 = do_valueize (valueize, _q33);
37791 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37792 : : {
37793 : 0 : {
37794 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37795 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_COPYSIGN))
37796 : 0 : return true;
37797 : : }
37798 : : }
37799 : : }
37800 : : break;
37801 : 0 : case CFN_COND_FMAX:
37802 : 0 : if (gimple_call_num_args (_c1) == 4)
37803 : : {
37804 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37805 : 0 : _q30 = do_valueize (valueize, _q30);
37806 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37807 : 0 : _q31 = do_valueize (valueize, _q31);
37808 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37809 : 0 : _q32 = do_valueize (valueize, _q32);
37810 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37811 : 0 : _q33 = do_valueize (valueize, _q33);
37812 : 0 : if (tree_swap_operands_p (_q31, _q32))
37813 : 0 : std::swap (_q31, _q32);
37814 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37815 : : {
37816 : 0 : {
37817 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37818 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_FMAX))
37819 : 0 : return true;
37820 : : }
37821 : : }
37822 : : }
37823 : : break;
37824 : 0 : case CFN_COND_FMIN:
37825 : 0 : if (gimple_call_num_args (_c1) == 4)
37826 : : {
37827 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37828 : 0 : _q30 = do_valueize (valueize, _q30);
37829 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37830 : 0 : _q31 = do_valueize (valueize, _q31);
37831 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37832 : 0 : _q32 = do_valueize (valueize, _q32);
37833 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37834 : 0 : _q33 = do_valueize (valueize, _q33);
37835 : 0 : if (tree_swap_operands_p (_q31, _q32))
37836 : 0 : std::swap (_q31, _q32);
37837 : 0 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37838 : : {
37839 : 0 : {
37840 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37841 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_FMIN))
37842 : 0 : return true;
37843 : : }
37844 : : }
37845 : : }
37846 : : break;
37847 : 0 : case CFN_COND_FNMA:
37848 : 0 : if (gimple_call_num_args (_c1) == 5)
37849 : : {
37850 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37851 : 0 : _q30 = do_valueize (valueize, _q30);
37852 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37853 : 0 : _q31 = do_valueize (valueize, _q31);
37854 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37855 : 0 : _q32 = do_valueize (valueize, _q32);
37856 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37857 : 0 : _q33 = do_valueize (valueize, _q33);
37858 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37859 : 0 : _q34 = do_valueize (valueize, _q34);
37860 : 0 : if (tree_swap_operands_p (_q31, _q32))
37861 : 0 : std::swap (_q31, _q32);
37862 : 0 : if ((_p2 == _q34 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q34, 0) && types_match (_p2, _q34)))
37863 : : {
37864 : 0 : {
37865 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33, _q34 };
37866 : 0 : if (gimple_simplify_635 (res_op, seq, valueize, type, captures, CFN_COND_FNMA))
37867 : 0 : return true;
37868 : : }
37869 : : }
37870 : : }
37871 : : break;
37872 : 0 : case CFN_COND_FNMS:
37873 : 0 : if (gimple_call_num_args (_c1) == 5)
37874 : : {
37875 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
37876 : 0 : _q30 = do_valueize (valueize, _q30);
37877 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
37878 : 0 : _q31 = do_valueize (valueize, _q31);
37879 : 0 : tree _q32 = gimple_call_arg (_c1, 2);
37880 : 0 : _q32 = do_valueize (valueize, _q32);
37881 : 0 : tree _q33 = gimple_call_arg (_c1, 3);
37882 : 0 : _q33 = do_valueize (valueize, _q33);
37883 : 0 : tree _q34 = gimple_call_arg (_c1, 4);
37884 : 0 : _q34 = do_valueize (valueize, _q34);
37885 : 0 : if (tree_swap_operands_p (_q31, _q32))
37886 : 0 : std::swap (_q31, _q32);
37887 : 0 : if ((_p2 == _q34 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q34, 0) && types_match (_p2, _q34)))
37888 : : {
37889 : 0 : {
37890 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33, _q34 };
37891 : 0 : if (gimple_simplify_635 (res_op, seq, valueize, type, captures, CFN_COND_FNMS))
37892 : 0 : return true;
37893 : : }
37894 : : }
37895 : : }
37896 : : break;
37897 : 22 : case CFN_COND_RDIV:
37898 : 22 : if (gimple_call_num_args (_c1) == 4)
37899 : : {
37900 : 22 : tree _q30 = gimple_call_arg (_c1, 0);
37901 : 22 : _q30 = do_valueize (valueize, _q30);
37902 : 22 : tree _q31 = gimple_call_arg (_c1, 1);
37903 : 22 : _q31 = do_valueize (valueize, _q31);
37904 : 22 : tree _q32 = gimple_call_arg (_c1, 2);
37905 : 22 : _q32 = do_valueize (valueize, _q32);
37906 : 22 : tree _q33 = gimple_call_arg (_c1, 3);
37907 : 22 : _q33 = do_valueize (valueize, _q33);
37908 : 22 : if ((_p2 == _q33 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q33, 0) && types_match (_p2, _q33)))
37909 : : {
37910 : 0 : {
37911 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _q33 };
37912 : 0 : if (gimple_simplify_634 (res_op, seq, valueize, type, captures, CFN_COND_RDIV))
37913 : 0 : return true;
37914 : : }
37915 : : }
37916 : : }
37917 : : break;
37918 : : default:;
37919 : : }
37920 : : }
37921 : : break;
37922 : : default:;
37923 : : }
37924 : : return false;
37925 : : }
37926 : : #pragma GCC diagnostic pop
|