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 : 2272326912 : gimple_nop_convert (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
11 : : {
12 : 2272326912 : const tree type = TREE_TYPE (t);
13 : 2272326912 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 : 2272326912 : switch (TREE_CODE (t))
15 : : {
16 : 1497013970 : case SSA_NAME:
17 : 1497013970 : if (gimple *_d1 = get_def (valueize, t))
18 : : {
19 : 571023359 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20 : 627571576 : switch (gimple_assign_rhs_code (_a1))
21 : : {
22 : 50849496 : CASE_CONVERT:
23 : 50849496 : {
24 : 50849496 : tree _p0 = gimple_assign_rhs1 (_a1);
25 : 50849496 : _p0 = do_valueize (valueize, _p0);
26 : 50849496 : {
27 : 50849496 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
28 : 50849496 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
29 : : )
30 : : {
31 : 26831767 : {
32 : 26831767 : res_ops[0] = captures[0];
33 : 26831767 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 0, __FILE__, __LINE__, false);
34 : 26831767 : return true;
35 : : }
36 : : }
37 : : }
38 : : break;
39 : : }
40 : 2183615 : case VIEW_CONVERT_EXPR:
41 : 2183615 : {
42 : 2183615 : tree _p0 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
43 : 2183615 : if ((TREE_CODE (_p0) == SSA_NAME
44 : 2183615 : || is_gimple_min_invariant (_p0)))
45 : : {
46 : 2174792 : _p0 = do_valueize (valueize, _p0);
47 : 2174792 : {
48 : 2174792 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
49 : 323779 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[0]))
50 : 2178079 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
51 : : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[0])))
52 : 2403173 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[0])))
53 : : )
54 : : {
55 : 225094 : {
56 : 225094 : res_ops[0] = captures[0];
57 : 225094 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1, __FILE__, __LINE__, false);
58 : 225094 : 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 : 408817087 : gimple_with_known_nonzero_bits (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
76 : : {
77 : 408817087 : const tree type = TREE_TYPE (t);
78 : 408817087 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
79 : 408817087 : if (gimple_with_known_nonzero_bits_1 (t, valueize))
80 : : {
81 : 332774273 : {
82 : 332774273 : tree captures[1] ATTRIBUTE_UNUSED = { t };
83 : 332774273 : {
84 : 332774273 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
85 : 332774273 : return true;
86 : : }
87 : : }
88 : : }
89 : : return false;
90 : : }
91 : :
92 : : bool
93 : 28722092 : gimple_unsigned_integer_sat_add (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED)
94 : : {
95 : 28722092 : const tree type = TREE_TYPE (t);
96 : 28722092 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
97 : 28722092 : switch (TREE_CODE (t))
98 : : {
99 : 24499647 : case SSA_NAME:
100 : 24499647 : if (gimple *_d1 = get_def (valueize, t))
101 : : {
102 : 24499647 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
103 : 23771550 : switch (gimple_assign_rhs_code (_a1))
104 : : {
105 : 556003 : case BIT_IOR_EXPR:
106 : 556003 : {
107 : 556003 : tree _p0 = gimple_assign_rhs1 (_a1);
108 : 556003 : _p0 = do_valueize (valueize, _p0);
109 : 556003 : tree _p1 = gimple_assign_rhs2 (_a1);
110 : 556003 : _p1 = do_valueize (valueize, _p1);
111 : 556003 : if (tree_swap_operands_p (_p0, _p1))
112 : 16255 : std::swap (_p0, _p1);
113 : 556003 : switch (TREE_CODE (_p0))
114 : : {
115 : 556003 : case SSA_NAME:
116 : 556003 : if (gimple *_d2 = get_def (valueize, _p0))
117 : : {
118 : 556003 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
119 : 584274 : switch (gimple_assign_rhs_code (_a2))
120 : : {
121 : 20700 : case PLUS_EXPR:
122 : 20700 : {
123 : 20700 : tree _q20 = gimple_assign_rhs1 (_a2);
124 : 20700 : _q20 = do_valueize (valueize, _q20);
125 : 20700 : tree _q21 = gimple_assign_rhs2 (_a2);
126 : 20700 : _q21 = do_valueize (valueize, _q21);
127 : 20700 : if (tree_swap_operands_p (_q20, _q21))
128 : 3 : std::swap (_q20, _q21);
129 : 20700 : {
130 : 20700 : tree _p1_pops[2];
131 : 20700 : if (gimple_usadd_overflow_mask (_p1, _p1_pops, valueize))
132 : : {
133 : 24 : tree _q50 = _p1_pops[0];
134 : 24 : tree _q51 = _p1_pops[1];
135 : 24 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
136 : : {
137 : 22 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
138 : : {
139 : 22 : {
140 : 22 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
141 : 22 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
142 : : )
143 : : {
144 : 22 : if (types_match (type, captures[0], captures[1])
145 : : )
146 : : {
147 : 22 : {
148 : 22 : res_ops[0] = captures[0];
149 : 22 : res_ops[1] = captures[1];
150 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 44, __FILE__, __LINE__, false);
151 : 22 : 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 : 20676 : break;
184 : : }
185 : 1179 : case REALPART_EXPR:
186 : 1179 : {
187 : 1179 : tree _q20 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
188 : 1179 : if ((TREE_CODE (_q20) == SSA_NAME
189 : 1179 : || is_gimple_min_invariant (_q20)))
190 : : {
191 : 681 : _q20 = do_valueize (valueize, _q20);
192 : 681 : switch (TREE_CODE (_q20))
193 : : {
194 : 681 : case SSA_NAME:
195 : 681 : if (gimple *_d3 = get_def (valueize, _q20))
196 : : {
197 : 681 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
198 : 632 : 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 : 555971 : 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 : 692 : case NEGATE_EXPR:
362 : 692 : {
363 : 692 : tree _q20 = gimple_assign_rhs1 (_a2);
364 : 692 : _q20 = do_valueize (valueize, _q20);
365 : 692 : switch (TREE_CODE (_q20))
366 : : {
367 : 692 : case SSA_NAME:
368 : 692 : if (gimple *_d3 = get_def (valueize, _q20))
369 : : {
370 : 692 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
371 : 732 : 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 : 555971 : 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 : 555971 : default:;
591 : : }
592 : 555971 : {
593 : 555971 : tree _p0_pops[2];
594 : 555971 : 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 : 555965 : break;
661 : : }
662 : : default:;
663 : : }
664 : : }
665 : : break;
666 : : default:;
667 : : }
668 : : }
669 : : }
670 : 555965 : break;
671 : : }
672 : 173182 : case COND_EXPR:
673 : 173182 : {
674 : 173182 : tree _p0 = gimple_assign_rhs1 (_a1);
675 : 173182 : _p0 = do_valueize (valueize, _p0);
676 : 173182 : tree _p1 = gimple_assign_rhs2 (_a1);
677 : 173182 : _p1 = do_valueize (valueize, _p1);
678 : 173182 : tree _p2 = gimple_assign_rhs3 (_a1);
679 : 173182 : _p2 = do_valueize (valueize, _p2);
680 : 173182 : switch (TREE_CODE (_p0))
681 : : {
682 : 173182 : case SSA_NAME:
683 : 173182 : if (gimple *_d2 = get_def (valueize, _p0))
684 : : {
685 : 173182 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
686 : 174245 : switch (gimple_assign_rhs_code (_a2))
687 : : {
688 : 4890 : case GE_EXPR:
689 : 4890 : {
690 : 4890 : tree _q20 = gimple_assign_rhs1 (_a2);
691 : 4890 : _q20 = do_valueize (valueize, _q20);
692 : 4890 : tree _q21 = gimple_assign_rhs2 (_a2);
693 : 4890 : _q21 = do_valueize (valueize, _q21);
694 : 4890 : switch (TREE_CODE (_q20))
695 : : {
696 : 4890 : case SSA_NAME:
697 : 4890 : if (gimple *_d3 = get_def (valueize, _q20))
698 : : {
699 : 4890 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
700 : 5823 : switch (gimple_assign_rhs_code (_a3))
701 : : {
702 : 1842 : case PLUS_EXPR:
703 : 1842 : {
704 : 1842 : tree _q30 = gimple_assign_rhs1 (_a3);
705 : 1842 : _q30 = do_valueize (valueize, _q30);
706 : 1842 : tree _q31 = gimple_assign_rhs2 (_a3);
707 : 1842 : _q31 = do_valueize (valueize, _q31);
708 : 1842 : if (tree_swap_operands_p (_q30, _q31))
709 : 0 : std::swap (_q30, _q31);
710 : 1842 : 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 : 1842 : 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 : 28722092 : break;
763 : : }
764 : : default:;
765 : : }
766 : : }
767 : : break;
768 : : default:;
769 : : }
770 : : break;
771 : : }
772 : 95328 : case LT_EXPR:
773 : 95328 : {
774 : 95328 : tree _q20 = gimple_assign_rhs1 (_a2);
775 : 95328 : _q20 = do_valueize (valueize, _q20);
776 : 95328 : tree _q21 = gimple_assign_rhs2 (_a2);
777 : 95328 : _q21 = do_valueize (valueize, _q21);
778 : 95328 : switch (TREE_CODE (_q20))
779 : : {
780 : 95328 : case SSA_NAME:
781 : 95328 : if (gimple *_d3 = get_def (valueize, _q20))
782 : : {
783 : 95328 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
784 : 99411 : switch (gimple_assign_rhs_code (_a3))
785 : : {
786 : 8072 : case PLUS_EXPR:
787 : 8072 : {
788 : 8072 : tree _q30 = gimple_assign_rhs1 (_a3);
789 : 8072 : _q30 = do_valueize (valueize, _q30);
790 : 8072 : tree _q31 = gimple_assign_rhs2 (_a3);
791 : 8072 : _q31 = do_valueize (valueize, _q31);
792 : 8072 : if (tree_swap_operands_p (_q30, _q31))
793 : 21 : std::swap (_q30, _q31);
794 : 8072 : 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 : 8072 : 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 : 28722092 : break;
847 : : }
848 : : default:;
849 : : }
850 : : }
851 : : break;
852 : : default:;
853 : : }
854 : : break;
855 : : }
856 : 4609 : case LE_EXPR:
857 : 4609 : {
858 : 4609 : tree _q20 = gimple_assign_rhs1 (_a2);
859 : 4609 : _q20 = do_valueize (valueize, _q20);
860 : 4609 : tree _q21 = gimple_assign_rhs2 (_a2);
861 : 4609 : _q21 = do_valueize (valueize, _q21);
862 : 4609 : switch (TREE_CODE (_q21))
863 : : {
864 : 2583 : case SSA_NAME:
865 : 2583 : if (gimple *_d3 = get_def (valueize, _q21))
866 : : {
867 : 2583 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
868 : 2519 : switch (gimple_assign_rhs_code (_a3))
869 : : {
870 : 1777 : case PLUS_EXPR:
871 : 1777 : {
872 : 1777 : tree _q40 = gimple_assign_rhs1 (_a3);
873 : 1777 : _q40 = do_valueize (valueize, _q40);
874 : 1777 : tree _q41 = gimple_assign_rhs2 (_a3);
875 : 1777 : _q41 = do_valueize (valueize, _q41);
876 : 1777 : if (tree_swap_operands_p (_q40, _q41))
877 : 0 : std::swap (_q40, _q41);
878 : 1777 : 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 : 1777 : 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 : 4609 : break;
931 : : }
932 : : default:;
933 : : }
934 : : }
935 : : break;
936 : 4609 : default:;
937 : : }
938 : 4609 : switch (TREE_CODE (_q20))
939 : : {
940 : 4609 : case SSA_NAME:
941 : 4609 : if (gimple *_d3 = get_def (valueize, _q20))
942 : : {
943 : 4609 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
944 : 4606 : switch (gimple_assign_rhs_code (_a3))
945 : : {
946 : 2378 : case PLUS_EXPR:
947 : 2378 : {
948 : 2378 : tree _q30 = gimple_assign_rhs1 (_a3);
949 : 2378 : _q30 = do_valueize (valueize, _q30);
950 : 2378 : tree _q31 = gimple_assign_rhs2 (_a3);
951 : 2378 : _q31 = do_valueize (valueize, _q31);
952 : 2378 : if (tree_swap_operands_p (_q30, _q31))
953 : 0 : std::swap (_q30, _q31);
954 : 2378 : switch (TREE_CODE (_q30))
955 : : {
956 : 2378 : case SSA_NAME:
957 : 2378 : if (gimple *_d4 = get_def (valueize, _q30))
958 : : {
959 : 2378 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
960 : 2175 : switch (gimple_assign_rhs_code (_a4))
961 : : {
962 : 346 : CASE_CONVERT:
963 : 346 : {
964 : 346 : tree _q40 = gimple_assign_rhs1 (_a4);
965 : 346 : _q40 = do_valueize (valueize, _q40);
966 : 346 : 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 : 28722092 : 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 : 28722092 : break;
1099 : : }
1100 : : default:;
1101 : : }
1102 : : }
1103 : : break;
1104 : : default:;
1105 : : }
1106 : : break;
1107 : : }
1108 : 26776 : case GT_EXPR:
1109 : 26776 : {
1110 : 26776 : tree _q20 = gimple_assign_rhs1 (_a2);
1111 : 26776 : _q20 = do_valueize (valueize, _q20);
1112 : 26776 : tree _q21 = gimple_assign_rhs2 (_a2);
1113 : 26776 : _q21 = do_valueize (valueize, _q21);
1114 : 26776 : switch (TREE_CODE (_q21))
1115 : : {
1116 : 18017 : case SSA_NAME:
1117 : 18017 : if (gimple *_d3 = get_def (valueize, _q21))
1118 : : {
1119 : 18017 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1120 : 24804 : switch (gimple_assign_rhs_code (_a3))
1121 : : {
1122 : 1985 : case PLUS_EXPR:
1123 : 1985 : {
1124 : 1985 : tree _q40 = gimple_assign_rhs1 (_a3);
1125 : 1985 : _q40 = do_valueize (valueize, _q40);
1126 : 1985 : tree _q41 = gimple_assign_rhs2 (_a3);
1127 : 1985 : _q41 = do_valueize (valueize, _q41);
1128 : 1985 : if (tree_swap_operands_p (_q40, _q41))
1129 : 0 : std::swap (_q40, _q41);
1130 : 1985 : 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 : 1985 : 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 : 28722092 : break;
1183 : : }
1184 : : default:;
1185 : : }
1186 : : }
1187 : : break;
1188 : : default:;
1189 : : }
1190 : : break;
1191 : : }
1192 : 7515 : case EQ_EXPR:
1193 : 7515 : {
1194 : 7515 : tree _q20 = gimple_assign_rhs1 (_a2);
1195 : 7515 : _q20 = do_valueize (valueize, _q20);
1196 : 7515 : tree _q21 = gimple_assign_rhs2 (_a2);
1197 : 7515 : _q21 = do_valueize (valueize, _q21);
1198 : 7515 : if (tree_swap_operands_p (_q20, _q21))
1199 : 0 : std::swap (_q20, _q21);
1200 : 7515 : switch (TREE_CODE (_q20))
1201 : : {
1202 : 7515 : case SSA_NAME:
1203 : 7515 : if (gimple *_d3 = get_def (valueize, _q20))
1204 : : {
1205 : 7515 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1206 : 7113 : 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 : 28722092 : break;
1300 : : }
1301 : 15603 : case NE_EXPR:
1302 : 15603 : {
1303 : 15603 : tree _q20 = gimple_assign_rhs1 (_a2);
1304 : 15603 : _q20 = do_valueize (valueize, _q20);
1305 : 15603 : tree _q21 = gimple_assign_rhs2 (_a2);
1306 : 15603 : _q21 = do_valueize (valueize, _q21);
1307 : 15603 : if (tree_swap_operands_p (_q20, _q21))
1308 : 2 : std::swap (_q20, _q21);
1309 : 15603 : switch (TREE_CODE (_q20))
1310 : : {
1311 : 15591 : case SSA_NAME:
1312 : 15591 : if (gimple *_d3 = get_def (valueize, _q20))
1313 : : {
1314 : 15591 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
1315 : 13902 : 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 : 28722092 : 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 : 28722092 : 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 : 28722092 : 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 : 28722092 : 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 : 28722092 : 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 : 28722092 : 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 : 28722092 : 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 : 28722092 : break;
2299 : : }
2300 : : default:;
2301 : : }
2302 : : break;
2303 : : }
2304 : 5698300 : case PLUS_EXPR:
2305 : 5698300 : {
2306 : 5698300 : tree _p0 = gimple_assign_rhs1 (_a1);
2307 : 5698300 : _p0 = do_valueize (valueize, _p0);
2308 : 5698300 : tree _p1 = gimple_assign_rhs2 (_a1);
2309 : 5698300 : _p1 = do_valueize (valueize, _p1);
2310 : 5698300 : if (tree_swap_operands_p (_p0, _p1))
2311 : 121841 : std::swap (_p0, _p1);
2312 : 5698300 : switch (TREE_CODE (_p0))
2313 : : {
2314 : 5698292 : case SSA_NAME:
2315 : 5698292 : if (gimple *_d2 = get_def (valueize, _p0))
2316 : : {
2317 : 5698292 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
2318 : 4458974 : switch (gimple_assign_rhs_code (_a2))
2319 : : {
2320 : 16787 : case MIN_EXPR:
2321 : 16787 : {
2322 : 16787 : tree _q20 = gimple_assign_rhs1 (_a2);
2323 : 16787 : _q20 = do_valueize (valueize, _q20);
2324 : 16787 : tree _q21 = gimple_assign_rhs2 (_a2);
2325 : 16787 : _q21 = do_valueize (valueize, _q21);
2326 : 16787 : if (tree_swap_operands_p (_q20, _q21))
2327 : 19 : std::swap (_q20, _q21);
2328 : 16787 : switch (TREE_CODE (_q21))
2329 : : {
2330 : 7181 : case INTEGER_CST:
2331 : 7181 : {
2332 : 7181 : switch (TREE_CODE (_p1))
2333 : : {
2334 : 1672 : case INTEGER_CST:
2335 : 1672 : {
2336 : 1672 : {
2337 : 1672 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q21 };
2338 : 1672 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
2339 : : )
2340 : : {
2341 : 1350 : if (types_match (type, captures[0], captures[1])
2342 : : )
2343 : : {
2344 : 1350 : {
2345 : 1350 : unsigned precision = TYPE_PRECISION (type);
2346 : 1350 : wide_int cst_1 = wi::to_wide (captures[1]);
2347 : 1350 : wide_int cst_2 = wi::to_wide (captures[2]);
2348 : 1350 : wide_int max = wi::mask (precision, false, precision);
2349 : 1350 : wide_int sum = wi::add (cst_1, cst_2);
2350 : 1350 : 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 : 1350 : }
2361 : : }
2362 : : }
2363 : : }
2364 : 1634 : break;
2365 : : }
2366 : : default:;
2367 : : }
2368 : : break;
2369 : : }
2370 : : default:;
2371 : : }
2372 : 28722092 : break;
2373 : : }
2374 : : default:;
2375 : : }
2376 : : }
2377 : : break;
2378 : : default:;
2379 : : }
2380 : 28722092 : break;
2381 : : }
2382 : : default:;
2383 : : }
2384 : 3323528 : else if (gphi *_a1 = dyn_cast <gphi *> (_d1))
2385 : : {
2386 : 3323461 : basic_block _b1 = gimple_bb (_a1);
2387 : 3323461 : tree _p1, _p2;
2388 : 3323461 : gcond *_cond_1 = match_cond_with_binary_phi (_a1, &_p1, &_p2);
2389 : 3323461 : if (_cond_1)
2390 : : {
2391 : 713994 : tree _cond_lhs_1 = gimple_cond_lhs (_cond_1);
2392 : 713994 : tree _cond_rhs_1 = gimple_cond_rhs (_cond_1);
2393 : 713994 : tree _p0 = build2 (gimple_cond_code (_cond_1), boolean_type_node, _cond_lhs_1, _cond_rhs_1);
2394 : 713994 : 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 : 3323444 : 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 : 3323444 : 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 : 3323444 : 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 : 3323444 : 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 : 3323444 : 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 : 3323444 : 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 : 3323444 : break;
3181 : : }
3182 : : default:;
3183 : : }
3184 : : }
3185 : : break;
3186 : 8562 : case GE_EXPR:
3187 : 8562 : {
3188 : 8562 : tree _q20 = TREE_OPERAND (_p0, 0);
3189 : 8562 : if ((TREE_CODE (_q20) == SSA_NAME
3190 : 8562 : || is_gimple_min_invariant (_q20)))
3191 : : {
3192 : 8562 : _q20 = do_valueize (valueize, _q20);
3193 : 8562 : tree _q21 = TREE_OPERAND (_p0, 1);
3194 : 8562 : if ((TREE_CODE (_q21) == SSA_NAME
3195 : 8562 : || is_gimple_min_invariant (_q21)))
3196 : : {
3197 : 8562 : _q21 = do_valueize (valueize, _q21);
3198 : 8562 : switch (TREE_CODE (_q20))
3199 : : {
3200 : 8556 : case SSA_NAME:
3201 : 8556 : if (gimple *_d2 = get_def (valueize, _q20))
3202 : : {
3203 : 8556 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3204 : 9165 : switch (gimple_assign_rhs_code (_a2))
3205 : : {
3206 : 1193 : case PLUS_EXPR:
3207 : 1193 : {
3208 : 1193 : tree _q30 = gimple_assign_rhs1 (_a2);
3209 : 1193 : _q30 = do_valueize (valueize, _q30);
3210 : 1193 : tree _q31 = gimple_assign_rhs2 (_a2);
3211 : 1193 : _q31 = do_valueize (valueize, _q31);
3212 : 1193 : if (tree_swap_operands_p (_q30, _q31))
3213 : 0 : std::swap (_q30, _q31);
3214 : 1193 : 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 : 1193 : 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 : 3323444 : break;
3267 : : }
3268 : : default:;
3269 : : }
3270 : : }
3271 : : break;
3272 : : default:;
3273 : : }
3274 : : }
3275 : : }
3276 : : break;
3277 : : }
3278 : 42457 : case LT_EXPR:
3279 : 42457 : {
3280 : 42457 : tree _q20 = TREE_OPERAND (_p0, 0);
3281 : 42457 : if ((TREE_CODE (_q20) == SSA_NAME
3282 : 42457 : || is_gimple_min_invariant (_q20)))
3283 : : {
3284 : 42457 : _q20 = do_valueize (valueize, _q20);
3285 : 42457 : tree _q21 = TREE_OPERAND (_p0, 1);
3286 : 42457 : if ((TREE_CODE (_q21) == SSA_NAME
3287 : 42457 : || is_gimple_min_invariant (_q21)))
3288 : : {
3289 : 42457 : _q21 = do_valueize (valueize, _q21);
3290 : 42457 : switch (TREE_CODE (_q20))
3291 : : {
3292 : 42457 : case SSA_NAME:
3293 : 42457 : if (gimple *_d2 = get_def (valueize, _q20))
3294 : : {
3295 : 42457 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3296 : 34435 : switch (gimple_assign_rhs_code (_a2))
3297 : : {
3298 : 2081 : case PLUS_EXPR:
3299 : 2081 : {
3300 : 2081 : tree _q30 = gimple_assign_rhs1 (_a2);
3301 : 2081 : _q30 = do_valueize (valueize, _q30);
3302 : 2081 : tree _q31 = gimple_assign_rhs2 (_a2);
3303 : 2081 : _q31 = do_valueize (valueize, _q31);
3304 : 2081 : if (tree_swap_operands_p (_q30, _q31))
3305 : 0 : std::swap (_q30, _q31);
3306 : 2081 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
3307 : : {
3308 : 820 : 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 : 2081 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
3333 : : {
3334 : 165 : 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 : 3323444 : break;
3359 : : }
3360 : : default:;
3361 : : }
3362 : : }
3363 : : break;
3364 : : default:;
3365 : : }
3366 : : }
3367 : : }
3368 : : break;
3369 : : }
3370 : 17920 : case LE_EXPR:
3371 : 17920 : {
3372 : 17920 : tree _q20 = TREE_OPERAND (_p0, 0);
3373 : 17920 : if ((TREE_CODE (_q20) == SSA_NAME
3374 : 17920 : || is_gimple_min_invariant (_q20)))
3375 : : {
3376 : 17920 : _q20 = do_valueize (valueize, _q20);
3377 : 17920 : tree _q21 = TREE_OPERAND (_p0, 1);
3378 : 17920 : if ((TREE_CODE (_q21) == SSA_NAME
3379 : 17920 : || is_gimple_min_invariant (_q21)))
3380 : : {
3381 : 17920 : _q21 = do_valueize (valueize, _q21);
3382 : 17920 : switch (TREE_CODE (_q21))
3383 : : {
3384 : 5870 : case SSA_NAME:
3385 : 5870 : if (gimple *_d2 = get_def (valueize, _q21))
3386 : : {
3387 : 5870 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3388 : 7416 : switch (gimple_assign_rhs_code (_a2))
3389 : : {
3390 : 565 : case PLUS_EXPR:
3391 : 565 : {
3392 : 565 : tree _q40 = gimple_assign_rhs1 (_a2);
3393 : 565 : _q40 = do_valueize (valueize, _q40);
3394 : 565 : tree _q41 = gimple_assign_rhs2 (_a2);
3395 : 565 : _q41 = do_valueize (valueize, _q41);
3396 : 565 : if (tree_swap_operands_p (_q40, _q41))
3397 : 0 : std::swap (_q40, _q41);
3398 : 565 : 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 : 565 : 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 : 17920 : break;
3451 : : }
3452 : : default:;
3453 : : }
3454 : : }
3455 : : break;
3456 : 17920 : default:;
3457 : : }
3458 : 17920 : switch (TREE_CODE (_q20))
3459 : : {
3460 : 17920 : case SSA_NAME:
3461 : 17920 : if (gimple *_d2 = get_def (valueize, _q20))
3462 : : {
3463 : 17920 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3464 : 19355 : switch (gimple_assign_rhs_code (_a2))
3465 : : {
3466 : 2792 : case PLUS_EXPR:
3467 : 2792 : {
3468 : 2792 : tree _q30 = gimple_assign_rhs1 (_a2);
3469 : 2792 : _q30 = do_valueize (valueize, _q30);
3470 : 2792 : tree _q31 = gimple_assign_rhs2 (_a2);
3471 : 2792 : _q31 = do_valueize (valueize, _q31);
3472 : 2792 : if (tree_swap_operands_p (_q30, _q31))
3473 : 0 : std::swap (_q30, _q31);
3474 : 2792 : switch (TREE_CODE (_q30))
3475 : : {
3476 : 2792 : case SSA_NAME:
3477 : 2792 : if (gimple *_d3 = get_def (valueize, _q30))
3478 : : {
3479 : 2792 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
3480 : 2274 : switch (gimple_assign_rhs_code (_a3))
3481 : : {
3482 : 1148 : CASE_CONVERT:
3483 : 1148 : {
3484 : 1148 : tree _q40 = gimple_assign_rhs1 (_a3);
3485 : 1148 : _q40 = do_valueize (valueize, _q40);
3486 : 1148 : switch (TREE_CODE (_q31))
3487 : : {
3488 : 45 : case SSA_NAME:
3489 : 45 : if (gimple *_d4 = get_def (valueize, _q31))
3490 : : {
3491 : 45 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
3492 : 45 : 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 : 3323444 : 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 : 3323444 : break;
3619 : : }
3620 : : default:;
3621 : : }
3622 : : }
3623 : : break;
3624 : : default:;
3625 : : }
3626 : : }
3627 : : }
3628 : : break;
3629 : : }
3630 : 83894 : case GT_EXPR:
3631 : 83894 : {
3632 : 83894 : tree _q20 = TREE_OPERAND (_p0, 0);
3633 : 83894 : if ((TREE_CODE (_q20) == SSA_NAME
3634 : 83894 : || is_gimple_min_invariant (_q20)))
3635 : : {
3636 : 83894 : _q20 = do_valueize (valueize, _q20);
3637 : 83894 : tree _q21 = TREE_OPERAND (_p0, 1);
3638 : 83894 : if ((TREE_CODE (_q21) == SSA_NAME
3639 : 83894 : || is_gimple_min_invariant (_q21)))
3640 : : {
3641 : 83894 : _q21 = do_valueize (valueize, _q21);
3642 : 83894 : switch (TREE_CODE (_q21))
3643 : : {
3644 : 50114 : case SSA_NAME:
3645 : 50114 : if (gimple *_d2 = get_def (valueize, _q21))
3646 : : {
3647 : 50114 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3648 : 45427 : switch (gimple_assign_rhs_code (_a2))
3649 : : {
3650 : 3013 : case PLUS_EXPR:
3651 : 3013 : {
3652 : 3013 : tree _q40 = gimple_assign_rhs1 (_a2);
3653 : 3013 : _q40 = do_valueize (valueize, _q40);
3654 : 3013 : tree _q41 = gimple_assign_rhs2 (_a2);
3655 : 3013 : _q41 = do_valueize (valueize, _q41);
3656 : 3013 : if (tree_swap_operands_p (_q40, _q41))
3657 : 0 : std::swap (_q40, _q41);
3658 : 3013 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
3659 : : {
3660 : 1344 : 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 : 3008 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
3685 : : {
3686 : 1261 : 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 : 3323444 : break;
3711 : : }
3712 : : default:;
3713 : : }
3714 : : }
3715 : : break;
3716 : : default:;
3717 : : }
3718 : : }
3719 : : }
3720 : : break;
3721 : : }
3722 : 303141 : case EQ_EXPR:
3723 : 303141 : {
3724 : 303141 : tree _q20 = TREE_OPERAND (_p0, 0);
3725 : 303141 : if ((TREE_CODE (_q20) == SSA_NAME
3726 : 303141 : || is_gimple_min_invariant (_q20)))
3727 : : {
3728 : 303141 : _q20 = do_valueize (valueize, _q20);
3729 : 303141 : tree _q21 = TREE_OPERAND (_p0, 1);
3730 : 303141 : if ((TREE_CODE (_q21) == SSA_NAME
3731 : 303141 : || is_gimple_min_invariant (_q21)))
3732 : : {
3733 : 303141 : _q21 = do_valueize (valueize, _q21);
3734 : 303141 : if (tree_swap_operands_p (_q20, _q21))
3735 : 0 : std::swap (_q20, _q21);
3736 : 303141 : switch (TREE_CODE (_q20))
3737 : : {
3738 : 303074 : case SSA_NAME:
3739 : 303074 : if (gimple *_d2 = get_def (valueize, _q20))
3740 : : {
3741 : 303074 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3742 : 510428 : 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 : 3323444 : break;
3838 : : }
3839 : 251071 : case NE_EXPR:
3840 : 251071 : {
3841 : 251071 : tree _q20 = TREE_OPERAND (_p0, 0);
3842 : 251071 : if ((TREE_CODE (_q20) == SSA_NAME
3843 : 251071 : || is_gimple_min_invariant (_q20)))
3844 : : {
3845 : 251071 : _q20 = do_valueize (valueize, _q20);
3846 : 251071 : tree _q21 = TREE_OPERAND (_p0, 1);
3847 : 251071 : if ((TREE_CODE (_q21) == SSA_NAME
3848 : 251071 : || is_gimple_min_invariant (_q21)))
3849 : : {
3850 : 251071 : _q21 = do_valueize (valueize, _q21);
3851 : 251071 : if (tree_swap_operands_p (_q20, _q21))
3852 : 0 : std::swap (_q20, _q21);
3853 : 251071 : switch (TREE_CODE (_q20))
3854 : : {
3855 : 250816 : case SSA_NAME:
3856 : 250816 : if (gimple *_d2 = get_def (valueize, _q20))
3857 : : {
3858 : 250816 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
3859 : 328853 : switch (gimple_assign_rhs_code (_a2))
3860 : : {
3861 : 33773 : case IMAGPART_EXPR:
3862 : 33773 : {
3863 : 33773 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a2), 0);
3864 : 33773 : if ((TREE_CODE (_q30) == SSA_NAME
3865 : 33773 : || is_gimple_min_invariant (_q30)))
3866 : : {
3867 : 33773 : _q30 = do_valueize (valueize, _q30);
3868 : 33773 : switch (TREE_CODE (_q30))
3869 : : {
3870 : 33773 : case SSA_NAME:
3871 : 33773 : if (gimple *_d3 = get_def (valueize, _q30))
3872 : : {
3873 : 33773 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
3874 : 33761 : switch (gimple_call_combined_fn (_c3))
3875 : : {
3876 : 9246 : case CFN_ADD_OVERFLOW:
3877 : 9246 : if (gimple_call_num_args (_c3) == 2)
3878 : : {
3879 : 9246 : tree _q40 = gimple_call_arg (_c3, 0);
3880 : 9246 : _q40 = do_valueize (valueize, _q40);
3881 : 9246 : tree _q41 = gimple_call_arg (_c3, 1);
3882 : 9246 : _q41 = do_valueize (valueize, _q41);
3883 : 9246 : if (tree_swap_operands_p (_q40, _q41))
3884 : 0 : std::swap (_q40, _q41);
3885 : 9246 : if (integer_zerop (_q21))
3886 : : {
3887 : 9246 : 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 : 9234 : switch (TREE_CODE (_q41))
3936 : : {
3937 : 6968 : case INTEGER_CST:
3938 : 6968 : {
3939 : 6968 : if (integer_zerop (_q21))
3940 : : {
3941 : 6968 : 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 : 3323444 : break;
4013 : : }
4014 : : default:;
4015 : : }
4016 : : }
4017 : : }
4018 : : }
4019 : : break;
4020 : : default:;
4021 : : }
4022 : : return false;
4023 : : }
4024 : :
4025 : : bool
4026 : 2 : gimple_simplify_180 (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 : : {
4030 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4031 : 2 : gimple_seq *lseq = seq;
4032 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail863;
4033 : 2 : {
4034 : 2 : res_op->set_op (EQ_EXPR, type, 2);
4035 : 2 : res_op->ops[0] = captures[0];
4036 : 2 : res_op->ops[1] = captures[1];
4037 : 2 : res_op->resimplify (lseq, valueize);
4038 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 309, __FILE__, __LINE__, true);
4039 : : return true;
4040 : : }
4041 : 0 : next_after_fail863:;
4042 : 0 : return false;
4043 : : }
4044 : :
4045 : : bool
4046 : 2 : gimple_simplify_184 (gimple_match_op *res_op, gimple_seq *seq,
4047 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4048 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
4049 : : {
4050 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4051 : 2 : gimple_seq *lseq = seq;
4052 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail867;
4053 : 2 : {
4054 : 2 : tree tem;
4055 : 2 : tem = captures[1];
4056 : 2 : res_op->set_value (tem);
4057 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 310, __FILE__, __LINE__, true);
4058 : : return true;
4059 : : }
4060 : 0 : next_after_fail867:;
4061 : 0 : return false;
4062 : : }
4063 : :
4064 : : bool
4065 : 1211 : gimple_simplify_188 (gimple_match_op *res_op, gimple_seq *seq,
4066 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4067 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
4068 : : {
4069 : 1211 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4070 : 1211 : if (! FLOAT_TYPE_P (type)
4071 : 2422 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
4072 : : )
4073 : : {
4074 : 365 : gimple_seq *lseq = seq;
4075 : 365 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail872;
4076 : 365 : {
4077 : 365 : res_op->set_op (LSHIFT_EXPR, type, 2);
4078 : 365 : res_op->ops[0] = captures[0];
4079 : 365 : res_op->ops[1] = captures[2];
4080 : 365 : res_op->resimplify (lseq, valueize);
4081 : 365 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 315, __FILE__, __LINE__, true);
4082 : 365 : return true;
4083 : : }
4084 : 0 : next_after_fail872:;
4085 : : }
4086 : : return false;
4087 : : }
4088 : :
4089 : : bool
4090 : 0 : gimple_simplify_191 (gimple_match_op *res_op, gimple_seq *seq,
4091 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4092 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
4093 : : {
4094 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4095 : 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4096 : : )
4097 : : {
4098 : 0 : gimple_seq *lseq = seq;
4099 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail875;
4100 : 0 : {
4101 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
4102 : 0 : {
4103 : 0 : tree _o1[1], _r1;
4104 : 0 : _o1[0] = captures[0];
4105 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4106 : 0 : tem_op.resimplify (lseq, valueize);
4107 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4108 : 0 : if (!_r1) goto next_after_fail875;
4109 : 0 : res_op->ops[0] = _r1;
4110 : : }
4111 : 0 : res_op->resimplify (lseq, valueize);
4112 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 316, __FILE__, __LINE__, true);
4113 : 0 : return true;
4114 : : }
4115 : : next_after_fail875:;
4116 : : }
4117 : : return false;
4118 : : }
4119 : :
4120 : : bool
4121 : 0 : gimple_simplify_196 (gimple_match_op *res_op, gimple_seq *seq,
4122 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4123 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
4124 : : {
4125 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4126 : 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4127 : : )
4128 : : {
4129 : 0 : gimple_seq *lseq = seq;
4130 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail880;
4131 : 0 : {
4132 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
4133 : 0 : {
4134 : 0 : tree _o1[1], _r1;
4135 : 0 : _o1[0] = captures[0];
4136 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4137 : 0 : tem_op.resimplify (lseq, valueize);
4138 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4139 : 0 : if (!_r1) goto next_after_fail880;
4140 : 0 : res_op->ops[0] = _r1;
4141 : : }
4142 : 0 : res_op->resimplify (lseq, valueize);
4143 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 317, __FILE__, __LINE__, true);
4144 : 0 : return true;
4145 : : }
4146 : : next_after_fail880:;
4147 : : }
4148 : : return false;
4149 : : }
4150 : :
4151 : : bool
4152 : 0 : gimple_simplify_202 (gimple_match_op *res_op, gimple_seq *seq,
4153 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4154 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
4155 : : {
4156 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4157 : 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4158 : : )
4159 : : {
4160 : 0 : gimple_seq *lseq = seq;
4161 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail886;
4162 : 0 : {
4163 : 0 : res_op->set_op (NEGATE_EXPR, type, 1);
4164 : 0 : {
4165 : 0 : tree _o1[1], _r1;
4166 : 0 : _o1[0] = captures[0];
4167 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4168 : 0 : tem_op.resimplify (lseq, valueize);
4169 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4170 : 0 : if (!_r1) goto next_after_fail886;
4171 : 0 : res_op->ops[0] = _r1;
4172 : : }
4173 : 0 : res_op->resimplify (lseq, valueize);
4174 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 317, __FILE__, __LINE__, true);
4175 : 0 : return true;
4176 : : }
4177 : : next_after_fail886:;
4178 : : }
4179 : : return false;
4180 : : }
4181 : :
4182 : : bool
4183 : 2 : gimple_simplify_208 (gimple_match_op *res_op, gimple_seq *seq,
4184 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4185 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4186 : : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
4187 : : {
4188 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4189 : 2 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4190 : : )
4191 : : {
4192 : 2 : gimple_seq *lseq = seq;
4193 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail892;
4194 : 2 : {
4195 : 2 : res_op->set_op (NEGATE_EXPR, type, 1);
4196 : 2 : {
4197 : 2 : tree _o1[1], _r1;
4198 : 2 : _o1[0] = captures[0];
4199 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4200 : 2 : tem_op.resimplify (lseq, valueize);
4201 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4202 : 2 : if (!_r1) goto next_after_fail892;
4203 : 1 : res_op->ops[0] = _r1;
4204 : : }
4205 : 1 : res_op->resimplify (lseq, valueize);
4206 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 319, __FILE__, __LINE__, true);
4207 : 1 : return true;
4208 : : }
4209 : : next_after_fail892:;
4210 : : }
4211 : : return false;
4212 : : }
4213 : :
4214 : : bool
4215 : 971 : gimple_simplify_216 (gimple_match_op *res_op, gimple_seq *seq,
4216 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4217 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4218 : : const enum tree_code ARG_UNUSED (cmp))
4219 : : {
4220 : 971 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4221 : 971 : if (!canonicalize_math_p ()
4222 : : )
4223 : : {
4224 : 304 : if (INTEGRAL_TYPE_P (type)
4225 : 304 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4226 : : )
4227 : : {
4228 : 304 : gimple_seq *lseq = seq;
4229 : 304 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail902;
4230 : 304 : {
4231 : 304 : res_op->set_op (COND_EXPR, type, 3);
4232 : 304 : res_op->ops[0] = captures[0];
4233 : 304 : res_op->ops[1] = captures[3];
4234 : 304 : res_op->ops[2] = build_zero_cst (type);
4235 : 304 : res_op->resimplify (lseq, valueize);
4236 : 304 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 325, __FILE__, __LINE__, true);
4237 : 304 : return true;
4238 : : }
4239 : 0 : next_after_fail902:;
4240 : : }
4241 : : }
4242 : : return false;
4243 : : }
4244 : :
4245 : : bool
4246 : 5441 : gimple_simplify_221 (gimple_match_op *res_op, gimple_seq *seq,
4247 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4248 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4249 : : const enum tree_code ARG_UNUSED (op))
4250 : : {
4251 : 5441 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4252 : 5441 : {
4253 : 5441 : poly_widest_int factor;
4254 : 5441 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
4255 : 5347 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
4256 : 10788 : && multiple_p (wi::to_poly_widest (captures[3]), wi::to_widest (captures[1]), &factor)
4257 : : )
4258 : : {
4259 : 4300 : {
4260 : 4300 : wi::overflow_type overflow;
4261 : 4300 : wide_int mul;
4262 : 4300 : if (types_match (type, TREE_TYPE (captures[2]))
4263 : 2434 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
4264 : 130 : && TREE_CODE (captures[2]) == INTEGER_CST
4265 : 130 : && TREE_CODE (captures[3]) == INTEGER_CST
4266 : 4430 : && (mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
4267 : 130 : TYPE_SIGN (type), &overflow),
4268 : 130 : !overflow)
4269 : 4427 : && (TYPE_UNSIGNED (type)
4270 : 4413 : || known_eq (factor, 1)
4271 : 113 : || (get_range_pos_neg (captures[0])
4272 : 226 : | (((op == PLUS_EXPR) ^ (tree_int_cst_sgn (captures[2]) < 0))
4273 : 113 : ? 1 : 2)) != 3)
4274 : : )
4275 : : {
4276 : 14 : gimple_seq *lseq = seq;
4277 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail907;
4278 : 14 : {
4279 : 14 : res_op->set_op (op, type, 2);
4280 : 14 : {
4281 : 14 : tree _o1[2], _r1;
4282 : 14 : _o1[0] = captures[0];
4283 : 14 : _o1[1] = wide_int_to_tree (type, factor);
4284 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4285 : 14 : tem_op.resimplify (lseq, valueize);
4286 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4287 : 14 : if (!_r1) goto next_after_fail907;
4288 : 14 : res_op->ops[0] = _r1;
4289 : : }
4290 : 14 : res_op->ops[1] = wide_int_to_tree (type, mul);
4291 : 14 : res_op->resimplify (lseq, valueize);
4292 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 330, __FILE__, __LINE__, true);
4293 : 14 : return true;
4294 : : }
4295 : 1632 : next_after_fail907:;
4296 : : }
4297 : : else
4298 : : {
4299 : 4286 : {
4300 : 4286 : tree utype = unsigned_type_for (type);
4301 : 4286 : gimple_seq *lseq = seq;
4302 : 4286 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail908;
4303 : 4286 : {
4304 : 4286 : res_op->set_op (NOP_EXPR, type, 1);
4305 : 4286 : {
4306 : 4286 : tree _o1[2], _r1;
4307 : 4286 : {
4308 : 4286 : tree _o2[2], _r2;
4309 : 4286 : {
4310 : 4286 : tree _o3[1], _r3;
4311 : 4286 : _o3[0] = captures[0];
4312 : 4286 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
4313 : 4286 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
4314 : : {
4315 : 4286 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
4316 : 4286 : tem_op.resimplify (lseq, valueize);
4317 : 4286 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
4318 : 4286 : if (!_r3) goto next_after_fail908;
4319 : : }
4320 : : else
4321 : : _r3 = _o3[0];
4322 : 2655 : _o2[0] = _r3;
4323 : : }
4324 : 2655 : _o2[1] = wide_int_to_tree (utype, factor);
4325 : 2655 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4326 : 2655 : tem_op.resimplify (lseq, valueize);
4327 : 2655 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
4328 : 2655 : if (!_r2) goto next_after_fail908;
4329 : 2654 : _o1[0] = _r2;
4330 : : }
4331 : 2654 : {
4332 : 2654 : tree _o2[2], _r2;
4333 : 2654 : {
4334 : 2654 : tree _o3[1], _r3;
4335 : 2654 : _o3[0] = captures[3];
4336 : 2654 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
4337 : 2654 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
4338 : : {
4339 : 84 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
4340 : 84 : tem_op.resimplify (lseq, valueize);
4341 : 84 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
4342 : 84 : if (!_r3) goto next_after_fail908;
4343 : : }
4344 : : else
4345 : : _r3 = _o3[0];
4346 : 2654 : _o2[0] = _r3;
4347 : : }
4348 : 2654 : {
4349 : 2654 : tree _o3[1], _r3;
4350 : 2654 : _o3[0] = captures[2];
4351 : 2654 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
4352 : 2654 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
4353 : : {
4354 : 975 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
4355 : 975 : tem_op.resimplify (lseq, valueize);
4356 : 975 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
4357 : 975 : if (!_r3) goto next_after_fail908;
4358 : : }
4359 : : else
4360 : : _r3 = _o3[0];
4361 : 2654 : _o2[1] = _r3;
4362 : : }
4363 : 2654 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4364 : 2654 : tem_op.resimplify (lseq, valueize);
4365 : 2654 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
4366 : 2654 : if (!_r2) goto next_after_fail908;
4367 : 2654 : _o1[1] = _r2;
4368 : : }
4369 : 2654 : (*res_op).set_op (op, TREE_TYPE (_o1[0]), 2);
4370 : 2654 : (*res_op).ops[0] = _o1[0];
4371 : 2654 : (*res_op).ops[1] = _o1[1];
4372 : 2654 : (*res_op).resimplify (lseq, valueize);
4373 : : }
4374 : 2654 : if (type != res_op->type
4375 : 2654 : && !useless_type_conversion_p (type, res_op->type))
4376 : : {
4377 : 84 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail908;
4378 : 84 : res_op->set_op (NOP_EXPR, type, 1);
4379 : 84 : res_op->resimplify (lseq, valueize);
4380 : : }
4381 : 2654 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 331, __FILE__, __LINE__, true);
4382 : 2654 : return true;
4383 : : }
4384 : 1632 : next_after_fail908:;
4385 : : }
4386 : : }
4387 : 1632 : }
4388 : : }
4389 : 5441 : }
4390 : 2773 : return false;
4391 : : }
4392 : :
4393 : : bool
4394 : 7998 : gimple_simplify_242 (gimple_match_op *res_op, gimple_seq *seq,
4395 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4396 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4397 : : const enum tree_code ARG_UNUSED (op))
4398 : : {
4399 : 7998 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4400 : 7998 : gimple_seq *lseq = seq;
4401 : 7998 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail945;
4402 : 7998 : {
4403 : 7998 : res_op->set_op (op, type, 2);
4404 : 7998 : res_op->ops[0] = captures[1];
4405 : 7998 : res_op->ops[1] = captures[2];
4406 : 7998 : res_op->resimplify (lseq, valueize);
4407 : 7998 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 367, __FILE__, __LINE__, true);
4408 : : return true;
4409 : : }
4410 : 0 : next_after_fail945:;
4411 : 0 : return false;
4412 : : }
4413 : :
4414 : : bool
4415 : 919 : gimple_simplify_245 (gimple_match_op *res_op, gimple_seq *seq,
4416 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4417 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4418 : : const enum tree_code ARG_UNUSED (op))
4419 : : {
4420 : 919 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4421 : 919 : if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))
4422 : : )
4423 : : {
4424 : 919 : gimple_seq *lseq = seq;
4425 : 919 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail948;
4426 : 919 : {
4427 : 919 : res_op->set_op (op, type, 2);
4428 : 919 : res_op->ops[0] = captures[1];
4429 : 919 : res_op->ops[1] = captures[3];
4430 : 919 : res_op->resimplify (lseq, valueize);
4431 : 919 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 370, __FILE__, __LINE__, true);
4432 : 919 : return true;
4433 : : }
4434 : 0 : next_after_fail948:;
4435 : : }
4436 : : return false;
4437 : : }
4438 : :
4439 : : bool
4440 : 49 : gimple_simplify_249 (gimple_match_op *res_op, gimple_seq *seq,
4441 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4442 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4443 : : const enum tree_code ARG_UNUSED (neeq))
4444 : : {
4445 : 49 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4446 : 49 : {
4447 : 49 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
4448 : 49 : if (ptr_difference_const (captures[0], captures[2], &diff)
4449 : : )
4450 : : {
4451 : 49 : gimple_seq *lseq = seq;
4452 : 49 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail952;
4453 : 49 : {
4454 : 49 : res_op->set_op (neeq, type, 2);
4455 : 49 : {
4456 : 49 : tree _o1[2], _r1;
4457 : 49 : _o1[0] = build_int_cst_type (inner_type, diff);
4458 : 49 : _o1[1] = captures[1];
4459 : 49 : gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4460 : 49 : tem_op.resimplify (lseq, valueize);
4461 : 49 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4462 : 49 : if (!_r1) goto next_after_fail952;
4463 : 29 : res_op->ops[0] = _r1;
4464 : : }
4465 : 29 : res_op->ops[1] = captures[3];
4466 : 29 : res_op->resimplify (lseq, valueize);
4467 : 29 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 373, __FILE__, __LINE__, true);
4468 : 29 : return true;
4469 : : }
4470 : 20 : next_after_fail952:;
4471 : : }
4472 : : }
4473 : 20 : return false;
4474 : : }
4475 : :
4476 : : bool
4477 : 24780 : gimple_simplify_254 (gimple_match_op *res_op, gimple_seq *seq,
4478 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4479 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4480 : : const enum tree_code ARG_UNUSED (minmax),
4481 : : const enum tree_code ARG_UNUSED (cmp),
4482 : : const enum tree_code ARG_UNUSED (out))
4483 : : {
4484 : 24780 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4485 : 49551 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4486 : 48599 : && (!VECTOR_TYPE_P (TREE_TYPE (captures[0]))
4487 : 5 : || (VECTOR_TYPE_P (type)
4488 : 0 : && (!expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, cmp)
4489 : 0 : || expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, out))))
4490 : : )
4491 : : {
4492 : 23823 : gimple_seq *lseq = seq;
4493 : 23823 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail957;
4494 : 23823 : {
4495 : 23823 : res_op->set_op (out, type, 2);
4496 : 23823 : res_op->ops[0] = captures[0];
4497 : 23823 : res_op->ops[1] = captures[1];
4498 : 23823 : res_op->resimplify (lseq, valueize);
4499 : 23823 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 378, __FILE__, __LINE__, true);
4500 : 23823 : return true;
4501 : : }
4502 : 0 : next_after_fail957:;
4503 : : }
4504 : : return false;
4505 : : }
4506 : :
4507 : : bool
4508 : 3247 : gimple_simplify_258 (gimple_match_op *res_op, gimple_seq *seq,
4509 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4510 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4511 : : const enum tree_code ARG_UNUSED (cmp),
4512 : : const enum tree_code ARG_UNUSED (icmp))
4513 : : {
4514 : 3247 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4515 : 3247 : {
4516 : 3247 : int c1 = wi::clz (wi::to_wide (captures[0]));
4517 : 3247 : int c2 = wi::clz (wi::to_wide (captures[2]));
4518 : 3247 : if (c1 < c2
4519 : : )
4520 : : {
4521 : 0 : gimple_seq *lseq = seq;
4522 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail963;
4523 : 0 : {
4524 : 0 : tree tem;
4525 : 0 : tem = constant_boolean_node (cmp == NE_EXPR ? false : true, type);
4526 : 0 : res_op->set_value (tem);
4527 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 384, __FILE__, __LINE__, true);
4528 : 0 : return true;
4529 : : }
4530 : 0 : next_after_fail963:;
4531 : : }
4532 : : else
4533 : : {
4534 : 3247 : gimple_seq *lseq = seq;
4535 : 3247 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail964;
4536 : 3247 : {
4537 : 3247 : res_op->set_op (icmp, type, 2);
4538 : 3247 : res_op->ops[0] = captures[1];
4539 : 3247 : res_op->ops[1] = build_int_cst (TREE_TYPE (captures[1]), c1 - c2);
4540 : 3247 : res_op->resimplify (lseq, valueize);
4541 : 3247 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 385, __FILE__, __LINE__, true);
4542 : 3247 : return true;
4543 : : }
4544 : 0 : next_after_fail964:;
4545 : : }
4546 : : }
4547 : : return false;
4548 : : }
4549 : :
4550 : : bool
4551 : 708 : gimple_simplify_263 (gimple_match_op *res_op, gimple_seq *seq,
4552 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4553 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4554 : : const enum tree_code ARG_UNUSED (cmp))
4555 : : {
4556 : 708 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4557 : 708 : {
4558 : 708 : int cand = wi::ctz (wi::to_wide (captures[2])) - wi::ctz (wi::to_wide (captures[0]));
4559 : 1416 : if (cand < 0
4560 : 708 : || (!integer_zerop (captures[2])
4561 : 809 : && wi::lshift (wi::to_wide (captures[0]), cand) != wi::to_wide (captures[2]))
4562 : : )
4563 : : {
4564 : 0 : gimple_seq *lseq = seq;
4565 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail977;
4566 : 0 : {
4567 : 0 : tree tem;
4568 : 0 : tem = constant_boolean_node (cmp == NE_EXPR, type);
4569 : 0 : res_op->set_value (tem);
4570 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 398, __FILE__, __LINE__, true);
4571 : 101 : return true;
4572 : : }
4573 : 0 : next_after_fail977:;
4574 : : }
4575 : : else
4576 : : {
4577 : 708 : if (!integer_zerop (captures[2])
4578 : 708 : && wi::lshift (wi::to_wide (captures[0]), cand) == wi::to_wide (captures[2])
4579 : : )
4580 : : {
4581 : 101 : gimple_seq *lseq = seq;
4582 : 101 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail978;
4583 : 101 : {
4584 : 101 : res_op->set_op (cmp, type, 2);
4585 : 101 : res_op->ops[0] = captures[1];
4586 : 101 : res_op->ops[1] = build_int_cst (TREE_TYPE (captures[1]), cand);
4587 : 101 : res_op->resimplify (lseq, valueize);
4588 : 101 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 399, __FILE__, __LINE__, true);
4589 : 101 : return true;
4590 : : }
4591 : 0 : next_after_fail978:;
4592 : : }
4593 : : }
4594 : : }
4595 : 607 : return false;
4596 : : }
4597 : :
4598 : : bool
4599 : 162 : gimple_simplify_269 (gimple_match_op *res_op, gimple_seq *seq,
4600 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4601 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4602 : : const enum tree_code ARG_UNUSED (cmp),
4603 : : const combined_fn ARG_UNUSED (bswap))
4604 : : {
4605 : 162 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4606 : 162 : {
4607 : 162 : tree ctype = TREE_TYPE (captures[1]);
4608 : 162 : gimple_seq *lseq = seq;
4609 : 162 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail984;
4610 : 162 : {
4611 : 162 : res_op->set_op (cmp, type, 2);
4612 : 162 : {
4613 : 162 : tree _o1[1], _r1;
4614 : 162 : _o1[0] = captures[0];
4615 : 162 : if (ctype != TREE_TYPE (_o1[0]) /* XXX */
4616 : 162 : && !useless_type_conversion_p (ctype, TREE_TYPE (_o1[0])))
4617 : : {
4618 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, ctype, _o1[0]);
4619 : 0 : tem_op.resimplify (lseq, valueize);
4620 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
4621 : 0 : if (!_r1) goto next_after_fail984;
4622 : : }
4623 : : else
4624 : : _r1 = _o1[0];
4625 : 162 : res_op->ops[0] = _r1;
4626 : : }
4627 : 162 : {
4628 : 162 : tree _o1[1], _r1;
4629 : 162 : _o1[0] = captures[1];
4630 : 162 : gimple_match_op tem_op (res_op->cond.any_else (), bswap, TREE_TYPE (_o1[0]), _o1[0]);
4631 : 162 : tem_op.resimplify (NULL, valueize);
4632 : 162 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
4633 : 162 : if (!_r1) goto next_after_fail984;
4634 : 162 : res_op->ops[1] = _r1;
4635 : : }
4636 : 162 : res_op->resimplify (lseq, valueize);
4637 : 162 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 405, __FILE__, __LINE__, true);
4638 : : return true;
4639 : : }
4640 : : next_after_fail984:;
4641 : : }
4642 : : return false;
4643 : : }
4644 : :
4645 : : bool
4646 : 80223 : gimple_simplify_273 (gimple_match_op *res_op, gimple_seq *seq,
4647 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4648 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4649 : : const enum tree_code ARG_UNUSED (cmp))
4650 : : {
4651 : 80223 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4652 : 80223 : if (single_use (captures[0])
4653 : : )
4654 : : {
4655 : 15511 : gimple_seq *lseq = seq;
4656 : 15511 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail989;
4657 : 15511 : {
4658 : 15511 : res_op->set_op (cmp, type, 2);
4659 : 15511 : res_op->ops[0] = captures[1];
4660 : 15511 : res_op->ops[1] = captures[2];
4661 : 15511 : res_op->resimplify (lseq, valueize);
4662 : 15511 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 409, __FILE__, __LINE__, true);
4663 : 15511 : return true;
4664 : : }
4665 : 0 : next_after_fail989:;
4666 : : }
4667 : : return false;
4668 : : }
4669 : :
4670 : : bool
4671 : 89671 : gimple_simplify_276 (gimple_match_op *res_op, gimple_seq *seq,
4672 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4673 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4674 : : const enum tree_code ARG_UNUSED (cmp))
4675 : : {
4676 : 89671 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4677 : 154245 : if (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4678 : 89868 : || ! tree_expr_maybe_nan_p (captures[0])
4679 : : )
4680 : : {
4681 : 64397 : gimple_seq *lseq = seq;
4682 : 64397 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail996;
4683 : 64397 : {
4684 : 64397 : tree tem;
4685 : 64397 : tem = constant_boolean_node (true, type);
4686 : 64397 : res_op->set_value (tem);
4687 : 64397 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 416, __FILE__, __LINE__, true);
4688 : 64397 : return true;
4689 : : }
4690 : 0 : next_after_fail996:;
4691 : : }
4692 : : else
4693 : : {
4694 : 25274 : if (cmp != EQ_EXPR
4695 : 25274 : && (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4696 : 1534 : || ! flag_trapping_math)
4697 : : )
4698 : : {
4699 : 0 : gimple_seq *lseq = seq;
4700 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail997;
4701 : 0 : {
4702 : 0 : res_op->set_op (EQ_EXPR, type, 2);
4703 : 0 : res_op->ops[0] = captures[0];
4704 : 0 : res_op->ops[1] = captures[0];
4705 : 0 : res_op->resimplify (lseq, valueize);
4706 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 417, __FILE__, __LINE__, true);
4707 : 0 : return true;
4708 : : }
4709 : 0 : next_after_fail997:;
4710 : : }
4711 : : }
4712 : : return false;
4713 : : }
4714 : :
4715 : : bool
4716 : 5616838 : gimple_simplify_281 (gimple_match_op *res_op, gimple_seq *seq,
4717 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
4718 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
4719 : : const enum tree_code ARG_UNUSED (cmp))
4720 : : {
4721 : 5616838 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4722 : 5616838 : if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[1]))
4723 : : )
4724 : : {
4725 : 723 : gimple_seq *lseq = seq;
4726 : 723 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1002;
4727 : 723 : {
4728 : 723 : res_op->set_op (cmp, type, 2);
4729 : 723 : res_op->ops[0] = captures[0];
4730 : 723 : res_op->ops[1] = build_real (TREE_TYPE (captures[1]), dconst0);
4731 : 723 : res_op->resimplify (lseq, valueize);
4732 : 723 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 421, __FILE__, __LINE__, true);
4733 : 723 : return true;
4734 : : }
4735 : 0 : next_after_fail1002:;
4736 : : }
4737 : : else
4738 : : {
4739 : 5616115 : if (TREE_CODE (captures[0]) == REAL_CST
4740 : 5616115 : && REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[0]))
4741 : : )
4742 : : {
4743 : 0 : gimple_seq *lseq = seq;
4744 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1003;
4745 : 0 : {
4746 : 0 : res_op->set_op (cmp, type, 2);
4747 : 0 : res_op->ops[0] = build_real (TREE_TYPE (captures[0]), dconst0);
4748 : 0 : res_op->ops[1] = captures[1];
4749 : 0 : res_op->resimplify (lseq, valueize);
4750 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
4751 : 0 : return true;
4752 : : }
4753 : 0 : next_after_fail1003:;
4754 : : }
4755 : : else
4756 : : {
4757 : 5616115 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
4758 : 1516 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
4759 : 99 : && !tree_expr_signaling_nan_p (captures[1])
4760 : 5616134 : && !tree_expr_maybe_signaling_nan_p (captures[0])
4761 : : )
4762 : : {
4763 : 19 : gimple_seq *lseq = seq;
4764 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1004;
4765 : 19 : {
4766 : 19 : tree tem;
4767 : 19 : tem = constant_boolean_node (cmp == NE_EXPR, type);
4768 : 19 : res_op->set_value (tem);
4769 : 19 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 423, __FILE__, __LINE__, true);
4770 : 19 : return true;
4771 : : }
4772 : 0 : next_after_fail1004:;
4773 : : }
4774 : : else
4775 : : {
4776 : 5616096 : if (TREE_CODE (captures[0]) == REAL_CST
4777 : 5613 : && REAL_VALUE_ISNAN (TREE_REAL_CST (captures[0]))
4778 : 4755 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
4779 : 0 : && !tree_expr_signaling_nan_p (captures[0])
4780 : 5616096 : && !tree_expr_signaling_nan_p (captures[1])
4781 : : )
4782 : : {
4783 : 0 : gimple_seq *lseq = seq;
4784 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1005;
4785 : 0 : {
4786 : 0 : tree tem;
4787 : 0 : tem = constant_boolean_node (cmp == NE_EXPR, type);
4788 : 0 : res_op->set_value (tem);
4789 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 424, __FILE__, __LINE__, true);
4790 : 0 : return true;
4791 : : }
4792 : 0 : next_after_fail1005:;
4793 : : }
4794 : : else
4795 : : {
4796 : 5616096 : if (REAL_VALUE_ISINF (TREE_REAL_CST (captures[1]))
4797 : 6581423 : && MODE_HAS_INFINITIES (TYPE_MODE (TREE_TYPE (captures[1])))
4798 : : )
4799 : : {
4800 : 321776 : {
4801 : 321776 : REAL_VALUE_TYPE max;
4802 : 321776 : enum tree_code code = cmp;
4803 : 321776 : bool neg = REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]));
4804 : 321776 : if (neg)
4805 : 133155 : code = swap_tree_comparison (code);
4806 : 321776 : if (code == GT_EXPR
4807 : 321776 : && !(HONOR_NANS (captures[0]) && flag_trapping_math)
4808 : : )
4809 : : {
4810 : 0 : gimple_seq *lseq = seq;
4811 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1006;
4812 : 0 : {
4813 : 0 : tree tem;
4814 : 0 : tem = constant_boolean_node (false, type);
4815 : 0 : res_op->set_value (tem);
4816 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
4817 : 2281 : return true;
4818 : : }
4819 : 0 : next_after_fail1006:;
4820 : : }
4821 : : else
4822 : : {
4823 : 321776 : if (code == LE_EXPR
4824 : : )
4825 : : {
4826 : 301534 : if (! HONOR_NANS (captures[0])
4827 : : )
4828 : : {
4829 : 0 : gimple_seq *lseq = seq;
4830 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1007;
4831 : 0 : {
4832 : 0 : tree tem;
4833 : 0 : tem = constant_boolean_node (true, type);
4834 : 0 : res_op->set_value (tem);
4835 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 426, __FILE__, __LINE__, true);
4836 : 0 : return true;
4837 : : }
4838 : 0 : next_after_fail1007:;
4839 : : }
4840 : : else
4841 : : {
4842 : 301534 : if (!flag_trapping_math
4843 : : )
4844 : : {
4845 : 0 : gimple_seq *lseq = seq;
4846 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1008;
4847 : 0 : {
4848 : 0 : res_op->set_op (EQ_EXPR, type, 2);
4849 : 0 : res_op->ops[0] = captures[0];
4850 : 0 : res_op->ops[1] = captures[0];
4851 : 0 : res_op->resimplify (lseq, valueize);
4852 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
4853 : 0 : return true;
4854 : : }
4855 : 0 : next_after_fail1008:;
4856 : : }
4857 : : }
4858 : : }
4859 : : else
4860 : : {
4861 : 16317 : if ((code == EQ_EXPR && !(HONOR_NANS (captures[0]) && flag_trapping_math))
4862 : 36559 : || code == GE_EXPR
4863 : : )
4864 : : {
4865 : 24 : {
4866 : 24 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
4867 : 24 : if (neg
4868 : : )
4869 : : {
4870 : 0 : gimple_seq *lseq = seq;
4871 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1009;
4872 : 0 : {
4873 : 0 : res_op->set_op (LT_EXPR, type, 2);
4874 : 0 : res_op->ops[0] = captures[0];
4875 : 0 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
4876 : 0 : res_op->resimplify (lseq, valueize);
4877 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 428, __FILE__, __LINE__, true);
4878 : 0 : return true;
4879 : : }
4880 : 0 : next_after_fail1009:;
4881 : : }
4882 : : else
4883 : : {
4884 : 24 : gimple_seq *lseq = seq;
4885 : 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1010;
4886 : 24 : {
4887 : 24 : res_op->set_op (GT_EXPR, type, 2);
4888 : 24 : res_op->ops[0] = captures[0];
4889 : 24 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
4890 : 24 : res_op->resimplify (lseq, valueize);
4891 : 24 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 429, __FILE__, __LINE__, true);
4892 : 24 : return true;
4893 : : }
4894 : 0 : next_after_fail1010:;
4895 : : }
4896 : : }
4897 : : }
4898 : : else
4899 : : {
4900 : 20218 : if (code == LT_EXPR
4901 : : )
4902 : : {
4903 : 888 : {
4904 : 888 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
4905 : 888 : if (neg
4906 : : )
4907 : : {
4908 : 531 : gimple_seq *lseq = seq;
4909 : 531 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1011;
4910 : 531 : {
4911 : 531 : res_op->set_op (GE_EXPR, type, 2);
4912 : 531 : res_op->ops[0] = captures[0];
4913 : 531 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
4914 : 531 : res_op->resimplify (lseq, valueize);
4915 : 531 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 430, __FILE__, __LINE__, true);
4916 : 531 : return true;
4917 : : }
4918 : 0 : next_after_fail1011:;
4919 : : }
4920 : : else
4921 : : {
4922 : 357 : gimple_seq *lseq = seq;
4923 : 357 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1012;
4924 : 357 : {
4925 : 357 : res_op->set_op (LE_EXPR, type, 2);
4926 : 357 : res_op->ops[0] = captures[0];
4927 : 357 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
4928 : 357 : res_op->resimplify (lseq, valueize);
4929 : 357 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 431, __FILE__, __LINE__, true);
4930 : 357 : return true;
4931 : : }
4932 : 0 : next_after_fail1012:;
4933 : : }
4934 : : }
4935 : : }
4936 : : else
4937 : : {
4938 : 19330 : if (code == NE_EXPR
4939 : : )
4940 : : {
4941 : 1369 : {
4942 : 1369 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
4943 : 1369 : if (! HONOR_NANS (captures[0])
4944 : : )
4945 : : {
4946 : 0 : if (neg
4947 : : )
4948 : : {
4949 : 0 : gimple_seq *lseq = seq;
4950 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1013;
4951 : 0 : {
4952 : 0 : res_op->set_op (GE_EXPR, type, 2);
4953 : 0 : res_op->ops[0] = captures[0];
4954 : 0 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
4955 : 0 : res_op->resimplify (lseq, valueize);
4956 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 432, __FILE__, __LINE__, true);
4957 : 0 : return true;
4958 : : }
4959 : 0 : next_after_fail1013:;
4960 : : }
4961 : : else
4962 : : {
4963 : 0 : gimple_seq *lseq = seq;
4964 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1014;
4965 : 0 : {
4966 : 0 : res_op->set_op (LE_EXPR, type, 2);
4967 : 0 : res_op->ops[0] = captures[0];
4968 : 0 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
4969 : 0 : res_op->resimplify (lseq, valueize);
4970 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 433, __FILE__, __LINE__, true);
4971 : 0 : return true;
4972 : : }
4973 : 0 : next_after_fail1014:;
4974 : : }
4975 : : }
4976 : : else
4977 : : {
4978 : 1369 : if (neg
4979 : : )
4980 : : {
4981 : 368 : gimple_seq *lseq = seq;
4982 : 368 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1015;
4983 : 368 : {
4984 : 368 : res_op->set_op (UNGE_EXPR, type, 2);
4985 : 368 : res_op->ops[0] = captures[0];
4986 : 368 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
4987 : 368 : res_op->resimplify (lseq, valueize);
4988 : 368 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 434, __FILE__, __LINE__, true);
4989 : 368 : return true;
4990 : : }
4991 : 0 : next_after_fail1015:;
4992 : : }
4993 : : else
4994 : : {
4995 : 1001 : gimple_seq *lseq = seq;
4996 : 1001 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1016;
4997 : 1001 : {
4998 : 1001 : res_op->set_op (UNLE_EXPR, type, 2);
4999 : 1001 : res_op->ops[0] = captures[0];
5000 : 1001 : res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max);
5001 : 1001 : res_op->resimplify (lseq, valueize);
5002 : 1001 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 435, __FILE__, __LINE__, true);
5003 : 1001 : return true;
5004 : : }
5005 : 0 : next_after_fail1016:;
5006 : : }
5007 : : }
5008 : : }
5009 : : }
5010 : : }
5011 : : }
5012 : : }
5013 : : }
5014 : : }
5015 : : }
5016 : : }
5017 : : }
5018 : : }
5019 : : }
5020 : : return false;
5021 : : }
5022 : :
5023 : : bool
5024 : 4074 : gimple_simplify_299 (gimple_match_op *res_op, gimple_seq *seq,
5025 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5026 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5027 : : const enum tree_code ARG_UNUSED (cmp))
5028 : : {
5029 : 4074 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5030 : 4074 : gimple_seq *lseq = seq;
5031 : 4074 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1076;
5032 : 4074 : {
5033 : 4074 : res_op->set_op (cmp, type, 2);
5034 : 4074 : {
5035 : 4074 : tree _o1[2], _r1;
5036 : 4074 : _o1[0] = captures[0];
5037 : 4074 : {
5038 : 4074 : tree _o2[1], _r2;
5039 : 4074 : _o2[0] = captures[1];
5040 : 4074 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
5041 : 4074 : tem_op.resimplify (NULL, valueize);
5042 : 4074 : _r2 = maybe_push_res_to_seq (&tem_op, NULL);
5043 : 4074 : if (!_r2) goto next_after_fail1076;
5044 : 2501 : _o1[1] = _r2;
5045 : : }
5046 : 2501 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5047 : 2501 : tem_op.resimplify (lseq, valueize);
5048 : 2501 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5049 : 2501 : if (!_r1) goto next_after_fail1076;
5050 : 2443 : res_op->ops[0] = _r1;
5051 : : }
5052 : 2443 : res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0]));
5053 : 2443 : res_op->resimplify (lseq, valueize);
5054 : 2443 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 488, __FILE__, __LINE__, true);
5055 : : return true;
5056 : : }
5057 : : next_after_fail1076:;
5058 : : return false;
5059 : : }
5060 : :
5061 : : bool
5062 : 113924070 : gimple_simplify_301 (gimple_match_op *res_op, gimple_seq *seq,
5063 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5064 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5065 : : const enum tree_code ARG_UNUSED (cmp))
5066 : : {
5067 : 113924070 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5068 : 113924070 : if (tree_expr_nonzero_p (captures[0])
5069 : : )
5070 : : {
5071 : 91294 : gimple_seq *lseq = seq;
5072 : 91294 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1078;
5073 : 91294 : {
5074 : 91294 : tree tem;
5075 : 91294 : tem = constant_boolean_node (cmp == NE_EXPR, type);
5076 : 91294 : res_op->set_value (tem);
5077 : 91294 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 490, __FILE__, __LINE__, true);
5078 : 91294 : return true;
5079 : : }
5080 : 0 : next_after_fail1078:;
5081 : : }
5082 : : return false;
5083 : : }
5084 : :
5085 : : bool
5086 : 31530 : gimple_simplify_304 (gimple_match_op *res_op, gimple_seq *seq,
5087 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5088 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5089 : : const enum tree_code ARG_UNUSED (cmp),
5090 : : const enum tree_code ARG_UNUSED (ncmp))
5091 : : {
5092 : 31530 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5093 : 62510 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5094 : 16274 : && type_has_mode_precision_p (TREE_TYPE (captures[1]))
5095 : 15289 : && element_precision (captures[0]) >= element_precision (captures[1])
5096 : 63060 : && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))
5097 : : )
5098 : : {
5099 : 193 : {
5100 : 193 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
5101 : 193 : gimple_seq *lseq = seq;
5102 : 193 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1081;
5103 : 193 : {
5104 : 193 : res_op->set_op (ncmp, type, 2);
5105 : 193 : {
5106 : 193 : tree _o1[1], _r1;
5107 : 193 : _o1[0] = captures[1];
5108 : 193 : if (stype != TREE_TYPE (_o1[0]) /* XXX */
5109 : 193 : && !useless_type_conversion_p (stype, TREE_TYPE (_o1[0])))
5110 : : {
5111 : 155 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o1[0]);
5112 : 155 : tem_op.resimplify (lseq, valueize);
5113 : 155 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5114 : 155 : if (!_r1) goto next_after_fail1081;
5115 : : }
5116 : : else
5117 : : _r1 = _o1[0];
5118 : 38 : res_op->ops[0] = _r1;
5119 : : }
5120 : 38 : res_op->ops[1] = build_zero_cst (stype);
5121 : 38 : res_op->resimplify (lseq, valueize);
5122 : 38 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 493, __FILE__, __LINE__, true);
5123 : 38 : return true;
5124 : : }
5125 : : next_after_fail1081:;
5126 : : }
5127 : : }
5128 : : return false;
5129 : : }
5130 : :
5131 : : bool
5132 : 62 : gimple_simplify_308 (gimple_match_op *res_op, gimple_seq *seq,
5133 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5134 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5135 : : const enum tree_code ARG_UNUSED (cmp),
5136 : : const enum tree_code ARG_UNUSED (ncmp))
5137 : : {
5138 : 62 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5139 : 124 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5140 : 62 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5141 : 124 : && types_match (captures[0], captures[2])
5142 : : )
5143 : : {
5144 : 10 : gimple_seq *lseq = seq;
5145 : 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1085;
5146 : 10 : {
5147 : 10 : res_op->set_op (ncmp, type, 2);
5148 : 10 : {
5149 : 10 : tree _o1[2], _r1;
5150 : 10 : _o1[0] = captures[0];
5151 : 10 : _o1[1] = captures[2];
5152 : 10 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5153 : 10 : tem_op.resimplify (lseq, valueize);
5154 : 10 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5155 : 10 : if (!_r1) goto next_after_fail1085;
5156 : 4 : res_op->ops[0] = _r1;
5157 : : }
5158 : 4 : res_op->ops[1] = captures[1];
5159 : 4 : res_op->resimplify (lseq, valueize);
5160 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 495, __FILE__, __LINE__, true);
5161 : 4 : return true;
5162 : : }
5163 : : next_after_fail1085:;
5164 : : }
5165 : : return false;
5166 : : }
5167 : :
5168 : : bool
5169 : 52403 : gimple_simplify_314 (gimple_match_op *res_op, gimple_seq *seq,
5170 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5171 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5172 : : const enum tree_code ARG_UNUSED (cmp))
5173 : : {
5174 : 52403 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5175 : 93665 : if (!FLOAT_TYPE_P (TREE_TYPE (captures[3]))
5176 : 52403 : || !operation_could_trap_p (cmp, true, false, captures[3])
5177 : : )
5178 : : {
5179 : 43668 : gimple_seq *lseq = seq;
5180 : 43668 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1109;
5181 : 43668 : {
5182 : 43668 : res_op->set_op (COND_EXPR, type, 3);
5183 : 43668 : res_op->ops[0] = captures[0];
5184 : 43668 : res_op->ops[0] = unshare_expr (res_op->ops[0]);
5185 : 43668 : {
5186 : 43668 : tree _o1[2], _r1;
5187 : 43668 : _o1[0] = captures[1];
5188 : 43668 : _o1[1] = captures[3];
5189 : 43668 : gimple_match_op tem_op (res_op->cond.any_else (), cmp, type, _o1[0], _o1[1]);
5190 : 43668 : tem_op.resimplify (NULL, valueize);
5191 : 43668 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
5192 : 43668 : if (!_r1) goto next_after_fail1109;
5193 : 3052 : res_op->ops[1] = _r1;
5194 : : }
5195 : 3052 : {
5196 : 3052 : tree _o1[2], _r1;
5197 : 3052 : _o1[0] = captures[2];
5198 : 3052 : _o1[1] = captures[3];
5199 : 3052 : gimple_match_op tem_op (res_op->cond.any_else (), cmp, type, _o1[0], _o1[1]);
5200 : 3052 : tem_op.resimplify (NULL, valueize);
5201 : 3052 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
5202 : 3052 : if (!_r1) goto next_after_fail1109;
5203 : 1836 : res_op->ops[2] = _r1;
5204 : : }
5205 : 1836 : res_op->resimplify (lseq, valueize);
5206 : 1836 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 511, __FILE__, __LINE__, true);
5207 : 1836 : return true;
5208 : : }
5209 : : next_after_fail1109:;
5210 : : }
5211 : : return false;
5212 : : }
5213 : :
5214 : : bool
5215 : 5338 : gimple_simplify_318 (gimple_match_op *res_op, gimple_seq *seq,
5216 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5217 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5218 : : const enum tree_code ARG_UNUSED (op),
5219 : : const enum tree_code ARG_UNUSED (cmp),
5220 : : const combined_fn ARG_UNUSED (clz))
5221 : : {
5222 : 5338 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5223 : 5338 : if (!sanitize_flags_p (SANITIZE_BUILTIN)
5224 : 5338 : || (cfun && (cfun->curr_properties & PROP_ssa) != 0)
5225 : : )
5226 : : {
5227 : 5338 : if (integer_zerop (captures[2]) && single_use (captures[0])
5228 : : )
5229 : : {
5230 : 42 : {
5231 : 42 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
5232 : 42 : gimple_seq *lseq = seq;
5233 : 42 : if (lseq
5234 : 22 : && (!single_use (captures[0])))
5235 : 20 : lseq = NULL;
5236 : 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1122;
5237 : 42 : {
5238 : 42 : res_op->set_op (cmp, type, 2);
5239 : 42 : {
5240 : 42 : tree _o1[1], _r1;
5241 : 42 : _o1[0] = captures[1];
5242 : 42 : if (stype != TREE_TYPE (_o1[0]) /* XXX */
5243 : 42 : && !useless_type_conversion_p (stype, TREE_TYPE (_o1[0])))
5244 : : {
5245 : 42 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, _o1[0]);
5246 : 42 : tem_op.resimplify (lseq, valueize);
5247 : 42 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5248 : 42 : if (!_r1) goto next_after_fail1122;
5249 : : }
5250 : : else
5251 : : _r1 = _o1[0];
5252 : 22 : res_op->ops[0] = _r1;
5253 : : }
5254 : 22 : res_op->ops[1] = build_zero_cst (stype);
5255 : 22 : res_op->resimplify (lseq, valueize);
5256 : 22 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 524, __FILE__, __LINE__, true);
5257 : 22 : return true;
5258 : : }
5259 : : next_after_fail1122:;
5260 : : }
5261 : : }
5262 : : else
5263 : : {
5264 : 5296 : if (wi::to_wide (captures[2]) == TYPE_PRECISION (TREE_TYPE (captures[1])) - 1
5265 : : )
5266 : : {
5267 : 2966 : gimple_seq *lseq = seq;
5268 : 2966 : if (lseq
5269 : 1062 : && (!single_use (captures[0])))
5270 : 2942 : lseq = NULL;
5271 : 2966 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1123;
5272 : 2966 : {
5273 : 2966 : res_op->set_op (op, type, 2);
5274 : 2966 : res_op->ops[0] = captures[1];
5275 : 2966 : res_op->ops[1] = build_one_cst (TREE_TYPE (captures[1]));
5276 : 2966 : res_op->resimplify (lseq, valueize);
5277 : 2966 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 525, __FILE__, __LINE__, true);
5278 : 2966 : return true;
5279 : : }
5280 : 0 : next_after_fail1123:;
5281 : : }
5282 : : }
5283 : : }
5284 : : return false;
5285 : : }
5286 : :
5287 : : bool
5288 : 3913 : gimple_simplify_324 (gimple_match_op *res_op, gimple_seq *seq,
5289 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5290 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5291 : : const enum tree_code ARG_UNUSED (cmp))
5292 : : {
5293 : 3913 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5294 : 7826 : if (VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[0])))
5295 : 10909 : && can_compare_p (cmp == EQ_EXPR ? EQ : NE, TYPE_MODE (TREE_TYPE (captures[0])),
5296 : : ccp_jump)
5297 : : )
5298 : : {
5299 : 29 : gimple_seq *lseq = seq;
5300 : 29 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1134;
5301 : 29 : {
5302 : 29 : res_op->set_op (cmp, type, 2);
5303 : 29 : res_op->ops[0] = captures[0];
5304 : 29 : res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0]));
5305 : 29 : res_op->resimplify (lseq, valueize);
5306 : 29 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 536, __FILE__, __LINE__, true);
5307 : 29 : return true;
5308 : : }
5309 : 0 : next_after_fail1134:;
5310 : : }
5311 : : return false;
5312 : : }
5313 : :
5314 : : bool
5315 : 119816 : gimple_simplify_327 (gimple_match_op *res_op, gimple_seq *seq,
5316 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5317 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5318 : : const enum tree_code ARG_UNUSED (cmp),
5319 : : const enum tree_code ARG_UNUSED (icmp),
5320 : : const enum tree_code ARG_UNUSED (ncmp))
5321 : : {
5322 : 119816 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5323 : 119816 : if (types_match (type, TREE_TYPE (captures[0]))
5324 : : )
5325 : : {
5326 : 117297 : {
5327 : 117297 : enum tree_code ic = invert_tree_comparison
5328 : 117297 : (cmp, HONOR_NANS (captures[1]));
5329 : 117297 : if (ic == icmp
5330 : : )
5331 : : {
5332 : 96886 : gimple_seq *lseq = seq;
5333 : 96886 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1137;
5334 : 96886 : {
5335 : 96886 : res_op->set_op (icmp, type, 2);
5336 : 96886 : res_op->ops[0] = captures[1];
5337 : 96886 : res_op->ops[1] = captures[2];
5338 : 96886 : res_op->resimplify (lseq, valueize);
5339 : 96886 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 539, __FILE__, __LINE__, true);
5340 : 96886 : return true;
5341 : : }
5342 : 0 : next_after_fail1137:;
5343 : : }
5344 : : else
5345 : : {
5346 : 20411 : if (ic == ncmp
5347 : : )
5348 : : {
5349 : 316 : gimple_seq *lseq = seq;
5350 : 316 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1138;
5351 : 316 : {
5352 : 316 : res_op->set_op (ncmp, type, 2);
5353 : 316 : res_op->ops[0] = captures[1];
5354 : 316 : res_op->ops[1] = captures[2];
5355 : 316 : res_op->resimplify (lseq, valueize);
5356 : 316 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 540, __FILE__, __LINE__, true);
5357 : 316 : return true;
5358 : : }
5359 : 0 : next_after_fail1138:;
5360 : : }
5361 : : }
5362 : : }
5363 : : }
5364 : : return false;
5365 : : }
5366 : :
5367 : : bool
5368 : 218 : gimple_simplify_334 (gimple_match_op *res_op, gimple_seq *seq,
5369 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5370 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5371 : : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
5372 : : {
5373 : 218 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5374 : 218 : gimple_seq *lseq = seq;
5375 : 218 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1146;
5376 : 218 : {
5377 : 218 : res_op->set_op (ABS_EXPR, type, 1);
5378 : 218 : res_op->ops[0] = captures[0];
5379 : 218 : res_op->resimplify (lseq, valueize);
5380 : 218 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 548, __FILE__, __LINE__, true);
5381 : : return true;
5382 : : }
5383 : 0 : next_after_fail1146:;
5384 : 0 : return false;
5385 : : }
5386 : :
5387 : : bool
5388 : 559069 : gimple_simplify_339 (gimple_match_op *res_op, gimple_seq *seq,
5389 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5390 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5391 : : const enum tree_code ARG_UNUSED (div))
5392 : : {
5393 : 559069 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5394 : 559069 : if (INTEGRAL_TYPE_P (type)
5395 : 557215 : && ssa_name_has_boolean_range (captures[1])
5396 : 559158 : && !flag_non_call_exceptions
5397 : : )
5398 : : {
5399 : 80 : gimple_seq *lseq = seq;
5400 : 80 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1153;
5401 : 80 : {
5402 : 80 : tree tem;
5403 : 80 : tem = captures[0];
5404 : 80 : res_op->set_value (tem);
5405 : 80 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 553, __FILE__, __LINE__, true);
5406 : 80 : return true;
5407 : : }
5408 : 0 : next_after_fail1153:;
5409 : : }
5410 : : return false;
5411 : : }
5412 : :
5413 : : bool
5414 : 16320 : gimple_simplify_343 (gimple_match_op *res_op, gimple_seq *seq,
5415 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5416 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5417 : : const enum tree_code ARG_UNUSED (div))
5418 : : {
5419 : 16320 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5420 : 16320 : {
5421 : 16320 : wi::overflow_type overflow;
5422 : 16320 : wide_int mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
5423 : 32640 : TYPE_SIGN (type), &overflow);
5424 : 16320 : if (div == EXACT_DIV_EXPR
5425 : 16320 : || optimize_successive_divisions_p (captures[3], captures[0])
5426 : : )
5427 : : {
5428 : 3342 : if (!overflow
5429 : : )
5430 : : {
5431 : 3252 : gimple_seq *lseq = seq;
5432 : 3252 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1157;
5433 : 3252 : {
5434 : 3252 : res_op->set_op (div, type, 2);
5435 : 3252 : res_op->ops[0] = captures[1];
5436 : 3252 : res_op->ops[1] = wide_int_to_tree (type, mul);
5437 : 3252 : res_op->resimplify (lseq, valueize);
5438 : 3252 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 557, __FILE__, __LINE__, true);
5439 : 3252 : return true;
5440 : : }
5441 : 0 : next_after_fail1157:;
5442 : : }
5443 : : else
5444 : : {
5445 : 90 : if (TYPE_UNSIGNED (type)
5446 : 180 : || mul != wi::min_value (TYPE_PRECISION (type), SIGNED)
5447 : : )
5448 : : {
5449 : 5 : gimple_seq *lseq = seq;
5450 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1158;
5451 : 5 : {
5452 : 5 : tree tem;
5453 : 5 : tem = build_zero_cst (type);
5454 : 5 : res_op->set_value (tem);
5455 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 558, __FILE__, __LINE__, true);
5456 : 5 : return true;
5457 : : }
5458 : 0 : next_after_fail1158:;
5459 : : }
5460 : : }
5461 : : }
5462 : 3257 : }
5463 : 13063 : return false;
5464 : : }
5465 : :
5466 : : bool
5467 : 11 : gimple_simplify_349 (gimple_match_op *res_op, gimple_seq *seq,
5468 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5469 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5470 : : const enum tree_code ARG_UNUSED (div))
5471 : : {
5472 : 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5473 : 11 : if (INTEGRAL_TYPE_P (type)
5474 : 11 : && wi::multiple_of_p (wi::to_widest (captures[1]), wi::to_widest (captures[2]), SIGNED)
5475 : : )
5476 : : {
5477 : 11 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
5478 : : )
5479 : : {
5480 : 3 : gimple_seq *lseq = seq;
5481 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1166;
5482 : 3 : {
5483 : 3 : res_op->set_op (div, type, 2);
5484 : 3 : res_op->ops[0] = captures[1];
5485 : 3 : res_op->ops[1] = captures[2];
5486 : 3 : res_op->resimplify (lseq, valueize);
5487 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 566, __FILE__, __LINE__, true);
5488 : 3 : return true;
5489 : : }
5490 : 0 : next_after_fail1166:;
5491 : : }
5492 : : else
5493 : : {
5494 : 8 : {
5495 : 8 : int_range_max vr0, vr1, vr2;
5496 : 16 : if (get_range_query (cfun)->range_of_expr (vr0, captures[0])
5497 : 16 : && get_range_query (cfun)->range_of_expr (vr1, captures[1])
5498 : 16 : && get_range_query (cfun)->range_of_expr (vr2, captures[2])
5499 : 8 : && range_op_handler (MULT_EXPR).overflow_free_p (vr0, vr1)
5500 : 16 : && range_op_handler (MULT_EXPR).overflow_free_p (vr0, vr2)
5501 : : )
5502 : : {
5503 : 2 : gimple_seq *lseq = seq;
5504 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1167;
5505 : 2 : {
5506 : 2 : res_op->set_op (div, type, 2);
5507 : 2 : res_op->ops[0] = captures[1];
5508 : 2 : res_op->ops[1] = captures[2];
5509 : 2 : res_op->resimplify (lseq, valueize);
5510 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 567, __FILE__, __LINE__, true);
5511 : 2 : return true;
5512 : : }
5513 : 0 : next_after_fail1167:;
5514 : : }
5515 : 8 : }
5516 : : }
5517 : : }
5518 : : return false;
5519 : : }
5520 : :
5521 : : bool
5522 : 10633 : gimple_simplify_358 (gimple_match_op *res_op, gimple_seq *seq,
5523 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5524 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5525 : : const enum tree_code ARG_UNUSED (mod))
5526 : : {
5527 : 10633 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5528 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
5529 : 10633 : && TYPE_OVERFLOW_UNDEFINED (type)
5530 : 21266 : && wi::multiple_of_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
5531 : 1653 : TYPE_SIGN (type))
5532 : : )
5533 : : {
5534 : 34 : gimple_seq *lseq = seq;
5535 : 34 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1176;
5536 : 34 : {
5537 : 34 : tree tem;
5538 : 34 : tem = build_zero_cst (type);
5539 : 34 : res_op->set_value (tem);
5540 : 34 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 576, __FILE__, __LINE__, true);
5541 : 34 : return true;
5542 : : }
5543 : 0 : next_after_fail1176:;
5544 : : }
5545 : : return false;
5546 : : }
5547 : :
5548 : : bool
5549 : 0 : gimple_simplify_365 (gimple_match_op *res_op, gimple_seq *seq,
5550 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5551 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5552 : : const combined_fn ARG_UNUSED (SINH),
5553 : : const combined_fn ARG_UNUSED (COSH),
5554 : : const combined_fn ARG_UNUSED (TANH))
5555 : : {
5556 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5557 : 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
5558 : : )
5559 : : {
5560 : 0 : gimple_seq *lseq = seq;
5561 : 0 : if (lseq
5562 : 0 : && (!single_use (captures[0])
5563 : 0 : || !single_use (captures[2])))
5564 : 0 : lseq = NULL;
5565 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1185;
5566 : 0 : {
5567 : 0 : res_op->set_op (TANH, type, 1);
5568 : 0 : res_op->ops[0] = captures[1];
5569 : 0 : res_op->resimplify (lseq, valueize);
5570 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 585, __FILE__, __LINE__, true);
5571 : 0 : return true;
5572 : : }
5573 : 0 : next_after_fail1185:;
5574 : : }
5575 : : return false;
5576 : : }
5577 : :
5578 : : bool
5579 : 171 : gimple_simplify_370 (gimple_match_op *res_op, gimple_seq *seq,
5580 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5581 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5582 : : const combined_fn ARG_UNUSED (POW))
5583 : : {
5584 : 171 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5585 : 171 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
5586 : : )
5587 : : {
5588 : 0 : gimple_seq *lseq = seq;
5589 : 0 : if (lseq
5590 : 0 : && (!single_use (captures[1])))
5591 : 0 : lseq = NULL;
5592 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1190;
5593 : 0 : {
5594 : 0 : res_op->set_op (MULT_EXPR, type, 2);
5595 : 0 : res_op->ops[0] = captures[0];
5596 : 0 : {
5597 : 0 : tree _o1[2], _r1;
5598 : 0 : _o1[0] = captures[2];
5599 : 0 : {
5600 : 0 : tree _o2[1], _r2;
5601 : 0 : _o2[0] = captures[3];
5602 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
5603 : 0 : tem_op.resimplify (lseq, valueize);
5604 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
5605 : 0 : if (!_r2) goto next_after_fail1190;
5606 : 0 : _o1[1] = _r2;
5607 : : }
5608 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), POW, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5609 : 0 : tem_op.resimplify (lseq, valueize);
5610 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
5611 : 0 : if (!_r1) goto next_after_fail1190;
5612 : 0 : res_op->ops[1] = _r1;
5613 : : }
5614 : 0 : res_op->resimplify (lseq, valueize);
5615 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 590, __FILE__, __LINE__, true);
5616 : 0 : return true;
5617 : : }
5618 : : next_after_fail1190:;
5619 : : }
5620 : : return false;
5621 : : }
5622 : :
5623 : : bool
5624 : 5336 : gimple_simplify_377 (gimple_match_op *res_op, gimple_seq *seq,
5625 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5626 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5627 : : const enum tree_code ARG_UNUSED (op))
5628 : : {
5629 : 5336 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5630 : 5336 : if (bitwise_equal_p (captures[0], captures[3])
5631 : 5336 : && expr_no_side_effects_p (captures[2])
5632 : : )
5633 : : {
5634 : 25 : gimple_seq *lseq = seq;
5635 : 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1197;
5636 : 25 : {
5637 : 25 : tree tem;
5638 : 25 : tem = captures[1];
5639 : 25 : res_op->set_value (tem);
5640 : 25 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 596, __FILE__, __LINE__, true);
5641 : 25 : return true;
5642 : : }
5643 : 0 : next_after_fail1197:;
5644 : : }
5645 : : return false;
5646 : : }
5647 : :
5648 : : bool
5649 : 1 : gimple_simplify_381 (gimple_match_op *res_op, gimple_seq *seq,
5650 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5651 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5652 : : const enum tree_code ARG_UNUSED (op))
5653 : : {
5654 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5655 : 1 : gimple_seq *lseq = seq;
5656 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1201;
5657 : 1 : {
5658 : 1 : tree tem;
5659 : 1 : tem = captures[2];
5660 : 1 : res_op->set_value (tem);
5661 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 600, __FILE__, __LINE__, true);
5662 : : return true;
5663 : : }
5664 : 0 : next_after_fail1201:;
5665 : 0 : return false;
5666 : : }
5667 : :
5668 : : bool
5669 : 3 : gimple_simplify_387 (gimple_match_op *res_op, gimple_seq *seq,
5670 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5671 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5672 : : const enum tree_code ARG_UNUSED (cmp))
5673 : : {
5674 : 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5675 : 3 : if (!HONOR_SIGNED_ZEROS (type)
5676 : 3 : && (
5677 : 3 : (INTEGRAL_TYPE_P (type)
5678 : 3 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
5679 : 0 : && types_match (TREE_TYPE (captures[2]), TREE_TYPE (captures[3]))
5680 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[1])) <= TYPE_PRECISION (type)
5681 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[3])) <= TYPE_PRECISION (type))
5682 : 3 : || (types_match (type, TREE_TYPE (captures[1]))
5683 : 0 : && types_match (type, TREE_TYPE (captures[3]))))
5684 : : )
5685 : : {
5686 : 0 : if (cmp == EQ_EXPR
5687 : : )
5688 : : {
5689 : 0 : if (VECTOR_TYPE_P (type)
5690 : : )
5691 : : {
5692 : 0 : gimple_seq *lseq = seq;
5693 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1210;
5694 : 0 : {
5695 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5696 : 0 : res_op->ops[0] = captures[2];
5697 : 0 : res_op->resimplify (lseq, valueize);
5698 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 609, __FILE__, __LINE__, true);
5699 : 0 : return true;
5700 : : }
5701 : 0 : next_after_fail1210:;
5702 : : }
5703 : : else
5704 : : {
5705 : 0 : gimple_seq *lseq = seq;
5706 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1211;
5707 : 0 : {
5708 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5709 : 0 : res_op->ops[0] = captures[2];
5710 : 0 : res_op->resimplify (lseq, valueize);
5711 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 610, __FILE__, __LINE__, true);
5712 : 0 : return true;
5713 : : }
5714 : 0 : next_after_fail1211:;
5715 : : }
5716 : : }
5717 : : else
5718 : : {
5719 : : if (cmp == NE_EXPR
5720 : : )
5721 : : {
5722 : 0 : if (VECTOR_TYPE_P (type)
5723 : : )
5724 : : {
5725 : 0 : gimple_seq *lseq = seq;
5726 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1212;
5727 : 0 : {
5728 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5729 : 0 : res_op->ops[0] = captures[0];
5730 : 0 : res_op->resimplify (lseq, valueize);
5731 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 611, __FILE__, __LINE__, true);
5732 : 0 : return true;
5733 : : }
5734 : 0 : next_after_fail1212:;
5735 : : }
5736 : : else
5737 : : {
5738 : 0 : gimple_seq *lseq = seq;
5739 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1213;
5740 : 0 : {
5741 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5742 : 0 : res_op->ops[0] = captures[0];
5743 : 0 : res_op->resimplify (lseq, valueize);
5744 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 612, __FILE__, __LINE__, true);
5745 : 0 : return true;
5746 : : }
5747 : 0 : next_after_fail1213:;
5748 : : }
5749 : : }
5750 : : else
5751 : : {
5752 : : if (cmp == LE_EXPR || cmp == UNLE_EXPR || cmp == LT_EXPR || cmp == UNLT_EXPR
5753 : : )
5754 : : {
5755 : 0 : if (!HONOR_NANS (type)
5756 : : )
5757 : : {
5758 : 0 : if (VECTOR_TYPE_P (type)
5759 : : )
5760 : : {
5761 : 0 : gimple_seq *lseq = seq;
5762 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1214;
5763 : 0 : {
5764 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5765 : 0 : {
5766 : 0 : tree _o1[2], _r1;
5767 : 0 : _o1[0] = captures[0];
5768 : 0 : _o1[1] = captures[2];
5769 : 0 : (*res_op).set_op (MIN_EXPR, TREE_TYPE (_o1[0]), 2);
5770 : 0 : (*res_op).ops[0] = _o1[0];
5771 : 0 : (*res_op).ops[1] = _o1[1];
5772 : 0 : (*res_op).resimplify (lseq, valueize);
5773 : : }
5774 : 0 : if (type != res_op->type
5775 : 0 : && !useless_type_conversion_p (type, res_op->type))
5776 : : {
5777 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1214;
5778 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5779 : 0 : res_op->resimplify (lseq, valueize);
5780 : : }
5781 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 613, __FILE__, __LINE__, true);
5782 : 0 : return true;
5783 : : }
5784 : : next_after_fail1214:;
5785 : : }
5786 : : else
5787 : : {
5788 : 0 : gimple_seq *lseq = seq;
5789 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1215;
5790 : 0 : {
5791 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5792 : 0 : {
5793 : 0 : tree _o1[2], _r1;
5794 : 0 : _o1[0] = captures[0];
5795 : 0 : _o1[1] = captures[2];
5796 : 0 : (*res_op).set_op (MIN_EXPR, TREE_TYPE (_o1[0]), 2);
5797 : 0 : (*res_op).ops[0] = _o1[0];
5798 : 0 : (*res_op).ops[1] = _o1[1];
5799 : 0 : (*res_op).resimplify (lseq, valueize);
5800 : : }
5801 : 0 : if (type != res_op->type
5802 : 0 : && !useless_type_conversion_p (type, res_op->type))
5803 : : {
5804 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1215;
5805 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5806 : 0 : res_op->resimplify (lseq, valueize);
5807 : : }
5808 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 614, __FILE__, __LINE__, true);
5809 : 0 : return true;
5810 : : }
5811 : : next_after_fail1215:;
5812 : : }
5813 : : }
5814 : : }
5815 : : else
5816 : : {
5817 : : if (cmp == GE_EXPR || cmp == UNGE_EXPR || cmp == GT_EXPR || cmp == UNGT_EXPR
5818 : : )
5819 : : {
5820 : 0 : if (!HONOR_NANS (type)
5821 : : )
5822 : : {
5823 : 0 : if (VECTOR_TYPE_P (type)
5824 : : )
5825 : : {
5826 : 0 : gimple_seq *lseq = seq;
5827 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1216;
5828 : 0 : {
5829 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5830 : 0 : {
5831 : 0 : tree _o1[2], _r1;
5832 : 0 : _o1[0] = captures[0];
5833 : 0 : _o1[1] = captures[2];
5834 : 0 : (*res_op).set_op (MAX_EXPR, TREE_TYPE (_o1[0]), 2);
5835 : 0 : (*res_op).ops[0] = _o1[0];
5836 : 0 : (*res_op).ops[1] = _o1[1];
5837 : 0 : (*res_op).resimplify (lseq, valueize);
5838 : : }
5839 : 0 : if (type != res_op->type
5840 : 0 : && !useless_type_conversion_p (type, res_op->type))
5841 : : {
5842 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1216;
5843 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5844 : 0 : res_op->resimplify (lseq, valueize);
5845 : : }
5846 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 615, __FILE__, __LINE__, true);
5847 : 0 : return true;
5848 : : }
5849 : : next_after_fail1216:;
5850 : : }
5851 : : else
5852 : : {
5853 : 0 : gimple_seq *lseq = seq;
5854 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1217;
5855 : 0 : {
5856 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5857 : 0 : {
5858 : 0 : tree _o1[2], _r1;
5859 : 0 : _o1[0] = captures[0];
5860 : 0 : _o1[1] = captures[2];
5861 : 0 : (*res_op).set_op (MAX_EXPR, TREE_TYPE (_o1[0]), 2);
5862 : 0 : (*res_op).ops[0] = _o1[0];
5863 : 0 : (*res_op).ops[1] = _o1[1];
5864 : 0 : (*res_op).resimplify (lseq, valueize);
5865 : : }
5866 : 0 : if (type != res_op->type
5867 : 0 : && !useless_type_conversion_p (type, res_op->type))
5868 : : {
5869 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1217;
5870 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5871 : 0 : res_op->resimplify (lseq, valueize);
5872 : : }
5873 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 616, __FILE__, __LINE__, true);
5874 : 0 : return true;
5875 : : }
5876 : : next_after_fail1217:;
5877 : : }
5878 : : }
5879 : : }
5880 : : else
5881 : : {
5882 : : if (cmp == UNEQ_EXPR
5883 : : )
5884 : : {
5885 : 0 : if (!HONOR_NANS (type)
5886 : : )
5887 : : {
5888 : 0 : if (VECTOR_TYPE_P (type)
5889 : : )
5890 : : {
5891 : 0 : gimple_seq *lseq = seq;
5892 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1218;
5893 : 0 : {
5894 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5895 : 0 : res_op->ops[0] = captures[2];
5896 : 0 : res_op->resimplify (lseq, valueize);
5897 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 617, __FILE__, __LINE__, true);
5898 : 0 : return true;
5899 : : }
5900 : 0 : next_after_fail1218:;
5901 : : }
5902 : : else
5903 : : {
5904 : 0 : gimple_seq *lseq = seq;
5905 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1219;
5906 : 0 : {
5907 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5908 : 0 : res_op->ops[0] = captures[2];
5909 : 0 : res_op->resimplify (lseq, valueize);
5910 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 618, __FILE__, __LINE__, true);
5911 : 0 : return true;
5912 : : }
5913 : 0 : next_after_fail1219:;
5914 : : }
5915 : : }
5916 : : }
5917 : : else
5918 : : {
5919 : : if (cmp == LTGT_EXPR
5920 : : )
5921 : : {
5922 : 0 : if (!HONOR_NANS (type)
5923 : : )
5924 : : {
5925 : 0 : if (VECTOR_TYPE_P (type)
5926 : : )
5927 : : {
5928 : 0 : gimple_seq *lseq = seq;
5929 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1220;
5930 : 0 : {
5931 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
5932 : 0 : res_op->ops[0] = captures[0];
5933 : 0 : res_op->resimplify (lseq, valueize);
5934 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 619, __FILE__, __LINE__, true);
5935 : 0 : return true;
5936 : : }
5937 : 0 : next_after_fail1220:;
5938 : : }
5939 : : else
5940 : : {
5941 : 0 : gimple_seq *lseq = seq;
5942 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1221;
5943 : 0 : {
5944 : 0 : res_op->set_op (NOP_EXPR, type, 1);
5945 : 0 : res_op->ops[0] = captures[0];
5946 : 0 : res_op->resimplify (lseq, valueize);
5947 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 620, __FILE__, __LINE__, true);
5948 : 0 : return true;
5949 : : }
5950 : 0 : next_after_fail1221:;
5951 : : }
5952 : : }
5953 : : }
5954 : : }
5955 : : }
5956 : : }
5957 : : }
5958 : : }
5959 : : }
5960 : : return false;
5961 : : }
5962 : :
5963 : : bool
5964 : 0 : gimple_simplify_403 (gimple_match_op *res_op, gimple_seq *seq,
5965 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5966 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5967 : : const enum tree_code ARG_UNUSED (op))
5968 : : {
5969 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5970 : 0 : if (ANY_INTEGRAL_TYPE_P (type)
5971 : : )
5972 : : {
5973 : 0 : gimple_seq *lseq = seq;
5974 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1274;
5975 : 0 : {
5976 : 0 : tree tem;
5977 : 0 : tem = captures[2];
5978 : 0 : res_op->set_value (tem);
5979 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 632, __FILE__, __LINE__, true);
5980 : 0 : return true;
5981 : : }
5982 : 0 : next_after_fail1274:;
5983 : : }
5984 : : return false;
5985 : : }
5986 : :
5987 : : bool
5988 : 3 : gimple_simplify_410 (gimple_match_op *res_op, gimple_seq *seq,
5989 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
5990 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
5991 : : const enum tree_code ARG_UNUSED (cmp))
5992 : : {
5993 : 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5994 : 3 : if (INTEGRAL_TYPE_P (type)
5995 : : )
5996 : : {
5997 : 3 : gimple_seq *lseq = seq;
5998 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1283;
5999 : 3 : {
6000 : 3 : tree tem;
6001 : 3 : tem = captures[2];
6002 : 3 : res_op->set_value (tem);
6003 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 638, __FILE__, __LINE__, true);
6004 : 3 : return true;
6005 : : }
6006 : 0 : next_after_fail1283:;
6007 : : }
6008 : : return false;
6009 : : }
6010 : :
6011 : : bool
6012 : 0 : gimple_simplify_415 (gimple_match_op *res_op, gimple_seq *seq,
6013 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6014 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6015 : : const enum tree_code ARG_UNUSED (cmp))
6016 : : {
6017 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6018 : 0 : if (!HONOR_SIGNED_ZEROS (type)
6019 : : )
6020 : : {
6021 : 0 : gimple_seq *lseq = seq;
6022 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1288;
6023 : 0 : {
6024 : 0 : tree tem;
6025 : 0 : tem = captures[3];
6026 : 0 : res_op->set_value (tem);
6027 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 643, __FILE__, __LINE__, true);
6028 : 0 : return true;
6029 : : }
6030 : 0 : next_after_fail1288:;
6031 : : }
6032 : : return false;
6033 : : }
6034 : :
6035 : : bool
6036 : 0 : gimple_simplify_419 (gimple_match_op *res_op, gimple_seq *seq,
6037 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6038 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6039 : : const enum tree_code ARG_UNUSED (cmp))
6040 : : {
6041 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6042 : 0 : if (!HONOR_SIGNED_ZEROS (type)
6043 : : )
6044 : : {
6045 : 0 : gimple_seq *lseq = seq;
6046 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1292;
6047 : 0 : {
6048 : 0 : tree tem;
6049 : 0 : tem = captures[3];
6050 : 0 : res_op->set_value (tem);
6051 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 643, __FILE__, __LINE__, true);
6052 : 0 : return true;
6053 : : }
6054 : 0 : next_after_fail1292:;
6055 : : }
6056 : : return false;
6057 : : }
6058 : :
6059 : : bool
6060 : 0 : gimple_simplify_426 (gimple_match_op *res_op, gimple_seq *seq,
6061 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6062 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6063 : : const enum tree_code ARG_UNUSED (cmp))
6064 : : {
6065 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6066 : 0 : if (!HONOR_SIGNED_ZEROS (type)
6067 : 0 : && bitwise_equal_p (captures[0], captures[1])
6068 : : )
6069 : : {
6070 : 0 : gimple_seq *lseq = seq;
6071 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1300;
6072 : 0 : {
6073 : 0 : tree tem;
6074 : 0 : tem = captures[1];
6075 : 0 : res_op->set_value (tem);
6076 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 646, __FILE__, __LINE__, true);
6077 : 0 : return true;
6078 : : }
6079 : 0 : next_after_fail1300:;
6080 : : }
6081 : : return false;
6082 : : }
6083 : :
6084 : : bool
6085 : 35 : gimple_simplify_432 (gimple_match_op *res_op, gimple_seq *seq,
6086 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6087 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6088 : : const enum tree_code ARG_UNUSED (cmp))
6089 : : {
6090 : 35 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6091 : 35 : if (INTEGRAL_TYPE_P (type)
6092 : 35 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6093 : 35 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
6094 : 70 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (type)
6095 : : )
6096 : : {
6097 : 35 : {
6098 : 35 : tree shifter = build_int_cst (integer_type_node, TYPE_PRECISION (type) - 1);
6099 : 35 : if (cmp == GE_EXPR
6100 : : )
6101 : : {
6102 : 34 : gimple_seq *lseq = seq;
6103 : 34 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1311;
6104 : 34 : {
6105 : 34 : res_op->set_op (BIT_XOR_EXPR, type, 2);
6106 : 34 : {
6107 : 34 : tree _r1;
6108 : 34 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
6109 : 34 : {
6110 : 34 : tree _o2[2], _r2;
6111 : 34 : _o2[0] = captures[0];
6112 : 34 : _o2[1] = shifter;
6113 : 34 : tem_op.set_op (RSHIFT_EXPR, TREE_TYPE (_o2[0]), 2);
6114 : 34 : tem_op.ops[0] = _o2[0];
6115 : 34 : tem_op.ops[1] = _o2[1];
6116 : 34 : tem_op.resimplify (lseq, valueize);
6117 : : }
6118 : 34 : if (type != tem_op.type
6119 : 34 : && !useless_type_conversion_p (type, tem_op.type))
6120 : : {
6121 : 17 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6122 : 17 : if (!_r1) goto next_after_fail1311;
6123 : 17 : tem_op.set_op (NOP_EXPR, type, 1);
6124 : 17 : tem_op.ops[0] = _r1;
6125 : 17 : tem_op.resimplify (lseq, valueize);
6126 : : }
6127 : 34 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6128 : 34 : if (!_r1) goto next_after_fail1311;
6129 : 34 : res_op->ops[0] = _r1;
6130 : : }
6131 : 34 : res_op->ops[1] = captures[1];
6132 : 34 : res_op->resimplify (lseq, valueize);
6133 : 34 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 657, __FILE__, __LINE__, true);
6134 : 34 : return true;
6135 : : }
6136 : : next_after_fail1311:;
6137 : : }
6138 : : else
6139 : : {
6140 : 1 : gimple_seq *lseq = seq;
6141 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1312;
6142 : 1 : {
6143 : 1 : res_op->set_op (BIT_NOT_EXPR, type, 1);
6144 : 1 : {
6145 : 1 : tree _o1[2], _r1;
6146 : 1 : {
6147 : 1 : tree _r2;
6148 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
6149 : 1 : {
6150 : 1 : tree _o3[2], _r3;
6151 : 1 : _o3[0] = captures[0];
6152 : 1 : _o3[1] = shifter;
6153 : 1 : tem_op.set_op (RSHIFT_EXPR, TREE_TYPE (_o3[0]), 2);
6154 : 1 : tem_op.ops[0] = _o3[0];
6155 : 1 : tem_op.ops[1] = _o3[1];
6156 : 1 : tem_op.resimplify (lseq, valueize);
6157 : : }
6158 : 1 : if (type != tem_op.type
6159 : 1 : && !useless_type_conversion_p (type, tem_op.type))
6160 : : {
6161 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6162 : 1 : if (!_r2) goto next_after_fail1312;
6163 : 1 : tem_op.set_op (NOP_EXPR, type, 1);
6164 : 1 : tem_op.ops[0] = _r2;
6165 : 1 : tem_op.resimplify (lseq, valueize);
6166 : : }
6167 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6168 : 1 : if (!_r2) goto next_after_fail1312;
6169 : 1 : _o1[0] = _r2;
6170 : : }
6171 : 1 : _o1[1] = captures[1];
6172 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6173 : 1 : tem_op.resimplify (lseq, valueize);
6174 : 1 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6175 : 1 : if (!_r1) goto next_after_fail1312;
6176 : 1 : res_op->ops[0] = _r1;
6177 : : }
6178 : 1 : res_op->resimplify (lseq, valueize);
6179 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 658, __FILE__, __LINE__, true);
6180 : 1 : return true;
6181 : : }
6182 : : next_after_fail1312:;
6183 : : }
6184 : : }
6185 : : }
6186 : : return false;
6187 : : }
6188 : :
6189 : : bool
6190 : 1593 : gimple_simplify_442 (gimple_match_op *res_op, gimple_seq *seq,
6191 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6192 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6193 : : {
6194 : 1593 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6195 : 1593 : if (integer_pow2p (captures[1])
6196 : 1593 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
6197 : : )
6198 : : {
6199 : 0 : {
6200 : 0 : int shift = element_precision (captures[0]) - wi::exact_log2 (wi::to_wide (captures[1])) - 1;
6201 : 0 : if (shift >= 0
6202 : : )
6203 : : {
6204 : 0 : gimple_seq *lseq = seq;
6205 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1336;
6206 : 0 : {
6207 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
6208 : 0 : {
6209 : 0 : tree _r1;
6210 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
6211 : 0 : {
6212 : 0 : tree _o2[2], _r2;
6213 : 0 : _o2[0] = captures[0];
6214 : 0 : _o2[1] = build_int_cst (integer_type_node, shift);
6215 : 0 : tem_op.set_op (RSHIFT_EXPR, TREE_TYPE (_o2[0]), 2);
6216 : 0 : tem_op.ops[0] = _o2[0];
6217 : 0 : tem_op.ops[1] = _o2[1];
6218 : 0 : tem_op.resimplify (lseq, valueize);
6219 : : }
6220 : 0 : if (type != tem_op.type
6221 : 0 : && !useless_type_conversion_p (type, tem_op.type))
6222 : : {
6223 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6224 : 0 : if (!_r1) goto next_after_fail1336;
6225 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
6226 : 0 : tem_op.ops[0] = _r1;
6227 : 0 : tem_op.resimplify (lseq, valueize);
6228 : : }
6229 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6230 : 0 : if (!_r1) goto next_after_fail1336;
6231 : 0 : res_op->ops[0] = _r1;
6232 : : }
6233 : 0 : res_op->ops[1] = captures[1];
6234 : 0 : res_op->resimplify (lseq, valueize);
6235 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 664, __FILE__, __LINE__, true);
6236 : 0 : return true;
6237 : : }
6238 : : next_after_fail1336:;
6239 : : }
6240 : : else
6241 : : {
6242 : 0 : gimple_seq *lseq = seq;
6243 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1337;
6244 : 0 : {
6245 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
6246 : 0 : {
6247 : 0 : tree _o1[1], _r1;
6248 : 0 : _o1[0] = captures[0];
6249 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
6250 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
6251 : : {
6252 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
6253 : 0 : tem_op.resimplify (lseq, valueize);
6254 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6255 : 0 : if (!_r1) goto next_after_fail1337;
6256 : : }
6257 : : else
6258 : : _r1 = _o1[0];
6259 : 0 : res_op->ops[0] = _r1;
6260 : : }
6261 : 0 : res_op->ops[1] = captures[1];
6262 : 0 : res_op->resimplify (lseq, valueize);
6263 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 665, __FILE__, __LINE__, true);
6264 : 0 : return true;
6265 : : }
6266 : : next_after_fail1337:;
6267 : : }
6268 : : }
6269 : : }
6270 : : return false;
6271 : : }
6272 : :
6273 : : bool
6274 : 0 : gimple_simplify_445 (gimple_match_op *res_op, gimple_seq *seq,
6275 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6276 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6277 : : const combined_fn ARG_UNUSED (func))
6278 : : {
6279 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6280 : 0 : if (wi::to_widest (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[3])) - 1
6281 : : )
6282 : : {
6283 : 0 : gimple_seq *lseq = seq;
6284 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1341;
6285 : 0 : {
6286 : 0 : tree tem;
6287 : 0 : tem = captures[2];
6288 : 0 : res_op->set_value (tem);
6289 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 669, __FILE__, __LINE__, true);
6290 : 0 : return true;
6291 : : }
6292 : 0 : next_after_fail1341:;
6293 : : }
6294 : : return false;
6295 : : }
6296 : :
6297 : : bool
6298 : 0 : gimple_simplify_450 (gimple_match_op *res_op, gimple_seq *seq,
6299 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6300 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6301 : : {
6302 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6303 : 0 : {
6304 : 0 : int val;
6305 : 0 : internal_fn ifn = IFN_LAST;
6306 : 0 : if (TREE_CODE (TREE_TYPE (captures[2])) == BITINT_TYPE)
6307 : : ifn = IFN_CLZ;
6308 : 0 : else if (direct_internal_fn_supported_p (IFN_CLZ, TREE_TYPE (captures[2]),
6309 : : OPTIMIZE_FOR_BOTH))
6310 : : ifn = IFN_CLZ;
6311 : : if (ifn == IFN_CLZ
6312 : : )
6313 : : {
6314 : 0 : gimple_seq *lseq = seq;
6315 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1346;
6316 : 0 : {
6317 : 0 : res_op->set_op (CFN_CLZ, type, 2);
6318 : 0 : res_op->ops[0] = captures[2];
6319 : 0 : res_op->ops[1] = captures[3];
6320 : 0 : res_op->resimplify (lseq, valueize);
6321 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 671, __FILE__, __LINE__, true);
6322 : 0 : return true;
6323 : : }
6324 : 0 : next_after_fail1346:;
6325 : : }
6326 : : }
6327 : : return false;
6328 : : }
6329 : :
6330 : : bool
6331 : 263 : gimple_simplify_456 (gimple_match_op *res_op, gimple_seq *seq,
6332 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6333 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6334 : : const enum tree_code ARG_UNUSED (cmp))
6335 : : {
6336 : 263 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6337 : 412 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6338 : 263 : && tree_expr_nonzero_p (captures[0])
6339 : 374 : && tree_expr_nonnegative_p (captures[0])
6340 : : )
6341 : : {
6342 : 11 : gimple_seq *lseq = seq;
6343 : 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1353;
6344 : 11 : {
6345 : 11 : tree tem;
6346 : 11 : tem = build_zero_cst (type);
6347 : 11 : res_op->set_value (tem);
6348 : 11 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
6349 : 11 : return true;
6350 : : }
6351 : 0 : next_after_fail1353:;
6352 : : }
6353 : : return false;
6354 : : }
6355 : :
6356 : : bool
6357 : 419693 : gimple_simplify_462 (gimple_match_op *res_op, gimple_seq *seq,
6358 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6359 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6360 : : const enum tree_code ARG_UNUSED (op))
6361 : : {
6362 : 419693 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6363 : 839379 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6364 : 838954 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
6365 : 135050 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
6366 : 974220 : && (CONSTANT_CLASS_P (captures[1]) || single_use (captures[0]))
6367 : : )
6368 : : {
6369 : 8674 : gimple_seq *lseq = seq;
6370 : 8674 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1360;
6371 : 8674 : {
6372 : 8674 : res_op->set_op (op, type, 2);
6373 : 8674 : res_op->ops[0] = captures[1];
6374 : 8674 : res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1]));
6375 : 8674 : res_op->resimplify (lseq, valueize);
6376 : 8674 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
6377 : 8674 : return true;
6378 : : }
6379 : 0 : next_after_fail1360:;
6380 : : }
6381 : : return false;
6382 : : }
6383 : :
6384 : : bool
6385 : 9154841 : gimple_simplify_468 (gimple_match_op *res_op, gimple_seq *seq,
6386 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6387 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6388 : : const enum tree_code ARG_UNUSED (cmp),
6389 : : const enum tree_code ARG_UNUSED (acmp))
6390 : : {
6391 : 9154841 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6392 : 9154841 : {
6393 : 9154841 : tree cst = uniform_integer_cst_p (captures[1]);
6394 : 9154841 : if (tree_int_cst_sgn (cst) == 1
6395 : : )
6396 : : {
6397 : 761524 : gimple_seq *lseq = seq;
6398 : 761524 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1367;
6399 : 761524 : {
6400 : 761524 : res_op->set_op (acmp, type, 2);
6401 : 761524 : res_op->ops[0] = captures[0];
6402 : 761524 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[1]),
6403 : 761524 : wide_int_to_tree (TREE_TYPE (cst),
6404 : 761524 : wi::to_wide (cst) - 1));
6405 : 761524 : res_op->resimplify (lseq, valueize);
6406 : 761524 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
6407 : 761524 : return true;
6408 : : }
6409 : 0 : next_after_fail1367:;
6410 : : }
6411 : : }
6412 : : return false;
6413 : : }
6414 : :
6415 : : bool
6416 : 41969910 : gimple_simplify_473 (gimple_match_op *res_op, gimple_seq *seq,
6417 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6418 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6419 : : const enum tree_code ARG_UNUSED (cmp))
6420 : : {
6421 : 41969910 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6422 : 83906215 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
6423 : 23378 : || POINTER_TYPE_P (TREE_TYPE (captures[2]))
6424 : 19939 : || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2])))
6425 : 83906215 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
6426 : : )
6427 : : {
6428 : 41969910 : {
6429 : 41969910 : tree cst = uniform_integer_cst_p (captures[2]);
6430 : 41969910 : tree arg1_type = TREE_TYPE (cst);
6431 : 41969910 : unsigned int prec = TYPE_PRECISION (arg1_type);
6432 : 41969910 : wide_int max = wi::max_value (arg1_type);
6433 : 41969910 : wide_int signed_max = wi::max_value (prec, SIGNED);
6434 : 41969910 : wide_int min = wi::min_value (arg1_type);
6435 : 41969910 : if (wi::to_wide (cst) == max
6436 : : )
6437 : : {
6438 : 4314 : if (cmp == GT_EXPR
6439 : : )
6440 : : {
6441 : 1676 : gimple_seq *lseq = seq;
6442 : 1676 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1389;
6443 : 1676 : {
6444 : 1676 : tree tem;
6445 : 1676 : tem = constant_boolean_node (false, type);
6446 : 1676 : res_op->set_value (tem);
6447 : 1676 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 696, __FILE__, __LINE__, true);
6448 : 1676 : return true;
6449 : : }
6450 : 0 : next_after_fail1389:;
6451 : : }
6452 : : else
6453 : : {
6454 : 2638 : if (cmp == GE_EXPR
6455 : : )
6456 : : {
6457 : 0 : gimple_seq *lseq = seq;
6458 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1390;
6459 : 0 : {
6460 : 0 : res_op->set_op (EQ_EXPR, type, 2);
6461 : 0 : res_op->ops[0] = captures[0];
6462 : 0 : res_op->ops[1] = captures[2];
6463 : 0 : res_op->resimplify (lseq, valueize);
6464 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 697, __FILE__, __LINE__, true);
6465 : 0 : return true;
6466 : : }
6467 : 0 : next_after_fail1390:;
6468 : : }
6469 : : else
6470 : : {
6471 : 2638 : if (cmp == LE_EXPR
6472 : : )
6473 : : {
6474 : 2619 : gimple_seq *lseq = seq;
6475 : 2619 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1391;
6476 : 2619 : {
6477 : 2619 : tree tem;
6478 : 2619 : tem = constant_boolean_node (true, type);
6479 : 2619 : res_op->set_value (tem);
6480 : 2619 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 698, __FILE__, __LINE__, true);
6481 : 2619 : return true;
6482 : : }
6483 : 0 : next_after_fail1391:;
6484 : : }
6485 : : else
6486 : : {
6487 : 19 : if (cmp == LT_EXPR
6488 : : )
6489 : : {
6490 : 19 : gimple_seq *lseq = seq;
6491 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1392;
6492 : 19 : {
6493 : 19 : res_op->set_op (NE_EXPR, type, 2);
6494 : 19 : res_op->ops[0] = captures[0];
6495 : 19 : res_op->ops[1] = captures[2];
6496 : 19 : res_op->resimplify (lseq, valueize);
6497 : 19 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 699, __FILE__, __LINE__, true);
6498 : 19 : return true;
6499 : : }
6500 : 0 : next_after_fail1392:;
6501 : : }
6502 : : }
6503 : : }
6504 : : }
6505 : : }
6506 : : else
6507 : : {
6508 : 41965596 : if (wi::to_wide (cst) == min
6509 : : )
6510 : : {
6511 : 182468 : if (cmp == LT_EXPR
6512 : : )
6513 : : {
6514 : 21887 : gimple_seq *lseq = seq;
6515 : 21887 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1393;
6516 : 21887 : {
6517 : 21887 : tree tem;
6518 : 21887 : tem = constant_boolean_node (false, type);
6519 : 21887 : res_op->set_value (tem);
6520 : 21887 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 700, __FILE__, __LINE__, true);
6521 : 21887 : return true;
6522 : : }
6523 : 0 : next_after_fail1393:;
6524 : : }
6525 : : else
6526 : : {
6527 : 160581 : if (cmp == LE_EXPR
6528 : : )
6529 : : {
6530 : 65383 : gimple_seq *lseq = seq;
6531 : 65383 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1394;
6532 : 65383 : {
6533 : 65383 : res_op->set_op (EQ_EXPR, type, 2);
6534 : 65383 : res_op->ops[0] = captures[0];
6535 : 65383 : res_op->ops[1] = captures[2];
6536 : 65383 : res_op->resimplify (lseq, valueize);
6537 : 65383 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 701, __FILE__, __LINE__, true);
6538 : 65383 : return true;
6539 : : }
6540 : 0 : next_after_fail1394:;
6541 : : }
6542 : : else
6543 : : {
6544 : 95198 : if (cmp == GE_EXPR
6545 : : )
6546 : : {
6547 : 5011 : gimple_seq *lseq = seq;
6548 : 5011 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1395;
6549 : 5011 : {
6550 : 5011 : tree tem;
6551 : 5011 : tem = constant_boolean_node (true, type);
6552 : 5011 : res_op->set_value (tem);
6553 : 5011 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 702, __FILE__, __LINE__, true);
6554 : 5011 : return true;
6555 : : }
6556 : 0 : next_after_fail1395:;
6557 : : }
6558 : : else
6559 : : {
6560 : 90187 : if (cmp == GT_EXPR
6561 : : )
6562 : : {
6563 : 90187 : gimple_seq *lseq = seq;
6564 : 90187 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1396;
6565 : 90187 : {
6566 : 90187 : res_op->set_op (NE_EXPR, type, 2);
6567 : 90187 : res_op->ops[0] = captures[0];
6568 : 90187 : res_op->ops[1] = captures[2];
6569 : 90187 : res_op->resimplify (lseq, valueize);
6570 : 90187 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 703, __FILE__, __LINE__, true);
6571 : 90187 : return true;
6572 : : }
6573 : 0 : next_after_fail1396:;
6574 : : }
6575 : : }
6576 : : }
6577 : : }
6578 : : }
6579 : : else
6580 : : {
6581 : 41783131 : if (wi::to_wide (cst) == max - 1
6582 : : )
6583 : : {
6584 : 8078 : if (cmp == GT_EXPR
6585 : : )
6586 : : {
6587 : 734 : gimple_seq *lseq = seq;
6588 : 734 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1397;
6589 : 734 : {
6590 : 734 : res_op->set_op (EQ_EXPR, type, 2);
6591 : 734 : res_op->ops[0] = captures[0];
6592 : 734 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
6593 : 734 : wide_int_to_tree (TREE_TYPE (cst),
6594 : 734 : wi::to_wide (cst)
6595 : 1468 : + 1));
6596 : 734 : res_op->resimplify (lseq, valueize);
6597 : 734 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 704, __FILE__, __LINE__, true);
6598 : 734 : return true;
6599 : : }
6600 : 0 : next_after_fail1397:;
6601 : : }
6602 : : else
6603 : : {
6604 : 7344 : if (cmp == LE_EXPR
6605 : : )
6606 : : {
6607 : 7344 : gimple_seq *lseq = seq;
6608 : 7344 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1398;
6609 : 7344 : {
6610 : 7344 : res_op->set_op (NE_EXPR, type, 2);
6611 : 7344 : res_op->ops[0] = captures[0];
6612 : 7344 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
6613 : 7344 : wide_int_to_tree (TREE_TYPE (cst),
6614 : 7344 : wi::to_wide (cst)
6615 : 14688 : + 1));
6616 : 7344 : res_op->resimplify (lseq, valueize);
6617 : 7344 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 705, __FILE__, __LINE__, true);
6618 : 7344 : return true;
6619 : : }
6620 : 0 : next_after_fail1398:;
6621 : : }
6622 : : }
6623 : : }
6624 : : else
6625 : : {
6626 : 41775053 : if (wi::to_wide (cst) == min + 1
6627 : : )
6628 : : {
6629 : 660315 : if (cmp == GE_EXPR
6630 : : )
6631 : : {
6632 : 8508 : gimple_seq *lseq = seq;
6633 : 8508 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1399;
6634 : 8508 : {
6635 : 8508 : res_op->set_op (NE_EXPR, type, 2);
6636 : 8508 : res_op->ops[0] = captures[0];
6637 : 8508 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
6638 : 8508 : wide_int_to_tree (TREE_TYPE (cst),
6639 : 8508 : wi::to_wide (cst)
6640 : 17016 : - 1));
6641 : 8508 : res_op->resimplify (lseq, valueize);
6642 : 8508 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 706, __FILE__, __LINE__, true);
6643 : 8508 : return true;
6644 : : }
6645 : 0 : next_after_fail1399:;
6646 : : }
6647 : : else
6648 : : {
6649 : 651807 : if (cmp == LT_EXPR
6650 : : )
6651 : : {
6652 : 58 : gimple_seq *lseq = seq;
6653 : 58 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1400;
6654 : 58 : {
6655 : 58 : res_op->set_op (EQ_EXPR, type, 2);
6656 : 58 : res_op->ops[0] = captures[0];
6657 : 58 : res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]),
6658 : 58 : wide_int_to_tree (TREE_TYPE (cst),
6659 : 58 : wi::to_wide (cst)
6660 : 116 : - 1));
6661 : 58 : res_op->resimplify (lseq, valueize);
6662 : 58 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 707, __FILE__, __LINE__, true);
6663 : 58 : return true;
6664 : : }
6665 : 0 : next_after_fail1400:;
6666 : : }
6667 : : }
6668 : : }
6669 : : else
6670 : : {
6671 : 41114735 : if (wi::to_wide (cst) == signed_max
6672 : 13358 : && TYPE_UNSIGNED (arg1_type)
6673 : 13358 : && TYPE_MODE (arg1_type) != BLKmode
6674 : 41114739 : && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type))
6675 : 41123923 : && INTEGRAL_TYPE_P (arg1_type)
6676 : : )
6677 : : {
6678 : 9184 : if (cmp == LE_EXPR || cmp == GT_EXPR
6679 : : )
6680 : : {
6681 : 9184 : {
6682 : 9184 : tree st = signed_type_for (TREE_TYPE (captures[2]));
6683 : 9184 : if (cst == captures[2] && cmp == LE_EXPR
6684 : : )
6685 : : {
6686 : 2382 : gimple_seq *lseq = seq;
6687 : 2382 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1401;
6688 : 2382 : {
6689 : 2382 : res_op->set_op (GE_EXPR, type, 2);
6690 : 2382 : {
6691 : 2382 : tree _o1[1], _r1;
6692 : 2382 : _o1[0] = captures[1];
6693 : 2382 : if (st != TREE_TYPE (_o1[0]) /* XXX */
6694 : 2382 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
6695 : : {
6696 : 2382 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, _o1[0]);
6697 : 2382 : tem_op.resimplify (lseq, valueize);
6698 : 2382 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6699 : 2382 : if (!_r1) goto next_after_fail1401;
6700 : : }
6701 : : else
6702 : : _r1 = _o1[0];
6703 : 219 : res_op->ops[0] = _r1;
6704 : : }
6705 : 219 : res_op->ops[1] = build_zero_cst (st);
6706 : 219 : res_op->resimplify (lseq, valueize);
6707 : 219 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 708, __FILE__, __LINE__, true);
6708 : 219 : return true;
6709 : : }
6710 : 41764927 : next_after_fail1401:;
6711 : : }
6712 : : else
6713 : : {
6714 : 6802 : if (cst == captures[2] && cmp == GT_EXPR
6715 : : )
6716 : : {
6717 : 6802 : gimple_seq *lseq = seq;
6718 : 6802 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1402;
6719 : 6802 : {
6720 : 6802 : res_op->set_op (LT_EXPR, type, 2);
6721 : 6802 : {
6722 : 6802 : tree _o1[1], _r1;
6723 : 6802 : _o1[0] = captures[1];
6724 : 6802 : if (st != TREE_TYPE (_o1[0]) /* XXX */
6725 : 6802 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
6726 : : {
6727 : 6802 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, _o1[0]);
6728 : 6802 : tem_op.resimplify (lseq, valueize);
6729 : 6802 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6730 : 6802 : if (!_r1) goto next_after_fail1402;
6731 : : }
6732 : : else
6733 : : _r1 = _o1[0];
6734 : 1338 : res_op->ops[0] = _r1;
6735 : : }
6736 : 1338 : res_op->ops[1] = build_zero_cst (st);
6737 : 1338 : res_op->resimplify (lseq, valueize);
6738 : 1338 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 709, __FILE__, __LINE__, true);
6739 : 1338 : return true;
6740 : : }
6741 : 41764927 : next_after_fail1402:;
6742 : : }
6743 : : else
6744 : : {
6745 : 0 : if (cmp == LE_EXPR
6746 : : )
6747 : : {
6748 : 0 : gimple_seq *lseq = seq;
6749 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1403;
6750 : 0 : {
6751 : 0 : res_op->set_op (GE_EXPR, type, 2);
6752 : 0 : {
6753 : 0 : tree _o1[1], _r1;
6754 : 0 : _o1[0] = captures[1];
6755 : 0 : if (st != TREE_TYPE (_o1[0]) /* XXX */
6756 : 0 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
6757 : : {
6758 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, _o1[0]);
6759 : 0 : tem_op.resimplify (lseq, valueize);
6760 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6761 : 0 : if (!_r1) goto next_after_fail1403;
6762 : : }
6763 : : else
6764 : : _r1 = _o1[0];
6765 : 0 : res_op->ops[0] = _r1;
6766 : : }
6767 : 0 : res_op->ops[1] = build_zero_cst (st);
6768 : 0 : res_op->resimplify (lseq, valueize);
6769 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 710, __FILE__, __LINE__, true);
6770 : 0 : return true;
6771 : : }
6772 : 41764927 : next_after_fail1403:;
6773 : : }
6774 : : else
6775 : : {
6776 : 0 : if (cmp == GT_EXPR
6777 : : )
6778 : : {
6779 : 0 : gimple_seq *lseq = seq;
6780 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1404;
6781 : 0 : {
6782 : 0 : res_op->set_op (LT_EXPR, type, 2);
6783 : 0 : {
6784 : 0 : tree _o1[1], _r1;
6785 : 0 : _o1[0] = captures[1];
6786 : 0 : if (st != TREE_TYPE (_o1[0]) /* XXX */
6787 : 0 : && !useless_type_conversion_p (st, TREE_TYPE (_o1[0])))
6788 : : {
6789 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, _o1[0]);
6790 : 0 : tem_op.resimplify (lseq, valueize);
6791 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6792 : 0 : if (!_r1) goto next_after_fail1404;
6793 : : }
6794 : : else
6795 : : _r1 = _o1[0];
6796 : 0 : res_op->ops[0] = _r1;
6797 : : }
6798 : 0 : res_op->ops[1] = build_zero_cst (st);
6799 : 0 : res_op->resimplify (lseq, valueize);
6800 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 711, __FILE__, __LINE__, true);
6801 : 0 : return true;
6802 : : }
6803 : 41764927 : next_after_fail1404:;
6804 : : }
6805 : : }
6806 : : }
6807 : : }
6808 : : }
6809 : : }
6810 : : }
6811 : : }
6812 : : }
6813 : : }
6814 : : }
6815 : 41969916 : }
6816 : : }
6817 : : return false;
6818 : : }
6819 : :
6820 : : bool
6821 : 101 : gimple_simplify_516 (gimple_match_op *res_op, gimple_seq *seq,
6822 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6823 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6824 : : const combined_fn ARG_UNUSED (froms),
6825 : : const combined_fn ARG_UNUSED (tos))
6826 : : {
6827 : 101 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6828 : 101 : if (flag_unsafe_math_optimizations
6829 : 25 : && optimize
6830 : 25 : && FLOAT_TYPE_P (type)
6831 : 25 : && FLOAT_TYPE_P (TREE_TYPE (captures[0]))
6832 : 25 : && types_match (type, TREE_TYPE (captures[1]))
6833 : 25 : && types_match (type, TREE_TYPE (captures[2]))
6834 : 25 : && types_match (type, TREE_TYPE (captures[3]))
6835 : 25 : && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (captures[0]))
6836 : 126 : && direct_internal_fn_supported_p (as_internal_fn (tos),
6837 : : type, OPTIMIZE_FOR_BOTH)
6838 : : )
6839 : : {
6840 : 25 : gimple_seq *lseq = seq;
6841 : 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1467;
6842 : 25 : {
6843 : 25 : res_op->set_op (tos, type, 3);
6844 : 25 : res_op->ops[0] = captures[1];
6845 : 25 : res_op->ops[1] = captures[2];
6846 : 25 : res_op->ops[2] = captures[3];
6847 : 25 : res_op->resimplify (lseq, valueize);
6848 : 25 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 767, __FILE__, __LINE__, true);
6849 : 25 : return true;
6850 : : }
6851 : 0 : next_after_fail1467:;
6852 : : }
6853 : : return false;
6854 : : }
6855 : :
6856 : : bool
6857 : 36 : gimple_simplify_524 (gimple_match_op *res_op, gimple_seq *seq,
6858 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6859 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6860 : : const combined_fn ARG_UNUSED (coss),
6861 : : const combined_fn ARG_UNUSED (atans),
6862 : : const combined_fn ARG_UNUSED (sqrts),
6863 : : const combined_fn ARG_UNUSED (copysigns))
6864 : : {
6865 : 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6866 : 36 : {
6867 : 36 : REAL_VALUE_TYPE r_cst;
6868 : 36 : build_sinatan_real (&r_cst, type);
6869 : 36 : tree t_cst = build_real (type, r_cst);
6870 : 36 : tree t_one = build_one_cst (type);
6871 : 36 : tree t_zero = build_zero_cst (type);
6872 : 36 : if (SCALAR_FLOAT_TYPE_P (type)
6873 : : )
6874 : : {
6875 : 36 : gimple_seq *lseq = seq;
6876 : 36 : if (lseq
6877 : 18 : && (!single_use (captures[0])))
6878 : 30 : lseq = NULL;
6879 : 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1487;
6880 : 36 : {
6881 : 36 : res_op->set_op (COND_EXPR, type, 3);
6882 : 36 : {
6883 : 36 : tree _o1[2], _r1;
6884 : 36 : {
6885 : 36 : tree _o2[1], _r2;
6886 : 36 : _o2[0] = captures[1];
6887 : 36 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6888 : 36 : tem_op.resimplify (lseq, valueize);
6889 : 36 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6890 : 36 : if (!_r2) goto next_after_fail1487;
6891 : 6 : _o1[0] = _r2;
6892 : : }
6893 : 6 : _o1[1] = t_cst;
6894 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
6895 : 6 : tem_op.resimplify (lseq, valueize);
6896 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6897 : 6 : if (!_r1) goto next_after_fail1487;
6898 : 6 : res_op->ops[0] = _r1;
6899 : : }
6900 : 6 : {
6901 : 6 : tree _o1[2], _r1;
6902 : 6 : _o1[0] = t_one;
6903 : 6 : {
6904 : 6 : tree _o2[1], _r2;
6905 : 6 : {
6906 : 6 : tree _o3[2], _r3;
6907 : 6 : {
6908 : 6 : tree _o4[2], _r4;
6909 : 6 : _o4[0] = captures[1];
6910 : 6 : _o4[1] = captures[1];
6911 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o4[0]), _o4[0], _o4[1]);
6912 : 6 : tem_op.resimplify (lseq, valueize);
6913 : 6 : _r4 = maybe_push_res_to_seq (&tem_op, lseq);
6914 : 6 : if (!_r4) goto next_after_fail1487;
6915 : 6 : _o3[0] = _r4;
6916 : : }
6917 : 6 : _o3[1] = t_one;
6918 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
6919 : 6 : tem_op.resimplify (lseq, valueize);
6920 : 6 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
6921 : 6 : if (!_r3) goto next_after_fail1487;
6922 : 6 : _o2[0] = _r3;
6923 : : }
6924 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), sqrts, TREE_TYPE (_o2[0]), _o2[0]);
6925 : 6 : tem_op.resimplify (lseq, valueize);
6926 : 6 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
6927 : 6 : if (!_r2) goto next_after_fail1487;
6928 : 6 : _o1[1] = _r2;
6929 : : }
6930 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6931 : 6 : tem_op.resimplify (lseq, valueize);
6932 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6933 : 6 : if (!_r1) goto next_after_fail1487;
6934 : 6 : res_op->ops[1] = _r1;
6935 : : }
6936 : 6 : {
6937 : 6 : tree _o1[2], _r1;
6938 : 6 : _o1[0] = t_zero;
6939 : 6 : _o1[1] = captures[1];
6940 : 6 : gimple_match_op tem_op (res_op->cond.any_else (), copysigns, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6941 : 6 : tem_op.resimplify (lseq, valueize);
6942 : 6 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6943 : 6 : if (!_r1) goto next_after_fail1487;
6944 : 6 : res_op->ops[2] = _r1;
6945 : : }
6946 : 6 : res_op->resimplify (lseq, valueize);
6947 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 775, __FILE__, __LINE__, true);
6948 : 6 : return true;
6949 : : }
6950 : 30 : next_after_fail1487:;
6951 : : }
6952 : : }
6953 : 30 : return false;
6954 : : }
6955 : :
6956 : : bool
6957 : 21 : gimple_simplify_535 (gimple_match_op *res_op, gimple_seq *seq,
6958 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6959 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
6960 : : const combined_fn ARG_UNUSED (HYPOT))
6961 : : {
6962 : 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6963 : 21 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
6964 : : )
6965 : : {
6966 : 15 : gimple_seq *lseq = seq;
6967 : 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1499;
6968 : 15 : {
6969 : 15 : res_op->set_op (MULT_EXPR, type, 2);
6970 : 15 : {
6971 : 15 : tree _o1[1], _r1;
6972 : 15 : _o1[0] = captures[0];
6973 : 15 : gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
6974 : 15 : tem_op.resimplify (lseq, valueize);
6975 : 15 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
6976 : 15 : if (!_r1) goto next_after_fail1499;
6977 : 9 : res_op->ops[0] = _r1;
6978 : : }
6979 : 9 : res_op->ops[1] = build_real_truncate (type, dconst_sqrt2 ());
6980 : 9 : res_op->resimplify (lseq, valueize);
6981 : 9 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 787, __FILE__, __LINE__, true);
6982 : 9 : return true;
6983 : : }
6984 : : next_after_fail1499:;
6985 : : }
6986 : : return false;
6987 : : }
6988 : :
6989 : : bool
6990 : 36498 : gimple_simplify_539 (gimple_match_op *res_op, gimple_seq *seq,
6991 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
6992 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
6993 : : {
6994 : 36498 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
6995 : 36498 : if (!TYPE_SATURATING (type)
6996 : : )
6997 : : {
6998 : 17148 : if (!TYPE_OVERFLOW_SANITIZED (type)
6999 : 53646 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
7000 : : )
7001 : : {
7002 : 36498 : gimple_seq *lseq = seq;
7003 : 36498 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1503;
7004 : 36498 : {
7005 : 36498 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
7006 : 36498 : res_op->ops[0] = captures[0];
7007 : 36498 : res_op->resimplify (lseq, valueize);
7008 : 36498 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 791, __FILE__, __LINE__, true);
7009 : 36498 : return true;
7010 : : }
7011 : 0 : next_after_fail1503:;
7012 : : }
7013 : : }
7014 : : return false;
7015 : : }
7016 : :
7017 : : bool
7018 : 576 : gimple_simplify_542 (gimple_match_op *res_op, gimple_seq *seq,
7019 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7020 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7021 : : const combined_fn ARG_UNUSED (fmas))
7022 : : {
7023 : 576 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7024 : 576 : if (canonicalize_math_after_vectorization_p ()
7025 : : )
7026 : : {
7027 : 400 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
7028 : : )
7029 : : {
7030 : 377 : gimple_seq *lseq = seq;
7031 : 377 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1507;
7032 : 377 : {
7033 : 377 : res_op->set_op (CFN_FNMS, type, 3);
7034 : 377 : res_op->ops[0] = captures[1];
7035 : 377 : res_op->ops[1] = captures[2];
7036 : 377 : res_op->ops[2] = captures[3];
7037 : 377 : res_op->resimplify (lseq, valueize);
7038 : 377 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 795, __FILE__, __LINE__, true);
7039 : 377 : return true;
7040 : : }
7041 : 0 : next_after_fail1507:;
7042 : : }
7043 : : }
7044 : : return false;
7045 : : }
7046 : :
7047 : : bool
7048 : 0 : gimple_simplify_547 (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 : : {
7052 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7053 : 0 : gimple_seq *lseq = seq;
7054 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1512;
7055 : 0 : {
7056 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
7057 : 0 : res_op->ops[0] = captures[0];
7058 : 0 : res_op->ops[1] = captures[1];
7059 : 0 : res_op->resimplify (lseq, valueize);
7060 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
7061 : : return true;
7062 : : }
7063 : 0 : next_after_fail1512:;
7064 : 0 : return false;
7065 : : }
7066 : :
7067 : : bool
7068 : 12537 : gimple_simplify_551 (gimple_match_op *res_op, gimple_seq *seq,
7069 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7070 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7071 : : const enum tree_code ARG_UNUSED (bitop),
7072 : : const enum tree_code ARG_UNUSED (op))
7073 : : {
7074 : 12537 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7075 : 12537 : {
7076 : 12537 : tree pmop[2];
7077 : 12537 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[5], op, captures[1], bitop,
7078 : : captures[2], captures[3], captures[4], ERROR_MARK, NULL_TREE,
7079 : : NULL_TREE, pmop);
7080 : 12537 : if (utype
7081 : : )
7082 : : {
7083 : 9030 : gimple_seq *lseq = seq;
7084 : 9030 : if (lseq
7085 : 3207 : && (!single_use (captures[0])
7086 : 2941 : || !single_use (captures[1])))
7087 : 9008 : lseq = NULL;
7088 : 9030 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1516;
7089 : 9030 : {
7090 : 9030 : res_op->set_op (NOP_EXPR, type, 1);
7091 : 9030 : {
7092 : 9030 : tree _o1[2], _r1;
7093 : 9030 : {
7094 : 9030 : tree _o2[2], _r2;
7095 : 9030 : {
7096 : 9030 : tree _o3[1], _r3;
7097 : 9030 : _o3[0] = pmop[0];
7098 : 9030 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
7099 : 9030 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
7100 : : {
7101 : 341 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
7102 : 341 : tem_op.resimplify (lseq, valueize);
7103 : 341 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
7104 : 341 : if (!_r3) goto next_after_fail1516;
7105 : : }
7106 : : else
7107 : : _r3 = _o3[0];
7108 : 8706 : _o2[0] = _r3;
7109 : : }
7110 : 8706 : {
7111 : 8706 : tree _o3[1], _r3;
7112 : 8706 : _o3[0] = pmop[1];
7113 : 8706 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
7114 : 8706 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
7115 : : {
7116 : 17 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
7117 : 17 : tem_op.resimplify (lseq, valueize);
7118 : 17 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
7119 : 17 : if (!_r3) goto next_after_fail1516;
7120 : : }
7121 : : else
7122 : : _r3 = _o3[0];
7123 : 8706 : _o2[1] = _r3;
7124 : : }
7125 : 8706 : gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
7126 : 8706 : tem_op.resimplify (lseq, valueize);
7127 : 8706 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7128 : 8706 : if (!_r2) goto next_after_fail1516;
7129 : 36 : _o1[0] = _r2;
7130 : : }
7131 : 36 : {
7132 : 36 : tree _o2[1], _r2;
7133 : 36 : _o2[0] = captures[5];
7134 : 36 : if (utype != TREE_TYPE (_o2[0]) /* XXX */
7135 : 36 : && !useless_type_conversion_p (utype, TREE_TYPE (_o2[0])))
7136 : : {
7137 : 9 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o2[0]);
7138 : 9 : tem_op.resimplify (lseq, valueize);
7139 : 9 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7140 : 9 : if (!_r2) goto next_after_fail1516;
7141 : : }
7142 : : else
7143 : : _r2 = _o2[0];
7144 : 36 : _o1[1] = _r2;
7145 : : }
7146 : 36 : (*res_op).set_op (BIT_AND_EXPR, TREE_TYPE (_o1[0]), 2);
7147 : 36 : (*res_op).ops[0] = _o1[0];
7148 : 36 : (*res_op).ops[1] = _o1[1];
7149 : 36 : (*res_op).resimplify (lseq, valueize);
7150 : : }
7151 : 36 : if (type != res_op->type
7152 : 36 : && !useless_type_conversion_p (type, res_op->type))
7153 : : {
7154 : 9 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1516;
7155 : 9 : res_op->set_op (NOP_EXPR, type, 1);
7156 : 9 : res_op->resimplify (lseq, valueize);
7157 : : }
7158 : 36 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 803, __FILE__, __LINE__, true);
7159 : 36 : return true;
7160 : : }
7161 : 12501 : next_after_fail1516:;
7162 : : }
7163 : : }
7164 : 12501 : return false;
7165 : : }
7166 : :
7167 : : bool
7168 : 1213 : gimple_simplify_568 (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 (bswap))
7172 : : {
7173 : 1213 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7174 : 1213 : if (BITS_PER_UNIT == 8
7175 : 1213 : && tree_fits_uhwi_p (captures[2])
7176 : 1213 : && tree_to_uhwi (captures[2]) < 256
7177 : : )
7178 : : {
7179 : 38 : {
7180 : 38 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
7181 : 38 : tree utype = unsigned_type_for (TREE_TYPE (captures[1]));
7182 : 38 : tree nst = build_int_cst (integer_type_node, prec - 8);
7183 : 38 : gimple_seq *lseq = seq;
7184 : 38 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1538;
7185 : 38 : {
7186 : 38 : res_op->set_op (BIT_AND_EXPR, type, 2);
7187 : 38 : {
7188 : 38 : tree _r1;
7189 : 38 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
7190 : 38 : {
7191 : 38 : tree _o2[2], _r2;
7192 : 38 : {
7193 : 38 : tree _o3[1], _r3;
7194 : 38 : _o3[0] = captures[1];
7195 : 38 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
7196 : 38 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
7197 : : {
7198 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
7199 : 0 : tem_op.resimplify (lseq, valueize);
7200 : 0 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
7201 : 0 : if (!_r3) goto next_after_fail1538;
7202 : : }
7203 : : else
7204 : : _r3 = _o3[0];
7205 : 38 : _o2[0] = _r3;
7206 : : }
7207 : 38 : _o2[1] = nst;
7208 : 38 : tem_op.set_op (RSHIFT_EXPR, utype, 2);
7209 : 38 : tem_op.ops[0] = _o2[0];
7210 : 38 : tem_op.ops[1] = _o2[1];
7211 : 38 : tem_op.resimplify (lseq, valueize);
7212 : : }
7213 : 38 : if (type != tem_op.type
7214 : 38 : && !useless_type_conversion_p (type, tem_op.type))
7215 : : {
7216 : 16 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7217 : 16 : if (!_r1) goto next_after_fail1538;
7218 : 4 : tem_op.set_op (NOP_EXPR, type, 1);
7219 : 4 : tem_op.ops[0] = _r1;
7220 : 4 : tem_op.resimplify (lseq, valueize);
7221 : : }
7222 : 26 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7223 : 26 : if (!_r1) goto next_after_fail1538;
7224 : 11 : res_op->ops[0] = _r1;
7225 : : }
7226 : 11 : res_op->ops[1] = captures[2];
7227 : 11 : res_op->resimplify (lseq, valueize);
7228 : 11 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
7229 : 11 : return true;
7230 : : }
7231 : : next_after_fail1538:;
7232 : : }
7233 : : }
7234 : : return false;
7235 : : }
7236 : :
7237 : : bool
7238 : 14 : gimple_simplify_577 (gimple_match_op *res_op, gimple_seq *seq,
7239 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7240 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
7241 : : {
7242 : 14 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7243 : 14 : gimple_seq *lseq = seq;
7244 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1569;
7245 : 14 : {
7246 : 14 : tree tem;
7247 : 14 : tem = captures[2];
7248 : 14 : res_op->set_value (tem);
7249 : 14 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
7250 : : return true;
7251 : : }
7252 : 0 : next_after_fail1569:;
7253 : 0 : return false;
7254 : : }
7255 : :
7256 : : bool
7257 : 199279 : gimple_simplify_579 (gimple_match_op *res_op, gimple_seq *seq,
7258 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7259 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7260 : : const enum tree_code ARG_UNUSED (code2),
7261 : : const enum tree_code ARG_UNUSED (code1))
7262 : : {
7263 : 199279 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7264 : 199279 : if ((TREE_CODE (captures[2]) == INTEGER_CST
7265 : 62655 : && TREE_CODE (captures[5]) == INTEGER_CST)
7266 : 222277 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
7267 : 34248 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
7268 : 1118 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
7269 : 33130 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
7270 : 154744 : && bitwise_equal_p (captures[2], captures[5]))
7271 : : )
7272 : : {
7273 : 39666 : {
7274 : 39666 : bool one_before = false;
7275 : 39666 : bool one_after = false;
7276 : 39666 : int cmp = 0;
7277 : 39666 : bool allbits = true;
7278 : 39666 : if (TREE_CODE (captures[2]) == INTEGER_CST
7279 : 39657 : && TREE_CODE (captures[5]) == INTEGER_CST)
7280 : : {
7281 : 39657 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
7282 : 39657 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
7283 : 39657 : auto t2 = wi::to_wide (captures[5]);
7284 : 39657 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
7285 : 39657 : if (cmp < 0
7286 : 39657 : && t1 == t2 - 1)
7287 : : one_before = true;
7288 : 39657 : if (cmp > 0
7289 : 39657 : && t1 == t2 + 1)
7290 : : one_after = true;
7291 : : }
7292 : 39666 : bool val;
7293 : 39666 : switch (code2)
7294 : : {
7295 : 235 : case EQ_EXPR: val = (cmp == 0); break;
7296 : 36694 : case NE_EXPR: val = (cmp != 0); break;
7297 : 28 : case LT_EXPR: val = (cmp < 0); break;
7298 : 1783 : case GT_EXPR: val = (cmp > 0); break;
7299 : 796 : case LE_EXPR: val = (cmp <= 0); break;
7300 : 130 : case GE_EXPR: val = (cmp >= 0); break;
7301 : 0 : default: gcc_unreachable ();
7302 : : }
7303 : 39666 : if (code1 == EQ_EXPR && val
7304 : : )
7305 : : {
7306 : 387 : gimple_seq *lseq = seq;
7307 : 387 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1577;
7308 : 387 : {
7309 : 387 : tree tem;
7310 : 387 : tem = captures[0];
7311 : 387 : res_op->set_value (tem);
7312 : 387 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
7313 : 387 : return true;
7314 : : }
7315 : 0 : next_after_fail1577:;
7316 : : }
7317 : : else
7318 : : {
7319 : 39279 : if (code1 == EQ_EXPR && !val
7320 : : )
7321 : : {
7322 : 11 : gimple_seq *lseq = seq;
7323 : 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1578;
7324 : 11 : {
7325 : 11 : tree tem;
7326 : 11 : tem = constant_boolean_node (false, type);
7327 : 11 : res_op->set_value (tem);
7328 : 11 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
7329 : 11 : return true;
7330 : : }
7331 : 0 : next_after_fail1578:;
7332 : : }
7333 : : else
7334 : : {
7335 : 39268 : if (code1 == NE_EXPR && !val && allbits
7336 : : )
7337 : : {
7338 : 231 : gimple_seq *lseq = seq;
7339 : 231 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1579;
7340 : 231 : {
7341 : 231 : tree tem;
7342 : 231 : tem = captures[3];
7343 : 231 : res_op->set_value (tem);
7344 : 231 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
7345 : 231 : return true;
7346 : : }
7347 : 0 : next_after_fail1579:;
7348 : 0 : }
7349 : : else
7350 : : {
7351 : 39037 : if ((code1 == NE_EXPR
7352 : 39037 : && code2 == GE_EXPR
7353 : 117 : && cmp == 0
7354 : 117 : && allbits)
7355 : 39041 : && ((VECTOR_BOOLEAN_TYPE_P (type)
7356 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
7357 : 4 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
7358 : : )
7359 : : {
7360 : 4 : gimple_seq *lseq = seq;
7361 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1580;
7362 : 4 : {
7363 : 4 : res_op->set_op (GT_EXPR, type, 2);
7364 : 4 : res_op->ops[0] = captures[4];
7365 : 4 : {
7366 : 4 : tree _o1[1], _r1;
7367 : 4 : _o1[0] = captures[2];
7368 : 4 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
7369 : 4 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
7370 : : {
7371 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
7372 : 0 : tem_op.resimplify (lseq, valueize);
7373 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7374 : 0 : if (!_r1) goto next_after_fail1580;
7375 : : }
7376 : : else
7377 : : _r1 = _o1[0];
7378 : 4 : res_op->ops[1] = _r1;
7379 : : }
7380 : 4 : res_op->resimplify (lseq, valueize);
7381 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 829, __FILE__, __LINE__, true);
7382 : 4 : return true;
7383 : : }
7384 : : next_after_fail1580:;
7385 : : }
7386 : : else
7387 : : {
7388 : 39033 : if ((code1 == NE_EXPR
7389 : 39033 : && code2 == LE_EXPR
7390 : 772 : && cmp == 0
7391 : 772 : && allbits)
7392 : 39039 : && ((VECTOR_BOOLEAN_TYPE_P (type)
7393 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
7394 : 6 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
7395 : : )
7396 : : {
7397 : 6 : gimple_seq *lseq = seq;
7398 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1581;
7399 : 6 : {
7400 : 6 : res_op->set_op (LT_EXPR, type, 2);
7401 : 6 : res_op->ops[0] = captures[4];
7402 : 6 : {
7403 : 6 : tree _o1[1], _r1;
7404 : 6 : _o1[0] = captures[2];
7405 : 6 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
7406 : 6 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
7407 : : {
7408 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
7409 : 0 : tem_op.resimplify (lseq, valueize);
7410 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7411 : 0 : if (!_r1) goto next_after_fail1581;
7412 : : }
7413 : : else
7414 : : _r1 = _o1[0];
7415 : 6 : res_op->ops[1] = _r1;
7416 : : }
7417 : 6 : res_op->resimplify (lseq, valueize);
7418 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
7419 : 6 : return true;
7420 : : }
7421 : : next_after_fail1581:;
7422 : : }
7423 : : else
7424 : : {
7425 : 39027 : if ((code1 == NE_EXPR
7426 : 39027 : && code2 == GT_EXPR
7427 : : && one_after
7428 : 1720 : && allbits)
7429 : 39123 : && ((VECTOR_BOOLEAN_TYPE_P (type)
7430 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
7431 : 96 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
7432 : : )
7433 : : {
7434 : 96 : gimple_seq *lseq = seq;
7435 : 96 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1582;
7436 : 96 : {
7437 : 96 : res_op->set_op (GT_EXPR, type, 2);
7438 : 96 : res_op->ops[0] = captures[4];
7439 : 96 : {
7440 : 96 : tree _o1[1], _r1;
7441 : 96 : _o1[0] = captures[2];
7442 : 96 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
7443 : 96 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
7444 : : {
7445 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
7446 : 0 : tem_op.resimplify (lseq, valueize);
7447 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7448 : 0 : if (!_r1) goto next_after_fail1582;
7449 : : }
7450 : : else
7451 : : _r1 = _o1[0];
7452 : 96 : res_op->ops[1] = _r1;
7453 : : }
7454 : 96 : res_op->resimplify (lseq, valueize);
7455 : 96 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 831, __FILE__, __LINE__, true);
7456 : 96 : return true;
7457 : : }
7458 : : next_after_fail1582:;
7459 : : }
7460 : : else
7461 : : {
7462 : 38931 : if ((code1 == NE_EXPR
7463 : 38931 : && code2 == LT_EXPR
7464 : : && one_before
7465 : 20 : && allbits)
7466 : 38935 : && ((VECTOR_BOOLEAN_TYPE_P (type)
7467 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
7468 : 4 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
7469 : : )
7470 : : {
7471 : 4 : gimple_seq *lseq = seq;
7472 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1583;
7473 : 4 : {
7474 : 4 : res_op->set_op (LT_EXPR, type, 2);
7475 : 4 : res_op->ops[0] = captures[4];
7476 : 4 : {
7477 : 4 : tree _o1[1], _r1;
7478 : 4 : _o1[0] = captures[2];
7479 : 4 : if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (_o1[0]) /* XXX */
7480 : 4 : && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (_o1[0])))
7481 : : {
7482 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), _o1[0]);
7483 : 0 : tem_op.resimplify (lseq, valueize);
7484 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7485 : 0 : if (!_r1) goto next_after_fail1583;
7486 : : }
7487 : : else
7488 : : _r1 = _o1[0];
7489 : 4 : res_op->ops[1] = _r1;
7490 : : }
7491 : 4 : res_op->resimplify (lseq, valueize);
7492 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 832, __FILE__, __LINE__, true);
7493 : 4 : return true;
7494 : : }
7495 : : next_after_fail1583:;
7496 : : }
7497 : : }
7498 : : }
7499 : : }
7500 : : }
7501 : : }
7502 : : }
7503 : : }
7504 : : }
7505 : : return false;
7506 : : }
7507 : :
7508 : : bool
7509 : 3 : gimple_simplify_612 (gimple_match_op *res_op, gimple_seq *seq,
7510 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7511 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7512 : : const enum tree_code ARG_UNUSED (rotate))
7513 : : {
7514 : 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7515 : 3 : if ((element_precision (TREE_TYPE (captures[2]))
7516 : 3 : <= element_precision (TREE_TYPE (captures[3]))
7517 : 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
7518 : 3 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
7519 : 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))
7520 : : )
7521 : : {
7522 : 3 : {
7523 : 3 : tree rotate_type = TREE_TYPE (captures[2]);
7524 : 3 : gimple_seq *lseq = seq;
7525 : 3 : if (lseq
7526 : 3 : && (!single_use (captures[0])
7527 : 3 : || !single_use (captures[1])))
7528 : 0 : lseq = NULL;
7529 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1623;
7530 : 3 : {
7531 : 3 : res_op->set_op (NOP_EXPR, type, 1);
7532 : 3 : {
7533 : 3 : tree _o1[2], _r1;
7534 : 3 : {
7535 : 3 : tree _o2[1], _r2;
7536 : 3 : _o2[0] = captures[3];
7537 : 3 : if (rotate_type != TREE_TYPE (_o2[0]) /* XXX */
7538 : 3 : && !useless_type_conversion_p (rotate_type, TREE_TYPE (_o2[0])))
7539 : : {
7540 : 1 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, rotate_type, _o2[0]);
7541 : 1 : tem_op.resimplify (lseq, valueize);
7542 : 1 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7543 : 1 : if (!_r2) goto next_after_fail1623;
7544 : : }
7545 : : else
7546 : : _r2 = _o2[0];
7547 : 3 : _o1[0] = _r2;
7548 : : }
7549 : 3 : _o1[1] = captures[4];
7550 : 3 : (*res_op).set_op (rotate, TREE_TYPE (_o1[0]), 2);
7551 : 3 : (*res_op).ops[0] = _o1[0];
7552 : 3 : (*res_op).ops[1] = _o1[1];
7553 : 3 : (*res_op).resimplify (lseq, valueize);
7554 : : }
7555 : 3 : if (type != res_op->type
7556 : 3 : && !useless_type_conversion_p (type, res_op->type))
7557 : : {
7558 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1623;
7559 : 0 : res_op->set_op (NOP_EXPR, type, 1);
7560 : 0 : res_op->resimplify (lseq, valueize);
7561 : : }
7562 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 863, __FILE__, __LINE__, true);
7563 : 3 : return true;
7564 : : }
7565 : : next_after_fail1623:;
7566 : : }
7567 : : }
7568 : : return false;
7569 : : }
7570 : :
7571 : : bool
7572 : 16 : gimple_simplify_625 (gimple_match_op *res_op, gimple_seq *seq,
7573 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7574 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
7575 : : {
7576 : 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7577 : 16 : gimple_seq *lseq = seq;
7578 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1649;
7579 : 16 : {
7580 : 16 : tree tem;
7581 : 16 : tem = captures[1];
7582 : 16 : res_op->set_value (tem);
7583 : 16 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
7584 : : return true;
7585 : : }
7586 : 0 : next_after_fail1649:;
7587 : 0 : return false;
7588 : : }
7589 : :
7590 : : bool
7591 : 8004 : gimple_simplify_628 (gimple_match_op *res_op, gimple_seq *seq,
7592 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7593 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7594 : : const combined_fn ARG_UNUSED (minmax))
7595 : : {
7596 : 8004 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7597 : 8004 : if (real_isnan (TREE_REAL_CST_PTR (captures[1]))
7598 : 676 : && (!HONOR_SNANS (captures[1]) || !TREE_REAL_CST (captures[1]).signalling)
7599 : 8614 : && !tree_expr_maybe_signaling_nan_p (captures[0])
7600 : : )
7601 : : {
7602 : 588 : gimple_seq *lseq = seq;
7603 : 588 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1652;
7604 : 588 : {
7605 : 588 : tree tem;
7606 : 588 : tem = captures[0];
7607 : 588 : res_op->set_value (tem);
7608 : 588 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
7609 : 588 : return true;
7610 : : }
7611 : 0 : next_after_fail1652:;
7612 : : }
7613 : : return false;
7614 : : }
7615 : :
7616 : : bool
7617 : 4 : gimple_simplify_636 (gimple_match_op *res_op, gimple_seq *seq,
7618 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7619 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7620 : : const combined_fn ARG_UNUSED (bswap))
7621 : : {
7622 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7623 : 4 : gimple_seq *lseq = seq;
7624 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1663;
7625 : 4 : {
7626 : 4 : res_op->set_op (BIT_NOT_EXPR, type, 1);
7627 : 4 : res_op->ops[0] = captures[0];
7628 : 4 : res_op->resimplify (lseq, valueize);
7629 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
7630 : : return true;
7631 : : }
7632 : 0 : next_after_fail1663:;
7633 : 0 : return false;
7634 : : }
7635 : :
7636 : : bool
7637 : 6 : gimple_simplify_643 (gimple_match_op *res_op, gimple_seq *seq,
7638 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7639 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7640 : : const enum tree_code ARG_UNUSED (op))
7641 : : {
7642 : 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7643 : 6 : gimple_seq *lseq = seq;
7644 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1670;
7645 : 6 : {
7646 : 6 : tree tem;
7647 : 6 : tem = captures[2];
7648 : 6 : res_op->set_value (tem);
7649 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 631, __FILE__, __LINE__, true);
7650 : : return true;
7651 : : }
7652 : 0 : next_after_fail1670:;
7653 : 0 : return false;
7654 : : }
7655 : :
7656 : : bool
7657 : 411 : gimple_simplify_649 (gimple_match_op *res_op, gimple_seq *seq,
7658 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7659 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7660 : : const combined_fn ARG_UNUSED (cond_op))
7661 : : {
7662 : 411 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7663 : 411 : {
7664 : 411 : tree op_type = TREE_TYPE (captures[5]);
7665 : 411 : if (inverse_conditions_p (captures[0], captures[2])
7666 : 411 : && element_precision (type) == element_precision (op_type)
7667 : : )
7668 : : {
7669 : 0 : gimple_seq *lseq = seq;
7670 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1676;
7671 : 0 : {
7672 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
7673 : 0 : {
7674 : 0 : tree _o1[4], _r1;
7675 : 0 : _o1[0] = captures[2];
7676 : 0 : _o1[1] = captures[3];
7677 : 0 : _o1[2] = captures[4];
7678 : 0 : {
7679 : 0 : tree _o2[1], _r2;
7680 : 0 : _o2[0] = captures[1];
7681 : 0 : if (op_type != TREE_TYPE (_o2[0]) /* XXX */
7682 : 0 : && !useless_type_conversion_p (op_type, TREE_TYPE (_o2[0])))
7683 : : {
7684 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, _o2[0]);
7685 : 0 : tem_op.resimplify (lseq, valueize);
7686 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
7687 : 0 : if (!_r2) goto next_after_fail1676;
7688 : : }
7689 : : else
7690 : : _r2 = _o2[0];
7691 : 0 : _o1[3] = _r2;
7692 : : }
7693 : 0 : (*res_op).set_op (cond_op, TREE_TYPE (_o1[1]), 4);
7694 : 0 : (*res_op).ops[0] = _o1[0];
7695 : 0 : (*res_op).ops[1] = _o1[1];
7696 : 0 : (*res_op).ops[2] = _o1[2];
7697 : 0 : (*res_op).ops[3] = _o1[3];
7698 : 0 : (*res_op).resimplify (lseq, valueize);
7699 : : }
7700 : 0 : if (type != res_op->type
7701 : 0 : && !useless_type_conversion_p (type, res_op->type))
7702 : : {
7703 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1676;
7704 : 0 : res_op->set_op (VIEW_CONVERT_EXPR, type, 1);
7705 : 0 : res_op->resimplify (lseq, valueize);
7706 : : }
7707 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
7708 : 0 : return true;
7709 : : }
7710 : : next_after_fail1676:;
7711 : : }
7712 : : }
7713 : : return false;
7714 : : }
7715 : :
7716 : : bool
7717 : 0 : gimple_simplify_656 (gimple_match_op *res_op, gimple_seq *seq,
7718 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7719 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7720 : : const combined_fn ARG_UNUSED (cond_op))
7721 : : {
7722 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7723 : 0 : gimple_seq *lseq = seq;
7724 : 0 : if (lseq
7725 : 0 : && (!single_use (captures[1])))
7726 : 0 : lseq = NULL;
7727 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1683;
7728 : 0 : {
7729 : 0 : res_op->set_op (cond_op, type, 4);
7730 : 0 : {
7731 : 0 : tree _o1[2], _r1;
7732 : 0 : _o1[0] = captures[2];
7733 : 0 : _o1[1] = captures[0];
7734 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
7735 : 0 : tem_op.resimplify (lseq, valueize);
7736 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7737 : 0 : if (!_r1) goto next_after_fail1683;
7738 : 0 : res_op->ops[0] = _r1;
7739 : : }
7740 : 0 : res_op->ops[1] = captures[3];
7741 : 0 : res_op->ops[2] = captures[4];
7742 : 0 : res_op->ops[3] = captures[5];
7743 : 0 : res_op->resimplify (lseq, valueize);
7744 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
7745 : : return true;
7746 : : }
7747 : : next_after_fail1683:;
7748 : : return false;
7749 : : }
7750 : :
7751 : : bool
7752 : 9 : gimple_simplify_663 (gimple_match_op *res_op, gimple_seq *seq,
7753 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7754 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7755 : : const combined_fn ARG_UNUSED (logs))
7756 : : {
7757 : 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7758 : 9 : if (flag_unsafe_math_optimizations
7759 : : )
7760 : : {
7761 : 9 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
7762 : 9 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
7763 : 9 : && ! flag_trapping_math
7764 : 18 : && ! flag_errno_math
7765 : : )
7766 : : {
7767 : 9 : gimple_seq *lseq = seq;
7768 : 9 : if (lseq
7769 : 0 : && (!single_use (captures[0])))
7770 : 9 : lseq = NULL;
7771 : 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1690;
7772 : 9 : {
7773 : 9 : res_op->set_op (NEGATE_EXPR, type, 1);
7774 : 9 : {
7775 : 9 : tree _o1[1], _r1;
7776 : 9 : _o1[0] = captures[2];
7777 : 9 : gimple_match_op tem_op (res_op->cond.any_else (), logs, TREE_TYPE (_o1[0]), _o1[0]);
7778 : 9 : tem_op.resimplify (lseq, valueize);
7779 : 9 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7780 : 9 : if (!_r1) goto next_after_fail1690;
7781 : 0 : res_op->ops[0] = _r1;
7782 : : }
7783 : 0 : res_op->resimplify (lseq, valueize);
7784 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
7785 : 0 : return true;
7786 : : }
7787 : : next_after_fail1690:;
7788 : : }
7789 : : }
7790 : : return false;
7791 : : }
7792 : :
7793 : : bool
7794 : 95 : gimple_simplify_673 (gimple_match_op *res_op, gimple_seq *seq,
7795 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7796 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7797 : : const combined_fn ARG_UNUSED (floors),
7798 : : const combined_fn ARG_UNUSED (truncs))
7799 : : {
7800 : 95 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7801 : 95 : if (canonicalize_math_p ()
7802 : : )
7803 : : {
7804 : 95 : gimple_seq *lseq = seq;
7805 : 95 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1700;
7806 : 95 : {
7807 : 95 : res_op->set_op (truncs, type, 1);
7808 : 95 : res_op->ops[0] = captures[0];
7809 : 95 : res_op->resimplify (lseq, valueize);
7810 : 95 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
7811 : 95 : return true;
7812 : : }
7813 : 0 : next_after_fail1700:;
7814 : : }
7815 : : return false;
7816 : : }
7817 : :
7818 : : bool
7819 : 490 : gimple_simplify_679 (gimple_match_op *res_op, gimple_seq *seq,
7820 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7821 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7822 : : const combined_fn ARG_UNUSED (fns))
7823 : : {
7824 : 490 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7825 : 490 : if (canonicalize_math_p ()
7826 : : )
7827 : : {
7828 : 490 : gimple_seq *lseq = seq;
7829 : 490 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1706;
7830 : 490 : {
7831 : 490 : res_op->set_op (FIX_TRUNC_EXPR, type, 1);
7832 : 490 : res_op->ops[0] = captures[0];
7833 : 490 : res_op->resimplify (lseq, valueize);
7834 : 490 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 929, __FILE__, __LINE__, true);
7835 : 490 : return true;
7836 : : }
7837 : 0 : next_after_fail1706:;
7838 : : }
7839 : : return false;
7840 : : }
7841 : :
7842 : : bool
7843 : 332 : gimple_simplify_686 (gimple_match_op *res_op, gimple_seq *seq,
7844 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7845 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7846 : : const combined_fn ARG_UNUSED (fmas))
7847 : : {
7848 : 332 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7849 : 332 : if (canonicalize_math_after_vectorization_p ()
7850 : : )
7851 : : {
7852 : 0 : gimple_seq *lseq = seq;
7853 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1713;
7854 : 0 : {
7855 : 0 : res_op->set_op (CFN_FNMS, type, 3);
7856 : 0 : res_op->ops[0] = captures[0];
7857 : 0 : res_op->ops[1] = captures[1];
7858 : 0 : res_op->ops[2] = captures[2];
7859 : 0 : res_op->resimplify (lseq, valueize);
7860 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7861 : 0 : return true;
7862 : : }
7863 : 0 : next_after_fail1713:;
7864 : : }
7865 : : return false;
7866 : : }
7867 : :
7868 : : bool
7869 : 0 : gimple_simplify_693 (gimple_match_op *res_op, gimple_seq *seq,
7870 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7871 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures))
7872 : : {
7873 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7874 : 0 : if (canonicalize_math_after_vectorization_p ()
7875 : : )
7876 : : {
7877 : 0 : gimple_seq *lseq = seq;
7878 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1720;
7879 : 0 : {
7880 : 0 : res_op->set_op (CFN_FMA, type, 3);
7881 : 0 : res_op->ops[0] = captures[0];
7882 : 0 : res_op->ops[1] = captures[1];
7883 : 0 : res_op->ops[2] = captures[2];
7884 : 0 : res_op->resimplify (lseq, valueize);
7885 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 943, __FILE__, __LINE__, true);
7886 : 0 : return true;
7887 : : }
7888 : 0 : next_after_fail1720:;
7889 : : }
7890 : : return false;
7891 : : }
7892 : :
7893 : : bool
7894 : 8 : gimple_simplify_702 (gimple_match_op *res_op, gimple_seq *seq,
7895 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7896 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7897 : : const combined_fn ARG_UNUSED (bswap),
7898 : : const combined_fn ARG_UNUSED (popcount))
7899 : : {
7900 : 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7901 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7902 : 16 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
7903 : : )
7904 : : {
7905 : 8 : {
7906 : 8 : tree type0 = TREE_TYPE (captures[0]);
7907 : 8 : tree type1 = TREE_TYPE (captures[1]);
7908 : 8 : unsigned int prec0 = TYPE_PRECISION (type0);
7909 : 8 : unsigned int prec1 = TYPE_PRECISION (type1);
7910 : 8 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
7911 : : )
7912 : : {
7913 : 8 : gimple_seq *lseq = seq;
7914 : 8 : if (lseq
7915 : 4 : && (!single_use (captures[0])
7916 : 4 : || !single_use (captures[1])))
7917 : 4 : lseq = NULL;
7918 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1733;
7919 : 8 : {
7920 : 8 : res_op->set_op (popcount, type, 1);
7921 : 8 : {
7922 : 8 : tree _r1;
7923 : 8 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
7924 : 8 : {
7925 : 8 : tree _o2[1], _r2;
7926 : 8 : _o2[0] = captures[2];
7927 : 8 : tem_op.set_op (NOP_EXPR, type1, 1);
7928 : 8 : tem_op.ops[0] = _o2[0];
7929 : 8 : tem_op.resimplify (lseq, valueize);
7930 : : }
7931 : 8 : if (type0 != tem_op.type
7932 : 8 : && !useless_type_conversion_p (type0, tem_op.type))
7933 : : {
7934 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7935 : 0 : if (!_r1) goto next_after_fail1733;
7936 : 0 : tem_op.set_op (NOP_EXPR, type0, 1);
7937 : 0 : tem_op.ops[0] = _r1;
7938 : 0 : tem_op.resimplify (lseq, valueize);
7939 : : }
7940 : 8 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7941 : 8 : if (!_r1) goto next_after_fail1733;
7942 : 8 : res_op->ops[0] = _r1;
7943 : : }
7944 : 8 : res_op->resimplify (lseq, valueize);
7945 : 8 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
7946 : 8 : return true;
7947 : : }
7948 : : next_after_fail1733:;
7949 : : }
7950 : : }
7951 : : }
7952 : : return false;
7953 : : }
7954 : :
7955 : : bool
7956 : 6 : gimple_simplify_710 (gimple_match_op *res_op, gimple_seq *seq,
7957 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
7958 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
7959 : : const enum tree_code ARG_UNUSED (rot),
7960 : : const combined_fn ARG_UNUSED (parity))
7961 : : {
7962 : 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7963 : 12 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7964 : 6 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
7965 : : && (
7966 : : 1
7967 : : || !TREE_SIDE_EFFECTS (captures[3]))
7968 : 12 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
7969 : 6 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
7970 : : )
7971 : : {
7972 : 6 : {
7973 : 6 : tree type0 = TREE_TYPE (captures[0]);
7974 : 6 : gimple_seq *lseq = seq;
7975 : 6 : if (lseq
7976 : 3 : && (!single_use (captures[0])
7977 : 3 : || !single_use (captures[1])))
7978 : 3 : lseq = NULL;
7979 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1744;
7980 : 6 : {
7981 : 6 : res_op->set_op (parity, type, 1);
7982 : 6 : {
7983 : 6 : tree _o1[1], _r1;
7984 : 6 : _o1[0] = captures[2];
7985 : 6 : if (type0 != TREE_TYPE (_o1[0]) /* XXX */
7986 : 6 : && !useless_type_conversion_p (type0, TREE_TYPE (_o1[0])))
7987 : : {
7988 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type0, _o1[0]);
7989 : 0 : tem_op.resimplify (lseq, valueize);
7990 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
7991 : 0 : if (!_r1) goto next_after_fail1744;
7992 : : }
7993 : : else
7994 : : _r1 = _o1[0];
7995 : 6 : res_op->ops[0] = _r1;
7996 : : }
7997 : 6 : res_op->resimplify (lseq, valueize);
7998 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
7999 : 6 : return true;
8000 : : }
8001 : : next_after_fail1744:;
8002 : : }
8003 : : }
8004 : : return false;
8005 : : }
8006 : :
8007 : : bool
8008 : 52 : gimple_simplify_716 (gimple_match_op *res_op, gimple_seq *seq,
8009 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8010 : : const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures),
8011 : : const combined_fn ARG_UNUSED (reduc))
8012 : : {
8013 : 52 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8014 : 52 : {
8015 : 52 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
8016 : 52 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
8017 : 52 : tree elt = ctor_single_nonzero_element (ctor);
8018 : 52 : if (elt
8019 : 3 : && types_match (type, TREE_TYPE (elt))
8020 : 3 : && !HONOR_SNANS (type)
8021 : 55 : && !HONOR_SIGNED_ZEROS (type)
8022 : : )
8023 : : {
8024 : 3 : gimple_seq *lseq = seq;
8025 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1752;
8026 : 3 : {
8027 : 3 : tree tem;
8028 : 3 : tem = elt;
8029 : 3 : res_op->set_value (tem);
8030 : 3 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
8031 : 3 : return true;
8032 : : }
8033 : 0 : next_after_fail1752:;
8034 : : }
8035 : : }
8036 : : return false;
8037 : : }
8038 : :
8039 : : bool
8040 : 74695180 : gimple_simplify_CONVERT_EXPR (gimple_match_op *res_op, gimple_seq *seq,
8041 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
8042 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0)
8043 : : {
8044 : 74695180 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8045 : 74695180 : switch (TREE_CODE (_p0))
8046 : : {
8047 : 71494809 : case SSA_NAME:
8048 : 71494809 : if (gimple *_d1 = get_def (valueize, _p0))
8049 : : {
8050 : 34617855 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
8051 : 33353266 : switch (gimple_assign_rhs_code (_a1))
8052 : : {
8053 : 62960 : case NEGATE_EXPR:
8054 : 62960 : {
8055 : 62960 : tree _q20 = gimple_assign_rhs1 (_a1);
8056 : 62960 : _q20 = do_valueize (valueize, _q20);
8057 : 62960 : switch (TREE_CODE (_q20))
8058 : : {
8059 : 62960 : case SSA_NAME:
8060 : 62960 : if (gimple *_d2 = get_def (valueize, _q20))
8061 : : {
8062 : 59408 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8063 : 51365 : switch (gimple_assign_rhs_code (_a2))
8064 : : {
8065 : 32349 : CASE_CONVERT:
8066 : 32349 : {
8067 : 32349 : tree _q30 = gimple_assign_rhs1 (_a2);
8068 : 32349 : _q30 = do_valueize (valueize, _q30);
8069 : 32349 : {
8070 : 32349 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
8071 : 32349 : if (INTEGRAL_TYPE_P (type)
8072 : 30986 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
8073 : 27724 : && (TYPE_PRECISION (type) > TYPE_PRECISION (TREE_TYPE (captures[2]))
8074 : 11504 : || TYPE_UNSIGNED (type))
8075 : 49874 : && TREE_CODE (type) != BOOLEAN_TYPE
8076 : : )
8077 : : {
8078 : 1936 : gimple_seq *lseq = seq;
8079 : 1936 : if (lseq
8080 : 827 : && (!single_use (captures[0])
8081 : 636 : || !single_use (captures[1])))
8082 : 1647 : lseq = NULL;
8083 : 1936 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1761;
8084 : 1936 : {
8085 : 1936 : res_op->set_op (NEGATE_EXPR, type, 1);
8086 : 1936 : {
8087 : 1936 : tree _o1[1], _r1;
8088 : 1936 : _o1[0] = captures[2];
8089 : 1936 : if (type != TREE_TYPE (_o1[0]) /* XXX */
8090 : 1936 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
8091 : : {
8092 : 876 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
8093 : 876 : tem_op.resimplify (lseq, valueize);
8094 : 876 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8095 : 876 : if (!_r1) goto next_after_fail1761;
8096 : : }
8097 : : else
8098 : : _r1 = _o1[0];
8099 : 1369 : res_op->ops[0] = _r1;
8100 : : }
8101 : 1369 : res_op->resimplify (lseq, valueize);
8102 : 1369 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
8103 : 1369 : return true;
8104 : : }
8105 : 30980 : next_after_fail1761:;
8106 : : }
8107 : : }
8108 : 30980 : break;
8109 : : }
8110 : : default:;
8111 : : }
8112 : : }
8113 : : break;
8114 : : default:;
8115 : : }
8116 : : break;
8117 : : }
8118 : 599885 : case BIT_AND_EXPR:
8119 : 599885 : {
8120 : 599885 : tree _q20 = gimple_assign_rhs1 (_a1);
8121 : 599885 : _q20 = do_valueize (valueize, _q20);
8122 : 599885 : tree _q21 = gimple_assign_rhs2 (_a1);
8123 : 599885 : _q21 = do_valueize (valueize, _q21);
8124 : 599885 : if (tree_swap_operands_p (_q20, _q21))
8125 : 2562 : std::swap (_q20, _q21);
8126 : 599885 : {
8127 : 599885 : tree _q20_pops[1];
8128 : 599885 : if (gimple_nop_convert (_q20, _q20_pops, valueize))
8129 : : {
8130 : 8344 : tree _q30 = _q20_pops[0];
8131 : 8344 : {
8132 : 8344 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
8133 : 8344 : if (gimple_simplify_511 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
8134 : 167 : return true;
8135 : : }
8136 : : }
8137 : : }
8138 : 599718 : {
8139 : 599718 : tree _q21_pops[1];
8140 : 599718 : if (gimple_nop_convert (_q21, _q21_pops, valueize))
8141 : : {
8142 : 1328 : tree _q40 = _q21_pops[0];
8143 : 1328 : {
8144 : 1328 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
8145 : 1328 : if (gimple_simplify_511 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
8146 : 263 : return true;
8147 : : }
8148 : : }
8149 : : }
8150 : 599455 : break;
8151 : : }
8152 : 139725 : case BIT_IOR_EXPR:
8153 : 139725 : {
8154 : 139725 : tree _q20 = gimple_assign_rhs1 (_a1);
8155 : 139725 : _q20 = do_valueize (valueize, _q20);
8156 : 139725 : tree _q21 = gimple_assign_rhs2 (_a1);
8157 : 139725 : _q21 = do_valueize (valueize, _q21);
8158 : 139725 : if (tree_swap_operands_p (_q20, _q21))
8159 : 4033 : std::swap (_q20, _q21);
8160 : 139725 : {
8161 : 139725 : tree _q20_pops[1];
8162 : 139725 : if (gimple_nop_convert (_q20, _q20_pops, valueize))
8163 : : {
8164 : 3798 : tree _q30 = _q20_pops[0];
8165 : 3798 : {
8166 : 3798 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
8167 : 3798 : if (gimple_simplify_511 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR))
8168 : 1026 : return true;
8169 : : }
8170 : : }
8171 : : }
8172 : 138699 : {
8173 : 138699 : tree _q21_pops[1];
8174 : 138699 : if (gimple_nop_convert (_q21, _q21_pops, valueize))
8175 : : {
8176 : 2937 : tree _q40 = _q21_pops[0];
8177 : 2937 : {
8178 : 2937 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
8179 : 2937 : if (gimple_simplify_511 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR))
8180 : 832 : return true;
8181 : : }
8182 : : }
8183 : : }
8184 : 137867 : break;
8185 : : }
8186 : 55626 : case BIT_XOR_EXPR:
8187 : 55626 : {
8188 : 55626 : tree _q20 = gimple_assign_rhs1 (_a1);
8189 : 55626 : _q20 = do_valueize (valueize, _q20);
8190 : 55626 : tree _q21 = gimple_assign_rhs2 (_a1);
8191 : 55626 : _q21 = do_valueize (valueize, _q21);
8192 : 55626 : if (tree_swap_operands_p (_q20, _q21))
8193 : 1745 : std::swap (_q20, _q21);
8194 : 55626 : {
8195 : 55626 : tree _q20_pops[1];
8196 : 55626 : if (gimple_nop_convert (_q20, _q20_pops, valueize))
8197 : : {
8198 : 1664 : tree _q30 = _q20_pops[0];
8199 : 1664 : {
8200 : 1664 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
8201 : 1664 : if (gimple_simplify_511 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
8202 : 428 : return true;
8203 : : }
8204 : : }
8205 : : }
8206 : 55198 : {
8207 : 55198 : tree _q21_pops[1];
8208 : 55198 : if (gimple_nop_convert (_q21, _q21_pops, valueize))
8209 : : {
8210 : 1015 : tree _q40 = _q21_pops[0];
8211 : 1015 : {
8212 : 1015 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
8213 : 1015 : if (gimple_simplify_511 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
8214 : 143 : return true;
8215 : : }
8216 : : }
8217 : : }
8218 : 55055 : break;
8219 : : }
8220 : 1947115 : case MULT_EXPR:
8221 : 1947115 : {
8222 : 1947115 : tree _q20 = gimple_assign_rhs1 (_a1);
8223 : 1947115 : _q20 = do_valueize (valueize, _q20);
8224 : 1947115 : tree _q21 = gimple_assign_rhs2 (_a1);
8225 : 1947115 : _q21 = do_valueize (valueize, _q21);
8226 : 1947115 : if (tree_swap_operands_p (_q20, _q21))
8227 : 66381 : std::swap (_q20, _q21);
8228 : 1947115 : if (gimple_zero_one_valued_p (_q20, valueize))
8229 : : {
8230 : 7735 : switch (TREE_CODE (_q21))
8231 : : {
8232 : 5464 : case INTEGER_CST:
8233 : 5464 : {
8234 : 5464 : {
8235 : 5464 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8236 : 5464 : if (INTEGRAL_TYPE_P (type)
8237 : 5455 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8238 : 5455 : && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (captures[0]))
8239 : 5647 : && (TYPE_UNSIGNED (type) || TYPE_PRECISION (type) > 1)
8240 : : )
8241 : : {
8242 : 3 : gimple_seq *lseq = seq;
8243 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1762;
8244 : 3 : {
8245 : 3 : res_op->set_op (MULT_EXPR, type, 2);
8246 : 3 : {
8247 : 3 : tree _o1[1], _r1;
8248 : 3 : _o1[0] = captures[1];
8249 : 3 : if (type != TREE_TYPE (_o1[0]) /* XXX */
8250 : 3 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
8251 : : {
8252 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
8253 : 3 : tem_op.resimplify (lseq, valueize);
8254 : 3 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8255 : 3 : if (!_r1) goto next_after_fail1762;
8256 : : }
8257 : : else
8258 : : _r1 = _o1[0];
8259 : 2 : res_op->ops[0] = _r1;
8260 : : }
8261 : 2 : {
8262 : 2 : tree _o1[1], _r1;
8263 : 2 : _o1[0] = captures[2];
8264 : 2 : if (type != TREE_TYPE (_o1[0]) /* XXX */
8265 : 2 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
8266 : : {
8267 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
8268 : 2 : tem_op.resimplify (lseq, valueize);
8269 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8270 : 2 : if (!_r1) goto next_after_fail1762;
8271 : : }
8272 : : else
8273 : : _r1 = _o1[0];
8274 : 2 : res_op->ops[1] = _r1;
8275 : : }
8276 : 2 : res_op->resimplify (lseq, valueize);
8277 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
8278 : 2 : return true;
8279 : : }
8280 : 5462 : next_after_fail1762:;
8281 : : }
8282 : : }
8283 : 5462 : break;
8284 : : }
8285 : : default:;
8286 : : }
8287 : : }
8288 : 74676969 : break;
8289 : : }
8290 : 942420 : case POINTER_DIFF_EXPR:
8291 : 942420 : {
8292 : 942420 : tree _q20 = gimple_assign_rhs1 (_a1);
8293 : 942420 : _q20 = do_valueize (valueize, _q20);
8294 : 942420 : tree _q21 = gimple_assign_rhs2 (_a1);
8295 : 942420 : _q21 = do_valueize (valueize, _q21);
8296 : 942420 : switch (TREE_CODE (_q21))
8297 : : {
8298 : 0 : case INTEGER_CST:
8299 : 0 : {
8300 : 0 : {
8301 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8302 : 0 : if (POINTER_TYPE_P (type)
8303 : : )
8304 : : {
8305 : 0 : gimple_seq *lseq = seq;
8306 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1763;
8307 : 0 : {
8308 : 0 : tree tem;
8309 : 0 : tem = build_fold_addr_expr_with_type
8310 : : (build2 (MEM_REF, char_type_node, captures[0],
8311 : : wide_int_to_tree (ptr_type_node, wi::neg (wi::to_wide (captures[1])))),
8312 : : type);
8313 : 0 : res_op->set_value (tem);
8314 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
8315 : 0 : return true;
8316 : : }
8317 : 0 : next_after_fail1763:;
8318 : : }
8319 : : }
8320 : 0 : break;
8321 : : }
8322 : : default:;
8323 : : }
8324 : : break;
8325 : : }
8326 : 460149 : case EQ_EXPR:
8327 : 460149 : {
8328 : 460149 : tree _q20 = gimple_assign_rhs1 (_a1);
8329 : 460149 : _q20 = do_valueize (valueize, _q20);
8330 : 460149 : tree _q21 = gimple_assign_rhs2 (_a1);
8331 : 460149 : _q21 = do_valueize (valueize, _q21);
8332 : 460149 : if (tree_swap_operands_p (_q20, _q21))
8333 : 4512 : std::swap (_q20, _q21);
8334 : 460149 : if (gimple_zero_one_valued_p (_q20, valueize))
8335 : : {
8336 : 10550 : switch (TREE_CODE (_q21))
8337 : : {
8338 : 7393 : case INTEGER_CST:
8339 : 7393 : {
8340 : 7393 : {
8341 : 7393 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8342 : 7393 : if (gimple_simplify_512 (res_op, seq, valueize, type, captures, EQ_EXPR))
8343 : 1886 : return true;
8344 : : }
8345 : 5507 : break;
8346 : : }
8347 : : default:;
8348 : : }
8349 : : }
8350 : 74676969 : break;
8351 : : }
8352 : 519235 : case NE_EXPR:
8353 : 519235 : {
8354 : 519235 : tree _q20 = gimple_assign_rhs1 (_a1);
8355 : 519235 : _q20 = do_valueize (valueize, _q20);
8356 : 519235 : tree _q21 = gimple_assign_rhs2 (_a1);
8357 : 519235 : _q21 = do_valueize (valueize, _q21);
8358 : 519235 : if (tree_swap_operands_p (_q20, _q21))
8359 : 4082 : std::swap (_q20, _q21);
8360 : 519235 : if (gimple_zero_one_valued_p (_q20, valueize))
8361 : : {
8362 : 9065 : switch (TREE_CODE (_q21))
8363 : : {
8364 : 7868 : case INTEGER_CST:
8365 : 7868 : {
8366 : 7868 : {
8367 : 7868 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8368 : 7868 : if (gimple_simplify_512 (res_op, seq, valueize, type, captures, NE_EXPR))
8369 : 7864 : return true;
8370 : : }
8371 : 4 : break;
8372 : : }
8373 : : default:;
8374 : : }
8375 : : }
8376 : 74676969 : break;
8377 : : }
8378 : 113853 : case MIN_EXPR:
8379 : 113853 : {
8380 : 113853 : tree _q20 = gimple_assign_rhs1 (_a1);
8381 : 113853 : _q20 = do_valueize (valueize, _q20);
8382 : 113853 : tree _q21 = gimple_assign_rhs2 (_a1);
8383 : 113853 : _q21 = do_valueize (valueize, _q21);
8384 : 113853 : if (tree_swap_operands_p (_q20, _q21))
8385 : 11321 : std::swap (_q20, _q21);
8386 : 113853 : switch (TREE_CODE (_q20))
8387 : : {
8388 : 113853 : case SSA_NAME:
8389 : 113853 : if (gimple *_d2 = get_def (valueize, _q20))
8390 : : {
8391 : 108924 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8392 : 120233 : switch (gimple_assign_rhs_code (_a2))
8393 : : {
8394 : 8416 : CASE_CONVERT:
8395 : 8416 : {
8396 : 8416 : tree _q30 = gimple_assign_rhs1 (_a2);
8397 : 8416 : _q30 = do_valueize (valueize, _q30);
8398 : 8416 : switch (TREE_CODE (_q21))
8399 : : {
8400 : 5054 : case INTEGER_CST:
8401 : 5054 : {
8402 : 5054 : {
8403 : 5054 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
8404 : 5054 : if (gimple_simplify_513 (res_op, seq, valueize, type, captures, MIN_EXPR))
8405 : 5 : return true;
8406 : : }
8407 : 5049 : break;
8408 : : }
8409 : : default:;
8410 : : }
8411 : : break;
8412 : : }
8413 : : default:;
8414 : : }
8415 : : }
8416 : : break;
8417 : : default:;
8418 : : }
8419 : 74676969 : break;
8420 : : }
8421 : 259210 : case MAX_EXPR:
8422 : 259210 : {
8423 : 259210 : tree _q20 = gimple_assign_rhs1 (_a1);
8424 : 259210 : _q20 = do_valueize (valueize, _q20);
8425 : 259210 : tree _q21 = gimple_assign_rhs2 (_a1);
8426 : 259210 : _q21 = do_valueize (valueize, _q21);
8427 : 259210 : if (tree_swap_operands_p (_q20, _q21))
8428 : 273 : std::swap (_q20, _q21);
8429 : 259210 : switch (TREE_CODE (_q20))
8430 : : {
8431 : 259210 : case SSA_NAME:
8432 : 259210 : if (gimple *_d2 = get_def (valueize, _q20))
8433 : : {
8434 : 252848 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
8435 : 264746 : switch (gimple_assign_rhs_code (_a2))
8436 : : {
8437 : 66488 : CASE_CONVERT:
8438 : 66488 : {
8439 : 66488 : tree _q30 = gimple_assign_rhs1 (_a2);
8440 : 66488 : _q30 = do_valueize (valueize, _q30);
8441 : 66488 : switch (TREE_CODE (_q21))
8442 : : {
8443 : 65836 : case INTEGER_CST:
8444 : 65836 : {
8445 : 65836 : {
8446 : 65836 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
8447 : 65836 : if (gimple_simplify_513 (res_op, seq, valueize, type, captures, MAX_EXPR))
8448 : 1787 : return true;
8449 : : }
8450 : 64049 : break;
8451 : : }
8452 : : default:;
8453 : : }
8454 : : break;
8455 : : }
8456 : : default:;
8457 : : }
8458 : : }
8459 : : break;
8460 : : default:;
8461 : : }
8462 : 74676969 : break;
8463 : : }
8464 : 167246 : case LSHIFT_EXPR:
8465 : 167246 : {
8466 : 167246 : tree _q20 = gimple_assign_rhs1 (_a1);
8467 : 167246 : _q20 = do_valueize (valueize, _q20);
8468 : 167246 : tree _q21 = gimple_assign_rhs2 (_a1);
8469 : 167246 : _q21 = do_valueize (valueize, _q21);
8470 : 167246 : switch (TREE_CODE (_q21))
8471 : : {
8472 : 31927 : case INTEGER_CST:
8473 : 31927 : {
8474 : 31927 : {
8475 : 31927 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8476 : 31927 : if (INTEGRAL_TYPE_P (type)
8477 : 31187 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8478 : 31187 : && !integer_zerop (captures[2])
8479 : 63098 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
8480 : : )
8481 : : {
8482 : 24185 : if (TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
8483 : 24185 : || wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (type))
8484 : : )
8485 : : {
8486 : 23971 : gimple_seq *lseq = seq;
8487 : 23971 : if (lseq
8488 : 2724 : && (!single_use (captures[0])))
8489 : 22684 : lseq = NULL;
8490 : 23971 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1764;
8491 : 23971 : {
8492 : 23971 : res_op->set_op (LSHIFT_EXPR, type, 2);
8493 : 23971 : {
8494 : 23971 : tree _o1[1], _r1;
8495 : 23971 : _o1[0] = captures[1];
8496 : 23971 : if (type != TREE_TYPE (_o1[0]) /* XXX */
8497 : 23971 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
8498 : : {
8499 : 23947 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
8500 : 23947 : tem_op.resimplify (lseq, valueize);
8501 : 23947 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
8502 : 23947 : if (!_r1) goto next_after_fail1764;
8503 : : }
8504 : : else
8505 : : _r1 = _o1[0];
8506 : 2419 : res_op->ops[0] = _r1;
8507 : : }
8508 : 2419 : res_op->ops[1] = captures[2];
8509 : 2419 : res_op->resimplify (lseq, valueize);
8510 : 2419 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
8511 : 2419 : return true;
8512 : : }
8513 : 29488 : next_after_fail1764:;
8514 : : }
8515 : : else
8516 : : {
8517 : 214 : if (wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])))
8518 : : )
8519 : : {
8520 : 20 : gimple_seq *lseq = seq;
8521 : 20 : if (lseq
8522 : : && (!single_use (captures[0])))
8523 : : lseq = NULL;
8524 : 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1765;
8525 : 20 : {
8526 : 20 : tree tem;
8527 : 20 : tem = build_zero_cst (type);
8528 : 20 : res_op->set_value (tem);
8529 : 20 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
8530 : 20 : return true;
8531 : : }
8532 : 0 : next_after_fail1765:;
8533 : : }
8534 : : }
8535 : : }
8536 : : }
8537 : 29488 : break;
8538 : : }
8539 : : default:;
8540 : : }
8541 : : break;
8542 : : }
8543 : : default:;
8544 : : }
8545 : : }
8546 : : break;
8547 : 74676969 : default:;
8548 : : }
8549 : 74676969 : {
8550 : 74676969 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8551 : 74676969 : if ((
8552 : : 1
8553 : 74676969 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
8554 : : || (
8555 : :
8556 : : && type == TREE_TYPE (captures[0]))
8557 : : )
8558 : : {
8559 : 407307 : gimple_seq *lseq = seq;
8560 : 407307 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1766;
8561 : 407307 : {
8562 : 407307 : tree tem;
8563 : 407307 : tem = captures[0];
8564 : 407307 : res_op->set_value (tem);
8565 : 407307 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
8566 : 407307 : return true;
8567 : : }
8568 : 0 : next_after_fail1766:;
8569 : : }
8570 : : }
8571 : 74269662 : switch (TREE_CODE (_p0))
8572 : : {
8573 : 71113194 : case SSA_NAME:
8574 : 71113194 : if (gimple *_d1 = get_def (valueize, _p0))
8575 : : {
8576 : 34247068 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
8577 : 32976516 : switch (gimple_assign_rhs_code (_a1))
8578 : : {
8579 : 1373813 : CASE_CONVERT:
8580 : 1373813 : {
8581 : 1373813 : tree _q20 = gimple_assign_rhs1 (_a1);
8582 : 1373813 : _q20 = do_valueize (valueize, _q20);
8583 : 1373813 : {
8584 : 1373813 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8585 : 1373813 : {
8586 : 1373813 : tree inside_type = TREE_TYPE (captures[1]);
8587 : 1373813 : tree inter_type = TREE_TYPE (captures[0]);
8588 : 1373813 : int inside_int = INTEGRAL_TYPE_P (inside_type);
8589 : 1373813 : int inside_ptr = POINTER_TYPE_P (inside_type);
8590 : 1373813 : int inside_float = FLOAT_TYPE_P (inside_type);
8591 : 1373813 : int inside_vec = VECTOR_TYPE_P (inside_type);
8592 : 1373813 : unsigned int inside_prec = element_precision (inside_type);
8593 : 1373813 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
8594 : 1373813 : int inter_int = INTEGRAL_TYPE_P (inter_type);
8595 : 1373813 : int inter_ptr = POINTER_TYPE_P (inter_type);
8596 : 1373813 : int inter_float = FLOAT_TYPE_P (inter_type);
8597 : 1373813 : int inter_vec = VECTOR_TYPE_P (inter_type);
8598 : 1373813 : unsigned int inter_prec = element_precision (inter_type);
8599 : 1373813 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
8600 : 1373813 : int final_int = INTEGRAL_TYPE_P (type);
8601 : 1373813 : int final_ptr = POINTER_TYPE_P (type);
8602 : 1373813 : int final_float = FLOAT_TYPE_P (type);
8603 : 1373813 : int final_vec = VECTOR_TYPE_P (type);
8604 : 1373813 : unsigned int final_prec = element_precision (type);
8605 : 1373813 : int final_unsignedp = TYPE_UNSIGNED (type);
8606 : 1373813 : if (((
8607 : : 1
8608 : 1373813 : && useless_type_conversion_p (type, inside_type))
8609 : : || (
8610 : :
8611 : : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
8612 : 443153 : && (((inter_int || inter_ptr) && final_int)
8613 : 162965 : || (inter_float && final_float))
8614 : 1742427 : && inter_prec >= final_prec
8615 : : )
8616 : : {
8617 : 158880 : gimple_seq *lseq = seq;
8618 : 158880 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1767;
8619 : 158880 : {
8620 : 158880 : res_op->set_op (NOP_EXPR, type, 1);
8621 : 158880 : res_op->ops[0] = captures[1];
8622 : 158880 : res_op->resimplify (lseq, valueize);
8623 : 158880 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
8624 : 158880 : return true;
8625 : : }
8626 : 0 : next_after_fail1767:;
8627 : : }
8628 : : else
8629 : : {
8630 : 1214933 : if (((inter_int && inside_int) || (inter_float && inside_float))
8631 : 964177 : && (final_int || final_float)
8632 : 847968 : && inter_prec >= inside_prec
8633 : 510847 : && (inter_float || inter_unsignedp == inside_unsignedp)
8634 : : )
8635 : : {
8636 : 38406 : gimple_seq *lseq = seq;
8637 : 38406 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1768;
8638 : 38406 : {
8639 : 38406 : res_op->set_op (NOP_EXPR, type, 1);
8640 : 38406 : res_op->ops[0] = captures[1];
8641 : 38406 : res_op->resimplify (lseq, valueize);
8642 : 38406 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
8643 : 38406 : return true;
8644 : : }
8645 : 0 : next_after_fail1768:;
8646 : 0 : }
8647 : : else
8648 : : {
8649 : 1176527 : if (inside_int && inter_int && final_int
8650 : 722033 : && ((inside_prec < inter_prec && inter_prec < final_prec
8651 : 16474 : && inside_unsignedp && !inter_unsignedp)
8652 : 719975 : || final_prec == inter_prec
8653 : 639371 : || (inside_prec < inter_prec && inter_prec > final_prec
8654 : 55209 : && !inside_unsignedp && inter_unsignedp))
8655 : : )
8656 : : {
8657 : 85710 : gimple_seq *lseq = seq;
8658 : 85710 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1769;
8659 : 85710 : {
8660 : 85710 : res_op->set_op (NOP_EXPR, type, 1);
8661 : 85710 : res_op->ops[0] = captures[1];
8662 : 85710 : res_op->resimplify (lseq, valueize);
8663 : 85710 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
8664 : 85710 : return true;
8665 : : }
8666 : 0 : next_after_fail1769:;
8667 : 0 : }
8668 : : else
8669 : : {
8670 : 1090817 : if (! inside_float && ! inter_float && ! final_float
8671 : : && ! inside_vec && ! inter_vec && ! final_vec
8672 : 1002994 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
8673 : 809154 : && ! (inside_int && inter_int
8674 : 558692 : && inter_unsignedp != inside_unsignedp
8675 : 558692 : && inter_prec < final_prec)
8676 : 428466 : && ((inter_unsignedp && inter_prec > inside_prec)
8677 : 428466 : == (final_unsignedp && final_prec > inter_prec))
8678 : 330384 : && ! (inside_ptr && inter_prec != final_prec)
8679 : 176170 : && ! (final_ptr && inside_prec != inter_prec)
8680 : : )
8681 : : {
8682 : 153729 : gimple_seq *lseq = seq;
8683 : 153729 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1770;
8684 : 153729 : {
8685 : 153729 : res_op->set_op (NOP_EXPR, type, 1);
8686 : 153729 : res_op->ops[0] = captures[1];
8687 : 153729 : res_op->resimplify (lseq, valueize);
8688 : 153729 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
8689 : 153729 : return true;
8690 : : }
8691 : 0 : next_after_fail1770:;
8692 : 0 : }
8693 : : else
8694 : : {
8695 : 937088 : if (inside_int && inter_int && final_int
8696 : 689347 : && final_prec <= inside_prec
8697 : 186586 : && inter_prec >= inside_prec
8698 : : )
8699 : : {
8700 : 0 : gimple_seq *lseq = seq;
8701 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1771;
8702 : 0 : {
8703 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8704 : 0 : res_op->ops[0] = captures[1];
8705 : 0 : res_op->resimplify (lseq, valueize);
8706 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
8707 : 0 : return true;
8708 : : }
8709 : 0 : next_after_fail1771:;
8710 : 0 : }
8711 : : else
8712 : : {
8713 : 937088 : if (1
8714 : 937088 : && final_int && inter_int && inside_int
8715 : 734165 : && final_prec >= inside_prec
8716 : 547604 : && inside_prec > inter_prec
8717 : 547604 : && inter_unsignedp
8718 : : )
8719 : : {
8720 : 41086 : gimple_seq *lseq = seq;
8721 : 41086 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1772;
8722 : 41086 : {
8723 : 41086 : res_op->set_op (NOP_EXPR, type, 1);
8724 : 41086 : {
8725 : 41086 : tree _o1[2], _r1;
8726 : 41086 : _o1[0] = captures[1];
8727 : 41086 : _o1[1] = wide_int_to_tree
8728 : 41086 : (inside_type,
8729 : 41086 : wi::mask (inter_prec, false,
8730 : 41086 : TYPE_PRECISION (inside_type)));
8731 : 41086 : (*res_op).set_op (BIT_AND_EXPR, TREE_TYPE (_o1[0]), 2);
8732 : 41086 : (*res_op).ops[0] = _o1[0];
8733 : 41086 : (*res_op).ops[1] = _o1[1];
8734 : 41086 : (*res_op).resimplify (lseq, valueize);
8735 : : }
8736 : 41086 : if (type != res_op->type
8737 : 41086 : && !useless_type_conversion_p (type, res_op->type))
8738 : : {
8739 : 9964 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1772;
8740 : 5777 : res_op->set_op (NOP_EXPR, type, 1);
8741 : 5777 : res_op->resimplify (lseq, valueize);
8742 : : }
8743 : 36899 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
8744 : 36899 : return true;
8745 : : }
8746 : 900189 : next_after_fail1772:;
8747 : : }
8748 : : else
8749 : : {
8750 : 896002 : if (1
8751 : 896002 : && inside_int && inter_float && final_int &&
8752 : 896002 : (unsigned) significand_size (TYPE_MODE (inter_type))
8753 : 0 : >= inside_prec - !inside_unsignedp
8754 : : )
8755 : : {
8756 : 0 : gimple_seq *lseq = seq;
8757 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1773;
8758 : 0 : {
8759 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8760 : 0 : res_op->ops[0] = captures[1];
8761 : 0 : res_op->resimplify (lseq, valueize);
8762 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
8763 : 0 : return true;
8764 : : }
8765 : 0 : next_after_fail1773:;
8766 : : }
8767 : : }
8768 : : }
8769 : : }
8770 : : }
8771 : : }
8772 : : }
8773 : : }
8774 : : }
8775 : 900189 : break;
8776 : : }
8777 : 14583 : case FLOAT_EXPR:
8778 : 14583 : {
8779 : 14583 : tree _q20 = gimple_assign_rhs1 (_a1);
8780 : 14583 : _q20 = do_valueize (valueize, _q20);
8781 : 14583 : {
8782 : 14583 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8783 : 14583 : {
8784 : 14583 : tree inside_type = TREE_TYPE (captures[1]);
8785 : 14583 : tree inter_type = TREE_TYPE (captures[0]);
8786 : 14583 : int inside_int = INTEGRAL_TYPE_P (inside_type);
8787 : 14583 : int inside_ptr = POINTER_TYPE_P (inside_type);
8788 : 14583 : int inside_float = FLOAT_TYPE_P (inside_type);
8789 : 14583 : int inside_vec = VECTOR_TYPE_P (inside_type);
8790 : 14583 : unsigned int inside_prec = element_precision (inside_type);
8791 : 14583 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
8792 : 14583 : int inter_int = INTEGRAL_TYPE_P (inter_type);
8793 : 14583 : int inter_ptr = POINTER_TYPE_P (inter_type);
8794 : 14583 : int inter_float = FLOAT_TYPE_P (inter_type);
8795 : 14583 : int inter_vec = VECTOR_TYPE_P (inter_type);
8796 : 14583 : unsigned int inter_prec = element_precision (inter_type);
8797 : 14583 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
8798 : 14583 : int final_int = INTEGRAL_TYPE_P (type);
8799 : 14583 : int final_ptr = POINTER_TYPE_P (type);
8800 : 14583 : int final_float = FLOAT_TYPE_P (type);
8801 : 14583 : int final_vec = VECTOR_TYPE_P (type);
8802 : 14583 : unsigned int final_prec = element_precision (type);
8803 : 14583 : int final_unsignedp = TYPE_UNSIGNED (type);
8804 : 14583 : if (((
8805 : : 1
8806 : 14583 : && useless_type_conversion_p (type, inside_type))
8807 : : || (
8808 : :
8809 : : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
8810 : 0 : && (((inter_int || inter_ptr) && final_int)
8811 : 0 : || (inter_float && final_float))
8812 : 14583 : && inter_prec >= final_prec
8813 : : )
8814 : : {
8815 : 0 : gimple_seq *lseq = seq;
8816 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1774;
8817 : 0 : {
8818 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8819 : 0 : res_op->ops[0] = captures[1];
8820 : 0 : res_op->resimplify (lseq, valueize);
8821 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
8822 : 0 : return true;
8823 : : }
8824 : 0 : next_after_fail1774:;
8825 : : }
8826 : : else
8827 : : {
8828 : 14583 : if (((inter_int && inside_int) || (inter_float && inside_float))
8829 : 0 : && (final_int || final_float)
8830 : 0 : && inter_prec >= inside_prec
8831 : 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
8832 : : )
8833 : : {
8834 : 0 : gimple_seq *lseq = seq;
8835 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1775;
8836 : 0 : {
8837 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8838 : 0 : res_op->ops[0] = captures[1];
8839 : 0 : res_op->resimplify (lseq, valueize);
8840 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
8841 : 0 : return true;
8842 : : }
8843 : 0 : next_after_fail1775:;
8844 : 0 : }
8845 : : else
8846 : : {
8847 : 14583 : if (inside_int && inter_int && final_int
8848 : 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
8849 : 0 : && inside_unsignedp && !inter_unsignedp)
8850 : 0 : || final_prec == inter_prec
8851 : 0 : || (inside_prec < inter_prec && inter_prec > final_prec
8852 : 0 : && !inside_unsignedp && inter_unsignedp))
8853 : : )
8854 : : {
8855 : 0 : gimple_seq *lseq = seq;
8856 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1776;
8857 : 0 : {
8858 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8859 : 0 : res_op->ops[0] = captures[1];
8860 : 0 : res_op->resimplify (lseq, valueize);
8861 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
8862 : 0 : return true;
8863 : : }
8864 : 0 : next_after_fail1776:;
8865 : 0 : }
8866 : : else
8867 : : {
8868 : 14583 : if (! inside_float && ! inter_float && ! final_float
8869 : : && ! inside_vec && ! inter_vec && ! final_vec
8870 : 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
8871 : 0 : && ! (inside_int && inter_int
8872 : 0 : && inter_unsignedp != inside_unsignedp
8873 : 0 : && inter_prec < final_prec)
8874 : 0 : && ((inter_unsignedp && inter_prec > inside_prec)
8875 : 0 : == (final_unsignedp && final_prec > inter_prec))
8876 : 0 : && ! (inside_ptr && inter_prec != final_prec)
8877 : 0 : && ! (final_ptr && inside_prec != inter_prec)
8878 : : )
8879 : : {
8880 : 0 : gimple_seq *lseq = seq;
8881 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1777;
8882 : 0 : {
8883 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8884 : 0 : res_op->ops[0] = captures[1];
8885 : 0 : res_op->resimplify (lseq, valueize);
8886 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
8887 : 0 : return true;
8888 : : }
8889 : 0 : next_after_fail1777:;
8890 : 0 : }
8891 : : else
8892 : : {
8893 : 14583 : if (inside_int && inter_int && final_int
8894 : 0 : && final_prec <= inside_prec
8895 : 0 : && inter_prec >= inside_prec
8896 : : )
8897 : : {
8898 : 0 : gimple_seq *lseq = seq;
8899 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1778;
8900 : 0 : {
8901 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8902 : 0 : res_op->ops[0] = captures[1];
8903 : 0 : res_op->resimplify (lseq, valueize);
8904 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
8905 : 0 : return true;
8906 : : }
8907 : 0 : next_after_fail1778:;
8908 : 0 : }
8909 : : else
8910 : : {
8911 : 14583 : if (1
8912 : 14583 : && final_int && inter_int && inside_int
8913 : 0 : && final_prec >= inside_prec
8914 : 0 : && inside_prec > inter_prec
8915 : 0 : && inter_unsignedp
8916 : : )
8917 : : {
8918 : 0 : gimple_seq *lseq = seq;
8919 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1779;
8920 : 0 : {
8921 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8922 : 0 : {
8923 : 0 : tree _o1[2], _r1;
8924 : 0 : _o1[0] = captures[1];
8925 : 0 : _o1[1] = wide_int_to_tree
8926 : 0 : (inside_type,
8927 : 0 : wi::mask (inter_prec, false,
8928 : 0 : TYPE_PRECISION (inside_type)));
8929 : 0 : (*res_op).set_op (BIT_AND_EXPR, TREE_TYPE (_o1[0]), 2);
8930 : 0 : (*res_op).ops[0] = _o1[0];
8931 : 0 : (*res_op).ops[1] = _o1[1];
8932 : 0 : (*res_op).resimplify (lseq, valueize);
8933 : : }
8934 : 0 : if (type != res_op->type
8935 : 0 : && !useless_type_conversion_p (type, res_op->type))
8936 : : {
8937 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail1779;
8938 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8939 : 0 : res_op->resimplify (lseq, valueize);
8940 : : }
8941 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
8942 : 0 : return true;
8943 : : }
8944 : 14583 : next_after_fail1779:;
8945 : : }
8946 : : else
8947 : : {
8948 : 14583 : if (1
8949 : 14583 : && inside_int && inter_float && final_int &&
8950 : 14583 : (unsigned) significand_size (TYPE_MODE (inter_type))
8951 : 0 : >= inside_prec - !inside_unsignedp
8952 : : )
8953 : : {
8954 : 0 : gimple_seq *lseq = seq;
8955 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1780;
8956 : 0 : {
8957 : 0 : res_op->set_op (NOP_EXPR, type, 1);
8958 : 0 : res_op->ops[0] = captures[1];
8959 : 0 : res_op->resimplify (lseq, valueize);
8960 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
8961 : 0 : return true;
8962 : : }
8963 : 0 : next_after_fail1780:;
8964 : : }
8965 : : }
8966 : : }
8967 : : }
8968 : : }
8969 : : }
8970 : : }
8971 : : }
8972 : : }
8973 : 14583 : break;
8974 : : }
8975 : 592695 : case BIT_AND_EXPR:
8976 : 592695 : {
8977 : 592695 : tree _q20 = gimple_assign_rhs1 (_a1);
8978 : 592695 : _q20 = do_valueize (valueize, _q20);
8979 : 592695 : tree _q21 = gimple_assign_rhs2 (_a1);
8980 : 592695 : _q21 = do_valueize (valueize, _q21);
8981 : 592695 : if (tree_swap_operands_p (_q20, _q21))
8982 : 2528 : std::swap (_q20, _q21);
8983 : 592695 : switch (TREE_CODE (_q21))
8984 : : {
8985 : 553995 : case INTEGER_CST:
8986 : 553995 : {
8987 : 553995 : {
8988 : 553995 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8989 : 553995 : if (INTEGRAL_TYPE_P (type)
8990 : 459961 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8991 : 459961 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
8992 : 805024 : && operand_equal_p (captures[1], build_low_bits_mask (TREE_TYPE (captures[1]),
8993 : 251029 : TYPE_PRECISION (type)), 0)
8994 : : )
8995 : : {
8996 : 6589 : gimple_seq *lseq = seq;
8997 : 6589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1781;
8998 : 6589 : {
8999 : 6589 : res_op->set_op (NOP_EXPR, type, 1);
9000 : 6589 : res_op->ops[0] = captures[0];
9001 : 6589 : res_op->resimplify (lseq, valueize);
9002 : 6589 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9003 : 6589 : return true;
9004 : : }
9005 : 0 : next_after_fail1781:;
9006 : : }
9007 : : }
9008 : 547406 : break;
9009 : : }
9010 : : default:;
9011 : : }
9012 : 74695180 : break;
9013 : : }
9014 : 8 : case VEC_COND_EXPR:
9015 : 8 : {
9016 : 8 : tree _q20 = gimple_assign_rhs1 (_a1);
9017 : 8 : _q20 = do_valueize (valueize, _q20);
9018 : 8 : tree _q21 = gimple_assign_rhs2 (_a1);
9019 : 8 : _q21 = do_valueize (valueize, _q21);
9020 : 8 : tree _q22 = gimple_assign_rhs3 (_a1);
9021 : 8 : _q22 = do_valueize (valueize, _q22);
9022 : 8 : {
9023 : 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
9024 : 8 : if (VECTOR_TYPE_P (type)
9025 : 8 : && types_match (TREE_TYPE (captures[1]), truth_type_for (type))
9026 : : )
9027 : : {
9028 : 0 : gimple_seq *lseq = seq;
9029 : 0 : if (lseq
9030 : 0 : && (!single_use (captures[0])))
9031 : 0 : lseq = NULL;
9032 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1782;
9033 : 0 : {
9034 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
9035 : 0 : res_op->ops[0] = captures[1];
9036 : 0 : {
9037 : 0 : tree _o1[1], _r1;
9038 : 0 : _o1[0] = captures[2];
9039 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
9040 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
9041 : : {
9042 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
9043 : 0 : tem_op.resimplify (NULL, valueize);
9044 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
9045 : 0 : if (!_r1) goto next_after_fail1782;
9046 : : }
9047 : : else
9048 : : _r1 = _o1[0];
9049 : 0 : res_op->ops[1] = _r1;
9050 : : }
9051 : 0 : {
9052 : 0 : tree _o1[1], _r1;
9053 : 0 : _o1[0] = captures[3];
9054 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
9055 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
9056 : : {
9057 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
9058 : 0 : tem_op.resimplify (NULL, valueize);
9059 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
9060 : 0 : if (!_r1) goto next_after_fail1782;
9061 : : }
9062 : : else
9063 : : _r1 = _o1[0];
9064 : 0 : res_op->ops[2] = _r1;
9065 : : }
9066 : 0 : res_op->resimplify (lseq, valueize);
9067 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9068 : 0 : return true;
9069 : : }
9070 : 8 : next_after_fail1782:;
9071 : : }
9072 : : }
9073 : 8 : break;
9074 : : }
9075 : 4077 : case COND_EXPR:
9076 : 4077 : {
9077 : 4077 : tree _q20 = gimple_assign_rhs1 (_a1);
9078 : 4077 : _q20 = do_valueize (valueize, _q20);
9079 : 4077 : tree _q21 = gimple_assign_rhs2 (_a1);
9080 : 4077 : _q21 = do_valueize (valueize, _q21);
9081 : 4077 : tree _q22 = gimple_assign_rhs3 (_a1);
9082 : 4077 : _q22 = do_valueize (valueize, _q22);
9083 : 4077 : switch (TREE_CODE (_q21))
9084 : : {
9085 : 620 : case INTEGER_CST:
9086 : 620 : {
9087 : 620 : switch (TREE_CODE (_q22))
9088 : : {
9089 : 386 : case INTEGER_CST:
9090 : 386 : {
9091 : 386 : {
9092 : 386 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
9093 : 386 : if (INTEGRAL_TYPE_P (type)
9094 : 386 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
9095 : : )
9096 : : {
9097 : 386 : gimple_seq *lseq = seq;
9098 : 386 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1783;
9099 : 386 : {
9100 : 386 : res_op->set_op (COND_EXPR, type, 3);
9101 : 386 : res_op->ops[0] = captures[1];
9102 : 386 : res_op->ops[0] = unshare_expr (res_op->ops[0]);
9103 : 386 : {
9104 : 386 : tree _o1[1], _r1;
9105 : 386 : _o1[0] = captures[2];
9106 : 386 : if (type != TREE_TYPE (_o1[0]) /* XXX */
9107 : 386 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
9108 : : {
9109 : 386 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
9110 : 386 : tem_op.resimplify (lseq, valueize);
9111 : 386 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9112 : 386 : if (!_r1) goto next_after_fail1783;
9113 : : }
9114 : : else
9115 : : _r1 = _o1[0];
9116 : 386 : res_op->ops[1] = _r1;
9117 : : }
9118 : 386 : {
9119 : 386 : tree _o1[1], _r1;
9120 : 386 : _o1[0] = captures[3];
9121 : 386 : if (type != TREE_TYPE (_o1[0]) /* XXX */
9122 : 386 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
9123 : : {
9124 : 386 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
9125 : 386 : tem_op.resimplify (lseq, valueize);
9126 : 386 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
9127 : 386 : if (!_r1) goto next_after_fail1783;
9128 : : }
9129 : : else
9130 : : _r1 = _o1[0];
9131 : 386 : res_op->ops[2] = _r1;
9132 : : }
9133 : 386 : res_op->resimplify (lseq, valueize);
9134 : 386 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
9135 : 386 : return true;
9136 : : }
9137 : 0 : next_after_fail1783:;
9138 : : }
9139 : : }
9140 : 0 : break;
9141 : : }
9142 : : default:;
9143 : : }
9144 : : break;
9145 : : }
9146 : : default:;
9147 : : }
9148 : : break;
9149 : : }
9150 : 256609 : case MAX_EXPR:
9151 : 256609 : {
9152 : 256609 : tree _q20 = gimple_assign_rhs1 (_a1);
9153 : 256609 : _q20 = do_valueize (valueize, _q20);
9154 : 256609 : tree _q21 = gimple_assign_rhs2 (_a1);
9155 : 256609 : _q21 = do_valueize (valueize, _q21);
9156 : 256609 : if (tree_swap_operands_p (_q20, _q21))
9157 : 271 : std::swap (_q20, _q21);
9158 : 256609 : switch (TREE_CODE (_q20))
9159 : : {
9160 : 256609 : case SSA_NAME:
9161 : 256609 : if (gimple *_d2 = get_def (valueize, _q20))
9162 : : {
9163 : 250282 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9164 : 262234 : switch (gimple_assign_rhs_code (_a2))
9165 : : {
9166 : 64141 : CASE_CONVERT:
9167 : 64141 : {
9168 : 64141 : tree _q30 = gimple_assign_rhs1 (_a2);
9169 : 64141 : _q30 = do_valueize (valueize, _q30);
9170 : 64141 : switch (TREE_CODE (_q21))
9171 : : {
9172 : 580 : case SSA_NAME:
9173 : 580 : if (gimple *_d3 = get_def (valueize, _q21))
9174 : : {
9175 : 580 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
9176 : 495 : switch (gimple_assign_rhs_code (_a3))
9177 : : {
9178 : 344 : CASE_CONVERT:
9179 : 344 : {
9180 : 344 : tree _q50 = gimple_assign_rhs1 (_a3);
9181 : 344 : _q50 = do_valueize (valueize, _q50);
9182 : 344 : {
9183 : 344 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
9184 : 344 : if (gimple_simplify_517 (res_op, seq, valueize, type, captures, MAX_EXPR))
9185 : 24 : return true;
9186 : : }
9187 : 320 : break;
9188 : : }
9189 : : default:;
9190 : : }
9191 : : }
9192 : : break;
9193 : : default:;
9194 : : }
9195 : : break;
9196 : : }
9197 : : default:;
9198 : : }
9199 : : }
9200 : : break;
9201 : : default:;
9202 : : }
9203 : 74695180 : break;
9204 : : }
9205 : 112772 : case MIN_EXPR:
9206 : 112772 : {
9207 : 112772 : tree _q20 = gimple_assign_rhs1 (_a1);
9208 : 112772 : _q20 = do_valueize (valueize, _q20);
9209 : 112772 : tree _q21 = gimple_assign_rhs2 (_a1);
9210 : 112772 : _q21 = do_valueize (valueize, _q21);
9211 : 112772 : if (tree_swap_operands_p (_q20, _q21))
9212 : 11180 : std::swap (_q20, _q21);
9213 : 112772 : switch (TREE_CODE (_q20))
9214 : : {
9215 : 112772 : case SSA_NAME:
9216 : 112772 : if (gimple *_d2 = get_def (valueize, _q20))
9217 : : {
9218 : 107847 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9219 : 119313 : switch (gimple_assign_rhs_code (_a2))
9220 : : {
9221 : 8375 : CASE_CONVERT:
9222 : 8375 : {
9223 : 8375 : tree _q30 = gimple_assign_rhs1 (_a2);
9224 : 8375 : _q30 = do_valueize (valueize, _q30);
9225 : 8375 : switch (TREE_CODE (_q21))
9226 : : {
9227 : 3264 : case SSA_NAME:
9228 : 3264 : if (gimple *_d3 = get_def (valueize, _q21))
9229 : : {
9230 : 3200 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
9231 : 2454 : switch (gimple_assign_rhs_code (_a3))
9232 : : {
9233 : 855 : CASE_CONVERT:
9234 : 855 : {
9235 : 855 : tree _q50 = gimple_assign_rhs1 (_a3);
9236 : 855 : _q50 = do_valueize (valueize, _q50);
9237 : 855 : {
9238 : 855 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
9239 : 855 : if (gimple_simplify_517 (res_op, seq, valueize, type, captures, MIN_EXPR))
9240 : 24 : return true;
9241 : : }
9242 : 831 : break;
9243 : : }
9244 : : default:;
9245 : : }
9246 : : }
9247 : : break;
9248 : : default:;
9249 : : }
9250 : : break;
9251 : : }
9252 : : default:;
9253 : : }
9254 : : }
9255 : : break;
9256 : : default:;
9257 : : }
9258 : 74695180 : break;
9259 : : }
9260 : 4408971 : case PLUS_EXPR:
9261 : 4408971 : {
9262 : 4408971 : tree _q20 = gimple_assign_rhs1 (_a1);
9263 : 4408971 : _q20 = do_valueize (valueize, _q20);
9264 : 4408971 : tree _q21 = gimple_assign_rhs2 (_a1);
9265 : 4408971 : _q21 = do_valueize (valueize, _q21);
9266 : 4408971 : if (tree_swap_operands_p (_q20, _q21))
9267 : 231008 : std::swap (_q20, _q21);
9268 : 4408971 : switch (TREE_CODE (_q20))
9269 : : {
9270 : 4408968 : case SSA_NAME:
9271 : 4408968 : if (gimple *_d2 = get_def (valueize, _q20))
9272 : : {
9273 : 4054614 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9274 : 3278623 : switch (gimple_assign_rhs_code (_a2))
9275 : : {
9276 : 1113180 : CASE_CONVERT:
9277 : 1113180 : {
9278 : 1113180 : tree _q30 = gimple_assign_rhs1 (_a2);
9279 : 1113180 : _q30 = do_valueize (valueize, _q30);
9280 : 1113180 : switch (TREE_CODE (_q21))
9281 : : {
9282 : 415005 : case SSA_NAME:
9283 : 415005 : if (gimple *_d3 = get_def (valueize, _q21))
9284 : : {
9285 : 386539 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
9286 : 362373 : switch (gimple_assign_rhs_code (_a3))
9287 : : {
9288 : 159207 : CASE_CONVERT:
9289 : 159207 : {
9290 : 159207 : tree _q50 = gimple_assign_rhs1 (_a3);
9291 : 159207 : _q50 = do_valueize (valueize, _q50);
9292 : 159207 : {
9293 : 159207 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
9294 : 159207 : if (gimple_simplify_518 (res_op, seq, valueize, type, captures, PLUS_EXPR))
9295 : 143 : return true;
9296 : : }
9297 : 159064 : break;
9298 : : }
9299 : : default:;
9300 : : }
9301 : : }
9302 : : break;
9303 : 1113037 : default:;
9304 : : }
9305 : 1113037 : {
9306 : 1113037 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
9307 : 1113037 : if (gimple_simplify_519 (res_op, seq, valueize, type, captures, PLUS_EXPR))
9308 : 2232 : return true;
9309 : : }
9310 : 1110805 : break;
9311 : : }
9312 : : default:;
9313 : : }
9314 : : }
9315 : : break;
9316 : 4406596 : default:;
9317 : : }
9318 : 4406596 : switch (TREE_CODE (_q21))
9319 : : {
9320 : 1628329 : case SSA_NAME:
9321 : 1628329 : if (gimple *_d2 = get_def (valueize, _q21))
9322 : : {
9323 : 1471807 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9324 : 1216686 : switch (gimple_assign_rhs_code (_a2))
9325 : : {
9326 : 361711 : CASE_CONVERT:
9327 : 361711 : {
9328 : 361711 : tree _q40 = gimple_assign_rhs1 (_a2);
9329 : 361711 : _q40 = do_valueize (valueize, _q40);
9330 : 361711 : {
9331 : 361711 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
9332 : 361711 : if (gimple_simplify_520 (res_op, seq, valueize, type, captures, PLUS_EXPR))
9333 : 0 : return true;
9334 : : }
9335 : 361711 : break;
9336 : : }
9337 : : default:;
9338 : : }
9339 : : }
9340 : : break;
9341 : 4406596 : default:;
9342 : : }
9343 : 4406596 : {
9344 : 4406596 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
9345 : 4406596 : if (gimple_simplify_521 (res_op, seq, valueize, type, captures, PLUS_EXPR))
9346 : 0 : return true;
9347 : : }
9348 : 4406596 : break;
9349 : : }
9350 : 547343 : case MINUS_EXPR:
9351 : 547343 : {
9352 : 547343 : tree _q20 = gimple_assign_rhs1 (_a1);
9353 : 547343 : _q20 = do_valueize (valueize, _q20);
9354 : 547343 : tree _q21 = gimple_assign_rhs2 (_a1);
9355 : 547343 : _q21 = do_valueize (valueize, _q21);
9356 : 547343 : switch (TREE_CODE (_q20))
9357 : : {
9358 : 412615 : case SSA_NAME:
9359 : 412615 : if (gimple *_d2 = get_def (valueize, _q20))
9360 : : {
9361 : 377924 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9362 : 392191 : switch (gimple_assign_rhs_code (_a2))
9363 : : {
9364 : 109759 : CASE_CONVERT:
9365 : 109759 : {
9366 : 109759 : tree _q30 = gimple_assign_rhs1 (_a2);
9367 : 109759 : _q30 = do_valueize (valueize, _q30);
9368 : 109759 : switch (TREE_CODE (_q21))
9369 : : {
9370 : 103810 : case SSA_NAME:
9371 : 103810 : if (gimple *_d3 = get_def (valueize, _q21))
9372 : : {
9373 : 100464 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
9374 : 105191 : switch (gimple_assign_rhs_code (_a3))
9375 : : {
9376 : 78077 : CASE_CONVERT:
9377 : 78077 : {
9378 : 78077 : tree _q50 = gimple_assign_rhs1 (_a3);
9379 : 78077 : _q50 = do_valueize (valueize, _q50);
9380 : 78077 : {
9381 : 78077 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
9382 : 78077 : if (gimple_simplify_518 (res_op, seq, valueize, type, captures, MINUS_EXPR))
9383 : 76 : return true;
9384 : : }
9385 : 78001 : break;
9386 : : }
9387 : : default:;
9388 : : }
9389 : : }
9390 : : break;
9391 : 109683 : default:;
9392 : : }
9393 : 109683 : {
9394 : 109683 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
9395 : 109683 : if (gimple_simplify_519 (res_op, seq, valueize, type, captures, MINUS_EXPR))
9396 : 112 : return true;
9397 : : }
9398 : 109571 : break;
9399 : : }
9400 : : default:;
9401 : : }
9402 : : }
9403 : : break;
9404 : 547155 : default:;
9405 : : }
9406 : 547155 : switch (TREE_CODE (_q21))
9407 : : {
9408 : 526880 : case SSA_NAME:
9409 : 526880 : if (gimple *_d2 = get_def (valueize, _q21))
9410 : : {
9411 : 486839 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9412 : 490363 : switch (gimple_assign_rhs_code (_a2))
9413 : : {
9414 : 141293 : CASE_CONVERT:
9415 : 141293 : {
9416 : 141293 : tree _q40 = gimple_assign_rhs1 (_a2);
9417 : 141293 : _q40 = do_valueize (valueize, _q40);
9418 : 141293 : {
9419 : 141293 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
9420 : 141293 : if (gimple_simplify_520 (res_op, seq, valueize, type, captures, MINUS_EXPR))
9421 : 0 : return true;
9422 : : }
9423 : 141293 : break;
9424 : : }
9425 : : default:;
9426 : : }
9427 : : }
9428 : : break;
9429 : 547155 : default:;
9430 : : }
9431 : 547155 : {
9432 : 547155 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
9433 : 547155 : if (gimple_simplify_521 (res_op, seq, valueize, type, captures, MINUS_EXPR))
9434 : 0 : return true;
9435 : : }
9436 : 547155 : break;
9437 : : }
9438 : 1905084 : case MULT_EXPR:
9439 : 1905084 : {
9440 : 1905084 : tree _q20 = gimple_assign_rhs1 (_a1);
9441 : 1905084 : _q20 = do_valueize (valueize, _q20);
9442 : 1905084 : tree _q21 = gimple_assign_rhs2 (_a1);
9443 : 1905084 : _q21 = do_valueize (valueize, _q21);
9444 : 1905084 : if (tree_swap_operands_p (_q20, _q21))
9445 : 61812 : std::swap (_q20, _q21);
9446 : 1905084 : switch (TREE_CODE (_q20))
9447 : : {
9448 : 1904998 : case SSA_NAME:
9449 : 1904998 : if (gimple *_d2 = get_def (valueize, _q20))
9450 : : {
9451 : 1790059 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9452 : 1763072 : switch (gimple_assign_rhs_code (_a2))
9453 : : {
9454 : 314247 : CASE_CONVERT:
9455 : 314247 : {
9456 : 314247 : tree _q30 = gimple_assign_rhs1 (_a2);
9457 : 314247 : _q30 = do_valueize (valueize, _q30);
9458 : 314247 : switch (TREE_CODE (_q21))
9459 : : {
9460 : 119476 : case SSA_NAME:
9461 : 119476 : if (gimple *_d3 = get_def (valueize, _q21))
9462 : : {
9463 : 116596 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
9464 : 123291 : switch (gimple_assign_rhs_code (_a3))
9465 : : {
9466 : 73615 : CASE_CONVERT:
9467 : 73615 : {
9468 : 73615 : tree _q50 = gimple_assign_rhs1 (_a3);
9469 : 73615 : _q50 = do_valueize (valueize, _q50);
9470 : 73615 : {
9471 : 73615 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
9472 : 73615 : if (gimple_simplify_518 (res_op, seq, valueize, type, captures, MULT_EXPR))
9473 : 22 : return true;
9474 : : }
9475 : 73593 : break;
9476 : : }
9477 : : default:;
9478 : : }
9479 : : }
9480 : : break;
9481 : 314225 : default:;
9482 : : }
9483 : 314225 : {
9484 : 314225 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
9485 : 314225 : if (gimple_simplify_519 (res_op, seq, valueize, type, captures, MULT_EXPR))
9486 : 142 : return true;
9487 : : }
9488 : 314083 : break;
9489 : : }
9490 : : default:;
9491 : : }
9492 : : }
9493 : : break;
9494 : 1904920 : default:;
9495 : : }
9496 : 1904920 : switch (TREE_CODE (_q21))
9497 : : {
9498 : 898023 : case SSA_NAME:
9499 : 898023 : if (gimple *_d2 = get_def (valueize, _q21))
9500 : : {
9501 : 809906 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9502 : 984381 : switch (gimple_assign_rhs_code (_a2))
9503 : : {
9504 : 146444 : CASE_CONVERT:
9505 : 146444 : {
9506 : 146444 : tree _q40 = gimple_assign_rhs1 (_a2);
9507 : 146444 : _q40 = do_valueize (valueize, _q40);
9508 : 146444 : {
9509 : 146444 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
9510 : 146444 : if (gimple_simplify_520 (res_op, seq, valueize, type, captures, MULT_EXPR))
9511 : 0 : return true;
9512 : : }
9513 : 146444 : break;
9514 : : }
9515 : : default:;
9516 : : }
9517 : : }
9518 : : break;
9519 : 1904920 : default:;
9520 : : }
9521 : 1904920 : {
9522 : 1904920 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
9523 : 1904920 : if (gimple_simplify_521 (res_op, seq, valueize, type, captures, MULT_EXPR))
9524 : 65 : return true;
9525 : : }
9526 : 1904855 : break;
9527 : : }
9528 : 19241 : case RDIV_EXPR:
9529 : 19241 : {
9530 : 19241 : tree _q20 = gimple_assign_rhs1 (_a1);
9531 : 19241 : _q20 = do_valueize (valueize, _q20);
9532 : 19241 : tree _q21 = gimple_assign_rhs2 (_a1);
9533 : 19241 : _q21 = do_valueize (valueize, _q21);
9534 : 19241 : switch (TREE_CODE (_q20))
9535 : : {
9536 : 14802 : case SSA_NAME:
9537 : 14802 : if (gimple *_d2 = get_def (valueize, _q20))
9538 : : {
9539 : 14179 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9540 : 14150 : switch (gimple_assign_rhs_code (_a2))
9541 : : {
9542 : 10938 : CASE_CONVERT:
9543 : 10938 : {
9544 : 10938 : tree _q30 = gimple_assign_rhs1 (_a2);
9545 : 10938 : _q30 = do_valueize (valueize, _q30);
9546 : 10938 : switch (TREE_CODE (_q21))
9547 : : {
9548 : 9381 : case SSA_NAME:
9549 : 9381 : if (gimple *_d3 = get_def (valueize, _q21))
9550 : : {
9551 : 8802 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
9552 : 9218 : switch (gimple_assign_rhs_code (_a3))
9553 : : {
9554 : 7087 : CASE_CONVERT:
9555 : 7087 : {
9556 : 7087 : tree _q50 = gimple_assign_rhs1 (_a3);
9557 : 7087 : _q50 = do_valueize (valueize, _q50);
9558 : 7087 : {
9559 : 7087 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
9560 : 7087 : if (gimple_simplify_518 (res_op, seq, valueize, type, captures, RDIV_EXPR))
9561 : 0 : return true;
9562 : : }
9563 : 7087 : break;
9564 : : }
9565 : : default:;
9566 : : }
9567 : : }
9568 : : break;
9569 : 10938 : default:;
9570 : : }
9571 : 10938 : {
9572 : 10938 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
9573 : 10938 : if (gimple_simplify_519 (res_op, seq, valueize, type, captures, RDIV_EXPR))
9574 : 98 : return true;
9575 : : }
9576 : 10840 : break;
9577 : : }
9578 : : default:;
9579 : : }
9580 : : }
9581 : : break;
9582 : 19143 : default:;
9583 : : }
9584 : 19143 : switch (TREE_CODE (_q21))
9585 : : {
9586 : 16808 : case SSA_NAME:
9587 : 16808 : if (gimple *_d2 = get_def (valueize, _q21))
9588 : : {
9589 : 15544 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9590 : 16455 : switch (gimple_assign_rhs_code (_a2))
9591 : : {
9592 : 10713 : CASE_CONVERT:
9593 : 10713 : {
9594 : 10713 : tree _q40 = gimple_assign_rhs1 (_a2);
9595 : 10713 : _q40 = do_valueize (valueize, _q40);
9596 : 10713 : {
9597 : 10713 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
9598 : 10713 : if (gimple_simplify_520 (res_op, seq, valueize, type, captures, RDIV_EXPR))
9599 : 14 : return true;
9600 : : }
9601 : 10699 : break;
9602 : : }
9603 : : default:;
9604 : : }
9605 : : }
9606 : : break;
9607 : 19129 : default:;
9608 : : }
9609 : 19129 : {
9610 : 19129 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
9611 : 19129 : if (gimple_simplify_521 (res_op, seq, valueize, type, captures, RDIV_EXPR))
9612 : 0 : return true;
9613 : : }
9614 : 19129 : break;
9615 : : }
9616 : 61147 : case NEGATE_EXPR:
9617 : 61147 : {
9618 : 61147 : tree _q20 = gimple_assign_rhs1 (_a1);
9619 : 61147 : _q20 = do_valueize (valueize, _q20);
9620 : 61147 : {
9621 : 61147 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9622 : 61147 : if (gimple_simplify_522 (res_op, seq, valueize, type, captures))
9623 : 3 : return true;
9624 : : }
9625 : 61144 : break;
9626 : : }
9627 : : default:;
9628 : : }
9629 : 10650308 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
9630 : 2325365 : switch (gimple_call_combined_fn (_c1))
9631 : : {
9632 : 262 : case CFN_BUILT_IN_RINTF:
9633 : 262 : if (gimple_call_num_args (_c1) == 1)
9634 : : {
9635 : 262 : tree _q20 = gimple_call_arg (_c1, 0);
9636 : 262 : _q20 = do_valueize (valueize, _q20);
9637 : 262 : switch (TREE_CODE (_q20))
9638 : : {
9639 : 262 : case SSA_NAME:
9640 : 262 : if (gimple *_d2 = get_def (valueize, _q20))
9641 : : {
9642 : 262 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9643 : 134 : switch (gimple_assign_rhs_code (_a2))
9644 : : {
9645 : 126 : CASE_CONVERT:
9646 : 126 : {
9647 : 126 : tree _q30 = gimple_assign_rhs1 (_a2);
9648 : 126 : _q30 = do_valueize (valueize, _q30);
9649 : 126 : if (gimple_float16_value_p (_q30, valueize))
9650 : : {
9651 : 40 : {
9652 : 40 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9653 : 40 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF, CFN_RINT))
9654 : 2 : return true;
9655 : : }
9656 : : }
9657 : : break;
9658 : : }
9659 : : default:;
9660 : : }
9661 : : }
9662 : : break;
9663 : : default:;
9664 : : }
9665 : : }
9666 : : break;
9667 : 38 : case CFN_BUILT_IN_RINTL:
9668 : 38 : if (gimple_call_num_args (_c1) == 1)
9669 : : {
9670 : 38 : tree _q20 = gimple_call_arg (_c1, 0);
9671 : 38 : _q20 = do_valueize (valueize, _q20);
9672 : 38 : switch (TREE_CODE (_q20))
9673 : : {
9674 : 38 : case SSA_NAME:
9675 : 38 : if (gimple *_d2 = get_def (valueize, _q20))
9676 : : {
9677 : 38 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9678 : 38 : switch (gimple_assign_rhs_code (_a2))
9679 : : {
9680 : 38 : CASE_CONVERT:
9681 : 38 : {
9682 : 38 : tree _q30 = gimple_assign_rhs1 (_a2);
9683 : 38 : _q30 = do_valueize (valueize, _q30);
9684 : 38 : if (gimple_float16_value_p (_q30, valueize))
9685 : : {
9686 : 2 : {
9687 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9688 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTL, CFN_RINT))
9689 : 2 : return true;
9690 : : }
9691 : : }
9692 : : break;
9693 : : }
9694 : : default:;
9695 : : }
9696 : : }
9697 : : break;
9698 : : default:;
9699 : : }
9700 : : }
9701 : : break;
9702 : 71 : case CFN_BUILT_IN_ROUND:
9703 : 71 : if (gimple_call_num_args (_c1) == 1)
9704 : : {
9705 : 71 : tree _q20 = gimple_call_arg (_c1, 0);
9706 : 71 : _q20 = do_valueize (valueize, _q20);
9707 : 71 : switch (TREE_CODE (_q20))
9708 : : {
9709 : 71 : case SSA_NAME:
9710 : 71 : if (gimple *_d2 = get_def (valueize, _q20))
9711 : : {
9712 : 71 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9713 : 35 : switch (gimple_assign_rhs_code (_a2))
9714 : : {
9715 : 35 : CASE_CONVERT:
9716 : 35 : {
9717 : 35 : tree _q30 = gimple_assign_rhs1 (_a2);
9718 : 35 : _q30 = do_valueize (valueize, _q30);
9719 : 35 : if (gimple_float16_value_p (_q30, valueize))
9720 : : {
9721 : 0 : {
9722 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9723 : 0 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND, CFN_ROUND))
9724 : 0 : return true;
9725 : : }
9726 : : }
9727 : : break;
9728 : : }
9729 : : default:;
9730 : : }
9731 : : }
9732 : : break;
9733 : : default:;
9734 : : }
9735 : : }
9736 : : break;
9737 : 1275 : case CFN_BUILT_IN_SQRTF:
9738 : 1275 : if (gimple_call_num_args (_c1) == 1)
9739 : : {
9740 : 1275 : tree _q20 = gimple_call_arg (_c1, 0);
9741 : 1275 : _q20 = do_valueize (valueize, _q20);
9742 : 1275 : switch (TREE_CODE (_q20))
9743 : : {
9744 : 1275 : case SSA_NAME:
9745 : 1275 : if (gimple *_d2 = get_def (valueize, _q20))
9746 : : {
9747 : 1151 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9748 : 1235 : switch (gimple_assign_rhs_code (_a2))
9749 : : {
9750 : 1040 : CASE_CONVERT:
9751 : 1040 : {
9752 : 1040 : tree _q30 = gimple_assign_rhs1 (_a2);
9753 : 1040 : _q30 = do_valueize (valueize, _q30);
9754 : 1040 : if (gimple_float16_value_p (_q30, valueize))
9755 : : {
9756 : 522 : {
9757 : 522 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9758 : 522 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, CFN_SQRT))
9759 : 4 : return true;
9760 : : }
9761 : : }
9762 : : break;
9763 : : }
9764 : : default:;
9765 : : }
9766 : : }
9767 : : break;
9768 : : default:;
9769 : : }
9770 : : }
9771 : : break;
9772 : 1157 : case CFN_BUILT_IN_SQRTL:
9773 : 1157 : if (gimple_call_num_args (_c1) == 1)
9774 : : {
9775 : 1157 : tree _q20 = gimple_call_arg (_c1, 0);
9776 : 1157 : _q20 = do_valueize (valueize, _q20);
9777 : 1157 : switch (TREE_CODE (_q20))
9778 : : {
9779 : 1157 : case SSA_NAME:
9780 : 1157 : if (gimple *_d2 = get_def (valueize, _q20))
9781 : : {
9782 : 1135 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9783 : 1135 : switch (gimple_assign_rhs_code (_a2))
9784 : : {
9785 : 1135 : CASE_CONVERT:
9786 : 1135 : {
9787 : 1135 : tree _q30 = gimple_assign_rhs1 (_a2);
9788 : 1135 : _q30 = do_valueize (valueize, _q30);
9789 : 1135 : if (gimple_float16_value_p (_q30, valueize))
9790 : : {
9791 : 4 : {
9792 : 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9793 : 4 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, CFN_SQRT))
9794 : 4 : return true;
9795 : : }
9796 : : }
9797 : : break;
9798 : : }
9799 : : default:;
9800 : : }
9801 : : }
9802 : : break;
9803 : : default:;
9804 : : }
9805 : : }
9806 : : break;
9807 : 105 : case CFN_BUILT_IN_TRUNC:
9808 : 105 : if (gimple_call_num_args (_c1) == 1)
9809 : : {
9810 : 105 : tree _q20 = gimple_call_arg (_c1, 0);
9811 : 105 : _q20 = do_valueize (valueize, _q20);
9812 : 105 : switch (TREE_CODE (_q20))
9813 : : {
9814 : 105 : case SSA_NAME:
9815 : 105 : if (gimple *_d2 = get_def (valueize, _q20))
9816 : : {
9817 : 105 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9818 : 69 : switch (gimple_assign_rhs_code (_a2))
9819 : : {
9820 : 43 : CASE_CONVERT:
9821 : 43 : {
9822 : 43 : tree _q30 = gimple_assign_rhs1 (_a2);
9823 : 43 : _q30 = do_valueize (valueize, _q30);
9824 : 43 : if (gimple_float16_value_p (_q30, valueize))
9825 : : {
9826 : 8 : {
9827 : 8 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9828 : 8 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNC, CFN_TRUNC))
9829 : 8 : return true;
9830 : : }
9831 : : }
9832 : : break;
9833 : : }
9834 : : default:;
9835 : : }
9836 : : }
9837 : : break;
9838 : : default:;
9839 : : }
9840 : : }
9841 : : break;
9842 : 34 : case CFN_BUILT_IN_FMA:
9843 : 34 : if (gimple_call_num_args (_c1) == 3)
9844 : : {
9845 : 34 : tree _q20 = gimple_call_arg (_c1, 0);
9846 : 34 : _q20 = do_valueize (valueize, _q20);
9847 : 34 : tree _q21 = gimple_call_arg (_c1, 1);
9848 : 34 : _q21 = do_valueize (valueize, _q21);
9849 : 34 : tree _q22 = gimple_call_arg (_c1, 2);
9850 : 34 : _q22 = do_valueize (valueize, _q22);
9851 : 34 : if (tree_swap_operands_p (_q20, _q21))
9852 : 0 : std::swap (_q20, _q21);
9853 : 34 : switch (TREE_CODE (_q20))
9854 : : {
9855 : 6 : case SSA_NAME:
9856 : 6 : if (gimple *_d2 = get_def (valueize, _q20))
9857 : : {
9858 : 6 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9859 : 6 : switch (gimple_assign_rhs_code (_a2))
9860 : : {
9861 : 6 : CASE_CONVERT:
9862 : 6 : {
9863 : 6 : tree _q30 = gimple_assign_rhs1 (_a2);
9864 : 6 : _q30 = do_valueize (valueize, _q30);
9865 : 6 : switch (TREE_CODE (_q21))
9866 : : {
9867 : 6 : case SSA_NAME:
9868 : 6 : if (gimple *_d3 = get_def (valueize, _q21))
9869 : : {
9870 : 6 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
9871 : 6 : switch (gimple_assign_rhs_code (_a3))
9872 : : {
9873 : 6 : CASE_CONVERT:
9874 : 6 : {
9875 : 6 : tree _q50 = gimple_assign_rhs1 (_a3);
9876 : 6 : _q50 = do_valueize (valueize, _q50);
9877 : 6 : switch (TREE_CODE (_q22))
9878 : : {
9879 : 6 : case SSA_NAME:
9880 : 6 : if (gimple *_d4 = get_def (valueize, _q22))
9881 : : {
9882 : 5 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
9883 : 5 : switch (gimple_assign_rhs_code (_a4))
9884 : : {
9885 : 5 : CASE_CONVERT:
9886 : 5 : {
9887 : 5 : tree _q70 = gimple_assign_rhs1 (_a4);
9888 : 5 : _q70 = do_valueize (valueize, _q70);
9889 : 5 : {
9890 : 5 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q50, _q70 };
9891 : 5 : if (gimple_simplify_516 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMA, CFN_FMA))
9892 : 5 : return true;
9893 : : }
9894 : 0 : break;
9895 : : }
9896 : : default:;
9897 : : }
9898 : : }
9899 : : break;
9900 : : default:;
9901 : : }
9902 : : break;
9903 : : }
9904 : : default:;
9905 : : }
9906 : : }
9907 : : break;
9908 : : default:;
9909 : : }
9910 : : break;
9911 : : }
9912 : : default:;
9913 : : }
9914 : : }
9915 : : break;
9916 : : default:;
9917 : : }
9918 : : }
9919 : : break;
9920 : 345 : case CFN_BUILT_IN_ROUNDF:
9921 : 345 : if (gimple_call_num_args (_c1) == 1)
9922 : : {
9923 : 345 : tree _q20 = gimple_call_arg (_c1, 0);
9924 : 345 : _q20 = do_valueize (valueize, _q20);
9925 : 345 : switch (TREE_CODE (_q20))
9926 : : {
9927 : 345 : case SSA_NAME:
9928 : 345 : if (gimple *_d2 = get_def (valueize, _q20))
9929 : : {
9930 : 341 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9931 : 279 : switch (gimple_assign_rhs_code (_a2))
9932 : : {
9933 : 139 : CASE_CONVERT:
9934 : 139 : {
9935 : 139 : tree _q30 = gimple_assign_rhs1 (_a2);
9936 : 139 : _q30 = do_valueize (valueize, _q30);
9937 : 139 : if (gimple_float16_value_p (_q30, valueize))
9938 : : {
9939 : 38 : {
9940 : 38 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9941 : 38 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF, CFN_ROUND))
9942 : 0 : return true;
9943 : : }
9944 : : }
9945 : : break;
9946 : : }
9947 : : default:;
9948 : : }
9949 : : }
9950 : : break;
9951 : : default:;
9952 : : }
9953 : : }
9954 : : break;
9955 : 36 : case CFN_BUILT_IN_ROUNDL:
9956 : 36 : if (gimple_call_num_args (_c1) == 1)
9957 : : {
9958 : 36 : tree _q20 = gimple_call_arg (_c1, 0);
9959 : 36 : _q20 = do_valueize (valueize, _q20);
9960 : 36 : switch (TREE_CODE (_q20))
9961 : : {
9962 : 36 : case SSA_NAME:
9963 : 36 : if (gimple *_d2 = get_def (valueize, _q20))
9964 : : {
9965 : 36 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
9966 : 36 : switch (gimple_assign_rhs_code (_a2))
9967 : : {
9968 : 36 : CASE_CONVERT:
9969 : 36 : {
9970 : 36 : tree _q30 = gimple_assign_rhs1 (_a2);
9971 : 36 : _q30 = do_valueize (valueize, _q30);
9972 : 36 : if (gimple_float16_value_p (_q30, valueize))
9973 : : {
9974 : 0 : {
9975 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9976 : 0 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDL, CFN_ROUND))
9977 : 0 : return true;
9978 : : }
9979 : : }
9980 : : break;
9981 : : }
9982 : : default:;
9983 : : }
9984 : : }
9985 : : break;
9986 : : default:;
9987 : : }
9988 : : }
9989 : : break;
9990 : 119 : case CFN_BUILT_IN_CEIL:
9991 : 119 : if (gimple_call_num_args (_c1) == 1)
9992 : : {
9993 : 119 : tree _q20 = gimple_call_arg (_c1, 0);
9994 : 119 : _q20 = do_valueize (valueize, _q20);
9995 : 119 : switch (TREE_CODE (_q20))
9996 : : {
9997 : 119 : case SSA_NAME:
9998 : 119 : if (gimple *_d2 = get_def (valueize, _q20))
9999 : : {
10000 : 118 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10001 : 68 : switch (gimple_assign_rhs_code (_a2))
10002 : : {
10003 : 68 : CASE_CONVERT:
10004 : 68 : {
10005 : 68 : tree _q30 = gimple_assign_rhs1 (_a2);
10006 : 68 : _q30 = do_valueize (valueize, _q30);
10007 : 68 : if (gimple_float16_value_p (_q30, valueize))
10008 : : {
10009 : 8 : {
10010 : 8 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10011 : 8 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEIL, CFN_CEIL))
10012 : 8 : return true;
10013 : : }
10014 : : }
10015 : : break;
10016 : : }
10017 : : default:;
10018 : : }
10019 : : }
10020 : : break;
10021 : : default:;
10022 : : }
10023 : : }
10024 : : break;
10025 : 228 : case CFN_BUILT_IN_FMAF:
10026 : 228 : if (gimple_call_num_args (_c1) == 3)
10027 : : {
10028 : 228 : tree _q20 = gimple_call_arg (_c1, 0);
10029 : 228 : _q20 = do_valueize (valueize, _q20);
10030 : 228 : tree _q21 = gimple_call_arg (_c1, 1);
10031 : 228 : _q21 = do_valueize (valueize, _q21);
10032 : 228 : tree _q22 = gimple_call_arg (_c1, 2);
10033 : 228 : _q22 = do_valueize (valueize, _q22);
10034 : 228 : if (tree_swap_operands_p (_q20, _q21))
10035 : 0 : std::swap (_q20, _q21);
10036 : 228 : switch (TREE_CODE (_q20))
10037 : : {
10038 : 78 : case SSA_NAME:
10039 : 78 : if (gimple *_d2 = get_def (valueize, _q20))
10040 : : {
10041 : 78 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10042 : 78 : switch (gimple_assign_rhs_code (_a2))
10043 : : {
10044 : 78 : CASE_CONVERT:
10045 : 78 : {
10046 : 78 : tree _q30 = gimple_assign_rhs1 (_a2);
10047 : 78 : _q30 = do_valueize (valueize, _q30);
10048 : 78 : switch (TREE_CODE (_q21))
10049 : : {
10050 : 78 : case SSA_NAME:
10051 : 78 : if (gimple *_d3 = get_def (valueize, _q21))
10052 : : {
10053 : 78 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10054 : 78 : switch (gimple_assign_rhs_code (_a3))
10055 : : {
10056 : 78 : CASE_CONVERT:
10057 : 78 : {
10058 : 78 : tree _q50 = gimple_assign_rhs1 (_a3);
10059 : 78 : _q50 = do_valueize (valueize, _q50);
10060 : 78 : switch (TREE_CODE (_q22))
10061 : : {
10062 : 78 : case SSA_NAME:
10063 : 78 : if (gimple *_d4 = get_def (valueize, _q22))
10064 : : {
10065 : 78 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
10066 : 78 : switch (gimple_assign_rhs_code (_a4))
10067 : : {
10068 : 78 : CASE_CONVERT:
10069 : 78 : {
10070 : 78 : tree _q70 = gimple_assign_rhs1 (_a4);
10071 : 78 : _q70 = do_valueize (valueize, _q70);
10072 : 78 : {
10073 : 78 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q50, _q70 };
10074 : 78 : if (gimple_simplify_516 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAF, CFN_FMA))
10075 : 2 : return true;
10076 : : }
10077 : 76 : break;
10078 : : }
10079 : : default:;
10080 : : }
10081 : : }
10082 : : break;
10083 : : default:;
10084 : : }
10085 : : break;
10086 : : }
10087 : : default:;
10088 : : }
10089 : : }
10090 : : break;
10091 : : default:;
10092 : : }
10093 : : break;
10094 : : }
10095 : : default:;
10096 : : }
10097 : : }
10098 : : break;
10099 : : default:;
10100 : : }
10101 : : }
10102 : : break;
10103 : 18 : case CFN_BUILT_IN_FMAL:
10104 : 18 : if (gimple_call_num_args (_c1) == 3)
10105 : : {
10106 : 18 : tree _q20 = gimple_call_arg (_c1, 0);
10107 : 18 : _q20 = do_valueize (valueize, _q20);
10108 : 18 : tree _q21 = gimple_call_arg (_c1, 1);
10109 : 18 : _q21 = do_valueize (valueize, _q21);
10110 : 18 : tree _q22 = gimple_call_arg (_c1, 2);
10111 : 18 : _q22 = do_valueize (valueize, _q22);
10112 : 18 : if (tree_swap_operands_p (_q20, _q21))
10113 : 0 : std::swap (_q20, _q21);
10114 : 18 : switch (TREE_CODE (_q20))
10115 : : {
10116 : 18 : case SSA_NAME:
10117 : 18 : if (gimple *_d2 = get_def (valueize, _q20))
10118 : : {
10119 : 18 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10120 : 18 : switch (gimple_assign_rhs_code (_a2))
10121 : : {
10122 : 18 : CASE_CONVERT:
10123 : 18 : {
10124 : 18 : tree _q30 = gimple_assign_rhs1 (_a2);
10125 : 18 : _q30 = do_valueize (valueize, _q30);
10126 : 18 : switch (TREE_CODE (_q21))
10127 : : {
10128 : 18 : case SSA_NAME:
10129 : 18 : if (gimple *_d3 = get_def (valueize, _q21))
10130 : : {
10131 : 18 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10132 : 18 : switch (gimple_assign_rhs_code (_a3))
10133 : : {
10134 : 18 : CASE_CONVERT:
10135 : 18 : {
10136 : 18 : tree _q50 = gimple_assign_rhs1 (_a3);
10137 : 18 : _q50 = do_valueize (valueize, _q50);
10138 : 18 : switch (TREE_CODE (_q22))
10139 : : {
10140 : 18 : case SSA_NAME:
10141 : 18 : if (gimple *_d4 = get_def (valueize, _q22))
10142 : : {
10143 : 18 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
10144 : 18 : switch (gimple_assign_rhs_code (_a4))
10145 : : {
10146 : 18 : CASE_CONVERT:
10147 : 18 : {
10148 : 18 : tree _q70 = gimple_assign_rhs1 (_a4);
10149 : 18 : _q70 = do_valueize (valueize, _q70);
10150 : 18 : {
10151 : 18 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q50, _q70 };
10152 : 18 : if (gimple_simplify_516 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL, CFN_FMA))
10153 : 18 : return true;
10154 : : }
10155 : 0 : break;
10156 : : }
10157 : : default:;
10158 : : }
10159 : : }
10160 : : break;
10161 : : default:;
10162 : : }
10163 : : break;
10164 : : }
10165 : : default:;
10166 : : }
10167 : : }
10168 : : break;
10169 : : default:;
10170 : : }
10171 : : break;
10172 : : }
10173 : : default:;
10174 : : }
10175 : : }
10176 : : break;
10177 : : default:;
10178 : : }
10179 : : }
10180 : : break;
10181 : 74 : case CFN_BUILT_IN_RINT:
10182 : 74 : if (gimple_call_num_args (_c1) == 1)
10183 : : {
10184 : 74 : tree _q20 = gimple_call_arg (_c1, 0);
10185 : 74 : _q20 = do_valueize (valueize, _q20);
10186 : 74 : switch (TREE_CODE (_q20))
10187 : : {
10188 : 74 : case SSA_NAME:
10189 : 74 : if (gimple *_d2 = get_def (valueize, _q20))
10190 : : {
10191 : 74 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10192 : 38 : switch (gimple_assign_rhs_code (_a2))
10193 : : {
10194 : 38 : CASE_CONVERT:
10195 : 38 : {
10196 : 38 : tree _q30 = gimple_assign_rhs1 (_a2);
10197 : 38 : _q30 = do_valueize (valueize, _q30);
10198 : 38 : if (gimple_float16_value_p (_q30, valueize))
10199 : : {
10200 : 8 : {
10201 : 8 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10202 : 8 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINT, CFN_RINT))
10203 : 8 : return true;
10204 : : }
10205 : : }
10206 : : break;
10207 : : }
10208 : : default:;
10209 : : }
10210 : : }
10211 : : break;
10212 : : default:;
10213 : : }
10214 : : }
10215 : : break;
10216 : 99 : case CFN_BUILT_IN_SQRT:
10217 : 99 : if (gimple_call_num_args (_c1) == 1)
10218 : : {
10219 : 99 : tree _q20 = gimple_call_arg (_c1, 0);
10220 : 99 : _q20 = do_valueize (valueize, _q20);
10221 : 99 : switch (TREE_CODE (_q20))
10222 : : {
10223 : 99 : case SSA_NAME:
10224 : 99 : if (gimple *_d2 = get_def (valueize, _q20))
10225 : : {
10226 : 96 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10227 : 96 : switch (gimple_assign_rhs_code (_a2))
10228 : : {
10229 : 19 : CASE_CONVERT:
10230 : 19 : {
10231 : 19 : tree _q30 = gimple_assign_rhs1 (_a2);
10232 : 19 : _q30 = do_valueize (valueize, _q30);
10233 : 19 : if (gimple_float16_value_p (_q30, valueize))
10234 : : {
10235 : 4 : {
10236 : 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10237 : 4 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, CFN_SQRT))
10238 : 4 : return true;
10239 : : }
10240 : : }
10241 : : break;
10242 : : }
10243 : : default:;
10244 : : }
10245 : : }
10246 : : break;
10247 : : default:;
10248 : : }
10249 : : }
10250 : : break;
10251 : 760 : case CFN_BUILT_IN_COPYSIGNF16:
10252 : 760 : if (gimple_call_num_args (_c1) == 2)
10253 : : {
10254 : 760 : tree _q20 = gimple_call_arg (_c1, 0);
10255 : 760 : _q20 = do_valueize (valueize, _q20);
10256 : 760 : tree _q21 = gimple_call_arg (_c1, 1);
10257 : 760 : _q21 = do_valueize (valueize, _q21);
10258 : 760 : switch (TREE_CODE (_q20))
10259 : : {
10260 : 516 : case SSA_NAME:
10261 : 516 : if (gimple *_d2 = get_def (valueize, _q20))
10262 : : {
10263 : 516 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10264 : 468 : switch (gimple_assign_rhs_code (_a2))
10265 : : {
10266 : 28 : CASE_CONVERT:
10267 : 28 : {
10268 : 28 : tree _q30 = gimple_assign_rhs1 (_a2);
10269 : 28 : _q30 = do_valueize (valueize, _q30);
10270 : 28 : switch (TREE_CODE (_q21))
10271 : : {
10272 : 28 : case SSA_NAME:
10273 : 28 : if (gimple *_d3 = get_def (valueize, _q21))
10274 : : {
10275 : 28 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10276 : 0 : switch (gimple_assign_rhs_code (_a3))
10277 : : {
10278 : 0 : CASE_CONVERT:
10279 : 0 : {
10280 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10281 : 0 : _q50 = do_valueize (valueize, _q50);
10282 : 0 : {
10283 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10284 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16))
10285 : 0 : return true;
10286 : : }
10287 : 0 : break;
10288 : : }
10289 : : default:;
10290 : : }
10291 : : }
10292 : : break;
10293 : : default:;
10294 : : }
10295 : : break;
10296 : : }
10297 : : default:;
10298 : : }
10299 : : }
10300 : : break;
10301 : : default:;
10302 : : }
10303 : : }
10304 : : break;
10305 : 0 : case CFN_BUILT_IN_COPYSIGNF32:
10306 : 0 : if (gimple_call_num_args (_c1) == 2)
10307 : : {
10308 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10309 : 0 : _q20 = do_valueize (valueize, _q20);
10310 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
10311 : 0 : _q21 = do_valueize (valueize, _q21);
10312 : 0 : switch (TREE_CODE (_q20))
10313 : : {
10314 : 0 : case SSA_NAME:
10315 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
10316 : : {
10317 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10318 : 0 : switch (gimple_assign_rhs_code (_a2))
10319 : : {
10320 : 0 : CASE_CONVERT:
10321 : 0 : {
10322 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10323 : 0 : _q30 = do_valueize (valueize, _q30);
10324 : 0 : switch (TREE_CODE (_q21))
10325 : : {
10326 : 0 : case SSA_NAME:
10327 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
10328 : : {
10329 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10330 : 0 : switch (gimple_assign_rhs_code (_a3))
10331 : : {
10332 : 0 : CASE_CONVERT:
10333 : 0 : {
10334 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10335 : 0 : _q50 = do_valueize (valueize, _q50);
10336 : 0 : {
10337 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10338 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32))
10339 : 0 : return true;
10340 : : }
10341 : 0 : break;
10342 : : }
10343 : : default:;
10344 : : }
10345 : : }
10346 : : break;
10347 : : default:;
10348 : : }
10349 : : break;
10350 : : }
10351 : : default:;
10352 : : }
10353 : : }
10354 : : break;
10355 : : default:;
10356 : : }
10357 : : }
10358 : : break;
10359 : 0 : case CFN_BUILT_IN_COPYSIGNF64:
10360 : 0 : if (gimple_call_num_args (_c1) == 2)
10361 : : {
10362 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10363 : 0 : _q20 = do_valueize (valueize, _q20);
10364 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
10365 : 0 : _q21 = do_valueize (valueize, _q21);
10366 : 0 : switch (TREE_CODE (_q20))
10367 : : {
10368 : 0 : case SSA_NAME:
10369 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
10370 : : {
10371 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10372 : 0 : switch (gimple_assign_rhs_code (_a2))
10373 : : {
10374 : 0 : CASE_CONVERT:
10375 : 0 : {
10376 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10377 : 0 : _q30 = do_valueize (valueize, _q30);
10378 : 0 : switch (TREE_CODE (_q21))
10379 : : {
10380 : 0 : case SSA_NAME:
10381 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
10382 : : {
10383 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10384 : 0 : switch (gimple_assign_rhs_code (_a3))
10385 : : {
10386 : 0 : CASE_CONVERT:
10387 : 0 : {
10388 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10389 : 0 : _q50 = do_valueize (valueize, _q50);
10390 : 0 : {
10391 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10392 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64))
10393 : 0 : return true;
10394 : : }
10395 : 0 : break;
10396 : : }
10397 : : default:;
10398 : : }
10399 : : }
10400 : : break;
10401 : : default:;
10402 : : }
10403 : : break;
10404 : : }
10405 : : default:;
10406 : : }
10407 : : }
10408 : : break;
10409 : : default:;
10410 : : }
10411 : : }
10412 : : break;
10413 : 564 : case CFN_BUILT_IN_FLOORF:
10414 : 564 : if (gimple_call_num_args (_c1) == 1)
10415 : : {
10416 : 564 : tree _q20 = gimple_call_arg (_c1, 0);
10417 : 564 : _q20 = do_valueize (valueize, _q20);
10418 : 564 : switch (TREE_CODE (_q20))
10419 : : {
10420 : 564 : case SSA_NAME:
10421 : 564 : if (gimple *_d2 = get_def (valueize, _q20))
10422 : : {
10423 : 564 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10424 : 356 : switch (gimple_assign_rhs_code (_a2))
10425 : : {
10426 : 312 : CASE_CONVERT:
10427 : 312 : {
10428 : 312 : tree _q30 = gimple_assign_rhs1 (_a2);
10429 : 312 : _q30 = do_valueize (valueize, _q30);
10430 : 312 : if (gimple_float16_value_p (_q30, valueize))
10431 : : {
10432 : 130 : {
10433 : 130 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10434 : 130 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF, CFN_FLOOR))
10435 : 2 : return true;
10436 : : }
10437 : : }
10438 : : break;
10439 : : }
10440 : : default:;
10441 : : }
10442 : : }
10443 : : break;
10444 : : default:;
10445 : : }
10446 : : }
10447 : : break;
10448 : 47 : case CFN_BUILT_IN_FLOORL:
10449 : 47 : if (gimple_call_num_args (_c1) == 1)
10450 : : {
10451 : 47 : tree _q20 = gimple_call_arg (_c1, 0);
10452 : 47 : _q20 = do_valueize (valueize, _q20);
10453 : 47 : switch (TREE_CODE (_q20))
10454 : : {
10455 : 47 : case SSA_NAME:
10456 : 47 : if (gimple *_d2 = get_def (valueize, _q20))
10457 : : {
10458 : 47 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10459 : 47 : switch (gimple_assign_rhs_code (_a2))
10460 : : {
10461 : 47 : CASE_CONVERT:
10462 : 47 : {
10463 : 47 : tree _q30 = gimple_assign_rhs1 (_a2);
10464 : 47 : _q30 = do_valueize (valueize, _q30);
10465 : 47 : if (gimple_float16_value_p (_q30, valueize))
10466 : : {
10467 : 2 : {
10468 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10469 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORL, CFN_FLOOR))
10470 : 2 : return true;
10471 : : }
10472 : : }
10473 : : break;
10474 : : }
10475 : : default:;
10476 : : }
10477 : : }
10478 : : break;
10479 : : default:;
10480 : : }
10481 : : }
10482 : : break;
10483 : 74 : case CFN_BUILT_IN_NEARBYINT:
10484 : 74 : if (gimple_call_num_args (_c1) == 1)
10485 : : {
10486 : 74 : tree _q20 = gimple_call_arg (_c1, 0);
10487 : 74 : _q20 = do_valueize (valueize, _q20);
10488 : 74 : switch (TREE_CODE (_q20))
10489 : : {
10490 : 74 : case SSA_NAME:
10491 : 74 : if (gimple *_d2 = get_def (valueize, _q20))
10492 : : {
10493 : 74 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10494 : 38 : switch (gimple_assign_rhs_code (_a2))
10495 : : {
10496 : 38 : CASE_CONVERT:
10497 : 38 : {
10498 : 38 : tree _q30 = gimple_assign_rhs1 (_a2);
10499 : 38 : _q30 = do_valueize (valueize, _q30);
10500 : 38 : if (gimple_float16_value_p (_q30, valueize))
10501 : : {
10502 : 8 : {
10503 : 8 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10504 : 8 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINT, CFN_NEARBYINT))
10505 : 8 : return true;
10506 : : }
10507 : : }
10508 : : break;
10509 : : }
10510 : : default:;
10511 : : }
10512 : : }
10513 : : break;
10514 : : default:;
10515 : : }
10516 : : }
10517 : : break;
10518 : 282 : case CFN_BUILT_IN_NEARBYINTF:
10519 : 282 : if (gimple_call_num_args (_c1) == 1)
10520 : : {
10521 : 282 : tree _q20 = gimple_call_arg (_c1, 0);
10522 : 282 : _q20 = do_valueize (valueize, _q20);
10523 : 282 : switch (TREE_CODE (_q20))
10524 : : {
10525 : 282 : case SSA_NAME:
10526 : 282 : if (gimple *_d2 = get_def (valueize, _q20))
10527 : : {
10528 : 282 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10529 : 150 : switch (gimple_assign_rhs_code (_a2))
10530 : : {
10531 : 126 : CASE_CONVERT:
10532 : 126 : {
10533 : 126 : tree _q30 = gimple_assign_rhs1 (_a2);
10534 : 126 : _q30 = do_valueize (valueize, _q30);
10535 : 126 : if (gimple_float16_value_p (_q30, valueize))
10536 : : {
10537 : 40 : {
10538 : 40 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10539 : 40 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF, CFN_NEARBYINT))
10540 : 2 : return true;
10541 : : }
10542 : : }
10543 : : break;
10544 : : }
10545 : : default:;
10546 : : }
10547 : : }
10548 : : break;
10549 : : default:;
10550 : : }
10551 : : }
10552 : : break;
10553 : 38 : case CFN_BUILT_IN_NEARBYINTL:
10554 : 38 : if (gimple_call_num_args (_c1) == 1)
10555 : : {
10556 : 38 : tree _q20 = gimple_call_arg (_c1, 0);
10557 : 38 : _q20 = do_valueize (valueize, _q20);
10558 : 38 : switch (TREE_CODE (_q20))
10559 : : {
10560 : 38 : case SSA_NAME:
10561 : 38 : if (gimple *_d2 = get_def (valueize, _q20))
10562 : : {
10563 : 38 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10564 : 38 : switch (gimple_assign_rhs_code (_a2))
10565 : : {
10566 : 38 : CASE_CONVERT:
10567 : 38 : {
10568 : 38 : tree _q30 = gimple_assign_rhs1 (_a2);
10569 : 38 : _q30 = do_valueize (valueize, _q30);
10570 : 38 : if (gimple_float16_value_p (_q30, valueize))
10571 : : {
10572 : 2 : {
10573 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10574 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTL, CFN_NEARBYINT))
10575 : 2 : return true;
10576 : : }
10577 : : }
10578 : : break;
10579 : : }
10580 : : default:;
10581 : : }
10582 : : }
10583 : : break;
10584 : : default:;
10585 : : }
10586 : : }
10587 : : break;
10588 : 2 : case CFN_BUILT_IN_ROUNDEVEN:
10589 : 2 : if (gimple_call_num_args (_c1) == 1)
10590 : : {
10591 : 2 : tree _q20 = gimple_call_arg (_c1, 0);
10592 : 2 : _q20 = do_valueize (valueize, _q20);
10593 : 2 : switch (TREE_CODE (_q20))
10594 : : {
10595 : 2 : case SSA_NAME:
10596 : 2 : if (gimple *_d2 = get_def (valueize, _q20))
10597 : : {
10598 : 2 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10599 : 2 : switch (gimple_assign_rhs_code (_a2))
10600 : : {
10601 : 2 : CASE_CONVERT:
10602 : 2 : {
10603 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
10604 : 2 : _q30 = do_valueize (valueize, _q30);
10605 : 2 : if (gimple_float16_value_p (_q30, valueize))
10606 : : {
10607 : 2 : {
10608 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10609 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDEVEN, CFN_ROUNDEVEN))
10610 : 2 : return true;
10611 : : }
10612 : : }
10613 : : break;
10614 : : }
10615 : : default:;
10616 : : }
10617 : : }
10618 : : break;
10619 : : default:;
10620 : : }
10621 : : }
10622 : : break;
10623 : 0 : case CFN_BUILT_IN_COPYSIGNF128X:
10624 : 0 : if (gimple_call_num_args (_c1) == 2)
10625 : : {
10626 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10627 : 0 : _q20 = do_valueize (valueize, _q20);
10628 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
10629 : 0 : _q21 = do_valueize (valueize, _q21);
10630 : 0 : switch (TREE_CODE (_q20))
10631 : : {
10632 : 0 : case SSA_NAME:
10633 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
10634 : : {
10635 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10636 : 0 : switch (gimple_assign_rhs_code (_a2))
10637 : : {
10638 : 0 : CASE_CONVERT:
10639 : 0 : {
10640 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10641 : 0 : _q30 = do_valueize (valueize, _q30);
10642 : 0 : switch (TREE_CODE (_q21))
10643 : : {
10644 : 0 : case SSA_NAME:
10645 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
10646 : : {
10647 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10648 : 0 : switch (gimple_assign_rhs_code (_a3))
10649 : : {
10650 : 0 : CASE_CONVERT:
10651 : 0 : {
10652 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10653 : 0 : _q50 = do_valueize (valueize, _q50);
10654 : 0 : {
10655 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10656 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X))
10657 : 0 : return true;
10658 : : }
10659 : 0 : break;
10660 : : }
10661 : : default:;
10662 : : }
10663 : : }
10664 : : break;
10665 : : default:;
10666 : : }
10667 : : break;
10668 : : }
10669 : : default:;
10670 : : }
10671 : : }
10672 : : break;
10673 : : default:;
10674 : : }
10675 : : }
10676 : : break;
10677 : 0 : case CFN_BUILT_IN_COPYSIGNF128:
10678 : 0 : if (gimple_call_num_args (_c1) == 2)
10679 : : {
10680 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10681 : 0 : _q20 = do_valueize (valueize, _q20);
10682 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
10683 : 0 : _q21 = do_valueize (valueize, _q21);
10684 : 0 : switch (TREE_CODE (_q20))
10685 : : {
10686 : 0 : case SSA_NAME:
10687 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
10688 : : {
10689 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10690 : 0 : switch (gimple_assign_rhs_code (_a2))
10691 : : {
10692 : 0 : CASE_CONVERT:
10693 : 0 : {
10694 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10695 : 0 : _q30 = do_valueize (valueize, _q30);
10696 : 0 : switch (TREE_CODE (_q21))
10697 : : {
10698 : 0 : case SSA_NAME:
10699 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
10700 : : {
10701 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10702 : 0 : switch (gimple_assign_rhs_code (_a3))
10703 : : {
10704 : 0 : CASE_CONVERT:
10705 : 0 : {
10706 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10707 : 0 : _q50 = do_valueize (valueize, _q50);
10708 : 0 : {
10709 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10710 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128))
10711 : 0 : return true;
10712 : : }
10713 : 0 : break;
10714 : : }
10715 : : default:;
10716 : : }
10717 : : }
10718 : : break;
10719 : : default:;
10720 : : }
10721 : : break;
10722 : : }
10723 : : default:;
10724 : : }
10725 : : }
10726 : : break;
10727 : : default:;
10728 : : }
10729 : : }
10730 : : break;
10731 : 0 : case CFN_BUILT_IN_COPYSIGNF32X:
10732 : 0 : if (gimple_call_num_args (_c1) == 2)
10733 : : {
10734 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10735 : 0 : _q20 = do_valueize (valueize, _q20);
10736 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
10737 : 0 : _q21 = do_valueize (valueize, _q21);
10738 : 0 : switch (TREE_CODE (_q20))
10739 : : {
10740 : 0 : case SSA_NAME:
10741 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
10742 : : {
10743 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10744 : 0 : switch (gimple_assign_rhs_code (_a2))
10745 : : {
10746 : 0 : CASE_CONVERT:
10747 : 0 : {
10748 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10749 : 0 : _q30 = do_valueize (valueize, _q30);
10750 : 0 : switch (TREE_CODE (_q21))
10751 : : {
10752 : 0 : case SSA_NAME:
10753 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
10754 : : {
10755 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10756 : 0 : switch (gimple_assign_rhs_code (_a3))
10757 : : {
10758 : 0 : CASE_CONVERT:
10759 : 0 : {
10760 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10761 : 0 : _q50 = do_valueize (valueize, _q50);
10762 : 0 : {
10763 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10764 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X))
10765 : 0 : return true;
10766 : : }
10767 : 0 : break;
10768 : : }
10769 : : default:;
10770 : : }
10771 : : }
10772 : : break;
10773 : : default:;
10774 : : }
10775 : : break;
10776 : : }
10777 : : default:;
10778 : : }
10779 : : }
10780 : : break;
10781 : : default:;
10782 : : }
10783 : : }
10784 : : break;
10785 : 0 : case CFN_BUILT_IN_COPYSIGNF64X:
10786 : 0 : if (gimple_call_num_args (_c1) == 2)
10787 : : {
10788 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
10789 : 0 : _q20 = do_valueize (valueize, _q20);
10790 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
10791 : 0 : _q21 = do_valueize (valueize, _q21);
10792 : 0 : switch (TREE_CODE (_q20))
10793 : : {
10794 : 0 : case SSA_NAME:
10795 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
10796 : : {
10797 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10798 : 0 : switch (gimple_assign_rhs_code (_a2))
10799 : : {
10800 : 0 : CASE_CONVERT:
10801 : 0 : {
10802 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
10803 : 0 : _q30 = do_valueize (valueize, _q30);
10804 : 0 : switch (TREE_CODE (_q21))
10805 : : {
10806 : 0 : case SSA_NAME:
10807 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
10808 : : {
10809 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10810 : 0 : switch (gimple_assign_rhs_code (_a3))
10811 : : {
10812 : 0 : CASE_CONVERT:
10813 : 0 : {
10814 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
10815 : 0 : _q50 = do_valueize (valueize, _q50);
10816 : 0 : {
10817 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10818 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X))
10819 : 0 : return true;
10820 : : }
10821 : 0 : break;
10822 : : }
10823 : : default:;
10824 : : }
10825 : : }
10826 : : break;
10827 : : default:;
10828 : : }
10829 : : break;
10830 : : }
10831 : : default:;
10832 : : }
10833 : : }
10834 : : break;
10835 : : default:;
10836 : : }
10837 : : }
10838 : : break;
10839 : 23 : case CFN_BUILT_IN_COPYSIGN:
10840 : 23 : if (gimple_call_num_args (_c1) == 2)
10841 : : {
10842 : 23 : tree _q20 = gimple_call_arg (_c1, 0);
10843 : 23 : _q20 = do_valueize (valueize, _q20);
10844 : 23 : tree _q21 = gimple_call_arg (_c1, 1);
10845 : 23 : _q21 = do_valueize (valueize, _q21);
10846 : 23 : switch (TREE_CODE (_q20))
10847 : : {
10848 : 23 : case SSA_NAME:
10849 : 23 : if (gimple *_d2 = get_def (valueize, _q20))
10850 : : {
10851 : 23 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10852 : 8 : switch (gimple_assign_rhs_code (_a2))
10853 : : {
10854 : 8 : CASE_CONVERT:
10855 : 8 : {
10856 : 8 : tree _q30 = gimple_assign_rhs1 (_a2);
10857 : 8 : _q30 = do_valueize (valueize, _q30);
10858 : 8 : switch (TREE_CODE (_q21))
10859 : : {
10860 : 8 : case SSA_NAME:
10861 : 8 : if (gimple *_d3 = get_def (valueize, _q21))
10862 : : {
10863 : 8 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
10864 : 8 : switch (gimple_assign_rhs_code (_a3))
10865 : : {
10866 : 8 : CASE_CONVERT:
10867 : 8 : {
10868 : 8 : tree _q50 = gimple_assign_rhs1 (_a3);
10869 : 8 : _q50 = do_valueize (valueize, _q50);
10870 : 8 : {
10871 : 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
10872 : 8 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN))
10873 : 8 : return true;
10874 : : }
10875 : 0 : break;
10876 : : }
10877 : : default:;
10878 : : }
10879 : : }
10880 : : break;
10881 : : default:;
10882 : : }
10883 : : break;
10884 : : }
10885 : : default:;
10886 : : }
10887 : : }
10888 : : break;
10889 : : default:;
10890 : : }
10891 : : }
10892 : : break;
10893 : 2 : case CFN_BUILT_IN_ROUNDEVENF:
10894 : 2 : if (gimple_call_num_args (_c1) == 1)
10895 : : {
10896 : 2 : tree _q20 = gimple_call_arg (_c1, 0);
10897 : 2 : _q20 = do_valueize (valueize, _q20);
10898 : 2 : switch (TREE_CODE (_q20))
10899 : : {
10900 : 2 : case SSA_NAME:
10901 : 2 : if (gimple *_d2 = get_def (valueize, _q20))
10902 : : {
10903 : 2 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10904 : 2 : switch (gimple_assign_rhs_code (_a2))
10905 : : {
10906 : 2 : CASE_CONVERT:
10907 : 2 : {
10908 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
10909 : 2 : _q30 = do_valueize (valueize, _q30);
10910 : 2 : if (gimple_float16_value_p (_q30, valueize))
10911 : : {
10912 : 2 : {
10913 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10914 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDEVENF, CFN_ROUNDEVEN))
10915 : 2 : return true;
10916 : : }
10917 : : }
10918 : : break;
10919 : : }
10920 : : default:;
10921 : : }
10922 : : }
10923 : : break;
10924 : : default:;
10925 : : }
10926 : : }
10927 : : break;
10928 : 2 : case CFN_BUILT_IN_ROUNDEVENL:
10929 : 2 : if (gimple_call_num_args (_c1) == 1)
10930 : : {
10931 : 2 : tree _q20 = gimple_call_arg (_c1, 0);
10932 : 2 : _q20 = do_valueize (valueize, _q20);
10933 : 2 : switch (TREE_CODE (_q20))
10934 : : {
10935 : 2 : case SSA_NAME:
10936 : 2 : if (gimple *_d2 = get_def (valueize, _q20))
10937 : : {
10938 : 2 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10939 : 2 : switch (gimple_assign_rhs_code (_a2))
10940 : : {
10941 : 2 : CASE_CONVERT:
10942 : 2 : {
10943 : 2 : tree _q30 = gimple_assign_rhs1 (_a2);
10944 : 2 : _q30 = do_valueize (valueize, _q30);
10945 : 2 : if (gimple_float16_value_p (_q30, valueize))
10946 : : {
10947 : 2 : {
10948 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10949 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDEVENL, CFN_ROUNDEVEN))
10950 : 2 : return true;
10951 : : }
10952 : : }
10953 : : break;
10954 : : }
10955 : : default:;
10956 : : }
10957 : : }
10958 : : break;
10959 : : default:;
10960 : : }
10961 : : }
10962 : : break;
10963 : 347 : case CFN_BUILT_IN_TRUNCF:
10964 : 347 : if (gimple_call_num_args (_c1) == 1)
10965 : : {
10966 : 347 : tree _q20 = gimple_call_arg (_c1, 0);
10967 : 347 : _q20 = do_valueize (valueize, _q20);
10968 : 347 : switch (TREE_CODE (_q20))
10969 : : {
10970 : 347 : case SSA_NAME:
10971 : 347 : if (gimple *_d2 = get_def (valueize, _q20))
10972 : : {
10973 : 343 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
10974 : 281 : switch (gimple_assign_rhs_code (_a2))
10975 : : {
10976 : 141 : CASE_CONVERT:
10977 : 141 : {
10978 : 141 : tree _q30 = gimple_assign_rhs1 (_a2);
10979 : 141 : _q30 = do_valueize (valueize, _q30);
10980 : 141 : if (gimple_float16_value_p (_q30, valueize))
10981 : : {
10982 : 40 : {
10983 : 40 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10984 : 40 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF, CFN_TRUNC))
10985 : 2 : return true;
10986 : : }
10987 : : }
10988 : : break;
10989 : : }
10990 : : default:;
10991 : : }
10992 : : }
10993 : : break;
10994 : : default:;
10995 : : }
10996 : : }
10997 : : break;
10998 : 38 : case CFN_BUILT_IN_TRUNCL:
10999 : 38 : if (gimple_call_num_args (_c1) == 1)
11000 : : {
11001 : 38 : tree _q20 = gimple_call_arg (_c1, 0);
11002 : 38 : _q20 = do_valueize (valueize, _q20);
11003 : 38 : switch (TREE_CODE (_q20))
11004 : : {
11005 : 38 : case SSA_NAME:
11006 : 38 : if (gimple *_d2 = get_def (valueize, _q20))
11007 : : {
11008 : 38 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11009 : 38 : switch (gimple_assign_rhs_code (_a2))
11010 : : {
11011 : 38 : CASE_CONVERT:
11012 : 38 : {
11013 : 38 : tree _q30 = gimple_assign_rhs1 (_a2);
11014 : 38 : _q30 = do_valueize (valueize, _q30);
11015 : 38 : if (gimple_float16_value_p (_q30, valueize))
11016 : : {
11017 : 2 : {
11018 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
11019 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL, CFN_TRUNC))
11020 : 2 : return true;
11021 : : }
11022 : : }
11023 : : break;
11024 : : }
11025 : : default:;
11026 : : }
11027 : : }
11028 : : break;
11029 : : default:;
11030 : : }
11031 : : }
11032 : : break;
11033 : 436 : case CFN_BUILT_IN_COPYSIGNF:
11034 : 436 : if (gimple_call_num_args (_c1) == 2)
11035 : : {
11036 : 436 : tree _q20 = gimple_call_arg (_c1, 0);
11037 : 436 : _q20 = do_valueize (valueize, _q20);
11038 : 436 : tree _q21 = gimple_call_arg (_c1, 1);
11039 : 436 : _q21 = do_valueize (valueize, _q21);
11040 : 436 : switch (TREE_CODE (_q20))
11041 : : {
11042 : 436 : case SSA_NAME:
11043 : 436 : if (gimple *_d2 = get_def (valueize, _q20))
11044 : : {
11045 : 436 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11046 : 488 : switch (gimple_assign_rhs_code (_a2))
11047 : : {
11048 : 360 : CASE_CONVERT:
11049 : 360 : {
11050 : 360 : tree _q30 = gimple_assign_rhs1 (_a2);
11051 : 360 : _q30 = do_valueize (valueize, _q30);
11052 : 360 : switch (TREE_CODE (_q21))
11053 : : {
11054 : 360 : case SSA_NAME:
11055 : 360 : if (gimple *_d3 = get_def (valueize, _q21))
11056 : : {
11057 : 354 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11058 : 348 : switch (gimple_assign_rhs_code (_a3))
11059 : : {
11060 : 348 : CASE_CONVERT:
11061 : 348 : {
11062 : 348 : tree _q50 = gimple_assign_rhs1 (_a3);
11063 : 348 : _q50 = do_valueize (valueize, _q50);
11064 : 348 : {
11065 : 348 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
11066 : 348 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF))
11067 : 4 : return true;
11068 : : }
11069 : 344 : break;
11070 : : }
11071 : : default:;
11072 : : }
11073 : : }
11074 : : break;
11075 : : default:;
11076 : : }
11077 : : break;
11078 : : }
11079 : : default:;
11080 : : }
11081 : : }
11082 : : break;
11083 : : default:;
11084 : : }
11085 : : }
11086 : : break;
11087 : 12 : case CFN_BUILT_IN_COPYSIGNL:
11088 : 12 : if (gimple_call_num_args (_c1) == 2)
11089 : : {
11090 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
11091 : 12 : _q20 = do_valueize (valueize, _q20);
11092 : 12 : tree _q21 = gimple_call_arg (_c1, 1);
11093 : 12 : _q21 = do_valueize (valueize, _q21);
11094 : 12 : switch (TREE_CODE (_q20))
11095 : : {
11096 : 12 : case SSA_NAME:
11097 : 12 : if (gimple *_d2 = get_def (valueize, _q20))
11098 : : {
11099 : 12 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11100 : 12 : switch (gimple_assign_rhs_code (_a2))
11101 : : {
11102 : 12 : CASE_CONVERT:
11103 : 12 : {
11104 : 12 : tree _q30 = gimple_assign_rhs1 (_a2);
11105 : 12 : _q30 = do_valueize (valueize, _q30);
11106 : 12 : switch (TREE_CODE (_q21))
11107 : : {
11108 : 12 : case SSA_NAME:
11109 : 12 : if (gimple *_d3 = get_def (valueize, _q21))
11110 : : {
11111 : 12 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11112 : 12 : switch (gimple_assign_rhs_code (_a3))
11113 : : {
11114 : 12 : CASE_CONVERT:
11115 : 12 : {
11116 : 12 : tree _q50 = gimple_assign_rhs1 (_a3);
11117 : 12 : _q50 = do_valueize (valueize, _q50);
11118 : 12 : {
11119 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
11120 : 12 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL))
11121 : 12 : return true;
11122 : : }
11123 : 0 : break;
11124 : : }
11125 : : default:;
11126 : : }
11127 : : }
11128 : : break;
11129 : : default:;
11130 : : }
11131 : : break;
11132 : : }
11133 : : default:;
11134 : : }
11135 : : }
11136 : : break;
11137 : : default:;
11138 : : }
11139 : : }
11140 : : break;
11141 : 530 : case CFN_BUILT_IN_CEILF:
11142 : 530 : if (gimple_call_num_args (_c1) == 1)
11143 : : {
11144 : 530 : tree _q20 = gimple_call_arg (_c1, 0);
11145 : 530 : _q20 = do_valueize (valueize, _q20);
11146 : 530 : switch (TREE_CODE (_q20))
11147 : : {
11148 : 530 : case SSA_NAME:
11149 : 530 : if (gimple *_d2 = get_def (valueize, _q20))
11150 : : {
11151 : 530 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11152 : 478 : switch (gimple_assign_rhs_code (_a2))
11153 : : {
11154 : 130 : CASE_CONVERT:
11155 : 130 : {
11156 : 130 : tree _q30 = gimple_assign_rhs1 (_a2);
11157 : 130 : _q30 = do_valueize (valueize, _q30);
11158 : 130 : if (gimple_float16_value_p (_q30, valueize))
11159 : : {
11160 : 40 : {
11161 : 40 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
11162 : 40 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF, CFN_CEIL))
11163 : 2 : return true;
11164 : : }
11165 : : }
11166 : : break;
11167 : : }
11168 : : default:;
11169 : : }
11170 : : }
11171 : : break;
11172 : : default:;
11173 : : }
11174 : : }
11175 : : break;
11176 : 44 : case CFN_BUILT_IN_CEILL:
11177 : 44 : if (gimple_call_num_args (_c1) == 1)
11178 : : {
11179 : 44 : tree _q20 = gimple_call_arg (_c1, 0);
11180 : 44 : _q20 = do_valueize (valueize, _q20);
11181 : 44 : switch (TREE_CODE (_q20))
11182 : : {
11183 : 44 : case SSA_NAME:
11184 : 44 : if (gimple *_d2 = get_def (valueize, _q20))
11185 : : {
11186 : 44 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11187 : 44 : switch (gimple_assign_rhs_code (_a2))
11188 : : {
11189 : 44 : CASE_CONVERT:
11190 : 44 : {
11191 : 44 : tree _q30 = gimple_assign_rhs1 (_a2);
11192 : 44 : _q30 = do_valueize (valueize, _q30);
11193 : 44 : if (gimple_float16_value_p (_q30, valueize))
11194 : : {
11195 : 2 : {
11196 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
11197 : 2 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILL, CFN_CEIL))
11198 : 2 : return true;
11199 : : }
11200 : : }
11201 : : break;
11202 : : }
11203 : : default:;
11204 : : }
11205 : : }
11206 : : break;
11207 : : default:;
11208 : : }
11209 : : }
11210 : : break;
11211 : 0 : case CFN_COPYSIGN:
11212 : 0 : if (gimple_call_num_args (_c1) == 2)
11213 : : {
11214 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
11215 : 0 : _q20 = do_valueize (valueize, _q20);
11216 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
11217 : 0 : _q21 = do_valueize (valueize, _q21);
11218 : 0 : switch (TREE_CODE (_q20))
11219 : : {
11220 : 0 : case SSA_NAME:
11221 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
11222 : : {
11223 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11224 : 0 : switch (gimple_assign_rhs_code (_a2))
11225 : : {
11226 : 0 : CASE_CONVERT:
11227 : 0 : {
11228 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
11229 : 0 : _q30 = do_valueize (valueize, _q30);
11230 : 0 : switch (TREE_CODE (_q21))
11231 : : {
11232 : 0 : case SSA_NAME:
11233 : 0 : if (gimple *_d3 = get_def (valueize, _q21))
11234 : : {
11235 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11236 : 0 : switch (gimple_assign_rhs_code (_a3))
11237 : : {
11238 : 0 : CASE_CONVERT:
11239 : 0 : {
11240 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
11241 : 0 : _q50 = do_valueize (valueize, _q50);
11242 : 0 : {
11243 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q50 };
11244 : 0 : if (gimple_simplify_515 (res_op, seq, valueize, type, captures, CFN_COPYSIGN))
11245 : 0 : return true;
11246 : : }
11247 : 0 : break;
11248 : : }
11249 : : default:;
11250 : : }
11251 : : }
11252 : : break;
11253 : : default:;
11254 : : }
11255 : : break;
11256 : : }
11257 : : default:;
11258 : : }
11259 : : }
11260 : : break;
11261 : : default:;
11262 : : }
11263 : : }
11264 : : break;
11265 : 398 : case CFN_BUILT_IN_FLOOR:
11266 : 398 : if (gimple_call_num_args (_c1) == 1)
11267 : : {
11268 : 398 : tree _q20 = gimple_call_arg (_c1, 0);
11269 : 398 : _q20 = do_valueize (valueize, _q20);
11270 : 398 : switch (TREE_CODE (_q20))
11271 : : {
11272 : 398 : case SSA_NAME:
11273 : 398 : if (gimple *_d2 = get_def (valueize, _q20))
11274 : : {
11275 : 397 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11276 : 414 : switch (gimple_assign_rhs_code (_a2))
11277 : : {
11278 : 185 : CASE_CONVERT:
11279 : 185 : {
11280 : 185 : tree _q30 = gimple_assign_rhs1 (_a2);
11281 : 185 : _q30 = do_valueize (valueize, _q30);
11282 : 185 : if (gimple_float16_value_p (_q30, valueize))
11283 : : {
11284 : 8 : {
11285 : 8 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
11286 : 8 : if (gimple_simplify_514 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOOR, CFN_FLOOR))
11287 : 8 : return true;
11288 : : }
11289 : : }
11290 : : break;
11291 : : }
11292 : : default:;
11293 : : }
11294 : : }
11295 : : break;
11296 : : default:;
11297 : : }
11298 : : }
11299 : : break;
11300 : : default:;
11301 : : }
11302 : : }
11303 : : break;
11304 : : default:;
11305 : : }
11306 : : return false;
11307 : : }
11308 : :
11309 : : bool
11310 : 2730627 : gimple_simplify_POINTER_DIFF_EXPR (gimple_match_op *res_op, gimple_seq *seq,
11311 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
11312 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
11313 : : {
11314 : 2730627 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11315 : 2730627 : if (integer_zerop (_p1))
11316 : : {
11317 : 28901 : {
11318 : 28901 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11319 : 28901 : gimple_seq *lseq = seq;
11320 : 28901 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2278;
11321 : 28901 : {
11322 : 28901 : res_op->set_op (NOP_EXPR, type, 1);
11323 : 28901 : res_op->ops[0] = captures[0];
11324 : 28901 : res_op->resimplify (lseq, valueize);
11325 : 28901 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1115, __FILE__, __LINE__, true);
11326 : 28901 : return true;
11327 : : }
11328 : 0 : next_after_fail2278:;
11329 : : }
11330 : : }
11331 : 2701726 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _p0, 0))
11332 : : {
11333 : 17404 : {
11334 : 17404 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p0 };
11335 : 17404 : gimple_seq *lseq = seq;
11336 : 17404 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2279;
11337 : 17404 : {
11338 : 17404 : tree tem;
11339 : 17404 : tem = build_zero_cst (type);
11340 : 17404 : res_op->set_value (tem);
11341 : 17404 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1116, __FILE__, __LINE__, true);
11342 : 17404 : return true;
11343 : : }
11344 : 0 : next_after_fail2279:;
11345 : : }
11346 : : }
11347 : 2684322 : switch (TREE_CODE (_p0))
11348 : : {
11349 : 2566042 : case SSA_NAME:
11350 : 2566042 : if (gimple *_d1 = get_def (valueize, _p0))
11351 : : {
11352 : 1791136 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11353 : 2502299 : switch (gimple_assign_rhs_code (_a1))
11354 : : {
11355 : 136105 : case POINTER_PLUS_EXPR:
11356 : 136105 : {
11357 : 136105 : tree _q20 = gimple_assign_rhs1 (_a1);
11358 : 136105 : _q20 = do_valueize (valueize, _q20);
11359 : 136105 : tree _q21 = gimple_assign_rhs2 (_a1);
11360 : 136105 : _q21 = do_valueize (valueize, _q21);
11361 : 136105 : switch (TREE_CODE (_p1))
11362 : : {
11363 : 117244 : case SSA_NAME:
11364 : 117244 : if (gimple *_d2 = get_def (valueize, _p1))
11365 : : {
11366 : 113578 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11367 : 132163 : switch (gimple_assign_rhs_code (_a2))
11368 : : {
11369 : 21658 : case POINTER_PLUS_EXPR:
11370 : 21658 : {
11371 : 21658 : tree _q50 = gimple_assign_rhs1 (_a2);
11372 : 21658 : _q50 = do_valueize (valueize, _q50);
11373 : 21658 : tree _q51 = gimple_assign_rhs2 (_a2);
11374 : 21658 : _q51 = do_valueize (valueize, _q51);
11375 : 21658 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11376 : : {
11377 : 381 : {
11378 : 381 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
11379 : 381 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
11380 : : )
11381 : : {
11382 : 381 : gimple_seq *lseq = seq;
11383 : 381 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2280;
11384 : 381 : {
11385 : 381 : res_op->set_op (NOP_EXPR, type, 1);
11386 : 381 : {
11387 : 381 : tree _o1[2], _r1;
11388 : 381 : _o1[0] = captures[1];
11389 : 381 : _o1[1] = captures[2];
11390 : 381 : (*res_op).set_op (MINUS_EXPR, TREE_TYPE (_o1[0]), 2);
11391 : 381 : (*res_op).ops[0] = _o1[0];
11392 : 381 : (*res_op).ops[1] = _o1[1];
11393 : 381 : (*res_op).resimplify (lseq, valueize);
11394 : : }
11395 : 381 : if (type != res_op->type
11396 : 381 : && !useless_type_conversion_p (type, res_op->type))
11397 : : {
11398 : 381 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2280;
11399 : 205 : res_op->set_op (NOP_EXPR, type, 1);
11400 : 205 : res_op->resimplify (lseq, valueize);
11401 : : }
11402 : 205 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1117, __FILE__, __LINE__, true);
11403 : 205 : return true;
11404 : : }
11405 : 176 : next_after_fail2280:;
11406 : : }
11407 : : }
11408 : : }
11409 : : break;
11410 : : }
11411 : : default:;
11412 : : }
11413 : : }
11414 : : break;
11415 : : default:;
11416 : : }
11417 : : break;
11418 : : }
11419 : 10044 : CASE_CONVERT:
11420 : 10044 : {
11421 : 10044 : tree _q20 = gimple_assign_rhs1 (_a1);
11422 : 10044 : _q20 = do_valueize (valueize, _q20);
11423 : 10044 : switch (TREE_CODE (_q20))
11424 : : {
11425 : 10044 : case SSA_NAME:
11426 : 10044 : if (gimple *_d2 = get_def (valueize, _q20))
11427 : : {
11428 : 9972 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11429 : 11329 : switch (gimple_assign_rhs_code (_a2))
11430 : : {
11431 : 0 : case ADDR_EXPR:
11432 : 0 : {
11433 : 0 : switch (TREE_CODE (_p1))
11434 : : {
11435 : 0 : case SSA_NAME:
11436 : 0 : if (gimple *_d3 = get_def (valueize, _p1))
11437 : : {
11438 : 0 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11439 : 0 : switch (gimple_assign_rhs_code (_a3))
11440 : : {
11441 : 0 : CASE_CONVERT:
11442 : 0 : {
11443 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
11444 : 0 : _q40 = do_valueize (valueize, _q40);
11445 : 0 : {
11446 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11447 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11448 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11449 : : )
11450 : : {
11451 : 0 : {
11452 : 0 : poly_int64 diff;
11453 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11454 : : )
11455 : : {
11456 : 0 : gimple_seq *lseq = seq;
11457 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2281;
11458 : 0 : {
11459 : 0 : tree tem;
11460 : 0 : tem = build_int_cst_type (type, diff);
11461 : 0 : res_op->set_value (tem);
11462 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11463 : 0 : return true;
11464 : : }
11465 : 0 : next_after_fail2281:;
11466 : : }
11467 : : }
11468 : : }
11469 : : }
11470 : 0 : break;
11471 : : }
11472 : : default:;
11473 : : }
11474 : : }
11475 : : break;
11476 : 0 : default:;
11477 : : }
11478 : 0 : {
11479 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
11480 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11481 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11482 : : )
11483 : : {
11484 : 0 : {
11485 : 0 : poly_int64 diff;
11486 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11487 : : )
11488 : : {
11489 : 0 : gimple_seq *lseq = seq;
11490 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2282;
11491 : 0 : {
11492 : 0 : tree tem;
11493 : 0 : tem = build_int_cst_type (type, diff);
11494 : 0 : res_op->set_value (tem);
11495 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11496 : 0 : return true;
11497 : : }
11498 : 0 : next_after_fail2282:;
11499 : : }
11500 : : }
11501 : : }
11502 : : }
11503 : 0 : break;
11504 : : }
11505 : : default:;
11506 : : }
11507 : : }
11508 : : break;
11509 : 0 : case ADDR_EXPR:
11510 : 0 : {
11511 : 0 : switch (TREE_CODE (_p1))
11512 : : {
11513 : 0 : case SSA_NAME:
11514 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
11515 : : {
11516 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11517 : 0 : switch (gimple_assign_rhs_code (_a2))
11518 : : {
11519 : 0 : CASE_CONVERT:
11520 : 0 : {
11521 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
11522 : 0 : _q40 = do_valueize (valueize, _q40);
11523 : 0 : {
11524 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11525 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11526 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11527 : : )
11528 : : {
11529 : 0 : {
11530 : 0 : poly_int64 diff;
11531 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11532 : : )
11533 : : {
11534 : 0 : gimple_seq *lseq = seq;
11535 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2283;
11536 : 0 : {
11537 : 0 : tree tem;
11538 : 0 : tem = build_int_cst_type (type, diff);
11539 : 0 : res_op->set_value (tem);
11540 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11541 : 0 : return true;
11542 : : }
11543 : 0 : next_after_fail2283:;
11544 : : }
11545 : : }
11546 : : }
11547 : : }
11548 : 0 : break;
11549 : : }
11550 : : default:;
11551 : : }
11552 : : }
11553 : : break;
11554 : 0 : default:;
11555 : : }
11556 : 0 : {
11557 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
11558 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11559 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11560 : : )
11561 : : {
11562 : 0 : {
11563 : 0 : poly_int64 diff;
11564 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11565 : : )
11566 : : {
11567 : 0 : gimple_seq *lseq = seq;
11568 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2284;
11569 : 0 : {
11570 : 0 : tree tem;
11571 : 0 : tem = build_int_cst_type (type, diff);
11572 : 0 : res_op->set_value (tem);
11573 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11574 : 0 : return true;
11575 : : }
11576 : 0 : next_after_fail2284:;
11577 : : }
11578 : : }
11579 : : }
11580 : : }
11581 : 0 : break;
11582 : : }
11583 : 10044 : default:;
11584 : : }
11585 : 10044 : switch (TREE_CODE (_p1))
11586 : : {
11587 : 9758 : case SSA_NAME:
11588 : 9758 : if (gimple *_d2 = get_def (valueize, _p1))
11589 : : {
11590 : 9291 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11591 : 7996 : switch (gimple_assign_rhs_code (_a2))
11592 : : {
11593 : 6700 : CASE_CONVERT:
11594 : 6700 : {
11595 : 6700 : tree _q40 = gimple_assign_rhs1 (_a2);
11596 : 6700 : _q40 = do_valueize (valueize, _q40);
11597 : 6700 : switch (TREE_CODE (_q40))
11598 : : {
11599 : 6700 : case SSA_NAME:
11600 : 6700 : if (gimple *_d3 = get_def (valueize, _q40))
11601 : : {
11602 : 6468 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
11603 : 7573 : switch (gimple_assign_rhs_code (_a3))
11604 : : {
11605 : 0 : case ADDR_EXPR:
11606 : 0 : {
11607 : 0 : {
11608 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11609 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11610 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11611 : : )
11612 : : {
11613 : 0 : {
11614 : 0 : poly_int64 diff;
11615 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11616 : : )
11617 : : {
11618 : 0 : gimple_seq *lseq = seq;
11619 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2285;
11620 : 0 : {
11621 : 0 : tree tem;
11622 : 0 : tem = build_int_cst_type (type, diff);
11623 : 0 : res_op->set_value (tem);
11624 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11625 : 0 : return true;
11626 : : }
11627 : 0 : next_after_fail2285:;
11628 : : }
11629 : : }
11630 : : }
11631 : : }
11632 : 0 : break;
11633 : : }
11634 : : default:;
11635 : : }
11636 : : }
11637 : : break;
11638 : 0 : case ADDR_EXPR:
11639 : 0 : {
11640 : 0 : {
11641 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11642 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11643 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11644 : : )
11645 : : {
11646 : 0 : {
11647 : 0 : poly_int64 diff;
11648 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11649 : : )
11650 : : {
11651 : 0 : gimple_seq *lseq = seq;
11652 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2286;
11653 : 0 : {
11654 : 0 : tree tem;
11655 : 0 : tem = build_int_cst_type (type, diff);
11656 : 0 : res_op->set_value (tem);
11657 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11658 : 0 : return true;
11659 : : }
11660 : 0 : next_after_fail2286:;
11661 : : }
11662 : : }
11663 : : }
11664 : : }
11665 : 0 : break;
11666 : : }
11667 : : default:;
11668 : : }
11669 : : break;
11670 : : }
11671 : 4 : case ADDR_EXPR:
11672 : 4 : {
11673 : 4 : {
11674 : 4 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
11675 : 4 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11676 : 4 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11677 : : )
11678 : : {
11679 : 4 : {
11680 : 4 : poly_int64 diff;
11681 : 4 : if (ptr_difference_const (captures[1], captures[3], &diff)
11682 : : )
11683 : : {
11684 : 0 : gimple_seq *lseq = seq;
11685 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2287;
11686 : 0 : {
11687 : 0 : tree tem;
11688 : 0 : tem = build_int_cst_type (type, diff);
11689 : 0 : res_op->set_value (tem);
11690 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11691 : 0 : return true;
11692 : : }
11693 : 0 : next_after_fail2287:;
11694 : : }
11695 : : }
11696 : : }
11697 : : }
11698 : 4 : break;
11699 : : }
11700 : : default:;
11701 : : }
11702 : : }
11703 : : break;
11704 : 286 : case ADDR_EXPR:
11705 : 286 : {
11706 : 286 : {
11707 : 286 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
11708 : 286 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11709 : 286 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11710 : : )
11711 : : {
11712 : 286 : {
11713 : 286 : poly_int64 diff;
11714 : 286 : if (ptr_difference_const (captures[1], captures[3], &diff)
11715 : : )
11716 : : {
11717 : 0 : gimple_seq *lseq = seq;
11718 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2288;
11719 : 0 : {
11720 : 0 : tree tem;
11721 : 0 : tem = build_int_cst_type (type, diff);
11722 : 0 : res_op->set_value (tem);
11723 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11724 : 0 : return true;
11725 : : }
11726 : 0 : next_after_fail2288:;
11727 : : }
11728 : : }
11729 : : }
11730 : : }
11731 : 286 : break;
11732 : : }
11733 : : default:;
11734 : : }
11735 : : break;
11736 : : }
11737 : 241 : case ADDR_EXPR:
11738 : 241 : {
11739 : 241 : switch (TREE_CODE (_p1))
11740 : : {
11741 : 237 : case SSA_NAME:
11742 : 237 : if (gimple *_d2 = get_def (valueize, _p1))
11743 : : {
11744 : 226 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11745 : 332 : switch (gimple_assign_rhs_code (_a2))
11746 : : {
11747 : 0 : CASE_CONVERT:
11748 : 0 : {
11749 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
11750 : 0 : _q30 = do_valueize (valueize, _q30);
11751 : 0 : {
11752 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
11753 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11754 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11755 : : )
11756 : : {
11757 : 0 : {
11758 : 0 : poly_int64 diff;
11759 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11760 : : )
11761 : : {
11762 : 0 : gimple_seq *lseq = seq;
11763 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2289;
11764 : 0 : {
11765 : 0 : tree tem;
11766 : 0 : tem = build_int_cst_type (type, diff);
11767 : 0 : res_op->set_value (tem);
11768 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11769 : 0 : return true;
11770 : : }
11771 : 0 : next_after_fail2289:;
11772 : : }
11773 : : }
11774 : : }
11775 : : }
11776 : 0 : break;
11777 : : }
11778 : : default:;
11779 : : }
11780 : : }
11781 : : break;
11782 : 241 : default:;
11783 : : }
11784 : 241 : {
11785 : 241 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
11786 : 241 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11787 : 241 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11788 : : )
11789 : : {
11790 : 241 : {
11791 : 241 : poly_int64 diff;
11792 : 241 : if (ptr_difference_const (captures[1], captures[3], &diff)
11793 : : )
11794 : : {
11795 : 78 : gimple_seq *lseq = seq;
11796 : 78 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2290;
11797 : 78 : {
11798 : 78 : tree tem;
11799 : 78 : tem = build_int_cst_type (type, diff);
11800 : 78 : res_op->set_value (tem);
11801 : 78 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11802 : 78 : return true;
11803 : : }
11804 : 0 : next_after_fail2290:;
11805 : : }
11806 : : }
11807 : : }
11808 : : }
11809 : 163 : break;
11810 : : }
11811 : : default:;
11812 : : }
11813 : : }
11814 : : break;
11815 : 92979 : case ADDR_EXPR:
11816 : 92979 : {
11817 : 92979 : switch (TREE_CODE (_p1))
11818 : : {
11819 : 49029 : case SSA_NAME:
11820 : 49029 : if (gimple *_d1 = get_def (valueize, _p1))
11821 : : {
11822 : 30487 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11823 : 9898 : switch (gimple_assign_rhs_code (_a1))
11824 : : {
11825 : 32 : CASE_CONVERT:
11826 : 32 : {
11827 : 32 : tree _q30 = gimple_assign_rhs1 (_a1);
11828 : 32 : _q30 = do_valueize (valueize, _q30);
11829 : 32 : {
11830 : 32 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
11831 : 32 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11832 : 32 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11833 : : )
11834 : : {
11835 : 32 : {
11836 : 32 : poly_int64 diff;
11837 : 32 : if (ptr_difference_const (captures[1], captures[3], &diff)
11838 : : )
11839 : : {
11840 : 0 : gimple_seq *lseq = seq;
11841 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2291;
11842 : 0 : {
11843 : 0 : tree tem;
11844 : 0 : tem = build_int_cst_type (type, diff);
11845 : 0 : res_op->set_value (tem);
11846 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11847 : 0 : return true;
11848 : : }
11849 : 0 : next_after_fail2291:;
11850 : : }
11851 : : }
11852 : : }
11853 : : }
11854 : 32 : break;
11855 : : }
11856 : : default:;
11857 : : }
11858 : : }
11859 : : break;
11860 : 92979 : default:;
11861 : : }
11862 : 92979 : {
11863 : 92979 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
11864 : 92979 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11865 : 92979 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11866 : : )
11867 : : {
11868 : 92979 : {
11869 : 92979 : poly_int64 diff;
11870 : 92979 : if (ptr_difference_const (captures[1], captures[3], &diff)
11871 : : )
11872 : : {
11873 : 41307 : gimple_seq *lseq = seq;
11874 : 41307 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2292;
11875 : 41307 : {
11876 : 41307 : tree tem;
11877 : 41307 : tem = build_int_cst_type (type, diff);
11878 : 41307 : res_op->set_value (tem);
11879 : 41307 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11880 : 41307 : return true;
11881 : : }
11882 : 0 : next_after_fail2292:;
11883 : : }
11884 : : }
11885 : : }
11886 : : }
11887 : 51672 : break;
11888 : : }
11889 : 2642732 : default:;
11890 : : }
11891 : 2642732 : switch (TREE_CODE (_p1))
11892 : : {
11893 : 2455890 : case SSA_NAME:
11894 : 2455890 : if (gimple *_d1 = get_def (valueize, _p1))
11895 : : {
11896 : 1664216 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
11897 : 2502359 : switch (gimple_assign_rhs_code (_a1))
11898 : : {
11899 : 10417 : CASE_CONVERT:
11900 : 10417 : {
11901 : 10417 : tree _q30 = gimple_assign_rhs1 (_a1);
11902 : 10417 : _q30 = do_valueize (valueize, _q30);
11903 : 10417 : switch (TREE_CODE (_q30))
11904 : : {
11905 : 10417 : case SSA_NAME:
11906 : 10417 : if (gimple *_d2 = get_def (valueize, _q30))
11907 : : {
11908 : 10150 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
11909 : 12662 : switch (gimple_assign_rhs_code (_a2))
11910 : : {
11911 : 0 : case ADDR_EXPR:
11912 : 0 : {
11913 : 0 : {
11914 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
11915 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11916 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11917 : : )
11918 : : {
11919 : 0 : {
11920 : 0 : poly_int64 diff;
11921 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11922 : : )
11923 : : {
11924 : 0 : gimple_seq *lseq = seq;
11925 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2293;
11926 : 0 : {
11927 : 0 : tree tem;
11928 : 0 : tem = build_int_cst_type (type, diff);
11929 : 0 : res_op->set_value (tem);
11930 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11931 : 0 : return true;
11932 : : }
11933 : 0 : next_after_fail2293:;
11934 : : }
11935 : : }
11936 : : }
11937 : : }
11938 : 0 : break;
11939 : : }
11940 : : default:;
11941 : : }
11942 : : }
11943 : : break;
11944 : 0 : case ADDR_EXPR:
11945 : 0 : {
11946 : 0 : {
11947 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
11948 : 0 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11949 : 0 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11950 : : )
11951 : : {
11952 : 0 : {
11953 : 0 : poly_int64 diff;
11954 : 0 : if (ptr_difference_const (captures[1], captures[3], &diff)
11955 : : )
11956 : : {
11957 : 0 : gimple_seq *lseq = seq;
11958 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2294;
11959 : 0 : {
11960 : 0 : tree tem;
11961 : 0 : tem = build_int_cst_type (type, diff);
11962 : 0 : res_op->set_value (tem);
11963 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11964 : 0 : return true;
11965 : : }
11966 : 0 : next_after_fail2294:;
11967 : : }
11968 : : }
11969 : : }
11970 : : }
11971 : 0 : break;
11972 : : }
11973 : : default:;
11974 : : }
11975 : : break;
11976 : : }
11977 : 2763 : case ADDR_EXPR:
11978 : 2763 : {
11979 : 2763 : {
11980 : 2763 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
11981 : 2763 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
11982 : 2763 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
11983 : : )
11984 : : {
11985 : 2763 : {
11986 : 2763 : poly_int64 diff;
11987 : 2763 : if (ptr_difference_const (captures[1], captures[3], &diff)
11988 : : )
11989 : : {
11990 : 0 : gimple_seq *lseq = seq;
11991 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2295;
11992 : 0 : {
11993 : 0 : tree tem;
11994 : 0 : tem = build_int_cst_type (type, diff);
11995 : 0 : res_op->set_value (tem);
11996 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11997 : 0 : return true;
11998 : : }
11999 : 0 : next_after_fail2295:;
12000 : : }
12001 : : }
12002 : : }
12003 : : }
12004 : 2763 : break;
12005 : : }
12006 : : default:;
12007 : : }
12008 : : }
12009 : : break;
12010 : 160084 : case ADDR_EXPR:
12011 : 160084 : {
12012 : 160084 : {
12013 : 160084 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
12014 : 160084 : if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1]))
12015 : 160084 : && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))
12016 : : )
12017 : : {
12018 : 160084 : {
12019 : 160084 : poly_int64 diff;
12020 : 160084 : if (ptr_difference_const (captures[1], captures[3], &diff)
12021 : : )
12022 : : {
12023 : 1 : gimple_seq *lseq = seq;
12024 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2296;
12025 : 1 : {
12026 : 1 : tree tem;
12027 : 1 : tem = build_int_cst_type (type, diff);
12028 : 1 : res_op->set_value (tem);
12029 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
12030 : 1 : return true;
12031 : : }
12032 : 0 : next_after_fail2296:;
12033 : : }
12034 : : }
12035 : : }
12036 : : }
12037 : 160083 : break;
12038 : : }
12039 : 2642731 : default:;
12040 : : }
12041 : 2642731 : switch (TREE_CODE (_p0))
12042 : : {
12043 : 2565758 : case SSA_NAME:
12044 : 2565758 : if (gimple *_d1 = get_def (valueize, _p0))
12045 : : {
12046 : 1790853 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12047 : 2501938 : switch (gimple_assign_rhs_code (_a1))
12048 : : {
12049 : 135900 : case POINTER_PLUS_EXPR:
12050 : 135900 : {
12051 : 135900 : tree _q20 = gimple_assign_rhs1 (_a1);
12052 : 135900 : _q20 = do_valueize (valueize, _q20);
12053 : 135900 : tree _q21 = gimple_assign_rhs2 (_a1);
12054 : 135900 : _q21 = do_valueize (valueize, _q21);
12055 : 135900 : switch (TREE_CODE (_q20))
12056 : : {
12057 : 121921 : case SSA_NAME:
12058 : 121921 : if (gimple *_d2 = get_def (valueize, _q20))
12059 : : {
12060 : 117026 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12061 : 151727 : switch (gimple_assign_rhs_code (_a2))
12062 : : {
12063 : 947 : case ADDR_EXPR:
12064 : 947 : {
12065 : 947 : switch (TREE_CODE (_p1))
12066 : : {
12067 : 947 : case SSA_NAME:
12068 : 947 : if (gimple *_d3 = get_def (valueize, _p1))
12069 : : {
12070 : 931 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12071 : 1854 : switch (gimple_assign_rhs_code (_a3))
12072 : : {
12073 : 8 : case POINTER_PLUS_EXPR:
12074 : 8 : {
12075 : 8 : tree _q50 = gimple_assign_rhs1 (_a3);
12076 : 8 : _q50 = do_valueize (valueize, _q50);
12077 : 8 : tree _q51 = gimple_assign_rhs2 (_a3);
12078 : 8 : _q51 = do_valueize (valueize, _q51);
12079 : 8 : switch (TREE_CODE (_q50))
12080 : : {
12081 : 8 : case SSA_NAME:
12082 : 8 : if (gimple *_d4 = get_def (valueize, _q50))
12083 : : {
12084 : 8 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
12085 : 16 : switch (gimple_assign_rhs_code (_a4))
12086 : : {
12087 : 8 : case ADDR_EXPR:
12088 : 8 : {
12089 : 8 : {
12090 : 8 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
12091 : 8 : {
12092 : 8 : poly_int64 diff;
12093 : 8 : if (ptr_difference_const (captures[0], captures[2], &diff)
12094 : : )
12095 : : {
12096 : 8 : gimple_seq *lseq = seq;
12097 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2297;
12098 : 8 : {
12099 : 8 : res_op->set_op (PLUS_EXPR, type, 2);
12100 : 8 : res_op->ops[0] = build_int_cst_type (type, diff);
12101 : 8 : {
12102 : 8 : tree _r1;
12103 : 8 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
12104 : 8 : {
12105 : 8 : tree _o2[2], _r2;
12106 : 8 : _o2[0] = captures[1];
12107 : 8 : _o2[1] = captures[3];
12108 : 8 : tem_op.set_op (MINUS_EXPR, TREE_TYPE (_o2[0]), 2);
12109 : 8 : tem_op.ops[0] = _o2[0];
12110 : 8 : tem_op.ops[1] = _o2[1];
12111 : 8 : tem_op.resimplify (lseq, valueize);
12112 : : }
12113 : 8 : if (type != tem_op.type
12114 : 8 : && !useless_type_conversion_p (type, tem_op.type))
12115 : : {
12116 : 8 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12117 : 8 : if (!_r1) goto next_after_fail2297;
12118 : 4 : tem_op.set_op (NOP_EXPR, type, 1);
12119 : 4 : tem_op.ops[0] = _r1;
12120 : 4 : tem_op.resimplify (lseq, valueize);
12121 : : }
12122 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12123 : 4 : if (!_r1) goto next_after_fail2297;
12124 : 4 : res_op->ops[1] = _r1;
12125 : : }
12126 : 4 : res_op->resimplify (lseq, valueize);
12127 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1120, __FILE__, __LINE__, true);
12128 : 4 : return true;
12129 : : }
12130 : 4 : next_after_fail2297:;
12131 : : }
12132 : : }
12133 : : }
12134 : 4 : break;
12135 : : }
12136 : : default:;
12137 : : }
12138 : : }
12139 : : break;
12140 : 0 : case ADDR_EXPR:
12141 : 0 : {
12142 : 0 : {
12143 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
12144 : 0 : {
12145 : 0 : poly_int64 diff;
12146 : 0 : if (ptr_difference_const (captures[0], captures[2], &diff)
12147 : : )
12148 : : {
12149 : 0 : gimple_seq *lseq = seq;
12150 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2298;
12151 : 0 : {
12152 : 0 : res_op->set_op (PLUS_EXPR, type, 2);
12153 : 0 : res_op->ops[0] = build_int_cst_type (type, diff);
12154 : 0 : {
12155 : 0 : tree _r1;
12156 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
12157 : 0 : {
12158 : 0 : tree _o2[2], _r2;
12159 : 0 : _o2[0] = captures[1];
12160 : 0 : _o2[1] = captures[3];
12161 : 0 : tem_op.set_op (MINUS_EXPR, TREE_TYPE (_o2[0]), 2);
12162 : 0 : tem_op.ops[0] = _o2[0];
12163 : 0 : tem_op.ops[1] = _o2[1];
12164 : 0 : tem_op.resimplify (lseq, valueize);
12165 : : }
12166 : 0 : if (type != tem_op.type
12167 : 0 : && !useless_type_conversion_p (type, tem_op.type))
12168 : : {
12169 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12170 : 0 : if (!_r1) goto next_after_fail2298;
12171 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
12172 : 0 : tem_op.ops[0] = _r1;
12173 : 0 : tem_op.resimplify (lseq, valueize);
12174 : : }
12175 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12176 : 0 : if (!_r1) goto next_after_fail2298;
12177 : 0 : res_op->ops[1] = _r1;
12178 : : }
12179 : 0 : res_op->resimplify (lseq, valueize);
12180 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1120, __FILE__, __LINE__, true);
12181 : 0 : return true;
12182 : : }
12183 : 0 : next_after_fail2298:;
12184 : : }
12185 : : }
12186 : : }
12187 : 0 : break;
12188 : : }
12189 : : default:;
12190 : : }
12191 : : break;
12192 : : }
12193 : : default:;
12194 : : }
12195 : : }
12196 : : break;
12197 : : default:;
12198 : : }
12199 : : break;
12200 : : }
12201 : : default:;
12202 : : }
12203 : : }
12204 : : break;
12205 : 13979 : case ADDR_EXPR:
12206 : 13979 : {
12207 : 13979 : switch (TREE_CODE (_p1))
12208 : : {
12209 : 261 : case SSA_NAME:
12210 : 261 : if (gimple *_d2 = get_def (valueize, _p1))
12211 : : {
12212 : 235 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12213 : 229 : switch (gimple_assign_rhs_code (_a2))
12214 : : {
12215 : 95 : case POINTER_PLUS_EXPR:
12216 : 95 : {
12217 : 95 : tree _q50 = gimple_assign_rhs1 (_a2);
12218 : 95 : _q50 = do_valueize (valueize, _q50);
12219 : 95 : tree _q51 = gimple_assign_rhs2 (_a2);
12220 : 95 : _q51 = do_valueize (valueize, _q51);
12221 : 95 : switch (TREE_CODE (_q50))
12222 : : {
12223 : 92 : case SSA_NAME:
12224 : 92 : if (gimple *_d3 = get_def (valueize, _q50))
12225 : : {
12226 : 92 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
12227 : 17 : switch (gimple_assign_rhs_code (_a3))
12228 : : {
12229 : 0 : case ADDR_EXPR:
12230 : 0 : {
12231 : 0 : {
12232 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
12233 : 0 : {
12234 : 0 : poly_int64 diff;
12235 : 0 : if (ptr_difference_const (captures[0], captures[2], &diff)
12236 : : )
12237 : : {
12238 : 0 : gimple_seq *lseq = seq;
12239 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2299;
12240 : 0 : {
12241 : 0 : res_op->set_op (PLUS_EXPR, type, 2);
12242 : 0 : res_op->ops[0] = build_int_cst_type (type, diff);
12243 : 0 : {
12244 : 0 : tree _r1;
12245 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
12246 : 0 : {
12247 : 0 : tree _o2[2], _r2;
12248 : 0 : _o2[0] = captures[1];
12249 : 0 : _o2[1] = captures[3];
12250 : 0 : tem_op.set_op (MINUS_EXPR, TREE_TYPE (_o2[0]), 2);
12251 : 0 : tem_op.ops[0] = _o2[0];
12252 : 0 : tem_op.ops[1] = _o2[1];
12253 : 0 : tem_op.resimplify (lseq, valueize);
12254 : : }
12255 : 0 : if (type != tem_op.type
12256 : 0 : && !useless_type_conversion_p (type, tem_op.type))
12257 : : {
12258 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12259 : 0 : if (!_r1) goto next_after_fail2299;
12260 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
12261 : 0 : tem_op.ops[0] = _r1;
12262 : 0 : tem_op.resimplify (lseq, valueize);
12263 : : }
12264 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12265 : 0 : if (!_r1) goto next_after_fail2299;
12266 : 0 : res_op->ops[1] = _r1;
12267 : : }
12268 : 0 : res_op->resimplify (lseq, valueize);
12269 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1120, __FILE__, __LINE__, true);
12270 : 0 : return true;
12271 : : }
12272 : 0 : next_after_fail2299:;
12273 : : }
12274 : : }
12275 : : }
12276 : 0 : break;
12277 : : }
12278 : : default:;
12279 : : }
12280 : : }
12281 : : break;
12282 : 3 : case ADDR_EXPR:
12283 : 3 : {
12284 : 3 : {
12285 : 3 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
12286 : 3 : {
12287 : 3 : poly_int64 diff;
12288 : 3 : if (ptr_difference_const (captures[0], captures[2], &diff)
12289 : : )
12290 : : {
12291 : 3 : gimple_seq *lseq = seq;
12292 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2300;
12293 : 3 : {
12294 : 3 : res_op->set_op (PLUS_EXPR, type, 2);
12295 : 3 : res_op->ops[0] = build_int_cst_type (type, diff);
12296 : 3 : {
12297 : 3 : tree _r1;
12298 : 3 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
12299 : 3 : {
12300 : 3 : tree _o2[2], _r2;
12301 : 3 : _o2[0] = captures[1];
12302 : 3 : _o2[1] = captures[3];
12303 : 3 : tem_op.set_op (MINUS_EXPR, TREE_TYPE (_o2[0]), 2);
12304 : 3 : tem_op.ops[0] = _o2[0];
12305 : 3 : tem_op.ops[1] = _o2[1];
12306 : 3 : tem_op.resimplify (lseq, valueize);
12307 : : }
12308 : 3 : if (type != tem_op.type
12309 : 3 : && !useless_type_conversion_p (type, tem_op.type))
12310 : : {
12311 : 3 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12312 : 3 : if (!_r1) goto next_after_fail2300;
12313 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
12314 : 0 : tem_op.ops[0] = _r1;
12315 : 0 : tem_op.resimplify (lseq, valueize);
12316 : : }
12317 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12318 : 0 : if (!_r1) goto next_after_fail2300;
12319 : 0 : res_op->ops[1] = _r1;
12320 : : }
12321 : 0 : res_op->resimplify (lseq, valueize);
12322 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1120, __FILE__, __LINE__, true);
12323 : 0 : return true;
12324 : : }
12325 : 3 : next_after_fail2300:;
12326 : : }
12327 : : }
12328 : : }
12329 : 3 : break;
12330 : : }
12331 : : default:;
12332 : : }
12333 : : break;
12334 : : }
12335 : : default:;
12336 : : }
12337 : : }
12338 : : break;
12339 : : default:;
12340 : : }
12341 : : break;
12342 : : }
12343 : 135896 : default:;
12344 : : }
12345 : 135896 : switch (TREE_CODE (_p1))
12346 : : {
12347 : 117035 : case SSA_NAME:
12348 : 117035 : if (gimple *_d2 = get_def (valueize, _p1))
12349 : : {
12350 : 113369 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12351 : 131954 : switch (gimple_assign_rhs_code (_a2))
12352 : : {
12353 : 709 : case ADDR_EXPR:
12354 : 709 : {
12355 : 709 : {
12356 : 709 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
12357 : 709 : {
12358 : 709 : poly_int64 diff;
12359 : 709 : if (ptr_difference_const (captures[0], captures[2], &diff)
12360 : : )
12361 : : {
12362 : 243 : gimple_seq *lseq = seq;
12363 : 243 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2301;
12364 : 243 : {
12365 : 243 : res_op->set_op (PLUS_EXPR, type, 2);
12366 : 243 : res_op->ops[0] = build_int_cst_type (type, diff);
12367 : 243 : {
12368 : 243 : tree _o1[1], _r1;
12369 : 243 : _o1[0] = captures[1];
12370 : 243 : if (type != TREE_TYPE (_o1[0]) /* XXX */
12371 : 243 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
12372 : : {
12373 : 243 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
12374 : 243 : tem_op.resimplify (lseq, valueize);
12375 : 243 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12376 : 243 : if (!_r1) goto next_after_fail2301;
12377 : : }
12378 : : else
12379 : : _r1 = _o1[0];
12380 : 136 : res_op->ops[1] = _r1;
12381 : : }
12382 : 136 : res_op->resimplify (lseq, valueize);
12383 : 136 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1121, __FILE__, __LINE__, true);
12384 : 136 : return true;
12385 : : }
12386 : 573 : next_after_fail2301:;
12387 : : }
12388 : : }
12389 : : }
12390 : 573 : break;
12391 : : }
12392 : : default:;
12393 : : }
12394 : : }
12395 : : break;
12396 : 18861 : case ADDR_EXPR:
12397 : 18861 : {
12398 : 18861 : {
12399 : 18861 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
12400 : 18861 : {
12401 : 18861 : poly_int64 diff;
12402 : 18861 : if (ptr_difference_const (captures[0], captures[2], &diff)
12403 : : )
12404 : : {
12405 : 13718 : gimple_seq *lseq = seq;
12406 : 13718 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2302;
12407 : 13718 : {
12408 : 13718 : res_op->set_op (PLUS_EXPR, type, 2);
12409 : 13718 : res_op->ops[0] = build_int_cst_type (type, diff);
12410 : 13718 : {
12411 : 13718 : tree _o1[1], _r1;
12412 : 13718 : _o1[0] = captures[1];
12413 : 13718 : if (type != TREE_TYPE (_o1[0]) /* XXX */
12414 : 13718 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
12415 : : {
12416 : 13718 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
12417 : 13718 : tem_op.resimplify (lseq, valueize);
12418 : 13718 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12419 : 13718 : if (!_r1) goto next_after_fail2302;
12420 : : }
12421 : : else
12422 : : _r1 = _o1[0];
12423 : 11004 : res_op->ops[1] = _r1;
12424 : : }
12425 : 11004 : res_op->resimplify (lseq, valueize);
12426 : 11004 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1121, __FILE__, __LINE__, true);
12427 : 11004 : return true;
12428 : : }
12429 : 7857 : next_after_fail2302:;
12430 : : }
12431 : : }
12432 : : }
12433 : 7857 : break;
12434 : : }
12435 : 124756 : default:;
12436 : : }
12437 : 124756 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q20, 0))
12438 : : {
12439 : 33099 : {
12440 : 33099 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q20 };
12441 : 33099 : if (!TYPE_SATURATING (type)
12442 : : )
12443 : : {
12444 : 33099 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
12445 : 66198 : && !FIXED_POINT_TYPE_P (type)
12446 : : )
12447 : : {
12448 : 33099 : {
12449 : 33099 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
12450 : 33099 : gimple_seq *lseq = seq;
12451 : 33099 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2303;
12452 : 33099 : {
12453 : 33099 : res_op->set_op (NOP_EXPR, type, 1);
12454 : 33099 : {
12455 : 33099 : tree _o1[1], _r1;
12456 : 33099 : _o1[0] = captures[1];
12457 : 33099 : (*res_op).set_op (VIEW_CONVERT_EXPR, stype, 1);
12458 : 33099 : (*res_op).ops[0] = _o1[0];
12459 : 33099 : (*res_op).resimplify (lseq, valueize);
12460 : : }
12461 : 33099 : if (type != res_op->type
12462 : 33099 : && !useless_type_conversion_p (type, res_op->type))
12463 : : {
12464 : 0 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2303;
12465 : 0 : res_op->set_op (NOP_EXPR, type, 1);
12466 : 0 : res_op->resimplify (lseq, valueize);
12467 : : }
12468 : 33099 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1122, __FILE__, __LINE__, true);
12469 : 33099 : return true;
12470 : : }
12471 : 0 : next_after_fail2303:;
12472 : : }
12473 : : }
12474 : : }
12475 : : }
12476 : : }
12477 : : break;
12478 : : }
12479 : 163 : case ADDR_EXPR:
12480 : 163 : {
12481 : 163 : switch (TREE_CODE (_p1))
12482 : : {
12483 : 159 : case SSA_NAME:
12484 : 159 : if (gimple *_d2 = get_def (valueize, _p1))
12485 : : {
12486 : 148 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12487 : 176 : switch (gimple_assign_rhs_code (_a2))
12488 : : {
12489 : 0 : case POINTER_PLUS_EXPR:
12490 : 0 : {
12491 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
12492 : 0 : _q30 = do_valueize (valueize, _q30);
12493 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
12494 : 0 : _q31 = do_valueize (valueize, _q31);
12495 : 0 : {
12496 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12497 : 0 : {
12498 : 0 : poly_int64 diff;
12499 : 0 : if (ptr_difference_const (captures[0], captures[1], &diff)
12500 : : )
12501 : : {
12502 : 0 : gimple_seq *lseq = seq;
12503 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2304;
12504 : 0 : {
12505 : 0 : res_op->set_op (MINUS_EXPR, type, 2);
12506 : 0 : res_op->ops[0] = build_int_cst_type (type, diff);
12507 : 0 : {
12508 : 0 : tree _o1[1], _r1;
12509 : 0 : _o1[0] = captures[2];
12510 : 0 : if (type != TREE_TYPE (_o1[0]) /* XXX */
12511 : 0 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
12512 : : {
12513 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
12514 : 0 : tem_op.resimplify (lseq, valueize);
12515 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12516 : 0 : if (!_r1) goto next_after_fail2304;
12517 : : }
12518 : : else
12519 : : _r1 = _o1[0];
12520 : 0 : res_op->ops[1] = _r1;
12521 : : }
12522 : 0 : res_op->resimplify (lseq, valueize);
12523 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1123, __FILE__, __LINE__, true);
12524 : 0 : return true;
12525 : : }
12526 : 0 : next_after_fail2304:;
12527 : : }
12528 : : }
12529 : : }
12530 : 0 : break;
12531 : : }
12532 : : default:;
12533 : : }
12534 : : }
12535 : : break;
12536 : : default:;
12537 : : }
12538 : : break;
12539 : : }
12540 : : default:;
12541 : : }
12542 : : }
12543 : : break;
12544 : 51672 : case ADDR_EXPR:
12545 : 51672 : {
12546 : 51672 : switch (TREE_CODE (_p1))
12547 : : {
12548 : 49022 : case SSA_NAME:
12549 : 49022 : if (gimple *_d1 = get_def (valueize, _p1))
12550 : : {
12551 : 30487 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12552 : 9898 : switch (gimple_assign_rhs_code (_a1))
12553 : : {
12554 : 5100 : case POINTER_PLUS_EXPR:
12555 : 5100 : {
12556 : 5100 : tree _q30 = gimple_assign_rhs1 (_a1);
12557 : 5100 : _q30 = do_valueize (valueize, _q30);
12558 : 5100 : tree _q31 = gimple_assign_rhs2 (_a1);
12559 : 5100 : _q31 = do_valueize (valueize, _q31);
12560 : 5100 : {
12561 : 5100 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12562 : 5100 : {
12563 : 5100 : poly_int64 diff;
12564 : 5100 : if (ptr_difference_const (captures[0], captures[1], &diff)
12565 : : )
12566 : : {
12567 : 618 : gimple_seq *lseq = seq;
12568 : 618 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2305;
12569 : 618 : {
12570 : 618 : res_op->set_op (MINUS_EXPR, type, 2);
12571 : 618 : res_op->ops[0] = build_int_cst_type (type, diff);
12572 : 618 : {
12573 : 618 : tree _o1[1], _r1;
12574 : 618 : _o1[0] = captures[2];
12575 : 618 : if (type != TREE_TYPE (_o1[0]) /* XXX */
12576 : 618 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
12577 : : {
12578 : 618 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
12579 : 618 : tem_op.resimplify (lseq, valueize);
12580 : 618 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12581 : 618 : if (!_r1) goto next_after_fail2305;
12582 : : }
12583 : : else
12584 : : _r1 = _o1[0];
12585 : 376 : res_op->ops[1] = _r1;
12586 : : }
12587 : 376 : res_op->resimplify (lseq, valueize);
12588 : 376 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1123, __FILE__, __LINE__, true);
12589 : 376 : return true;
12590 : : }
12591 : 4724 : next_after_fail2305:;
12592 : : }
12593 : : }
12594 : : }
12595 : 4724 : break;
12596 : : }
12597 : : default:;
12598 : : }
12599 : : }
12600 : : break;
12601 : : default:;
12602 : : }
12603 : : break;
12604 : : }
12605 : 2598112 : default:;
12606 : : }
12607 : 2598112 : switch (TREE_CODE (_p1))
12608 : : {
12609 : 2424383 : case SSA_NAME:
12610 : 2424383 : if (gimple *_d1 = get_def (valueize, _p1))
12611 : : {
12612 : 1632759 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12613 : 2463540 : switch (gimple_assign_rhs_code (_a1))
12614 : : {
12615 : 67671 : case POINTER_PLUS_EXPR:
12616 : 67671 : {
12617 : 67671 : tree _q30 = gimple_assign_rhs1 (_a1);
12618 : 67671 : _q30 = do_valueize (valueize, _q30);
12619 : 67671 : tree _q31 = gimple_assign_rhs2 (_a1);
12620 : 67671 : _q31 = do_valueize (valueize, _q31);
12621 : 67671 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || operand_equal_p (_q30, _p0, 0))
12622 : : {
12623 : 1604 : {
12624 : 1604 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
12625 : 1604 : if (!TYPE_SATURATING (type)
12626 : : )
12627 : : {
12628 : 1604 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
12629 : 3208 : && !FIXED_POINT_TYPE_P (type)
12630 : : )
12631 : : {
12632 : 1604 : {
12633 : 1604 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
12634 : 1604 : gimple_seq *lseq = seq;
12635 : 1604 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2306;
12636 : 1604 : {
12637 : 1604 : res_op->set_op (NEGATE_EXPR, type, 1);
12638 : 1604 : {
12639 : 1604 : tree _r1;
12640 : 1604 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
12641 : 1604 : {
12642 : 1604 : tree _o2[1], _r2;
12643 : 1604 : _o2[0] = captures[1];
12644 : 1604 : tem_op.set_op (VIEW_CONVERT_EXPR, stype, 1);
12645 : 1604 : tem_op.ops[0] = _o2[0];
12646 : 1604 : tem_op.resimplify (lseq, valueize);
12647 : : }
12648 : 1604 : if (type != tem_op.type
12649 : 1604 : && !useless_type_conversion_p (type, tem_op.type))
12650 : : {
12651 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12652 : 113 : if (!_r1) goto next_after_fail2306;
12653 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
12654 : 0 : tem_op.ops[0] = _r1;
12655 : 0 : tem_op.resimplify (lseq, valueize);
12656 : : }
12657 : 1604 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12658 : 1604 : if (!_r1) goto next_after_fail2306;
12659 : 1491 : res_op->ops[0] = _r1;
12660 : : }
12661 : 1491 : res_op->resimplify (lseq, valueize);
12662 : 1491 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1124, __FILE__, __LINE__, true);
12663 : 1491 : return true;
12664 : : }
12665 : 113 : next_after_fail2306:;
12666 : : }
12667 : : }
12668 : : }
12669 : : }
12670 : : }
12671 : : break;
12672 : : }
12673 : : default:;
12674 : : }
12675 : : }
12676 : : break;
12677 : 2596621 : default:;
12678 : : }
12679 : 2596621 : switch (TREE_CODE (_p0))
12680 : : {
12681 : 2520024 : case SSA_NAME:
12682 : 2520024 : if (gimple *_d1 = get_def (valueize, _p0))
12683 : : {
12684 : 1745119 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12685 : 2456592 : switch (gimple_assign_rhs_code (_a1))
12686 : : {
12687 : 91624 : case POINTER_PLUS_EXPR:
12688 : 91624 : {
12689 : 91624 : tree _q20 = gimple_assign_rhs1 (_a1);
12690 : 91624 : _q20 = do_valueize (valueize, _q20);
12691 : 91624 : tree _q21 = gimple_assign_rhs2 (_a1);
12692 : 91624 : _q21 = do_valueize (valueize, _q21);
12693 : 91624 : switch (TREE_CODE (_p1))
12694 : : {
12695 : 85875 : case SSA_NAME:
12696 : 85875 : if (gimple *_d2 = get_def (valueize, _p1))
12697 : : {
12698 : 82259 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
12699 : 93482 : switch (gimple_assign_rhs_code (_a2))
12700 : : {
12701 : 20999 : case POINTER_PLUS_EXPR:
12702 : 20999 : {
12703 : 20999 : tree _q50 = gimple_assign_rhs1 (_a2);
12704 : 20999 : _q50 = do_valueize (valueize, _q50);
12705 : 20999 : tree _q51 = gimple_assign_rhs2 (_a2);
12706 : 20999 : _q51 = do_valueize (valueize, _q51);
12707 : 20999 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12708 : : {
12709 : 134 : {
12710 : 134 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
12711 : 134 : if (!TYPE_SATURATING (type)
12712 : : )
12713 : : {
12714 : 134 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
12715 : 268 : && !FIXED_POINT_TYPE_P (type)
12716 : : )
12717 : : {
12718 : 134 : gimple_seq *lseq = seq;
12719 : 134 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2307;
12720 : 134 : {
12721 : 134 : res_op->set_op (POINTER_DIFF_EXPR, type, 2);
12722 : 134 : res_op->ops[0] = captures[0];
12723 : 134 : res_op->ops[1] = captures[2];
12724 : 134 : res_op->resimplify (lseq, valueize);
12725 : 134 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1125, __FILE__, __LINE__, true);
12726 : 134 : return true;
12727 : : }
12728 : 0 : next_after_fail2307:;
12729 : : }
12730 : : }
12731 : : }
12732 : : }
12733 : 20865 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
12734 : : {
12735 : 176 : {
12736 : 176 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q20 };
12737 : 176 : if (!TYPE_SATURATING (type)
12738 : : )
12739 : : {
12740 : 176 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
12741 : 352 : && !FIXED_POINT_TYPE_P (type)
12742 : : )
12743 : : {
12744 : 176 : {
12745 : 176 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
12746 : 176 : gimple_seq *lseq = seq;
12747 : 176 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2308;
12748 : 176 : {
12749 : 176 : res_op->set_op (MINUS_EXPR, type, 2);
12750 : 176 : {
12751 : 176 : tree _r1;
12752 : 176 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
12753 : 176 : {
12754 : 176 : tree _o2[1], _r2;
12755 : 176 : _o2[0] = captures[1];
12756 : 176 : tem_op.set_op (VIEW_CONVERT_EXPR, stype, 1);
12757 : 176 : tem_op.ops[0] = _o2[0];
12758 : 176 : tem_op.resimplify (lseq, valueize);
12759 : : }
12760 : 176 : if (type != tem_op.type
12761 : 176 : && !useless_type_conversion_p (type, tem_op.type))
12762 : : {
12763 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12764 : 70 : if (!_r1) goto next_after_fail2308;
12765 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
12766 : 0 : tem_op.ops[0] = _r1;
12767 : 0 : tem_op.resimplify (lseq, valueize);
12768 : : }
12769 : 176 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12770 : 176 : if (!_r1) goto next_after_fail2308;
12771 : 106 : res_op->ops[0] = _r1;
12772 : : }
12773 : 106 : {
12774 : 106 : tree _r1;
12775 : 106 : gimple_match_op tem_op (res_op->cond.any_else (), ERROR_MARK, error_mark_node, 1);
12776 : 106 : {
12777 : 106 : tree _o2[1], _r2;
12778 : 106 : _o2[0] = captures[2];
12779 : 106 : tem_op.set_op (VIEW_CONVERT_EXPR, stype, 1);
12780 : 106 : tem_op.ops[0] = _o2[0];
12781 : 106 : tem_op.resimplify (lseq, valueize);
12782 : : }
12783 : 106 : if (type != tem_op.type
12784 : 106 : && !useless_type_conversion_p (type, tem_op.type))
12785 : : {
12786 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12787 : 34 : if (!_r1) goto next_after_fail2308;
12788 : 0 : tem_op.set_op (NOP_EXPR, type, 1);
12789 : 0 : tem_op.ops[0] = _r1;
12790 : 0 : tem_op.resimplify (lseq, valueize);
12791 : : }
12792 : 106 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12793 : 106 : if (!_r1) goto next_after_fail2308;
12794 : 72 : res_op->ops[1] = _r1;
12795 : : }
12796 : 72 : res_op->resimplify (lseq, valueize);
12797 : 72 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1126, __FILE__, __LINE__, true);
12798 : 72 : return true;
12799 : : }
12800 : 104 : next_after_fail2308:;
12801 : : }
12802 : : }
12803 : : }
12804 : : }
12805 : : }
12806 : : break;
12807 : : }
12808 : : default:;
12809 : : }
12810 : : }
12811 : : break;
12812 : : default:;
12813 : : }
12814 : : break;
12815 : : }
12816 : : default:;
12817 : : }
12818 : : }
12819 : : break;
12820 : 2596415 : default:;
12821 : : }
12822 : 2596415 : if (integer_zerop (_p0))
12823 : : {
12824 : 1285 : {
12825 : 1285 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
12826 : 1285 : gimple_seq *lseq = seq;
12827 : 1285 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2309;
12828 : 1285 : {
12829 : 1285 : res_op->set_op (NEGATE_EXPR, type, 1);
12830 : 1285 : {
12831 : 1285 : tree _o1[1], _r1;
12832 : 1285 : _o1[0] = captures[0];
12833 : 1285 : if (type != TREE_TYPE (_o1[0]) /* XXX */
12834 : 1285 : && !useless_type_conversion_p (type, TREE_TYPE (_o1[0])))
12835 : : {
12836 : 1285 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, _o1[0]);
12837 : 1285 : tem_op.resimplify (lseq, valueize);
12838 : 1285 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
12839 : 1285 : if (!_r1) goto next_after_fail2309;
12840 : : }
12841 : : else
12842 : : _r1 = _o1[0];
12843 : 191 : res_op->ops[0] = _r1;
12844 : : }
12845 : 191 : res_op->resimplify (lseq, valueize);
12846 : 191 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1127, __FILE__, __LINE__, true);
12847 : 191 : return true;
12848 : : }
12849 : : next_after_fail2309:;
12850 : : }
12851 : : }
12852 : : return false;
12853 : : }
12854 : :
12855 : : bool
12856 : 327 : gimple_simplify_CFN_BUILT_IN_COPYSIGNF64 (gimple_match_op *res_op, gimple_seq *seq,
12857 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
12858 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
12859 : : {
12860 : 327 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
12861 : 327 : switch (TREE_CODE (_p0))
12862 : : {
12863 : 327 : case SSA_NAME:
12864 : 327 : if (gimple *_d1 = get_def (valueize, _p0))
12865 : : {
12866 : 231 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12867 : 450 : switch (gimple_assign_rhs_code (_a1))
12868 : : {
12869 : 12 : case NEGATE_EXPR:
12870 : 12 : {
12871 : 12 : tree _q20 = gimple_assign_rhs1 (_a1);
12872 : 12 : _q20 = do_valueize (valueize, _q20);
12873 : 12 : {
12874 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12875 : 12 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF64;
12876 : 12 : gimple_seq *lseq = seq;
12877 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2487;
12878 : 12 : {
12879 : 12 : res_op->set_op (copysigns, type, 2);
12880 : 12 : res_op->ops[0] = captures[0];
12881 : 12 : res_op->ops[1] = captures[1];
12882 : 12 : res_op->resimplify (lseq, valueize);
12883 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
12884 : 12 : return true;
12885 : : }
12886 : 0 : next_after_fail2487:;
12887 : : }
12888 : 0 : break;
12889 : : }
12890 : 0 : case ABS_EXPR:
12891 : 0 : {
12892 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
12893 : 0 : _q20 = do_valueize (valueize, _q20);
12894 : 0 : {
12895 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12896 : 0 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF64;
12897 : 0 : gimple_seq *lseq = seq;
12898 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2488;
12899 : 0 : {
12900 : 0 : res_op->set_op (copysigns, type, 2);
12901 : 0 : res_op->ops[0] = captures[0];
12902 : 0 : res_op->ops[1] = captures[1];
12903 : 0 : res_op->resimplify (lseq, valueize);
12904 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
12905 : 0 : return true;
12906 : : }
12907 : 0 : next_after_fail2488:;
12908 : : }
12909 : 0 : break;
12910 : : }
12911 : : default:;
12912 : : }
12913 : : }
12914 : : break;
12915 : 0 : case REAL_CST:
12916 : 0 : {
12917 : 0 : {
12918 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
12919 : 0 : if (gimple_simplify_329 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64))
12920 : 0 : return true;
12921 : : }
12922 : 0 : break;
12923 : : }
12924 : 315 : default:;
12925 : : }
12926 : 315 : switch (TREE_CODE (_p1))
12927 : : {
12928 : 0 : case REAL_CST:
12929 : 0 : {
12930 : 0 : {
12931 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
12932 : 0 : if (gimple_simplify_330 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64))
12933 : 0 : return true;
12934 : : }
12935 : 0 : break;
12936 : : }
12937 : 315 : default:;
12938 : : }
12939 : 315 : switch (TREE_CODE (_p0))
12940 : : {
12941 : 315 : case SSA_NAME:
12942 : 315 : if (gimple *_d1 = get_def (valueize, _p0))
12943 : : {
12944 : 219 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
12945 : 0 : switch (gimple_call_combined_fn (_c1))
12946 : : {
12947 : 0 : case CFN_BUILT_IN_COPYSIGNF64:
12948 : 0 : if (gimple_call_num_args (_c1) == 2)
12949 : : {
12950 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
12951 : 0 : _q20 = do_valueize (valueize, _q20);
12952 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
12953 : 0 : _q21 = do_valueize (valueize, _q21);
12954 : 0 : {
12955 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
12956 : 0 : if (gimple_simplify_331 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64))
12957 : 0 : return true;
12958 : : }
12959 : : }
12960 : : break;
12961 : : default:;
12962 : : }
12963 : : }
12964 : : break;
12965 : 315 : default:;
12966 : : }
12967 : 315 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
12968 : : {
12969 : 0 : {
12970 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
12971 : 0 : if (gimple_simplify_332 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64))
12972 : 0 : return true;
12973 : : }
12974 : : }
12975 : 315 : switch (TREE_CODE (_p1))
12976 : : {
12977 : 315 : case SSA_NAME:
12978 : 315 : if (gimple *_d1 = get_def (valueize, _p1))
12979 : : {
12980 : 219 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
12981 : 438 : switch (gimple_assign_rhs_code (_a1))
12982 : : {
12983 : 0 : case NEGATE_EXPR:
12984 : 0 : {
12985 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
12986 : 0 : _q30 = do_valueize (valueize, _q30);
12987 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12988 : : {
12989 : 0 : {
12990 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
12991 : 0 : if (gimple_simplify_333 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64))
12992 : 0 : return true;
12993 : : }
12994 : : }
12995 : : break;
12996 : : }
12997 : : default:;
12998 : : }
12999 : : }
13000 : : break;
13001 : 315 : default:;
13002 : : }
13003 : 315 : if (tree_expr_nonnegative_p (_p1))
13004 : : {
13005 : 0 : {
13006 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13007 : 0 : if (gimple_simplify_334 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64))
13008 : 0 : return true;
13009 : : }
13010 : : }
13011 : : return false;
13012 : : }
13013 : :
13014 : : bool
13015 : 327 : gimple_simplify_CFN_BUILT_IN_COPYSIGNF32X (gimple_match_op *res_op, gimple_seq *seq,
13016 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
13017 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
13018 : : {
13019 : 327 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
13020 : 327 : switch (TREE_CODE (_p0))
13021 : : {
13022 : 327 : case SSA_NAME:
13023 : 327 : if (gimple *_d1 = get_def (valueize, _p0))
13024 : : {
13025 : 231 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13026 : 450 : switch (gimple_assign_rhs_code (_a1))
13027 : : {
13028 : 12 : case NEGATE_EXPR:
13029 : 12 : {
13030 : 12 : tree _q20 = gimple_assign_rhs1 (_a1);
13031 : 12 : _q20 = do_valueize (valueize, _q20);
13032 : 12 : {
13033 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
13034 : 12 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF32X;
13035 : 12 : gimple_seq *lseq = seq;
13036 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2491;
13037 : 12 : {
13038 : 12 : res_op->set_op (copysigns, type, 2);
13039 : 12 : res_op->ops[0] = captures[0];
13040 : 12 : res_op->ops[1] = captures[1];
13041 : 12 : res_op->resimplify (lseq, valueize);
13042 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
13043 : 12 : return true;
13044 : : }
13045 : 0 : next_after_fail2491:;
13046 : : }
13047 : 0 : break;
13048 : : }
13049 : 0 : case ABS_EXPR:
13050 : 0 : {
13051 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
13052 : 0 : _q20 = do_valueize (valueize, _q20);
13053 : 0 : {
13054 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
13055 : 0 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF32X;
13056 : 0 : gimple_seq *lseq = seq;
13057 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2492;
13058 : 0 : {
13059 : 0 : res_op->set_op (copysigns, type, 2);
13060 : 0 : res_op->ops[0] = captures[0];
13061 : 0 : res_op->ops[1] = captures[1];
13062 : 0 : res_op->resimplify (lseq, valueize);
13063 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
13064 : 0 : return true;
13065 : : }
13066 : 0 : next_after_fail2492:;
13067 : : }
13068 : 0 : break;
13069 : : }
13070 : : default:;
13071 : : }
13072 : : }
13073 : : break;
13074 : 0 : case REAL_CST:
13075 : 0 : {
13076 : 0 : {
13077 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13078 : 0 : if (gimple_simplify_329 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X))
13079 : 0 : return true;
13080 : : }
13081 : 0 : break;
13082 : : }
13083 : 315 : default:;
13084 : : }
13085 : 315 : switch (TREE_CODE (_p1))
13086 : : {
13087 : 0 : case REAL_CST:
13088 : 0 : {
13089 : 0 : {
13090 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13091 : 0 : if (gimple_simplify_330 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X))
13092 : 0 : return true;
13093 : : }
13094 : 0 : break;
13095 : : }
13096 : 315 : default:;
13097 : : }
13098 : 315 : switch (TREE_CODE (_p0))
13099 : : {
13100 : 315 : case SSA_NAME:
13101 : 315 : if (gimple *_d1 = get_def (valueize, _p0))
13102 : : {
13103 : 219 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
13104 : 0 : switch (gimple_call_combined_fn (_c1))
13105 : : {
13106 : 0 : case CFN_BUILT_IN_COPYSIGNF32X:
13107 : 0 : if (gimple_call_num_args (_c1) == 2)
13108 : : {
13109 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
13110 : 0 : _q20 = do_valueize (valueize, _q20);
13111 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
13112 : 0 : _q21 = do_valueize (valueize, _q21);
13113 : 0 : {
13114 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
13115 : 0 : if (gimple_simplify_331 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X))
13116 : 0 : return true;
13117 : : }
13118 : : }
13119 : : break;
13120 : : default:;
13121 : : }
13122 : : }
13123 : : break;
13124 : 315 : default:;
13125 : : }
13126 : 315 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
13127 : : {
13128 : 0 : {
13129 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
13130 : 0 : if (gimple_simplify_332 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X))
13131 : 0 : return true;
13132 : : }
13133 : : }
13134 : 315 : switch (TREE_CODE (_p1))
13135 : : {
13136 : 315 : case SSA_NAME:
13137 : 315 : if (gimple *_d1 = get_def (valueize, _p1))
13138 : : {
13139 : 219 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13140 : 438 : switch (gimple_assign_rhs_code (_a1))
13141 : : {
13142 : 0 : case NEGATE_EXPR:
13143 : 0 : {
13144 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
13145 : 0 : _q30 = do_valueize (valueize, _q30);
13146 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13147 : : {
13148 : 0 : {
13149 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13150 : 0 : if (gimple_simplify_333 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X))
13151 : 0 : return true;
13152 : : }
13153 : : }
13154 : : break;
13155 : : }
13156 : : default:;
13157 : : }
13158 : : }
13159 : : break;
13160 : 315 : default:;
13161 : : }
13162 : 315 : if (tree_expr_nonnegative_p (_p1))
13163 : : {
13164 : 0 : {
13165 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13166 : 0 : if (gimple_simplify_334 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X))
13167 : 0 : return true;
13168 : : }
13169 : : }
13170 : : return false;
13171 : : }
13172 : :
13173 : : bool
13174 : 0 : gimple_simplify_CFN_BUILT_IN_COPYSIGNF128X (gimple_match_op *res_op, gimple_seq *seq,
13175 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
13176 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
13177 : : {
13178 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
13179 : 0 : switch (TREE_CODE (_p0))
13180 : : {
13181 : 0 : case SSA_NAME:
13182 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
13183 : : {
13184 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13185 : 0 : switch (gimple_assign_rhs_code (_a1))
13186 : : {
13187 : 0 : case NEGATE_EXPR:
13188 : 0 : {
13189 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
13190 : 0 : _q20 = do_valueize (valueize, _q20);
13191 : 0 : {
13192 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
13193 : 0 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF128X;
13194 : 0 : gimple_seq *lseq = seq;
13195 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2495;
13196 : 0 : {
13197 : 0 : res_op->set_op (copysigns, type, 2);
13198 : 0 : res_op->ops[0] = captures[0];
13199 : 0 : res_op->ops[1] = captures[1];
13200 : 0 : res_op->resimplify (lseq, valueize);
13201 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
13202 : 0 : return true;
13203 : : }
13204 : 0 : next_after_fail2495:;
13205 : : }
13206 : 0 : break;
13207 : : }
13208 : 0 : case ABS_EXPR:
13209 : 0 : {
13210 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
13211 : 0 : _q20 = do_valueize (valueize, _q20);
13212 : 0 : {
13213 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
13214 : 0 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF128X;
13215 : 0 : gimple_seq *lseq = seq;
13216 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2496;
13217 : 0 : {
13218 : 0 : res_op->set_op (copysigns, type, 2);
13219 : 0 : res_op->ops[0] = captures[0];
13220 : 0 : res_op->ops[1] = captures[1];
13221 : 0 : res_op->resimplify (lseq, valueize);
13222 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1157, __FILE__, __LINE__, true);
13223 : 0 : return true;
13224 : : }
13225 : 0 : next_after_fail2496:;
13226 : : }
13227 : 0 : break;
13228 : : }
13229 : : default:;
13230 : : }
13231 : : }
13232 : : break;
13233 : 0 : case REAL_CST:
13234 : 0 : {
13235 : 0 : {
13236 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13237 : 0 : if (gimple_simplify_329 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X))
13238 : 0 : return true;
13239 : : }
13240 : 0 : break;
13241 : : }
13242 : 0 : default:;
13243 : : }
13244 : 0 : switch (TREE_CODE (_p1))
13245 : : {
13246 : 0 : case REAL_CST:
13247 : 0 : {
13248 : 0 : {
13249 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13250 : 0 : if (gimple_simplify_330 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X))
13251 : 0 : return true;
13252 : : }
13253 : 0 : break;
13254 : : }
13255 : 0 : default:;
13256 : : }
13257 : 0 : switch (TREE_CODE (_p0))
13258 : : {
13259 : 0 : case SSA_NAME:
13260 : 0 : if (gimple *_d1 = get_def (valueize, _p0))
13261 : : {
13262 : 0 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
13263 : 0 : switch (gimple_call_combined_fn (_c1))
13264 : : {
13265 : 0 : case CFN_BUILT_IN_COPYSIGNF128X:
13266 : 0 : if (gimple_call_num_args (_c1) == 2)
13267 : : {
13268 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
13269 : 0 : _q20 = do_valueize (valueize, _q20);
13270 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
13271 : 0 : _q21 = do_valueize (valueize, _q21);
13272 : 0 : {
13273 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
13274 : 0 : if (gimple_simplify_331 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X))
13275 : 0 : return true;
13276 : : }
13277 : : }
13278 : : break;
13279 : : default:;
13280 : : }
13281 : : }
13282 : : break;
13283 : 0 : default:;
13284 : : }
13285 : 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
13286 : : {
13287 : 0 : {
13288 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
13289 : 0 : if (gimple_simplify_332 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X))
13290 : 0 : return true;
13291 : : }
13292 : : }
13293 : 0 : switch (TREE_CODE (_p1))
13294 : : {
13295 : 0 : case SSA_NAME:
13296 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
13297 : : {
13298 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13299 : 0 : switch (gimple_assign_rhs_code (_a1))
13300 : : {
13301 : 0 : case NEGATE_EXPR:
13302 : 0 : {
13303 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
13304 : 0 : _q30 = do_valueize (valueize, _q30);
13305 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13306 : : {
13307 : 0 : {
13308 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13309 : 0 : if (gimple_simplify_333 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X))
13310 : 0 : return true;
13311 : : }
13312 : : }
13313 : : break;
13314 : : }
13315 : : default:;
13316 : : }
13317 : : }
13318 : : break;
13319 : 0 : default:;
13320 : : }
13321 : 0 : if (tree_expr_nonnegative_p (_p1))
13322 : : {
13323 : 0 : {
13324 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13325 : 0 : if (gimple_simplify_334 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X))
13326 : 0 : return true;
13327 : : }
13328 : : }
13329 : : return false;
13330 : : }
13331 : :
13332 : : bool
13333 : 1538920 : gimple_simplify_TRUNC_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq,
13334 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
13335 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
13336 : : {
13337 : 1538920 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
13338 : 1538920 : if (integer_onep (_p1))
13339 : : {
13340 : 3219 : {
13341 : 3219 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
13342 : 3219 : if (gimple_simplify_209 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13343 : 3219 : return true;
13344 : : }
13345 : : }
13346 : 1535701 : switch (TREE_CODE (_p0))
13347 : : {
13348 : 1365575 : case SSA_NAME:
13349 : 1365575 : if (gimple *_d1 = get_def (valueize, _p0))
13350 : : {
13351 : 910156 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13352 : 860716 : switch (gimple_assign_rhs_code (_a1))
13353 : : {
13354 : 94534 : CASE_CONVERT:
13355 : 94534 : {
13356 : 94534 : tree _q20 = gimple_assign_rhs1 (_a1);
13357 : 94534 : _q20 = do_valueize (valueize, _q20);
13358 : 94534 : switch (TREE_CODE (_p1))
13359 : : {
13360 : 20236 : case SSA_NAME:
13361 : 20236 : if (gimple *_d2 = get_def (valueize, _p1))
13362 : : {
13363 : 19780 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13364 : 16565 : switch (gimple_assign_rhs_code (_a2))
13365 : : {
13366 : 12134 : CASE_CONVERT:
13367 : 12134 : {
13368 : 12134 : tree _q40 = gimple_assign_rhs1 (_a2);
13369 : 12134 : _q40 = do_valueize (valueize, _q40);
13370 : 12134 : switch (TREE_CODE (_q40))
13371 : : {
13372 : 12131 : case SSA_NAME:
13373 : 12131 : if (gimple *_d3 = get_def (valueize, _q40))
13374 : : {
13375 : 11346 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
13376 : 12099 : switch (gimple_assign_rhs_code (_a3))
13377 : : {
13378 : 0 : case LSHIFT_EXPR:
13379 : 0 : {
13380 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
13381 : 0 : _q50 = do_valueize (valueize, _q50);
13382 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
13383 : 0 : _q51 = do_valueize (valueize, _q51);
13384 : 0 : if (integer_onep (_q50))
13385 : : {
13386 : 0 : {
13387 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q50, _q51 };
13388 : 0 : if (gimple_simplify_335 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13389 : 0 : return true;
13390 : : }
13391 : : }
13392 : : break;
13393 : : }
13394 : : default:;
13395 : : }
13396 : : }
13397 : : break;
13398 : : default:;
13399 : : }
13400 : : break;
13401 : : }
13402 : 89 : case LSHIFT_EXPR:
13403 : 89 : {
13404 : 89 : tree _q40 = gimple_assign_rhs1 (_a2);
13405 : 89 : _q40 = do_valueize (valueize, _q40);
13406 : 89 : tree _q41 = gimple_assign_rhs2 (_a2);
13407 : 89 : _q41 = do_valueize (valueize, _q41);
13408 : 89 : if (integer_onep (_q40))
13409 : : {
13410 : 85 : {
13411 : 85 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q41 };
13412 : 85 : if (gimple_simplify_335 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13413 : 0 : return true;
13414 : : }
13415 : : }
13416 : : break;
13417 : : }
13418 : : default:;
13419 : : }
13420 : : }
13421 : : break;
13422 : : default:;
13423 : : }
13424 : : break;
13425 : : }
13426 : : default:;
13427 : : }
13428 : : }
13429 : : break;
13430 : 1535701 : default:;
13431 : : }
13432 : 1535701 : switch (TREE_CODE (_p1))
13433 : : {
13434 : 573880 : case SSA_NAME:
13435 : 573880 : if (gimple *_d1 = get_def (valueize, _p1))
13436 : : {
13437 : 435692 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13438 : 452677 : switch (gimple_assign_rhs_code (_a1))
13439 : : {
13440 : 178221 : CASE_CONVERT:
13441 : 178221 : {
13442 : 178221 : tree _q30 = gimple_assign_rhs1 (_a1);
13443 : 178221 : _q30 = do_valueize (valueize, _q30);
13444 : 178221 : switch (TREE_CODE (_q30))
13445 : : {
13446 : 178203 : case SSA_NAME:
13447 : 178203 : if (gimple *_d2 = get_def (valueize, _q30))
13448 : : {
13449 : 175993 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13450 : 150880 : switch (gimple_assign_rhs_code (_a2))
13451 : : {
13452 : 262 : case LSHIFT_EXPR:
13453 : 262 : {
13454 : 262 : tree _q40 = gimple_assign_rhs1 (_a2);
13455 : 262 : _q40 = do_valueize (valueize, _q40);
13456 : 262 : tree _q41 = gimple_assign_rhs2 (_a2);
13457 : 262 : _q41 = do_valueize (valueize, _q41);
13458 : 262 : if (integer_onep (_q40))
13459 : : {
13460 : 262 : {
13461 : 262 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q40, _q41 };
13462 : 262 : if (gimple_simplify_336 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13463 : 62 : return true;
13464 : : }
13465 : : }
13466 : : break;
13467 : : }
13468 : : default:;
13469 : : }
13470 : : }
13471 : : break;
13472 : : default:;
13473 : : }
13474 : : break;
13475 : : }
13476 : 515 : case LSHIFT_EXPR:
13477 : 515 : {
13478 : 515 : tree _q30 = gimple_assign_rhs1 (_a1);
13479 : 515 : _q30 = do_valueize (valueize, _q30);
13480 : 515 : tree _q31 = gimple_assign_rhs2 (_a1);
13481 : 515 : _q31 = do_valueize (valueize, _q31);
13482 : 515 : if (integer_onep (_q30))
13483 : : {
13484 : 135 : {
13485 : 135 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q31 };
13486 : 135 : if (gimple_simplify_336 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13487 : 50 : return true;
13488 : : }
13489 : : }
13490 : : break;
13491 : : }
13492 : : default:;
13493 : : }
13494 : : }
13495 : : break;
13496 : 1535589 : default:;
13497 : : }
13498 : 1535589 : if (integer_zerop (_p0))
13499 : : {
13500 : 21248 : {
13501 : 21248 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13502 : 21248 : if (gimple_simplify_337 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13503 : 20116 : return true;
13504 : : }
13505 : : }
13506 : 1515473 : switch (TREE_CODE (_p1))
13507 : : {
13508 : 553652 : case SSA_NAME:
13509 : 553652 : {
13510 : 553652 : {
13511 : 553652 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13512 : 553652 : if (gimple_simplify_339 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13513 : 80 : return true;
13514 : : }
13515 : 553572 : break;
13516 : : }
13517 : 1515393 : default:;
13518 : : }
13519 : 1515393 : if (integer_minus_onep (_p1))
13520 : : {
13521 : 211 : {
13522 : 211 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13523 : 211 : if (gimple_simplify_338 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13524 : 43 : return true;
13525 : : }
13526 : : }
13527 : 1515350 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
13528 : : {
13529 : 1158 : {
13530 : 1158 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
13531 : 1158 : if (gimple_simplify_340 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13532 : 22 : return true;
13533 : : }
13534 : : }
13535 : 1515328 : switch (TREE_CODE (_p1))
13536 : : {
13537 : 553550 : case SSA_NAME:
13538 : 553550 : if (gimple *_d1 = get_def (valueize, _p1))
13539 : : {
13540 : 417555 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13541 : 423706 : switch (gimple_assign_rhs_code (_a1))
13542 : : {
13543 : 16 : case ABS_EXPR:
13544 : 16 : {
13545 : 16 : tree _q30 = gimple_assign_rhs1 (_a1);
13546 : 16 : _q30 = do_valueize (valueize, _q30);
13547 : 16 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13548 : : {
13549 : 16 : {
13550 : 16 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
13551 : 16 : if (gimple_simplify_341 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13552 : 8 : return true;
13553 : : }
13554 : : }
13555 : : break;
13556 : : }
13557 : : default:;
13558 : : }
13559 : : }
13560 : : break;
13561 : 1515320 : default:;
13562 : : }
13563 : 1515320 : switch (TREE_CODE (_p0))
13564 : : {
13565 : 1365387 : case SSA_NAME:
13566 : 1365387 : if (gimple *_d1 = get_def (valueize, _p0))
13567 : : {
13568 : 910012 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13569 : 860578 : switch (gimple_assign_rhs_code (_a1))
13570 : : {
13571 : 4892 : case ABS_EXPR:
13572 : 4892 : {
13573 : 4892 : tree _q20 = gimple_assign_rhs1 (_a1);
13574 : 4892 : _q20 = do_valueize (valueize, _q20);
13575 : 4892 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13576 : : {
13577 : 0 : {
13578 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
13579 : 0 : if (gimple_simplify_341 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13580 : 0 : return true;
13581 : : }
13582 : : }
13583 : : break;
13584 : : }
13585 : : default:;
13586 : : }
13587 : : }
13588 : : break;
13589 : 1515320 : default:;
13590 : : }
13591 : 1515320 : switch (TREE_CODE (_p1))
13592 : : {
13593 : 553542 : case SSA_NAME:
13594 : 553542 : if (gimple *_d1 = get_def (valueize, _p1))
13595 : : {
13596 : 417547 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13597 : 423698 : switch (gimple_assign_rhs_code (_a1))
13598 : : {
13599 : 14405 : case NEGATE_EXPR:
13600 : 14405 : {
13601 : 14405 : tree _q30 = gimple_assign_rhs1 (_a1);
13602 : 14405 : _q30 = do_valueize (valueize, _q30);
13603 : 14405 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
13604 : : {
13605 : 0 : {
13606 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
13607 : 0 : if (gimple_simplify_342 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13608 : 0 : return true;
13609 : : }
13610 : : }
13611 : : break;
13612 : : }
13613 : : default:;
13614 : : }
13615 : : }
13616 : : break;
13617 : 1515320 : default:;
13618 : : }
13619 : 1515320 : switch (TREE_CODE (_p0))
13620 : : {
13621 : 1365387 : case SSA_NAME:
13622 : 1365387 : if (gimple *_d1 = get_def (valueize, _p0))
13623 : : {
13624 : 910012 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13625 : 860578 : switch (gimple_assign_rhs_code (_a1))
13626 : : {
13627 : 1744 : case NEGATE_EXPR:
13628 : 1744 : {
13629 : 1744 : tree _q20 = gimple_assign_rhs1 (_a1);
13630 : 1744 : _q20 = do_valueize (valueize, _q20);
13631 : 1744 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13632 : : {
13633 : 0 : {
13634 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
13635 : 0 : if (gimple_simplify_342 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13636 : 0 : return true;
13637 : : }
13638 : : }
13639 : : break;
13640 : : }
13641 : 60908 : case TRUNC_DIV_EXPR:
13642 : 60908 : {
13643 : 60908 : tree _q20 = gimple_assign_rhs1 (_a1);
13644 : 60908 : _q20 = do_valueize (valueize, _q20);
13645 : 60908 : tree _q21 = gimple_assign_rhs2 (_a1);
13646 : 60908 : _q21 = do_valueize (valueize, _q21);
13647 : 60908 : switch (TREE_CODE (_q21))
13648 : : {
13649 : 28022 : case INTEGER_CST:
13650 : 28022 : {
13651 : 28022 : switch (TREE_CODE (_p1))
13652 : : {
13653 : 15933 : case INTEGER_CST:
13654 : 15933 : {
13655 : 15933 : {
13656 : 15933 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
13657 : 15933 : if (gimple_simplify_343 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13658 : 2870 : return true;
13659 : : }
13660 : 13063 : break;
13661 : : }
13662 : : default:;
13663 : : }
13664 : : break;
13665 : : }
13666 : : default:;
13667 : : }
13668 : : break;
13669 : : }
13670 : 94503 : CASE_CONVERT:
13671 : 94503 : {
13672 : 94503 : tree _q20 = gimple_assign_rhs1 (_a1);
13673 : 94503 : _q20 = do_valueize (valueize, _q20);
13674 : 94503 : switch (TREE_CODE (_q20))
13675 : : {
13676 : 94503 : case SSA_NAME:
13677 : 94503 : if (gimple *_d2 = get_def (valueize, _q20))
13678 : : {
13679 : 89048 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13680 : 68767 : switch (gimple_assign_rhs_code (_a2))
13681 : : {
13682 : 1241 : case BIT_AND_EXPR:
13683 : 1241 : {
13684 : 1241 : tree _q30 = gimple_assign_rhs1 (_a2);
13685 : 1241 : _q30 = do_valueize (valueize, _q30);
13686 : 1241 : tree _q31 = gimple_assign_rhs2 (_a2);
13687 : 1241 : _q31 = do_valueize (valueize, _q31);
13688 : 1241 : if (tree_swap_operands_p (_q30, _q31))
13689 : 0 : std::swap (_q30, _q31);
13690 : 1241 : switch (TREE_CODE (_q31))
13691 : : {
13692 : 1241 : case INTEGER_CST:
13693 : 1241 : {
13694 : 1241 : switch (TREE_CODE (_p1))
13695 : : {
13696 : 233 : case INTEGER_CST:
13697 : 233 : {
13698 : 233 : {
13699 : 233 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
13700 : 233 : if (gimple_simplify_344 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13701 : 0 : return true;
13702 : : }
13703 : 233 : break;
13704 : : }
13705 : : default:;
13706 : : }
13707 : : break;
13708 : : }
13709 : : default:;
13710 : : }
13711 : 1512449 : break;
13712 : : }
13713 : : default:;
13714 : : }
13715 : : }
13716 : : break;
13717 : : default:;
13718 : : }
13719 : : break;
13720 : : }
13721 : 4550 : case BIT_AND_EXPR:
13722 : 4550 : {
13723 : 4550 : tree _q20 = gimple_assign_rhs1 (_a1);
13724 : 4550 : _q20 = do_valueize (valueize, _q20);
13725 : 4550 : tree _q21 = gimple_assign_rhs2 (_a1);
13726 : 4550 : _q21 = do_valueize (valueize, _q21);
13727 : 4550 : if (tree_swap_operands_p (_q20, _q21))
13728 : 20 : std::swap (_q20, _q21);
13729 : 4550 : switch (TREE_CODE (_q21))
13730 : : {
13731 : 3843 : case INTEGER_CST:
13732 : 3843 : {
13733 : 3843 : switch (TREE_CODE (_p1))
13734 : : {
13735 : 2616 : case INTEGER_CST:
13736 : 2616 : {
13737 : 2616 : {
13738 : 2616 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
13739 : 2616 : if (gimple_simplify_344 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13740 : 0 : return true;
13741 : : }
13742 : 2616 : break;
13743 : : }
13744 : : default:;
13745 : : }
13746 : : break;
13747 : : }
13748 : : default:;
13749 : : }
13750 : 1512449 : break;
13751 : : }
13752 : 50566 : case MULT_EXPR:
13753 : 50566 : {
13754 : 50566 : tree _q20 = gimple_assign_rhs1 (_a1);
13755 : 50566 : _q20 = do_valueize (valueize, _q20);
13756 : 50566 : tree _q21 = gimple_assign_rhs2 (_a1);
13757 : 50566 : _q21 = do_valueize (valueize, _q21);
13758 : 50566 : if (tree_swap_operands_p (_q20, _q21))
13759 : 1461 : std::swap (_q20, _q21);
13760 : 50566 : if (integer_pow2p (_q21))
13761 : : {
13762 : 4794 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
13763 : : {
13764 : 390 : {
13765 : 390 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13766 : 390 : if (gimple_simplify_345 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13767 : 1 : return true;
13768 : : }
13769 : : }
13770 : : }
13771 : 1512449 : break;
13772 : : }
13773 : : default:;
13774 : : }
13775 : : }
13776 : : break;
13777 : 1512449 : default:;
13778 : : }
13779 : 1512449 : if (integer_onep (_p0))
13780 : : {
13781 : 5178 : {
13782 : 5178 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13783 : 5178 : if (INTEGRAL_TYPE_P (type)
13784 : 5175 : && TYPE_PRECISION (type) > 1
13785 : 5175 : && !integer_zerop (captures[1])
13786 : 8471 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[1]))
13787 : : )
13788 : : {
13789 : 3000 : if (TYPE_UNSIGNED (type)
13790 : : )
13791 : : {
13792 : 153 : gimple_seq *lseq = seq;
13793 : 153 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2499;
13794 : 153 : {
13795 : 153 : res_op->set_op (NOP_EXPR, type, 1);
13796 : 153 : {
13797 : 153 : tree _o1[2], _r1;
13798 : 153 : _o1[0] = captures[1];
13799 : 153 : _o1[1] = build_one_cst (type);
13800 : 153 : (*res_op).set_op (EQ_EXPR, boolean_type_node, 2);
13801 : 153 : (*res_op).ops[0] = _o1[0];
13802 : 153 : (*res_op).ops[1] = _o1[1];
13803 : 153 : (*res_op).resimplify (lseq, valueize);
13804 : : }
13805 : 153 : if (type != res_op->type
13806 : 153 : && !useless_type_conversion_p (type, res_op->type))
13807 : : {
13808 : 153 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2499;
13809 : 20 : res_op->set_op (NOP_EXPR, type, 1);
13810 : 20 : res_op->resimplify (lseq, valueize);
13811 : : }
13812 : 20 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1158, __FILE__, __LINE__, true);
13813 : 20 : return true;
13814 : : }
13815 : 5026 : next_after_fail2499:;
13816 : : }
13817 : : else
13818 : : {
13819 : 2847 : if (!canonicalize_math_p ()
13820 : : )
13821 : : {
13822 : 529 : {
13823 : 529 : tree utype = unsigned_type_for (type);
13824 : 529 : gimple_seq *lseq = seq;
13825 : 529 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2500;
13826 : 529 : {
13827 : 529 : res_op->set_op (COND_EXPR, type, 3);
13828 : 529 : {
13829 : 529 : tree _o1[2], _r1;
13830 : 529 : {
13831 : 529 : tree _o2[2], _r2;
13832 : 529 : {
13833 : 529 : tree _o3[1], _r3;
13834 : 529 : _o3[0] = captures[1];
13835 : 529 : if (utype != TREE_TYPE (_o3[0]) /* XXX */
13836 : 529 : && !useless_type_conversion_p (utype, TREE_TYPE (_o3[0])))
13837 : : {
13838 : 529 : gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, _o3[0]);
13839 : 529 : tem_op.resimplify (lseq, valueize);
13840 : 529 : _r3 = maybe_push_res_to_seq (&tem_op, lseq);
13841 : 529 : if (!_r3) goto next_after_fail2500;
13842 : : }
13843 : : else
13844 : : _r3 = _o3[0];
13845 : 144 : _o2[0] = _r3;
13846 : : }
13847 : 144 : _o2[1] = build_one_cst (utype);
13848 : 144 : gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
13849 : 144 : tem_op.resimplify (lseq, valueize);
13850 : 144 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
13851 : 144 : if (!_r2) goto next_after_fail2500;
13852 : 132 : _o1[0] = _r2;
13853 : : }
13854 : 132 : _o1[1] = build_int_cst (utype, 2);
13855 : 132 : gimple_match_op tem_op (res_op->cond.any_else (), LE_EXPR, boolean_type_node, _o1[0], _o1[1]);
13856 : 132 : tem_op.resimplify (lseq, valueize);
13857 : 132 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
13858 : 132 : if (!_r1) goto next_after_fail2500;
13859 : 132 : res_op->ops[0] = _r1;
13860 : : }
13861 : 132 : res_op->ops[1] = captures[1];
13862 : 132 : res_op->ops[2] = build_zero_cst (type);
13863 : 132 : res_op->resimplify (lseq, valueize);
13864 : 132 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1159, __FILE__, __LINE__, true);
13865 : 132 : return true;
13866 : : }
13867 : 5026 : next_after_fail2500:;
13868 : : }
13869 : : }
13870 : : }
13871 : : }
13872 : : }
13873 : : }
13874 : 1512297 : if (integer_pow2p (_p1))
13875 : : {
13876 : 340050 : {
13877 : 340050 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
13878 : 340050 : if (gimple_simplify_346 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13879 : 39361 : return true;
13880 : : }
13881 : : }
13882 : 1472936 : switch (TREE_CODE (_p0))
13883 : : {
13884 : 1327753 : case SSA_NAME:
13885 : 1327753 : if (gimple *_d1 = get_def (valueize, _p0))
13886 : : {
13887 : 905551 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
13888 : 855929 : switch (gimple_assign_rhs_code (_a1))
13889 : : {
13890 : 50527 : case MULT_EXPR:
13891 : 50527 : {
13892 : 50527 : tree _q20 = gimple_assign_rhs1 (_a1);
13893 : 50527 : _q20 = do_valueize (valueize, _q20);
13894 : 50527 : tree _q21 = gimple_assign_rhs2 (_a1);
13895 : 50527 : _q21 = do_valueize (valueize, _q21);
13896 : 50527 : if (tree_swap_operands_p (_q20, _q21))
13897 : 1461 : std::swap (_q20, _q21);
13898 : 50527 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
13899 : : {
13900 : 1204 : {
13901 : 1204 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13902 : 1204 : if (gimple_simplify_347 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13903 : 445 : return true;
13904 : : }
13905 : : }
13906 : 50082 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13907 : : {
13908 : 763 : {
13909 : 763 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
13910 : 763 : if (gimple_simplify_347 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13911 : 27 : return true;
13912 : : }
13913 : : }
13914 : 50055 : switch (TREE_CODE (_q21))
13915 : : {
13916 : 26373 : case INTEGER_CST:
13917 : 26373 : {
13918 : 26373 : switch (TREE_CODE (_p1))
13919 : : {
13920 : 9260 : case SSA_NAME:
13921 : 9260 : if (gimple *_d2 = get_def (valueize, _p1))
13922 : : {
13923 : 8742 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13924 : 9499 : switch (gimple_assign_rhs_code (_a2))
13925 : : {
13926 : 84 : case MULT_EXPR:
13927 : 84 : {
13928 : 84 : tree _q50 = gimple_assign_rhs1 (_a2);
13929 : 84 : _q50 = do_valueize (valueize, _q50);
13930 : 84 : tree _q51 = gimple_assign_rhs2 (_a2);
13931 : 84 : _q51 = do_valueize (valueize, _q51);
13932 : 84 : if (tree_swap_operands_p (_q50, _q51))
13933 : 0 : std::swap (_q50, _q51);
13934 : 84 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13935 : : {
13936 : 11 : switch (TREE_CODE (_q51))
13937 : : {
13938 : 11 : case INTEGER_CST:
13939 : 11 : {
13940 : 11 : {
13941 : 11 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
13942 : 11 : if (gimple_simplify_349 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13943 : 5 : return true;
13944 : : }
13945 : 6 : break;
13946 : : }
13947 : : default:;
13948 : : }
13949 : : }
13950 : 1472125 : break;
13951 : : }
13952 : : default:;
13953 : : }
13954 : : }
13955 : : break;
13956 : 17113 : case INTEGER_CST:
13957 : 17113 : {
13958 : 17113 : {
13959 : 17113 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
13960 : 17113 : if (gimple_simplify_348 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
13961 : 94 : return true;
13962 : : }
13963 : 17019 : break;
13964 : : }
13965 : : default:;
13966 : : }
13967 : : break;
13968 : : }
13969 : : default:;
13970 : : }
13971 : 1472125 : break;
13972 : : }
13973 : 167004 : case PLUS_EXPR:
13974 : 167004 : {
13975 : 167004 : tree _q20 = gimple_assign_rhs1 (_a1);
13976 : 167004 : _q20 = do_valueize (valueize, _q20);
13977 : 167004 : tree _q21 = gimple_assign_rhs2 (_a1);
13978 : 167004 : _q21 = do_valueize (valueize, _q21);
13979 : 167004 : if (tree_swap_operands_p (_q20, _q21))
13980 : 5528 : std::swap (_q20, _q21);
13981 : 167004 : switch (TREE_CODE (_q21))
13982 : : {
13983 : 63576 : case SSA_NAME:
13984 : 63576 : if (gimple *_d2 = get_def (valueize, _q21))
13985 : : {
13986 : 60254 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
13987 : 58487 : switch (gimple_assign_rhs_code (_a2))
13988 : : {
13989 : 21389 : case MULT_EXPR:
13990 : 21389 : {
13991 : 21389 : tree _q40 = gimple_assign_rhs1 (_a2);
13992 : 21389 : _q40 = do_valueize (valueize, _q40);
13993 : 21389 : tree _q41 = gimple_assign_rhs2 (_a2);
13994 : 21389 : _q41 = do_valueize (valueize, _q41);
13995 : 21389 : if (tree_swap_operands_p (_q40, _q41))
13996 : 618 : std::swap (_q40, _q41);
13997 : 21389 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
13998 : : {
13999 : 278 : {
14000 : 278 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41 };
14001 : 278 : if (gimple_simplify_350 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
14002 : 0 : return true;
14003 : : }
14004 : : }
14005 : 21389 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
14006 : : {
14007 : 156 : {
14008 : 156 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q41, _q40 };
14009 : 156 : if (gimple_simplify_350 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
14010 : 0 : return true;
14011 : : }
14012 : : }
14013 : 167004 : break;
14014 : : }
14015 : : default:;
14016 : : }
14017 : : }
14018 : : break;
14019 : 167004 : default:;
14020 : : }
14021 : 167004 : switch (TREE_CODE (_q20))
14022 : : {
14023 : 167004 : case SSA_NAME:
14024 : 167004 : if (gimple *_d2 = get_def (valueize, _q20))
14025 : : {
14026 : 147996 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14027 : 128203 : switch (gimple_assign_rhs_code (_a2))
14028 : : {
14029 : 11945 : case MULT_EXPR:
14030 : 11945 : {
14031 : 11945 : tree _q30 = gimple_assign_rhs1 (_a2);
14032 : 11945 : _q30 = do_valueize (valueize, _q30);
14033 : 11945 : tree _q31 = gimple_assign_rhs2 (_a2);
14034 : 11945 : _q31 = do_valueize (valueize, _q31);
14035 : 11945 : if (tree_swap_operands_p (_q30, _q31))
14036 : 234 : std::swap (_q30, _q31);
14037 : 11945 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
14038 : : {
14039 : 126 : {
14040 : 126 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _q30, _q31 };
14041 : 126 : if (gimple_simplify_350 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
14042 : 2 : return true;
14043 : : }
14044 : : }
14045 : 11943 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
14046 : : {
14047 : 57 : {
14048 : 57 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _q31, _q30 };
14049 : 57 : if (gimple_simplify_350 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
14050 : 3 : return true;
14051 : : }
14052 : : }
14053 : 166999 : break;
14054 : : }
14055 : : default:;
14056 : : }
14057 : : }
14058 : : break;
14059 : 166999 : default:;
14060 : : }
14061 : 166999 : switch (TREE_CODE (_q21))
14062 : : {
14063 : 103426 : case INTEGER_CST:
14064 : 103426 : {
14065 : 103426 : switch (TREE_CODE (_p1))
14066 : : {
14067 : 91650 : case INTEGER_CST:
14068 : 91650 : {
14069 : 91650 : {
14070 : 91650 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
14071 : 91650 : {
14072 : 91650 : wide_int c = wi::to_wide (captures[2]);
14073 : 91650 : wide_int n = wi::to_wide (captures[3]);
14074 : 91650 : bool shift = TRUNC_DIV_EXPR == RSHIFT_EXPR;
14075 : 91650 : int_range_max vr0, vr1, vr3;
14076 : 91650 : if (INTEGRAL_TYPE_P (type)
14077 : 183300 : && get_range_query (cfun)->range_of_expr (vr0, captures[1])
14078 : : )
14079 : : {
14080 : 91650 : if ((shift ? wi::ctz (
14081 : : c
14082 : : ) >= n.to_shwi ()
14083 : 91650 : : wi::multiple_of_p (
14084 : : c
14085 : 91650 : , n, TYPE_SIGN (type)))
14086 : 19720 : && get_range_query (cfun)->range_of_expr (vr1, captures[2])
14087 : 9860 : && range_op_handler (PLUS_EXPR).overflow_free_p (vr0, vr1)
14088 : 17738 : && get_range_query (cfun)->range_of_expr (vr3, captures[0])
14089 : 8869 : && !vr3.undefined_p ()
14090 : 8868 : && (TYPE_UNSIGNED (type)
14091 : 8802 : || (vr0.nonnegative_p () && vr3.nonnegative_p ())
14092 : 8778 : || (vr0.nonpositive_p () && vr3.nonpositive_p ()))
14093 : : )
14094 : : {
14095 : 94 : gimple_seq *lseq = seq;
14096 : 94 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2501;
14097 : 94 : {
14098 : 94 : res_op->set_op (PLUS_EXPR, type, 2);
14099 : 94 : {
14100 : 94 : tree _o1[2], _r1;
14101 : 94 : _o1[0] = captures[1];
14102 : 94 : _o1[1] = captures[3];
14103 : 94 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14104 : 94 : tem_op.resimplify (lseq, valueize);
14105 : 94 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
14106 : 94 : if (!_r1) goto next_after_fail2501;
14107 : 75 : res_op->ops[0] = _r1;
14108 : : }
14109 : 75 : res_op->ops[1] = wide_int_to_tree (type,
14110 : 75 : (shift ? wi::rshift (
14111 : : c
14112 : : , n, TYPE_SIGN (type))
14113 : : : wi::div_trunc (
14114 : : c
14115 : 75 : , n, TYPE_SIGN (type)))
14116 : : );
14117 : 75 : res_op->resimplify (lseq, valueize);
14118 : 75 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1160, __FILE__, __LINE__, true);
14119 : 75 : return true;
14120 : : }
14121 : 91418 : next_after_fail2501:;
14122 : : }
14123 : : else
14124 : : {
14125 : 91552 : if (!vr0.undefined_p () && TYPE_UNSIGNED (type) && c.sign_mask () < 0
14126 : : &&
14127 : 15112 : (shift ? wi::ctz (
14128 : : -c
14129 : : ) >= n.to_shwi ()
14130 : 30224 : : wi::multiple_of_p (
14131 : 106668 : -c
14132 : 15112 : , n, TYPE_SIGN (type)))
14133 : 193984 : && wi::geu_p (vr0.lower_bound (), -c)
14134 : : )
14135 : : {
14136 : 319 : gimple_seq *lseq = seq;
14137 : 319 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2502;
14138 : 319 : {
14139 : 319 : res_op->set_op (PLUS_EXPR, type, 2);
14140 : 319 : {
14141 : 319 : tree _o1[2], _r1;
14142 : 319 : _o1[0] = captures[1];
14143 : 319 : _o1[1] = captures[3];
14144 : 319 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14145 : 319 : tem_op.resimplify (lseq, valueize);
14146 : 319 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
14147 : 319 : if (!_r1) goto next_after_fail2502;
14148 : 157 : res_op->ops[0] = _r1;
14149 : : }
14150 : 157 : res_op->ops[1] = wide_int_to_tree (type, -
14151 : 157 : (shift ? wi::rshift (
14152 : : -c
14153 : : , n, TYPE_SIGN (type))
14154 : : : wi::div_trunc (
14155 : 157 : -c
14156 : 314 : , n, TYPE_SIGN (type)))
14157 : : );
14158 : 157 : res_op->resimplify (lseq, valueize);
14159 : 157 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1161, __FILE__, __LINE__, true);
14160 : 157 : return true;
14161 : : }
14162 : 91418 : next_after_fail2502:;
14163 : : }
14164 : : }
14165 : : }
14166 : 91650 : }
14167 : : }
14168 : 91418 : break;
14169 : : }
14170 : : default:;
14171 : : }
14172 : : break;
14173 : : }
14174 : : default:;
14175 : : }
14176 : 1472125 : break;
14177 : : }
14178 : 138759 : case MINUS_EXPR:
14179 : 138759 : {
14180 : 138759 : tree _q20 = gimple_assign_rhs1 (_a1);
14181 : 138759 : _q20 = do_valueize (valueize, _q20);
14182 : 138759 : tree _q21 = gimple_assign_rhs2 (_a1);
14183 : 138759 : _q21 = do_valueize (valueize, _q21);
14184 : 138759 : switch (TREE_CODE (_q21))
14185 : : {
14186 : 138153 : case SSA_NAME:
14187 : 138153 : if (gimple *_d2 = get_def (valueize, _q21))
14188 : : {
14189 : 123044 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14190 : 146827 : switch (gimple_assign_rhs_code (_a2))
14191 : : {
14192 : 1279 : case MULT_EXPR:
14193 : 1279 : {
14194 : 1279 : tree _q40 = gimple_assign_rhs1 (_a2);
14195 : 1279 : _q40 = do_valueize (valueize, _q40);
14196 : 1279 : tree _q41 = gimple_assign_rhs2 (_a2);
14197 : 1279 : _q41 = do_valueize (valueize, _q41);
14198 : 1279 : if (tree_swap_operands_p (_q40, _q41))
14199 : 38 : std::swap (_q40, _q41);
14200 : 1279 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
14201 : : {
14202 : 69 : {
14203 : 69 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41 };
14204 : 69 : if (gimple_simplify_351 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
14205 : 0 : return true;
14206 : : }
14207 : : }
14208 : 1279 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
14209 : : {
14210 : 57 : {
14211 : 57 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q41, _q40 };
14212 : 57 : if (gimple_simplify_351 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR))
14213 : 3 : return true;
14214 : : }
14215 : : }
14216 : 1472125 : break;
14217 : : }
14218 : : default:;
14219 : : }
14220 : : }
14221 : : break;
14222 : : default:;
14223 : : }
14224 : : break;
14225 : : }
14226 : 0 : case VEC_COND_EXPR:
14227 : 0 : {
14228 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14229 : 0 : _q20 = do_valueize (valueize, _q20);
14230 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
14231 : 0 : _q21 = do_valueize (valueize, _q21);
14232 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
14233 : 0 : _q22 = do_valueize (valueize, _q22);
14234 : 0 : switch (TREE_CODE (_p1))
14235 : : {
14236 : 0 : case SSA_NAME:
14237 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
14238 : : {
14239 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14240 : 0 : switch (gimple_assign_rhs_code (_a2))
14241 : : {
14242 : 0 : case VEC_COND_EXPR:
14243 : 0 : {
14244 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
14245 : 0 : _q60 = do_valueize (valueize, _q60);
14246 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
14247 : 0 : _q61 = do_valueize (valueize, _q61);
14248 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
14249 : 0 : _q62 = do_valueize (valueize, _q62);
14250 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
14251 : : {
14252 : 0 : {
14253 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
14254 : 0 : if (VECTOR_TYPE_P (type)
14255 : 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
14256 : : || types_match (type, TREE_TYPE (captures[2]))
14257 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
14258 : : || (optimize_vectors_before_lowering_p ()
14259 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
14260 : : )
14261 : : {
14262 : 0 : gimple_seq *lseq = seq;
14263 : 0 : if (lseq
14264 : 0 : && (!single_use (captures[0])
14265 : 0 : || !single_use (captures[4])))
14266 : 0 : lseq = NULL;
14267 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2503;
14268 : 0 : {
14269 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
14270 : 0 : res_op->ops[0] = captures[1];
14271 : 0 : {
14272 : 0 : tree _o1[2], _r1;
14273 : 0 : _o1[0] = captures[2];
14274 : 0 : _o1[1] = captures[5];
14275 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14276 : 0 : tem_op.resimplify (NULL, valueize);
14277 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14278 : 0 : if (!_r1) goto next_after_fail2503;
14279 : 0 : res_op->ops[1] = _r1;
14280 : : }
14281 : 0 : {
14282 : 0 : tree _o1[2], _r1;
14283 : 0 : _o1[0] = captures[3];
14284 : 0 : _o1[1] = captures[6];
14285 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14286 : 0 : tem_op.resimplify (NULL, valueize);
14287 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14288 : 0 : if (!_r1) goto next_after_fail2503;
14289 : 0 : res_op->ops[2] = _r1;
14290 : : }
14291 : 0 : res_op->resimplify (lseq, valueize);
14292 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
14293 : 0 : return true;
14294 : : }
14295 : 0 : next_after_fail2503:;
14296 : : }
14297 : : }
14298 : : }
14299 : : break;
14300 : : }
14301 : : default:;
14302 : : }
14303 : : }
14304 : : break;
14305 : 0 : default:;
14306 : : }
14307 : 0 : {
14308 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
14309 : 0 : if (VECTOR_TYPE_P (type)
14310 : 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
14311 : : || types_match (type, TREE_TYPE (captures[2]))
14312 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
14313 : : || (optimize_vectors_before_lowering_p ()
14314 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
14315 : : )
14316 : : {
14317 : 0 : gimple_seq *lseq = seq;
14318 : 0 : if (lseq
14319 : 0 : && (!single_use (captures[0])))
14320 : 0 : lseq = NULL;
14321 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2504;
14322 : 0 : {
14323 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
14324 : 0 : res_op->ops[0] = captures[1];
14325 : 0 : {
14326 : 0 : tree _o1[2], _r1;
14327 : 0 : _o1[0] = captures[2];
14328 : 0 : _o1[1] = captures[4];
14329 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14330 : 0 : tem_op.resimplify (NULL, valueize);
14331 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14332 : 0 : if (!_r1) goto next_after_fail2504;
14333 : 0 : res_op->ops[1] = _r1;
14334 : : }
14335 : 0 : {
14336 : 0 : tree _o1[2], _r1;
14337 : 0 : _o1[0] = captures[3];
14338 : 0 : _o1[1] = captures[4];
14339 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14340 : 0 : tem_op.resimplify (NULL, valueize);
14341 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14342 : 0 : if (!_r1) goto next_after_fail2504;
14343 : 0 : res_op->ops[2] = _r1;
14344 : : }
14345 : 0 : res_op->resimplify (lseq, valueize);
14346 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
14347 : 0 : return true;
14348 : : }
14349 : 0 : next_after_fail2504:;
14350 : : }
14351 : : }
14352 : 0 : break;
14353 : : }
14354 : : default:;
14355 : : }
14356 : : }
14357 : : break;
14358 : 1472125 : default:;
14359 : : }
14360 : 1472125 : if (gimple_with_possible_nonzero_bits (_p0, valueize))
14361 : : {
14362 : 1441141 : if (integer_pow2p (_p1))
14363 : : {
14364 : 293352 : {
14365 : 293352 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
14366 : 586704 : if (INTEGRAL_TYPE_P (type)
14367 : 293352 : && !TYPE_UNSIGNED (type)
14368 : 880056 : && wi::multiple_of_p (get_nonzero_bits (captures[0]), wi::to_wide (captures[1]), SIGNED)
14369 : : )
14370 : : {
14371 : 1697 : gimple_seq *lseq = seq;
14372 : 1697 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2505;
14373 : 1697 : {
14374 : 1697 : res_op->set_op (EXACT_DIV_EXPR, type, 2);
14375 : 1697 : res_op->ops[0] = captures[0];
14376 : 1697 : res_op->ops[1] = captures[1];
14377 : 1697 : res_op->resimplify (lseq, valueize);
14378 : 1697 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1162, __FILE__, __LINE__, true);
14379 : 1697 : return true;
14380 : : }
14381 : 0 : next_after_fail2505:;
14382 : : }
14383 : : }
14384 : : }
14385 : : }
14386 : 1470428 : switch (TREE_CODE (_p1))
14387 : : {
14388 : 553345 : case SSA_NAME:
14389 : 553345 : if (gimple *_d1 = get_def (valueize, _p1))
14390 : : {
14391 : 417431 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14392 : 423620 : switch (gimple_assign_rhs_code (_a1))
14393 : : {
14394 : 0 : case VEC_COND_EXPR:
14395 : 0 : {
14396 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
14397 : 0 : _q30 = do_valueize (valueize, _q30);
14398 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
14399 : 0 : _q31 = do_valueize (valueize, _q31);
14400 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
14401 : 0 : _q32 = do_valueize (valueize, _q32);
14402 : 0 : {
14403 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
14404 : 0 : if (VECTOR_TYPE_P (type)
14405 : 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
14406 : : || types_match (type, TREE_TYPE (captures[3]))
14407 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
14408 : : || (optimize_vectors_before_lowering_p ()
14409 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
14410 : : )
14411 : : {
14412 : 0 : gimple_seq *lseq = seq;
14413 : 0 : if (lseq
14414 : 0 : && (!single_use (captures[1])))
14415 : 0 : lseq = NULL;
14416 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2506;
14417 : 0 : {
14418 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
14419 : 0 : res_op->ops[0] = captures[2];
14420 : 0 : {
14421 : 0 : tree _o1[2], _r1;
14422 : 0 : _o1[0] = captures[0];
14423 : 0 : _o1[1] = captures[3];
14424 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14425 : 0 : tem_op.resimplify (NULL, valueize);
14426 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14427 : 0 : if (!_r1) goto next_after_fail2506;
14428 : 0 : res_op->ops[1] = _r1;
14429 : : }
14430 : 0 : {
14431 : 0 : tree _o1[2], _r1;
14432 : 0 : _o1[0] = captures[0];
14433 : 0 : _o1[1] = captures[4];
14434 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14435 : 0 : tem_op.resimplify (NULL, valueize);
14436 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14437 : 0 : if (!_r1) goto next_after_fail2506;
14438 : 0 : res_op->ops[2] = _r1;
14439 : : }
14440 : 0 : res_op->resimplify (lseq, valueize);
14441 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
14442 : 0 : return true;
14443 : : }
14444 : 0 : next_after_fail2506:;
14445 : : }
14446 : : }
14447 : 0 : break;
14448 : : }
14449 : : default:;
14450 : : }
14451 : : }
14452 : : break;
14453 : : default:;
14454 : : }
14455 : : return false;
14456 : : }
14457 : :
14458 : : bool
14459 : 348 : gimple_simplify_ROUND_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq,
14460 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
14461 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
14462 : : {
14463 : 348 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14464 : 348 : if (integer_onep (_p1))
14465 : : {
14466 : 0 : {
14467 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
14468 : 0 : if (gimple_simplify_209 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14469 : 0 : return true;
14470 : : }
14471 : : }
14472 : 348 : if (integer_zerop (_p0))
14473 : : {
14474 : 0 : {
14475 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
14476 : 0 : if (gimple_simplify_337 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14477 : 0 : return true;
14478 : : }
14479 : : }
14480 : 348 : switch (TREE_CODE (_p1))
14481 : : {
14482 : 0 : case SSA_NAME:
14483 : 0 : {
14484 : 0 : {
14485 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
14486 : 0 : if (gimple_simplify_339 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14487 : 0 : return true;
14488 : : }
14489 : 0 : break;
14490 : : }
14491 : 348 : default:;
14492 : : }
14493 : 348 : if (integer_minus_onep (_p1))
14494 : : {
14495 : 0 : {
14496 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
14497 : 0 : if (gimple_simplify_338 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14498 : 0 : return true;
14499 : : }
14500 : : }
14501 : 348 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
14502 : : {
14503 : 0 : {
14504 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
14505 : 0 : if (gimple_simplify_340 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14506 : 0 : return true;
14507 : : }
14508 : : }
14509 : 348 : switch (TREE_CODE (_p1))
14510 : : {
14511 : 0 : case SSA_NAME:
14512 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
14513 : : {
14514 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14515 : 0 : switch (gimple_assign_rhs_code (_a1))
14516 : : {
14517 : 0 : case ABS_EXPR:
14518 : 0 : {
14519 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
14520 : 0 : _q30 = do_valueize (valueize, _q30);
14521 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
14522 : : {
14523 : 0 : {
14524 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
14525 : 0 : if (gimple_simplify_341 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14526 : 0 : return true;
14527 : : }
14528 : : }
14529 : : break;
14530 : : }
14531 : : default:;
14532 : : }
14533 : : }
14534 : : break;
14535 : 348 : default:;
14536 : : }
14537 : 348 : switch (TREE_CODE (_p0))
14538 : : {
14539 : 348 : case SSA_NAME:
14540 : 348 : if (gimple *_d1 = get_def (valueize, _p0))
14541 : : {
14542 : 276 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14543 : 480 : switch (gimple_assign_rhs_code (_a1))
14544 : : {
14545 : 0 : case ABS_EXPR:
14546 : 0 : {
14547 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14548 : 0 : _q20 = do_valueize (valueize, _q20);
14549 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14550 : : {
14551 : 0 : {
14552 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
14553 : 0 : if (gimple_simplify_341 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14554 : 0 : return true;
14555 : : }
14556 : : }
14557 : : break;
14558 : : }
14559 : : default:;
14560 : : }
14561 : : }
14562 : : break;
14563 : 348 : default:;
14564 : : }
14565 : 348 : switch (TREE_CODE (_p1))
14566 : : {
14567 : 0 : case SSA_NAME:
14568 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
14569 : : {
14570 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14571 : 0 : switch (gimple_assign_rhs_code (_a1))
14572 : : {
14573 : 0 : case NEGATE_EXPR:
14574 : 0 : {
14575 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
14576 : 0 : _q30 = do_valueize (valueize, _q30);
14577 : 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
14578 : : {
14579 : 0 : {
14580 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
14581 : 0 : if (gimple_simplify_342 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14582 : 0 : return true;
14583 : : }
14584 : : }
14585 : : break;
14586 : : }
14587 : : default:;
14588 : : }
14589 : : }
14590 : : break;
14591 : 348 : default:;
14592 : : }
14593 : 348 : switch (TREE_CODE (_p0))
14594 : : {
14595 : 348 : case SSA_NAME:
14596 : 348 : if (gimple *_d1 = get_def (valueize, _p0))
14597 : : {
14598 : 276 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14599 : 480 : switch (gimple_assign_rhs_code (_a1))
14600 : : {
14601 : 0 : case NEGATE_EXPR:
14602 : 0 : {
14603 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14604 : 0 : _q20 = do_valueize (valueize, _q20);
14605 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14606 : : {
14607 : 0 : {
14608 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
14609 : 0 : if (gimple_simplify_342 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14610 : 0 : return true;
14611 : : }
14612 : : }
14613 : : break;
14614 : : }
14615 : 0 : CASE_CONVERT:
14616 : 0 : {
14617 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14618 : 0 : _q20 = do_valueize (valueize, _q20);
14619 : 0 : switch (TREE_CODE (_q20))
14620 : : {
14621 : 0 : case SSA_NAME:
14622 : 0 : if (gimple *_d2 = get_def (valueize, _q20))
14623 : : {
14624 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14625 : 0 : switch (gimple_assign_rhs_code (_a2))
14626 : : {
14627 : 0 : case BIT_AND_EXPR:
14628 : 0 : {
14629 : 0 : tree _q30 = gimple_assign_rhs1 (_a2);
14630 : 0 : _q30 = do_valueize (valueize, _q30);
14631 : 0 : tree _q31 = gimple_assign_rhs2 (_a2);
14632 : 0 : _q31 = do_valueize (valueize, _q31);
14633 : 0 : if (tree_swap_operands_p (_q30, _q31))
14634 : 0 : std::swap (_q30, _q31);
14635 : 0 : switch (TREE_CODE (_q31))
14636 : : {
14637 : 0 : case INTEGER_CST:
14638 : 0 : {
14639 : 0 : switch (TREE_CODE (_p1))
14640 : : {
14641 : 0 : case INTEGER_CST:
14642 : 0 : {
14643 : 0 : {
14644 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
14645 : 0 : if (gimple_simplify_344 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14646 : 0 : return true;
14647 : : }
14648 : 0 : break;
14649 : : }
14650 : : default:;
14651 : : }
14652 : : break;
14653 : : }
14654 : : default:;
14655 : : }
14656 : 348 : break;
14657 : : }
14658 : : default:;
14659 : : }
14660 : : }
14661 : : break;
14662 : : default:;
14663 : : }
14664 : : break;
14665 : : }
14666 : 0 : case BIT_AND_EXPR:
14667 : 0 : {
14668 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14669 : 0 : _q20 = do_valueize (valueize, _q20);
14670 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
14671 : 0 : _q21 = do_valueize (valueize, _q21);
14672 : 0 : if (tree_swap_operands_p (_q20, _q21))
14673 : 0 : std::swap (_q20, _q21);
14674 : 0 : switch (TREE_CODE (_q21))
14675 : : {
14676 : 0 : case INTEGER_CST:
14677 : 0 : {
14678 : 0 : switch (TREE_CODE (_p1))
14679 : : {
14680 : 0 : case INTEGER_CST:
14681 : 0 : {
14682 : 0 : {
14683 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14684 : 0 : if (gimple_simplify_344 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14685 : 0 : return true;
14686 : : }
14687 : 0 : break;
14688 : : }
14689 : : default:;
14690 : : }
14691 : : break;
14692 : : }
14693 : : default:;
14694 : : }
14695 : 348 : break;
14696 : : }
14697 : 0 : case MULT_EXPR:
14698 : 0 : {
14699 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14700 : 0 : _q20 = do_valueize (valueize, _q20);
14701 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
14702 : 0 : _q21 = do_valueize (valueize, _q21);
14703 : 0 : if (tree_swap_operands_p (_q20, _q21))
14704 : 0 : std::swap (_q20, _q21);
14705 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
14706 : : {
14707 : 0 : {
14708 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14709 : 0 : if (gimple_simplify_347 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14710 : 0 : return true;
14711 : : }
14712 : : }
14713 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14714 : : {
14715 : 0 : {
14716 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
14717 : 0 : if (gimple_simplify_347 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14718 : 0 : return true;
14719 : : }
14720 : : }
14721 : 0 : switch (TREE_CODE (_q21))
14722 : : {
14723 : 0 : case INTEGER_CST:
14724 : 0 : {
14725 : 0 : switch (TREE_CODE (_p1))
14726 : : {
14727 : 0 : case SSA_NAME:
14728 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
14729 : : {
14730 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14731 : 0 : switch (gimple_assign_rhs_code (_a2))
14732 : : {
14733 : 0 : case MULT_EXPR:
14734 : 0 : {
14735 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
14736 : 0 : _q50 = do_valueize (valueize, _q50);
14737 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
14738 : 0 : _q51 = do_valueize (valueize, _q51);
14739 : 0 : if (tree_swap_operands_p (_q50, _q51))
14740 : 0 : std::swap (_q50, _q51);
14741 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14742 : : {
14743 : 0 : switch (TREE_CODE (_q51))
14744 : : {
14745 : 0 : case INTEGER_CST:
14746 : 0 : {
14747 : 0 : {
14748 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
14749 : 0 : if (gimple_simplify_349 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14750 : 0 : return true;
14751 : : }
14752 : 0 : break;
14753 : : }
14754 : : default:;
14755 : : }
14756 : : }
14757 : 348 : break;
14758 : : }
14759 : : default:;
14760 : : }
14761 : : }
14762 : : break;
14763 : 0 : case INTEGER_CST:
14764 : 0 : {
14765 : 0 : {
14766 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14767 : 0 : if (gimple_simplify_348 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR))
14768 : 0 : return true;
14769 : : }
14770 : 0 : break;
14771 : : }
14772 : : default:;
14773 : : }
14774 : : break;
14775 : : }
14776 : : default:;
14777 : : }
14778 : 348 : break;
14779 : : }
14780 : 0 : case VEC_COND_EXPR:
14781 : 0 : {
14782 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
14783 : 0 : _q20 = do_valueize (valueize, _q20);
14784 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
14785 : 0 : _q21 = do_valueize (valueize, _q21);
14786 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
14787 : 0 : _q22 = do_valueize (valueize, _q22);
14788 : 0 : switch (TREE_CODE (_p1))
14789 : : {
14790 : 0 : case SSA_NAME:
14791 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
14792 : : {
14793 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
14794 : 0 : switch (gimple_assign_rhs_code (_a2))
14795 : : {
14796 : 0 : case VEC_COND_EXPR:
14797 : 0 : {
14798 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
14799 : 0 : _q60 = do_valueize (valueize, _q60);
14800 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
14801 : 0 : _q61 = do_valueize (valueize, _q61);
14802 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
14803 : 0 : _q62 = do_valueize (valueize, _q62);
14804 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
14805 : : {
14806 : 0 : {
14807 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
14808 : 0 : if (VECTOR_TYPE_P (type)
14809 : 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
14810 : : || types_match (type, TREE_TYPE (captures[2]))
14811 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
14812 : : || (optimize_vectors_before_lowering_p ()
14813 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
14814 : : )
14815 : : {
14816 : 0 : gimple_seq *lseq = seq;
14817 : 0 : if (lseq
14818 : 0 : && (!single_use (captures[0])
14819 : 0 : || !single_use (captures[4])))
14820 : 0 : lseq = NULL;
14821 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2513;
14822 : 0 : {
14823 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
14824 : 0 : res_op->ops[0] = captures[1];
14825 : 0 : {
14826 : 0 : tree _o1[2], _r1;
14827 : 0 : _o1[0] = captures[2];
14828 : 0 : _o1[1] = captures[5];
14829 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14830 : 0 : tem_op.resimplify (NULL, valueize);
14831 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14832 : 0 : if (!_r1) goto next_after_fail2513;
14833 : 0 : res_op->ops[1] = _r1;
14834 : : }
14835 : 0 : {
14836 : 0 : tree _o1[2], _r1;
14837 : 0 : _o1[0] = captures[3];
14838 : 0 : _o1[1] = captures[6];
14839 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14840 : 0 : tem_op.resimplify (NULL, valueize);
14841 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14842 : 0 : if (!_r1) goto next_after_fail2513;
14843 : 0 : res_op->ops[2] = _r1;
14844 : : }
14845 : 0 : res_op->resimplify (lseq, valueize);
14846 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
14847 : 0 : return true;
14848 : : }
14849 : 0 : next_after_fail2513:;
14850 : : }
14851 : : }
14852 : : }
14853 : : break;
14854 : : }
14855 : : default:;
14856 : : }
14857 : : }
14858 : : break;
14859 : 0 : default:;
14860 : : }
14861 : 0 : {
14862 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
14863 : 0 : if (VECTOR_TYPE_P (type)
14864 : 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
14865 : : || types_match (type, TREE_TYPE (captures[2]))
14866 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
14867 : : || (optimize_vectors_before_lowering_p ()
14868 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
14869 : : )
14870 : : {
14871 : 0 : gimple_seq *lseq = seq;
14872 : 0 : if (lseq
14873 : 0 : && (!single_use (captures[0])))
14874 : 0 : lseq = NULL;
14875 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2514;
14876 : 0 : {
14877 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
14878 : 0 : res_op->ops[0] = captures[1];
14879 : 0 : {
14880 : 0 : tree _o1[2], _r1;
14881 : 0 : _o1[0] = captures[2];
14882 : 0 : _o1[1] = captures[4];
14883 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14884 : 0 : tem_op.resimplify (NULL, valueize);
14885 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14886 : 0 : if (!_r1) goto next_after_fail2514;
14887 : 0 : res_op->ops[1] = _r1;
14888 : : }
14889 : 0 : {
14890 : 0 : tree _o1[2], _r1;
14891 : 0 : _o1[0] = captures[3];
14892 : 0 : _o1[1] = captures[4];
14893 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14894 : 0 : tem_op.resimplify (NULL, valueize);
14895 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14896 : 0 : if (!_r1) goto next_after_fail2514;
14897 : 0 : res_op->ops[2] = _r1;
14898 : : }
14899 : 0 : res_op->resimplify (lseq, valueize);
14900 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
14901 : 0 : return true;
14902 : : }
14903 : 0 : next_after_fail2514:;
14904 : : }
14905 : : }
14906 : 0 : break;
14907 : : }
14908 : : default:;
14909 : : }
14910 : : }
14911 : : break;
14912 : 348 : default:;
14913 : : }
14914 : 348 : switch (TREE_CODE (_p1))
14915 : : {
14916 : 0 : case SSA_NAME:
14917 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
14918 : : {
14919 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
14920 : 0 : switch (gimple_assign_rhs_code (_a1))
14921 : : {
14922 : 0 : case VEC_COND_EXPR:
14923 : 0 : {
14924 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
14925 : 0 : _q30 = do_valueize (valueize, _q30);
14926 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
14927 : 0 : _q31 = do_valueize (valueize, _q31);
14928 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
14929 : 0 : _q32 = do_valueize (valueize, _q32);
14930 : 0 : {
14931 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
14932 : 0 : if (VECTOR_TYPE_P (type)
14933 : 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
14934 : : || types_match (type, TREE_TYPE (captures[3]))
14935 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
14936 : : || (optimize_vectors_before_lowering_p ()
14937 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
14938 : : )
14939 : : {
14940 : 0 : gimple_seq *lseq = seq;
14941 : 0 : if (lseq
14942 : 0 : && (!single_use (captures[1])))
14943 : 0 : lseq = NULL;
14944 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2515;
14945 : 0 : {
14946 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
14947 : 0 : res_op->ops[0] = captures[2];
14948 : 0 : {
14949 : 0 : tree _o1[2], _r1;
14950 : 0 : _o1[0] = captures[0];
14951 : 0 : _o1[1] = captures[3];
14952 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14953 : 0 : tem_op.resimplify (NULL, valueize);
14954 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14955 : 0 : if (!_r1) goto next_after_fail2515;
14956 : 0 : res_op->ops[1] = _r1;
14957 : : }
14958 : 0 : {
14959 : 0 : tree _o1[2], _r1;
14960 : 0 : _o1[0] = captures[0];
14961 : 0 : _o1[1] = captures[4];
14962 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), ROUND_DIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
14963 : 0 : tem_op.resimplify (NULL, valueize);
14964 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
14965 : 0 : if (!_r1) goto next_after_fail2515;
14966 : 0 : res_op->ops[2] = _r1;
14967 : : }
14968 : 0 : res_op->resimplify (lseq, valueize);
14969 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
14970 : 0 : return true;
14971 : : }
14972 : 0 : next_after_fail2515:;
14973 : : }
14974 : : }
14975 : 0 : break;
14976 : : }
14977 : : default:;
14978 : : }
14979 : : }
14980 : : break;
14981 : : default:;
14982 : : }
14983 : : return false;
14984 : : }
14985 : :
14986 : : bool
14987 : 9606 : gimple_simplify_FLOOR_MOD_EXPR (gimple_match_op *res_op, gimple_seq *seq,
14988 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
14989 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
14990 : : {
14991 : 9606 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14992 : 9606 : {
14993 : 9606 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
14994 : 9606 : if (gimple_simplify_352 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR, TRUNC_MOD_EXPR))
14995 : 0 : return true;
14996 : : }
14997 : 9606 : if (integer_zerop (_p0))
14998 : : {
14999 : 9 : {
15000 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
15001 : 9 : if (gimple_simplify_353 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15002 : 9 : return true;
15003 : : }
15004 : : }
15005 : 9597 : if (integer_onep (_p1))
15006 : : {
15007 : 5 : {
15008 : 5 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
15009 : 5 : if (gimple_simplify_354 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15010 : 5 : return true;
15011 : : }
15012 : : }
15013 : 9592 : if (integer_minus_onep (_p1))
15014 : : {
15015 : 0 : {
15016 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
15017 : 0 : if (gimple_simplify_355 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15018 : 0 : return true;
15019 : : }
15020 : : }
15021 : 9592 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
15022 : : {
15023 : 0 : {
15024 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
15025 : 0 : if (gimple_simplify_356 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15026 : 0 : return true;
15027 : : }
15028 : : }
15029 : 9592 : switch (TREE_CODE (_p0))
15030 : : {
15031 : 8935 : case SSA_NAME:
15032 : 8935 : if (gimple *_d1 = get_def (valueize, _p0))
15033 : : {
15034 : 5517 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15035 : 3995 : switch (gimple_assign_rhs_code (_a1))
15036 : : {
15037 : 0 : case FLOOR_MOD_EXPR:
15038 : 0 : {
15039 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
15040 : 0 : _q20 = do_valueize (valueize, _q20);
15041 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
15042 : 0 : _q21 = do_valueize (valueize, _q21);
15043 : 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
15044 : : {
15045 : 0 : {
15046 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
15047 : 0 : if (gimple_simplify_357 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15048 : 0 : return true;
15049 : : }
15050 : : }
15051 : : break;
15052 : : }
15053 : 48 : case MULT_EXPR:
15054 : 48 : {
15055 : 48 : tree _q20 = gimple_assign_rhs1 (_a1);
15056 : 48 : _q20 = do_valueize (valueize, _q20);
15057 : 48 : tree _q21 = gimple_assign_rhs2 (_a1);
15058 : 48 : _q21 = do_valueize (valueize, _q21);
15059 : 48 : if (tree_swap_operands_p (_q20, _q21))
15060 : 0 : std::swap (_q20, _q21);
15061 : 48 : switch (TREE_CODE (_q21))
15062 : : {
15063 : 48 : case INTEGER_CST:
15064 : 48 : {
15065 : 48 : switch (TREE_CODE (_p1))
15066 : : {
15067 : 48 : case INTEGER_CST:
15068 : 48 : {
15069 : 48 : {
15070 : 48 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15071 : 48 : if (gimple_simplify_358 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15072 : 0 : return true;
15073 : : }
15074 : 48 : break;
15075 : : }
15076 : : default:;
15077 : : }
15078 : : break;
15079 : : }
15080 : : default:;
15081 : : }
15082 : 9592 : break;
15083 : : }
15084 : : default:;
15085 : : }
15086 : : }
15087 : : break;
15088 : 9592 : default:;
15089 : : }
15090 : 9592 : switch (TREE_CODE (_p1))
15091 : : {
15092 : 2961 : case SSA_NAME:
15093 : 2961 : if (gimple *_d1 = get_def (valueize, _p1))
15094 : : {
15095 : 2228 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15096 : 2382 : switch (gimple_assign_rhs_code (_a1))
15097 : : {
15098 : 1718 : CASE_CONVERT:
15099 : 1718 : {
15100 : 1718 : tree _q30 = gimple_assign_rhs1 (_a1);
15101 : 1718 : _q30 = do_valueize (valueize, _q30);
15102 : 1718 : {
15103 : 1718 : tree _q30_pops[1];
15104 : 1718 : if (gimple_power_of_two_cand (_q30, _q30_pops, valueize))
15105 : : {
15106 : 0 : tree _q40 = _q30_pops[0];
15107 : 0 : {
15108 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
15109 : 0 : if (gimple_simplify_359 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15110 : 0 : return true;
15111 : : }
15112 : : }
15113 : : }
15114 : 1718 : break;
15115 : : }
15116 : : default:;
15117 : : }
15118 : : }
15119 : : break;
15120 : 9592 : default:;
15121 : : }
15122 : 9592 : {
15123 : 9592 : tree _p1_pops[1];
15124 : 9592 : if (gimple_power_of_two_cand (_p1, _p1_pops, valueize))
15125 : : {
15126 : 6448 : tree _q30 = _p1_pops[0];
15127 : 6448 : {
15128 : 6448 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
15129 : 6448 : if (gimple_simplify_359 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR))
15130 : 2 : return true;
15131 : : }
15132 : : }
15133 : : }
15134 : 9590 : switch (TREE_CODE (_p0))
15135 : : {
15136 : 8933 : case SSA_NAME:
15137 : 8933 : if (gimple *_d1 = get_def (valueize, _p0))
15138 : : {
15139 : 5515 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15140 : 3993 : switch (gimple_assign_rhs_code (_a1))
15141 : : {
15142 : 0 : case VEC_COND_EXPR:
15143 : 0 : {
15144 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
15145 : 0 : _q20 = do_valueize (valueize, _q20);
15146 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
15147 : 0 : _q21 = do_valueize (valueize, _q21);
15148 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
15149 : 0 : _q22 = do_valueize (valueize, _q22);
15150 : 0 : switch (TREE_CODE (_p1))
15151 : : {
15152 : 0 : case SSA_NAME:
15153 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
15154 : : {
15155 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15156 : 0 : switch (gimple_assign_rhs_code (_a2))
15157 : : {
15158 : 0 : case VEC_COND_EXPR:
15159 : 0 : {
15160 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
15161 : 0 : _q60 = do_valueize (valueize, _q60);
15162 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
15163 : 0 : _q61 = do_valueize (valueize, _q61);
15164 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
15165 : 0 : _q62 = do_valueize (valueize, _q62);
15166 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15167 : : {
15168 : 0 : {
15169 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
15170 : 0 : if (VECTOR_TYPE_P (type)
15171 : 0 : && (TREE_CODE_CLASS (FLOOR_MOD_EXPR) != tcc_comparison
15172 : : || types_match (type, TREE_TYPE (captures[2]))
15173 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
15174 : : || (optimize_vectors_before_lowering_p ()
15175 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
15176 : : )
15177 : : {
15178 : 0 : gimple_seq *lseq = seq;
15179 : 0 : if (lseq
15180 : 0 : && (!single_use (captures[0])
15181 : 0 : || !single_use (captures[4])))
15182 : 0 : lseq = NULL;
15183 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2521;
15184 : 0 : {
15185 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
15186 : 0 : res_op->ops[0] = captures[1];
15187 : 0 : {
15188 : 0 : tree _o1[2], _r1;
15189 : 0 : _o1[0] = captures[2];
15190 : 0 : _o1[1] = captures[5];
15191 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), FLOOR_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15192 : 0 : tem_op.resimplify (NULL, valueize);
15193 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15194 : 0 : if (!_r1) goto next_after_fail2521;
15195 : 0 : res_op->ops[1] = _r1;
15196 : : }
15197 : 0 : {
15198 : 0 : tree _o1[2], _r1;
15199 : 0 : _o1[0] = captures[3];
15200 : 0 : _o1[1] = captures[6];
15201 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), FLOOR_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15202 : 0 : tem_op.resimplify (NULL, valueize);
15203 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15204 : 0 : if (!_r1) goto next_after_fail2521;
15205 : 0 : res_op->ops[2] = _r1;
15206 : : }
15207 : 0 : res_op->resimplify (lseq, valueize);
15208 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
15209 : 0 : return true;
15210 : : }
15211 : 0 : next_after_fail2521:;
15212 : : }
15213 : : }
15214 : : }
15215 : : break;
15216 : : }
15217 : : default:;
15218 : : }
15219 : : }
15220 : : break;
15221 : 0 : default:;
15222 : : }
15223 : 0 : {
15224 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
15225 : 0 : if (VECTOR_TYPE_P (type)
15226 : 0 : && (TREE_CODE_CLASS (FLOOR_MOD_EXPR) != tcc_comparison
15227 : : || types_match (type, TREE_TYPE (captures[2]))
15228 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
15229 : : || (optimize_vectors_before_lowering_p ()
15230 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
15231 : : )
15232 : : {
15233 : 0 : gimple_seq *lseq = seq;
15234 : 0 : if (lseq
15235 : 0 : && (!single_use (captures[0])))
15236 : 0 : lseq = NULL;
15237 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2522;
15238 : 0 : {
15239 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
15240 : 0 : res_op->ops[0] = captures[1];
15241 : 0 : {
15242 : 0 : tree _o1[2], _r1;
15243 : 0 : _o1[0] = captures[2];
15244 : 0 : _o1[1] = captures[4];
15245 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), FLOOR_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15246 : 0 : tem_op.resimplify (NULL, valueize);
15247 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15248 : 0 : if (!_r1) goto next_after_fail2522;
15249 : 0 : res_op->ops[1] = _r1;
15250 : : }
15251 : 0 : {
15252 : 0 : tree _o1[2], _r1;
15253 : 0 : _o1[0] = captures[3];
15254 : 0 : _o1[1] = captures[4];
15255 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), FLOOR_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15256 : 0 : tem_op.resimplify (NULL, valueize);
15257 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15258 : 0 : if (!_r1) goto next_after_fail2522;
15259 : 0 : res_op->ops[2] = _r1;
15260 : : }
15261 : 0 : res_op->resimplify (lseq, valueize);
15262 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
15263 : 0 : return true;
15264 : : }
15265 : 0 : next_after_fail2522:;
15266 : : }
15267 : : }
15268 : 0 : break;
15269 : : }
15270 : : default:;
15271 : : }
15272 : : }
15273 : : break;
15274 : 9590 : default:;
15275 : : }
15276 : 9590 : switch (TREE_CODE (_p1))
15277 : : {
15278 : 2961 : case SSA_NAME:
15279 : 2961 : if (gimple *_d1 = get_def (valueize, _p1))
15280 : : {
15281 : 2228 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15282 : 2382 : switch (gimple_assign_rhs_code (_a1))
15283 : : {
15284 : 0 : case VEC_COND_EXPR:
15285 : 0 : {
15286 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
15287 : 0 : _q30 = do_valueize (valueize, _q30);
15288 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
15289 : 0 : _q31 = do_valueize (valueize, _q31);
15290 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
15291 : 0 : _q32 = do_valueize (valueize, _q32);
15292 : 0 : {
15293 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
15294 : 0 : if (VECTOR_TYPE_P (type)
15295 : 0 : && (TREE_CODE_CLASS (FLOOR_MOD_EXPR) != tcc_comparison
15296 : : || types_match (type, TREE_TYPE (captures[3]))
15297 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
15298 : : || (optimize_vectors_before_lowering_p ()
15299 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
15300 : : )
15301 : : {
15302 : 0 : gimple_seq *lseq = seq;
15303 : 0 : if (lseq
15304 : 0 : && (!single_use (captures[1])))
15305 : 0 : lseq = NULL;
15306 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2523;
15307 : 0 : {
15308 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
15309 : 0 : res_op->ops[0] = captures[2];
15310 : 0 : {
15311 : 0 : tree _o1[2], _r1;
15312 : 0 : _o1[0] = captures[0];
15313 : 0 : _o1[1] = captures[3];
15314 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), FLOOR_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15315 : 0 : tem_op.resimplify (NULL, valueize);
15316 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15317 : 0 : if (!_r1) goto next_after_fail2523;
15318 : 0 : res_op->ops[1] = _r1;
15319 : : }
15320 : 0 : {
15321 : 0 : tree _o1[2], _r1;
15322 : 0 : _o1[0] = captures[0];
15323 : 0 : _o1[1] = captures[4];
15324 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), FLOOR_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15325 : 0 : tem_op.resimplify (NULL, valueize);
15326 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
15327 : 0 : if (!_r1) goto next_after_fail2523;
15328 : 0 : res_op->ops[2] = _r1;
15329 : : }
15330 : 0 : res_op->resimplify (lseq, valueize);
15331 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
15332 : 0 : return true;
15333 : : }
15334 : 0 : next_after_fail2523:;
15335 : : }
15336 : : }
15337 : 0 : break;
15338 : : }
15339 : : default:;
15340 : : }
15341 : : }
15342 : : break;
15343 : : default:;
15344 : : }
15345 : : return false;
15346 : : }
15347 : :
15348 : : bool
15349 : 583930 : gimple_simplify_RDIV_EXPR (gimple_match_op *res_op, gimple_seq *seq,
15350 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
15351 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
15352 : : {
15353 : 583930 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
15354 : 583930 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
15355 : : {
15356 : 3057 : {
15357 : 3057 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
15358 : 220 : if (FLOAT_TYPE_P (type)
15359 : 3057 : && ! HONOR_NANS (type)
15360 : 3061 : && ! HONOR_INFINITIES (type)
15361 : : )
15362 : : {
15363 : 4 : gimple_seq *lseq = seq;
15364 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2524;
15365 : 4 : {
15366 : 4 : tree tem;
15367 : 4 : tem = build_one_cst (type);
15368 : 4 : res_op->set_value (tem);
15369 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1163, __FILE__, __LINE__, true);
15370 : 4 : return true;
15371 : : }
15372 : 0 : next_after_fail2524:;
15373 : : }
15374 : : }
15375 : : }
15376 : 583926 : switch (TREE_CODE (_p1))
15377 : : {
15378 : 489538 : case SSA_NAME:
15379 : 489538 : if (gimple *_d1 = get_def (valueize, _p1))
15380 : : {
15381 : 366594 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15382 : 326947 : switch (gimple_assign_rhs_code (_a1))
15383 : : {
15384 : 80 : case NEGATE_EXPR:
15385 : 80 : {
15386 : 80 : tree _q30 = gimple_assign_rhs1 (_a1);
15387 : 80 : _q30 = do_valueize (valueize, _q30);
15388 : 80 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
15389 : : {
15390 : 6 : {
15391 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
15392 : 6 : if (gimple_simplify_360 (res_op, seq, valueize, type, captures))
15393 : 6 : return true;
15394 : : }
15395 : : }
15396 : : break;
15397 : : }
15398 : : default:;
15399 : : }
15400 : : }
15401 : : break;
15402 : 583920 : default:;
15403 : : }
15404 : 583920 : switch (TREE_CODE (_p0))
15405 : : {
15406 : 326755 : case SSA_NAME:
15407 : 326755 : if (gimple *_d1 = get_def (valueize, _p0))
15408 : : {
15409 : 258726 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15410 : 252196 : switch (gimple_assign_rhs_code (_a1))
15411 : : {
15412 : 4779 : case NEGATE_EXPR:
15413 : 4779 : {
15414 : 4779 : tree _q20 = gimple_assign_rhs1 (_a1);
15415 : 4779 : _q20 = do_valueize (valueize, _q20);
15416 : 4779 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15417 : : {
15418 : 48 : {
15419 : 48 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
15420 : 48 : if (gimple_simplify_360 (res_op, seq, valueize, type, captures))
15421 : 0 : return true;
15422 : : }
15423 : : }
15424 : : break;
15425 : : }
15426 : 14647 : CASE_CONVERT:
15427 : 14647 : {
15428 : 14647 : tree _q20 = gimple_assign_rhs1 (_a1);
15429 : 14647 : _q20 = do_valueize (valueize, _q20);
15430 : 14647 : switch (TREE_CODE (_p1))
15431 : : {
15432 : 12480 : case SSA_NAME:
15433 : 12480 : if (gimple *_d2 = get_def (valueize, _p1))
15434 : : {
15435 : 11782 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15436 : 12148 : switch (gimple_assign_rhs_code (_a2))
15437 : : {
15438 : 9349 : CASE_CONVERT:
15439 : 9349 : {
15440 : 9349 : tree _q40 = gimple_assign_rhs1 (_a2);
15441 : 9349 : _q40 = do_valueize (valueize, _q40);
15442 : 9349 : switch (TREE_CODE (_q40))
15443 : : {
15444 : 9349 : case SSA_NAME:
15445 : 9349 : if (gimple *_d3 = get_def (valueize, _q40))
15446 : : {
15447 : 9186 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15448 : 7881 : switch (gimple_assign_rhs_code (_a3))
15449 : : {
15450 : 49 : case ABS_EXPR:
15451 : 49 : {
15452 : 49 : tree _q50 = gimple_assign_rhs1 (_a3);
15453 : 49 : _q50 = do_valueize (valueize, _q50);
15454 : 49 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15455 : : {
15456 : 2 : {
15457 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
15458 : 2 : if (gimple_simplify_361 (res_op, seq, valueize, type, captures))
15459 : 1 : return true;
15460 : : }
15461 : : }
15462 : : break;
15463 : : }
15464 : : default:;
15465 : : }
15466 : : }
15467 : : break;
15468 : : default:;
15469 : : }
15470 : : break;
15471 : : }
15472 : : default:;
15473 : : }
15474 : : }
15475 : : break;
15476 : 14646 : default:;
15477 : : }
15478 : 14646 : switch (TREE_CODE (_q20))
15479 : : {
15480 : 14646 : case SSA_NAME:
15481 : 14646 : if (gimple *_d2 = get_def (valueize, _q20))
15482 : : {
15483 : 14091 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
15484 : 14214 : switch (gimple_assign_rhs_code (_a2))
15485 : : {
15486 : 316 : case ABS_EXPR:
15487 : 316 : {
15488 : 316 : tree _q30 = gimple_assign_rhs1 (_a2);
15489 : 316 : _q30 = do_valueize (valueize, _q30);
15490 : 316 : switch (TREE_CODE (_p1))
15491 : : {
15492 : 308 : case SSA_NAME:
15493 : 308 : if (gimple *_d3 = get_def (valueize, _p1))
15494 : : {
15495 : 308 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
15496 : 292 : switch (gimple_assign_rhs_code (_a3))
15497 : : {
15498 : 276 : CASE_CONVERT:
15499 : 276 : {
15500 : 276 : tree _q50 = gimple_assign_rhs1 (_a3);
15501 : 276 : _q50 = do_valueize (valueize, _q50);
15502 : 276 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
15503 : : {
15504 : 0 : {
15505 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
15506 : 0 : if (gimple_simplify_361 (res_op, seq, valueize, type, captures))
15507 : 0 : return true;
15508 : : }
15509 : : }
15510 : : break;
15511 : : }
15512 : : default:;
15513 : : }
15514 : : }
15515 : : break;
15516 : : default:;
15517 : : }
15518 : : break;
15519 : : }
15520 : : default:;
15521 : : }
15522 : : }
15523 : : break;
15524 : : default:;
15525 : : }
15526 : : break;
15527 : : }
15528 : : default:;
15529 : : }
15530 : : }
15531 : : break;
15532 : 583919 : default:;
15533 : : }
15534 : 583919 : switch (TREE_CODE (_p1))
15535 : : {
15536 : 489531 : case SSA_NAME:
15537 : 489531 : if (gimple *_d1 = get_def (valueize, _p1))
15538 : : {
15539 : 366587 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15540 : 326940 : switch (gimple_assign_rhs_code (_a1))
15541 : : {
15542 : 1588 : case ABS_EXPR:
15543 : 1588 : {
15544 : 1588 : tree _q30 = gimple_assign_rhs1 (_a1);
15545 : 1588 : _q30 = do_valueize (valueize, _q30);
15546 : 1588 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
15547 : : {
15548 : 41 : {
15549 : 41 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
15550 : 41 : if (gimple_simplify_361 (res_op, seq, valueize, type, captures))
15551 : 8 : return true;
15552 : : }
15553 : : }
15554 : : break;
15555 : : }
15556 : : default:;
15557 : : }
15558 : : }
15559 : : break;
15560 : 583911 : default:;
15561 : : }
15562 : 583911 : switch (TREE_CODE (_p0))
15563 : : {
15564 : 326746 : case SSA_NAME:
15565 : 326746 : if (gimple *_d1 = get_def (valueize, _p0))
15566 : : {
15567 : 258717 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15568 : 252193 : switch (gimple_assign_rhs_code (_a1))
15569 : : {
15570 : 2897 : case ABS_EXPR:
15571 : 2897 : {
15572 : 2897 : tree _q20 = gimple_assign_rhs1 (_a1);
15573 : 2897 : _q20 = do_valueize (valueize, _q20);
15574 : 2897 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15575 : : {
15576 : 6 : {
15577 : 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
15578 : 6 : if (gimple_simplify_361 (res_op, seq, valueize, type, captures))
15579 : 6 : return true;
15580 : : }
15581 : : }
15582 : : break;
15583 : : }
15584 : : default:;
15585 : : }
15586 : : }
15587 : : break;
15588 : 583905 : default:;
15589 : : }
15590 : 583905 : if (real_onep (_p1))
15591 : : {
15592 : 3575 : {
15593 : 3575 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
15594 : 3575 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
15595 : : )
15596 : : {
15597 : 3575 : gimple_seq *lseq = seq;
15598 : 3575 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2525;
15599 : 3575 : {
15600 : 3575 : tree tem;
15601 : 3575 : tem = captures[0];
15602 : 3575 : res_op->set_value (tem);
15603 : 3575 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1164, __FILE__, __LINE__, true);
15604 : 3575 : return true;
15605 : : }
15606 : 0 : next_after_fail2525:;
15607 : : }
15608 : : }
15609 : : }
15610 : 580330 : if (real_minus_onep (_p1))
15611 : : {
15612 : 48 : {
15613 : 48 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
15614 : 48 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
15615 : : )
15616 : : {
15617 : 48 : gimple_seq *lseq = seq;
15618 : 48 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2526;
15619 : 48 : {
15620 : 48 : res_op->set_op (NEGATE_EXPR, type, 1);
15621 : 48 : res_op->ops[0] = captures[0];
15622 : 48 : res_op->resimplify (lseq, valueize);
15623 : 48 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1165, __FILE__, __LINE__, true);
15624 : 48 : return true;
15625 : : }
15626 : 0 : next_after_fail2526:;
15627 : : }
15628 : : }
15629 : : }
15630 : 580282 : switch (TREE_CODE (_p0))
15631 : : {
15632 : 323117 : case SSA_NAME:
15633 : 323117 : if (gimple *_d1 = get_def (valueize, _p0))
15634 : : {
15635 : 255588 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15636 : 249349 : switch (gimple_assign_rhs_code (_a1))
15637 : : {
15638 : 7545 : case RDIV_EXPR:
15639 : 7545 : {
15640 : 7545 : tree _q20 = gimple_assign_rhs1 (_a1);
15641 : 7545 : _q20 = do_valueize (valueize, _q20);
15642 : 7545 : tree _q21 = gimple_assign_rhs2 (_a1);
15643 : 7545 : _q21 = do_valueize (valueize, _q21);
15644 : 7545 : {
15645 : 7545 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
15646 : 7545 : if (flag_reciprocal_math
15647 : : )
15648 : : {
15649 : 51 : gimple_seq *lseq = seq;
15650 : 51 : if (lseq
15651 : 12 : && (!single_use (captures[0])))
15652 : 51 : lseq = NULL;
15653 : 51 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2527;
15654 : 51 : {
15655 : 51 : res_op->set_op (RDIV_EXPR, type, 2);
15656 : 51 : res_op->ops[0] = captures[1];
15657 : 51 : {
15658 : 51 : tree _o1[2], _r1;
15659 : 51 : _o1[0] = captures[2];
15660 : 51 : _o1[1] = captures[3];
15661 : 51 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15662 : 51 : tem_op.resimplify (lseq, valueize);
15663 : 51 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15664 : 51 : if (!_r1) goto next_after_fail2527;
15665 : 0 : res_op->ops[1] = _r1;
15666 : : }
15667 : 0 : res_op->resimplify (lseq, valueize);
15668 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1166, __FILE__, __LINE__, true);
15669 : 0 : return true;
15670 : : }
15671 : 7545 : next_after_fail2527:;
15672 : : }
15673 : : }
15674 : 7545 : break;
15675 : : }
15676 : : default:;
15677 : : }
15678 : : }
15679 : : break;
15680 : 580282 : default:;
15681 : : }
15682 : 580282 : switch (TREE_CODE (_p1))
15683 : : {
15684 : 489517 : case SSA_NAME:
15685 : 489517 : if (gimple *_d1 = get_def (valueize, _p1))
15686 : : {
15687 : 366573 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
15688 : 326932 : switch (gimple_assign_rhs_code (_a1))
15689 : : {
15690 : 28113 : case MULT_EXPR:
15691 : 28113 : {
15692 : 28113 : tree _q30 = gimple_assign_rhs1 (_a1);
15693 : 28113 : _q30 = do_valueize (valueize, _q30);
15694 : 28113 : tree _q31 = gimple_assign_rhs2 (_a1);
15695 : 28113 : _q31 = do_valueize (valueize, _q31);
15696 : 28113 : if (tree_swap_operands_p (_q30, _q31))
15697 : 773 : std::swap (_q30, _q31);
15698 : 28113 : switch (TREE_CODE (_q31))
15699 : : {
15700 : 13596 : case REAL_CST:
15701 : 13596 : {
15702 : 13596 : {
15703 : 13596 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
15704 : 13596 : if (flag_reciprocal_math
15705 : : )
15706 : : {
15707 : 126 : {
15708 : 126 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[3]);
15709 : 126 : if (tem
15710 : : )
15711 : : {
15712 : 126 : gimple_seq *lseq = seq;
15713 : 126 : if (lseq
15714 : 43 : && (!single_use (captures[1])))
15715 : 126 : lseq = NULL;
15716 : 126 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2528;
15717 : 126 : {
15718 : 126 : res_op->set_op (RDIV_EXPR, type, 2);
15719 : 126 : {
15720 : 126 : tree _o1[2], _r1;
15721 : 126 : _o1[0] = captures[0];
15722 : 126 : _o1[1] = tem;
15723 : 126 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15724 : 126 : tem_op.resimplify (lseq, valueize);
15725 : 126 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15726 : 126 : if (!_r1) goto next_after_fail2528;
15727 : 4 : res_op->ops[0] = _r1;
15728 : : }
15729 : 4 : res_op->ops[1] = captures[2];
15730 : 4 : res_op->resimplify (lseq, valueize);
15731 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1167, __FILE__, __LINE__, true);
15732 : 4 : return true;
15733 : : }
15734 : 13592 : next_after_fail2528:;
15735 : : }
15736 : : }
15737 : : }
15738 : : }
15739 : 13592 : break;
15740 : : }
15741 : : default:;
15742 : : }
15743 : 576571 : break;
15744 : : }
15745 : 13432 : case RDIV_EXPR:
15746 : 13432 : {
15747 : 13432 : tree _q30 = gimple_assign_rhs1 (_a1);
15748 : 13432 : _q30 = do_valueize (valueize, _q30);
15749 : 13432 : tree _q31 = gimple_assign_rhs2 (_a1);
15750 : 13432 : _q31 = do_valueize (valueize, _q31);
15751 : 13432 : {
15752 : 13432 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
15753 : 13432 : if (flag_reciprocal_math
15754 : : )
15755 : : {
15756 : 0 : gimple_seq *lseq = seq;
15757 : 0 : if (lseq
15758 : 0 : && (!single_use (captures[1])))
15759 : 0 : lseq = NULL;
15760 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2529;
15761 : 0 : {
15762 : 0 : res_op->set_op (MULT_EXPR, type, 2);
15763 : 0 : {
15764 : 0 : tree _o1[2], _r1;
15765 : 0 : _o1[0] = captures[0];
15766 : 0 : _o1[1] = captures[2];
15767 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
15768 : 0 : tem_op.resimplify (lseq, valueize);
15769 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15770 : 0 : if (!_r1) goto next_after_fail2529;
15771 : 0 : res_op->ops[0] = _r1;
15772 : : }
15773 : 0 : res_op->ops[1] = captures[3];
15774 : 0 : res_op->resimplify (lseq, valueize);
15775 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1168, __FILE__, __LINE__, true);
15776 : 0 : return true;
15777 : : }
15778 : 13432 : next_after_fail2529:;
15779 : : }
15780 : : }
15781 : 13432 : break;
15782 : : }
15783 : 74 : case NEGATE_EXPR:
15784 : 74 : {
15785 : 74 : tree _q30 = gimple_assign_rhs1 (_a1);
15786 : 74 : _q30 = do_valueize (valueize, _q30);
15787 : 74 : {
15788 : 74 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
15789 : 74 : gimple_seq *lseq = seq;
15790 : 74 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2530;
15791 : 74 : {
15792 : 74 : res_op->set_op (RDIV_EXPR, type, 2);
15793 : 74 : {
15794 : 74 : tree _o1[1], _r1;
15795 : 74 : _o1[0] = captures[0];
15796 : 74 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
15797 : 74 : tem_op.resimplify (lseq, valueize);
15798 : 74 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
15799 : 74 : if (!_r1) goto next_after_fail2530;
15800 : 45 : res_op->ops[0] = _r1;
15801 : : }
15802 : 45 : res_op->ops[1] = captures[1];
15803 : 45 : res_op->resimplify (lseq, valueize);
15804 : 45 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1169, __FILE__, __LINE__, true);
15805 : 45 : return true;
15806 : : }
15807 : 29 : next_after_fail2530:;
15808 : : }
15809 : 29 : break;
15810 : : }
15811 : : default:;
15812 : : }
15813 : : }
15814 : : break;
15815 : 76240 : case REAL_CST:
15816 : 76240 : {
15817 : 76240 : {
15818 : 76240 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
15819 : 76240 : if (optimize
15820 : : )
15821 : : {
15822 : 75829 : if (flag_reciprocal_math
15823 : 75829 : && !real_zerop (captures[1])
15824 : : )
15825 : : {
15826 : 45 : {
15827 : 45 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
15828 : 45 : if (tem
15829 : : )
15830 : : {
15831 : 27 : gimple_seq *lseq = seq;
15832 : 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2531;
15833 : 27 : {
15834 : 27 : res_op->set_op (MULT_EXPR, type, 2);
15835 : 27 : res_op->ops[0] = captures[0];
15836 : 27 : res_op->ops[1] = tem;
15837 : 27 : res_op->resimplify (lseq, valueize);
15838 : 27 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1170, __FILE__, __LINE__, true);
15839 : 27 : return true;
15840 : : }
15841 : 0 : next_after_fail2531:;
15842 : : }
15843 : : }
15844 : : }
15845 : : else
15846 : : {
15847 : 75784 : if (REAL_CST != COMPLEX_CST
15848 : : )
15849 : : {
15850 : 75784 : {
15851 : 75784 : tree inverse = exact_inverse (type, captures[1]);
15852 : 75784 : if (inverse
15853 : : )
15854 : : {
15855 : 3601 : gimple_seq *lseq = seq;
15856 : 3601 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2532;
15857 : 3601 : {
15858 : 3601 : res_op->set_op (MULT_EXPR, type, 2);
15859 : 3601 : res_op->ops[0] = captures[0];
15860 : 3601 : res_op->ops[1] = inverse;
15861 : 3601 : res_op->resimplify (lseq, valueize);
15862 : 3601 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1171, __FILE__, __LINE__, true);
15863 : 3601 : return true;
15864 : : }
15865 : 0 : next_after_fail2532:;
15866 : : }
15867 : : }
15868 : : }
15869 : : }
15870 : : }
15871 : : }
15872 : 72612 : break;
15873 : : }
15874 : 3973 : case COMPLEX_CST:
15875 : 3973 : {
15876 : 3973 : {
15877 : 3973 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
15878 : 3973 : if (optimize
15879 : : )
15880 : : {
15881 : 3965 : if (flag_reciprocal_math
15882 : 3965 : && !real_zerop (captures[1])
15883 : : )
15884 : : {
15885 : 2 : {
15886 : 2 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
15887 : 2 : if (tem
15888 : : )
15889 : : {
15890 : 2 : gimple_seq *lseq = seq;
15891 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2533;
15892 : 2 : {
15893 : 2 : res_op->set_op (MULT_EXPR, type, 2);
15894 : 2 : res_op->ops[0] = captures[0];
15895 : 2 : res_op->ops[1] = tem;
15896 : 2 : res_op->resimplify (lseq, valueize);
15897 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1170, __FILE__, __LINE__, true);
15898 : 2 : return true;
15899 : : }
15900 : 0 : next_after_fail2533:;
15901 : : }
15902 : : }
15903 : : }
15904 : : else
15905 : : {
15906 : : if (COMPLEX_CST != COMPLEX_CST
15907 : : )
15908 : : {
15909 : : {
15910 : : tree inverse = exact_inverse (type, captures[1]);
15911 : : if (inverse
15912 : : )
15913 : : {
15914 : : gimple_seq *lseq = seq;
15915 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2534;
15916 : : {
15917 : : res_op->set_op (MULT_EXPR, type, 2);
15918 : : res_op->ops[0] = captures[0];
15919 : : res_op->ops[1] = inverse;
15920 : : res_op->resimplify (lseq, valueize);
15921 : : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1171, __FILE__, __LINE__, true);
15922 : : return true;
15923 : : }
15924 : : next_after_fail2534:;
15925 : : }
15926 : : }
15927 : : }
15928 : : }
15929 : : }
15930 : : }
15931 : 3971 : break;
15932 : : }
15933 : 516 : case VECTOR_CST:
15934 : 516 : {
15935 : 516 : {
15936 : 516 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
15937 : 516 : if (optimize
15938 : : )
15939 : : {
15940 : 506 : if (flag_reciprocal_math
15941 : 506 : && !real_zerop (captures[1])
15942 : : )
15943 : : {
15944 : 30 : {
15945 : 30 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
15946 : 30 : if (tem
15947 : : )
15948 : : {
15949 : 2 : gimple_seq *lseq = seq;
15950 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2535;
15951 : 2 : {
15952 : 2 : res_op->set_op (MULT_EXPR, type, 2);
15953 : 2 : res_op->ops[0] = captures[0];
15954 : 2 : res_op->ops[1] = tem;
15955 : 2 : res_op->resimplify (lseq, valueize);
15956 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1170, __FILE__, __LINE__, true);
15957 : 2 : return true;
15958 : : }
15959 : 0 : next_after_fail2535:;
15960 : : }
15961 : : }
15962 : : }
15963 : : else
15964 : : {
15965 : 476 : if (VECTOR_CST != COMPLEX_CST
15966 : : )
15967 : : {
15968 : 476 : {
15969 : 476 : tree inverse = exact_inverse (type, captures[1]);
15970 : 476 : if (inverse
15971 : : )
15972 : : {
15973 : 30 : gimple_seq *lseq = seq;
15974 : 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2536;
15975 : 30 : {
15976 : 30 : res_op->set_op (MULT_EXPR, type, 2);
15977 : 30 : res_op->ops[0] = captures[0];
15978 : 30 : res_op->ops[1] = inverse;
15979 : 30 : res_op->resimplify (lseq, valueize);
15980 : 30 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1171, __FILE__, __LINE__, true);
15981 : 30 : return true;
15982 : : }
15983 : 0 : next_after_fail2536:;
15984 : : }
15985 : : }
15986 : : }
15987 : : }
15988 : : }
15989 : : }
15990 : 484 : break;
15991 : : }
15992 : 576571 : default:;
15993 : : }
15994 : 576571 : switch (TREE_CODE (_p0))
15995 : : {
15996 : 319452 : case SSA_NAME:
15997 : 319452 : if (gimple *_d1 = get_def (valueize, _p0))
15998 : : {
15999 : 252773 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16000 : 246181 : switch (gimple_assign_rhs_code (_a1))
16001 : : {
16002 : 0 : case VEC_COND_EXPR:
16003 : 0 : {
16004 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
16005 : 0 : _q20 = do_valueize (valueize, _q20);
16006 : 0 : tree _q21 = gimple_assign_rhs2 (_a1);
16007 : 0 : _q21 = do_valueize (valueize, _q21);
16008 : 0 : tree _q22 = gimple_assign_rhs3 (_a1);
16009 : 0 : _q22 = do_valueize (valueize, _q22);
16010 : 0 : switch (TREE_CODE (_p1))
16011 : : {
16012 : 0 : case SSA_NAME:
16013 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
16014 : : {
16015 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16016 : 0 : switch (gimple_assign_rhs_code (_a2))
16017 : : {
16018 : 0 : case VEC_COND_EXPR:
16019 : 0 : {
16020 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
16021 : 0 : _q60 = do_valueize (valueize, _q60);
16022 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
16023 : 0 : _q61 = do_valueize (valueize, _q61);
16024 : 0 : tree _q62 = gimple_assign_rhs3 (_a2);
16025 : 0 : _q62 = do_valueize (valueize, _q62);
16026 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16027 : : {
16028 : 0 : {
16029 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
16030 : 0 : if (VECTOR_TYPE_P (type)
16031 : 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
16032 : : || types_match (type, TREE_TYPE (captures[2]))
16033 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
16034 : : || (optimize_vectors_before_lowering_p ()
16035 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
16036 : : )
16037 : : {
16038 : 0 : gimple_seq *lseq = seq;
16039 : 0 : if (lseq
16040 : 0 : && (!single_use (captures[0])
16041 : 0 : || !single_use (captures[4])))
16042 : 0 : lseq = NULL;
16043 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2537;
16044 : 0 : {
16045 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
16046 : 0 : res_op->ops[0] = captures[1];
16047 : 0 : {
16048 : 0 : tree _o1[2], _r1;
16049 : 0 : _o1[0] = captures[2];
16050 : 0 : _o1[1] = captures[5];
16051 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16052 : 0 : tem_op.resimplify (NULL, valueize);
16053 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16054 : 0 : if (!_r1) goto next_after_fail2537;
16055 : 0 : res_op->ops[1] = _r1;
16056 : : }
16057 : 0 : {
16058 : 0 : tree _o1[2], _r1;
16059 : 0 : _o1[0] = captures[3];
16060 : 0 : _o1[1] = captures[6];
16061 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16062 : 0 : tem_op.resimplify (NULL, valueize);
16063 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16064 : 0 : if (!_r1) goto next_after_fail2537;
16065 : 0 : res_op->ops[2] = _r1;
16066 : : }
16067 : 0 : res_op->resimplify (lseq, valueize);
16068 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
16069 : 0 : return true;
16070 : : }
16071 : 0 : next_after_fail2537:;
16072 : : }
16073 : : }
16074 : : }
16075 : : break;
16076 : : }
16077 : : default:;
16078 : : }
16079 : : }
16080 : : break;
16081 : 0 : default:;
16082 : : }
16083 : 0 : {
16084 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
16085 : 0 : if (VECTOR_TYPE_P (type)
16086 : 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
16087 : : || types_match (type, TREE_TYPE (captures[2]))
16088 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
16089 : : || (optimize_vectors_before_lowering_p ()
16090 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
16091 : : )
16092 : : {
16093 : 0 : gimple_seq *lseq = seq;
16094 : 0 : if (lseq
16095 : 0 : && (!single_use (captures[0])))
16096 : 0 : lseq = NULL;
16097 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2538;
16098 : 0 : {
16099 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
16100 : 0 : res_op->ops[0] = captures[1];
16101 : 0 : {
16102 : 0 : tree _o1[2], _r1;
16103 : 0 : _o1[0] = captures[2];
16104 : 0 : _o1[1] = captures[4];
16105 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16106 : 0 : tem_op.resimplify (NULL, valueize);
16107 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16108 : 0 : if (!_r1) goto next_after_fail2538;
16109 : 0 : res_op->ops[1] = _r1;
16110 : : }
16111 : 0 : {
16112 : 0 : tree _o1[2], _r1;
16113 : 0 : _o1[0] = captures[3];
16114 : 0 : _o1[1] = captures[4];
16115 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16116 : 0 : tem_op.resimplify (NULL, valueize);
16117 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16118 : 0 : if (!_r1) goto next_after_fail2538;
16119 : 0 : res_op->ops[2] = _r1;
16120 : : }
16121 : 0 : res_op->resimplify (lseq, valueize);
16122 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
16123 : 0 : return true;
16124 : : }
16125 : 0 : next_after_fail2538:;
16126 : : }
16127 : : }
16128 : 0 : break;
16129 : : }
16130 : : default:;
16131 : : }
16132 : : }
16133 : : break;
16134 : 576571 : default:;
16135 : : }
16136 : 576571 : switch (TREE_CODE (_p1))
16137 : : {
16138 : 489468 : case SSA_NAME:
16139 : 489468 : if (gimple *_d1 = get_def (valueize, _p1))
16140 : : {
16141 : 366524 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
16142 : 326883 : switch (gimple_assign_rhs_code (_a1))
16143 : : {
16144 : 0 : case VEC_COND_EXPR:
16145 : 0 : {
16146 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
16147 : 0 : _q30 = do_valueize (valueize, _q30);
16148 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
16149 : 0 : _q31 = do_valueize (valueize, _q31);
16150 : 0 : tree _q32 = gimple_assign_rhs3 (_a1);
16151 : 0 : _q32 = do_valueize (valueize, _q32);
16152 : 0 : {
16153 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
16154 : 0 : if (VECTOR_TYPE_P (type)
16155 : 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
16156 : : || types_match (type, TREE_TYPE (captures[3]))
16157 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
16158 : : || (optimize_vectors_before_lowering_p ()
16159 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
16160 : : )
16161 : : {
16162 : 0 : gimple_seq *lseq = seq;
16163 : 0 : if (lseq
16164 : 0 : && (!single_use (captures[1])))
16165 : 0 : lseq = NULL;
16166 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2539;
16167 : 0 : {
16168 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
16169 : 0 : res_op->ops[0] = captures[2];
16170 : 0 : {
16171 : 0 : tree _o1[2], _r1;
16172 : 0 : _o1[0] = captures[0];
16173 : 0 : _o1[1] = captures[3];
16174 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16175 : 0 : tem_op.resimplify (NULL, valueize);
16176 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16177 : 0 : if (!_r1) goto next_after_fail2539;
16178 : 0 : res_op->ops[1] = _r1;
16179 : : }
16180 : 0 : {
16181 : 0 : tree _o1[2], _r1;
16182 : 0 : _o1[0] = captures[0];
16183 : 0 : _o1[1] = captures[4];
16184 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
16185 : 0 : tem_op.resimplify (NULL, valueize);
16186 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
16187 : 0 : if (!_r1) goto next_after_fail2539;
16188 : 0 : res_op->ops[2] = _r1;
16189 : : }
16190 : 0 : res_op->resimplify (lseq, valueize);
16191 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
16192 : 0 : return true;
16193 : : }
16194 : 0 : next_after_fail2539:;
16195 : : }
16196 : : }
16197 : 0 : break;
16198 : : }
16199 : : default:;
16200 : : }
16201 : 76716 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
16202 : 23540 : switch (gimple_call_combined_fn (_c1))
16203 : : {
16204 : 1102 : case CFN_BUILT_IN_SQRTF:
16205 : 1102 : if (gimple_call_num_args (_c1) == 1)
16206 : : {
16207 : 1102 : tree _q30 = gimple_call_arg (_c1, 0);
16208 : 1102 : _q30 = do_valueize (valueize, _q30);
16209 : 1102 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
16210 : : {
16211 : 4 : {
16212 : 4 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
16213 : 4 : if (gimple_simplify_362 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF))
16214 : 4 : return true;
16215 : : }
16216 : : }
16217 : 1098 : switch (TREE_CODE (_q30))
16218 : : {
16219 : 1094 : case SSA_NAME:
16220 : 1094 : if (gimple *_d2 = get_def (valueize, _q30))
16221 : : {
16222 : 1054 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16223 : 566 : switch (gimple_assign_rhs_code (_a2))
16224 : : {
16225 : 20 : case RDIV_EXPR:
16226 : 20 : {
16227 : 20 : tree _q40 = gimple_assign_rhs1 (_a2);
16228 : 20 : _q40 = do_valueize (valueize, _q40);
16229 : 20 : tree _q41 = gimple_assign_rhs2 (_a2);
16230 : 20 : _q41 = do_valueize (valueize, _q41);
16231 : 20 : {
16232 : 20 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
16233 : 20 : if (flag_unsafe_math_optimizations
16234 : : )
16235 : : {
16236 : 0 : gimple_seq *lseq = seq;
16237 : 0 : if (lseq
16238 : 0 : && (!single_use (captures[1])
16239 : 0 : || !single_use (captures[2])))
16240 : 0 : lseq = NULL;
16241 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2540;
16242 : 0 : {
16243 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16244 : 0 : res_op->ops[0] = captures[0];
16245 : 0 : {
16246 : 0 : tree _o1[1], _r1;
16247 : 0 : {
16248 : 0 : tree _o2[2], _r2;
16249 : 0 : _o2[0] = captures[4];
16250 : 0 : _o2[1] = captures[3];
16251 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16252 : 0 : tem_op.resimplify (lseq, valueize);
16253 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16254 : 0 : if (!_r2) goto next_after_fail2540;
16255 : 0 : _o1[0] = _r2;
16256 : : }
16257 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SQRTF, TREE_TYPE (_o1[0]), _o1[0]);
16258 : 0 : tem_op.resimplify (lseq, valueize);
16259 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16260 : 0 : if (!_r1) goto next_after_fail2540;
16261 : 0 : res_op->ops[1] = _r1;
16262 : : }
16263 : 0 : res_op->resimplify (lseq, valueize);
16264 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1172, __FILE__, __LINE__, true);
16265 : 0 : return true;
16266 : : }
16267 : 20 : next_after_fail2540:;
16268 : : }
16269 : : }
16270 : 20 : break;
16271 : : }
16272 : : default:;
16273 : : }
16274 : : }
16275 : : break;
16276 : : default:;
16277 : : }
16278 : : }
16279 : : break;
16280 : 712 : case CFN_BUILT_IN_SQRTL:
16281 : 712 : if (gimple_call_num_args (_c1) == 1)
16282 : : {
16283 : 712 : tree _q30 = gimple_call_arg (_c1, 0);
16284 : 712 : _q30 = do_valueize (valueize, _q30);
16285 : 712 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
16286 : : {
16287 : 2 : {
16288 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
16289 : 2 : if (gimple_simplify_362 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL))
16290 : 2 : return true;
16291 : : }
16292 : : }
16293 : 710 : switch (TREE_CODE (_q30))
16294 : : {
16295 : 706 : case SSA_NAME:
16296 : 706 : if (gimple *_d2 = get_def (valueize, _q30))
16297 : : {
16298 : 690 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16299 : 238 : switch (gimple_assign_rhs_code (_a2))
16300 : : {
16301 : 16 : case RDIV_EXPR:
16302 : 16 : {
16303 : 16 : tree _q40 = gimple_assign_rhs1 (_a2);
16304 : 16 : _q40 = do_valueize (valueize, _q40);
16305 : 16 : tree _q41 = gimple_assign_rhs2 (_a2);
16306 : 16 : _q41 = do_valueize (valueize, _q41);
16307 : 16 : {
16308 : 16 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
16309 : 16 : if (flag_unsafe_math_optimizations
16310 : : )
16311 : : {
16312 : 0 : gimple_seq *lseq = seq;
16313 : 0 : if (lseq
16314 : 0 : && (!single_use (captures[1])
16315 : 0 : || !single_use (captures[2])))
16316 : 0 : lseq = NULL;
16317 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2541;
16318 : 0 : {
16319 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16320 : 0 : res_op->ops[0] = captures[0];
16321 : 0 : {
16322 : 0 : tree _o1[1], _r1;
16323 : 0 : {
16324 : 0 : tree _o2[2], _r2;
16325 : 0 : _o2[0] = captures[4];
16326 : 0 : _o2[1] = captures[3];
16327 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16328 : 0 : tem_op.resimplify (lseq, valueize);
16329 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16330 : 0 : if (!_r2) goto next_after_fail2541;
16331 : 0 : _o1[0] = _r2;
16332 : : }
16333 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SQRTL, TREE_TYPE (_o1[0]), _o1[0]);
16334 : 0 : tem_op.resimplify (lseq, valueize);
16335 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16336 : 0 : if (!_r1) goto next_after_fail2541;
16337 : 0 : res_op->ops[1] = _r1;
16338 : : }
16339 : 0 : res_op->resimplify (lseq, valueize);
16340 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1172, __FILE__, __LINE__, true);
16341 : 0 : return true;
16342 : : }
16343 : 16 : next_after_fail2541:;
16344 : : }
16345 : : }
16346 : 16 : break;
16347 : : }
16348 : : default:;
16349 : : }
16350 : : }
16351 : : break;
16352 : : default:;
16353 : : }
16354 : : }
16355 : : break;
16356 : 394 : case CFN_BUILT_IN_EXP:
16357 : 394 : if (gimple_call_num_args (_c1) == 1)
16358 : : {
16359 : 394 : tree _q30 = gimple_call_arg (_c1, 0);
16360 : 394 : _q30 = do_valueize (valueize, _q30);
16361 : 394 : {
16362 : 394 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16363 : 394 : if (flag_unsafe_math_optimizations
16364 : : )
16365 : : {
16366 : 0 : gimple_seq *lseq = seq;
16367 : 0 : if (lseq
16368 : 0 : && (!single_use (captures[1])))
16369 : 0 : lseq = NULL;
16370 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2542;
16371 : 0 : {
16372 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16373 : 0 : res_op->ops[0] = captures[0];
16374 : 0 : {
16375 : 0 : tree _o1[1], _r1;
16376 : 0 : {
16377 : 0 : tree _o2[1], _r2;
16378 : 0 : _o2[0] = captures[2];
16379 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16380 : 0 : tem_op.resimplify (lseq, valueize);
16381 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16382 : 0 : if (!_r2) goto next_after_fail2542;
16383 : 0 : _o1[0] = _r2;
16384 : : }
16385 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP, TREE_TYPE (_o1[0]), _o1[0]);
16386 : 0 : tem_op.resimplify (lseq, valueize);
16387 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16388 : 0 : if (!_r1) goto next_after_fail2542;
16389 : 0 : res_op->ops[1] = _r1;
16390 : : }
16391 : 0 : res_op->resimplify (lseq, valueize);
16392 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16393 : 0 : return true;
16394 : : }
16395 : 394 : next_after_fail2542:;
16396 : : }
16397 : : }
16398 : : }
16399 : : break;
16400 : 0 : case CFN_BUILT_IN_EXP10F:
16401 : 0 : if (gimple_call_num_args (_c1) == 1)
16402 : : {
16403 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
16404 : 0 : _q30 = do_valueize (valueize, _q30);
16405 : 0 : {
16406 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16407 : 0 : if (flag_unsafe_math_optimizations
16408 : : )
16409 : : {
16410 : 0 : gimple_seq *lseq = seq;
16411 : 0 : if (lseq
16412 : 0 : && (!single_use (captures[1])))
16413 : 0 : lseq = NULL;
16414 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2543;
16415 : 0 : {
16416 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16417 : 0 : res_op->ops[0] = captures[0];
16418 : 0 : {
16419 : 0 : tree _o1[1], _r1;
16420 : 0 : {
16421 : 0 : tree _o2[1], _r2;
16422 : 0 : _o2[0] = captures[2];
16423 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16424 : 0 : tem_op.resimplify (lseq, valueize);
16425 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16426 : 0 : if (!_r2) goto next_after_fail2543;
16427 : 0 : _o1[0] = _r2;
16428 : : }
16429 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP10F, TREE_TYPE (_o1[0]), _o1[0]);
16430 : 0 : tem_op.resimplify (lseq, valueize);
16431 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16432 : 0 : if (!_r1) goto next_after_fail2543;
16433 : 0 : res_op->ops[1] = _r1;
16434 : : }
16435 : 0 : res_op->resimplify (lseq, valueize);
16436 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16437 : 0 : return true;
16438 : : }
16439 : 0 : next_after_fail2543:;
16440 : : }
16441 : : }
16442 : : }
16443 : : break;
16444 : 0 : case CFN_BUILT_IN_EXP10L:
16445 : 0 : if (gimple_call_num_args (_c1) == 1)
16446 : : {
16447 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
16448 : 0 : _q30 = do_valueize (valueize, _q30);
16449 : 0 : {
16450 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16451 : 0 : if (flag_unsafe_math_optimizations
16452 : : )
16453 : : {
16454 : 0 : gimple_seq *lseq = seq;
16455 : 0 : if (lseq
16456 : 0 : && (!single_use (captures[1])))
16457 : 0 : lseq = NULL;
16458 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2544;
16459 : 0 : {
16460 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16461 : 0 : res_op->ops[0] = captures[0];
16462 : 0 : {
16463 : 0 : tree _o1[1], _r1;
16464 : 0 : {
16465 : 0 : tree _o2[1], _r2;
16466 : 0 : _o2[0] = captures[2];
16467 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16468 : 0 : tem_op.resimplify (lseq, valueize);
16469 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16470 : 0 : if (!_r2) goto next_after_fail2544;
16471 : 0 : _o1[0] = _r2;
16472 : : }
16473 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP10L, TREE_TYPE (_o1[0]), _o1[0]);
16474 : 0 : tem_op.resimplify (lseq, valueize);
16475 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16476 : 0 : if (!_r1) goto next_after_fail2544;
16477 : 0 : res_op->ops[1] = _r1;
16478 : : }
16479 : 0 : res_op->resimplify (lseq, valueize);
16480 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16481 : 0 : return true;
16482 : : }
16483 : 0 : next_after_fail2544:;
16484 : : }
16485 : : }
16486 : : }
16487 : : break;
16488 : 11 : case CFN_BUILT_IN_CBRT:
16489 : 11 : if (gimple_call_num_args (_c1) == 1)
16490 : : {
16491 : 11 : tree _q30 = gimple_call_arg (_c1, 0);
16492 : 11 : _q30 = do_valueize (valueize, _q30);
16493 : 11 : switch (TREE_CODE (_q30))
16494 : : {
16495 : 11 : case SSA_NAME:
16496 : 11 : if (gimple *_d2 = get_def (valueize, _q30))
16497 : : {
16498 : 9 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16499 : 18 : switch (gimple_assign_rhs_code (_a2))
16500 : : {
16501 : 0 : case RDIV_EXPR:
16502 : 0 : {
16503 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
16504 : 0 : _q40 = do_valueize (valueize, _q40);
16505 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
16506 : 0 : _q41 = do_valueize (valueize, _q41);
16507 : 0 : {
16508 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
16509 : 0 : if (flag_unsafe_math_optimizations
16510 : : )
16511 : : {
16512 : 0 : gimple_seq *lseq = seq;
16513 : 0 : if (lseq
16514 : 0 : && (!single_use (captures[1])
16515 : 0 : || !single_use (captures[2])))
16516 : 0 : lseq = NULL;
16517 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2545;
16518 : 0 : {
16519 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16520 : 0 : res_op->ops[0] = captures[0];
16521 : 0 : {
16522 : 0 : tree _o1[1], _r1;
16523 : 0 : {
16524 : 0 : tree _o2[2], _r2;
16525 : 0 : _o2[0] = captures[4];
16526 : 0 : _o2[1] = captures[3];
16527 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16528 : 0 : tem_op.resimplify (lseq, valueize);
16529 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16530 : 0 : if (!_r2) goto next_after_fail2545;
16531 : 0 : _o1[0] = _r2;
16532 : : }
16533 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CBRT, TREE_TYPE (_o1[0]), _o1[0]);
16534 : 0 : tem_op.resimplify (lseq, valueize);
16535 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16536 : 0 : if (!_r1) goto next_after_fail2545;
16537 : 0 : res_op->ops[1] = _r1;
16538 : : }
16539 : 0 : res_op->resimplify (lseq, valueize);
16540 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1172, __FILE__, __LINE__, true);
16541 : 0 : return true;
16542 : : }
16543 : 0 : next_after_fail2545:;
16544 : : }
16545 : : }
16546 : 0 : break;
16547 : : }
16548 : : default:;
16549 : : }
16550 : : }
16551 : : break;
16552 : : default:;
16553 : : }
16554 : : }
16555 : : break;
16556 : 0 : case CFN_BUILT_IN_EXP2:
16557 : 0 : if (gimple_call_num_args (_c1) == 1)
16558 : : {
16559 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
16560 : 0 : _q30 = do_valueize (valueize, _q30);
16561 : 0 : {
16562 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16563 : 0 : if (flag_unsafe_math_optimizations
16564 : : )
16565 : : {
16566 : 0 : gimple_seq *lseq = seq;
16567 : 0 : if (lseq
16568 : 0 : && (!single_use (captures[1])))
16569 : 0 : lseq = NULL;
16570 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2546;
16571 : 0 : {
16572 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16573 : 0 : res_op->ops[0] = captures[0];
16574 : 0 : {
16575 : 0 : tree _o1[1], _r1;
16576 : 0 : {
16577 : 0 : tree _o2[1], _r2;
16578 : 0 : _o2[0] = captures[2];
16579 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16580 : 0 : tem_op.resimplify (lseq, valueize);
16581 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16582 : 0 : if (!_r2) goto next_after_fail2546;
16583 : 0 : _o1[0] = _r2;
16584 : : }
16585 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP2, TREE_TYPE (_o1[0]), _o1[0]);
16586 : 0 : tem_op.resimplify (lseq, valueize);
16587 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16588 : 0 : if (!_r1) goto next_after_fail2546;
16589 : 0 : res_op->ops[1] = _r1;
16590 : : }
16591 : 0 : res_op->resimplify (lseq, valueize);
16592 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16593 : 0 : return true;
16594 : : }
16595 : 0 : next_after_fail2546:;
16596 : : }
16597 : : }
16598 : : }
16599 : : break;
16600 : 0 : case CFN_BUILT_IN_EXPF:
16601 : 0 : if (gimple_call_num_args (_c1) == 1)
16602 : : {
16603 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
16604 : 0 : _q30 = do_valueize (valueize, _q30);
16605 : 0 : {
16606 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16607 : 0 : if (flag_unsafe_math_optimizations
16608 : : )
16609 : : {
16610 : 0 : gimple_seq *lseq = seq;
16611 : 0 : if (lseq
16612 : 0 : && (!single_use (captures[1])))
16613 : 0 : lseq = NULL;
16614 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2547;
16615 : 0 : {
16616 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16617 : 0 : res_op->ops[0] = captures[0];
16618 : 0 : {
16619 : 0 : tree _o1[1], _r1;
16620 : 0 : {
16621 : 0 : tree _o2[1], _r2;
16622 : 0 : _o2[0] = captures[2];
16623 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16624 : 0 : tem_op.resimplify (lseq, valueize);
16625 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16626 : 0 : if (!_r2) goto next_after_fail2547;
16627 : 0 : _o1[0] = _r2;
16628 : : }
16629 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXPF, TREE_TYPE (_o1[0]), _o1[0]);
16630 : 0 : tem_op.resimplify (lseq, valueize);
16631 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16632 : 0 : if (!_r1) goto next_after_fail2547;
16633 : 0 : res_op->ops[1] = _r1;
16634 : : }
16635 : 0 : res_op->resimplify (lseq, valueize);
16636 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16637 : 0 : return true;
16638 : : }
16639 : 0 : next_after_fail2547:;
16640 : : }
16641 : : }
16642 : : }
16643 : : break;
16644 : 0 : case CFN_BUILT_IN_EXPL:
16645 : 0 : if (gimple_call_num_args (_c1) == 1)
16646 : : {
16647 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
16648 : 0 : _q30 = do_valueize (valueize, _q30);
16649 : 0 : {
16650 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16651 : 0 : if (flag_unsafe_math_optimizations
16652 : : )
16653 : : {
16654 : 0 : gimple_seq *lseq = seq;
16655 : 0 : if (lseq
16656 : 0 : && (!single_use (captures[1])))
16657 : 0 : lseq = NULL;
16658 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2548;
16659 : 0 : {
16660 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16661 : 0 : res_op->ops[0] = captures[0];
16662 : 0 : {
16663 : 0 : tree _o1[1], _r1;
16664 : 0 : {
16665 : 0 : tree _o2[1], _r2;
16666 : 0 : _o2[0] = captures[2];
16667 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16668 : 0 : tem_op.resimplify (lseq, valueize);
16669 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16670 : 0 : if (!_r2) goto next_after_fail2548;
16671 : 0 : _o1[0] = _r2;
16672 : : }
16673 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXPL, TREE_TYPE (_o1[0]), _o1[0]);
16674 : 0 : tem_op.resimplify (lseq, valueize);
16675 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16676 : 0 : if (!_r1) goto next_after_fail2548;
16677 : 0 : res_op->ops[1] = _r1;
16678 : : }
16679 : 0 : res_op->resimplify (lseq, valueize);
16680 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16681 : 0 : return true;
16682 : : }
16683 : 0 : next_after_fail2548:;
16684 : : }
16685 : : }
16686 : : }
16687 : : break;
16688 : 3849 : case CFN_BUILT_IN_SQRT:
16689 : 3849 : if (gimple_call_num_args (_c1) == 1)
16690 : : {
16691 : 3849 : tree _q30 = gimple_call_arg (_c1, 0);
16692 : 3849 : _q30 = do_valueize (valueize, _q30);
16693 : 3849 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
16694 : : {
16695 : 2 : {
16696 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
16697 : 2 : if (gimple_simplify_362 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT))
16698 : 2 : return true;
16699 : : }
16700 : : }
16701 : 3847 : switch (TREE_CODE (_q30))
16702 : : {
16703 : 3843 : case SSA_NAME:
16704 : 3843 : if (gimple *_d2 = get_def (valueize, _q30))
16705 : : {
16706 : 3623 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16707 : 2396 : switch (gimple_assign_rhs_code (_a2))
16708 : : {
16709 : 44 : case RDIV_EXPR:
16710 : 44 : {
16711 : 44 : tree _q40 = gimple_assign_rhs1 (_a2);
16712 : 44 : _q40 = do_valueize (valueize, _q40);
16713 : 44 : tree _q41 = gimple_assign_rhs2 (_a2);
16714 : 44 : _q41 = do_valueize (valueize, _q41);
16715 : 44 : {
16716 : 44 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
16717 : 44 : if (flag_unsafe_math_optimizations
16718 : : )
16719 : : {
16720 : 0 : gimple_seq *lseq = seq;
16721 : 0 : if (lseq
16722 : 0 : && (!single_use (captures[1])
16723 : 0 : || !single_use (captures[2])))
16724 : 0 : lseq = NULL;
16725 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2549;
16726 : 0 : {
16727 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16728 : 0 : res_op->ops[0] = captures[0];
16729 : 0 : {
16730 : 0 : tree _o1[1], _r1;
16731 : 0 : {
16732 : 0 : tree _o2[2], _r2;
16733 : 0 : _o2[0] = captures[4];
16734 : 0 : _o2[1] = captures[3];
16735 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16736 : 0 : tem_op.resimplify (lseq, valueize);
16737 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16738 : 0 : if (!_r2) goto next_after_fail2549;
16739 : 0 : _o1[0] = _r2;
16740 : : }
16741 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SQRT, TREE_TYPE (_o1[0]), _o1[0]);
16742 : 0 : tem_op.resimplify (lseq, valueize);
16743 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16744 : 0 : if (!_r1) goto next_after_fail2549;
16745 : 0 : res_op->ops[1] = _r1;
16746 : : }
16747 : 0 : res_op->resimplify (lseq, valueize);
16748 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1172, __FILE__, __LINE__, true);
16749 : 0 : return true;
16750 : : }
16751 : 44 : next_after_fail2549:;
16752 : : }
16753 : : }
16754 : 44 : break;
16755 : : }
16756 : : default:;
16757 : : }
16758 : : }
16759 : : break;
16760 : : default:;
16761 : : }
16762 : : }
16763 : : break;
16764 : 0 : case CFN_EXP:
16765 : 0 : if (gimple_call_num_args (_c1) == 1)
16766 : : {
16767 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
16768 : 0 : _q30 = do_valueize (valueize, _q30);
16769 : 0 : {
16770 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16771 : 0 : if (flag_unsafe_math_optimizations
16772 : : )
16773 : : {
16774 : 0 : gimple_seq *lseq = seq;
16775 : 0 : if (lseq
16776 : 0 : && (!single_use (captures[1])))
16777 : 0 : lseq = NULL;
16778 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2550;
16779 : 0 : {
16780 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16781 : 0 : res_op->ops[0] = captures[0];
16782 : 0 : {
16783 : 0 : tree _o1[1], _r1;
16784 : 0 : {
16785 : 0 : tree _o2[1], _r2;
16786 : 0 : _o2[0] = captures[2];
16787 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16788 : 0 : tem_op.resimplify (lseq, valueize);
16789 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16790 : 0 : if (!_r2) goto next_after_fail2550;
16791 : 0 : _o1[0] = _r2;
16792 : : }
16793 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_EXP, TREE_TYPE (_o1[0]), _o1[0]);
16794 : 0 : tem_op.resimplify (lseq, valueize);
16795 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16796 : 0 : if (!_r1) goto next_after_fail2550;
16797 : 0 : res_op->ops[1] = _r1;
16798 : : }
16799 : 0 : res_op->resimplify (lseq, valueize);
16800 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16801 : 0 : return true;
16802 : : }
16803 : 0 : next_after_fail2550:;
16804 : : }
16805 : : }
16806 : : }
16807 : : break;
16808 : 24 : case CFN_BUILT_IN_POW10F:
16809 : 24 : if (gimple_call_num_args (_c1) == 1)
16810 : : {
16811 : 24 : tree _q30 = gimple_call_arg (_c1, 0);
16812 : 24 : _q30 = do_valueize (valueize, _q30);
16813 : 24 : {
16814 : 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16815 : 24 : if (flag_unsafe_math_optimizations
16816 : : )
16817 : : {
16818 : 24 : gimple_seq *lseq = seq;
16819 : 24 : if (lseq
16820 : 12 : && (!single_use (captures[1])))
16821 : 12 : lseq = NULL;
16822 : 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2551;
16823 : 24 : {
16824 : 24 : res_op->set_op (MULT_EXPR, type, 2);
16825 : 24 : res_op->ops[0] = captures[0];
16826 : 24 : {
16827 : 24 : tree _o1[1], _r1;
16828 : 24 : {
16829 : 24 : tree _o2[1], _r2;
16830 : 24 : _o2[0] = captures[2];
16831 : 24 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16832 : 24 : tem_op.resimplify (lseq, valueize);
16833 : 24 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16834 : 24 : if (!_r2) goto next_after_fail2551;
16835 : 12 : _o1[0] = _r2;
16836 : : }
16837 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_POW10F, TREE_TYPE (_o1[0]), _o1[0]);
16838 : 12 : tem_op.resimplify (lseq, valueize);
16839 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16840 : 12 : if (!_r1) goto next_after_fail2551;
16841 : 12 : res_op->ops[1] = _r1;
16842 : : }
16843 : 12 : res_op->resimplify (lseq, valueize);
16844 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16845 : 12 : return true;
16846 : : }
16847 : 12 : next_after_fail2551:;
16848 : : }
16849 : : }
16850 : : }
16851 : : break;
16852 : 24 : case CFN_BUILT_IN_POW10L:
16853 : 24 : if (gimple_call_num_args (_c1) == 1)
16854 : : {
16855 : 24 : tree _q30 = gimple_call_arg (_c1, 0);
16856 : 24 : _q30 = do_valueize (valueize, _q30);
16857 : 24 : {
16858 : 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16859 : 24 : if (flag_unsafe_math_optimizations
16860 : : )
16861 : : {
16862 : 24 : gimple_seq *lseq = seq;
16863 : 24 : if (lseq
16864 : 12 : && (!single_use (captures[1])))
16865 : 12 : lseq = NULL;
16866 : 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2552;
16867 : 24 : {
16868 : 24 : res_op->set_op (MULT_EXPR, type, 2);
16869 : 24 : res_op->ops[0] = captures[0];
16870 : 24 : {
16871 : 24 : tree _o1[1], _r1;
16872 : 24 : {
16873 : 24 : tree _o2[1], _r2;
16874 : 24 : _o2[0] = captures[2];
16875 : 24 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16876 : 24 : tem_op.resimplify (lseq, valueize);
16877 : 24 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16878 : 24 : if (!_r2) goto next_after_fail2552;
16879 : 12 : _o1[0] = _r2;
16880 : : }
16881 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_POW10L, TREE_TYPE (_o1[0]), _o1[0]);
16882 : 12 : tem_op.resimplify (lseq, valueize);
16883 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16884 : 12 : if (!_r1) goto next_after_fail2552;
16885 : 12 : res_op->ops[1] = _r1;
16886 : : }
16887 : 12 : res_op->resimplify (lseq, valueize);
16888 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16889 : 12 : return true;
16890 : : }
16891 : 12 : next_after_fail2552:;
16892 : : }
16893 : : }
16894 : : }
16895 : : break;
16896 : 0 : case CFN_EXP2:
16897 : 0 : if (gimple_call_num_args (_c1) == 1)
16898 : : {
16899 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
16900 : 0 : _q30 = do_valueize (valueize, _q30);
16901 : 0 : {
16902 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
16903 : 0 : if (flag_unsafe_math_optimizations
16904 : : )
16905 : : {
16906 : 0 : gimple_seq *lseq = seq;
16907 : 0 : if (lseq
16908 : 0 : && (!single_use (captures[1])))
16909 : 0 : lseq = NULL;
16910 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2553;
16911 : 0 : {
16912 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16913 : 0 : res_op->ops[0] = captures[0];
16914 : 0 : {
16915 : 0 : tree _o1[1], _r1;
16916 : 0 : {
16917 : 0 : tree _o2[1], _r2;
16918 : 0 : _o2[0] = captures[2];
16919 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
16920 : 0 : tem_op.resimplify (lseq, valueize);
16921 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16922 : 0 : if (!_r2) goto next_after_fail2553;
16923 : 0 : _o1[0] = _r2;
16924 : : }
16925 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_EXP2, TREE_TYPE (_o1[0]), _o1[0]);
16926 : 0 : tem_op.resimplify (lseq, valueize);
16927 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16928 : 0 : if (!_r1) goto next_after_fail2553;
16929 : 0 : res_op->ops[1] = _r1;
16930 : : }
16931 : 0 : res_op->resimplify (lseq, valueize);
16932 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
16933 : 0 : return true;
16934 : : }
16935 : 0 : next_after_fail2553:;
16936 : : }
16937 : : }
16938 : : }
16939 : : break;
16940 : 787 : case CFN_SQRT:
16941 : 787 : if (gimple_call_num_args (_c1) == 1)
16942 : : {
16943 : 787 : tree _q30 = gimple_call_arg (_c1, 0);
16944 : 787 : _q30 = do_valueize (valueize, _q30);
16945 : 787 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
16946 : : {
16947 : 0 : {
16948 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
16949 : 0 : if (gimple_simplify_362 (res_op, seq, valueize, type, captures, CFN_SQRT))
16950 : 0 : return true;
16951 : : }
16952 : : }
16953 : 787 : switch (TREE_CODE (_q30))
16954 : : {
16955 : 787 : case SSA_NAME:
16956 : 787 : if (gimple *_d2 = get_def (valueize, _q30))
16957 : : {
16958 : 752 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
16959 : 722 : switch (gimple_assign_rhs_code (_a2))
16960 : : {
16961 : 80 : case RDIV_EXPR:
16962 : 80 : {
16963 : 80 : tree _q40 = gimple_assign_rhs1 (_a2);
16964 : 80 : _q40 = do_valueize (valueize, _q40);
16965 : 80 : tree _q41 = gimple_assign_rhs2 (_a2);
16966 : 80 : _q41 = do_valueize (valueize, _q41);
16967 : 80 : {
16968 : 80 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
16969 : 80 : if (flag_unsafe_math_optimizations
16970 : : )
16971 : : {
16972 : 0 : gimple_seq *lseq = seq;
16973 : 0 : if (lseq
16974 : 0 : && (!single_use (captures[1])
16975 : 0 : || !single_use (captures[2])))
16976 : 0 : lseq = NULL;
16977 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2554;
16978 : 0 : {
16979 : 0 : res_op->set_op (MULT_EXPR, type, 2);
16980 : 0 : res_op->ops[0] = captures[0];
16981 : 0 : {
16982 : 0 : tree _o1[1], _r1;
16983 : 0 : {
16984 : 0 : tree _o2[2], _r2;
16985 : 0 : _o2[0] = captures[4];
16986 : 0 : _o2[1] = captures[3];
16987 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
16988 : 0 : tem_op.resimplify (lseq, valueize);
16989 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
16990 : 0 : if (!_r2) goto next_after_fail2554;
16991 : 0 : _o1[0] = _r2;
16992 : : }
16993 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_SQRT, TREE_TYPE (_o1[0]), _o1[0]);
16994 : 0 : tem_op.resimplify (lseq, valueize);
16995 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
16996 : 0 : if (!_r1) goto next_after_fail2554;
16997 : 0 : res_op->ops[1] = _r1;
16998 : : }
16999 : 0 : res_op->resimplify (lseq, valueize);
17000 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1172, __FILE__, __LINE__, true);
17001 : 0 : return true;
17002 : : }
17003 : 80 : next_after_fail2554:;
17004 : : }
17005 : : }
17006 : 80 : break;
17007 : : }
17008 : : default:;
17009 : : }
17010 : : }
17011 : : break;
17012 : : default:;
17013 : : }
17014 : : }
17015 : : break;
17016 : 0 : case CFN_EXP10:
17017 : 0 : if (gimple_call_num_args (_c1) == 1)
17018 : : {
17019 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
17020 : 0 : _q30 = do_valueize (valueize, _q30);
17021 : 0 : {
17022 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
17023 : 0 : if (flag_unsafe_math_optimizations
17024 : : )
17025 : : {
17026 : 0 : gimple_seq *lseq = seq;
17027 : 0 : if (lseq
17028 : 0 : && (!single_use (captures[1])))
17029 : 0 : lseq = NULL;
17030 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2555;
17031 : 0 : {
17032 : 0 : res_op->set_op (MULT_EXPR, type, 2);
17033 : 0 : res_op->ops[0] = captures[0];
17034 : 0 : {
17035 : 0 : tree _o1[1], _r1;
17036 : 0 : {
17037 : 0 : tree _o2[1], _r2;
17038 : 0 : _o2[0] = captures[2];
17039 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
17040 : 0 : tem_op.resimplify (lseq, valueize);
17041 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
17042 : 0 : if (!_r2) goto next_after_fail2555;
17043 : 0 : _o1[0] = _r2;
17044 : : }
17045 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_EXP10, TREE_TYPE (_o1[0]), _o1[0]);
17046 : 0 : tem_op.resimplify (lseq, valueize);
17047 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
17048 : 0 : if (!_r1) goto next_after_fail2555;
17049 : 0 : res_op->ops[1] = _r1;
17050 : : }
17051 : 0 : res_op->resimplify (lseq, valueize);
17052 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
17053 : 0 : return true;
17054 : : }
17055 : 0 : next_after_fail2555:;
17056 : : }
17057 : : }
17058 : : }
17059 : : break;
17060 : 0 : case CFN_BUILT_IN_CBRTF:
17061 : 0 : if (gimple_call_num_args (_c1) == 1)
17062 : : {
17063 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
17064 : 0 : _q30 = do_valueize (valueize, _q30);
17065 : 0 : switch (TREE_CODE (_q30))
17066 : : {
17067 : 0 : case SSA_NAME:
17068 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
17069 : : {
17070 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17071 : 0 : switch (gimple_assign_rhs_code (_a2))
17072 : : {
17073 : 0 : case RDIV_EXPR:
17074 : 0 : {
17075 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
17076 : 0 : _q40 = do_valueize (valueize, _q40);
17077 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
17078 : 0 : _q41 = do_valueize (valueize, _q41);
17079 : 0 : {
17080 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
17081 : 0 : if (flag_unsafe_math_optimizations
17082 : : )
17083 : : {
17084 : 0 : gimple_seq *lseq = seq;
17085 : 0 : if (lseq
17086 : 0 : && (!single_use (captures[1])
17087 : 0 : || !single_use (captures[2])))
17088 : 0 : lseq = NULL;
17089 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2556;
17090 : 0 : {
17091 : 0 : res_op->set_op (MULT_EXPR, type, 2);
17092 : 0 : res_op->ops[0] = captures[0];
17093 : 0 : {
17094 : 0 : tree _o1[1], _r1;
17095 : 0 : {
17096 : 0 : tree _o2[2], _r2;
17097 : 0 : _o2[0] = captures[4];
17098 : 0 : _o2[1] = captures[3];
17099 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
17100 : 0 : tem_op.resimplify (lseq, valueize);
17101 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
17102 : 0 : if (!_r2) goto next_after_fail2556;
17103 : 0 : _o1[0] = _r2;
17104 : : }
17105 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CBRTF, TREE_TYPE (_o1[0]), _o1[0]);
17106 : 0 : tem_op.resimplify (lseq, valueize);
17107 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
17108 : 0 : if (!_r1) goto next_after_fail2556;
17109 : 0 : res_op->ops[1] = _r1;
17110 : : }
17111 : 0 : res_op->resimplify (lseq, valueize);
17112 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1172, __FILE__, __LINE__, true);
17113 : 0 : return true;
17114 : : }
17115 : 0 : next_after_fail2556:;
17116 : : }
17117 : : }
17118 : 0 : break;
17119 : : }
17120 : : default:;
17121 : : }
17122 : : }
17123 : : break;
17124 : : default:;
17125 : : }
17126 : : }
17127 : : break;
17128 : 0 : case CFN_BUILT_IN_CBRTL:
17129 : 0 : if (gimple_call_num_args (_c1) == 1)
17130 : : {
17131 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
17132 : 0 : _q30 = do_valueize (valueize, _q30);
17133 : 0 : switch (TREE_CODE (_q30))
17134 : : {
17135 : 0 : case SSA_NAME:
17136 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
17137 : : {
17138 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
17139 : 0 : switch (gimple_assign_rhs_code (_a2))
17140 : : {
17141 : 0 : case RDIV_EXPR:
17142 : 0 : {
17143 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
17144 : 0 : _q40 = do_valueize (valueize, _q40);
17145 : 0 : tree _q41 = gimple_assign_rhs2 (_a2);
17146 : 0 : _q41 = do_valueize (valueize, _q41);
17147 : 0 : {
17148 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
17149 : 0 : if (flag_unsafe_math_optimizations
17150 : : )
17151 : : {
17152 : 0 : gimple_seq *lseq = seq;
17153 : 0 : if (lseq
17154 : 0 : && (!single_use (captures[1])
17155 : 0 : || !single_use (captures[2])))
17156 : 0 : lseq = NULL;
17157 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2557;
17158 : 0 : {
17159 : 0 : res_op->set_op (MULT_EXPR, type, 2);
17160 : 0 : res_op->ops[0] = captures[0];
17161 : 0 : {
17162 : 0 : tree _o1[1], _r1;
17163 : 0 : {
17164 : 0 : tree _o2[2], _r2;
17165 : 0 : _o2[0] = captures[4];
17166 : 0 : _o2[1] = captures[3];
17167 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
17168 : 0 : tem_op.resimplify (lseq, valueize);
17169 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
17170 : 0 : if (!_r2) goto next_after_fail2557;
17171 : 0 : _o1[0] = _r2;
17172 : : }
17173 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CBRTL, TREE_TYPE (_o1[0]), _o1[0]);
17174 : 0 : tem_op.resimplify (lseq, valueize);
17175 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
17176 : 0 : if (!_r1) goto next_after_fail2557;
17177 : 0 : res_op->ops[1] = _r1;
17178 : : }
17179 : 0 : res_op->resimplify (lseq, valueize);
17180 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1172, __FILE__, __LINE__, true);
17181 : 0 : return true;
17182 : : }
17183 : 0 : next_after_fail2557:;
17184 : : }
17185 : : }
17186 : 0 : break;
17187 : : }
17188 : : default:;
17189 : : }
17190 : : }
17191 : : break;
17192 : : default:;
17193 : : }
17194 : : }
17195 : : break;
17196 : 0 : case CFN_BUILT_IN_EXP10:
17197 : 0 : if (gimple_call_num_args (_c1) == 1)
17198 : : {
17199 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
17200 : 0 : _q30 = do_valueize (valueize, _q30);
17201 : 0 : {
17202 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
17203 : 0 : if (flag_unsafe_math_optimizations
17204 : : )
17205 : : {
17206 : 0 : gimple_seq *lseq = seq;
17207 : 0 : if (lseq
17208 : 0 : && (!single_use (captures[1])))
17209 : 0 : lseq = NULL;
17210 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2558;
17211 : 0 : {
17212 : 0 : res_op->set_op (MULT_EXPR, type, 2);
17213 : 0 : res_op->ops[0] = captures[0];
17214 : 0 : {
17215 : 0 : tree _o1[1], _r1;
17216 : 0 : {
17217 : 0 : tree _o2[1], _r2;
17218 : 0 : _o2[0] = captures[2];
17219 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
17220 : 0 : tem_op.resimplify (lseq, valueize);
17221 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
17222 : 0 : if (!_r2) goto next_after_fail2558;
17223 : 0 : _o1[0] = _r2;
17224 : : }
17225 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP10, TREE_TYPE (_o1[0]), _o1[0]);
17226 : 0 : tem_op.resimplify (lseq, valueize);
17227 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
17228 : 0 : if (!_r1) goto next_after_fail2558;
17229 : 0 : res_op->ops[1] = _r1;
17230 : : }
17231 : 0 : res_op->resimplify (lseq, valueize);
17232 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
17233 : 0 : return true;
17234 : : }
17235 : 0 : next_after_fail2558:;
17236 : : }
17237 : : }
17238 : : }
17239 : : break;
17240 : 0 : case CFN_BUILT_IN_EXP2F:
17241 : 0 : if (gimple_call_num_args (_c1) == 1)
17242 : : {
17243 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
17244 : 0 : _q30 = do_valueize (valueize, _q30);
17245 : 0 : {
17246 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
17247 : 0 : if (flag_unsafe_math_optimizations
17248 : : )
17249 : : {
17250 : 0 : gimple_seq *lseq = seq;
17251 : 0 : if (lseq
17252 : 0 : && (!single_use (captures[1])))
17253 : 0 : lseq = NULL;
17254 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2559;
17255 : 0 : {
17256 : 0 : res_op->set_op (MULT_EXPR, type, 2);
17257 : 0 : res_op->ops[0] = captures[0];
17258 : 0 : {
17259 : 0 : tree _o1[1], _r1;
17260 : 0 : {
17261 : 0 : tree _o2[1], _r2;
17262 : 0 : _o2[0] = captures[2];
17263 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
17264 : 0 : tem_op.resimplify (lseq, valueize);
17265 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
17266 : 0 : if (!_r2) goto next_after_fail2559;
17267 : 0 : _o1[0] = _r2;
17268 : : }
17269 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP2F, TREE_TYPE (_o1[0]), _o1[0]);
17270 : 0 : tem_op.resimplify (lseq, valueize);
17271 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
17272 : 0 : if (!_r1) goto next_after_fail2559;
17273 : 0 : res_op->ops[1] = _r1;
17274 : : }
17275 : 0 : res_op->resimplify (lseq, valueize);
17276 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
17277 : 0 : return true;
17278 : : }
17279 : 0 : next_after_fail2559:;
17280 : : }
17281 : : }
17282 : : }
17283 : : break;
17284 : 0 : case CFN_BUILT_IN_EXP2L:
17285 : 0 : if (gimple_call_num_args (_c1) == 1)
17286 : : {
17287 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
17288 : 0 : _q30 = do_valueize (valueize, _q30);
17289 : 0 : {
17290 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
17291 : 0 : if (flag_unsafe_math_optimizations
17292 : : )
17293 : : {
17294 : 0 : gimple_seq *lseq = seq;
17295 : 0 : if (lseq
17296 : 0 : && (!single_use (captures[1])))
17297 : 0 : lseq = NULL;
17298 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2560;
17299 : 0 : {
17300 : 0 : res_op->set_op (MULT_EXPR, type, 2);
17301 : 0 : res_op->ops[0] = captures[0];
17302 : 0 : {
17303 : 0 : tree _o1[1], _r1;
17304 : 0 : {
17305 : 0 : tree _o2[1], _r2;
17306 : 0 : _o2[0] = captures[2];
17307 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
17308 : 0 : tem_op.resimplify (lseq, valueize);
17309 : 0 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
17310 : 0 : if (!_r2) goto next_after_fail2560;
17311 : 0 : _o1[0] = _r2;
17312 : : }
17313 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP2L, TREE_TYPE (_o1[0]), _o1[0]);
17314 : 0 : tem_op.resimplify (lseq, valueize);
17315 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
17316 : 0 : if (!_r1) goto next_after_fail2560;
17317 : 0 : res_op->ops[1] = _r1;
17318 : : }
17319 : 0 : res_op->resimplify (lseq, valueize);
17320 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
17321 : 0 : return true;
17322 : : }
17323 : 0 : next_after_fail2560:;
17324 : : }
17325 : : }
17326 : : }
17327 : : break;
17328 : 24 : case CFN_BUILT_IN_POW10:
17329 : 24 : if (gimple_call_num_args (_c1) == 1)
17330 : : {
17331 : 24 : tree _q30 = gimple_call_arg (_c1, 0);
17332 : 24 : _q30 = do_valueize (valueize, _q30);
17333 : 24 : {
17334 : 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
17335 : 24 : if (flag_unsafe_math_optimizations
17336 : : )
17337 : : {
17338 : 24 : gimple_seq *lseq = seq;
17339 : 24 : if (lseq
17340 : 12 : && (!single_use (captures[1])))
17341 : 12 : lseq = NULL;
17342 : 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2561;
17343 : 24 : {
17344 : 24 : res_op->set_op (MULT_EXPR, type, 2);
17345 : 24 : res_op->ops[0] = captures[0];
17346 : 24 : {
17347 : 24 : tree _o1[1], _r1;
17348 : 24 : {
17349 : 24 : tree _o2[1], _r2;
17350 : 24 : _o2[0] = captures[2];
17351 : 24 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
17352 : 24 : tem_op.resimplify (lseq, valueize);
17353 : 24 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
17354 : 24 : if (!_r2) goto next_after_fail2561;
17355 : 12 : _o1[0] = _r2;
17356 : : }
17357 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_POW10, TREE_TYPE (_o1[0]), _o1[0]);
17358 : 12 : tem_op.resimplify (lseq, valueize);
17359 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
17360 : 12 : if (!_r1) goto next_after_fail2561;
17361 : 12 : res_op->ops[1] = _r1;
17362 : : }
17363 : 12 : res_op->resimplify (lseq, valueize);
17364 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1173, __FILE__, __LINE__, true);
17365 : 12 : return true;
17366 : : }
17367 : 12 : next_after_fail2561:;
17368 : : }
17369 : : }
17370 : : }
17371 : : break;
17372 : : default:;
17373 : : }
17374 : : }
17375 : : break;
17376 : 576527 : default:;
17377 : : }
17378 : 576527 : switch (TREE_CODE (_p0))
17379 : : {
17380 : 319408 : case SSA_NAME:
17381 : 319408 : if (gimple *_d1 = get_def (valueize, _p0))
17382 : : {
17383 : 252729 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
17384 : 12213 : switch (gimple_call_combined_fn (_c1))
17385 : : {
17386 : 676 : case CFN_BUILT_IN_SINHF:
17387 : 676 : if (gimple_call_num_args (_c1) == 1)
17388 : : {
17389 : 676 : tree _q20 = gimple_call_arg (_c1, 0);
17390 : 676 : _q20 = do_valueize (valueize, _q20);
17391 : 676 : switch (TREE_CODE (_p1))
17392 : : {
17393 : 676 : case SSA_NAME:
17394 : 676 : if (gimple *_d2 = get_def (valueize, _p1))
17395 : : {
17396 : 540 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17397 : 0 : switch (gimple_call_combined_fn (_c2))
17398 : : {
17399 : 0 : case CFN_BUILT_IN_COSHF:
17400 : 0 : if (gimple_call_num_args (_c2) == 1)
17401 : : {
17402 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17403 : 0 : _q40 = do_valueize (valueize, _q40);
17404 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17405 : : {
17406 : 0 : {
17407 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17408 : 0 : if (gimple_simplify_365 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINHF, CFN_BUILT_IN_COSHF, CFN_BUILT_IN_TANHF))
17409 : 0 : return true;
17410 : : }
17411 : : }
17412 : : }
17413 : : break;
17414 : : default:;
17415 : : }
17416 : : }
17417 : : break;
17418 : : default:;
17419 : : }
17420 : : }
17421 : : break;
17422 : 616 : case CFN_BUILT_IN_SINHL:
17423 : 616 : if (gimple_call_num_args (_c1) == 1)
17424 : : {
17425 : 616 : tree _q20 = gimple_call_arg (_c1, 0);
17426 : 616 : _q20 = do_valueize (valueize, _q20);
17427 : 616 : switch (TREE_CODE (_p1))
17428 : : {
17429 : 616 : case SSA_NAME:
17430 : 616 : if (gimple *_d2 = get_def (valueize, _p1))
17431 : : {
17432 : 492 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17433 : 0 : switch (gimple_call_combined_fn (_c2))
17434 : : {
17435 : 0 : case CFN_BUILT_IN_COSHL:
17436 : 0 : if (gimple_call_num_args (_c2) == 1)
17437 : : {
17438 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17439 : 0 : _q40 = do_valueize (valueize, _q40);
17440 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17441 : : {
17442 : 0 : {
17443 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17444 : 0 : if (gimple_simplify_365 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_COSHL, CFN_BUILT_IN_TANHL))
17445 : 0 : return true;
17446 : : }
17447 : : }
17448 : : }
17449 : : break;
17450 : : default:;
17451 : : }
17452 : : }
17453 : : break;
17454 : : default:;
17455 : : }
17456 : : }
17457 : : break;
17458 : 0 : case CFN_BUILT_IN_TANHF:
17459 : 0 : if (gimple_call_num_args (_c1) == 1)
17460 : : {
17461 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17462 : 0 : _q20 = do_valueize (valueize, _q20);
17463 : 0 : switch (TREE_CODE (_p1))
17464 : : {
17465 : 0 : case SSA_NAME:
17466 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17467 : : {
17468 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17469 : 0 : switch (gimple_call_combined_fn (_c2))
17470 : : {
17471 : 0 : case CFN_BUILT_IN_SINHF:
17472 : 0 : if (gimple_call_num_args (_c2) == 1)
17473 : : {
17474 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17475 : 0 : _q40 = do_valueize (valueize, _q40);
17476 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17477 : : {
17478 : 0 : {
17479 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17480 : 0 : if (gimple_simplify_366 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANHF, CFN_BUILT_IN_SINHF, CFN_BUILT_IN_COSHF))
17481 : 0 : return true;
17482 : : }
17483 : : }
17484 : : }
17485 : : break;
17486 : : default:;
17487 : : }
17488 : : }
17489 : : break;
17490 : : default:;
17491 : : }
17492 : : }
17493 : : break;
17494 : 0 : case CFN_BUILT_IN_TANHL:
17495 : 0 : if (gimple_call_num_args (_c1) == 1)
17496 : : {
17497 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17498 : 0 : _q20 = do_valueize (valueize, _q20);
17499 : 0 : switch (TREE_CODE (_p1))
17500 : : {
17501 : 0 : case SSA_NAME:
17502 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17503 : : {
17504 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17505 : 0 : switch (gimple_call_combined_fn (_c2))
17506 : : {
17507 : 0 : case CFN_BUILT_IN_SINHL:
17508 : 0 : if (gimple_call_num_args (_c2) == 1)
17509 : : {
17510 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17511 : 0 : _q40 = do_valueize (valueize, _q40);
17512 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17513 : : {
17514 : 0 : {
17515 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17516 : 0 : if (gimple_simplify_366 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANHL, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_COSHL))
17517 : 0 : return true;
17518 : : }
17519 : : }
17520 : : }
17521 : : break;
17522 : : default:;
17523 : : }
17524 : : }
17525 : : break;
17526 : : default:;
17527 : : }
17528 : : }
17529 : : break;
17530 : 96 : case CFN_BUILT_IN_COS:
17531 : 96 : if (gimple_call_num_args (_c1) == 1)
17532 : : {
17533 : 96 : tree _q20 = gimple_call_arg (_c1, 0);
17534 : 96 : _q20 = do_valueize (valueize, _q20);
17535 : 96 : switch (TREE_CODE (_p1))
17536 : : {
17537 : 96 : case SSA_NAME:
17538 : 96 : if (gimple *_d2 = get_def (valueize, _p1))
17539 : : {
17540 : 96 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17541 : 0 : switch (gimple_call_combined_fn (_c2))
17542 : : {
17543 : 0 : case CFN_BUILT_IN_SIN:
17544 : 0 : if (gimple_call_num_args (_c2) == 1)
17545 : : {
17546 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17547 : 0 : _q40 = do_valueize (valueize, _q40);
17548 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17549 : : {
17550 : 0 : {
17551 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17552 : 0 : if (gimple_simplify_367 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN))
17553 : 0 : return true;
17554 : : }
17555 : : }
17556 : : }
17557 : : break;
17558 : : default:;
17559 : : }
17560 : : }
17561 : : break;
17562 : : default:;
17563 : : }
17564 : : }
17565 : : break;
17566 : 0 : case CFN_BUILT_IN_POW:
17567 : 0 : if (gimple_call_num_args (_c1) == 2)
17568 : : {
17569 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17570 : 0 : _q20 = do_valueize (valueize, _q20);
17571 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
17572 : 0 : _q21 = do_valueize (valueize, _q21);
17573 : 0 : switch (TREE_CODE (_q21))
17574 : : {
17575 : 0 : case REAL_CST:
17576 : 0 : {
17577 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17578 : : {
17579 : 0 : {
17580 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
17581 : 0 : if (gimple_simplify_369 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW))
17582 : 0 : return true;
17583 : : }
17584 : : }
17585 : : break;
17586 : : }
17587 : : default:;
17588 : : }
17589 : : }
17590 : : break;
17591 : 615 : case CFN_BUILT_IN_SIN:
17592 : 615 : if (gimple_call_num_args (_c1) == 1)
17593 : : {
17594 : 615 : tree _q20 = gimple_call_arg (_c1, 0);
17595 : 615 : _q20 = do_valueize (valueize, _q20);
17596 : 615 : switch (TREE_CODE (_p1))
17597 : : {
17598 : 615 : case SSA_NAME:
17599 : 615 : if (gimple *_d2 = get_def (valueize, _p1))
17600 : : {
17601 : 489 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17602 : 0 : switch (gimple_call_combined_fn (_c2))
17603 : : {
17604 : 0 : case CFN_BUILT_IN_COS:
17605 : 0 : if (gimple_call_num_args (_c2) == 1)
17606 : : {
17607 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17608 : 0 : _q40 = do_valueize (valueize, _q40);
17609 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17610 : : {
17611 : 0 : {
17612 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17613 : 0 : if (gimple_simplify_363 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS, CFN_BUILT_IN_TAN))
17614 : 0 : return true;
17615 : : }
17616 : : }
17617 : : }
17618 : : break;
17619 : 0 : case CFN_BUILT_IN_TAN:
17620 : 0 : if (gimple_call_num_args (_c2) == 1)
17621 : : {
17622 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17623 : 0 : _q40 = do_valueize (valueize, _q40);
17624 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17625 : : {
17626 : 0 : {
17627 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17628 : 0 : if (gimple_simplify_364 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS))
17629 : 0 : return true;
17630 : : }
17631 : : }
17632 : : }
17633 : : break;
17634 : : default:;
17635 : : }
17636 : : }
17637 : : break;
17638 : : default:;
17639 : : }
17640 : : }
17641 : : break;
17642 : 0 : case CFN_BUILT_IN_TAN:
17643 : 0 : if (gimple_call_num_args (_c1) == 1)
17644 : : {
17645 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17646 : 0 : _q20 = do_valueize (valueize, _q20);
17647 : 0 : switch (TREE_CODE (_p1))
17648 : : {
17649 : 0 : case SSA_NAME:
17650 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17651 : : {
17652 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17653 : 0 : switch (gimple_call_combined_fn (_c2))
17654 : : {
17655 : 0 : case CFN_BUILT_IN_SIN:
17656 : 0 : if (gimple_call_num_args (_c2) == 1)
17657 : : {
17658 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17659 : 0 : _q40 = do_valueize (valueize, _q40);
17660 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17661 : : {
17662 : 0 : {
17663 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17664 : 0 : if (gimple_simplify_368 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS))
17665 : 0 : return true;
17666 : : }
17667 : : }
17668 : : }
17669 : : break;
17670 : : default:;
17671 : : }
17672 : : }
17673 : : break;
17674 : : default:;
17675 : : }
17676 : : }
17677 : : break;
17678 : 0 : case CFN_BUILT_IN_COSF:
17679 : 0 : if (gimple_call_num_args (_c1) == 1)
17680 : : {
17681 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17682 : 0 : _q20 = do_valueize (valueize, _q20);
17683 : 0 : switch (TREE_CODE (_p1))
17684 : : {
17685 : 0 : case SSA_NAME:
17686 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17687 : : {
17688 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17689 : 0 : switch (gimple_call_combined_fn (_c2))
17690 : : {
17691 : 0 : case CFN_BUILT_IN_SINF:
17692 : 0 : if (gimple_call_num_args (_c2) == 1)
17693 : : {
17694 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17695 : 0 : _q40 = do_valueize (valueize, _q40);
17696 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17697 : : {
17698 : 0 : {
17699 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17700 : 0 : if (gimple_simplify_367 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF))
17701 : 0 : return true;
17702 : : }
17703 : : }
17704 : : }
17705 : : break;
17706 : : default:;
17707 : : }
17708 : : }
17709 : : break;
17710 : : default:;
17711 : : }
17712 : : }
17713 : : break;
17714 : 12 : case CFN_BUILT_IN_COSL:
17715 : 12 : if (gimple_call_num_args (_c1) == 1)
17716 : : {
17717 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
17718 : 12 : _q20 = do_valueize (valueize, _q20);
17719 : 12 : switch (TREE_CODE (_p1))
17720 : : {
17721 : 12 : case SSA_NAME:
17722 : 12 : if (gimple *_d2 = get_def (valueize, _p1))
17723 : : {
17724 : 11 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17725 : 4 : switch (gimple_call_combined_fn (_c2))
17726 : : {
17727 : 0 : case CFN_BUILT_IN_SINL:
17728 : 0 : if (gimple_call_num_args (_c2) == 1)
17729 : : {
17730 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17731 : 0 : _q40 = do_valueize (valueize, _q40);
17732 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17733 : : {
17734 : 0 : {
17735 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17736 : 0 : if (gimple_simplify_367 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL))
17737 : 0 : return true;
17738 : : }
17739 : : }
17740 : : }
17741 : : break;
17742 : : default:;
17743 : : }
17744 : : }
17745 : : break;
17746 : : default:;
17747 : : }
17748 : : }
17749 : : break;
17750 : 0 : case CFN_BUILT_IN_POWF:
17751 : 0 : if (gimple_call_num_args (_c1) == 2)
17752 : : {
17753 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17754 : 0 : _q20 = do_valueize (valueize, _q20);
17755 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
17756 : 0 : _q21 = do_valueize (valueize, _q21);
17757 : 0 : switch (TREE_CODE (_q21))
17758 : : {
17759 : 0 : case REAL_CST:
17760 : 0 : {
17761 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17762 : : {
17763 : 0 : {
17764 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
17765 : 0 : if (gimple_simplify_369 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF))
17766 : 0 : return true;
17767 : : }
17768 : : }
17769 : : break;
17770 : : }
17771 : : default:;
17772 : : }
17773 : : }
17774 : : break;
17775 : 0 : case CFN_BUILT_IN_POWL:
17776 : 0 : if (gimple_call_num_args (_c1) == 2)
17777 : : {
17778 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17779 : 0 : _q20 = do_valueize (valueize, _q20);
17780 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
17781 : 0 : _q21 = do_valueize (valueize, _q21);
17782 : 0 : switch (TREE_CODE (_q21))
17783 : : {
17784 : 0 : case REAL_CST:
17785 : 0 : {
17786 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17787 : : {
17788 : 0 : {
17789 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
17790 : 0 : if (gimple_simplify_369 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
17791 : 0 : return true;
17792 : : }
17793 : : }
17794 : : break;
17795 : : }
17796 : : default:;
17797 : : }
17798 : : }
17799 : : break;
17800 : 406 : case CFN_BUILT_IN_SINF:
17801 : 406 : if (gimple_call_num_args (_c1) == 1)
17802 : : {
17803 : 406 : tree _q20 = gimple_call_arg (_c1, 0);
17804 : 406 : _q20 = do_valueize (valueize, _q20);
17805 : 406 : switch (TREE_CODE (_p1))
17806 : : {
17807 : 406 : case SSA_NAME:
17808 : 406 : if (gimple *_d2 = get_def (valueize, _p1))
17809 : : {
17810 : 324 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17811 : 0 : switch (gimple_call_combined_fn (_c2))
17812 : : {
17813 : 0 : case CFN_BUILT_IN_COSF:
17814 : 0 : if (gimple_call_num_args (_c2) == 1)
17815 : : {
17816 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17817 : 0 : _q40 = do_valueize (valueize, _q40);
17818 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17819 : : {
17820 : 0 : {
17821 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17822 : 0 : if (gimple_simplify_363 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_TANF))
17823 : 0 : return true;
17824 : : }
17825 : : }
17826 : : }
17827 : : break;
17828 : 0 : case CFN_BUILT_IN_TANF:
17829 : 0 : if (gimple_call_num_args (_c2) == 1)
17830 : : {
17831 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17832 : 0 : _q40 = do_valueize (valueize, _q40);
17833 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17834 : : {
17835 : 0 : {
17836 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17837 : 0 : if (gimple_simplify_364 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF))
17838 : 0 : return true;
17839 : : }
17840 : : }
17841 : : }
17842 : : break;
17843 : : default:;
17844 : : }
17845 : : }
17846 : : break;
17847 : : default:;
17848 : : }
17849 : : }
17850 : : break;
17851 : 775 : case CFN_BUILT_IN_SINH:
17852 : 775 : if (gimple_call_num_args (_c1) == 1)
17853 : : {
17854 : 775 : tree _q20 = gimple_call_arg (_c1, 0);
17855 : 775 : _q20 = do_valueize (valueize, _q20);
17856 : 775 : switch (TREE_CODE (_p1))
17857 : : {
17858 : 775 : case SSA_NAME:
17859 : 775 : if (gimple *_d2 = get_def (valueize, _p1))
17860 : : {
17861 : 615 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17862 : 0 : switch (gimple_call_combined_fn (_c2))
17863 : : {
17864 : 0 : case CFN_BUILT_IN_COSH:
17865 : 0 : if (gimple_call_num_args (_c2) == 1)
17866 : : {
17867 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17868 : 0 : _q40 = do_valueize (valueize, _q40);
17869 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17870 : : {
17871 : 0 : {
17872 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17873 : 0 : if (gimple_simplify_365 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINH, CFN_BUILT_IN_COSH, CFN_BUILT_IN_TANH))
17874 : 0 : return true;
17875 : : }
17876 : : }
17877 : : }
17878 : : break;
17879 : : default:;
17880 : : }
17881 : : }
17882 : : break;
17883 : : default:;
17884 : : }
17885 : : }
17886 : : break;
17887 : 376 : case CFN_BUILT_IN_SINL:
17888 : 376 : if (gimple_call_num_args (_c1) == 1)
17889 : : {
17890 : 376 : tree _q20 = gimple_call_arg (_c1, 0);
17891 : 376 : _q20 = do_valueize (valueize, _q20);
17892 : 376 : switch (TREE_CODE (_p1))
17893 : : {
17894 : 376 : case SSA_NAME:
17895 : 376 : if (gimple *_d2 = get_def (valueize, _p1))
17896 : : {
17897 : 300 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17898 : 0 : switch (gimple_call_combined_fn (_c2))
17899 : : {
17900 : 0 : case CFN_BUILT_IN_COSL:
17901 : 0 : if (gimple_call_num_args (_c2) == 1)
17902 : : {
17903 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17904 : 0 : _q40 = do_valueize (valueize, _q40);
17905 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17906 : : {
17907 : 0 : {
17908 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17909 : 0 : if (gimple_simplify_363 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_TANL))
17910 : 0 : return true;
17911 : : }
17912 : : }
17913 : : }
17914 : : break;
17915 : 0 : case CFN_BUILT_IN_TANL:
17916 : 0 : if (gimple_call_num_args (_c2) == 1)
17917 : : {
17918 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17919 : 0 : _q40 = do_valueize (valueize, _q40);
17920 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17921 : : {
17922 : 0 : {
17923 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17924 : 0 : if (gimple_simplify_364 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL))
17925 : 0 : return true;
17926 : : }
17927 : : }
17928 : : }
17929 : : break;
17930 : : default:;
17931 : : }
17932 : : }
17933 : : break;
17934 : : default:;
17935 : : }
17936 : : }
17937 : : break;
17938 : 0 : case CFN_BUILT_IN_TANF:
17939 : 0 : if (gimple_call_num_args (_c1) == 1)
17940 : : {
17941 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17942 : 0 : _q20 = do_valueize (valueize, _q20);
17943 : 0 : switch (TREE_CODE (_p1))
17944 : : {
17945 : 0 : case SSA_NAME:
17946 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17947 : : {
17948 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17949 : 0 : switch (gimple_call_combined_fn (_c2))
17950 : : {
17951 : 0 : case CFN_BUILT_IN_SINF:
17952 : 0 : if (gimple_call_num_args (_c2) == 1)
17953 : : {
17954 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17955 : 0 : _q40 = do_valueize (valueize, _q40);
17956 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17957 : : {
17958 : 0 : {
17959 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17960 : 0 : if (gimple_simplify_368 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF))
17961 : 0 : return true;
17962 : : }
17963 : : }
17964 : : }
17965 : : break;
17966 : : default:;
17967 : : }
17968 : : }
17969 : : break;
17970 : : default:;
17971 : : }
17972 : : }
17973 : : break;
17974 : 0 : case CFN_BUILT_IN_TANH:
17975 : 0 : if (gimple_call_num_args (_c1) == 1)
17976 : : {
17977 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
17978 : 0 : _q20 = do_valueize (valueize, _q20);
17979 : 0 : switch (TREE_CODE (_p1))
17980 : : {
17981 : 0 : case SSA_NAME:
17982 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
17983 : : {
17984 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
17985 : 0 : switch (gimple_call_combined_fn (_c2))
17986 : : {
17987 : 0 : case CFN_BUILT_IN_SINH:
17988 : 0 : if (gimple_call_num_args (_c2) == 1)
17989 : : {
17990 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
17991 : 0 : _q40 = do_valueize (valueize, _q40);
17992 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
17993 : : {
17994 : 0 : {
17995 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
17996 : 0 : if (gimple_simplify_366 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANH, CFN_BUILT_IN_SINH, CFN_BUILT_IN_COSH))
17997 : 0 : return true;
17998 : : }
17999 : : }
18000 : : }
18001 : : break;
18002 : : default:;
18003 : : }
18004 : : }
18005 : : break;
18006 : : default:;
18007 : : }
18008 : : }
18009 : : break;
18010 : 0 : case CFN_BUILT_IN_TANL:
18011 : 0 : if (gimple_call_num_args (_c1) == 1)
18012 : : {
18013 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
18014 : 0 : _q20 = do_valueize (valueize, _q20);
18015 : 0 : switch (TREE_CODE (_p1))
18016 : : {
18017 : 0 : case SSA_NAME:
18018 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
18019 : : {
18020 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
18021 : 0 : switch (gimple_call_combined_fn (_c2))
18022 : : {
18023 : 0 : case CFN_BUILT_IN_SINL:
18024 : 0 : if (gimple_call_num_args (_c2) == 1)
18025 : : {
18026 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
18027 : 0 : _q40 = do_valueize (valueize, _q40);
18028 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
18029 : : {
18030 : 0 : {
18031 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18032 : 0 : if (gimple_simplify_368 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL))
18033 : 0 : return true;
18034 : : }
18035 : : }
18036 : : }
18037 : : break;
18038 : : default:;
18039 : : }
18040 : : }
18041 : : break;
18042 : : default:;
18043 : : }
18044 : : }
18045 : : break;
18046 : 0 : case CFN_COS:
18047 : 0 : if (gimple_call_num_args (_c1) == 1)
18048 : : {
18049 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
18050 : 0 : _q20 = do_valueize (valueize, _q20);
18051 : 0 : switch (TREE_CODE (_p1))
18052 : : {
18053 : 0 : case SSA_NAME:
18054 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
18055 : : {
18056 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
18057 : 0 : switch (gimple_call_combined_fn (_c2))
18058 : : {
18059 : 0 : case CFN_SIN:
18060 : 0 : if (gimple_call_num_args (_c2) == 1)
18061 : : {
18062 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
18063 : 0 : _q40 = do_valueize (valueize, _q40);
18064 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
18065 : : {
18066 : 0 : {
18067 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18068 : 0 : if (gimple_simplify_367 (res_op, seq, valueize, type, captures, CFN_COS, CFN_SIN, CFN_TAN))
18069 : 0 : return true;
18070 : : }
18071 : : }
18072 : : }
18073 : : break;
18074 : : default:;
18075 : : }
18076 : : }
18077 : : break;
18078 : : default:;
18079 : : }
18080 : : }
18081 : : break;
18082 : 0 : case CFN_POW:
18083 : 0 : if (gimple_call_num_args (_c1) == 2)
18084 : : {
18085 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
18086 : 0 : _q20 = do_valueize (valueize, _q20);
18087 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
18088 : 0 : _q21 = do_valueize (valueize, _q21);
18089 : 0 : switch (TREE_CODE (_q21))
18090 : : {
18091 : 0 : case REAL_CST:
18092 : 0 : {
18093 : 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18094 : : {
18095 : 0 : {
18096 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
18097 : 0 : if (gimple_simplify_369 (res_op, seq, valueize, type, captures, CFN_POW))
18098 : 0 : return true;
18099 : : }
18100 : : }
18101 : : break;
18102 : : }
18103 : : default:;
18104 : : }
18105 : : }
18106 : : break;
18107 : 0 : case CFN_SIN:
18108 : 0 : if (gimple_call_num_args (_c1) == 1)
18109 : : {
18110 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
18111 : 0 : _q20 = do_valueize (valueize, _q20);
18112 : 0 : switch (TREE_CODE (_p1))
18113 : : {
18114 : 0 : case SSA_NAME:
18115 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
18116 : : {
18117 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
18118 : 0 : switch (gimple_call_combined_fn (_c2))
18119 : : {
18120 : 0 : case CFN_COS:
18121 : 0 : if (gimple_call_num_args (_c2) == 1)
18122 : : {
18123 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
18124 : 0 : _q40 = do_valueize (valueize, _q40);
18125 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
18126 : : {
18127 : 0 : {
18128 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18129 : 0 : if (gimple_simplify_363 (res_op, seq, valueize, type, captures, CFN_SIN, CFN_COS, CFN_TAN))
18130 : 0 : return true;
18131 : : }
18132 : : }
18133 : : }
18134 : : break;
18135 : 0 : case CFN_TAN:
18136 : 0 : if (gimple_call_num_args (_c2) == 1)
18137 : : {
18138 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
18139 : 0 : _q40 = do_valueize (valueize, _q40);
18140 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
18141 : : {
18142 : 0 : {
18143 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18144 : 0 : if (gimple_simplify_364 (res_op, seq, valueize, type, captures, CFN_SIN, CFN_TAN, CFN_COS))
18145 : 0 : return true;
18146 : : }
18147 : : }
18148 : : }
18149 : : break;
18150 : : default:;
18151 : : }
18152 : : }
18153 : : break;
18154 : : default:;
18155 : : }
18156 : : }
18157 : : break;
18158 : 0 : case CFN_TAN:
18159 : 0 : if (gimple_call_num_args (_c1) == 1)
18160 : : {
18161 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
18162 : 0 : _q20 = do_valueize (valueize, _q20);
18163 : 0 : switch (TREE_CODE (_p1))
18164 : : {
18165 : 0 : case SSA_NAME:
18166 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
18167 : : {
18168 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
18169 : 0 : switch (gimple_call_combined_fn (_c2))
18170 : : {
18171 : 0 : case CFN_SIN:
18172 : 0 : if (gimple_call_num_args (_c2) == 1)
18173 : : {
18174 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
18175 : 0 : _q40 = do_valueize (valueize, _q40);
18176 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
18177 : : {
18178 : 0 : {
18179 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18180 : 0 : if (gimple_simplify_368 (res_op, seq, valueize, type, captures, CFN_TAN, CFN_SIN, CFN_COS))
18181 : 0 : return true;
18182 : : }
18183 : : }
18184 : : }
18185 : : break;
18186 : : default:;
18187 : : }
18188 : : }
18189 : : break;
18190 : : default:;
18191 : : }
18192 : : }
18193 : : break;
18194 : 0 : case CFN_SINH:
18195 : 0 : if (gimple_call_num_args (_c1) == 1)
18196 : : {
18197 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
18198 : 0 : _q20 = do_valueize (valueize, _q20);
18199 : 0 : switch (TREE_CODE (_p1))
18200 : : {
18201 : 0 : case SSA_NAME:
18202 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
18203 : : {
18204 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
18205 : 0 : switch (gimple_call_combined_fn (_c2))
18206 : : {
18207 : 0 : case CFN_COSH:
18208 : 0 : if (gimple_call_num_args (_c2) == 1)
18209 : : {
18210 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
18211 : 0 : _q40 = do_valueize (valueize, _q40);
18212 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
18213 : : {
18214 : 0 : {
18215 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18216 : 0 : if (gimple_simplify_365 (res_op, seq, valueize, type, captures, CFN_SINH, CFN_COSH, CFN_TANH))
18217 : 0 : return true;
18218 : : }
18219 : : }
18220 : : }
18221 : : break;
18222 : : default:;
18223 : : }
18224 : : }
18225 : : break;
18226 : : default:;
18227 : : }
18228 : : }
18229 : : break;
18230 : 0 : case CFN_TANH:
18231 : 0 : if (gimple_call_num_args (_c1) == 1)
18232 : : {
18233 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
18234 : 0 : _q20 = do_valueize (valueize, _q20);
18235 : 0 : switch (TREE_CODE (_p1))
18236 : : {
18237 : 0 : case SSA_NAME:
18238 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
18239 : : {
18240 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
18241 : 0 : switch (gimple_call_combined_fn (_c2))
18242 : : {
18243 : 0 : case CFN_SINH:
18244 : 0 : if (gimple_call_num_args (_c2) == 1)
18245 : : {
18246 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
18247 : 0 : _q40 = do_valueize (valueize, _q40);
18248 : 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
18249 : : {
18250 : 0 : {
18251 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
18252 : 0 : if (gimple_simplify_366 (res_op, seq, valueize, type, captures, CFN_TANH, CFN_SINH, CFN_COSH))
18253 : 0 : return true;
18254 : : }
18255 : : }
18256 : : }
18257 : : break;
18258 : : default:;
18259 : : }
18260 : : }
18261 : : break;
18262 : : default:;
18263 : : }
18264 : : }
18265 : : break;
18266 : : default:;
18267 : : }
18268 : : }
18269 : : break;
18270 : 576527 : default:;
18271 : : }
18272 : 576527 : switch (TREE_CODE (_p1))
18273 : : {
18274 : 489424 : case SSA_NAME:
18275 : 489424 : if (gimple *_d1 = get_def (valueize, _p1))
18276 : : {
18277 : 366480 : if (gcall *_c1 = dyn_cast <gcall *> (_d1))
18278 : 23496 : switch (gimple_call_combined_fn (_c1))
18279 : : {
18280 : 171 : case CFN_BUILT_IN_POW:
18281 : 171 : if (gimple_call_num_args (_c1) == 2)
18282 : : {
18283 : 171 : tree _q30 = gimple_call_arg (_c1, 0);
18284 : 171 : _q30 = do_valueize (valueize, _q30);
18285 : 171 : tree _q31 = gimple_call_arg (_c1, 1);
18286 : 171 : _q31 = do_valueize (valueize, _q31);
18287 : 171 : {
18288 : 171 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
18289 : 171 : if (gimple_simplify_370 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW))
18290 : 0 : return true;
18291 : : }
18292 : : }
18293 : : break;
18294 : 0 : case CFN_BUILT_IN_POWF:
18295 : 0 : if (gimple_call_num_args (_c1) == 2)
18296 : : {
18297 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
18298 : 0 : _q30 = do_valueize (valueize, _q30);
18299 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
18300 : 0 : _q31 = do_valueize (valueize, _q31);
18301 : 0 : {
18302 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
18303 : 0 : if (gimple_simplify_370 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF))
18304 : 0 : return true;
18305 : : }
18306 : : }
18307 : : break;
18308 : 0 : case CFN_BUILT_IN_POWL:
18309 : 0 : if (gimple_call_num_args (_c1) == 2)
18310 : : {
18311 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
18312 : 0 : _q30 = do_valueize (valueize, _q30);
18313 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
18314 : 0 : _q31 = do_valueize (valueize, _q31);
18315 : 0 : {
18316 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
18317 : 0 : if (gimple_simplify_370 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL))
18318 : 0 : return true;
18319 : : }
18320 : : }
18321 : : break;
18322 : 0 : case CFN_POW:
18323 : 0 : if (gimple_call_num_args (_c1) == 2)
18324 : : {
18325 : 0 : tree _q30 = gimple_call_arg (_c1, 0);
18326 : 0 : _q30 = do_valueize (valueize, _q30);
18327 : 0 : tree _q31 = gimple_call_arg (_c1, 1);
18328 : 0 : _q31 = do_valueize (valueize, _q31);
18329 : 0 : {
18330 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
18331 : 0 : if (gimple_simplify_370 (res_op, seq, valueize, type, captures, CFN_POW))
18332 : 0 : return true;
18333 : : }
18334 : : }
18335 : : break;
18336 : : default:;
18337 : : }
18338 : : }
18339 : : break;
18340 : : default:;
18341 : : }
18342 : : return false;
18343 : : }
18344 : :
18345 : : bool
18346 : 34733766 : gimple_simplify_GT_EXPR (gimple_match_op *res_op, gimple_seq *seq,
18347 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
18348 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
18349 : : {
18350 : 34733766 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
18351 : 34733766 : switch (TREE_CODE (_p0))
18352 : : {
18353 : 33959733 : case SSA_NAME:
18354 : 33959733 : if (gimple *_d1 = get_def (valueize, _p0))
18355 : : {
18356 : 11738468 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18357 : 14436477 : switch (gimple_assign_rhs_code (_a1))
18358 : : {
18359 : 3755 : case RDIV_EXPR:
18360 : 3755 : {
18361 : 3755 : tree _q20 = gimple_assign_rhs1 (_a1);
18362 : 3755 : _q20 = do_valueize (valueize, _q20);
18363 : 3755 : tree _q21 = gimple_assign_rhs2 (_a1);
18364 : 3755 : _q21 = do_valueize (valueize, _q21);
18365 : 3755 : switch (TREE_CODE (_q20))
18366 : : {
18367 : 752 : case REAL_CST:
18368 : 752 : {
18369 : 752 : if (real_zerop (_p1))
18370 : : {
18371 : 0 : {
18372 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
18373 : 0 : if (gimple_simplify_455 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
18374 : 0 : return true;
18375 : : }
18376 : : }
18377 : : break;
18378 : : }
18379 : : default:;
18380 : : }
18381 : : break;
18382 : : }
18383 : : default:;
18384 : : }
18385 : : }
18386 : : break;
18387 : 34733766 : default:;
18388 : : }
18389 : 34733766 : {
18390 : 34733766 : tree _p0_pops[1];
18391 : 34733766 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
18392 : : {
18393 : 819864 : tree _q20 = _p0_pops[0];
18394 : 819864 : switch (TREE_CODE (_p1))
18395 : : {
18396 : 460006 : case SSA_NAME:
18397 : 460006 : if (gimple *_d1 = get_def (valueize, _p1))
18398 : : {
18399 : 454569 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18400 : 437352 : switch (gimple_assign_rhs_code (_a1))
18401 : : {
18402 : 40 : case LSHIFT_EXPR:
18403 : 40 : {
18404 : 40 : tree _q40 = gimple_assign_rhs1 (_a1);
18405 : 40 : _q40 = do_valueize (valueize, _q40);
18406 : 40 : tree _q41 = gimple_assign_rhs2 (_a1);
18407 : 40 : _q41 = do_valueize (valueize, _q41);
18408 : 40 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
18409 : : {
18410 : 0 : {
18411 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
18412 : 0 : if (gimple_simplify_456 (res_op, seq, valueize, type, captures, LT_EXPR))
18413 : 0 : return true;
18414 : : }
18415 : : }
18416 : : break;
18417 : : }
18418 : : default:;
18419 : : }
18420 : : }
18421 : : break;
18422 : 819864 : default:;
18423 : : }
18424 : 819864 : {
18425 : 819864 : tree _p1_pops[1];
18426 : 819864 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
18427 : : {
18428 : 313969 : tree _q40 = _p1_pops[0];
18429 : 313969 : switch (TREE_CODE (_q40))
18430 : : {
18431 : 312978 : case SSA_NAME:
18432 : 312978 : if (gimple *_d1 = get_def (valueize, _q40))
18433 : : {
18434 : 270689 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18435 : 323530 : switch (gimple_assign_rhs_code (_a1))
18436 : : {
18437 : 0 : case LSHIFT_EXPR:
18438 : 0 : {
18439 : 0 : tree _q50 = gimple_assign_rhs1 (_a1);
18440 : 0 : _q50 = do_valueize (valueize, _q50);
18441 : 0 : tree _q51 = gimple_assign_rhs2 (_a1);
18442 : 0 : _q51 = do_valueize (valueize, _q51);
18443 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18444 : : {
18445 : 0 : {
18446 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
18447 : 0 : if (gimple_simplify_456 (res_op, seq, valueize, type, captures, LT_EXPR))
18448 : 0 : return true;
18449 : : }
18450 : : }
18451 : : break;
18452 : : }
18453 : : default:;
18454 : : }
18455 : : }
18456 : : break;
18457 : : default:;
18458 : : }
18459 : : }
18460 : : }
18461 : 819864 : switch (TREE_CODE (_q20))
18462 : : {
18463 : 818720 : case SSA_NAME:
18464 : 818720 : if (gimple *_d1 = get_def (valueize, _q20))
18465 : : {
18466 : 763322 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18467 : 701405 : switch (gimple_assign_rhs_code (_a1))
18468 : : {
18469 : 1393 : case LSHIFT_EXPR:
18470 : 1393 : {
18471 : 1393 : tree _q30 = gimple_assign_rhs1 (_a1);
18472 : 1393 : _q30 = do_valueize (valueize, _q30);
18473 : 1393 : tree _q31 = gimple_assign_rhs2 (_a1);
18474 : 1393 : _q31 = do_valueize (valueize, _q31);
18475 : 1393 : {
18476 : 1393 : tree _p1_pops[1];
18477 : 1393 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
18478 : : {
18479 : 0 : tree _q60 = _p1_pops[0];
18480 : 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
18481 : : {
18482 : 0 : {
18483 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
18484 : 0 : if (gimple_simplify_457 (res_op, seq, valueize, type, captures, GT_EXPR))
18485 : 0 : return true;
18486 : : }
18487 : : }
18488 : : }
18489 : : }
18490 : 1393 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
18491 : : {
18492 : 0 : {
18493 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
18494 : 0 : if (gimple_simplify_457 (res_op, seq, valueize, type, captures, GT_EXPR))
18495 : 0 : return true;
18496 : : }
18497 : : }
18498 : : break;
18499 : : }
18500 : : default:;
18501 : : }
18502 : : }
18503 : : break;
18504 : : default:;
18505 : : }
18506 : : }
18507 : : }
18508 : 34733766 : switch (TREE_CODE (_p1))
18509 : : {
18510 : 11145484 : case SSA_NAME:
18511 : 11145484 : if (gimple *_d1 = get_def (valueize, _p1))
18512 : : {
18513 : 3661040 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18514 : 3921729 : switch (gimple_assign_rhs_code (_a1))
18515 : : {
18516 : 480 : case LSHIFT_EXPR:
18517 : 480 : {
18518 : 480 : tree _q30 = gimple_assign_rhs1 (_a1);
18519 : 480 : _q30 = do_valueize (valueize, _q30);
18520 : 480 : tree _q31 = gimple_assign_rhs2 (_a1);
18521 : 480 : _q31 = do_valueize (valueize, _q31);
18522 : 480 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
18523 : : {
18524 : 4 : {
18525 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
18526 : 4 : if (gimple_simplify_456 (res_op, seq, valueize, type, captures, LT_EXPR))
18527 : 0 : return true;
18528 : : }
18529 : : }
18530 : : break;
18531 : : }
18532 : : default:;
18533 : : }
18534 : : }
18535 : : break;
18536 : 34733766 : default:;
18537 : : }
18538 : 34733766 : {
18539 : 34733766 : tree _p1_pops[1];
18540 : 34733766 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
18541 : : {
18542 : 386416 : tree _q30 = _p1_pops[0];
18543 : 386416 : switch (TREE_CODE (_q30))
18544 : : {
18545 : 385257 : case SSA_NAME:
18546 : 385257 : if (gimple *_d1 = get_def (valueize, _q30))
18547 : : {
18548 : 339724 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18549 : 380251 : switch (gimple_assign_rhs_code (_a1))
18550 : : {
18551 : 0 : case LSHIFT_EXPR:
18552 : 0 : {
18553 : 0 : tree _q40 = gimple_assign_rhs1 (_a1);
18554 : 0 : _q40 = do_valueize (valueize, _q40);
18555 : 0 : tree _q41 = gimple_assign_rhs2 (_a1);
18556 : 0 : _q41 = do_valueize (valueize, _q41);
18557 : 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
18558 : : {
18559 : 0 : {
18560 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
18561 : 0 : if (gimple_simplify_456 (res_op, seq, valueize, type, captures, LT_EXPR))
18562 : 0 : return true;
18563 : : }
18564 : : }
18565 : : break;
18566 : : }
18567 : : default:;
18568 : : }
18569 : : }
18570 : : break;
18571 : : default:;
18572 : : }
18573 : : }
18574 : : }
18575 : 34733766 : switch (TREE_CODE (_p0))
18576 : : {
18577 : 33959733 : case SSA_NAME:
18578 : 33959733 : if (gimple *_d1 = get_def (valueize, _p0))
18579 : : {
18580 : 11738468 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18581 : 14436477 : switch (gimple_assign_rhs_code (_a1))
18582 : : {
18583 : 4813 : case LSHIFT_EXPR:
18584 : 4813 : {
18585 : 4813 : tree _q20 = gimple_assign_rhs1 (_a1);
18586 : 4813 : _q20 = do_valueize (valueize, _q20);
18587 : 4813 : tree _q21 = gimple_assign_rhs2 (_a1);
18588 : 4813 : _q21 = do_valueize (valueize, _q21);
18589 : 4813 : {
18590 : 4813 : tree _p1_pops[1];
18591 : 4813 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
18592 : : {
18593 : 54 : tree _q50 = _p1_pops[0];
18594 : 54 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18595 : : {
18596 : 9 : {
18597 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18598 : 9 : if (gimple_simplify_457 (res_op, seq, valueize, type, captures, GT_EXPR))
18599 : 3 : return true;
18600 : : }
18601 : : }
18602 : : }
18603 : : }
18604 : 4810 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
18605 : : {
18606 : 130 : {
18607 : 130 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
18608 : 130 : if (gimple_simplify_457 (res_op, seq, valueize, type, captures, GT_EXPR))
18609 : 2 : return true;
18610 : : }
18611 : : }
18612 : : break;
18613 : : }
18614 : : default:;
18615 : : }
18616 : : }
18617 : : break;
18618 : 34733761 : default:;
18619 : : }
18620 : 34733761 : switch (TREE_CODE (_p1))
18621 : : {
18622 : 11145479 : case SSA_NAME:
18623 : 11145479 : if (gimple *_d1 = get_def (valueize, _p1))
18624 : : {
18625 : 3661037 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18626 : 3921726 : switch (gimple_assign_rhs_code (_a1))
18627 : : {
18628 : 573 : case TRUNC_MOD_EXPR:
18629 : 573 : {
18630 : 573 : tree _q30 = gimple_assign_rhs1 (_a1);
18631 : 573 : _q30 = do_valueize (valueize, _q30);
18632 : 573 : tree _q31 = gimple_assign_rhs2 (_a1);
18633 : 573 : _q31 = do_valueize (valueize, _q31);
18634 : 573 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
18635 : : {
18636 : 172 : {
18637 : 172 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
18638 : 172 : if (gimple_simplify_458 (res_op, seq, valueize, type, captures, LT_EXPR))
18639 : 1 : return true;
18640 : : }
18641 : : }
18642 : : break;
18643 : : }
18644 : : default:;
18645 : : }
18646 : : }
18647 : : break;
18648 : 34733760 : default:;
18649 : : }
18650 : 34733760 : switch (TREE_CODE (_p0))
18651 : : {
18652 : 33959727 : case SSA_NAME:
18653 : 33959727 : if (gimple *_d1 = get_def (valueize, _p0))
18654 : : {
18655 : 11738462 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
18656 : 14436472 : switch (gimple_assign_rhs_code (_a1))
18657 : : {
18658 : 130992 : case MULT_EXPR:
18659 : 130992 : {
18660 : 130992 : tree _q20 = gimple_assign_rhs1 (_a1);
18661 : 130992 : _q20 = do_valueize (valueize, _q20);
18662 : 130992 : tree _q21 = gimple_assign_rhs2 (_a1);
18663 : 130992 : _q21 = do_valueize (valueize, _q21);
18664 : 130992 : if (tree_swap_operands_p (_q20, _q21))
18665 : 2148 : std::swap (_q20, _q21);
18666 : 130992 : switch (TREE_CODE (_p1))
18667 : : {
18668 : 64157 : case SSA_NAME:
18669 : 64157 : if (gimple *_d2 = get_def (valueize, _p1))
18670 : : {
18671 : 58597 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18672 : 50274 : switch (gimple_assign_rhs_code (_a2))
18673 : : {
18674 : 24963 : case MULT_EXPR:
18675 : 24963 : {
18676 : 24963 : tree _q50 = gimple_assign_rhs1 (_a2);
18677 : 24963 : _q50 = do_valueize (valueize, _q50);
18678 : 24963 : tree _q51 = gimple_assign_rhs2 (_a2);
18679 : 24963 : _q51 = do_valueize (valueize, _q51);
18680 : 24963 : if (tree_swap_operands_p (_q50, _q51))
18681 : 1198 : std::swap (_q50, _q51);
18682 : 24963 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18683 : : {
18684 : 343 : {
18685 : 343 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
18686 : 343 : if (gimple_simplify_459 (res_op, seq, valueize, type, captures, GT_EXPR))
18687 : 76 : return true;
18688 : : }
18689 : : }
18690 : 24887 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18691 : : {
18692 : 32 : {
18693 : 32 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
18694 : 32 : if (gimple_simplify_459 (res_op, seq, valueize, type, captures, GT_EXPR))
18695 : 0 : return true;
18696 : : }
18697 : : }
18698 : 24887 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18699 : : {
18700 : 0 : {
18701 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
18702 : 0 : if (gimple_simplify_459 (res_op, seq, valueize, type, captures, GT_EXPR))
18703 : 0 : return true;
18704 : : }
18705 : : }
18706 : 24887 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18707 : : {
18708 : 1567 : {
18709 : 1567 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
18710 : 1567 : if (gimple_simplify_459 (res_op, seq, valueize, type, captures, GT_EXPR))
18711 : 0 : return true;
18712 : : }
18713 : : }
18714 : 34704990 : break;
18715 : : }
18716 : : default:;
18717 : : }
18718 : : }
18719 : : break;
18720 : : default:;
18721 : : }
18722 : 34704990 : break;
18723 : : }
18724 : 1090756 : case PLUS_EXPR:
18725 : 1090756 : {
18726 : 1090756 : tree _q20 = gimple_assign_rhs1 (_a1);
18727 : 1090756 : _q20 = do_valueize (valueize, _q20);
18728 : 1090756 : tree _q21 = gimple_assign_rhs2 (_a1);
18729 : 1090756 : _q21 = do_valueize (valueize, _q21);
18730 : 1090756 : if (tree_swap_operands_p (_q20, _q21))
18731 : 19935 : std::swap (_q20, _q21);
18732 : 1090756 : if (integer_minus_onep (_q21))
18733 : : {
18734 : 242496 : switch (TREE_CODE (_p1))
18735 : : {
18736 : 184362 : case INTEGER_CST:
18737 : 184362 : {
18738 : 184362 : {
18739 : 184362 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
18740 : 184362 : if (gimple_simplify_484 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR))
18741 : 21 : return true;
18742 : : }
18743 : 184341 : break;
18744 : : }
18745 : : default:;
18746 : : }
18747 : : }
18748 : 1090735 : switch (TREE_CODE (_p1))
18749 : : {
18750 : 392854 : case SSA_NAME:
18751 : 392854 : if (gimple *_d2 = get_def (valueize, _p1))
18752 : : {
18753 : 359242 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18754 : 335805 : switch (gimple_assign_rhs_code (_a2))
18755 : : {
18756 : 164647 : case PLUS_EXPR:
18757 : 164647 : {
18758 : 164647 : tree _q50 = gimple_assign_rhs1 (_a2);
18759 : 164647 : _q50 = do_valueize (valueize, _q50);
18760 : 164647 : tree _q51 = gimple_assign_rhs2 (_a2);
18761 : 164647 : _q51 = do_valueize (valueize, _q51);
18762 : 164647 : if (tree_swap_operands_p (_q50, _q51))
18763 : 3304 : std::swap (_q50, _q51);
18764 : 164647 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18765 : : {
18766 : 8742 : {
18767 : 8742 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
18768 : 8742 : if (gimple_simplify_460 (res_op, seq, valueize, type, captures, GT_EXPR))
18769 : 6145 : return true;
18770 : : }
18771 : : }
18772 : 158502 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18773 : : {
18774 : 8621 : {
18775 : 8621 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
18776 : 8621 : if (gimple_simplify_460 (res_op, seq, valueize, type, captures, GT_EXPR))
18777 : 5341 : return true;
18778 : : }
18779 : : }
18780 : 153161 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18781 : : {
18782 : 111 : {
18783 : 111 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
18784 : 111 : if (gimple_simplify_460 (res_op, seq, valueize, type, captures, GT_EXPR))
18785 : 4 : return true;
18786 : : }
18787 : : }
18788 : 153157 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18789 : : {
18790 : 3022 : {
18791 : 3022 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
18792 : 3022 : if (gimple_simplify_460 (res_op, seq, valueize, type, captures, GT_EXPR))
18793 : 369 : return true;
18794 : : }
18795 : : }
18796 : 1078876 : break;
18797 : : }
18798 : : default:;
18799 : : }
18800 : : }
18801 : : break;
18802 : 1078876 : default:;
18803 : : }
18804 : 1078876 : switch (TREE_CODE (_q21))
18805 : : {
18806 : 845900 : case INTEGER_CST:
18807 : 845900 : {
18808 : 845900 : switch (TREE_CODE (_p1))
18809 : : {
18810 : 231113 : case SSA_NAME:
18811 : 231113 : if (gimple *_d2 = get_def (valueize, _p1))
18812 : : {
18813 : 201454 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18814 : 168841 : switch (gimple_assign_rhs_code (_a2))
18815 : : {
18816 : 53590 : case PLUS_EXPR:
18817 : 53590 : {
18818 : 53590 : tree _q50 = gimple_assign_rhs1 (_a2);
18819 : 53590 : _q50 = do_valueize (valueize, _q50);
18820 : 53590 : tree _q51 = gimple_assign_rhs2 (_a2);
18821 : 53590 : _q51 = do_valueize (valueize, _q51);
18822 : 53590 : if (tree_swap_operands_p (_q50, _q51))
18823 : 88 : std::swap (_q50, _q51);
18824 : 53590 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18825 : : {
18826 : 2466 : {
18827 : 2466 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
18828 : 2466 : if (gimple_simplify_461 (res_op, seq, valueize, type, captures, GT_EXPR))
18829 : 0 : return true;
18830 : : }
18831 : : }
18832 : 1078876 : break;
18833 : : }
18834 : : default:;
18835 : : }
18836 : : }
18837 : : break;
18838 : : default:;
18839 : : }
18840 : : break;
18841 : : }
18842 : 1078876 : default:;
18843 : : }
18844 : 1078876 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
18845 : : {
18846 : 26289 : {
18847 : 26289 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
18848 : 26289 : if (gimple_simplify_462 (res_op, seq, valueize, type, captures, GT_EXPR))
18849 : 1907 : return true;
18850 : : }
18851 : : }
18852 : 1076969 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18853 : : {
18854 : 2987 : {
18855 : 2987 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
18856 : 2987 : if (gimple_simplify_462 (res_op, seq, valueize, type, captures, GT_EXPR))
18857 : 371 : return true;
18858 : : }
18859 : : }
18860 : 34704990 : break;
18861 : : }
18862 : 1225187 : CASE_CONVERT:
18863 : 1225187 : {
18864 : 1225187 : tree _q20 = gimple_assign_rhs1 (_a1);
18865 : 1225187 : _q20 = do_valueize (valueize, _q20);
18866 : 1225187 : switch (TREE_CODE (_q20))
18867 : : {
18868 : 1224043 : case SSA_NAME:
18869 : 1224043 : if (gimple *_d2 = get_def (valueize, _q20))
18870 : : {
18871 : 1164628 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18872 : 1192475 : switch (gimple_assign_rhs_code (_a2))
18873 : : {
18874 : 49423 : case EXACT_DIV_EXPR:
18875 : 49423 : {
18876 : 49423 : tree _q30 = gimple_assign_rhs1 (_a2);
18877 : 49423 : _q30 = do_valueize (valueize, _q30);
18878 : 49423 : tree _q31 = gimple_assign_rhs2 (_a2);
18879 : 49423 : _q31 = do_valueize (valueize, _q31);
18880 : 49423 : switch (TREE_CODE (_q31))
18881 : : {
18882 : 49423 : case INTEGER_CST:
18883 : 49423 : {
18884 : 49423 : switch (TREE_CODE (_p1))
18885 : : {
18886 : 21451 : case SSA_NAME:
18887 : 21451 : if (gimple *_d3 = get_def (valueize, _p1))
18888 : : {
18889 : 21370 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
18890 : 23880 : switch (gimple_assign_rhs_code (_a3))
18891 : : {
18892 : 3890 : CASE_CONVERT:
18893 : 3890 : {
18894 : 3890 : tree _q60 = gimple_assign_rhs1 (_a3);
18895 : 3890 : _q60 = do_valueize (valueize, _q60);
18896 : 3890 : switch (TREE_CODE (_q60))
18897 : : {
18898 : 3890 : case SSA_NAME:
18899 : 3890 : if (gimple *_d4 = get_def (valueize, _q60))
18900 : : {
18901 : 3890 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
18902 : 1327 : switch (gimple_assign_rhs_code (_a4))
18903 : : {
18904 : 455 : case EXACT_DIV_EXPR:
18905 : 455 : {
18906 : 455 : tree _q70 = gimple_assign_rhs1 (_a4);
18907 : 455 : _q70 = do_valueize (valueize, _q70);
18908 : 455 : tree _q71 = gimple_assign_rhs2 (_a4);
18909 : 455 : _q71 = do_valueize (valueize, _q71);
18910 : 455 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
18911 : : {
18912 : 455 : {
18913 : 455 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
18914 : 455 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, GT_EXPR))
18915 : 266 : return true;
18916 : : }
18917 : : }
18918 : : break;
18919 : : }
18920 : : default:;
18921 : : }
18922 : : }
18923 : : break;
18924 : : default:;
18925 : : }
18926 : : break;
18927 : : }
18928 : : default:;
18929 : : }
18930 : : }
18931 : : break;
18932 : : default:;
18933 : : }
18934 : : break;
18935 : : }
18936 : : default:;
18937 : : }
18938 : : break;
18939 : : }
18940 : : default:;
18941 : : }
18942 : : }
18943 : : break;
18944 : : default:;
18945 : : }
18946 : : break;
18947 : : }
18948 : 30512 : case EXACT_DIV_EXPR:
18949 : 30512 : {
18950 : 30512 : tree _q20 = gimple_assign_rhs1 (_a1);
18951 : 30512 : _q20 = do_valueize (valueize, _q20);
18952 : 30512 : tree _q21 = gimple_assign_rhs2 (_a1);
18953 : 30512 : _q21 = do_valueize (valueize, _q21);
18954 : 30512 : switch (TREE_CODE (_q21))
18955 : : {
18956 : 30512 : case INTEGER_CST:
18957 : 30512 : {
18958 : 30512 : switch (TREE_CODE (_p1))
18959 : : {
18960 : 5430 : case SSA_NAME:
18961 : 5430 : if (gimple *_d2 = get_def (valueize, _p1))
18962 : : {
18963 : 4995 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
18964 : 4285 : switch (gimple_assign_rhs_code (_a2))
18965 : : {
18966 : 255 : case EXACT_DIV_EXPR:
18967 : 255 : {
18968 : 255 : tree _q50 = gimple_assign_rhs1 (_a2);
18969 : 255 : _q50 = do_valueize (valueize, _q50);
18970 : 255 : tree _q51 = gimple_assign_rhs2 (_a2);
18971 : 255 : _q51 = do_valueize (valueize, _q51);
18972 : 255 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18973 : : {
18974 : 231 : {
18975 : 231 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
18976 : 231 : if (gimple_simplify_239 (res_op, seq, valueize, type, captures, GT_EXPR))
18977 : 231 : return true;
18978 : : }
18979 : : }
18980 : : break;
18981 : : }
18982 : : default:;
18983 : : }
18984 : : }
18985 : : break;
18986 : : default:;
18987 : : }
18988 : : break;
18989 : : }
18990 : : default:;
18991 : : }
18992 : : break;
18993 : : }
18994 : 54409 : case TRUNC_DIV_EXPR:
18995 : 54409 : {
18996 : 54409 : tree _q20 = gimple_assign_rhs1 (_a1);
18997 : 54409 : _q20 = do_valueize (valueize, _q20);
18998 : 54409 : tree _q21 = gimple_assign_rhs2 (_a1);
18999 : 54409 : _q21 = do_valueize (valueize, _q21);
19000 : 54409 : switch (TREE_CODE (_q21))
19001 : : {
19002 : 38533 : case INTEGER_CST:
19003 : 38533 : {
19004 : 38533 : switch (TREE_CODE (_p1))
19005 : : {
19006 : 12828 : case INTEGER_CST:
19007 : 12828 : {
19008 : 12828 : {
19009 : 12828 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19010 : 12828 : if (gimple_simplify_241 (res_op, seq, valueize, type, captures, GT_EXPR))
19011 : 12782 : return true;
19012 : : }
19013 : 46 : break;
19014 : : }
19015 : : default:;
19016 : : }
19017 : : break;
19018 : : }
19019 : : default:;
19020 : : }
19021 : : break;
19022 : : }
19023 : 202439 : case MINUS_EXPR:
19024 : 202439 : {
19025 : 202439 : tree _q20 = gimple_assign_rhs1 (_a1);
19026 : 202439 : _q20 = do_valueize (valueize, _q20);
19027 : 202439 : tree _q21 = gimple_assign_rhs2 (_a1);
19028 : 202439 : _q21 = do_valueize (valueize, _q21);
19029 : 202439 : switch (TREE_CODE (_p1))
19030 : : {
19031 : 75208 : case SSA_NAME:
19032 : 75208 : if (gimple *_d2 = get_def (valueize, _p1))
19033 : : {
19034 : 69549 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19035 : 51625 : switch (gimple_assign_rhs_code (_a2))
19036 : : {
19037 : 15292 : case MINUS_EXPR:
19038 : 15292 : {
19039 : 15292 : tree _q50 = gimple_assign_rhs1 (_a2);
19040 : 15292 : _q50 = do_valueize (valueize, _q50);
19041 : 15292 : tree _q51 = gimple_assign_rhs2 (_a2);
19042 : 15292 : _q51 = do_valueize (valueize, _q51);
19043 : 15292 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19044 : : {
19045 : 4646 : {
19046 : 4646 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
19047 : 4646 : if (gimple_simplify_463 (res_op, seq, valueize, type, captures, GT_EXPR))
19048 : 390 : return true;
19049 : : }
19050 : : }
19051 : 14902 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19052 : : {
19053 : 1989 : {
19054 : 1989 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
19055 : 1989 : if (gimple_simplify_464 (res_op, seq, valueize, type, captures, GT_EXPR))
19056 : 799 : return true;
19057 : : }
19058 : : }
19059 : : break;
19060 : : }
19061 : : default:;
19062 : : }
19063 : : }
19064 : : break;
19065 : : default:;
19066 : : }
19067 : : break;
19068 : : }
19069 : 171648 : case POINTER_DIFF_EXPR:
19070 : 171648 : {
19071 : 171648 : tree _q20 = gimple_assign_rhs1 (_a1);
19072 : 171648 : _q20 = do_valueize (valueize, _q20);
19073 : 171648 : tree _q21 = gimple_assign_rhs2 (_a1);
19074 : 171648 : _q21 = do_valueize (valueize, _q21);
19075 : 171648 : switch (TREE_CODE (_p1))
19076 : : {
19077 : 7760 : case SSA_NAME:
19078 : 7760 : if (gimple *_d2 = get_def (valueize, _p1))
19079 : : {
19080 : 7510 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19081 : 6984 : switch (gimple_assign_rhs_code (_a2))
19082 : : {
19083 : 1618 : case POINTER_DIFF_EXPR:
19084 : 1618 : {
19085 : 1618 : tree _q50 = gimple_assign_rhs1 (_a2);
19086 : 1618 : _q50 = do_valueize (valueize, _q50);
19087 : 1618 : tree _q51 = gimple_assign_rhs2 (_a2);
19088 : 1618 : _q51 = do_valueize (valueize, _q51);
19089 : 1618 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
19090 : : {
19091 : 68 : {
19092 : 68 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
19093 : 68 : if (gimple_simplify_245 (res_op, seq, valueize, type, captures, GT_EXPR))
19094 : 68 : return true;
19095 : : }
19096 : : }
19097 : 1550 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19098 : : {
19099 : 0 : {
19100 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
19101 : 0 : if (gimple_simplify_246 (res_op, seq, valueize, type, captures, GT_EXPR))
19102 : 0 : return true;
19103 : : }
19104 : : }
19105 : : break;
19106 : : }
19107 : : default:;
19108 : : }
19109 : : }
19110 : : break;
19111 : : default:;
19112 : : }
19113 : : break;
19114 : : }
19115 : : default:;
19116 : : }
19117 : : }
19118 : : break;
19119 : 34704990 : default:;
19120 : : }
19121 : 34704990 : switch (TREE_CODE (_p1))
19122 : : {
19123 : 11131399 : case SSA_NAME:
19124 : 11131399 : if (gimple *_d1 = get_def (valueize, _p1))
19125 : : {
19126 : 3646957 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19127 : 3907818 : switch (gimple_assign_rhs_code (_a1))
19128 : : {
19129 : 750539 : case PLUS_EXPR:
19130 : 750539 : {
19131 : 750539 : tree _q30 = gimple_assign_rhs1 (_a1);
19132 : 750539 : _q30 = do_valueize (valueize, _q30);
19133 : 750539 : tree _q31 = gimple_assign_rhs2 (_a1);
19134 : 750539 : _q31 = do_valueize (valueize, _q31);
19135 : 750539 : if (tree_swap_operands_p (_q30, _q31))
19136 : 16695 : std::swap (_q30, _q31);
19137 : 750539 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
19138 : : {
19139 : 41214 : {
19140 : 41214 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
19141 : 41214 : if (gimple_simplify_462 (res_op, seq, valueize, type, captures, LT_EXPR))
19142 : 16 : return true;
19143 : : }
19144 : : }
19145 : 750523 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
19146 : : {
19147 : 40719 : {
19148 : 40719 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
19149 : 40719 : if (gimple_simplify_462 (res_op, seq, valueize, type, captures, LT_EXPR))
19150 : 308 : return true;
19151 : : }
19152 : : }
19153 : 34704666 : break;
19154 : : }
19155 : 144828 : case MINUS_EXPR:
19156 : 144828 : {
19157 : 144828 : tree _q30 = gimple_assign_rhs1 (_a1);
19158 : 144828 : _q30 = do_valueize (valueize, _q30);
19159 : 144828 : tree _q31 = gimple_assign_rhs2 (_a1);
19160 : 144828 : _q31 = do_valueize (valueize, _q31);
19161 : 144828 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
19162 : : {
19163 : 14712 : {
19164 : 14712 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
19165 : 14712 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, GT_EXPR))
19166 : 0 : return true;
19167 : : }
19168 : : }
19169 : : break;
19170 : : }
19171 : : default:;
19172 : : }
19173 : : }
19174 : : break;
19175 : 34704666 : default:;
19176 : : }
19177 : 34704666 : switch (TREE_CODE (_p0))
19178 : : {
19179 : 33930633 : case SSA_NAME:
19180 : 33930633 : if (gimple *_d1 = get_def (valueize, _p0))
19181 : : {
19182 : 11709368 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19183 : 14407204 : switch (gimple_assign_rhs_code (_a1))
19184 : : {
19185 : 201250 : case MINUS_EXPR:
19186 : 201250 : {
19187 : 201250 : tree _q20 = gimple_assign_rhs1 (_a1);
19188 : 201250 : _q20 = do_valueize (valueize, _q20);
19189 : 201250 : tree _q21 = gimple_assign_rhs2 (_a1);
19190 : 201250 : _q21 = do_valueize (valueize, _q21);
19191 : 201250 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19192 : : {
19193 : 795 : {
19194 : 795 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
19195 : 795 : if (gimple_simplify_244 (res_op, seq, valueize, type, captures, LT_EXPR))
19196 : 7 : return true;
19197 : : }
19198 : : }
19199 : : break;
19200 : : }
19201 : 40105 : case BIT_AND_EXPR:
19202 : 40105 : {
19203 : 40105 : tree _q20 = gimple_assign_rhs1 (_a1);
19204 : 40105 : _q20 = do_valueize (valueize, _q20);
19205 : 40105 : tree _q21 = gimple_assign_rhs2 (_a1);
19206 : 40105 : _q21 = do_valueize (valueize, _q21);
19207 : 40105 : if (tree_swap_operands_p (_q20, _q21))
19208 : 159 : std::swap (_q20, _q21);
19209 : 40105 : if (tree_expr_nonnegative_p (_q20))
19210 : : {
19211 : 27382 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19212 : : {
19213 : 0 : {
19214 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19215 : 0 : if (gimple_simplify_465 (res_op, seq, valueize, type, captures, GT_EXPR, BIT_AND_EXPR))
19216 : 0 : return true;
19217 : : }
19218 : : }
19219 : : }
19220 : 40105 : if (tree_expr_nonnegative_p (_q21))
19221 : : {
19222 : 31274 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
19223 : : {
19224 : 237 : {
19225 : 237 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
19226 : 237 : if (gimple_simplify_465 (res_op, seq, valueize, type, captures, GT_EXPR, BIT_AND_EXPR))
19227 : 237 : return true;
19228 : : }
19229 : : }
19230 : : }
19231 : 34704422 : break;
19232 : : }
19233 : : default:;
19234 : : }
19235 : : }
19236 : : break;
19237 : 34704422 : default:;
19238 : : }
19239 : 34704422 : switch (TREE_CODE (_p1))
19240 : : {
19241 : 11131075 : case SSA_NAME:
19242 : 11131075 : if (gimple *_d1 = get_def (valueize, _p1))
19243 : : {
19244 : 3646633 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19245 : 3907494 : switch (gimple_assign_rhs_code (_a1))
19246 : : {
19247 : 788 : case BIT_IOR_EXPR:
19248 : 788 : {
19249 : 788 : tree _q30 = gimple_assign_rhs1 (_a1);
19250 : 788 : _q30 = do_valueize (valueize, _q30);
19251 : 788 : tree _q31 = gimple_assign_rhs2 (_a1);
19252 : 788 : _q31 = do_valueize (valueize, _q31);
19253 : 788 : if (tree_swap_operands_p (_q30, _q31))
19254 : 10 : std::swap (_q30, _q31);
19255 : 788 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
19256 : : {
19257 : 19 : if (tree_expr_nonnegative_p (_q30))
19258 : : {
19259 : 3 : {
19260 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
19261 : 3 : if (gimple_simplify_465 (res_op, seq, valueize, type, captures, LT_EXPR, BIT_IOR_EXPR))
19262 : 3 : return true;
19263 : : }
19264 : : }
19265 : : }
19266 : 785 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
19267 : : {
19268 : 0 : if (tree_expr_nonnegative_p (_q31))
19269 : : {
19270 : 0 : {
19271 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
19272 : 0 : if (gimple_simplify_465 (res_op, seq, valueize, type, captures, LT_EXPR, BIT_IOR_EXPR))
19273 : 0 : return true;
19274 : : }
19275 : : }
19276 : : }
19277 : 34704419 : break;
19278 : : }
19279 : : default:;
19280 : : }
19281 : : }
19282 : : break;
19283 : 34704419 : default:;
19284 : : }
19285 : 34704419 : switch (TREE_CODE (_p0))
19286 : : {
19287 : 33930386 : case SSA_NAME:
19288 : 33930386 : if (gimple *_d1 = get_def (valueize, _p0))
19289 : : {
19290 : 11709121 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19291 : 14406958 : switch (gimple_assign_rhs_code (_a1))
19292 : : {
19293 : 51027 : case MAX_EXPR:
19294 : 51027 : {
19295 : 51027 : tree _q20 = gimple_assign_rhs1 (_a1);
19296 : 51027 : _q20 = do_valueize (valueize, _q20);
19297 : 51027 : tree _q21 = gimple_assign_rhs2 (_a1);
19298 : 51027 : _q21 = do_valueize (valueize, _q21);
19299 : 51027 : if (tree_swap_operands_p (_q20, _q21))
19300 : 33 : std::swap (_q20, _q21);
19301 : 51027 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19302 : : {
19303 : 0 : {
19304 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19305 : 0 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MAX_EXPR, GT_EXPR, LT_EXPR))
19306 : 0 : return true;
19307 : : }
19308 : : }
19309 : 51027 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
19310 : : {
19311 : 8609 : {
19312 : 8609 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
19313 : 8609 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MAX_EXPR, GT_EXPR, LT_EXPR))
19314 : 8597 : return true;
19315 : : }
19316 : : }
19317 : 42430 : switch (TREE_CODE (_q21))
19318 : : {
19319 : 41088 : case INTEGER_CST:
19320 : 41088 : {
19321 : 41088 : switch (TREE_CODE (_p1))
19322 : : {
19323 : 6790 : case INTEGER_CST:
19324 : 6790 : {
19325 : 6790 : {
19326 : 6790 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19327 : 6790 : if (gimple_simplify_466 (res_op, seq, valueize, type, captures, MAX_EXPR, GT_EXPR, BIT_IOR_EXPR))
19328 : 583 : return true;
19329 : : }
19330 : 6207 : break;
19331 : : }
19332 : : default:;
19333 : : }
19334 : : break;
19335 : : }
19336 : : default:;
19337 : : }
19338 : 34695239 : break;
19339 : : }
19340 : : default:;
19341 : : }
19342 : : }
19343 : : break;
19344 : 34695239 : default:;
19345 : : }
19346 : 34695239 : switch (TREE_CODE (_p1))
19347 : : {
19348 : 11131072 : case SSA_NAME:
19349 : 11131072 : if (gimple *_d1 = get_def (valueize, _p1))
19350 : : {
19351 : 3646630 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19352 : 3907491 : switch (gimple_assign_rhs_code (_a1))
19353 : : {
19354 : 18561 : case MIN_EXPR:
19355 : 18561 : {
19356 : 18561 : tree _q30 = gimple_assign_rhs1 (_a1);
19357 : 18561 : _q30 = do_valueize (valueize, _q30);
19358 : 18561 : tree _q31 = gimple_assign_rhs2 (_a1);
19359 : 18561 : _q31 = do_valueize (valueize, _q31);
19360 : 18561 : if (tree_swap_operands_p (_q30, _q31))
19361 : 1206 : std::swap (_q30, _q31);
19362 : 18561 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
19363 : : {
19364 : 940 : {
19365 : 940 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
19366 : 940 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR, GT_EXPR))
19367 : 940 : return true;
19368 : : }
19369 : : }
19370 : 17621 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
19371 : : {
19372 : 59 : {
19373 : 59 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
19374 : 59 : if (gimple_simplify_254 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR, GT_EXPR))
19375 : 59 : return true;
19376 : : }
19377 : : }
19378 : 34694093 : break;
19379 : : }
19380 : 12122 : case MAX_EXPR:
19381 : 12122 : {
19382 : 12122 : tree _q30 = gimple_assign_rhs1 (_a1);
19383 : 12122 : _q30 = do_valueize (valueize, _q30);
19384 : 12122 : tree _q31 = gimple_assign_rhs2 (_a1);
19385 : 12122 : _q31 = do_valueize (valueize, _q31);
19386 : 12122 : if (tree_swap_operands_p (_q30, _q31))
19387 : 167 : std::swap (_q30, _q31);
19388 : 12122 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
19389 : : {
19390 : 140 : {
19391 : 140 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
19392 : 140 : if (gimple_simplify_467 (res_op, seq, valueize, type, captures, MAX_EXPR, GT_EXPR))
19393 : 140 : return true;
19394 : : }
19395 : : }
19396 : 11982 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
19397 : : {
19398 : 7 : {
19399 : 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
19400 : 7 : if (gimple_simplify_467 (res_op, seq, valueize, type, captures, MAX_EXPR, GT_EXPR))
19401 : 7 : return true;
19402 : : }
19403 : : }
19404 : 34694093 : break;
19405 : : }
19406 : : default:;
19407 : : }
19408 : : }
19409 : : break;
19410 : 34694093 : default:;
19411 : : }
19412 : 34694093 : switch (TREE_CODE (_p0))
19413 : : {
19414 : 33920060 : case SSA_NAME:
19415 : 33920060 : if (gimple *_d1 = get_def (valueize, _p0))
19416 : : {
19417 : 11698795 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19418 : 14396850 : switch (gimple_assign_rhs_code (_a1))
19419 : : {
19420 : 101303 : case MIN_EXPR:
19421 : 101303 : {
19422 : 101303 : tree _q20 = gimple_assign_rhs1 (_a1);
19423 : 101303 : _q20 = do_valueize (valueize, _q20);
19424 : 101303 : tree _q21 = gimple_assign_rhs2 (_a1);
19425 : 101303 : _q21 = do_valueize (valueize, _q21);
19426 : 101303 : if (tree_swap_operands_p (_q20, _q21))
19427 : 6245 : std::swap (_q20, _q21);
19428 : 101303 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19429 : : {
19430 : 0 : {
19431 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
19432 : 0 : if (gimple_simplify_467 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
19433 : 0 : return true;
19434 : : }
19435 : : }
19436 : 101303 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
19437 : : {
19438 : 435 : {
19439 : 435 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
19440 : 435 : if (gimple_simplify_467 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR))
19441 : 435 : return true;
19442 : : }
19443 : : }
19444 : 100868 : switch (TREE_CODE (_q21))
19445 : : {
19446 : 52285 : case INTEGER_CST:
19447 : 52285 : {
19448 : 52285 : switch (TREE_CODE (_p1))
19449 : : {
19450 : 13805 : case INTEGER_CST:
19451 : 13805 : {
19452 : 13805 : {
19453 : 13805 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19454 : 13805 : if (gimple_simplify_466 (res_op, seq, valueize, type, captures, MIN_EXPR, GT_EXPR, BIT_AND_EXPR))
19455 : 472 : return true;
19456 : : }
19457 : 13333 : break;
19458 : : }
19459 : : default:;
19460 : : }
19461 : : break;
19462 : : }
19463 : : default:;
19464 : : }
19465 : 34693156 : break;
19466 : : }
19467 : 1945 : case VEC_COND_EXPR:
19468 : 1945 : {
19469 : 1945 : tree _q20 = gimple_assign_rhs1 (_a1);
19470 : 1945 : _q20 = do_valueize (valueize, _q20);
19471 : 1945 : tree _q21 = gimple_assign_rhs2 (_a1);
19472 : 1945 : _q21 = do_valueize (valueize, _q21);
19473 : 1945 : tree _q22 = gimple_assign_rhs3 (_a1);
19474 : 1945 : _q22 = do_valueize (valueize, _q22);
19475 : 1945 : switch (TREE_CODE (_p1))
19476 : : {
19477 : 1907 : case SSA_NAME:
19478 : 1907 : if (gimple *_d2 = get_def (valueize, _p1))
19479 : : {
19480 : 1907 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19481 : 2115 : switch (gimple_assign_rhs_code (_a2))
19482 : : {
19483 : 24 : case VEC_COND_EXPR:
19484 : 24 : {
19485 : 24 : tree _q60 = gimple_assign_rhs1 (_a2);
19486 : 24 : _q60 = do_valueize (valueize, _q60);
19487 : 24 : tree _q61 = gimple_assign_rhs2 (_a2);
19488 : 24 : _q61 = do_valueize (valueize, _q61);
19489 : 24 : tree _q62 = gimple_assign_rhs3 (_a2);
19490 : 24 : _q62 = do_valueize (valueize, _q62);
19491 : 24 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19492 : : {
19493 : 0 : {
19494 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
19495 : 0 : if (VECTOR_TYPE_P (type)
19496 : 0 : && (TREE_CODE_CLASS (GT_EXPR) != tcc_comparison
19497 : 0 : || types_match (type, TREE_TYPE (captures[2]))
19498 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
19499 : : || (optimize_vectors_before_lowering_p ()
19500 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
19501 : : )
19502 : : {
19503 : 0 : gimple_seq *lseq = seq;
19504 : 0 : if (lseq
19505 : 0 : && (!single_use (captures[0])
19506 : 0 : || !single_use (captures[4])))
19507 : 0 : lseq = NULL;
19508 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2569;
19509 : 0 : {
19510 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
19511 : 0 : res_op->ops[0] = captures[1];
19512 : 0 : {
19513 : 0 : tree _o1[2], _r1;
19514 : 0 : _o1[0] = captures[2];
19515 : 0 : _o1[1] = captures[5];
19516 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), GT_EXPR, type, _o1[0], _o1[1]);
19517 : 0 : tem_op.resimplify (NULL, valueize);
19518 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19519 : 0 : if (!_r1) goto next_after_fail2569;
19520 : 0 : res_op->ops[1] = _r1;
19521 : : }
19522 : 0 : {
19523 : 0 : tree _o1[2], _r1;
19524 : 0 : _o1[0] = captures[3];
19525 : 0 : _o1[1] = captures[6];
19526 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), GT_EXPR, type, _o1[0], _o1[1]);
19527 : 0 : tem_op.resimplify (NULL, valueize);
19528 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19529 : 0 : if (!_r1) goto next_after_fail2569;
19530 : 0 : res_op->ops[2] = _r1;
19531 : : }
19532 : 0 : res_op->resimplify (lseq, valueize);
19533 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
19534 : 0 : return true;
19535 : : }
19536 : 0 : next_after_fail2569:;
19537 : : }
19538 : : }
19539 : : }
19540 : : break;
19541 : : }
19542 : : default:;
19543 : : }
19544 : : }
19545 : : break;
19546 : 1945 : default:;
19547 : : }
19548 : 1945 : {
19549 : 1945 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
19550 : 1945 : if (VECTOR_TYPE_P (type)
19551 : 1945 : && (TREE_CODE_CLASS (GT_EXPR) != tcc_comparison
19552 : 1945 : || types_match (type, TREE_TYPE (captures[2]))
19553 : 1945 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
19554 : : || (optimize_vectors_before_lowering_p ()
19555 : 26 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
19556 : : )
19557 : : {
19558 : 1945 : gimple_seq *lseq = seq;
19559 : 1945 : if (lseq
19560 : 420 : && (!single_use (captures[0])))
19561 : 1933 : lseq = NULL;
19562 : 1945 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2570;
19563 : 1945 : {
19564 : 1945 : res_op->set_op (VEC_COND_EXPR, type, 3);
19565 : 1945 : res_op->ops[0] = captures[1];
19566 : 1945 : {
19567 : 1945 : tree _o1[2], _r1;
19568 : 1945 : _o1[0] = captures[2];
19569 : 1945 : _o1[1] = captures[4];
19570 : 1945 : gimple_match_op tem_op (res_op->cond.any_else (), GT_EXPR, type, _o1[0], _o1[1]);
19571 : 1945 : tem_op.resimplify (NULL, valueize);
19572 : 1945 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19573 : 1945 : if (!_r1) goto next_after_fail2570;
19574 : 38 : res_op->ops[1] = _r1;
19575 : : }
19576 : 38 : {
19577 : 38 : tree _o1[2], _r1;
19578 : 38 : _o1[0] = captures[3];
19579 : 38 : _o1[1] = captures[4];
19580 : 38 : gimple_match_op tem_op (res_op->cond.any_else (), GT_EXPR, type, _o1[0], _o1[1]);
19581 : 38 : tem_op.resimplify (NULL, valueize);
19582 : 38 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19583 : 38 : if (!_r1) goto next_after_fail2570;
19584 : 30 : res_op->ops[2] = _r1;
19585 : : }
19586 : 30 : res_op->resimplify (lseq, valueize);
19587 : 30 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
19588 : 30 : return true;
19589 : : }
19590 : 1915 : next_after_fail2570:;
19591 : : }
19592 : : }
19593 : 1915 : break;
19594 : : }
19595 : : default:;
19596 : : }
19597 : : }
19598 : : break;
19599 : 34693156 : default:;
19600 : : }
19601 : 34693156 : switch (TREE_CODE (_p1))
19602 : : {
19603 : 11129902 : case SSA_NAME:
19604 : 11129902 : if (gimple *_d1 = get_def (valueize, _p1))
19605 : : {
19606 : 3645460 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19607 : 3906321 : switch (gimple_assign_rhs_code (_a1))
19608 : : {
19609 : 460 : case VEC_COND_EXPR:
19610 : 460 : {
19611 : 460 : tree _q30 = gimple_assign_rhs1 (_a1);
19612 : 460 : _q30 = do_valueize (valueize, _q30);
19613 : 460 : tree _q31 = gimple_assign_rhs2 (_a1);
19614 : 460 : _q31 = do_valueize (valueize, _q31);
19615 : 460 : tree _q32 = gimple_assign_rhs3 (_a1);
19616 : 460 : _q32 = do_valueize (valueize, _q32);
19617 : 460 : {
19618 : 460 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
19619 : 460 : if (VECTOR_TYPE_P (type)
19620 : 460 : && (TREE_CODE_CLASS (GT_EXPR) != tcc_comparison
19621 : 460 : || types_match (type, TREE_TYPE (captures[3]))
19622 : 460 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
19623 : : || (optimize_vectors_before_lowering_p ()
19624 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
19625 : : )
19626 : : {
19627 : 460 : gimple_seq *lseq = seq;
19628 : 460 : if (lseq
19629 : 88 : && (!single_use (captures[1])))
19630 : 460 : lseq = NULL;
19631 : 460 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2571;
19632 : 460 : {
19633 : 460 : res_op->set_op (VEC_COND_EXPR, type, 3);
19634 : 460 : res_op->ops[0] = captures[2];
19635 : 460 : {
19636 : 460 : tree _o1[2], _r1;
19637 : 460 : _o1[0] = captures[0];
19638 : 460 : _o1[1] = captures[3];
19639 : 460 : gimple_match_op tem_op (res_op->cond.any_else (), GT_EXPR, type, _o1[0], _o1[1]);
19640 : 460 : tem_op.resimplify (NULL, valueize);
19641 : 460 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19642 : 460 : if (!_r1) goto next_after_fail2571;
19643 : 0 : res_op->ops[1] = _r1;
19644 : : }
19645 : 0 : {
19646 : 0 : tree _o1[2], _r1;
19647 : 0 : _o1[0] = captures[0];
19648 : 0 : _o1[1] = captures[4];
19649 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), GT_EXPR, type, _o1[0], _o1[1]);
19650 : 0 : tem_op.resimplify (NULL, valueize);
19651 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
19652 : 0 : if (!_r1) goto next_after_fail2571;
19653 : 0 : res_op->ops[2] = _r1;
19654 : : }
19655 : 0 : res_op->resimplify (lseq, valueize);
19656 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
19657 : 0 : return true;
19658 : : }
19659 : 460 : next_after_fail2571:;
19660 : : }
19661 : : }
19662 : 460 : break;
19663 : : }
19664 : : default:;
19665 : : }
19666 : : }
19667 : : break;
19668 : 34693156 : default:;
19669 : : }
19670 : 34693156 : if (uniform_integer_cst_p (_p1))
19671 : : {
19672 : 22796343 : {
19673 : 22796343 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
19674 : 22796343 : if (gimple_simplify_485 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR))
19675 : 19025 : return true;
19676 : : }
19677 : : }
19678 : 34674131 : switch (TREE_CODE (_p0))
19679 : : {
19680 : 33900136 : case SSA_NAME:
19681 : 33900136 : if (gimple *_d1 = get_def (valueize, _p0))
19682 : : {
19683 : 11683124 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19684 : 14375545 : switch (gimple_assign_rhs_code (_a1))
19685 : : {
19686 : 130819 : case MULT_EXPR:
19687 : 130819 : {
19688 : 130819 : tree _q20 = gimple_assign_rhs1 (_a1);
19689 : 130819 : _q20 = do_valueize (valueize, _q20);
19690 : 130819 : tree _q21 = gimple_assign_rhs2 (_a1);
19691 : 130819 : _q21 = do_valueize (valueize, _q21);
19692 : 130819 : if (tree_swap_operands_p (_q20, _q21))
19693 : 2148 : std::swap (_q20, _q21);
19694 : 130819 : switch (TREE_CODE (_q21))
19695 : : {
19696 : 89379 : case INTEGER_CST:
19697 : 89379 : {
19698 : 89379 : if (integer_zerop (_p1))
19699 : : {
19700 : 3094 : {
19701 : 3094 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
19702 : 3094 : if (gimple_simplify_274 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
19703 : 392 : return true;
19704 : : }
19705 : : }
19706 : : break;
19707 : : }
19708 : : default:;
19709 : : }
19710 : 34673739 : break;
19711 : : }
19712 : : default:;
19713 : : }
19714 : : }
19715 : : break;
19716 : 34673739 : default:;
19717 : : }
19718 : 34673739 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
19719 : : {
19720 : 7539 : {
19721 : 7539 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
19722 : 7539 : if (gimple_simplify_328 (res_op, seq, valueize, type, captures, GT_EXPR))
19723 : 7539 : return true;
19724 : : }
19725 : : }
19726 : 34666200 : switch (TREE_CODE (_p0))
19727 : : {
19728 : 33892319 : case SSA_NAME:
19729 : 33892319 : if (gimple *_d1 = get_def (valueize, _p0))
19730 : : {
19731 : 11676525 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19732 : 14367087 : switch (gimple_assign_rhs_code (_a1))
19733 : : {
19734 : 6302 : case BIT_NOT_EXPR:
19735 : 6302 : {
19736 : 6302 : tree _q20 = gimple_assign_rhs1 (_a1);
19737 : 6302 : _q20 = do_valueize (valueize, _q20);
19738 : 6302 : switch (TREE_CODE (_p1))
19739 : : {
19740 : 5929 : case SSA_NAME:
19741 : 5929 : if (gimple *_d2 = get_def (valueize, _p1))
19742 : : {
19743 : 5668 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19744 : 5430 : switch (gimple_assign_rhs_code (_a2))
19745 : : {
19746 : 36 : case BIT_NOT_EXPR:
19747 : 36 : {
19748 : 36 : tree _q40 = gimple_assign_rhs1 (_a2);
19749 : 36 : _q40 = do_valueize (valueize, _q40);
19750 : 36 : {
19751 : 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
19752 : 36 : if (gimple_simplify_280 (res_op, seq, valueize, type, captures, GT_EXPR))
19753 : 0 : return true;
19754 : : }
19755 : 36 : break;
19756 : : }
19757 : : default:;
19758 : : }
19759 : : }
19760 : : break;
19761 : 6302 : default:;
19762 : : }
19763 : 6302 : {
19764 : 6302 : tree _p1_pops[1];
19765 : 6302 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
19766 : : {
19767 : 5 : tree _q40 = _p1_pops[0];
19768 : 5 : switch (TREE_CODE (_q40))
19769 : : {
19770 : 5 : case SSA_NAME:
19771 : 5 : if (gimple *_d2 = get_def (valueize, _q40))
19772 : : {
19773 : 4 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19774 : 2 : switch (gimple_assign_rhs_code (_a2))
19775 : : {
19776 : 2 : case BIT_NOT_EXPR:
19777 : 2 : {
19778 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
19779 : 2 : _q50 = do_valueize (valueize, _q50);
19780 : 2 : {
19781 : 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
19782 : 2 : if (gimple_simplify_280 (res_op, seq, valueize, type, captures, GT_EXPR))
19783 : 1 : return true;
19784 : : }
19785 : 1 : break;
19786 : : }
19787 : : default:;
19788 : : }
19789 : : }
19790 : : break;
19791 : : default:;
19792 : : }
19793 : : }
19794 : : }
19795 : 6301 : if (CONSTANT_CLASS_P (_p1))
19796 : : {
19797 : 373 : {
19798 : 373 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
19799 : 373 : if (gimple_simplify_279 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
19800 : 89 : return true;
19801 : : }
19802 : : }
19803 : : break;
19804 : : }
19805 : : default:;
19806 : : }
19807 : : }
19808 : : break;
19809 : 34666110 : default:;
19810 : : }
19811 : 34666110 : {
19812 : 34666110 : tree _p0_pops[1];
19813 : 34666110 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
19814 : : {
19815 : 818980 : tree _q20 = _p0_pops[0];
19816 : 818980 : switch (TREE_CODE (_q20))
19817 : : {
19818 : 817836 : case SSA_NAME:
19819 : 817836 : if (gimple *_d1 = get_def (valueize, _q20))
19820 : : {
19821 : 762438 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19822 : 700878 : switch (gimple_assign_rhs_code (_a1))
19823 : : {
19824 : 55 : case BIT_NOT_EXPR:
19825 : 55 : {
19826 : 55 : tree _q30 = gimple_assign_rhs1 (_a1);
19827 : 55 : _q30 = do_valueize (valueize, _q30);
19828 : 55 : switch (TREE_CODE (_p1))
19829 : : {
19830 : 9 : case SSA_NAME:
19831 : 9 : if (gimple *_d2 = get_def (valueize, _p1))
19832 : : {
19833 : 6 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19834 : 6 : switch (gimple_assign_rhs_code (_a2))
19835 : : {
19836 : 0 : case BIT_NOT_EXPR:
19837 : 0 : {
19838 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
19839 : 0 : _q50 = do_valueize (valueize, _q50);
19840 : 0 : {
19841 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
19842 : 0 : if (gimple_simplify_278 (res_op, seq, valueize, type, captures, GT_EXPR))
19843 : 0 : return true;
19844 : : }
19845 : 0 : break;
19846 : : }
19847 : : default:;
19848 : : }
19849 : : }
19850 : : break;
19851 : 55 : default:;
19852 : : }
19853 : 55 : {
19854 : 55 : tree _p1_pops[1];
19855 : 55 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
19856 : : {
19857 : 6 : tree _q50 = _p1_pops[0];
19858 : 6 : switch (TREE_CODE (_q50))
19859 : : {
19860 : 6 : case SSA_NAME:
19861 : 6 : if (gimple *_d2 = get_def (valueize, _q50))
19862 : : {
19863 : 6 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
19864 : 4 : switch (gimple_assign_rhs_code (_a2))
19865 : : {
19866 : 2 : case BIT_NOT_EXPR:
19867 : 2 : {
19868 : 2 : tree _q60 = gimple_assign_rhs1 (_a2);
19869 : 2 : _q60 = do_valueize (valueize, _q60);
19870 : 2 : {
19871 : 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
19872 : 2 : if (gimple_simplify_278 (res_op, seq, valueize, type, captures, GT_EXPR))
19873 : 1 : return true;
19874 : : }
19875 : 1 : break;
19876 : : }
19877 : : default:;
19878 : : }
19879 : : }
19880 : : break;
19881 : : default:;
19882 : : }
19883 : : }
19884 : : }
19885 : 54 : if (CONSTANT_CLASS_P (_p1))
19886 : : {
19887 : 46 : {
19888 : 46 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
19889 : 46 : if (gimple_simplify_279 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
19890 : 5 : return true;
19891 : : }
19892 : : }
19893 : : break;
19894 : : }
19895 : : default:;
19896 : : }
19897 : : }
19898 : : break;
19899 : : default:;
19900 : : }
19901 : : }
19902 : : }
19903 : 34666104 : switch (TREE_CODE (_p1))
19904 : : {
19905 : 529303 : case REAL_CST:
19906 : 529303 : {
19907 : 529303 : {
19908 : 529303 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
19909 : 529303 : if (gimple_simplify_281 (res_op, seq, valueize, type, captures, GT_EXPR))
19910 : 575 : return true;
19911 : : }
19912 : 528728 : break;
19913 : : }
19914 : 34665529 : default:;
19915 : : }
19916 : 34665529 : switch (TREE_CODE (_p0))
19917 : : {
19918 : 33891654 : case SSA_NAME:
19919 : 33891654 : if (gimple *_d1 = get_def (valueize, _p0))
19920 : : {
19921 : 11675993 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
19922 : 14366269 : switch (gimple_assign_rhs_code (_a1))
19923 : : {
19924 : 1074509 : case PLUS_EXPR:
19925 : 1074509 : {
19926 : 1074509 : tree _q20 = gimple_assign_rhs1 (_a1);
19927 : 1074509 : _q20 = do_valueize (valueize, _q20);
19928 : 1074509 : tree _q21 = gimple_assign_rhs2 (_a1);
19929 : 1074509 : _q21 = do_valueize (valueize, _q21);
19930 : 1074509 : if (tree_swap_operands_p (_q20, _q21))
19931 : 19816 : std::swap (_q20, _q21);
19932 : 1074509 : switch (TREE_CODE (_q21))
19933 : : {
19934 : 1317 : case REAL_CST:
19935 : 1317 : {
19936 : 1317 : switch (TREE_CODE (_p1))
19937 : : {
19938 : 948 : case REAL_CST:
19939 : 948 : {
19940 : 948 : {
19941 : 948 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19942 : 948 : if (gimple_simplify_282 (res_op, seq, valueize, type, captures, PLUS_EXPR, GT_EXPR))
19943 : 2 : return true;
19944 : : }
19945 : 946 : break;
19946 : : }
19947 : : default:;
19948 : : }
19949 : : break;
19950 : : }
19951 : 841994 : case INTEGER_CST:
19952 : 841994 : {
19953 : 841994 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19954 : : {
19955 : 2235 : {
19956 : 2235 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21 };
19957 : 2235 : if (gimple_simplify_469 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR))
19958 : 6 : return true;
19959 : : }
19960 : : }
19961 : : break;
19962 : : }
19963 : : default:;
19964 : : }
19965 : 34587520 : break;
19966 : : }
19967 : 201020 : case MINUS_EXPR:
19968 : 201020 : {
19969 : 201020 : tree _q20 = gimple_assign_rhs1 (_a1);
19970 : 201020 : _q20 = do_valueize (valueize, _q20);
19971 : 201020 : tree _q21 = gimple_assign_rhs2 (_a1);
19972 : 201020 : _q21 = do_valueize (valueize, _q21);
19973 : 201020 : switch (TREE_CODE (_q21))
19974 : : {
19975 : 2412 : case REAL_CST:
19976 : 2412 : {
19977 : 2412 : switch (TREE_CODE (_p1))
19978 : : {
19979 : 2412 : case REAL_CST:
19980 : 2412 : {
19981 : 2412 : {
19982 : 2412 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19983 : 2412 : if (gimple_simplify_282 (res_op, seq, valueize, type, captures, MINUS_EXPR, GT_EXPR))
19984 : 0 : return true;
19985 : : }
19986 : 2412 : break;
19987 : : }
19988 : : default:;
19989 : : }
19990 : : break;
19991 : : }
19992 : 201020 : default:;
19993 : : }
19994 : 201020 : switch (TREE_CODE (_q20))
19995 : : {
19996 : 143 : case REAL_CST:
19997 : 143 : {
19998 : 143 : switch (TREE_CODE (_p1))
19999 : : {
20000 : 143 : case REAL_CST:
20001 : 143 : {
20002 : 143 : {
20003 : 143 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
20004 : 143 : if (gimple_simplify_283 (res_op, seq, valueize, type, captures, GT_EXPR))
20005 : 9 : return true;
20006 : : }
20007 : 134 : break;
20008 : : }
20009 : : default:;
20010 : : }
20011 : : break;
20012 : : }
20013 : : default:;
20014 : : }
20015 : : break;
20016 : : }
20017 : 3254 : case FLOAT_EXPR:
20018 : 3254 : {
20019 : 3254 : tree _q20 = gimple_assign_rhs1 (_a1);
20020 : 3254 : _q20 = do_valueize (valueize, _q20);
20021 : 3254 : switch (TREE_CODE (_p1))
20022 : : {
20023 : 1268 : case SSA_NAME:
20024 : 1268 : if (gimple *_d2 = get_def (valueize, _p1))
20025 : : {
20026 : 1198 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20027 : 1478 : switch (gimple_assign_rhs_code (_a2))
20028 : : {
20029 : 0 : case FLOAT_EXPR:
20030 : 0 : {
20031 : 0 : tree _q40 = gimple_assign_rhs1 (_a2);
20032 : 0 : _q40 = do_valueize (valueize, _q40);
20033 : 0 : {
20034 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
20035 : 0 : if (gimple_simplify_286 (res_op, seq, valueize, type, captures, GT_EXPR, GT_EXPR))
20036 : 0 : return true;
20037 : : }
20038 : 0 : break;
20039 : : }
20040 : : default:;
20041 : : }
20042 : : }
20043 : : break;
20044 : 1986 : case REAL_CST:
20045 : 1986 : {
20046 : 1986 : {
20047 : 1986 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20048 : 1986 : if (gimple_simplify_287 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR))
20049 : 202 : return true;
20050 : : }
20051 : 1784 : break;
20052 : : }
20053 : : default:;
20054 : : }
20055 : : break;
20056 : : }
20057 : 30251 : case EXACT_DIV_EXPR:
20058 : 30251 : {
20059 : 30251 : tree _q20 = gimple_assign_rhs1 (_a1);
20060 : 30251 : _q20 = do_valueize (valueize, _q20);
20061 : 30251 : tree _q21 = gimple_assign_rhs2 (_a1);
20062 : 30251 : _q21 = do_valueize (valueize, _q21);
20063 : 30251 : switch (TREE_CODE (_q21))
20064 : : {
20065 : 30251 : case INTEGER_CST:
20066 : 30251 : {
20067 : 30251 : switch (TREE_CODE (_p1))
20068 : : {
20069 : 25052 : case INTEGER_CST:
20070 : 25052 : {
20071 : 25052 : {
20072 : 25052 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
20073 : 25052 : if (gimple_simplify_470 (res_op, seq, valueize, type, captures, GT_EXPR))
20074 : 25052 : return true;
20075 : : }
20076 : 0 : break;
20077 : : }
20078 : : default:;
20079 : : }
20080 : : break;
20081 : : }
20082 : : default:;
20083 : : }
20084 : : break;
20085 : : }
20086 : 1223314 : CASE_CONVERT:
20087 : 1223314 : {
20088 : 1223314 : tree _q20 = gimple_assign_rhs1 (_a1);
20089 : 1223314 : _q20 = do_valueize (valueize, _q20);
20090 : 1223314 : switch (TREE_CODE (_q20))
20091 : : {
20092 : 1222170 : case SSA_NAME:
20093 : 1222170 : if (gimple *_d2 = get_def (valueize, _q20))
20094 : : {
20095 : 1162755 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20096 : 1191149 : switch (gimple_assign_rhs_code (_a2))
20097 : : {
20098 : 49157 : case EXACT_DIV_EXPR:
20099 : 49157 : {
20100 : 49157 : tree _q30 = gimple_assign_rhs1 (_a2);
20101 : 49157 : _q30 = do_valueize (valueize, _q30);
20102 : 49157 : tree _q31 = gimple_assign_rhs2 (_a2);
20103 : 49157 : _q31 = do_valueize (valueize, _q31);
20104 : 49157 : switch (TREE_CODE (_q31))
20105 : : {
20106 : 49157 : case INTEGER_CST:
20107 : 49157 : {
20108 : 49157 : switch (TREE_CODE (_p1))
20109 : : {
20110 : 27972 : case INTEGER_CST:
20111 : 27972 : {
20112 : 27972 : {
20113 : 27972 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
20114 : 27972 : if (gimple_simplify_471 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
20115 : 11462 : return true;
20116 : : }
20117 : 16510 : break;
20118 : : }
20119 : : default:;
20120 : : }
20121 : : break;
20122 : : }
20123 : : default:;
20124 : : }
20125 : : break;
20126 : : }
20127 : : default:;
20128 : : }
20129 : : }
20130 : : break;
20131 : 1211852 : default:;
20132 : : }
20133 : 1211852 : switch (TREE_CODE (_p1))
20134 : : {
20135 : 631739 : case SSA_NAME:
20136 : 631739 : if (gimple *_d2 = get_def (valueize, _p1))
20137 : : {
20138 : 608729 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20139 : 568286 : switch (gimple_assign_rhs_code (_a2))
20140 : : {
20141 : 356169 : CASE_CONVERT:
20142 : 356169 : {
20143 : 356169 : tree _q40 = gimple_assign_rhs1 (_a2);
20144 : 356169 : _q40 = do_valueize (valueize, _q40);
20145 : 356169 : {
20146 : 356169 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
20147 : 356169 : if (gimple_simplify_291 (res_op, seq, valueize, type, captures, GT_EXPR))
20148 : 572 : return true;
20149 : : }
20150 : 355597 : break;
20151 : : }
20152 : : default:;
20153 : : }
20154 : : }
20155 : : break;
20156 : 1211280 : default:;
20157 : : }
20158 : 1211280 : {
20159 : 1211280 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
20160 : 1211280 : if (gimple_simplify_292 (res_op, seq, valueize, type, captures, GT_EXPR))
20161 : 19190 : return true;
20162 : : }
20163 : 1192090 : switch (TREE_CODE (_q20))
20164 : : {
20165 : 1190946 : case SSA_NAME:
20166 : 1190946 : if (gimple *_d2 = get_def (valueize, _q20))
20167 : : {
20168 : 1131669 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20169 : 1152735 : switch (gimple_assign_rhs_code (_a2))
20170 : : {
20171 : 2805 : case ADDR_EXPR:
20172 : 2805 : {
20173 : 2805 : switch (TREE_CODE (_p1))
20174 : : {
20175 : 189 : case SSA_NAME:
20176 : 189 : if (gimple *_d3 = get_def (valueize, _p1))
20177 : : {
20178 : 189 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
20179 : 189 : switch (gimple_assign_rhs_code (_a3))
20180 : : {
20181 : 85 : CASE_CONVERT:
20182 : 85 : {
20183 : 85 : tree _q40 = gimple_assign_rhs1 (_a3);
20184 : 85 : _q40 = do_valueize (valueize, _q40);
20185 : 85 : switch (TREE_CODE (_q40))
20186 : : {
20187 : 85 : case SSA_NAME:
20188 : 85 : if (gimple *_d4 = get_def (valueize, _q40))
20189 : : {
20190 : 85 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
20191 : 170 : switch (gimple_assign_rhs_code (_a4))
20192 : : {
20193 : 9 : case ADDR_EXPR:
20194 : 9 : {
20195 : 9 : {
20196 : 9 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
20197 : 9 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20198 : 6 : return true;
20199 : : }
20200 : 3 : break;
20201 : : }
20202 : : default:;
20203 : : }
20204 : : }
20205 : : break;
20206 : 0 : case ADDR_EXPR:
20207 : 0 : {
20208 : 0 : {
20209 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
20210 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20211 : 0 : return true;
20212 : : }
20213 : 0 : break;
20214 : : }
20215 : : default:;
20216 : : }
20217 : : break;
20218 : : }
20219 : 0 : case ADDR_EXPR:
20220 : 0 : {
20221 : 0 : {
20222 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
20223 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20224 : 0 : return true;
20225 : : }
20226 : 0 : break;
20227 : : }
20228 : : default:;
20229 : : }
20230 : : }
20231 : : break;
20232 : 0 : case ADDR_EXPR:
20233 : 0 : {
20234 : 0 : {
20235 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
20236 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20237 : 0 : return true;
20238 : : }
20239 : 0 : break;
20240 : : }
20241 : : default:;
20242 : : }
20243 : : break;
20244 : : }
20245 : : default:;
20246 : : }
20247 : : }
20248 : : break;
20249 : 1144 : case ADDR_EXPR:
20250 : 1144 : {
20251 : 1144 : switch (TREE_CODE (_p1))
20252 : : {
20253 : 1067 : case SSA_NAME:
20254 : 1067 : if (gimple *_d2 = get_def (valueize, _p1))
20255 : : {
20256 : 1065 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20257 : 1065 : switch (gimple_assign_rhs_code (_a2))
20258 : : {
20259 : 1065 : CASE_CONVERT:
20260 : 1065 : {
20261 : 1065 : tree _q40 = gimple_assign_rhs1 (_a2);
20262 : 1065 : _q40 = do_valueize (valueize, _q40);
20263 : 1065 : switch (TREE_CODE (_q40))
20264 : : {
20265 : 863 : case SSA_NAME:
20266 : 863 : if (gimple *_d3 = get_def (valueize, _q40))
20267 : : {
20268 : 861 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
20269 : 835 : switch (gimple_assign_rhs_code (_a3))
20270 : : {
20271 : 0 : case ADDR_EXPR:
20272 : 0 : {
20273 : 0 : {
20274 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
20275 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20276 : 0 : return true;
20277 : : }
20278 : 0 : break;
20279 : : }
20280 : : default:;
20281 : : }
20282 : : }
20283 : : break;
20284 : 202 : case ADDR_EXPR:
20285 : 202 : {
20286 : 202 : {
20287 : 202 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
20288 : 202 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20289 : 10 : return true;
20290 : : }
20291 : 192 : break;
20292 : : }
20293 : : default:;
20294 : : }
20295 : : break;
20296 : : }
20297 : 0 : case ADDR_EXPR:
20298 : 0 : {
20299 : 0 : {
20300 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
20301 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20302 : 0 : return true;
20303 : : }
20304 : 0 : break;
20305 : : }
20306 : : default:;
20307 : : }
20308 : : }
20309 : : break;
20310 : 0 : case ADDR_EXPR:
20311 : 0 : {
20312 : 0 : {
20313 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
20314 : 0 : if (gimple_simplify_309 (res_op, seq, valueize, type, captures, GT_EXPR))
20315 : 0 : return true;
20316 : : }
20317 : 0 : break;
20318 : : }
20319 : : default:;
20320 : : }
20321 : : break;
20322 : : }
20323 : 1192074 : default:;
20324 : : }
20325 : 1192074 : if (uniform_integer_cst_p (_p1))
20326 : : {
20327 : 556697 : {
20328 : 556697 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
20329 : 556697 : if (gimple_simplify_472 (res_op, seq, valueize, type, captures, GT_EXPR))
20330 : 18086 : return true;
20331 : : }
20332 : : }
20333 : : break;
20334 : : }
20335 : 39866 : case BIT_AND_EXPR:
20336 : 39866 : {
20337 : 39866 : tree _q20 = gimple_assign_rhs1 (_a1);
20338 : 39866 : _q20 = do_valueize (valueize, _q20);
20339 : 39866 : tree _q21 = gimple_assign_rhs2 (_a1);
20340 : 39866 : _q21 = do_valueize (valueize, _q21);
20341 : 39866 : if (tree_swap_operands_p (_q20, _q21))
20342 : 159 : std::swap (_q20, _q21);
20343 : 39866 : switch (TREE_CODE (_q21))
20344 : : {
20345 : 37641 : case INTEGER_CST:
20346 : 37641 : {
20347 : 37641 : switch (TREE_CODE (_p1))
20348 : : {
20349 : 27114 : case INTEGER_CST:
20350 : 27114 : {
20351 : 27114 : {
20352 : 27114 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
20353 : 27114 : if (gimple_simplify_486 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
20354 : 165 : return true;
20355 : : }
20356 : 26949 : break;
20357 : : }
20358 : : default:;
20359 : : }
20360 : : break;
20361 : : }
20362 : : default:;
20363 : : }
20364 : 34587520 : break;
20365 : : }
20366 : 4111 : case NEGATE_EXPR:
20367 : 4111 : {
20368 : 4111 : tree _q20 = gimple_assign_rhs1 (_a1);
20369 : 4111 : _q20 = do_valueize (valueize, _q20);
20370 : 4111 : switch (TREE_CODE (_p1))
20371 : : {
20372 : 2650 : case SSA_NAME:
20373 : 2650 : if (gimple *_d2 = get_def (valueize, _p1))
20374 : : {
20375 : 2497 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20376 : 2264 : switch (gimple_assign_rhs_code (_a2))
20377 : : {
20378 : 335 : case NEGATE_EXPR:
20379 : 335 : {
20380 : 335 : tree _q40 = gimple_assign_rhs1 (_a2);
20381 : 335 : _q40 = do_valueize (valueize, _q40);
20382 : 335 : {
20383 : 335 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
20384 : 335 : if (gimple_simplify_289 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
20385 : 316 : return true;
20386 : : }
20387 : 19 : break;
20388 : : }
20389 : : default:;
20390 : : }
20391 : : }
20392 : : break;
20393 : 3795 : default:;
20394 : : }
20395 : 3795 : if (CONSTANT_CLASS_P (_p1))
20396 : : {
20397 : 1461 : {
20398 : 1461 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20399 : 1461 : if (gimple_simplify_290 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
20400 : 596 : return true;
20401 : : }
20402 : : }
20403 : : break;
20404 : : }
20405 : 297 : case ADDR_EXPR:
20406 : 297 : {
20407 : 297 : switch (TREE_CODE (_p1))
20408 : : {
20409 : 288 : case SSA_NAME:
20410 : 288 : if (gimple *_d2 = get_def (valueize, _p1))
20411 : : {
20412 : 280 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20413 : 319 : switch (gimple_assign_rhs_code (_a2))
20414 : : {
20415 : 20 : CASE_CONVERT:
20416 : 20 : {
20417 : 20 : tree _q30 = gimple_assign_rhs1 (_a2);
20418 : 20 : _q30 = do_valueize (valueize, _q30);
20419 : 20 : switch (TREE_CODE (_q30))
20420 : : {
20421 : 20 : case SSA_NAME:
20422 : 20 : if (gimple *_d3 = get_def (valueize, _q30))
20423 : : {
20424 : 16 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
20425 : 16 : switch (gimple_assign_rhs_code (_a3))
20426 : : {
20427 : 0 : case ADDR_EXPR:
20428 : 0 : {
20429 : 0 : {
20430 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
20431 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20432 : 0 : return true;
20433 : : }
20434 : 0 : break;
20435 : : }
20436 : : default:;
20437 : : }
20438 : : }
20439 : : break;
20440 : 0 : case ADDR_EXPR:
20441 : 0 : {
20442 : 0 : {
20443 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
20444 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20445 : 0 : return true;
20446 : : }
20447 : 0 : break;
20448 : : }
20449 : : default:;
20450 : : }
20451 : : break;
20452 : : }
20453 : 96 : case ADDR_EXPR:
20454 : 96 : {
20455 : 96 : {
20456 : 96 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
20457 : 96 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20458 : 60 : return true;
20459 : : }
20460 : 36 : break;
20461 : : }
20462 : : default:;
20463 : : }
20464 : : }
20465 : : break;
20466 : 9 : case ADDR_EXPR:
20467 : 9 : {
20468 : 9 : {
20469 : 9 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
20470 : 9 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20471 : 0 : return true;
20472 : : }
20473 : 9 : break;
20474 : : }
20475 : : default:;
20476 : : }
20477 : : break;
20478 : : }
20479 : : default:;
20480 : : }
20481 : 2778166 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
20482 : 368769 : switch (gimple_call_combined_fn (_c1))
20483 : : {
20484 : 17 : case CFN_BUILT_IN_SQRTF:
20485 : 17 : if (gimple_call_num_args (_c1) == 1)
20486 : : {
20487 : 17 : tree _q20 = gimple_call_arg (_c1, 0);
20488 : 17 : _q20 = do_valueize (valueize, _q20);
20489 : 17 : switch (TREE_CODE (_p1))
20490 : : {
20491 : 2 : case SSA_NAME:
20492 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
20493 : : {
20494 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
20495 : 2 : switch (gimple_call_combined_fn (_c2))
20496 : : {
20497 : 2 : case CFN_BUILT_IN_SQRTF:
20498 : 2 : if (gimple_call_num_args (_c2) == 1)
20499 : : {
20500 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
20501 : 2 : _q40 = do_valueize (valueize, _q40);
20502 : 2 : {
20503 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
20504 : 2 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, GT_EXPR))
20505 : 2 : return true;
20506 : : }
20507 : : }
20508 : : break;
20509 : : default:;
20510 : : }
20511 : : }
20512 : : break;
20513 : 15 : case REAL_CST:
20514 : 15 : {
20515 : 15 : {
20516 : 15 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20517 : 15 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, GT_EXPR))
20518 : 15 : return true;
20519 : : }
20520 : 0 : break;
20521 : : }
20522 : : default:;
20523 : : }
20524 : : }
20525 : : break;
20526 : 14 : case CFN_BUILT_IN_SQRTL:
20527 : 14 : if (gimple_call_num_args (_c1) == 1)
20528 : : {
20529 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
20530 : 14 : _q20 = do_valueize (valueize, _q20);
20531 : 14 : switch (TREE_CODE (_p1))
20532 : : {
20533 : 2 : case SSA_NAME:
20534 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
20535 : : {
20536 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
20537 : 2 : switch (gimple_call_combined_fn (_c2))
20538 : : {
20539 : 2 : case CFN_BUILT_IN_SQRTL:
20540 : 2 : if (gimple_call_num_args (_c2) == 1)
20541 : : {
20542 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
20543 : 2 : _q40 = do_valueize (valueize, _q40);
20544 : 2 : {
20545 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
20546 : 2 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, GT_EXPR))
20547 : 2 : return true;
20548 : : }
20549 : : }
20550 : : break;
20551 : : default:;
20552 : : }
20553 : : }
20554 : : break;
20555 : 12 : case REAL_CST:
20556 : 12 : {
20557 : 12 : {
20558 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20559 : 12 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, GT_EXPR))
20560 : 12 : return true;
20561 : : }
20562 : 0 : break;
20563 : : }
20564 : : default:;
20565 : : }
20566 : : }
20567 : : break;
20568 : 346 : case CFN_BUILT_IN_SQRT:
20569 : 346 : if (gimple_call_num_args (_c1) == 1)
20570 : : {
20571 : 346 : tree _q20 = gimple_call_arg (_c1, 0);
20572 : 346 : _q20 = do_valueize (valueize, _q20);
20573 : 346 : switch (TREE_CODE (_p1))
20574 : : {
20575 : 2 : case SSA_NAME:
20576 : 2 : if (gimple *_d2 = get_def (valueize, _p1))
20577 : : {
20578 : 2 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
20579 : 2 : switch (gimple_call_combined_fn (_c2))
20580 : : {
20581 : 2 : case CFN_BUILT_IN_SQRT:
20582 : 2 : if (gimple_call_num_args (_c2) == 1)
20583 : : {
20584 : 2 : tree _q40 = gimple_call_arg (_c2, 0);
20585 : 2 : _q40 = do_valueize (valueize, _q40);
20586 : 2 : {
20587 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
20588 : 2 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, GT_EXPR))
20589 : 2 : return true;
20590 : : }
20591 : : }
20592 : : break;
20593 : : default:;
20594 : : }
20595 : : }
20596 : : break;
20597 : 344 : case REAL_CST:
20598 : 344 : {
20599 : 344 : {
20600 : 344 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20601 : 344 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, GT_EXPR))
20602 : 12 : return true;
20603 : : }
20604 : 332 : break;
20605 : : }
20606 : : default:;
20607 : : }
20608 : : }
20609 : : break;
20610 : 23 : case CFN_SQRT:
20611 : 23 : if (gimple_call_num_args (_c1) == 1)
20612 : : {
20613 : 23 : tree _q20 = gimple_call_arg (_c1, 0);
20614 : 23 : _q20 = do_valueize (valueize, _q20);
20615 : 23 : switch (TREE_CODE (_p1))
20616 : : {
20617 : 0 : case SSA_NAME:
20618 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
20619 : : {
20620 : 0 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
20621 : 0 : switch (gimple_call_combined_fn (_c2))
20622 : : {
20623 : 0 : case CFN_SQRT:
20624 : 0 : if (gimple_call_num_args (_c2) == 1)
20625 : : {
20626 : 0 : tree _q40 = gimple_call_arg (_c2, 0);
20627 : 0 : _q40 = do_valueize (valueize, _q40);
20628 : 0 : {
20629 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
20630 : 0 : if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_SQRT, GT_EXPR))
20631 : 0 : return true;
20632 : : }
20633 : : }
20634 : : break;
20635 : : default:;
20636 : : }
20637 : : }
20638 : : break;
20639 : 23 : case REAL_CST:
20640 : 23 : {
20641 : 23 : {
20642 : 23 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20643 : 23 : if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_SQRT, GT_EXPR))
20644 : 0 : return true;
20645 : : }
20646 : 23 : break;
20647 : : }
20648 : : default:;
20649 : : }
20650 : : }
20651 : : break;
20652 : : default:;
20653 : : }
20654 : : }
20655 : : break;
20656 : 4088 : case ADDR_EXPR:
20657 : 4088 : {
20658 : 4088 : switch (TREE_CODE (_p1))
20659 : : {
20660 : 0 : case SSA_NAME:
20661 : 0 : if (gimple *_d1 = get_def (valueize, _p1))
20662 : : {
20663 : 0 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20664 : 0 : switch (gimple_assign_rhs_code (_a1))
20665 : : {
20666 : 0 : CASE_CONVERT:
20667 : 0 : {
20668 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
20669 : 0 : _q30 = do_valueize (valueize, _q30);
20670 : 0 : switch (TREE_CODE (_q30))
20671 : : {
20672 : 0 : case SSA_NAME:
20673 : 0 : if (gimple *_d2 = get_def (valueize, _q30))
20674 : : {
20675 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20676 : 0 : switch (gimple_assign_rhs_code (_a2))
20677 : : {
20678 : 0 : case ADDR_EXPR:
20679 : 0 : {
20680 : 0 : {
20681 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
20682 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20683 : 0 : return true;
20684 : : }
20685 : 0 : break;
20686 : : }
20687 : : default:;
20688 : : }
20689 : : }
20690 : : break;
20691 : 0 : case ADDR_EXPR:
20692 : 0 : {
20693 : 0 : {
20694 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
20695 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20696 : 0 : return true;
20697 : : }
20698 : 0 : break;
20699 : : }
20700 : : default:;
20701 : : }
20702 : : break;
20703 : : }
20704 : 0 : case ADDR_EXPR:
20705 : 0 : {
20706 : 0 : {
20707 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
20708 : 0 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20709 : 0 : return true;
20710 : : }
20711 : 0 : break;
20712 : : }
20713 : : default:;
20714 : : }
20715 : : }
20716 : : break;
20717 : 4076 : case ADDR_EXPR:
20718 : 4076 : {
20719 : 4076 : {
20720 : 4076 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
20721 : 4076 : if (gimple_simplify_310 (res_op, seq, valueize, type, captures, GT_EXPR))
20722 : 2230 : return true;
20723 : : }
20724 : 1846 : break;
20725 : : }
20726 : : default:;
20727 : : }
20728 : : break;
20729 : : }
20730 : 34587520 : default:;
20731 : : }
20732 : 34587520 : if (uniform_integer_cst_p (_p1))
20733 : : {
20734 : 22702431 : {
20735 : 22702431 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
20736 : 22702431 : if (gimple_simplify_473 (res_op, seq, valueize, type, captures, GT_EXPR))
20737 : 93935 : return true;
20738 : : }
20739 : : }
20740 : 34493585 : switch (TREE_CODE (_p0))
20741 : : {
20742 : 33722045 : case SSA_NAME:
20743 : 33722045 : if (gimple *_d1 = get_def (valueize, _p0))
20744 : : {
20745 : 11526142 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20746 : 14226180 : switch (gimple_assign_rhs_code (_a1))
20747 : : {
20748 : 1171642 : CASE_CONVERT:
20749 : 1171642 : {
20750 : 1171642 : tree _q20 = gimple_assign_rhs1 (_a1);
20751 : 1171642 : _q20 = do_valueize (valueize, _q20);
20752 : 1171642 : switch (TREE_CODE (_q20))
20753 : : {
20754 : 1170508 : case SSA_NAME:
20755 : 1170508 : if (gimple *_d2 = get_def (valueize, _q20))
20756 : : {
20757 : 1111934 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20758 : 1133219 : switch (gimple_assign_rhs_code (_a2))
20759 : : {
20760 : 128 : case NE_EXPR:
20761 : 128 : {
20762 : 128 : tree _q30 = gimple_assign_rhs1 (_a2);
20763 : 128 : _q30 = do_valueize (valueize, _q30);
20764 : 128 : tree _q31 = gimple_assign_rhs2 (_a2);
20765 : 128 : _q31 = do_valueize (valueize, _q31);
20766 : 128 : if (tree_swap_operands_p (_q30, _q31))
20767 : 0 : std::swap (_q30, _q31);
20768 : 128 : if (integer_zerop (_q31))
20769 : : {
20770 : 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
20771 : : {
20772 : 0 : {
20773 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
20774 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
20775 : : )
20776 : : {
20777 : 0 : gimple_seq *lseq = seq;
20778 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2572;
20779 : 0 : {
20780 : 0 : tree tem;
20781 : 0 : tem = constant_boolean_node (false, type);
20782 : 0 : res_op->set_value (tem);
20783 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1174, __FILE__, __LINE__, true);
20784 : 0 : return true;
20785 : : }
20786 : 0 : next_after_fail2572:;
20787 : : }
20788 : : }
20789 : : }
20790 : : }
20791 : 34493475 : break;
20792 : : }
20793 : : default:;
20794 : : }
20795 : : }
20796 : : break;
20797 : : default:;
20798 : : }
20799 : : break;
20800 : : }
20801 : 2581 : case COND_EXPR:
20802 : 2581 : {
20803 : 2581 : tree _q20 = gimple_assign_rhs1 (_a1);
20804 : 2581 : _q20 = do_valueize (valueize, _q20);
20805 : 2581 : tree _q21 = gimple_assign_rhs2 (_a1);
20806 : 2581 : _q21 = do_valueize (valueize, _q21);
20807 : 2581 : tree _q22 = gimple_assign_rhs3 (_a1);
20808 : 2581 : _q22 = do_valueize (valueize, _q22);
20809 : 2581 : {
20810 : 2581 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1 };
20811 : 2581 : if (gimple_simplify_314 (res_op, seq, valueize, type, captures, GT_EXPR))
20812 : 110 : return true;
20813 : : }
20814 : 2471 : break;
20815 : : }
20816 : : default:;
20817 : : }
20818 : : }
20819 : : break;
20820 : 34493475 : default:;
20821 : : }
20822 : 34493475 : switch (TREE_CODE (_p1))
20823 : : {
20824 : 11121499 : case SSA_NAME:
20825 : 11121499 : if (gimple *_d1 = get_def (valueize, _p1))
20826 : : {
20827 : 3638281 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20828 : 3897229 : switch (gimple_assign_rhs_code (_a1))
20829 : : {
20830 : 1916 : case COND_EXPR:
20831 : 1916 : {
20832 : 1916 : tree _q30 = gimple_assign_rhs1 (_a1);
20833 : 1916 : _q30 = do_valueize (valueize, _q30);
20834 : 1916 : tree _q31 = gimple_assign_rhs2 (_a1);
20835 : 1916 : _q31 = do_valueize (valueize, _q31);
20836 : 1916 : tree _q32 = gimple_assign_rhs3 (_a1);
20837 : 1916 : _q32 = do_valueize (valueize, _q32);
20838 : 1916 : {
20839 : 1916 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q32, _p0 };
20840 : 1916 : if (gimple_simplify_314 (res_op, seq, valueize, type, captures, LT_EXPR))
20841 : 0 : return true;
20842 : : }
20843 : 1916 : break;
20844 : : }
20845 : : default:;
20846 : : }
20847 : : }
20848 : : break;
20849 : 34493475 : default:;
20850 : : }
20851 : 34493475 : switch (TREE_CODE (_p0))
20852 : : {
20853 : 33721935 : case SSA_NAME:
20854 : 33721935 : if (gimple *_d1 = get_def (valueize, _p0))
20855 : : {
20856 : 11526032 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20857 : 14226070 : switch (gimple_assign_rhs_code (_a1))
20858 : : {
20859 : 1171642 : CASE_CONVERT:
20860 : 1171642 : {
20861 : 1171642 : tree _q20 = gimple_assign_rhs1 (_a1);
20862 : 1171642 : _q20 = do_valueize (valueize, _q20);
20863 : 1171642 : switch (TREE_CODE (_q20))
20864 : : {
20865 : 1170508 : case SSA_NAME:
20866 : 1170508 : if (gimple *_d2 = get_def (valueize, _q20))
20867 : : {
20868 : 1111934 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20869 : 1133219 : switch (gimple_assign_rhs_code (_a2))
20870 : : {
20871 : 360457 : case PLUS_EXPR:
20872 : 360457 : {
20873 : 360457 : tree _q30 = gimple_assign_rhs1 (_a2);
20874 : 360457 : _q30 = do_valueize (valueize, _q30);
20875 : 360457 : tree _q31 = gimple_assign_rhs2 (_a2);
20876 : 360457 : _q31 = do_valueize (valueize, _q31);
20877 : 360457 : if (tree_swap_operands_p (_q30, _q31))
20878 : 3654 : std::swap (_q30, _q31);
20879 : 360457 : switch (TREE_CODE (_q30))
20880 : : {
20881 : 360457 : case SSA_NAME:
20882 : 360457 : if (gimple *_d3 = get_def (valueize, _q30))
20883 : : {
20884 : 356861 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
20885 : 405226 : switch (gimple_assign_rhs_code (_a3))
20886 : : {
20887 : 65217 : CASE_CONVERT:
20888 : 65217 : {
20889 : 65217 : tree _q40 = gimple_assign_rhs1 (_a3);
20890 : 65217 : _q40 = do_valueize (valueize, _q40);
20891 : 65217 : switch (TREE_CODE (_q31))
20892 : : {
20893 : 61971 : case INTEGER_CST:
20894 : 61971 : {
20895 : 61971 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
20896 : : {
20897 : 15 : {
20898 : 15 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
20899 : 15 : if (gimple_simplify_474 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR))
20900 : 15 : return true;
20901 : : }
20902 : : }
20903 : : break;
20904 : : }
20905 : : default:;
20906 : : }
20907 : : break;
20908 : : }
20909 : : default:;
20910 : : }
20911 : : }
20912 : : break;
20913 : : default:;
20914 : : }
20915 : 34493460 : break;
20916 : : }
20917 : : default:;
20918 : : }
20919 : : }
20920 : : break;
20921 : : default:;
20922 : : }
20923 : : break;
20924 : : }
20925 : : default:;
20926 : : }
20927 : : }
20928 : : break;
20929 : 34493460 : default:;
20930 : : }
20931 : 34493460 : switch (TREE_CODE (_p1))
20932 : : {
20933 : 11121484 : case SSA_NAME:
20934 : 11121484 : if (gimple *_d1 = get_def (valueize, _p1))
20935 : : {
20936 : 3638266 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
20937 : 3897221 : switch (gimple_assign_rhs_code (_a1))
20938 : : {
20939 : 548620 : CASE_CONVERT:
20940 : 548620 : {
20941 : 548620 : tree _q30 = gimple_assign_rhs1 (_a1);
20942 : 548620 : _q30 = do_valueize (valueize, _q30);
20943 : 548620 : switch (TREE_CODE (_q30))
20944 : : {
20945 : 547471 : case SSA_NAME:
20946 : 547471 : if (gimple *_d2 = get_def (valueize, _q30))
20947 : : {
20948 : 494492 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
20949 : 585845 : switch (gimple_assign_rhs_code (_a2))
20950 : : {
20951 : 53340 : case PLUS_EXPR:
20952 : 53340 : {
20953 : 53340 : tree _q40 = gimple_assign_rhs1 (_a2);
20954 : 53340 : _q40 = do_valueize (valueize, _q40);
20955 : 53340 : tree _q41 = gimple_assign_rhs2 (_a2);
20956 : 53340 : _q41 = do_valueize (valueize, _q41);
20957 : 53340 : if (tree_swap_operands_p (_q40, _q41))
20958 : 1065 : std::swap (_q40, _q41);
20959 : 53340 : switch (TREE_CODE (_q40))
20960 : : {
20961 : 53340 : case SSA_NAME:
20962 : 53340 : if (gimple *_d3 = get_def (valueize, _q40))
20963 : : {
20964 : 50709 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
20965 : 34280 : switch (gimple_assign_rhs_code (_a3))
20966 : : {
20967 : 17858 : CASE_CONVERT:
20968 : 17858 : {
20969 : 17858 : tree _q50 = gimple_assign_rhs1 (_a3);
20970 : 17858 : _q50 = do_valueize (valueize, _q50);
20971 : 17858 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
20972 : : {
20973 : 10 : switch (TREE_CODE (_q41))
20974 : : {
20975 : 4 : case INTEGER_CST:
20976 : 4 : {
20977 : 4 : {
20978 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0, _q41 };
20979 : 4 : if (gimple_simplify_474 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR))
20980 : 0 : return true;
20981 : : }
20982 : 4 : break;
20983 : : }
20984 : : default:;
20985 : : }
20986 : : }
20987 : : break;
20988 : : }
20989 : : default:;
20990 : : }
20991 : : }
20992 : : break;
20993 : : default:;
20994 : : }
20995 : 34491303 : break;
20996 : : }
20997 : : default:;
20998 : : }
20999 : : }
21000 : : break;
21001 : : default:;
21002 : : }
21003 : : break;
21004 : : }
21005 : 750149 : case PLUS_EXPR:
21006 : 750149 : {
21007 : 750149 : tree _q30 = gimple_assign_rhs1 (_a1);
21008 : 750149 : _q30 = do_valueize (valueize, _q30);
21009 : 750149 : tree _q31 = gimple_assign_rhs2 (_a1);
21010 : 750149 : _q31 = do_valueize (valueize, _q31);
21011 : 750149 : if (tree_swap_operands_p (_q30, _q31))
21012 : 16685 : std::swap (_q30, _q31);
21013 : 750149 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
21014 : : {
21015 : 40411 : switch (TREE_CODE (_q31))
21016 : : {
21017 : 14431 : case INTEGER_CST:
21018 : 14431 : {
21019 : 14431 : {
21020 : 14431 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0, _q31 };
21021 : 14431 : if (gimple_simplify_469 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR))
21022 : 2157 : return true;
21023 : : }
21024 : 12274 : break;
21025 : : }
21026 : : default:;
21027 : : }
21028 : : }
21029 : 34491303 : break;
21030 : : }
21031 : : default:;
21032 : : }
21033 : : }
21034 : : break;
21035 : 34491303 : default:;
21036 : : }
21037 : 34491303 : switch (TREE_CODE (_p0))
21038 : : {
21039 : 33719763 : case SSA_NAME:
21040 : 33719763 : if (gimple *_d1 = get_def (valueize, _p0))
21041 : : {
21042 : 11523862 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21043 : 14222487 : switch (gimple_assign_rhs_code (_a1))
21044 : : {
21045 : 200034 : case MINUS_EXPR:
21046 : 200034 : {
21047 : 200034 : tree _q20 = gimple_assign_rhs1 (_a1);
21048 : 200034 : _q20 = do_valueize (valueize, _q20);
21049 : 200034 : tree _q21 = gimple_assign_rhs2 (_a1);
21050 : 200034 : _q21 = do_valueize (valueize, _q21);
21051 : 200034 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21052 : : {
21053 : 782 : {
21054 : 782 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
21055 : 782 : if (gimple_simplify_475 (res_op, seq, valueize, type, captures, GT_EXPR))
21056 : 69 : return true;
21057 : : }
21058 : : }
21059 : : break;
21060 : : }
21061 : : default:;
21062 : : }
21063 : : }
21064 : : break;
21065 : 34491234 : default:;
21066 : : }
21067 : 34491234 : switch (TREE_CODE (_p1))
21068 : : {
21069 : 11119258 : case SSA_NAME:
21070 : 11119258 : if (gimple *_d1 = get_def (valueize, _p1))
21071 : : {
21072 : 3636040 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21073 : 3894962 : switch (gimple_assign_rhs_code (_a1))
21074 : : {
21075 : 747992 : case PLUS_EXPR:
21076 : 747992 : {
21077 : 747992 : tree _q30 = gimple_assign_rhs1 (_a1);
21078 : 747992 : _q30 = do_valueize (valueize, _q30);
21079 : 747992 : tree _q31 = gimple_assign_rhs2 (_a1);
21080 : 747992 : _q31 = do_valueize (valueize, _q31);
21081 : 747992 : if (tree_swap_operands_p (_q30, _q31))
21082 : 16685 : std::swap (_q30, _q31);
21083 : 747992 : switch (TREE_CODE (_q30))
21084 : : {
21085 : 747992 : case SSA_NAME:
21086 : 747992 : if (gimple *_d2 = get_def (valueize, _q30))
21087 : : {
21088 : 706442 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
21089 : 298838 : switch (gimple_assign_rhs_code (_a2))
21090 : : {
21091 : 24122 : case MINUS_EXPR:
21092 : 24122 : {
21093 : 24122 : tree _q40 = gimple_assign_rhs1 (_a2);
21094 : 24122 : _q40 = do_valueize (valueize, _q40);
21095 : 24122 : tree _q41 = gimple_assign_rhs2 (_a2);
21096 : 24122 : _q41 = do_valueize (valueize, _q41);
21097 : 24122 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
21098 : : {
21099 : 500 : if (integer_minus_onep (_q31))
21100 : : {
21101 : 352 : {
21102 : 352 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
21103 : 352 : if (gimple_simplify_487 (res_op, seq, valueize, type, captures, LT_EXPR))
21104 : 0 : return true;
21105 : : }
21106 : : }
21107 : : }
21108 : : break;
21109 : : }
21110 : : default:;
21111 : : }
21112 : : }
21113 : : break;
21114 : : default:;
21115 : : }
21116 : 34491234 : break;
21117 : : }
21118 : : default:;
21119 : : }
21120 : : }
21121 : : break;
21122 : 34491234 : default:;
21123 : : }
21124 : 34491234 : switch (TREE_CODE (_p0))
21125 : : {
21126 : 33719694 : case SSA_NAME:
21127 : 33719694 : if (gimple *_d1 = get_def (valueize, _p0))
21128 : : {
21129 : 11523793 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21130 : 14222418 : switch (gimple_assign_rhs_code (_a1))
21131 : : {
21132 : 5356 : case REALPART_EXPR:
21133 : 5356 : {
21134 : 5356 : tree _q20 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
21135 : 5356 : if ((TREE_CODE (_q20) == SSA_NAME
21136 : 5356 : || is_gimple_min_invariant (_q20)))
21137 : : {
21138 : 4760 : _q20 = do_valueize (valueize, _q20);
21139 : 4760 : switch (TREE_CODE (_q20))
21140 : : {
21141 : 4760 : case SSA_NAME:
21142 : 4760 : if (gimple *_d2 = get_def (valueize, _q20))
21143 : : {
21144 : 4760 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
21145 : 1198 : switch (gimple_call_combined_fn (_c2))
21146 : : {
21147 : 43 : case CFN_SUB_OVERFLOW:
21148 : 43 : if (gimple_call_num_args (_c2) == 2)
21149 : : {
21150 : 43 : tree _q30 = gimple_call_arg (_c2, 0);
21151 : 43 : _q30 = do_valueize (valueize, _q30);
21152 : 43 : tree _q31 = gimple_call_arg (_c2, 1);
21153 : 43 : _q31 = do_valueize (valueize, _q31);
21154 : 43 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
21155 : : {
21156 : 4 : {
21157 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21158 : 4 : if (gimple_simplify_488 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
21159 : 2 : return true;
21160 : : }
21161 : : }
21162 : : }
21163 : : break;
21164 : : default:;
21165 : : }
21166 : : }
21167 : : break;
21168 : : default:;
21169 : : }
21170 : : }
21171 : : break;
21172 : : }
21173 : : default:;
21174 : : }
21175 : : }
21176 : : break;
21177 : 34491232 : default:;
21178 : : }
21179 : 34491232 : switch (TREE_CODE (_p1))
21180 : : {
21181 : 11119256 : case SSA_NAME:
21182 : 11119256 : if (gimple *_d1 = get_def (valueize, _p1))
21183 : : {
21184 : 3636038 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21185 : 3894962 : switch (gimple_assign_rhs_code (_a1))
21186 : : {
21187 : 220 : case REALPART_EXPR:
21188 : 220 : {
21189 : 220 : tree _q30 = TREE_OPERAND (gimple_assign_rhs1 (_a1), 0);
21190 : 220 : if ((TREE_CODE (_q30) == SSA_NAME
21191 : 220 : || is_gimple_min_invariant (_q30)))
21192 : : {
21193 : 220 : _q30 = do_valueize (valueize, _q30);
21194 : 220 : switch (TREE_CODE (_q30))
21195 : : {
21196 : 220 : case SSA_NAME:
21197 : 220 : if (gimple *_d2 = get_def (valueize, _q30))
21198 : : {
21199 : 220 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
21200 : 208 : switch (gimple_call_combined_fn (_c2))
21201 : : {
21202 : 40 : case CFN_ADD_OVERFLOW:
21203 : 40 : if (gimple_call_num_args (_c2) == 2)
21204 : : {
21205 : 40 : tree _q40 = gimple_call_arg (_c2, 0);
21206 : 40 : _q40 = do_valueize (valueize, _q40);
21207 : 40 : tree _q41 = gimple_call_arg (_c2, 1);
21208 : 40 : _q41 = do_valueize (valueize, _q41);
21209 : 40 : if (tree_swap_operands_p (_q40, _q41))
21210 : 2 : std::swap (_q40, _q41);
21211 : 40 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
21212 : : {
21213 : 9 : {
21214 : 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
21215 : 9 : if (gimple_simplify_489 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
21216 : 0 : return true;
21217 : : }
21218 : : }
21219 : 40 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
21220 : : {
21221 : 4 : {
21222 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q40 };
21223 : 4 : if (gimple_simplify_489 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
21224 : 2 : return true;
21225 : : }
21226 : : }
21227 : : }
21228 : : break;
21229 : : default:;
21230 : : }
21231 : : }
21232 : : break;
21233 : : default:;
21234 : : }
21235 : : }
21236 : : break;
21237 : : }
21238 : 8620 : case TRUNC_DIV_EXPR:
21239 : 8620 : {
21240 : 8620 : tree _q30 = gimple_assign_rhs1 (_a1);
21241 : 8620 : _q30 = do_valueize (valueize, _q30);
21242 : 8620 : tree _q31 = gimple_assign_rhs2 (_a1);
21243 : 8620 : _q31 = do_valueize (valueize, _q31);
21244 : 8620 : if (integer_all_onesp (_q30))
21245 : : {
21246 : 928 : {
21247 : 928 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
21248 : 928 : if (gimple_simplify_490 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
21249 : 2 : return true;
21250 : : }
21251 : : }
21252 : : break;
21253 : : }
21254 : : default:;
21255 : : }
21256 : : }
21257 : : break;
21258 : 34491228 : default:;
21259 : : }
21260 : 34491228 : switch (TREE_CODE (_p0))
21261 : : {
21262 : 33719688 : case SSA_NAME:
21263 : 33719688 : if (gimple *_d1 = get_def (valueize, _p0))
21264 : : {
21265 : 11523789 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21266 : 14222410 : switch (gimple_assign_rhs_code (_a1))
21267 : : {
21268 : 129843 : case MULT_EXPR:
21269 : 129843 : {
21270 : 129843 : tree _q20 = gimple_assign_rhs1 (_a1);
21271 : 129843 : _q20 = do_valueize (valueize, _q20);
21272 : 129843 : tree _q21 = gimple_assign_rhs2 (_a1);
21273 : 129843 : _q21 = do_valueize (valueize, _q21);
21274 : 129843 : if (tree_swap_operands_p (_q20, _q21))
21275 : 2140 : std::swap (_q20, _q21);
21276 : 129843 : switch (TREE_CODE (_q21))
21277 : : {
21278 : 6406 : case REAL_CST:
21279 : 6406 : {
21280 : 6406 : switch (TREE_CODE (_p1))
21281 : : {
21282 : 279 : case REAL_CST:
21283 : 279 : {
21284 : 279 : {
21285 : 279 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21286 : 279 : if (gimple_simplify_480 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
21287 : 14 : return true;
21288 : : }
21289 : 265 : break;
21290 : : }
21291 : : default:;
21292 : : }
21293 : : break;
21294 : : }
21295 : : default:;
21296 : : }
21297 : 34733766 : break;
21298 : : }
21299 : 1067628 : case PLUS_EXPR:
21300 : 1067628 : {
21301 : 1067628 : tree _q20 = gimple_assign_rhs1 (_a1);
21302 : 1067628 : _q20 = do_valueize (valueize, _q20);
21303 : 1067628 : tree _q21 = gimple_assign_rhs2 (_a1);
21304 : 1067628 : _q21 = do_valueize (valueize, _q21);
21305 : 1067628 : if (tree_swap_operands_p (_q20, _q21))
21306 : 19775 : std::swap (_q20, _q21);
21307 : 1067628 : switch (TREE_CODE (_q21))
21308 : : {
21309 : 835357 : case INTEGER_CST:
21310 : 835357 : {
21311 : 835357 : switch (TREE_CODE (_p1))
21312 : : {
21313 : 604410 : case INTEGER_CST:
21314 : 604410 : {
21315 : 604410 : {
21316 : 604410 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
21317 : 604410 : if (gimple_simplify_481 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, GT_EXPR, LT_EXPR))
21318 : 11397 : return true;
21319 : : }
21320 : 593013 : break;
21321 : : }
21322 : : default:;
21323 : : }
21324 : : break;
21325 : : }
21326 : : default:;
21327 : : }
21328 : 34733766 : break;
21329 : : }
21330 : 199965 : case MINUS_EXPR:
21331 : 199965 : {
21332 : 199965 : tree _q20 = gimple_assign_rhs1 (_a1);
21333 : 199965 : _q20 = do_valueize (valueize, _q20);
21334 : 199965 : tree _q21 = gimple_assign_rhs2 (_a1);
21335 : 199965 : _q21 = do_valueize (valueize, _q21);
21336 : 199965 : switch (TREE_CODE (_q21))
21337 : : {
21338 : 388 : case INTEGER_CST:
21339 : 388 : {
21340 : 388 : switch (TREE_CODE (_p1))
21341 : : {
21342 : 238 : case INTEGER_CST:
21343 : 238 : {
21344 : 238 : {
21345 : 238 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
21346 : 238 : if (gimple_simplify_481 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, GT_EXPR, LT_EXPR))
21347 : 7 : return true;
21348 : : }
21349 : 231 : break;
21350 : : }
21351 : : default:;
21352 : : }
21353 : : break;
21354 : : }
21355 : 199958 : default:;
21356 : : }
21357 : 199958 : switch (TREE_CODE (_q20))
21358 : : {
21359 : 6044 : case INTEGER_CST:
21360 : 6044 : {
21361 : 6044 : switch (TREE_CODE (_p1))
21362 : : {
21363 : 2196 : case INTEGER_CST:
21364 : 2196 : {
21365 : 2196 : {
21366 : 2196 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21367 : 2196 : if (gimple_simplify_317 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
21368 : 1803 : return true;
21369 : : }
21370 : 393 : break;
21371 : : }
21372 : : default:;
21373 : : }
21374 : : break;
21375 : : }
21376 : : default:;
21377 : : }
21378 : : break;
21379 : : }
21380 : : default:;
21381 : : }
21382 : 2744429 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21383 : 356567 : switch (gimple_call_combined_fn (_c1))
21384 : : {
21385 : 10 : case CFN_BUILT_IN_CTZ:
21386 : 10 : if (gimple_call_num_args (_c1) == 1)
21387 : : {
21388 : 10 : tree _q20 = gimple_call_arg (_c1, 0);
21389 : 10 : _q20 = do_valueize (valueize, _q20);
21390 : 10 : switch (TREE_CODE (_p1))
21391 : : {
21392 : 0 : case INTEGER_CST:
21393 : 0 : {
21394 : 0 : {
21395 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21396 : 0 : if (gimple_simplify_482 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZ))
21397 : 0 : return true;
21398 : : }
21399 : 0 : break;
21400 : : }
21401 : : default:;
21402 : : }
21403 : : }
21404 : : break;
21405 : 16 : case CFN_BUILT_IN_FFS:
21406 : 16 : if (gimple_call_num_args (_c1) == 1)
21407 : : {
21408 : 16 : tree _q20 = gimple_call_arg (_c1, 0);
21409 : 16 : _q20 = do_valueize (valueize, _q20);
21410 : 16 : switch (TREE_CODE (_p1))
21411 : : {
21412 : 16 : case INTEGER_CST:
21413 : 16 : {
21414 : 16 : {
21415 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21416 : 16 : if (gimple_simplify_493 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, EQ_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_FFS))
21417 : 6 : return true;
21418 : : }
21419 : 10 : break;
21420 : : }
21421 : : default:;
21422 : : }
21423 : : }
21424 : : break;
21425 : 0 : case CFN_BUILT_IN_FFSIMAX:
21426 : 0 : if (gimple_call_num_args (_c1) == 1)
21427 : : {
21428 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21429 : 0 : _q20 = do_valueize (valueize, _q20);
21430 : 0 : switch (TREE_CODE (_p1))
21431 : : {
21432 : 0 : case INTEGER_CST:
21433 : 0 : {
21434 : 0 : {
21435 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21436 : 0 : if (gimple_simplify_493 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, EQ_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_FFSIMAX))
21437 : 0 : return true;
21438 : : }
21439 : 0 : break;
21440 : : }
21441 : : default:;
21442 : : }
21443 : : }
21444 : : break;
21445 : 219 : case CFN_BUILT_IN_POPCOUNT:
21446 : 219 : if (gimple_call_num_args (_c1) == 1)
21447 : : {
21448 : 219 : tree _q20 = gimple_call_arg (_c1, 0);
21449 : 219 : _q20 = do_valueize (valueize, _q20);
21450 : 219 : if (integer_zerop (_p1))
21451 : : {
21452 : 0 : {
21453 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
21454 : 0 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT))
21455 : 0 : return true;
21456 : : }
21457 : : }
21458 : : }
21459 : : break;
21460 : 0 : case CFN_BUILT_IN_CTZL:
21461 : 0 : if (gimple_call_num_args (_c1) == 1)
21462 : : {
21463 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21464 : 0 : _q20 = do_valueize (valueize, _q20);
21465 : 0 : switch (TREE_CODE (_p1))
21466 : : {
21467 : 0 : case INTEGER_CST:
21468 : 0 : {
21469 : 0 : {
21470 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21471 : 0 : if (gimple_simplify_482 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZL))
21472 : 0 : return true;
21473 : : }
21474 : 0 : break;
21475 : : }
21476 : : default:;
21477 : : }
21478 : : }
21479 : : break;
21480 : 12 : case CFN_BUILT_IN_FFSL:
21481 : 12 : if (gimple_call_num_args (_c1) == 1)
21482 : : {
21483 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21484 : 12 : _q20 = do_valueize (valueize, _q20);
21485 : 12 : switch (TREE_CODE (_p1))
21486 : : {
21487 : 12 : case INTEGER_CST:
21488 : 12 : {
21489 : 12 : {
21490 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21491 : 12 : if (gimple_simplify_493 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, EQ_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_FFSL))
21492 : 4 : return true;
21493 : : }
21494 : 8 : break;
21495 : : }
21496 : : default:;
21497 : : }
21498 : : }
21499 : : break;
21500 : 9 : case CFN_BUILT_IN_POPCOUNTLL:
21501 : 9 : if (gimple_call_num_args (_c1) == 1)
21502 : : {
21503 : 9 : tree _q20 = gimple_call_arg (_c1, 0);
21504 : 9 : _q20 = do_valueize (valueize, _q20);
21505 : 9 : if (integer_zerop (_p1))
21506 : : {
21507 : 0 : {
21508 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
21509 : 0 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL))
21510 : 0 : return true;
21511 : : }
21512 : : }
21513 : : }
21514 : : break;
21515 : 0 : case CFN_BUILT_IN_CTZIMAX:
21516 : 0 : if (gimple_call_num_args (_c1) == 1)
21517 : : {
21518 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21519 : 0 : _q20 = do_valueize (valueize, _q20);
21520 : 0 : switch (TREE_CODE (_p1))
21521 : : {
21522 : 0 : case INTEGER_CST:
21523 : 0 : {
21524 : 0 : {
21525 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21526 : 0 : if (gimple_simplify_482 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZIMAX))
21527 : 0 : return true;
21528 : : }
21529 : 0 : break;
21530 : : }
21531 : : default:;
21532 : : }
21533 : : }
21534 : : break;
21535 : 0 : case CFN_POPCOUNT:
21536 : 0 : if (gimple_call_num_args (_c1) == 1)
21537 : : {
21538 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21539 : 0 : _q20 = do_valueize (valueize, _q20);
21540 : 0 : if (integer_zerop (_p1))
21541 : : {
21542 : 0 : {
21543 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
21544 : 0 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_POPCOUNT))
21545 : 0 : return true;
21546 : : }
21547 : : }
21548 : : }
21549 : : break;
21550 : 0 : case CFN_CTZ:
21551 : 0 : if (gimple_call_num_args (_c1) == 2)
21552 : : {
21553 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21554 : 0 : _q20 = do_valueize (valueize, _q20);
21555 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21556 : 0 : _q21 = do_valueize (valueize, _q21);
21557 : 0 : switch (TREE_CODE (_p1))
21558 : : {
21559 : 0 : case INTEGER_CST:
21560 : 0 : {
21561 : 0 : {
21562 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
21563 : 0 : if (gimple_simplify_483 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
21564 : 0 : return true;
21565 : : }
21566 : 0 : break;
21567 : : }
21568 : : default:;
21569 : : }
21570 : : }
21571 : 0 : if (gimple_call_num_args (_c1) == 1)
21572 : : {
21573 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21574 : 0 : _q20 = do_valueize (valueize, _q20);
21575 : 0 : switch (TREE_CODE (_p1))
21576 : : {
21577 : 0 : case INTEGER_CST:
21578 : 0 : {
21579 : 0 : {
21580 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21581 : 0 : if (gimple_simplify_482 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR, CFN_CTZ))
21582 : 0 : return true;
21583 : : }
21584 : 0 : break;
21585 : : }
21586 : : default:;
21587 : : }
21588 : : }
21589 : : break;
21590 : 0 : case CFN_FFS:
21591 : 0 : if (gimple_call_num_args (_c1) == 1)
21592 : : {
21593 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21594 : 0 : _q20 = do_valueize (valueize, _q20);
21595 : 0 : switch (TREE_CODE (_p1))
21596 : : {
21597 : 0 : case INTEGER_CST:
21598 : 0 : {
21599 : 0 : {
21600 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21601 : 0 : if (gimple_simplify_493 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, EQ_EXPR, BIT_AND_EXPR, CFN_FFS))
21602 : 0 : return true;
21603 : : }
21604 : 0 : break;
21605 : : }
21606 : : default:;
21607 : : }
21608 : : }
21609 : : break;
21610 : 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
21611 : 0 : if (gimple_call_num_args (_c1) == 1)
21612 : : {
21613 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21614 : 0 : _q20 = do_valueize (valueize, _q20);
21615 : 0 : if (integer_zerop (_p1))
21616 : : {
21617 : 0 : {
21618 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
21619 : 0 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX))
21620 : 0 : return true;
21621 : : }
21622 : : }
21623 : : }
21624 : : break;
21625 : 18 : case CFN_BUILT_IN_POPCOUNTL:
21626 : 18 : if (gimple_call_num_args (_c1) == 1)
21627 : : {
21628 : 18 : tree _q20 = gimple_call_arg (_c1, 0);
21629 : 18 : _q20 = do_valueize (valueize, _q20);
21630 : 18 : if (integer_zerop (_p1))
21631 : : {
21632 : 0 : {
21633 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
21634 : 0 : if (gimple_simplify_322 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL))
21635 : 0 : return true;
21636 : : }
21637 : : }
21638 : : }
21639 : : break;
21640 : 27 : case CFN_BUILT_IN_CTZLL:
21641 : 27 : if (gimple_call_num_args (_c1) == 1)
21642 : : {
21643 : 27 : tree _q20 = gimple_call_arg (_c1, 0);
21644 : 27 : _q20 = do_valueize (valueize, _q20);
21645 : 27 : switch (TREE_CODE (_p1))
21646 : : {
21647 : 17 : case INTEGER_CST:
21648 : 17 : {
21649 : 17 : {
21650 : 17 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21651 : 17 : if (gimple_simplify_482 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZLL))
21652 : 6 : return true;
21653 : : }
21654 : 11 : break;
21655 : : }
21656 : : default:;
21657 : : }
21658 : : }
21659 : : break;
21660 : 12 : case CFN_BUILT_IN_FFSLL:
21661 : 12 : if (gimple_call_num_args (_c1) == 1)
21662 : : {
21663 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21664 : 12 : _q20 = do_valueize (valueize, _q20);
21665 : 12 : switch (TREE_CODE (_p1))
21666 : : {
21667 : 12 : case INTEGER_CST:
21668 : 12 : {
21669 : 12 : {
21670 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
21671 : 12 : if (gimple_simplify_493 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, EQ_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_FFSLL))
21672 : 4 : return true;
21673 : : }
21674 : 8 : break;
21675 : : }
21676 : : default:;
21677 : : }
21678 : : }
21679 : : break;
21680 : : default:;
21681 : : }
21682 : : }
21683 : : break;
21684 : : default:;
21685 : : }
21686 : : return false;
21687 : : }
21688 : :
21689 : : bool
21690 : 4896 : gimple_simplify_CFN_BUILT_IN_POWF (gimple_match_op *res_op, gimple_seq *seq,
21691 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
21692 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
21693 : : {
21694 : 4896 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
21695 : 4896 : switch (TREE_CODE (_p0))
21696 : : {
21697 : 2373 : case SSA_NAME:
21698 : 2373 : if (gimple *_d1 = get_def (valueize, _p0))
21699 : : {
21700 : 1339 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
21701 : 1308 : switch (gimple_assign_rhs_code (_a1))
21702 : : {
21703 : 1 : case NEGATE_EXPR:
21704 : 1 : {
21705 : 1 : tree _q20 = gimple_assign_rhs1 (_a1);
21706 : 1 : _q20 = do_valueize (valueize, _q20);
21707 : 1 : switch (TREE_CODE (_p1))
21708 : : {
21709 : 1 : case REAL_CST:
21710 : 1 : {
21711 : 1 : {
21712 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21713 : 1 : const combined_fn pows = CFN_BUILT_IN_POWF;
21714 : 1 : {
21715 : 1 : HOST_WIDE_INT n;
21716 : 1 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
21717 : : )
21718 : : {
21719 : 1 : gimple_seq *lseq = seq;
21720 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2607;
21721 : 1 : {
21722 : 1 : res_op->set_op (pows, type, 2);
21723 : 1 : res_op->ops[0] = captures[0];
21724 : 1 : res_op->ops[1] = captures[1];
21725 : 1 : res_op->resimplify (lseq, valueize);
21726 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1185, __FILE__, __LINE__, true);
21727 : 1 : return true;
21728 : : }
21729 : 0 : next_after_fail2607:;
21730 : : }
21731 : : }
21732 : : }
21733 : 0 : break;
21734 : : }
21735 : : default:;
21736 : : }
21737 : : break;
21738 : : }
21739 : 217 : case ABS_EXPR:
21740 : 217 : {
21741 : 217 : tree _q20 = gimple_assign_rhs1 (_a1);
21742 : 217 : _q20 = do_valueize (valueize, _q20);
21743 : 217 : switch (TREE_CODE (_p1))
21744 : : {
21745 : 36 : case REAL_CST:
21746 : 36 : {
21747 : 36 : {
21748 : 36 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21749 : 36 : const combined_fn pows = CFN_BUILT_IN_POWF;
21750 : 36 : {
21751 : 36 : HOST_WIDE_INT n;
21752 : 36 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
21753 : : )
21754 : : {
21755 : 1 : gimple_seq *lseq = seq;
21756 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2608;
21757 : 1 : {
21758 : 1 : res_op->set_op (pows, type, 2);
21759 : 1 : res_op->ops[0] = captures[0];
21760 : 1 : res_op->ops[1] = captures[1];
21761 : 1 : res_op->resimplify (lseq, valueize);
21762 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1185, __FILE__, __LINE__, true);
21763 : 1 : return true;
21764 : : }
21765 : 0 : next_after_fail2608:;
21766 : : }
21767 : : }
21768 : : }
21769 : 35 : break;
21770 : : }
21771 : : default:;
21772 : : }
21773 : : break;
21774 : : }
21775 : 32 : case RDIV_EXPR:
21776 : 32 : {
21777 : 32 : tree _q20 = gimple_assign_rhs1 (_a1);
21778 : 32 : _q20 = do_valueize (valueize, _q20);
21779 : 32 : tree _q21 = gimple_assign_rhs2 (_a1);
21780 : 32 : _q21 = do_valueize (valueize, _q21);
21781 : 32 : if (real_onep (_q20))
21782 : : {
21783 : 2 : {
21784 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
21785 : 2 : if (gimple_simplify_527 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF))
21786 : 1 : return true;
21787 : : }
21788 : : }
21789 : : break;
21790 : : }
21791 : : default:;
21792 : : }
21793 : 365 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
21794 : 108 : switch (gimple_call_combined_fn (_c1))
21795 : : {
21796 : 14 : case CFN_BUILT_IN_SQRTF:
21797 : 14 : if (gimple_call_num_args (_c1) == 1)
21798 : : {
21799 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
21800 : 14 : _q20 = do_valueize (valueize, _q20);
21801 : 14 : {
21802 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21803 : 14 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21804 : : )
21805 : : {
21806 : 14 : gimple_seq *lseq = seq;
21807 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2609;
21808 : 14 : {
21809 : 14 : res_op->set_op (CFN_BUILT_IN_POWF, type, 2);
21810 : 14 : res_op->ops[0] = captures[0];
21811 : 14 : {
21812 : 14 : tree _o1[2], _r1;
21813 : 14 : _o1[0] = captures[1];
21814 : 14 : _o1[1] = build_real (type, dconsthalf);
21815 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21816 : 14 : tem_op.resimplify (lseq, valueize);
21817 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21818 : 14 : if (!_r1) goto next_after_fail2609;
21819 : 7 : res_op->ops[1] = _r1;
21820 : : }
21821 : 7 : res_op->resimplify (lseq, valueize);
21822 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1186, __FILE__, __LINE__, true);
21823 : 7 : return true;
21824 : : }
21825 : 7 : next_after_fail2609:;
21826 : : }
21827 : : }
21828 : : }
21829 : : break;
21830 : 12 : case CFN_BUILT_IN_EXP10F:
21831 : 12 : if (gimple_call_num_args (_c1) == 1)
21832 : : {
21833 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21834 : 12 : _q20 = do_valueize (valueize, _q20);
21835 : 12 : {
21836 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21837 : 12 : if (flag_unsafe_math_optimizations
21838 : : )
21839 : : {
21840 : 12 : gimple_seq *lseq = seq;
21841 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2610;
21842 : 12 : {
21843 : 12 : res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1);
21844 : 12 : {
21845 : 12 : tree _o1[2], _r1;
21846 : 12 : _o1[0] = captures[0];
21847 : 12 : _o1[1] = captures[1];
21848 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21849 : 12 : tem_op.resimplify (lseq, valueize);
21850 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21851 : 12 : if (!_r1) goto next_after_fail2610;
21852 : 6 : res_op->ops[0] = _r1;
21853 : : }
21854 : 6 : res_op->resimplify (lseq, valueize);
21855 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
21856 : 6 : return true;
21857 : : }
21858 : 6 : next_after_fail2610:;
21859 : : }
21860 : : }
21861 : : }
21862 : : break;
21863 : 14 : case CFN_BUILT_IN_EXPF:
21864 : 14 : if (gimple_call_num_args (_c1) == 1)
21865 : : {
21866 : 14 : tree _q20 = gimple_call_arg (_c1, 0);
21867 : 14 : _q20 = do_valueize (valueize, _q20);
21868 : 14 : {
21869 : 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21870 : 14 : if (flag_unsafe_math_optimizations
21871 : : )
21872 : : {
21873 : 14 : gimple_seq *lseq = seq;
21874 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2611;
21875 : 14 : {
21876 : 14 : res_op->set_op (CFN_BUILT_IN_EXPF, type, 1);
21877 : 14 : {
21878 : 14 : tree _o1[2], _r1;
21879 : 14 : _o1[0] = captures[0];
21880 : 14 : _o1[1] = captures[1];
21881 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21882 : 14 : tem_op.resimplify (lseq, valueize);
21883 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21884 : 14 : if (!_r1) goto next_after_fail2611;
21885 : 7 : res_op->ops[0] = _r1;
21886 : : }
21887 : 7 : res_op->resimplify (lseq, valueize);
21888 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
21889 : 7 : return true;
21890 : : }
21891 : 7 : next_after_fail2611:;
21892 : : }
21893 : : }
21894 : : }
21895 : : break;
21896 : 23 : case CFN_BUILT_IN_POWF:
21897 : 23 : if (gimple_call_num_args (_c1) == 2)
21898 : : {
21899 : 23 : tree _q20 = gimple_call_arg (_c1, 0);
21900 : 23 : _q20 = do_valueize (valueize, _q20);
21901 : 23 : tree _q21 = gimple_call_arg (_c1, 1);
21902 : 23 : _q21 = do_valueize (valueize, _q21);
21903 : 23 : if (tree_expr_nonnegative_p (_q20))
21904 : : {
21905 : 12 : {
21906 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21907 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
21908 : : )
21909 : : {
21910 : 12 : gimple_seq *lseq = seq;
21911 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2612;
21912 : 12 : {
21913 : 12 : res_op->set_op (CFN_BUILT_IN_POWF, type, 2);
21914 : 12 : res_op->ops[0] = captures[0];
21915 : 12 : {
21916 : 12 : tree _o1[2], _r1;
21917 : 12 : _o1[0] = captures[1];
21918 : 12 : _o1[1] = captures[2];
21919 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21920 : 12 : tem_op.resimplify (lseq, valueize);
21921 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21922 : 12 : if (!_r1) goto next_after_fail2612;
21923 : 6 : res_op->ops[1] = _r1;
21924 : : }
21925 : 6 : res_op->resimplify (lseq, valueize);
21926 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1188, __FILE__, __LINE__, true);
21927 : 6 : return true;
21928 : : }
21929 : 6 : next_after_fail2612:;
21930 : : }
21931 : : }
21932 : : }
21933 : : }
21934 : : break;
21935 : 12 : case CFN_BUILT_IN_POW10F:
21936 : 12 : if (gimple_call_num_args (_c1) == 1)
21937 : : {
21938 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
21939 : 12 : _q20 = do_valueize (valueize, _q20);
21940 : 12 : {
21941 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21942 : 12 : if (flag_unsafe_math_optimizations
21943 : : )
21944 : : {
21945 : 12 : gimple_seq *lseq = seq;
21946 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2613;
21947 : 12 : {
21948 : 12 : res_op->set_op (CFN_BUILT_IN_POW10F, type, 1);
21949 : 12 : {
21950 : 12 : tree _o1[2], _r1;
21951 : 12 : _o1[0] = captures[0];
21952 : 12 : _o1[1] = captures[1];
21953 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
21954 : 12 : tem_op.resimplify (lseq, valueize);
21955 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
21956 : 12 : if (!_r1) goto next_after_fail2613;
21957 : 6 : res_op->ops[0] = _r1;
21958 : : }
21959 : 6 : res_op->resimplify (lseq, valueize);
21960 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
21961 : 6 : return true;
21962 : : }
21963 : 6 : next_after_fail2613:;
21964 : : }
21965 : : }
21966 : : }
21967 : : break;
21968 : 0 : case CFN_BUILT_IN_COPYSIGN:
21969 : 0 : if (gimple_call_num_args (_c1) == 2)
21970 : : {
21971 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21972 : 0 : _q20 = do_valueize (valueize, _q20);
21973 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21974 : 0 : _q21 = do_valueize (valueize, _q21);
21975 : 0 : switch (TREE_CODE (_p1))
21976 : : {
21977 : 0 : case REAL_CST:
21978 : 0 : {
21979 : 0 : {
21980 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
21981 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_POWF))
21982 : 0 : return true;
21983 : : }
21984 : 0 : break;
21985 : : }
21986 : : default:;
21987 : : }
21988 : : }
21989 : : break;
21990 : 0 : case CFN_BUILT_IN_COPYSIGNF:
21991 : 0 : if (gimple_call_num_args (_c1) == 2)
21992 : : {
21993 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
21994 : 0 : _q20 = do_valueize (valueize, _q20);
21995 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
21996 : 0 : _q21 = do_valueize (valueize, _q21);
21997 : 0 : switch (TREE_CODE (_p1))
21998 : : {
21999 : 0 : case REAL_CST:
22000 : 0 : {
22001 : 0 : {
22002 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22003 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_POWF))
22004 : 0 : return true;
22005 : : }
22006 : 0 : break;
22007 : : }
22008 : : default:;
22009 : : }
22010 : : }
22011 : : break;
22012 : 0 : case CFN_BUILT_IN_COPYSIGNL:
22013 : 0 : if (gimple_call_num_args (_c1) == 2)
22014 : : {
22015 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22016 : 0 : _q20 = do_valueize (valueize, _q20);
22017 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22018 : 0 : _q21 = do_valueize (valueize, _q21);
22019 : 0 : switch (TREE_CODE (_p1))
22020 : : {
22021 : 0 : case REAL_CST:
22022 : 0 : {
22023 : 0 : {
22024 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22025 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_POWF))
22026 : 0 : return true;
22027 : : }
22028 : 0 : break;
22029 : : }
22030 : : default:;
22031 : : }
22032 : : }
22033 : : break;
22034 : 12 : case CFN_BUILT_IN_CBRTF:
22035 : 12 : if (gimple_call_num_args (_c1) == 1)
22036 : : {
22037 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
22038 : 12 : _q20 = do_valueize (valueize, _q20);
22039 : 12 : if (tree_expr_nonnegative_p (_q20))
22040 : : {
22041 : 12 : {
22042 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22043 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
22044 : : )
22045 : : {
22046 : 12 : gimple_seq *lseq = seq;
22047 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2614;
22048 : 12 : {
22049 : 12 : res_op->set_op (CFN_BUILT_IN_POWF, type, 2);
22050 : 12 : res_op->ops[0] = captures[0];
22051 : 12 : {
22052 : 12 : tree _o1[2], _r1;
22053 : 12 : _o1[0] = captures[1];
22054 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
22055 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22056 : 12 : tem_op.resimplify (lseq, valueize);
22057 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22058 : 12 : if (!_r1) goto next_after_fail2614;
22059 : 6 : res_op->ops[1] = _r1;
22060 : : }
22061 : 6 : res_op->resimplify (lseq, valueize);
22062 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1189, __FILE__, __LINE__, true);
22063 : 6 : return true;
22064 : : }
22065 : 6 : next_after_fail2614:;
22066 : : }
22067 : : }
22068 : : }
22069 : : }
22070 : : break;
22071 : 12 : case CFN_BUILT_IN_EXP2F:
22072 : 12 : if (gimple_call_num_args (_c1) == 1)
22073 : : {
22074 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
22075 : 12 : _q20 = do_valueize (valueize, _q20);
22076 : 12 : {
22077 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22078 : 12 : if (flag_unsafe_math_optimizations
22079 : : )
22080 : : {
22081 : 12 : gimple_seq *lseq = seq;
22082 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2615;
22083 : 12 : {
22084 : 12 : res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1);
22085 : 12 : {
22086 : 12 : tree _o1[2], _r1;
22087 : 12 : _o1[0] = captures[0];
22088 : 12 : _o1[1] = captures[1];
22089 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22090 : 12 : tem_op.resimplify (lseq, valueize);
22091 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22092 : 12 : if (!_r1) goto next_after_fail2615;
22093 : 6 : res_op->ops[0] = _r1;
22094 : : }
22095 : 6 : res_op->resimplify (lseq, valueize);
22096 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
22097 : 6 : return true;
22098 : : }
22099 : 6 : next_after_fail2615:;
22100 : : }
22101 : : }
22102 : : }
22103 : : break;
22104 : 1 : case CFN_COPYSIGN:
22105 : 1 : if (gimple_call_num_args (_c1) == 2)
22106 : : {
22107 : 1 : tree _q20 = gimple_call_arg (_c1, 0);
22108 : 1 : _q20 = do_valueize (valueize, _q20);
22109 : 1 : tree _q21 = gimple_call_arg (_c1, 1);
22110 : 1 : _q21 = do_valueize (valueize, _q21);
22111 : 1 : switch (TREE_CODE (_p1))
22112 : : {
22113 : 1 : case REAL_CST:
22114 : 1 : {
22115 : 1 : {
22116 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22117 : 1 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_POWF))
22118 : 1 : return true;
22119 : : }
22120 : 0 : break;
22121 : : }
22122 : : default:;
22123 : : }
22124 : : }
22125 : : break;
22126 : : default:;
22127 : : }
22128 : : }
22129 : : break;
22130 : 2359 : case REAL_CST:
22131 : 2359 : {
22132 : 2359 : {
22133 : 2359 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22134 : 2359 : if (gimple_simplify_529 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF, CFN_BUILT_IN_EXPF, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXP2F, CFN_BUILT_IN_LOG2F))
22135 : 2 : return true;
22136 : : }
22137 : 2357 : break;
22138 : : }
22139 : 4846 : default:;
22140 : : }
22141 : 4846 : if (real_zerop (_p0))
22142 : : {
22143 : 197 : {
22144 : 197 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22145 : 197 : if (gimple_simplify_528 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF))
22146 : 3 : return true;
22147 : : }
22148 : : }
22149 : 4843 : if (real_onep (_p0))
22150 : : {
22151 : 152 : {
22152 : 152 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22153 : 152 : if (gimple_simplify_530 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF))
22154 : 152 : return true;
22155 : : }
22156 : : }
22157 : 4691 : switch (TREE_CODE (_p1))
22158 : : {
22159 : 2020 : case REAL_CST:
22160 : 2020 : {
22161 : 2020 : {
22162 : 2020 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22163 : 2020 : {
22164 : 2020 : const REAL_VALUE_TYPE *value = TREE_REAL_CST_PTR (captures[1]);
22165 : 2020 : REAL_VALUE_TYPE tmp;
22166 : 2020 : if (real_equal (value, &dconst0)
22167 : : )
22168 : : {
22169 : 12 : gimple_seq *lseq = seq;
22170 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2616;
22171 : 12 : {
22172 : 12 : tree tem;
22173 : 12 : tem = build_real (type, dconst1);
22174 : 12 : res_op->set_value (tem);
22175 : 12 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1190, __FILE__, __LINE__, true);
22176 : 25 : return true;
22177 : : }
22178 : 0 : next_after_fail2616:;
22179 : : }
22180 : : else
22181 : : {
22182 : 2008 : if (real_equal (value, &dconst1)
22183 : : )
22184 : : {
22185 : 7 : gimple_seq *lseq = seq;
22186 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2617;
22187 : 7 : {
22188 : 7 : tree tem;
22189 : 7 : tem = captures[0];
22190 : 7 : res_op->set_value (tem);
22191 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
22192 : 7 : return true;
22193 : : }
22194 : 0 : next_after_fail2617:;
22195 : : }
22196 : : else
22197 : : {
22198 : 2001 : if (real_equal (value, &dconstm1)
22199 : : )
22200 : : {
22201 : 6 : gimple_seq *lseq = seq;
22202 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2618;
22203 : 6 : {
22204 : 6 : res_op->set_op (RDIV_EXPR, type, 2);
22205 : 6 : res_op->ops[0] = build_real (type, dconst1);
22206 : 6 : res_op->ops[1] = captures[0];
22207 : 6 : res_op->resimplify (lseq, valueize);
22208 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1192, __FILE__, __LINE__, true);
22209 : 6 : return true;
22210 : : }
22211 : 0 : next_after_fail2618:;
22212 : : }
22213 : : else
22214 : : {
22215 : 1995 : if (flag_unsafe_math_optimizations
22216 : : && canonicalize_math_p ()
22217 : 2313 : && real_equal (value, &dconsthalf)
22218 : : )
22219 : : {
22220 : 0 : gimple_seq *lseq = seq;
22221 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2619;
22222 : 0 : {
22223 : 0 : res_op->set_op (CFN_BUILT_IN_SQRTF, type, 1);
22224 : 0 : res_op->ops[0] = captures[0];
22225 : 0 : res_op->resimplify (lseq, valueize);
22226 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1193, __FILE__, __LINE__, true);
22227 : 0 : return true;
22228 : : }
22229 : 0 : next_after_fail2619:;
22230 : : }
22231 : : else
22232 : : {
22233 : 1995 : if (flag_unsafe_math_optimizations
22234 : : && canonicalize_math_p ()
22235 : 2660 : && (tmp = real_value_truncate (TYPE_MODE (type), dconst_third ()),
22236 : 318 : real_equal (value, &tmp))
22237 : : )
22238 : : {
22239 : 0 : gimple_seq *lseq = seq;
22240 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2620;
22241 : 0 : {
22242 : 0 : res_op->set_op (CFN_BUILT_IN_CBRTF, type, 1);
22243 : 0 : res_op->ops[0] = captures[0];
22244 : 0 : res_op->resimplify (lseq, valueize);
22245 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1194, __FILE__, __LINE__, true);
22246 : 0 : return true;
22247 : : }
22248 : 0 : next_after_fail2620:;
22249 : : }
22250 : : }
22251 : : }
22252 : : }
22253 : : }
22254 : : }
22255 : : }
22256 : 1995 : break;
22257 : : }
22258 : : default:;
22259 : : }
22260 : : return false;
22261 : : }
22262 : :
22263 : : bool
22264 : 6563 : gimple_simplify_CFN_BUILT_IN_POW (gimple_match_op *res_op, gimple_seq *seq,
22265 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22266 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22267 : : {
22268 : 6563 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22269 : 6563 : switch (TREE_CODE (_p0))
22270 : : {
22271 : 3465 : case SSA_NAME:
22272 : 3465 : if (gimple *_d1 = get_def (valueize, _p0))
22273 : : {
22274 : 2037 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22275 : 1694 : switch (gimple_assign_rhs_code (_a1))
22276 : : {
22277 : 18 : case NEGATE_EXPR:
22278 : 18 : {
22279 : 18 : tree _q20 = gimple_assign_rhs1 (_a1);
22280 : 18 : _q20 = do_valueize (valueize, _q20);
22281 : 18 : switch (TREE_CODE (_p1))
22282 : : {
22283 : 13 : case REAL_CST:
22284 : 13 : {
22285 : 13 : {
22286 : 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22287 : 13 : const combined_fn pows = CFN_BUILT_IN_POW;
22288 : 13 : {
22289 : 13 : HOST_WIDE_INT n;
22290 : 13 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
22291 : : )
22292 : : {
22293 : 5 : gimple_seq *lseq = seq;
22294 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2621;
22295 : 5 : {
22296 : 5 : res_op->set_op (pows, type, 2);
22297 : 5 : res_op->ops[0] = captures[0];
22298 : 5 : res_op->ops[1] = captures[1];
22299 : 5 : res_op->resimplify (lseq, valueize);
22300 : 5 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1185, __FILE__, __LINE__, true);
22301 : 5 : return true;
22302 : : }
22303 : 0 : next_after_fail2621:;
22304 : : }
22305 : : }
22306 : : }
22307 : 8 : break;
22308 : : }
22309 : : default:;
22310 : : }
22311 : : break;
22312 : : }
22313 : 234 : case ABS_EXPR:
22314 : 234 : {
22315 : 234 : tree _q20 = gimple_assign_rhs1 (_a1);
22316 : 234 : _q20 = do_valueize (valueize, _q20);
22317 : 234 : switch (TREE_CODE (_p1))
22318 : : {
22319 : 44 : case REAL_CST:
22320 : 44 : {
22321 : 44 : {
22322 : 44 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22323 : 44 : const combined_fn pows = CFN_BUILT_IN_POW;
22324 : 44 : {
22325 : 44 : HOST_WIDE_INT n;
22326 : 44 : if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0
22327 : : )
22328 : : {
22329 : 6 : gimple_seq *lseq = seq;
22330 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2622;
22331 : 6 : {
22332 : 6 : res_op->set_op (pows, type, 2);
22333 : 6 : res_op->ops[0] = captures[0];
22334 : 6 : res_op->ops[1] = captures[1];
22335 : 6 : res_op->resimplify (lseq, valueize);
22336 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1185, __FILE__, __LINE__, true);
22337 : 6 : return true;
22338 : : }
22339 : 0 : next_after_fail2622:;
22340 : : }
22341 : : }
22342 : : }
22343 : 38 : break;
22344 : : }
22345 : : default:;
22346 : : }
22347 : : break;
22348 : : }
22349 : 2 : case RDIV_EXPR:
22350 : 2 : {
22351 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
22352 : 2 : _q20 = do_valueize (valueize, _q20);
22353 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
22354 : 2 : _q21 = do_valueize (valueize, _q21);
22355 : 2 : if (real_onep (_q20))
22356 : : {
22357 : 2 : {
22358 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
22359 : 2 : if (gimple_simplify_527 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW))
22360 : 1 : return true;
22361 : : }
22362 : : }
22363 : : break;
22364 : : }
22365 : : default:;
22366 : : }
22367 : 839 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
22368 : 140 : switch (gimple_call_combined_fn (_c1))
22369 : : {
22370 : 19 : case CFN_BUILT_IN_EXP:
22371 : 19 : if (gimple_call_num_args (_c1) == 1)
22372 : : {
22373 : 19 : tree _q20 = gimple_call_arg (_c1, 0);
22374 : 19 : _q20 = do_valueize (valueize, _q20);
22375 : 19 : {
22376 : 19 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22377 : 19 : if (flag_unsafe_math_optimizations
22378 : : )
22379 : : {
22380 : 19 : gimple_seq *lseq = seq;
22381 : 19 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2623;
22382 : 19 : {
22383 : 19 : res_op->set_op (CFN_BUILT_IN_EXP, type, 1);
22384 : 19 : {
22385 : 19 : tree _o1[2], _r1;
22386 : 19 : _o1[0] = captures[0];
22387 : 19 : _o1[1] = captures[1];
22388 : 19 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22389 : 19 : tem_op.resimplify (lseq, valueize);
22390 : 19 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22391 : 19 : if (!_r1) goto next_after_fail2623;
22392 : 10 : res_op->ops[0] = _r1;
22393 : : }
22394 : 10 : res_op->resimplify (lseq, valueize);
22395 : 10 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
22396 : 10 : return true;
22397 : : }
22398 : 9 : next_after_fail2623:;
22399 : : }
22400 : : }
22401 : : }
22402 : : break;
22403 : 28 : case CFN_BUILT_IN_POW:
22404 : 28 : if (gimple_call_num_args (_c1) == 2)
22405 : : {
22406 : 28 : tree _q20 = gimple_call_arg (_c1, 0);
22407 : 28 : _q20 = do_valueize (valueize, _q20);
22408 : 28 : tree _q21 = gimple_call_arg (_c1, 1);
22409 : 28 : _q21 = do_valueize (valueize, _q21);
22410 : 28 : if (tree_expr_nonnegative_p (_q20))
22411 : : {
22412 : 14 : {
22413 : 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22414 : 14 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
22415 : : )
22416 : : {
22417 : 14 : gimple_seq *lseq = seq;
22418 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2624;
22419 : 14 : {
22420 : 14 : res_op->set_op (CFN_BUILT_IN_POW, type, 2);
22421 : 14 : res_op->ops[0] = captures[0];
22422 : 14 : {
22423 : 14 : tree _o1[2], _r1;
22424 : 14 : _o1[0] = captures[1];
22425 : 14 : _o1[1] = captures[2];
22426 : 14 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22427 : 14 : tem_op.resimplify (lseq, valueize);
22428 : 14 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22429 : 14 : if (!_r1) goto next_after_fail2624;
22430 : 7 : res_op->ops[1] = _r1;
22431 : : }
22432 : 7 : res_op->resimplify (lseq, valueize);
22433 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1188, __FILE__, __LINE__, true);
22434 : 7 : return true;
22435 : : }
22436 : 7 : next_after_fail2624:;
22437 : : }
22438 : : }
22439 : : }
22440 : : }
22441 : : break;
22442 : 12 : case CFN_BUILT_IN_CBRT:
22443 : 12 : if (gimple_call_num_args (_c1) == 1)
22444 : : {
22445 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
22446 : 12 : _q20 = do_valueize (valueize, _q20);
22447 : 12 : if (tree_expr_nonnegative_p (_q20))
22448 : : {
22449 : 12 : {
22450 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22451 : 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
22452 : : )
22453 : : {
22454 : 12 : gimple_seq *lseq = seq;
22455 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2625;
22456 : 12 : {
22457 : 12 : res_op->set_op (CFN_BUILT_IN_POW, type, 2);
22458 : 12 : res_op->ops[0] = captures[0];
22459 : 12 : {
22460 : 12 : tree _o1[2], _r1;
22461 : 12 : _o1[0] = captures[1];
22462 : 12 : _o1[1] = build_real_truncate (type, dconst_third ());
22463 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22464 : 12 : tem_op.resimplify (lseq, valueize);
22465 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22466 : 12 : if (!_r1) goto next_after_fail2625;
22467 : 6 : res_op->ops[1] = _r1;
22468 : : }
22469 : 6 : res_op->resimplify (lseq, valueize);
22470 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1189, __FILE__, __LINE__, true);
22471 : 6 : return true;
22472 : : }
22473 : 6 : next_after_fail2625:;
22474 : : }
22475 : : }
22476 : : }
22477 : : }
22478 : : break;
22479 : 12 : case CFN_BUILT_IN_EXP2:
22480 : 12 : if (gimple_call_num_args (_c1) == 1)
22481 : : {
22482 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
22483 : 12 : _q20 = do_valueize (valueize, _q20);
22484 : 12 : {
22485 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22486 : 12 : if (flag_unsafe_math_optimizations
22487 : : )
22488 : : {
22489 : 12 : gimple_seq *lseq = seq;
22490 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2626;
22491 : 12 : {
22492 : 12 : res_op->set_op (CFN_BUILT_IN_EXP2, type, 1);
22493 : 12 : {
22494 : 12 : tree _o1[2], _r1;
22495 : 12 : _o1[0] = captures[0];
22496 : 12 : _o1[1] = captures[1];
22497 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22498 : 12 : tem_op.resimplify (lseq, valueize);
22499 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22500 : 12 : if (!_r1) goto next_after_fail2626;
22501 : 6 : res_op->ops[0] = _r1;
22502 : : }
22503 : 6 : res_op->resimplify (lseq, valueize);
22504 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
22505 : 6 : return true;
22506 : : }
22507 : 6 : next_after_fail2626:;
22508 : : }
22509 : : }
22510 : : }
22511 : : break;
22512 : 18 : case CFN_BUILT_IN_SQRT:
22513 : 18 : if (gimple_call_num_args (_c1) == 1)
22514 : : {
22515 : 18 : tree _q20 = gimple_call_arg (_c1, 0);
22516 : 18 : _q20 = do_valueize (valueize, _q20);
22517 : 18 : {
22518 : 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22519 : 18 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
22520 : : )
22521 : : {
22522 : 18 : gimple_seq *lseq = seq;
22523 : 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2627;
22524 : 18 : {
22525 : 18 : res_op->set_op (CFN_BUILT_IN_POW, type, 2);
22526 : 18 : res_op->ops[0] = captures[0];
22527 : 18 : {
22528 : 18 : tree _o1[2], _r1;
22529 : 18 : _o1[0] = captures[1];
22530 : 18 : _o1[1] = build_real (type, dconsthalf);
22531 : 18 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22532 : 18 : tem_op.resimplify (lseq, valueize);
22533 : 18 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22534 : 18 : if (!_r1) goto next_after_fail2627;
22535 : 10 : res_op->ops[1] = _r1;
22536 : : }
22537 : 10 : res_op->resimplify (lseq, valueize);
22538 : 10 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1186, __FILE__, __LINE__, true);
22539 : 10 : return true;
22540 : : }
22541 : 8 : next_after_fail2627:;
22542 : : }
22543 : : }
22544 : : }
22545 : : break;
22546 : 0 : case CFN_BUILT_IN_COPYSIGN:
22547 : 0 : if (gimple_call_num_args (_c1) == 2)
22548 : : {
22549 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22550 : 0 : _q20 = do_valueize (valueize, _q20);
22551 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22552 : 0 : _q21 = do_valueize (valueize, _q21);
22553 : 0 : switch (TREE_CODE (_p1))
22554 : : {
22555 : 0 : case REAL_CST:
22556 : 0 : {
22557 : 0 : {
22558 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22559 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN, CFN_BUILT_IN_POW))
22560 : 0 : return true;
22561 : : }
22562 : 0 : break;
22563 : : }
22564 : : default:;
22565 : : }
22566 : : }
22567 : : break;
22568 : 0 : case CFN_BUILT_IN_COPYSIGNF:
22569 : 0 : if (gimple_call_num_args (_c1) == 2)
22570 : : {
22571 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22572 : 0 : _q20 = do_valueize (valueize, _q20);
22573 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22574 : 0 : _q21 = do_valueize (valueize, _q21);
22575 : 0 : switch (TREE_CODE (_p1))
22576 : : {
22577 : 0 : case REAL_CST:
22578 : 0 : {
22579 : 0 : {
22580 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22581 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF, CFN_BUILT_IN_POW))
22582 : 0 : return true;
22583 : : }
22584 : 0 : break;
22585 : : }
22586 : : default:;
22587 : : }
22588 : : }
22589 : : break;
22590 : 0 : case CFN_BUILT_IN_COPYSIGNL:
22591 : 0 : if (gimple_call_num_args (_c1) == 2)
22592 : : {
22593 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22594 : 0 : _q20 = do_valueize (valueize, _q20);
22595 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22596 : 0 : _q21 = do_valueize (valueize, _q21);
22597 : 0 : switch (TREE_CODE (_p1))
22598 : : {
22599 : 0 : case REAL_CST:
22600 : 0 : {
22601 : 0 : {
22602 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22603 : 0 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL, CFN_BUILT_IN_POW))
22604 : 0 : return true;
22605 : : }
22606 : 0 : break;
22607 : : }
22608 : : default:;
22609 : : }
22610 : : }
22611 : : break;
22612 : 12 : case CFN_BUILT_IN_EXP10:
22613 : 12 : if (gimple_call_num_args (_c1) == 1)
22614 : : {
22615 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
22616 : 12 : _q20 = do_valueize (valueize, _q20);
22617 : 12 : {
22618 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22619 : 12 : if (flag_unsafe_math_optimizations
22620 : : )
22621 : : {
22622 : 12 : gimple_seq *lseq = seq;
22623 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2628;
22624 : 12 : {
22625 : 12 : res_op->set_op (CFN_BUILT_IN_EXP10, type, 1);
22626 : 12 : {
22627 : 12 : tree _o1[2], _r1;
22628 : 12 : _o1[0] = captures[0];
22629 : 12 : _o1[1] = captures[1];
22630 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22631 : 12 : tem_op.resimplify (lseq, valueize);
22632 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22633 : 12 : if (!_r1) goto next_after_fail2628;
22634 : 6 : res_op->ops[0] = _r1;
22635 : : }
22636 : 6 : res_op->resimplify (lseq, valueize);
22637 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
22638 : 6 : return true;
22639 : : }
22640 : 6 : next_after_fail2628:;
22641 : : }
22642 : : }
22643 : : }
22644 : : break;
22645 : 1 : case CFN_COPYSIGN:
22646 : 1 : if (gimple_call_num_args (_c1) == 2)
22647 : : {
22648 : 1 : tree _q20 = gimple_call_arg (_c1, 0);
22649 : 1 : _q20 = do_valueize (valueize, _q20);
22650 : 1 : tree _q21 = gimple_call_arg (_c1, 1);
22651 : 1 : _q21 = do_valueize (valueize, _q21);
22652 : 1 : switch (TREE_CODE (_p1))
22653 : : {
22654 : 1 : case REAL_CST:
22655 : 1 : {
22656 : 1 : {
22657 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22658 : 1 : if (gimple_simplify_526 (res_op, seq, valueize, type, captures, CFN_COPYSIGN, CFN_BUILT_IN_POW))
22659 : 1 : return true;
22660 : : }
22661 : 0 : break;
22662 : : }
22663 : : default:;
22664 : : }
22665 : : }
22666 : : break;
22667 : 12 : case CFN_BUILT_IN_POW10:
22668 : 12 : if (gimple_call_num_args (_c1) == 1)
22669 : : {
22670 : 12 : tree _q20 = gimple_call_arg (_c1, 0);
22671 : 12 : _q20 = do_valueize (valueize, _q20);
22672 : 12 : {
22673 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22674 : 12 : if (flag_unsafe_math_optimizations
22675 : : )
22676 : : {
22677 : 12 : gimple_seq *lseq = seq;
22678 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2629;
22679 : 12 : {
22680 : 12 : res_op->set_op (CFN_BUILT_IN_POW10, type, 1);
22681 : 12 : {
22682 : 12 : tree _o1[2], _r1;
22683 : 12 : _o1[0] = captures[0];
22684 : 12 : _o1[1] = captures[1];
22685 : 12 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
22686 : 12 : tem_op.resimplify (lseq, valueize);
22687 : 12 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22688 : 12 : if (!_r1) goto next_after_fail2629;
22689 : 6 : res_op->ops[0] = _r1;
22690 : : }
22691 : 6 : res_op->resimplify (lseq, valueize);
22692 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1187, __FILE__, __LINE__, true);
22693 : 6 : return true;
22694 : : }
22695 : 6 : next_after_fail2629:;
22696 : : }
22697 : : }
22698 : : }
22699 : : break;
22700 : : default:;
22701 : : }
22702 : : }
22703 : : break;
22704 : 2891 : case REAL_CST:
22705 : 2891 : {
22706 : 2891 : {
22707 : 2891 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22708 : 2891 : if (gimple_simplify_529 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW, CFN_BUILT_IN_EXP, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP2, CFN_BUILT_IN_LOG2))
22709 : 4 : return true;
22710 : : }
22711 : 2887 : break;
22712 : : }
22713 : 6495 : default:;
22714 : : }
22715 : 6495 : if (real_zerop (_p0))
22716 : : {
22717 : 196 : {
22718 : 196 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22719 : 196 : if (gimple_simplify_528 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW))
22720 : 2 : return true;
22721 : : }
22722 : : }
22723 : 6493 : if (real_onep (_p0))
22724 : : {
22725 : 203 : {
22726 : 203 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22727 : 203 : if (gimple_simplify_530 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW))
22728 : 203 : return true;
22729 : : }
22730 : : }
22731 : 6290 : switch (TREE_CODE (_p1))
22732 : : {
22733 : 2804 : case REAL_CST:
22734 : 2804 : {
22735 : 2804 : {
22736 : 2804 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
22737 : 2804 : {
22738 : 2804 : const REAL_VALUE_TYPE *value = TREE_REAL_CST_PTR (captures[1]);
22739 : 2804 : REAL_VALUE_TYPE tmp;
22740 : 2804 : if (real_equal (value, &dconst0)
22741 : : )
22742 : : {
22743 : 6 : gimple_seq *lseq = seq;
22744 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2630;
22745 : 6 : {
22746 : 6 : tree tem;
22747 : 6 : tem = build_real (type, dconst1);
22748 : 6 : res_op->set_value (tem);
22749 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1190, __FILE__, __LINE__, true);
22750 : 14 : return true;
22751 : : }
22752 : 0 : next_after_fail2630:;
22753 : : }
22754 : : else
22755 : : {
22756 : 2798 : if (real_equal (value, &dconst1)
22757 : : )
22758 : : {
22759 : 1 : gimple_seq *lseq = seq;
22760 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2631;
22761 : 1 : {
22762 : 1 : tree tem;
22763 : 1 : tem = captures[0];
22764 : 1 : res_op->set_value (tem);
22765 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1191, __FILE__, __LINE__, true);
22766 : 1 : return true;
22767 : : }
22768 : 0 : next_after_fail2631:;
22769 : : }
22770 : : else
22771 : : {
22772 : 2797 : if (real_equal (value, &dconstm1)
22773 : : )
22774 : : {
22775 : 1 : gimple_seq *lseq = seq;
22776 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2632;
22777 : 1 : {
22778 : 1 : res_op->set_op (RDIV_EXPR, type, 2);
22779 : 1 : res_op->ops[0] = build_real (type, dconst1);
22780 : 1 : res_op->ops[1] = captures[0];
22781 : 1 : res_op->resimplify (lseq, valueize);
22782 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1192, __FILE__, __LINE__, true);
22783 : 1 : return true;
22784 : : }
22785 : 0 : next_after_fail2632:;
22786 : : }
22787 : : else
22788 : : {
22789 : 2796 : if (flag_unsafe_math_optimizations
22790 : : && canonicalize_math_p ()
22791 : 3560 : && real_equal (value, &dconsthalf)
22792 : : )
22793 : : {
22794 : 4 : gimple_seq *lseq = seq;
22795 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2633;
22796 : 4 : {
22797 : 4 : res_op->set_op (CFN_BUILT_IN_SQRT, type, 1);
22798 : 4 : res_op->ops[0] = captures[0];
22799 : 4 : res_op->resimplify (lseq, valueize);
22800 : 4 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1193, __FILE__, __LINE__, true);
22801 : 4 : return true;
22802 : : }
22803 : 0 : next_after_fail2633:;
22804 : : }
22805 : : else
22806 : : {
22807 : 2792 : if (flag_unsafe_math_optimizations
22808 : : && canonicalize_math_p ()
22809 : 4312 : && (tmp = real_value_truncate (TYPE_MODE (type), dconst_third ()),
22810 : 760 : real_equal (value, &tmp))
22811 : : )
22812 : : {
22813 : 2 : gimple_seq *lseq = seq;
22814 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2634;
22815 : 2 : {
22816 : 2 : res_op->set_op (CFN_BUILT_IN_CBRT, type, 1);
22817 : 2 : res_op->ops[0] = captures[0];
22818 : 2 : res_op->resimplify (lseq, valueize);
22819 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1194, __FILE__, __LINE__, true);
22820 : 2 : return true;
22821 : : }
22822 : 0 : next_after_fail2634:;
22823 : : }
22824 : : }
22825 : : }
22826 : : }
22827 : : }
22828 : : }
22829 : : }
22830 : 2790 : break;
22831 : : }
22832 : : default:;
22833 : : }
22834 : : return false;
22835 : : }
22836 : :
22837 : : bool
22838 : 91 : gimple_simplify_CFN_BUILT_IN_POWIL (gimple_match_op *res_op, gimple_seq *seq,
22839 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
22840 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
22841 : : {
22842 : 91 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
22843 : 91 : switch (TREE_CODE (_p0))
22844 : : {
22845 : 51 : case SSA_NAME:
22846 : 51 : if (gimple *_d1 = get_def (valueize, _p0))
22847 : : {
22848 : 41 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
22849 : 4 : switch (gimple_assign_rhs_code (_a1))
22850 : : {
22851 : 0 : case NEGATE_EXPR:
22852 : 0 : {
22853 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22854 : 0 : _q20 = do_valueize (valueize, _q20);
22855 : 0 : switch (TREE_CODE (_p1))
22856 : : {
22857 : 0 : case INTEGER_CST:
22858 : 0 : {
22859 : 0 : {
22860 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22861 : 0 : if ((wi::to_wide (captures[1]) & 1) == 0
22862 : : )
22863 : : {
22864 : 0 : gimple_seq *lseq = seq;
22865 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2680;
22866 : 0 : {
22867 : 0 : res_op->set_op (CFN_BUILT_IN_POWIL, type, 2);
22868 : 0 : res_op->ops[0] = captures[0];
22869 : 0 : res_op->ops[1] = captures[1];
22870 : 0 : res_op->resimplify (lseq, valueize);
22871 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1195, __FILE__, __LINE__, true);
22872 : 0 : return true;
22873 : : }
22874 : 0 : next_after_fail2680:;
22875 : : }
22876 : : }
22877 : 0 : break;
22878 : : }
22879 : : default:;
22880 : : }
22881 : : break;
22882 : : }
22883 : 0 : case ABS_EXPR:
22884 : 0 : {
22885 : 0 : tree _q20 = gimple_assign_rhs1 (_a1);
22886 : 0 : _q20 = do_valueize (valueize, _q20);
22887 : 0 : switch (TREE_CODE (_p1))
22888 : : {
22889 : 0 : case INTEGER_CST:
22890 : 0 : {
22891 : 0 : {
22892 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22893 : 0 : if ((wi::to_wide (captures[1]) & 1) == 0
22894 : : )
22895 : : {
22896 : 0 : gimple_seq *lseq = seq;
22897 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2681;
22898 : 0 : {
22899 : 0 : res_op->set_op (CFN_BUILT_IN_POWIL, type, 2);
22900 : 0 : res_op->ops[0] = captures[0];
22901 : 0 : res_op->ops[1] = captures[1];
22902 : 0 : res_op->resimplify (lseq, valueize);
22903 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1195, __FILE__, __LINE__, true);
22904 : 0 : return true;
22905 : : }
22906 : 0 : next_after_fail2681:;
22907 : : }
22908 : : }
22909 : 0 : break;
22910 : : }
22911 : : default:;
22912 : : }
22913 : : break;
22914 : : }
22915 : 2 : case RDIV_EXPR:
22916 : 2 : {
22917 : 2 : tree _q20 = gimple_assign_rhs1 (_a1);
22918 : 2 : _q20 = do_valueize (valueize, _q20);
22919 : 2 : tree _q21 = gimple_assign_rhs2 (_a1);
22920 : 2 : _q21 = do_valueize (valueize, _q21);
22921 : 2 : if (real_onep (_q20))
22922 : : {
22923 : 2 : {
22924 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
22925 : 2 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
22926 : : )
22927 : : {
22928 : 2 : if (! HONOR_INFINITIES (type) && ! flag_trapping_math
22929 : : )
22930 : : {
22931 : 2 : if (single_use (captures[0])
22932 : : )
22933 : : {
22934 : 2 : gimple_seq *lseq = seq;
22935 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2682;
22936 : 2 : {
22937 : 2 : res_op->set_op (CFN_BUILT_IN_POWIL, type, 2);
22938 : 2 : res_op->ops[0] = captures[2];
22939 : 2 : {
22940 : 2 : tree _o1[1], _r1;
22941 : 2 : _o1[0] = captures[3];
22942 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
22943 : 2 : tem_op.resimplify (lseq, valueize);
22944 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
22945 : 2 : if (!_r1) goto next_after_fail2682;
22946 : 1 : res_op->ops[1] = _r1;
22947 : : }
22948 : 1 : res_op->resimplify (lseq, valueize);
22949 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1196, __FILE__, __LINE__, true);
22950 : 1 : return true;
22951 : : }
22952 : 1 : next_after_fail2682:;
22953 : : }
22954 : : }
22955 : : }
22956 : : }
22957 : : }
22958 : : break;
22959 : : }
22960 : : default:;
22961 : : }
22962 : 37 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
22963 : 0 : switch (gimple_call_combined_fn (_c1))
22964 : : {
22965 : 0 : case CFN_BUILT_IN_COPYSIGN:
22966 : 0 : if (gimple_call_num_args (_c1) == 2)
22967 : : {
22968 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
22969 : 0 : _q20 = do_valueize (valueize, _q20);
22970 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
22971 : 0 : _q21 = do_valueize (valueize, _q21);
22972 : 0 : switch (TREE_CODE (_p1))
22973 : : {
22974 : 0 : case INTEGER_CST:
22975 : 0 : {
22976 : 0 : {
22977 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
22978 : 0 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGN;
22979 : 0 : if ((wi::to_wide (captures[2]) & 1) == 0
22980 : : )
22981 : : {
22982 : 0 : gimple_seq *lseq = seq;
22983 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2683;
22984 : 0 : {
22985 : 0 : res_op->set_op (CFN_BUILT_IN_POWIL, type, 2);
22986 : 0 : res_op->ops[0] = captures[0];
22987 : 0 : res_op->ops[1] = captures[2];
22988 : 0 : res_op->resimplify (lseq, valueize);
22989 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1197, __FILE__, __LINE__, true);
22990 : 0 : return true;
22991 : : }
22992 : 0 : next_after_fail2683:;
22993 : : }
22994 : : }
22995 : 0 : break;
22996 : : }
22997 : : default:;
22998 : : }
22999 : : }
23000 : : break;
23001 : 0 : case CFN_BUILT_IN_COPYSIGNF:
23002 : 0 : if (gimple_call_num_args (_c1) == 2)
23003 : : {
23004 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
23005 : 0 : _q20 = do_valueize (valueize, _q20);
23006 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
23007 : 0 : _q21 = do_valueize (valueize, _q21);
23008 : 0 : switch (TREE_CODE (_p1))
23009 : : {
23010 : 0 : case INTEGER_CST:
23011 : 0 : {
23012 : 0 : {
23013 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
23014 : 0 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF;
23015 : 0 : if ((wi::to_wide (captures[2]) & 1) == 0
23016 : : )
23017 : : {
23018 : 0 : gimple_seq *lseq = seq;
23019 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2684;
23020 : 0 : {
23021 : 0 : res_op->set_op (CFN_BUILT_IN_POWIL, type, 2);
23022 : 0 : res_op->ops[0] = captures[0];
23023 : 0 : res_op->ops[1] = captures[2];
23024 : 0 : res_op->resimplify (lseq, valueize);
23025 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1197, __FILE__, __LINE__, true);
23026 : 0 : return true;
23027 : : }
23028 : 0 : next_after_fail2684:;
23029 : : }
23030 : : }
23031 : 0 : break;
23032 : : }
23033 : : default:;
23034 : : }
23035 : : }
23036 : : break;
23037 : 0 : case CFN_BUILT_IN_COPYSIGNL:
23038 : 0 : if (gimple_call_num_args (_c1) == 2)
23039 : : {
23040 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
23041 : 0 : _q20 = do_valueize (valueize, _q20);
23042 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
23043 : 0 : _q21 = do_valueize (valueize, _q21);
23044 : 0 : switch (TREE_CODE (_p1))
23045 : : {
23046 : 0 : case INTEGER_CST:
23047 : 0 : {
23048 : 0 : {
23049 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
23050 : 0 : const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNL;
23051 : 0 : if ((wi::to_wide (captures[2]) & 1) == 0
23052 : : )
23053 : : {
23054 : 0 : gimple_seq *lseq = seq;
23055 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2685;
23056 : 0 : {
23057 : 0 : res_op->set_op (CFN_BUILT_IN_POWIL, type, 2);
23058 : 0 : res_op->ops[0] = captures[0];
23059 : 0 : res_op->ops[1] = captures[2];
23060 : 0 : res_op->resimplify (lseq, valueize);
23061 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1197, __FILE__, __LINE__, true);
23062 : 0 : return true;
23063 : : }
23064 : 0 : next_after_fail2685:;
23065 : : }
23066 : : }
23067 : 0 : break;
23068 : : }
23069 : : default:;
23070 : : }
23071 : : }
23072 : : break;
23073 : 0 : case CFN_COPYSIGN:
23074 : 0 : if (gimple_call_num_args (_c1) == 2)
23075 : : {
23076 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
23077 : 0 : _q20 = do_valueize (valueize, _q20);
23078 : 0 : tree _q21 = gimple_call_arg (_c1, 1);
23079 : 0 : _q21 = do_valueize (valueize, _q21);
23080 : 0 : switch (TREE_CODE (_p1))
23081 : : {
23082 : 0 : case INTEGER_CST:
23083 : 0 : {
23084 : 0 : {
23085 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
23086 : 0 : const combined_fn copysigns = CFN_COPYSIGN;
23087 : 0 : if ((wi::to_wide (captures[2]) & 1) == 0
23088 : : )
23089 : : {
23090 : 0 : gimple_seq *lseq = seq;
23091 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2686;
23092 : 0 : {
23093 : 0 : res_op->set_op (CFN_BUILT_IN_POWIL, type, 2);
23094 : 0 : res_op->ops[0] = captures[0];
23095 : 0 : res_op->ops[1] = captures[2];
23096 : 0 : res_op->resimplify (lseq, valueize);
23097 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1197, __FILE__, __LINE__, true);
23098 : 0 : return true;
23099 : : }
23100 : 0 : next_after_fail2686:;
23101 : : }
23102 : : }
23103 : 0 : break;
23104 : : }
23105 : : default:;
23106 : : }
23107 : : }
23108 : : break;
23109 : : default:;
23110 : : }
23111 : : }
23112 : : break;
23113 : 25 : case REAL_CST:
23114 : 25 : {
23115 : 25 : {
23116 : 25 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23117 : 25 : if (flag_unsafe_math_optimizations
23118 : : )
23119 : : {
23120 : 9 : {
23121 : 9 : HOST_WIDE_INT tmp = 0;
23122 : 9 : if (real_isinteger (&TREE_REAL_CST (captures[0]), &tmp)
23123 : 9 : && tmp > 0 && pow2p_hwi (tmp)
23124 : : )
23125 : : {
23126 : 8 : gimple_seq *lseq = seq;
23127 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2687;
23128 : 8 : {
23129 : 8 : res_op->set_op (CFN_BUILT_IN_LDEXPL, type, 2);
23130 : 8 : res_op->ops[0] = build_one_cst (type);
23131 : 8 : {
23132 : 8 : tree _o1[2], _r1;
23133 : 8 : _o1[0] = captures[1];
23134 : 8 : _o1[1] = build_int_cst (integer_type_node,
23135 : 16 : exact_log2 (tmp));
23136 : 8 : gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
23137 : 8 : tem_op.resimplify (lseq, valueize);
23138 : 8 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23139 : 8 : if (!_r1) goto next_after_fail2687;
23140 : 7 : res_op->ops[1] = _r1;
23141 : : }
23142 : 7 : res_op->resimplify (lseq, valueize);
23143 : 7 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1198, __FILE__, __LINE__, true);
23144 : 7 : return true;
23145 : : }
23146 : 2 : next_after_fail2687:;
23147 : : }
23148 : : }
23149 : : }
23150 : : }
23151 : 18 : break;
23152 : : }
23153 : 83 : default:;
23154 : : }
23155 : 83 : if (real_zerop (_p0))
23156 : : {
23157 : 1 : {
23158 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23159 : 1 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
23160 : : )
23161 : : {
23162 : 1 : if (! HONOR_INFINITIES (type) && ! flag_trapping_math
23163 : : )
23164 : : {
23165 : 1 : if (! HONOR_NANS (type) && ! HONOR_SIGNED_ZEROS (type)
23166 : : )
23167 : : {
23168 : 1 : gimple_seq *lseq = seq;
23169 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2688;
23170 : 1 : {
23171 : 1 : tree tem;
23172 : 1 : tem = captures[0];
23173 : 1 : res_op->set_value (tem);
23174 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1199, __FILE__, __LINE__, true);
23175 : 1 : return true;
23176 : : }
23177 : 0 : next_after_fail2688:;
23178 : : }
23179 : : }
23180 : : }
23181 : : }
23182 : : }
23183 : 82 : if (real_onep (_p0))
23184 : : {
23185 : 0 : {
23186 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23187 : 0 : if (gimple_simplify_531 (res_op, seq, valueize, type, captures))
23188 : 0 : return true;
23189 : : }
23190 : : }
23191 : 82 : switch (TREE_CODE (_p1))
23192 : : {
23193 : 32 : case INTEGER_CST:
23194 : 32 : {
23195 : 32 : {
23196 : 32 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
23197 : 32 : if (wi::to_wide (captures[1]) == 0
23198 : : )
23199 : : {
23200 : 1 : gimple_seq *lseq = seq;
23201 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2689;
23202 : 1 : {
23203 : 1 : tree tem;
23204 : 1 : tem = build_real (type, dconst1);
23205 : 1 : res_op->set_value (tem);
23206 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1200, __FILE__, __LINE__, true);
23207 : 1 : return true;
23208 : : }
23209 : 0 : next_after_fail2689:;
23210 : : }
23211 : : else
23212 : : {
23213 : 31 : if (wi::to_wide (captures[1]) == 1
23214 : : )
23215 : : {
23216 : 1 : gimple_seq *lseq = seq;
23217 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2690;
23218 : 1 : {
23219 : 1 : tree tem;
23220 : 1 : tem = captures[0];
23221 : 1 : res_op->set_value (tem);
23222 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1201, __FILE__, __LINE__, true);
23223 : 1 : return true;
23224 : : }
23225 : 0 : next_after_fail2690:;
23226 : : }
23227 : : else
23228 : : {
23229 : 30 : if (wi::to_wide (captures[1]) == -1
23230 : : )
23231 : : {
23232 : 1 : gimple_seq *lseq = seq;
23233 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2691;
23234 : 1 : {
23235 : 1 : res_op->set_op (RDIV_EXPR, type, 2);
23236 : 1 : res_op->ops[0] = build_real (type, dconst1);
23237 : 1 : res_op->ops[1] = captures[0];
23238 : 1 : res_op->resimplify (lseq, valueize);
23239 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1202, __FILE__, __LINE__, true);
23240 : 1 : return true;
23241 : : }
23242 : 0 : next_after_fail2691:;
23243 : : }
23244 : : }
23245 : : }
23246 : : }
23247 : 29 : break;
23248 : : }
23249 : : default:;
23250 : : }
23251 : : return false;
23252 : : }
23253 : :
23254 : : bool
23255 : 9534757 : gimple_simplify_BIT_AND_EXPR (gimple_match_op *res_op, gimple_seq *seq,
23256 : : tree (*valueize)(tree) ATTRIBUTE_UNUSED,
23257 : : code_helper ARG_UNUSED (code), tree ARG_UNUSED (type), tree _p0, tree _p1)
23258 : : {
23259 : 9534757 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
23260 : 9534757 : switch (TREE_CODE (_p0))
23261 : : {
23262 : 9439989 : case SSA_NAME:
23263 : 9439989 : if (gimple *_d1 = get_def (valueize, _p0))
23264 : : {
23265 : 6380425 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23266 : 6893883 : switch (gimple_assign_rhs_code (_a1))
23267 : : {
23268 : 77777 : case LSHIFT_EXPR:
23269 : 77777 : {
23270 : 77777 : tree _q20 = gimple_assign_rhs1 (_a1);
23271 : 77777 : _q20 = do_valueize (valueize, _q20);
23272 : 77777 : tree _q21 = gimple_assign_rhs2 (_a1);
23273 : 77777 : _q21 = do_valueize (valueize, _q21);
23274 : 77777 : switch (TREE_CODE (_p1))
23275 : : {
23276 : 21727 : case SSA_NAME:
23277 : 21727 : if (gimple *_d2 = get_def (valueize, _p1))
23278 : : {
23279 : 21133 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23280 : 35874 : switch (gimple_assign_rhs_code (_a2))
23281 : : {
23282 : 22 : case LSHIFT_EXPR:
23283 : 22 : {
23284 : 22 : tree _q50 = gimple_assign_rhs1 (_a2);
23285 : 22 : _q50 = do_valueize (valueize, _q50);
23286 : 22 : tree _q51 = gimple_assign_rhs2 (_a2);
23287 : 22 : _q51 = do_valueize (valueize, _q51);
23288 : 22 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
23289 : : {
23290 : 3 : {
23291 : 3 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
23292 : 3 : if (gimple_simplify_4 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
23293 : 0 : return true;
23294 : : }
23295 : : }
23296 : : break;
23297 : : }
23298 : : default:;
23299 : : }
23300 : : }
23301 : : break;
23302 : : default:;
23303 : : }
23304 : : break;
23305 : : }
23306 : 234686 : case RSHIFT_EXPR:
23307 : 234686 : {
23308 : 234686 : tree _q20 = gimple_assign_rhs1 (_a1);
23309 : 234686 : _q20 = do_valueize (valueize, _q20);
23310 : 234686 : tree _q21 = gimple_assign_rhs2 (_a1);
23311 : 234686 : _q21 = do_valueize (valueize, _q21);
23312 : 234686 : switch (TREE_CODE (_p1))
23313 : : {
23314 : 5902 : case SSA_NAME:
23315 : 5902 : if (gimple *_d2 = get_def (valueize, _p1))
23316 : : {
23317 : 5626 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23318 : 5027 : switch (gimple_assign_rhs_code (_a2))
23319 : : {
23320 : 80 : case RSHIFT_EXPR:
23321 : 80 : {
23322 : 80 : tree _q50 = gimple_assign_rhs1 (_a2);
23323 : 80 : _q50 = do_valueize (valueize, _q50);
23324 : 80 : tree _q51 = gimple_assign_rhs2 (_a2);
23325 : 80 : _q51 = do_valueize (valueize, _q51);
23326 : 80 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
23327 : : {
23328 : 60 : {
23329 : 60 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
23330 : 60 : if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
23331 : 19 : return true;
23332 : : }
23333 : : }
23334 : : break;
23335 : : }
23336 : : default:;
23337 : : }
23338 : : }
23339 : : break;
23340 : : default:;
23341 : : }
23342 : : break;
23343 : : }
23344 : 456300 : CASE_CONVERT:
23345 : 456300 : {
23346 : 456300 : tree _q20 = gimple_assign_rhs1 (_a1);
23347 : 456300 : _q20 = do_valueize (valueize, _q20);
23348 : 456300 : switch (TREE_CODE (_p1))
23349 : : {
23350 : 87567 : case SSA_NAME:
23351 : 87567 : if (gimple *_d2 = get_def (valueize, _p1))
23352 : : {
23353 : 84946 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23354 : 62356 : switch (gimple_assign_rhs_code (_a2))
23355 : : {
23356 : 25270 : CASE_CONVERT:
23357 : 25270 : {
23358 : 25270 : tree _q40 = gimple_assign_rhs1 (_a2);
23359 : 25270 : _q40 = do_valueize (valueize, _q40);
23360 : 25270 : {
23361 : 25270 : tree _q40_pops[1];
23362 : 25270 : if (gimple_maybe_bit_not (_q40, _q40_pops, valueize))
23363 : : {
23364 : 1638 : tree _q50 = _q40_pops[0];
23365 : 1638 : {
23366 : 1638 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
23367 : 1638 : if (gimple_simplify_543 (res_op, seq, valueize, type, captures))
23368 : 2 : return true;
23369 : : }
23370 : : }
23371 : : }
23372 : 25268 : break;
23373 : : }
23374 : : default:;
23375 : : }
23376 : : }
23377 : : break;
23378 : 456298 : default:;
23379 : : }
23380 : 456298 : {
23381 : 456298 : tree _q20_pops[1];
23382 : 456298 : if (gimple_maybe_bit_not (_q20, _q20_pops, valueize))
23383 : : {
23384 : 9764 : tree _q30 = _q20_pops[0];
23385 : 9764 : switch (TREE_CODE (_p1))
23386 : : {
23387 : 8020 : case SSA_NAME:
23388 : 8020 : if (gimple *_d2 = get_def (valueize, _p1))
23389 : : {
23390 : 7228 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23391 : 5221 : switch (gimple_assign_rhs_code (_a2))
23392 : : {
23393 : 1364 : CASE_CONVERT:
23394 : 1364 : {
23395 : 1364 : tree _q50 = gimple_assign_rhs1 (_a2);
23396 : 1364 : _q50 = do_valueize (valueize, _q50);
23397 : 1364 : {
23398 : 1364 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
23399 : 1364 : if (gimple_simplify_543 (res_op, seq, valueize, type, captures))
23400 : 0 : return true;
23401 : : }
23402 : 1364 : break;
23403 : : }
23404 : : default:;
23405 : : }
23406 : : }
23407 : : break;
23408 : : default:;
23409 : : }
23410 : : }
23411 : : }
23412 : 456298 : break;
23413 : : }
23414 : : default:;
23415 : : }
23416 : : }
23417 : : break;
23418 : 9534736 : default:;
23419 : : }
23420 : 9534736 : {
23421 : 9534736 : tree _p1_pops[1];
23422 : 9534736 : if (gimple_maybe_bit_not (_p1, _p1_pops, valueize))
23423 : : {
23424 : 8068575 : tree _q30 = _p1_pops[0];
23425 : 8068575 : {
23426 : 8068575 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
23427 : 8068575 : if (gimple_simplify_543 (res_op, seq, valueize, type, captures))
23428 : 1742 : return true;
23429 : : }
23430 : : }
23431 : : }
23432 : 9532994 : {
23433 : 9532994 : tree _p0_pops[1];
23434 : 9532994 : if (gimple_maybe_bit_not (_p0, _p0_pops, valueize))
23435 : : {
23436 : 1835232 : tree _q20 = _p0_pops[0];
23437 : 1835232 : {
23438 : 1835232 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
23439 : 1835232 : if (gimple_simplify_543 (res_op, seq, valueize, type, captures))
23440 : 0 : return true;
23441 : : }
23442 : : }
23443 : : }
23444 : 9532994 : switch (TREE_CODE (_p1))
23445 : : {
23446 : 3224201 : case SSA_NAME:
23447 : 3224201 : if (gimple *_d1 = get_def (valueize, _p1))
23448 : : {
23449 : 2558477 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23450 : 2465528 : switch (gimple_assign_rhs_code (_a1))
23451 : : {
23452 : 91646 : case PLUS_EXPR:
23453 : 91646 : {
23454 : 91646 : tree _q30 = gimple_assign_rhs1 (_a1);
23455 : 91646 : _q30 = do_valueize (valueize, _q30);
23456 : 91646 : tree _q31 = gimple_assign_rhs2 (_a1);
23457 : 91646 : _q31 = do_valueize (valueize, _q31);
23458 : 91646 : if (tree_swap_operands_p (_q30, _q31))
23459 : 5529 : std::swap (_q30, _q31);
23460 : 91646 : switch (TREE_CODE (_q30))
23461 : : {
23462 : 91646 : case SSA_NAME:
23463 : 91646 : if (gimple *_d2 = get_def (valueize, _q30))
23464 : : {
23465 : 85404 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23466 : 83196 : switch (gimple_assign_rhs_code (_a2))
23467 : : {
23468 : 3678 : case LSHIFT_EXPR:
23469 : 3678 : {
23470 : 3678 : tree _q40 = gimple_assign_rhs1 (_a2);
23471 : 3678 : _q40 = do_valueize (valueize, _q40);
23472 : 3678 : tree _q41 = gimple_assign_rhs2 (_a2);
23473 : 3678 : _q41 = do_valueize (valueize, _q41);
23474 : 3678 : if (integer_onep (_q40))
23475 : : {
23476 : 3622 : if (integer_minus_onep (_q31))
23477 : : {
23478 : 3568 : {
23479 : 3568 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q41 };
23480 : 3568 : if (TYPE_UNSIGNED (type)
23481 : : )
23482 : : {
23483 : 3229 : gimple_seq *lseq = seq;
23484 : 3229 : if (lseq
23485 : 1326 : && (!single_use (captures[1])
23486 : 437 : || !single_use (captures[2])))
23487 : 2902 : lseq = NULL;
23488 : 3229 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2708;
23489 : 3229 : {
23490 : 3229 : res_op->set_op (BIT_AND_EXPR, type, 2);
23491 : 3229 : res_op->ops[0] = captures[0];
23492 : 3229 : {
23493 : 3229 : tree _o1[1], _r1;
23494 : 3229 : {
23495 : 3229 : tree _o2[2], _r2;
23496 : 3229 : _o2[0] = build_all_ones_cst (type);
23497 : 3229 : _o2[1] = captures[3];
23498 : 3229 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
23499 : 3229 : tem_op.resimplify (lseq, valueize);
23500 : 3229 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
23501 : 3229 : if (!_r2) goto next_after_fail2708;
23502 : 327 : _o1[0] = _r2;
23503 : : }
23504 : 327 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
23505 : 327 : tem_op.resimplify (lseq, valueize);
23506 : 327 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23507 : 327 : if (!_r1) goto next_after_fail2708;
23508 : 327 : res_op->ops[1] = _r1;
23509 : : }
23510 : 327 : res_op->resimplify (lseq, valueize);
23511 : 327 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1205, __FILE__, __LINE__, true);
23512 : 327 : return true;
23513 : : }
23514 : 3241 : next_after_fail2708:;
23515 : : }
23516 : : }
23517 : : }
23518 : : }
23519 : : break;
23520 : : }
23521 : : default:;
23522 : : }
23523 : : }
23524 : : break;
23525 : : default:;
23526 : : }
23527 : 9532667 : break;
23528 : : }
23529 : : default:;
23530 : : }
23531 : : }
23532 : : break;
23533 : 9532667 : default:;
23534 : : }
23535 : 9532667 : switch (TREE_CODE (_p0))
23536 : : {
23537 : 9437899 : case SSA_NAME:
23538 : 9437899 : if (gimple *_d1 = get_def (valueize, _p0))
23539 : : {
23540 : 6378439 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
23541 : 6891857 : switch (gimple_assign_rhs_code (_a1))
23542 : : {
23543 : 394644 : case PLUS_EXPR:
23544 : 394644 : {
23545 : 394644 : tree _q20 = gimple_assign_rhs1 (_a1);
23546 : 394644 : _q20 = do_valueize (valueize, _q20);
23547 : 394644 : tree _q21 = gimple_assign_rhs2 (_a1);
23548 : 394644 : _q21 = do_valueize (valueize, _q21);
23549 : 394644 : if (tree_swap_operands_p (_q20, _q21))
23550 : 12509 : std::swap (_q20, _q21);
23551 : 394644 : switch (TREE_CODE (_q20))
23552 : : {
23553 : 394644 : case SSA_NAME:
23554 : 394644 : if (gimple *_d2 = get_def (valueize, _q20))
23555 : : {
23556 : 375654 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23557 : 338760 : switch (gimple_assign_rhs_code (_a2))
23558 : : {
23559 : 6555 : case LSHIFT_EXPR:
23560 : 6555 : {
23561 : 6555 : tree _q30 = gimple_assign_rhs1 (_a2);
23562 : 6555 : _q30 = do_valueize (valueize, _q30);
23563 : 6555 : tree _q31 = gimple_assign_rhs2 (_a2);
23564 : 6555 : _q31 = do_valueize (valueize, _q31);
23565 : 6555 : if (integer_onep (_q30))
23566 : : {
23567 : 5248 : if (integer_minus_onep (_q21))
23568 : : {
23569 : 4647 : {
23570 : 4647 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p0, _q20, _q31 };
23571 : 4647 : if (TYPE_UNSIGNED (type)
23572 : : )
23573 : : {
23574 : 3733 : gimple_seq *lseq = seq;
23575 : 3733 : if (lseq
23576 : 1089 : && (!single_use (captures[1])
23577 : 187 : || !single_use (captures[2])))
23578 : 3590 : lseq = NULL;
23579 : 3733 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2709;
23580 : 3733 : {
23581 : 3733 : res_op->set_op (BIT_AND_EXPR, type, 2);
23582 : 3733 : res_op->ops[0] = captures[0];
23583 : 3733 : {
23584 : 3733 : tree _o1[1], _r1;
23585 : 3733 : {
23586 : 3733 : tree _o2[2], _r2;
23587 : 3733 : _o2[0] = build_all_ones_cst (type);
23588 : 3733 : _o2[1] = captures[3];
23589 : 3733 : gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
23590 : 3733 : tem_op.resimplify (lseq, valueize);
23591 : 3733 : _r2 = maybe_push_res_to_seq (&tem_op, lseq);
23592 : 3733 : if (!_r2) goto next_after_fail2709;
23593 : 143 : _o1[0] = _r2;
23594 : : }
23595 : 143 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
23596 : 143 : tem_op.resimplify (lseq, valueize);
23597 : 143 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
23598 : 143 : if (!_r1) goto next_after_fail2709;
23599 : 143 : res_op->ops[1] = _r1;
23600 : : }
23601 : 143 : res_op->resimplify (lseq, valueize);
23602 : 143 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1205, __FILE__, __LINE__, true);
23603 : 143 : return true;
23604 : : }
23605 : 4504 : next_after_fail2709:;
23606 : : }
23607 : : }
23608 : : }
23609 : : }
23610 : : break;
23611 : : }
23612 : : default:;
23613 : : }
23614 : : }
23615 : : break;
23616 : : default:;
23617 : : }
23618 : 9532095 : break;
23619 : : }
23620 : 464127 : case EQ_EXPR:
23621 : 464127 : {
23622 : 464127 : tree _q20 = gimple_assign_rhs1 (_a1);
23623 : 464127 : _q20 = do_valueize (valueize, _q20);
23624 : 464127 : tree _q21 = gimple_assign_rhs2 (_a1);
23625 : 464127 : _q21 = do_valueize (valueize, _q21);
23626 : 464127 : if (tree_swap_operands_p (_q20, _q21))
23627 : 8646 : std::swap (_q20, _q21);
23628 : 464127 : if (integer_zerop (_q21))
23629 : : {
23630 : 128840 : switch (TREE_CODE (_p1))
23631 : : {
23632 : 125402 : case SSA_NAME:
23633 : 125402 : if (gimple *_d2 = get_def (valueize, _p1))
23634 : : {
23635 : 124607 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23636 : 124327 : switch (gimple_assign_rhs_code (_a2))
23637 : : {
23638 : 38510 : case EQ_EXPR:
23639 : 38510 : {
23640 : 38510 : tree _q50 = gimple_assign_rhs1 (_a2);
23641 : 38510 : _q50 = do_valueize (valueize, _q50);
23642 : 38510 : tree _q51 = gimple_assign_rhs2 (_a2);
23643 : 38510 : _q51 = do_valueize (valueize, _q51);
23644 : 38510 : if (tree_swap_operands_p (_q50, _q51))
23645 : 139 : std::swap (_q50, _q51);
23646 : 38510 : if (integer_zerop (_q51))
23647 : : {
23648 : 20130 : {
23649 : 20130 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
23650 : 20130 : if (gimple_simplify_115 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, EQ_EXPR))
23651 : 382 : return true;
23652 : : }
23653 : : }
23654 : 463745 : break;
23655 : : }
23656 : : default:;
23657 : : }
23658 : : }
23659 : : break;
23660 : : default:;
23661 : : }
23662 : : }
23663 : 463745 : if (integer_all_onesp (_q21))
23664 : : {
23665 : 27305 : switch (TREE_CODE (_p1))
23666 : : {
23667 : 26539 : case SSA_NAME:
23668 : 26539 : if (gimple *_d2 = get_def (valueize, _p1))
23669 : : {
23670 : 26517 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23671 : 25185 : switch (gimple_assign_rhs_code (_a2))
23672 : : {
23673 : 16807 : case EQ_EXPR:
23674 : 16807 : {
23675 : 16807 : tree _q50 = gimple_assign_rhs1 (_a2);
23676 : 16807 : _q50 = do_valueize (valueize, _q50);
23677 : 16807 : tree _q51 = gimple_assign_rhs2 (_a2);
23678 : 16807 : _q51 = do_valueize (valueize, _q51);
23679 : 16807 : if (tree_swap_operands_p (_q50, _q51))
23680 : 2135 : std::swap (_q50, _q51);
23681 : 16807 : if (integer_all_onesp (_q51))
23682 : : {
23683 : 553 : {
23684 : 553 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
23685 : 553 : if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, EQ_EXPR))
23686 : 23 : return true;
23687 : : }
23688 : : }
23689 : 463722 : break;
23690 : : }
23691 : : default:;
23692 : : }
23693 : : }
23694 : : break;
23695 : : default:;
23696 : : }
23697 : : }
23698 : 463722 : switch (TREE_CODE (_p1))
23699 : : {
23700 : 452102 : case SSA_NAME:
23701 : 452102 : if (gimple *_d2 = get_def (valueize, _p1))
23702 : : {
23703 : 449834 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23704 : 445879 : switch (gimple_assign_rhs_code (_a2))
23705 : : {
23706 : 244 : case BIT_IOR_EXPR:
23707 : 244 : {
23708 : 244 : tree _q50 = gimple_assign_rhs1 (_a2);
23709 : 244 : _q50 = do_valueize (valueize, _q50);
23710 : 244 : tree _q51 = gimple_assign_rhs2 (_a2);
23711 : 244 : _q51 = do_valueize (valueize, _q51);
23712 : 244 : if (tree_swap_operands_p (_q50, _q51))
23713 : 10 : std::swap (_q50, _q51);
23714 : 244 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
23715 : : {
23716 : 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
23717 : : {
23718 : 1 : {
23719 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23720 : 1 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
23721 : 1 : return true;
23722 : : }
23723 : : }
23724 : : }
23725 : 243 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
23726 : : {
23727 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
23728 : : {
23729 : 0 : {
23730 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
23731 : 0 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
23732 : 0 : return true;
23733 : : }
23734 : : }
23735 : : }
23736 : 463721 : break;
23737 : : }
23738 : : default:;
23739 : : }
23740 : : }
23741 : : break;
23742 : 463721 : default:;
23743 : : }
23744 : 463721 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
23745 : : {
23746 : 1 : {
23747 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23748 : 1 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
23749 : 1 : return true;
23750 : : }
23751 : : }
23752 : 463720 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
23753 : : {
23754 : 0 : {
23755 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
23756 : 0 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
23757 : 0 : return true;
23758 : : }
23759 : : }
23760 : 9532095 : break;
23761 : : }
23762 : 158038 : case BIT_IOR_EXPR:
23763 : 158038 : {
23764 : 158038 : tree _q20 = gimple_assign_rhs1 (_a1);
23765 : 158038 : _q20 = do_valueize (valueize, _q20);
23766 : 158038 : tree _q21 = gimple_assign_rhs2 (_a1);
23767 : 158038 : _q21 = do_valueize (valueize, _q21);
23768 : 158038 : if (tree_swap_operands_p (_q20, _q21))
23769 : 8908 : std::swap (_q20, _q21);
23770 : 158038 : switch (TREE_CODE (_p1))
23771 : : {
23772 : 123007 : case SSA_NAME:
23773 : 123007 : if (gimple *_d2 = get_def (valueize, _p1))
23774 : : {
23775 : 118560 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23776 : 112030 : switch (gimple_assign_rhs_code (_a2))
23777 : : {
23778 : 102713 : case BIT_NOT_EXPR:
23779 : 102713 : {
23780 : 102713 : tree _q50 = gimple_assign_rhs1 (_a2);
23781 : 102713 : _q50 = do_valueize (valueize, _q50);
23782 : 102713 : switch (TREE_CODE (_q50))
23783 : : {
23784 : 102713 : case SSA_NAME:
23785 : 102713 : if (gimple *_d3 = get_def (valueize, _q50))
23786 : : {
23787 : 86739 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
23788 : 86064 : switch (gimple_assign_rhs_code (_a3))
23789 : : {
23790 : 200 : case BIT_XOR_EXPR:
23791 : 200 : {
23792 : 200 : tree _q60 = gimple_assign_rhs1 (_a3);
23793 : 200 : _q60 = do_valueize (valueize, _q60);
23794 : 200 : tree _q61 = gimple_assign_rhs2 (_a3);
23795 : 200 : _q61 = do_valueize (valueize, _q61);
23796 : 200 : if (tree_swap_operands_p (_q60, _q61))
23797 : 5 : std::swap (_q60, _q61);
23798 : 200 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
23799 : : {
23800 : 9 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
23801 : : {
23802 : 9 : {
23803 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23804 : 9 : if (gimple_simplify_546 (res_op, seq, valueize, type, captures))
23805 : 9 : return true;
23806 : : }
23807 : : }
23808 : : }
23809 : 191 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
23810 : : {
23811 : 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
23812 : : {
23813 : 0 : {
23814 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23815 : 0 : if (gimple_simplify_546 (res_op, seq, valueize, type, captures))
23816 : 0 : return true;
23817 : : }
23818 : : }
23819 : : }
23820 : 158026 : break;
23821 : : }
23822 : : default:;
23823 : : }
23824 : : }
23825 : : break;
23826 : : default:;
23827 : : }
23828 : : break;
23829 : : }
23830 : 134 : case EQ_EXPR:
23831 : 134 : {
23832 : 134 : tree _q50 = gimple_assign_rhs1 (_a2);
23833 : 134 : _q50 = do_valueize (valueize, _q50);
23834 : 134 : tree _q51 = gimple_assign_rhs2 (_a2);
23835 : 134 : _q51 = do_valueize (valueize, _q51);
23836 : 134 : if (tree_swap_operands_p (_q50, _q51))
23837 : 0 : std::swap (_q50, _q51);
23838 : 134 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
23839 : : {
23840 : 3 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
23841 : : {
23842 : 3 : {
23843 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23844 : 3 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
23845 : 3 : return true;
23846 : : }
23847 : : }
23848 : : }
23849 : 131 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
23850 : : {
23851 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
23852 : : {
23853 : 0 : {
23854 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23855 : 0 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
23856 : 0 : return true;
23857 : : }
23858 : : }
23859 : : }
23860 : 158026 : break;
23861 : : }
23862 : : default:;
23863 : : }
23864 : : }
23865 : : break;
23866 : 158026 : default:;
23867 : : }
23868 : 158026 : {
23869 : 158026 : tree _p1_pops[1];
23870 : 158026 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
23871 : : {
23872 : 401 : tree _q50 = _p1_pops[0];
23873 : 401 : switch (TREE_CODE (_q50))
23874 : : {
23875 : 401 : case SSA_NAME:
23876 : 401 : if (gimple *_d2 = get_def (valueize, _q50))
23877 : : {
23878 : 385 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23879 : 493 : switch (gimple_assign_rhs_code (_a2))
23880 : : {
23881 : 0 : case EQ_EXPR:
23882 : 0 : {
23883 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
23884 : 0 : _q60 = do_valueize (valueize, _q60);
23885 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
23886 : 0 : _q61 = do_valueize (valueize, _q61);
23887 : 0 : if (tree_swap_operands_p (_q60, _q61))
23888 : 0 : std::swap (_q60, _q61);
23889 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
23890 : : {
23891 : 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
23892 : : {
23893 : 0 : {
23894 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23895 : 0 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
23896 : 0 : return true;
23897 : : }
23898 : : }
23899 : : }
23900 : 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
23901 : : {
23902 : 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
23903 : : {
23904 : 0 : {
23905 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
23906 : 0 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
23907 : 0 : return true;
23908 : : }
23909 : : }
23910 : : }
23911 : 158026 : break;
23912 : : }
23913 : : default:;
23914 : : }
23915 : : }
23916 : : break;
23917 : : default:;
23918 : : }
23919 : : }
23920 : : }
23921 : 158026 : break;
23922 : : }
23923 : 64064 : case BIT_NOT_EXPR:
23924 : 64064 : {
23925 : 64064 : tree _q20 = gimple_assign_rhs1 (_a1);
23926 : 64064 : _q20 = do_valueize (valueize, _q20);
23927 : 64064 : switch (TREE_CODE (_q20))
23928 : : {
23929 : 64064 : case SSA_NAME:
23930 : 64064 : if (gimple *_d2 = get_def (valueize, _q20))
23931 : : {
23932 : 60088 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
23933 : 53354 : switch (gimple_assign_rhs_code (_a2))
23934 : : {
23935 : 1411 : case BIT_XOR_EXPR:
23936 : 1411 : {
23937 : 1411 : tree _q30 = gimple_assign_rhs1 (_a2);
23938 : 1411 : _q30 = do_valueize (valueize, _q30);
23939 : 1411 : tree _q31 = gimple_assign_rhs2 (_a2);
23940 : 1411 : _q31 = do_valueize (valueize, _q31);
23941 : 1411 : if (tree_swap_operands_p (_q30, _q31))
23942 : 5 : std::swap (_q30, _q31);
23943 : 1411 : switch (TREE_CODE (_p1))
23944 : : {
23945 : 1244 : case SSA_NAME:
23946 : 1244 : if (gimple *_d3 = get_def (valueize, _p1))
23947 : : {
23948 : 1180 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
23949 : 1036 : switch (gimple_assign_rhs_code (_a3))
23950 : : {
23951 : 736 : case BIT_IOR_EXPR:
23952 : 736 : {
23953 : 736 : tree _q60 = gimple_assign_rhs1 (_a3);
23954 : 736 : _q60 = do_valueize (valueize, _q60);
23955 : 736 : tree _q61 = gimple_assign_rhs2 (_a3);
23956 : 736 : _q61 = do_valueize (valueize, _q61);
23957 : 736 : if (tree_swap_operands_p (_q60, _q61))
23958 : 50 : std::swap (_q60, _q61);
23959 : 736 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
23960 : : {
23961 : 145 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
23962 : : {
23963 : 10 : {
23964 : 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
23965 : 10 : if (gimple_simplify_546 (res_op, seq, valueize, type, captures))
23966 : 10 : return true;
23967 : : }
23968 : : }
23969 : : }
23970 : 726 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
23971 : : {
23972 : 135 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
23973 : : {
23974 : 0 : {
23975 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
23976 : 0 : if (gimple_simplify_546 (res_op, seq, valueize, type, captures))
23977 : 0 : return true;
23978 : : }
23979 : : }
23980 : : }
23981 : 1401 : break;
23982 : : }
23983 : : default:;
23984 : : }
23985 : : }
23986 : : break;
23987 : 1401 : default:;
23988 : : }
23989 : 1401 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
23990 : : {
23991 : 0 : {
23992 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
23993 : 0 : if (gimple_simplify_547 (res_op, seq, valueize, type, captures))
23994 : 0 : return true;
23995 : : }
23996 : : }
23997 : 1401 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
23998 : : {
23999 : 0 : {
24000 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
24001 : 0 : if (gimple_simplify_547 (res_op, seq, valueize, type, captures))
24002 : 0 : return true;
24003 : : }
24004 : : }
24005 : 9532095 : break;
24006 : : }
24007 : : default:;
24008 : : }
24009 : : }
24010 : : break;
24011 : : default:;
24012 : : }
24013 : : break;
24014 : : }
24015 : : default:;
24016 : : }
24017 : : }
24018 : : break;
24019 : 9532095 : default:;
24020 : : }
24021 : 9532095 : {
24022 : 9532095 : tree _p0_pops[1];
24023 : 9532095 : if (gimple_nop_convert (_p0, _p0_pops, valueize))
24024 : : {
24025 : 109375 : tree _q20 = _p0_pops[0];
24026 : 109375 : switch (TREE_CODE (_q20))
24027 : : {
24028 : 108233 : case SSA_NAME:
24029 : 108233 : if (gimple *_d1 = get_def (valueize, _q20))
24030 : : {
24031 : 105765 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24032 : 106748 : switch (gimple_assign_rhs_code (_a1))
24033 : : {
24034 : 0 : case EQ_EXPR:
24035 : 0 : {
24036 : 0 : tree _q30 = gimple_assign_rhs1 (_a1);
24037 : 0 : _q30 = do_valueize (valueize, _q30);
24038 : 0 : tree _q31 = gimple_assign_rhs2 (_a1);
24039 : 0 : _q31 = do_valueize (valueize, _q31);
24040 : 0 : if (tree_swap_operands_p (_q30, _q31))
24041 : 0 : std::swap (_q30, _q31);
24042 : 0 : switch (TREE_CODE (_p1))
24043 : : {
24044 : 0 : case SSA_NAME:
24045 : 0 : if (gimple *_d2 = get_def (valueize, _p1))
24046 : : {
24047 : 0 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24048 : 0 : switch (gimple_assign_rhs_code (_a2))
24049 : : {
24050 : 0 : case BIT_IOR_EXPR:
24051 : 0 : {
24052 : 0 : tree _q60 = gimple_assign_rhs1 (_a2);
24053 : 0 : _q60 = do_valueize (valueize, _q60);
24054 : 0 : tree _q61 = gimple_assign_rhs2 (_a2);
24055 : 0 : _q61 = do_valueize (valueize, _q61);
24056 : 0 : if (tree_swap_operands_p (_q60, _q61))
24057 : 0 : std::swap (_q60, _q61);
24058 : 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
24059 : : {
24060 : 0 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
24061 : : {
24062 : 0 : {
24063 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
24064 : 0 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
24065 : 0 : return true;
24066 : : }
24067 : : }
24068 : : }
24069 : 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
24070 : : {
24071 : 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
24072 : : {
24073 : 0 : {
24074 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
24075 : 0 : if (gimple_simplify_544 (res_op, seq, valueize, type, captures))
24076 : 0 : return true;
24077 : : }
24078 : : }
24079 : : }
24080 : 0 : break;
24081 : : }
24082 : : default:;
24083 : : }
24084 : : }
24085 : : break;
24086 : 0 : default:;
24087 : : }
24088 : 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
24089 : : {
24090 : 0 : {
24091 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
24092 : 0 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
24093 : 0 : return true;
24094 : : }
24095 : : }
24096 : 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
24097 : : {
24098 : 0 : {
24099 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
24100 : 0 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
24101 : 0 : return true;
24102 : : }
24103 : : }
24104 : 9532095 : break;
24105 : : }
24106 : : default:;
24107 : : }
24108 : : }
24109 : : break;
24110 : : default:;
24111 : : }
24112 : : }
24113 : : }
24114 : 9532095 : switch (TREE_CODE (_p1))
24115 : : {
24116 : 3223305 : case SSA_NAME:
24117 : 3223305 : if (gimple *_d1 = get_def (valueize, _p1))
24118 : : {
24119 : 2557606 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24120 : 2464693 : switch (gimple_assign_rhs_code (_a1))
24121 : : {
24122 : 174525 : case BIT_NOT_EXPR:
24123 : 174525 : {
24124 : 174525 : tree _q30 = gimple_assign_rhs1 (_a1);
24125 : 174525 : _q30 = do_valueize (valueize, _q30);
24126 : 174525 : switch (TREE_CODE (_q30))
24127 : : {
24128 : 174525 : case SSA_NAME:
24129 : 174525 : if (gimple *_d2 = get_def (valueize, _q30))
24130 : : {
24131 : 149932 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24132 : 147395 : switch (gimple_assign_rhs_code (_a2))
24133 : : {
24134 : 2262 : case BIT_XOR_EXPR:
24135 : 2262 : {
24136 : 2262 : tree _q40 = gimple_assign_rhs1 (_a2);
24137 : 2262 : _q40 = do_valueize (valueize, _q40);
24138 : 2262 : tree _q41 = gimple_assign_rhs2 (_a2);
24139 : 2262 : _q41 = do_valueize (valueize, _q41);
24140 : 2262 : if (tree_swap_operands_p (_q40, _q41))
24141 : 24 : std::swap (_q40, _q41);
24142 : 2262 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
24143 : : {
24144 : 0 : {
24145 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
24146 : 0 : if (gimple_simplify_547 (res_op, seq, valueize, type, captures))
24147 : 0 : return true;
24148 : : }
24149 : : }
24150 : 2262 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
24151 : : {
24152 : 0 : {
24153 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
24154 : 0 : if (gimple_simplify_547 (res_op, seq, valueize, type, captures))
24155 : 0 : return true;
24156 : : }
24157 : : }
24158 : 9532095 : break;
24159 : : }
24160 : : default:;
24161 : : }
24162 : : }
24163 : : break;
24164 : : default:;
24165 : : }
24166 : : break;
24167 : : }
24168 : : default:;
24169 : : }
24170 : : }
24171 : : break;
24172 : 9532095 : default:;
24173 : : }
24174 : 9532095 : switch (TREE_CODE (_p0))
24175 : : {
24176 : 9437327 : case SSA_NAME:
24177 : 9437327 : if (gimple *_d1 = get_def (valueize, _p0))
24178 : : {
24179 : 6377867 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24180 : 6891285 : switch (gimple_assign_rhs_code (_a1))
24181 : : {
24182 : 394501 : case PLUS_EXPR:
24183 : 394501 : {
24184 : 394501 : tree _q20 = gimple_assign_rhs1 (_a1);
24185 : 394501 : _q20 = do_valueize (valueize, _q20);
24186 : 394501 : tree _q21 = gimple_assign_rhs2 (_a1);
24187 : 394501 : _q21 = do_valueize (valueize, _q21);
24188 : 394501 : if (tree_swap_operands_p (_q20, _q21))
24189 : 12509 : std::swap (_q20, _q21);
24190 : 394501 : if (integer_minus_onep (_q21))
24191 : : {
24192 : 54171 : switch (TREE_CODE (_p1))
24193 : : {
24194 : 41360 : case SSA_NAME:
24195 : 41360 : if (gimple *_d2 = get_def (valueize, _p1))
24196 : : {
24197 : 31344 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24198 : 27780 : switch (gimple_assign_rhs_code (_a2))
24199 : : {
24200 : 6790 : case NEGATE_EXPR:
24201 : 6790 : {
24202 : 6790 : tree _q50 = gimple_assign_rhs1 (_a2);
24203 : 6790 : _q50 = do_valueize (valueize, _q50);
24204 : 6790 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
24205 : : {
24206 : 123 : {
24207 : 123 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
24208 : 123 : if (gimple_simplify_9 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
24209 : 123 : return true;
24210 : : }
24211 : : }
24212 : : break;
24213 : : }
24214 : : default:;
24215 : : }
24216 : : }
24217 : : break;
24218 : : default:;
24219 : : }
24220 : : }
24221 : 9531951 : break;
24222 : : }
24223 : 45750 : case NEGATE_EXPR:
24224 : 45750 : {
24225 : 45750 : tree _q20 = gimple_assign_rhs1 (_a1);
24226 : 45750 : _q20 = do_valueize (valueize, _q20);
24227 : 45750 : switch (TREE_CODE (_p1))
24228 : : {
24229 : 5878 : case SSA_NAME:
24230 : 5878 : if (gimple *_d2 = get_def (valueize, _p1))
24231 : : {
24232 : 5500 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24233 : 4488 : switch (gimple_assign_rhs_code (_a2))
24234 : : {
24235 : 1259 : case PLUS_EXPR:
24236 : 1259 : {
24237 : 1259 : tree _q40 = gimple_assign_rhs1 (_a2);
24238 : 1259 : _q40 = do_valueize (valueize, _q40);
24239 : 1259 : tree _q41 = gimple_assign_rhs2 (_a2);
24240 : 1259 : _q41 = do_valueize (valueize, _q41);
24241 : 1259 : if (tree_swap_operands_p (_q40, _q41))
24242 : 50 : std::swap (_q40, _q41);
24243 : 1259 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
24244 : : {
24245 : 285 : if (integer_minus_onep (_q41))
24246 : : {
24247 : 19 : {
24248 : 19 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
24249 : 19 : if (gimple_simplify_10 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
24250 : 19 : return true;
24251 : : }
24252 : : }
24253 : : }
24254 : 9531951 : break;
24255 : : }
24256 : 108 : case MINUS_EXPR:
24257 : 108 : {
24258 : 108 : tree _q40 = gimple_assign_rhs1 (_a2);
24259 : 108 : _q40 = do_valueize (valueize, _q40);
24260 : 108 : tree _q41 = gimple_assign_rhs2 (_a2);
24261 : 108 : _q41 = do_valueize (valueize, _q41);
24262 : 108 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
24263 : : {
24264 : 0 : if (integer_onep (_q41))
24265 : : {
24266 : 0 : {
24267 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
24268 : 0 : if (gimple_simplify_11 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
24269 : 0 : return true;
24270 : : }
24271 : : }
24272 : : }
24273 : : break;
24274 : : }
24275 : : default:;
24276 : : }
24277 : : }
24278 : : break;
24279 : : default:;
24280 : : }
24281 : : break;
24282 : : }
24283 : 19444 : case MINUS_EXPR:
24284 : 19444 : {
24285 : 19444 : tree _q20 = gimple_assign_rhs1 (_a1);
24286 : 19444 : _q20 = do_valueize (valueize, _q20);
24287 : 19444 : tree _q21 = gimple_assign_rhs2 (_a1);
24288 : 19444 : _q21 = do_valueize (valueize, _q21);
24289 : 19444 : if (integer_onep (_q21))
24290 : : {
24291 : 11 : switch (TREE_CODE (_p1))
24292 : : {
24293 : 3 : case SSA_NAME:
24294 : 3 : if (gimple *_d2 = get_def (valueize, _p1))
24295 : : {
24296 : 3 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24297 : 4 : switch (gimple_assign_rhs_code (_a2))
24298 : : {
24299 : 2 : case NEGATE_EXPR:
24300 : 2 : {
24301 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
24302 : 2 : _q50 = do_valueize (valueize, _q50);
24303 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
24304 : : {
24305 : 2 : {
24306 : 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
24307 : 2 : if (gimple_simplify_12 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
24308 : 2 : return true;
24309 : : }
24310 : : }
24311 : : break;
24312 : : }
24313 : : default:;
24314 : : }
24315 : : }
24316 : : break;
24317 : : default:;
24318 : : }
24319 : : }
24320 : : break;
24321 : : }
24322 : : default:;
24323 : : }
24324 : : }
24325 : : break;
24326 : 9531951 : default:;
24327 : : }
24328 : 9531951 : switch (TREE_CODE (_p1))
24329 : : {
24330 : 3223161 : case SSA_NAME:
24331 : 3223161 : if (gimple *_d1 = get_def (valueize, _p1))
24332 : : {
24333 : 2557462 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24334 : 2464549 : switch (gimple_assign_rhs_code (_a1))
24335 : : {
24336 : 423788 : case EQ_EXPR:
24337 : 423788 : {
24338 : 423788 : tree _q30 = gimple_assign_rhs1 (_a1);
24339 : 423788 : _q30 = do_valueize (valueize, _q30);
24340 : 423788 : tree _q31 = gimple_assign_rhs2 (_a1);
24341 : 423788 : _q31 = do_valueize (valueize, _q31);
24342 : 423788 : if (tree_swap_operands_p (_q30, _q31))
24343 : 3358 : std::swap (_q30, _q31);
24344 : 423788 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
24345 : : {
24346 : 0 : {
24347 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
24348 : 0 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
24349 : 0 : return true;
24350 : : }
24351 : : }
24352 : 423788 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
24353 : : {
24354 : 0 : {
24355 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
24356 : 0 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
24357 : 0 : return true;
24358 : : }
24359 : : }
24360 : 9531951 : break;
24361 : : }
24362 : 17940 : case BIT_XOR_EXPR:
24363 : 17940 : {
24364 : 17940 : tree _q30 = gimple_assign_rhs1 (_a1);
24365 : 17940 : _q30 = do_valueize (valueize, _q30);
24366 : 17940 : tree _q31 = gimple_assign_rhs2 (_a1);
24367 : 17940 : _q31 = do_valueize (valueize, _q31);
24368 : 17940 : if (tree_swap_operands_p (_q30, _q31))
24369 : 669 : std::swap (_q30, _q31);
24370 : 17940 : {
24371 : 17940 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
24372 : 17940 : if (gimple_simplify_548 (res_op, seq, valueize, type, captures))
24373 : 0 : return true;
24374 : : }
24375 : 17940 : {
24376 : 17940 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q30 };
24377 : 17940 : if (gimple_simplify_548 (res_op, seq, valueize, type, captures))
24378 : 0 : return true;
24379 : : }
24380 : 17940 : break;
24381 : : }
24382 : : default:;
24383 : : }
24384 : : }
24385 : : break;
24386 : 9531951 : default:;
24387 : : }
24388 : 9531951 : {
24389 : 9531951 : tree _p1_pops[1];
24390 : 9531951 : if (gimple_nop_convert (_p1, _p1_pops, valueize))
24391 : : {
24392 : 73649 : tree _q30 = _p1_pops[0];
24393 : 73649 : switch (TREE_CODE (_q30))
24394 : : {
24395 : 73617 : case SSA_NAME:
24396 : 73617 : if (gimple *_d1 = get_def (valueize, _q30))
24397 : : {
24398 : 71885 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24399 : 56200 : switch (gimple_assign_rhs_code (_a1))
24400 : : {
24401 : 36 : case EQ_EXPR:
24402 : 36 : {
24403 : 36 : tree _q40 = gimple_assign_rhs1 (_a1);
24404 : 36 : _q40 = do_valueize (valueize, _q40);
24405 : 36 : tree _q41 = gimple_assign_rhs2 (_a1);
24406 : 36 : _q41 = do_valueize (valueize, _q41);
24407 : 36 : if (tree_swap_operands_p (_q40, _q41))
24408 : 0 : std::swap (_q40, _q41);
24409 : 36 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
24410 : : {
24411 : 0 : {
24412 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
24413 : 0 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
24414 : 0 : return true;
24415 : : }
24416 : : }
24417 : 36 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
24418 : : {
24419 : 0 : {
24420 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
24421 : 0 : if (gimple_simplify_545 (res_op, seq, valueize, type, captures))
24422 : 0 : return true;
24423 : : }
24424 : : }
24425 : 9531951 : break;
24426 : : }
24427 : : default:;
24428 : : }
24429 : : }
24430 : : break;
24431 : : default:;
24432 : : }
24433 : : }
24434 : : }
24435 : 9531951 : switch (TREE_CODE (_p0))
24436 : : {
24437 : 9437183 : case SSA_NAME:
24438 : 9437183 : if (gimple *_d1 = get_def (valueize, _p0))
24439 : : {
24440 : 6377723 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
24441 : 6891141 : switch (gimple_assign_rhs_code (_a1))
24442 : : {
24443 : 87164 : case BIT_XOR_EXPR:
24444 : 87164 : {
24445 : 87164 : tree _q20 = gimple_assign_rhs1 (_a1);
24446 : 87164 : _q20 = do_valueize (valueize, _q20);
24447 : 87164 : tree _q21 = gimple_assign_rhs2 (_a1);
24448 : 87164 : _q21 = do_valueize (valueize, _q21);
24449 : 87164 : if (tree_swap_operands_p (_q20, _q21))
24450 : 4065 : std::swap (_q20, _q21);
24451 : 87164 : {
24452 : 87164 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
24453 : 87164 : if (gimple_simplify_548 (res_op, seq, valueize, type, captures))
24454 : 3 : return true;
24455 : : }
24456 : 87161 : {
24457 : 87161 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q21, _q20 };
24458 : 87161 : if (gimple_simplify_548 (res_op, seq, valueize, type, captures))
24459 : 28 : return true;
24460 : : }
24461 : 87133 : switch (TREE_CODE (_p1))
24462 : : {
24463 : 27086 : case SSA_NAME:
24464 : 27086 : if (gimple *_d2 = get_def (valueize, _p1))
24465 : : {
24466 : 18063 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24467 : 16937 : switch (gimple_assign_rhs_code (_a2))
24468 : : {
24469 : 1884 : case BIT_XOR_EXPR:
24470 : 1884 : {
24471 : 1884 : tree _q50 = gimple_assign_rhs1 (_a2);
24472 : 1884 : _q50 = do_valueize (valueize, _q50);
24473 : 1884 : tree _q51 = gimple_assign_rhs2 (_a2);
24474 : 1884 : _q51 = do_valueize (valueize, _q51);
24475 : 1884 : if (tree_swap_operands_p (_q50, _q51))
24476 : 110 : std::swap (_q50, _q51);
24477 : 1884 : switch (TREE_CODE (_q50))
24478 : : {
24479 : 1884 : case SSA_NAME:
24480 : 1884 : if (gimple *_d3 = get_def (valueize, _q50))
24481 : : {
24482 : 1543 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
24483 : 141 : switch (gimple_assign_rhs_code (_a3))
24484 : : {
24485 : 3 : case BIT_XOR_EXPR:
24486 : 3 : {
24487 : 3 : tree _q60 = gimple_assign_rhs1 (_a3);
24488 : 3 : _q60 = do_valueize (valueize, _q60);
24489 : 3 : tree _q61 = gimple_assign_rhs2 (_a3);
24490 : 3 : _q61 = do_valueize (valueize, _q61);
24491 : 3 : if (tree_swap_operands_p (_q60, _q61))
24492 : 1 : std::swap (_q60, _q61);
24493 : 3 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
24494 : : {
24495 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
24496 : : {
24497 : 0 : {
24498 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q61 };
24499 : 0 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24500 : 0 : return true;
24501 : : }
24502 : : }
24503 : : }
24504 : 3 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
24505 : : {
24506 : 3 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
24507 : : {
24508 : 0 : {
24509 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q60 };
24510 : 0 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24511 : 0 : return true;
24512 : : }
24513 : : }
24514 : : }
24515 : 3 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
24516 : : {
24517 : 3 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
24518 : : {
24519 : 0 : {
24520 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q61 };
24521 : 0 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24522 : 0 : return true;
24523 : : }
24524 : : }
24525 : : }
24526 : 3 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
24527 : : {
24528 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
24529 : : {
24530 : 0 : {
24531 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q60 };
24532 : 0 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24533 : 0 : return true;
24534 : : }
24535 : : }
24536 : : }
24537 : 1884 : break;
24538 : : }
24539 : : default:;
24540 : : }
24541 : : }
24542 : : break;
24543 : 1884 : default:;
24544 : : }
24545 : 1884 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
24546 : : {
24547 : 1105 : switch (TREE_CODE (_q51))
24548 : : {
24549 : 1105 : case SSA_NAME:
24550 : 1105 : if (gimple *_d3 = get_def (valueize, _q51))
24551 : : {
24552 : 1040 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
24553 : 29 : switch (gimple_assign_rhs_code (_a3))
24554 : : {
24555 : 2 : case BIT_XOR_EXPR:
24556 : 2 : {
24557 : 2 : tree _q70 = gimple_assign_rhs1 (_a3);
24558 : 2 : _q70 = do_valueize (valueize, _q70);
24559 : 2 : tree _q71 = gimple_assign_rhs2 (_a3);
24560 : 2 : _q71 = do_valueize (valueize, _q71);
24561 : 2 : if (tree_swap_operands_p (_q70, _q71))
24562 : 0 : std::swap (_q70, _q71);
24563 : 2 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
24564 : : {
24565 : 2 : {
24566 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q71 };
24567 : 2 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24568 : 1 : return true;
24569 : : }
24570 : : }
24571 : 1 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
24572 : : {
24573 : 0 : {
24574 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q70 };
24575 : 0 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24576 : 0 : return true;
24577 : : }
24578 : : }
24579 : 1883 : break;
24580 : : }
24581 : : default:;
24582 : : }
24583 : : }
24584 : : break;
24585 : : default:;
24586 : : }
24587 : : }
24588 : 1883 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
24589 : : {
24590 : 579 : switch (TREE_CODE (_q51))
24591 : : {
24592 : 579 : case SSA_NAME:
24593 : 579 : if (gimple *_d3 = get_def (valueize, _q51))
24594 : : {
24595 : 543 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
24596 : 15 : switch (gimple_assign_rhs_code (_a3))
24597 : : {
24598 : 2 : case BIT_XOR_EXPR:
24599 : 2 : {
24600 : 2 : tree _q70 = gimple_assign_rhs1 (_a3);
24601 : 2 : _q70 = do_valueize (valueize, _q70);
24602 : 2 : tree _q71 = gimple_assign_rhs2 (_a3);
24603 : 2 : _q71 = do_valueize (valueize, _q71);
24604 : 2 : if (tree_swap_operands_p (_q70, _q71))
24605 : 0 : std::swap (_q70, _q71);
24606 : 2 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
24607 : : {
24608 : 2 : {
24609 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q71 };
24610 : 2 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24611 : 1 : return true;
24612 : : }
24613 : : }
24614 : 1 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
24615 : : {
24616 : 0 : {
24617 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q70 };
24618 : 0 : if (gimple_simplify_549 (res_op, seq, valueize, type, captures))
24619 : 0 : return true;
24620 : : }
24621 : : }
24622 : 87131 : break;
24623 : : }
24624 : : default:;
24625 : : }
24626 : : }
24627 : : break;
24628 : : default:;
24629 : : }
24630 : : }
24631 : 87131 : break;
24632 : : }
24633 : : default:;
24634 : : }
24635 : : }
24636 : : break;
24637 : 87131 : default:;
24638 : : }
24639 : 87131 : switch (TREE_CODE (_q20))
24640 : : {
24641 : 87131 : case SSA_NAME:
24642 : 87131 : if (gimple *_d2 = get_def (valueize, _q20))
24643 : : {
24644 : 82508 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24645 : 124041 : switch (gimple_assign_rhs_code (_a2))
24646 : : {
24647 : 1797 : case BIT_XOR_EXPR:
24648 : 1797 : {
24649 : 1797 : tree _q30 = gimple_assign_rhs1 (_a2);
24650 : 1797 : _q30 = do_valueize (valueize, _q30);
24651 : 1797 : tree _q31 = gimple_assign_rhs2 (_a2);
24652 : 1797 : _q31 = do_valueize (valueize, _q31);
24653 : 1797 : if (tree_swap_operands_p (_q30, _q31))
24654 : 79 : std::swap (_q30, _q31);
24655 : 1797 : switch (TREE_CODE (_p1))
24656 : : {
24657 : 173 : case SSA_NAME:
24658 : 173 : if (gimple *_d3 = get_def (valueize, _p1))
24659 : : {
24660 : 173 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
24661 : 219 : switch (gimple_assign_rhs_code (_a3))
24662 : : {
24663 : 0 : case BIT_XOR_EXPR:
24664 : 0 : {
24665 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
24666 : 0 : _q70 = do_valueize (valueize, _q70);
24667 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
24668 : 0 : _q71 = do_valueize (valueize, _q71);
24669 : 0 : if (tree_swap_operands_p (_q70, _q71))
24670 : 0 : std::swap (_q70, _q71);
24671 : 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
24672 : : {
24673 : 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
24674 : : {
24675 : 0 : {
24676 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q30, _p0, _q20, _q31 };
24677 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24678 : 0 : return true;
24679 : : }
24680 : : }
24681 : 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
24682 : : {
24683 : 0 : {
24684 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q31, _p0, _q20, _q30 };
24685 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24686 : 0 : return true;
24687 : : }
24688 : : }
24689 : : }
24690 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
24691 : : {
24692 : 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
24693 : : {
24694 : 0 : {
24695 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q30, _p0, _q20, _q31 };
24696 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24697 : 0 : return true;
24698 : : }
24699 : : }
24700 : : }
24701 : 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
24702 : : {
24703 : 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
24704 : : {
24705 : 0 : {
24706 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q31, _p0, _q20, _q30 };
24707 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24708 : 0 : return true;
24709 : : }
24710 : : }
24711 : : }
24712 : 87131 : break;
24713 : : }
24714 : : default:;
24715 : : }
24716 : : }
24717 : : break;
24718 : : default:;
24719 : : }
24720 : 87131 : break;
24721 : : }
24722 : : default:;
24723 : : }
24724 : : }
24725 : : break;
24726 : 87131 : default:;
24727 : : }
24728 : 87131 : switch (TREE_CODE (_q21))
24729 : : {
24730 : 81164 : case SSA_NAME:
24731 : 81164 : if (gimple *_d2 = get_def (valueize, _q21))
24732 : : {
24733 : 77557 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24734 : 119322 : switch (gimple_assign_rhs_code (_a2))
24735 : : {
24736 : 2623 : case BIT_XOR_EXPR:
24737 : 2623 : {
24738 : 2623 : tree _q40 = gimple_assign_rhs1 (_a2);
24739 : 2623 : _q40 = do_valueize (valueize, _q40);
24740 : 2623 : tree _q41 = gimple_assign_rhs2 (_a2);
24741 : 2623 : _q41 = do_valueize (valueize, _q41);
24742 : 2623 : if (tree_swap_operands_p (_q40, _q41))
24743 : 324 : std::swap (_q40, _q41);
24744 : 2623 : switch (TREE_CODE (_p1))
24745 : : {
24746 : 265 : case SSA_NAME:
24747 : 265 : if (gimple *_d3 = get_def (valueize, _p1))
24748 : : {
24749 : 263 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
24750 : 385 : switch (gimple_assign_rhs_code (_a3))
24751 : : {
24752 : 0 : case BIT_XOR_EXPR:
24753 : 0 : {
24754 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
24755 : 0 : _q70 = do_valueize (valueize, _q70);
24756 : 0 : tree _q71 = gimple_assign_rhs2 (_a3);
24757 : 0 : _q71 = do_valueize (valueize, _q71);
24758 : 0 : if (tree_swap_operands_p (_q70, _q71))
24759 : 0 : std::swap (_q70, _q71);
24760 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
24761 : : {
24762 : 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
24763 : : {
24764 : 0 : {
24765 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q40, _p0, _q21, _q41 };
24766 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24767 : 0 : return true;
24768 : : }
24769 : : }
24770 : 0 : if ((_q71 == _q41 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q41, 0) && types_match (_q71, _q41)))
24771 : : {
24772 : 0 : {
24773 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q41, _p0, _q21, _q40 };
24774 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24775 : 0 : return true;
24776 : : }
24777 : : }
24778 : : }
24779 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
24780 : : {
24781 : 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
24782 : : {
24783 : 0 : {
24784 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q40, _p0, _q21, _q41 };
24785 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24786 : 0 : return true;
24787 : : }
24788 : : }
24789 : : }
24790 : 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
24791 : : {
24792 : 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
24793 : : {
24794 : 0 : {
24795 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q41, _p0, _q21, _q40 };
24796 : 0 : if (gimple_simplify_550 (res_op, seq, valueize, type, captures))
24797 : 0 : return true;
24798 : : }
24799 : : }
24800 : : }
24801 : 9529898 : break;
24802 : : }
24803 : : default:;
24804 : : }
24805 : : }
24806 : : break;
24807 : : default:;
24808 : : }
24809 : 9529898 : break;
24810 : : }
24811 : : default:;
24812 : : }
24813 : : }
24814 : : break;
24815 : : default:;
24816 : : }
24817 : 9529898 : break;
24818 : : }
24819 : 64054 : case BIT_NOT_EXPR:
24820 : 64054 : {
24821 : 64054 : tree _q20 = gimple_assign_rhs1 (_a1);
24822 : 64054 : _q20 = do_valueize (valueize, _q20);
24823 : 64054 : switch (TREE_CODE (_q20))
24824 : : {
24825 : 64054 : case SSA_NAME:
24826 : 64054 : if (gimple *_d2 = get_def (valueize, _q20))
24827 : : {
24828 : 60078 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24829 : 53344 : switch (gimple_assign_rhs_code (_a2))
24830 : : {
24831 : 676 : case BIT_AND_EXPR:
24832 : 676 : {
24833 : 676 : tree _q30 = gimple_assign_rhs1 (_a2);
24834 : 676 : _q30 = do_valueize (valueize, _q30);
24835 : 676 : tree _q31 = gimple_assign_rhs2 (_a2);
24836 : 676 : _q31 = do_valueize (valueize, _q31);
24837 : 676 : if (tree_swap_operands_p (_q30, _q31))
24838 : 32 : std::swap (_q30, _q31);
24839 : 676 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
24840 : : {
24841 : 0 : {
24842 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q20, _q31 };
24843 : 0 : if (gimple_simplify_131 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
24844 : 0 : return true;
24845 : : }
24846 : : }
24847 : 676 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
24848 : : {
24849 : 128 : {
24850 : 128 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q20, _q30 };
24851 : 128 : if (gimple_simplify_131 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
24852 : 0 : return true;
24853 : : }
24854 : : }
24855 : 64054 : break;
24856 : : }
24857 : : default:;
24858 : : }
24859 : : }
24860 : 64054 : {
24861 : 64054 : switch (TREE_CODE (_p1))
24862 : : {
24863 : 12466 : case INTEGER_CST:
24864 : 12466 : {
24865 : 12466 : {
24866 : 12466 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
24867 : 24916 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
24868 : 37382 : && wi::bit_and_not (get_nonzero_bits (captures[0]), wi::to_wide (captures[1])) == 0
24869 : : )
24870 : : {
24871 : 769 : gimple_seq *lseq = seq;
24872 : 769 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2710;
24873 : 769 : {
24874 : 769 : res_op->set_op (BIT_XOR_EXPR, type, 2);
24875 : 769 : res_op->ops[0] = captures[0];
24876 : 769 : res_op->ops[1] = captures[1];
24877 : 769 : res_op->resimplify (lseq, valueize);
24878 : 769 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1206, __FILE__, __LINE__, true);
24879 : 769 : return true;
24880 : : }
24881 : 0 : next_after_fail2710:;
24882 : : }
24883 : : }
24884 : 11697 : break;
24885 : : }
24886 : : default:;
24887 : : }
24888 : : }
24889 : : break;
24890 : : default:;
24891 : : }
24892 : : break;
24893 : : }
24894 : 394378 : case PLUS_EXPR:
24895 : 394378 : {
24896 : 394378 : tree _q20 = gimple_assign_rhs1 (_a1);
24897 : 394378 : _q20 = do_valueize (valueize, _q20);
24898 : 394378 : tree _q21 = gimple_assign_rhs2 (_a1);
24899 : 394378 : _q21 = do_valueize (valueize, _q21);
24900 : 394378 : if (tree_swap_operands_p (_q20, _q21))
24901 : 12505 : std::swap (_q20, _q21);
24902 : 394378 : switch (TREE_CODE (_q20))
24903 : : {
24904 : 394378 : case SSA_NAME:
24905 : 394378 : if (gimple *_d2 = get_def (valueize, _q20))
24906 : : {
24907 : 375388 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
24908 : 338492 : switch (gimple_assign_rhs_code (_a2))
24909 : : {
24910 : 14960 : case BIT_AND_EXPR:
24911 : 14960 : {
24912 : 14960 : tree _q30 = gimple_assign_rhs1 (_a2);
24913 : 14960 : _q30 = do_valueize (valueize, _q30);
24914 : 14960 : tree _q31 = gimple_assign_rhs2 (_a2);
24915 : 14960 : _q31 = do_valueize (valueize, _q31);
24916 : 14960 : if (tree_swap_operands_p (_q30, _q31))
24917 : 26 : std::swap (_q30, _q31);
24918 : 14960 : switch (TREE_CODE (_q31))
24919 : : {
24920 : 14594 : case INTEGER_CST:
24921 : 14594 : {
24922 : 14594 : switch (TREE_CODE (_p1))
24923 : : {
24924 : 11531 : case INTEGER_CST:
24925 : 11531 : {
24926 : 11531 : {
24927 : 11531 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
24928 : 11531 : if (gimple_simplify_551 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, PLUS_EXPR))
24929 : 22 : return true;
24930 : : }
24931 : 11509 : break;
24932 : : }
24933 : : default:;
24934 : : }
24935 : : break;
24936 : : }
24937 : : default:;
24938 : : }
24939 : 394348 : break;
24940 : : }
24941 : 1324 : case BIT_IOR_EXPR:
24942 : 1324 : {
24943 : 1324 : tree _q30 = gimple_assign_rhs1 (_a2);
24944 : 1324 : _q30 = do_valueize (valueize, _q30);
24945 : 1324 : tree _q31 = gimple_assign_rhs2 (_a2);
24946 : 1324 : _q31 = do_valueize (valueize, _q31);
24947 : 1324 : if (tree_swap_operands_p (_q30, _q31))
24948 : 89 : std::swap (_q30, _q31);
24949 : 1324 : switch (TREE_CODE (_q31))
24950 : : {
24951 : 329 : case INTEGER_CST:
24952 : 329 : {
24953 : 329 : switch (TREE_CODE (_p1))
24954 : : {
24955 : 329 : case INTEGER_CST:
24956 : 329 : {
24957 : 329 : {
24958 : 329 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
24959 : 329 : if (gimple_simplify_551 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, PLUS_EXPR))
24960 : 4 : return true;
24961 : : }
24962 : 325 : break;
24963 : : }
24964 : : default:;
24965 : : }
24966 : : break;
24967 : : }
24968 : : default:;
24969 : : }
24970 : 394348 : break;
24971 : : }
24972 : 159 : case BIT_XOR_EXPR:
24973 : 159 : {
24974 : 159 : tree _q30 = gimple_assign_rhs1 (_a2);
24975 : 159 : _q30 = do_valueize (valueize, _q30);
24976 : 159 : tree _q31 = gimple_assign_rhs2 (_a2);
24977 : 159 : _q31 = do_valueize (valueize, _q31);
24978 : 159 : if (tree_swap_operands_p (_q30, _q31))
24979 : 0 : std::swap (_q30, _q31);
24980 : 159 : switch (TREE_CODE (_q31))
24981 : : {
24982 : 145 : case INTEGER_CST:
24983 : 145 : {
24984 : 145 : switch (TREE_CODE (_p1))
24985 : : {
24986 : 43 : case INTEGER_CST:
24987 : 43 : {
24988 : 43 : {
24989 : 43 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
24990 : 43 : if (gimple_simplify_551 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, PLUS_EXPR))
24991 : 4 : return true;
24992 : : }
24993 : 39 : break;
24994 : : }
24995 : : default:;
24996 : : }
24997 : : break;
24998 : : }
24999 : : default:;
25000 : : }
25001 : 394348 : break;
25002 : : }
25003 : : default:;
25004 : : }
25005 : : }
25006 : : break;
25007 : 394348 : default:;
25008 : : }
25009 : 394348 : switch (TREE_CODE (_q21))
25010 : : {
25011 : 181627 : case SSA_NAME:
25012 : 181627 : if (gimple *_d2 = get_def (valueize, _q21))
25013 : : {
25014 : 176450 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25015 : 165836 : switch (gimple_assign_rhs_code (_a2))
25016 : : {
25017 : 12899 : case BIT_AND_EXPR:
25018 : 12899 : {
25019 : 12899 : tree _q40 = gimple_assign_rhs1 (_a2);
25020 : 12899 : _q40 = do_valueize (valueize, _q40);
25021 : 12899 : tree _q41 = gimple_assign_rhs2 (_a2);
25022 : 12899 : _q41 = do_valueize (valueize, _q41);
25023 : 12899 : if (tree_swap_operands_p (_q40, _q41))
25024 : 16 : std::swap (_q40, _q41);
25025 : 12899 : switch (TREE_CODE (_q41))
25026 : : {
25027 : 12779 : case INTEGER_CST:
25028 : 12779 : {
25029 : 12779 : switch (TREE_CODE (_p1))
25030 : : {
25031 : 10449 : case INTEGER_CST:
25032 : 10449 : {
25033 : 10449 : {
25034 : 10449 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41, _p1 };
25035 : 10449 : if (gimple_simplify_552 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, PLUS_EXPR))
25036 : 81 : return true;
25037 : : }
25038 : 10368 : break;
25039 : : }
25040 : : default:;
25041 : : }
25042 : : break;
25043 : : }
25044 : : default:;
25045 : : }
25046 : 394267 : break;
25047 : : }
25048 : 41 : case BIT_IOR_EXPR:
25049 : 41 : {
25050 : 41 : tree _q40 = gimple_assign_rhs1 (_a2);
25051 : 41 : _q40 = do_valueize (valueize, _q40);
25052 : 41 : tree _q41 = gimple_assign_rhs2 (_a2);
25053 : 41 : _q41 = do_valueize (valueize, _q41);
25054 : 41 : if (tree_swap_operands_p (_q40, _q41))
25055 : 1 : std::swap (_q40, _q41);
25056 : 41 : switch (TREE_CODE (_q41))
25057 : : {
25058 : 0 : case INTEGER_CST:
25059 : 0 : {
25060 : 0 : switch (TREE_CODE (_p1))
25061 : : {
25062 : 0 : case INTEGER_CST:
25063 : 0 : {
25064 : 0 : {
25065 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41, _p1 };
25066 : 0 : if (gimple_simplify_552 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, PLUS_EXPR))
25067 : 0 : return true;
25068 : : }
25069 : 0 : break;
25070 : : }
25071 : : default:;
25072 : : }
25073 : : break;
25074 : : }
25075 : : default:;
25076 : : }
25077 : 394267 : break;
25078 : : }
25079 : 158 : case BIT_XOR_EXPR:
25080 : 158 : {
25081 : 158 : tree _q40 = gimple_assign_rhs1 (_a2);
25082 : 158 : _q40 = do_valueize (valueize, _q40);
25083 : 158 : tree _q41 = gimple_assign_rhs2 (_a2);
25084 : 158 : _q41 = do_valueize (valueize, _q41);
25085 : 158 : if (tree_swap_operands_p (_q40, _q41))
25086 : 2 : std::swap (_q40, _q41);
25087 : 158 : switch (TREE_CODE (_q41))
25088 : : {
25089 : 104 : case INTEGER_CST:
25090 : 104 : {
25091 : 104 : switch (TREE_CODE (_p1))
25092 : : {
25093 : 18 : case INTEGER_CST:
25094 : 18 : {
25095 : 18 : {
25096 : 18 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41, _p1 };
25097 : 18 : if (gimple_simplify_552 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, PLUS_EXPR))
25098 : 0 : return true;
25099 : : }
25100 : 18 : break;
25101 : : }
25102 : : default:;
25103 : : }
25104 : : break;
25105 : : }
25106 : : default:;
25107 : : }
25108 : 394267 : break;
25109 : : }
25110 : : default:;
25111 : : }
25112 : : }
25113 : : break;
25114 : 394267 : default:;
25115 : : }
25116 : 394267 : switch (TREE_CODE (_p1))
25117 : : {
25118 : 265844 : case INTEGER_CST:
25119 : 265844 : {
25120 : 265844 : {
25121 : 265844 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
25122 : 265844 : if (gimple_simplify_553 (res_op, seq, valueize, type, captures, PLUS_EXPR))
25123 : 906 : return true;
25124 : : }
25125 : 264938 : break;
25126 : : }
25127 : : default:;
25128 : : }
25129 : 9529898 : break;
25130 : : }
25131 : 19442 : case MINUS_EXPR:
25132 : 19442 : {
25133 : 19442 : tree _q20 = gimple_assign_rhs1 (_a1);
25134 : 19442 : _q20 = do_valueize (valueize, _q20);
25135 : 19442 : tree _q21 = gimple_assign_rhs2 (_a1);
25136 : 19442 : _q21 = do_valueize (valueize, _q21);
25137 : 19442 : switch (TREE_CODE (_q20))
25138 : : {
25139 : 17532 : case SSA_NAME:
25140 : 17532 : if (gimple *_d2 = get_def (valueize, _q20))
25141 : : {
25142 : 17234 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25143 : 15470 : switch (gimple_assign_rhs_code (_a2))
25144 : : {
25145 : 626 : case BIT_AND_EXPR:
25146 : 626 : {
25147 : 626 : tree _q30 = gimple_assign_rhs1 (_a2);
25148 : 626 : _q30 = do_valueize (valueize, _q30);
25149 : 626 : tree _q31 = gimple_assign_rhs2 (_a2);
25150 : 626 : _q31 = do_valueize (valueize, _q31);
25151 : 626 : if (tree_swap_operands_p (_q30, _q31))
25152 : 0 : std::swap (_q30, _q31);
25153 : 626 : switch (TREE_CODE (_q31))
25154 : : {
25155 : 626 : case INTEGER_CST:
25156 : 626 : {
25157 : 626 : switch (TREE_CODE (_p1))
25158 : : {
25159 : 626 : case INTEGER_CST:
25160 : 626 : {
25161 : 626 : {
25162 : 626 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
25163 : 626 : if (gimple_simplify_551 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, MINUS_EXPR))
25164 : 2 : return true;
25165 : : }
25166 : 624 : break;
25167 : : }
25168 : : default:;
25169 : : }
25170 : : break;
25171 : : }
25172 : : default:;
25173 : : }
25174 : 19436 : break;
25175 : : }
25176 : 4 : case BIT_IOR_EXPR:
25177 : 4 : {
25178 : 4 : tree _q30 = gimple_assign_rhs1 (_a2);
25179 : 4 : _q30 = do_valueize (valueize, _q30);
25180 : 4 : tree _q31 = gimple_assign_rhs2 (_a2);
25181 : 4 : _q31 = do_valueize (valueize, _q31);
25182 : 4 : if (tree_swap_operands_p (_q30, _q31))
25183 : 0 : std::swap (_q30, _q31);
25184 : 4 : switch (TREE_CODE (_q31))
25185 : : {
25186 : 4 : case INTEGER_CST:
25187 : 4 : {
25188 : 4 : switch (TREE_CODE (_p1))
25189 : : {
25190 : 4 : case INTEGER_CST:
25191 : 4 : {
25192 : 4 : {
25193 : 4 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
25194 : 4 : if (gimple_simplify_551 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, MINUS_EXPR))
25195 : 2 : return true;
25196 : : }
25197 : 2 : break;
25198 : : }
25199 : : default:;
25200 : : }
25201 : : break;
25202 : : }
25203 : : default:;
25204 : : }
25205 : 19436 : break;
25206 : : }
25207 : 4 : case BIT_XOR_EXPR:
25208 : 4 : {
25209 : 4 : tree _q30 = gimple_assign_rhs1 (_a2);
25210 : 4 : _q30 = do_valueize (valueize, _q30);
25211 : 4 : tree _q31 = gimple_assign_rhs2 (_a2);
25212 : 4 : _q31 = do_valueize (valueize, _q31);
25213 : 4 : if (tree_swap_operands_p (_q30, _q31))
25214 : 0 : std::swap (_q30, _q31);
25215 : 4 : switch (TREE_CODE (_q31))
25216 : : {
25217 : 4 : case INTEGER_CST:
25218 : 4 : {
25219 : 4 : switch (TREE_CODE (_p1))
25220 : : {
25221 : 4 : case INTEGER_CST:
25222 : 4 : {
25223 : 4 : {
25224 : 4 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
25225 : 4 : if (gimple_simplify_551 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, MINUS_EXPR))
25226 : 2 : return true;
25227 : : }
25228 : 2 : break;
25229 : : }
25230 : : default:;
25231 : : }
25232 : : break;
25233 : : }
25234 : : default:;
25235 : : }
25236 : 19436 : break;
25237 : : }
25238 : : default:;
25239 : : }
25240 : : }
25241 : : break;
25242 : 19436 : default:;
25243 : : }
25244 : 19436 : switch (TREE_CODE (_q21))
25245 : : {
25246 : 19395 : case SSA_NAME:
25247 : 19395 : if (gimple *_d2 = get_def (valueize, _q21))
25248 : : {
25249 : 18895 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25250 : 20971 : switch (gimple_assign_rhs_code (_a2))
25251 : : {
25252 : 672 : case BIT_AND_EXPR:
25253 : 672 : {
25254 : 672 : tree _q40 = gimple_assign_rhs1 (_a2);
25255 : 672 : _q40 = do_valueize (valueize, _q40);
25256 : 672 : tree _q41 = gimple_assign_rhs2 (_a2);
25257 : 672 : _q41 = do_valueize (valueize, _q41);
25258 : 672 : if (tree_swap_operands_p (_q40, _q41))
25259 : 0 : std::swap (_q40, _q41);
25260 : 672 : switch (TREE_CODE (_q41))
25261 : : {
25262 : 584 : case INTEGER_CST:
25263 : 584 : {
25264 : 584 : switch (TREE_CODE (_p1))
25265 : : {
25266 : 584 : case INTEGER_CST:
25267 : 584 : {
25268 : 584 : {
25269 : 584 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41, _p1 };
25270 : 584 : if (gimple_simplify_552 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, MINUS_EXPR))
25271 : 2 : return true;
25272 : : }
25273 : 582 : break;
25274 : : }
25275 : : default:;
25276 : : }
25277 : : break;
25278 : : }
25279 : : default:;
25280 : : }
25281 : 19430 : break;
25282 : : }
25283 : 47 : case BIT_IOR_EXPR:
25284 : 47 : {
25285 : 47 : tree _q40 = gimple_assign_rhs1 (_a2);
25286 : 47 : _q40 = do_valueize (valueize, _q40);
25287 : 47 : tree _q41 = gimple_assign_rhs2 (_a2);
25288 : 47 : _q41 = do_valueize (valueize, _q41);
25289 : 47 : if (tree_swap_operands_p (_q40, _q41))
25290 : 0 : std::swap (_q40, _q41);
25291 : 47 : switch (TREE_CODE (_q41))
25292 : : {
25293 : 47 : case INTEGER_CST:
25294 : 47 : {
25295 : 47 : switch (TREE_CODE (_p1))
25296 : : {
25297 : 4 : case INTEGER_CST:
25298 : 4 : {
25299 : 4 : {
25300 : 4 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41, _p1 };
25301 : 4 : if (gimple_simplify_552 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, MINUS_EXPR))
25302 : 2 : return true;
25303 : : }
25304 : 2 : break;
25305 : : }
25306 : : default:;
25307 : : }
25308 : : break;
25309 : : }
25310 : : default:;
25311 : : }
25312 : 19430 : break;
25313 : : }
25314 : 4 : case BIT_XOR_EXPR:
25315 : 4 : {
25316 : 4 : tree _q40 = gimple_assign_rhs1 (_a2);
25317 : 4 : _q40 = do_valueize (valueize, _q40);
25318 : 4 : tree _q41 = gimple_assign_rhs2 (_a2);
25319 : 4 : _q41 = do_valueize (valueize, _q41);
25320 : 4 : if (tree_swap_operands_p (_q40, _q41))
25321 : 0 : std::swap (_q40, _q41);
25322 : 4 : switch (TREE_CODE (_q41))
25323 : : {
25324 : 4 : case INTEGER_CST:
25325 : 4 : {
25326 : 4 : switch (TREE_CODE (_p1))
25327 : : {
25328 : 4 : case INTEGER_CST:
25329 : 4 : {
25330 : 4 : {
25331 : 4 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q41, _p1 };
25332 : 4 : if (gimple_simplify_552 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, MINUS_EXPR))
25333 : 2 : return true;
25334 : : }
25335 : 2 : break;
25336 : : }
25337 : : default:;
25338 : : }
25339 : : break;
25340 : : }
25341 : : default:;
25342 : : }
25343 : 19430 : break;
25344 : : }
25345 : : default:;
25346 : : }
25347 : : }
25348 : : break;
25349 : 19430 : default:;
25350 : : }
25351 : 19430 : switch (TREE_CODE (_p1))
25352 : : {
25353 : 10808 : case INTEGER_CST:
25354 : 10808 : {
25355 : 10808 : {
25356 : 10808 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
25357 : 10808 : if (gimple_simplify_553 (res_op, seq, valueize, type, captures, MINUS_EXPR))
25358 : 45 : return true;
25359 : : }
25360 : 10763 : break;
25361 : : }
25362 : : default:;
25363 : : }
25364 : : break;
25365 : : }
25366 : 45731 : case NEGATE_EXPR:
25367 : 45731 : {
25368 : 45731 : tree _q20 = gimple_assign_rhs1 (_a1);
25369 : 45731 : _q20 = do_valueize (valueize, _q20);
25370 : 45731 : switch (TREE_CODE (_q20))
25371 : : {
25372 : 45731 : case SSA_NAME:
25373 : 45731 : if (gimple *_d2 = get_def (valueize, _q20))
25374 : : {
25375 : 37989 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25376 : 21727 : switch (gimple_assign_rhs_code (_a2))
25377 : : {
25378 : 928 : case BIT_AND_EXPR:
25379 : 928 : {
25380 : 928 : tree _q30 = gimple_assign_rhs1 (_a2);
25381 : 928 : _q30 = do_valueize (valueize, _q30);
25382 : 928 : tree _q31 = gimple_assign_rhs2 (_a2);
25383 : 928 : _q31 = do_valueize (valueize, _q31);
25384 : 928 : if (tree_swap_operands_p (_q30, _q31))
25385 : 1 : std::swap (_q30, _q31);
25386 : 928 : switch (TREE_CODE (_q31))
25387 : : {
25388 : 882 : case INTEGER_CST:
25389 : 882 : {
25390 : 882 : switch (TREE_CODE (_p1))
25391 : : {
25392 : 882 : case INTEGER_CST:
25393 : 882 : {
25394 : 882 : {
25395 : 882 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
25396 : 882 : if (gimple_simplify_554 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25397 : 4 : return true;
25398 : : }
25399 : 878 : break;
25400 : : }
25401 : : default:;
25402 : : }
25403 : : break;
25404 : : }
25405 : : default:;
25406 : : }
25407 : 45723 : break;
25408 : : }
25409 : 161 : case BIT_IOR_EXPR:
25410 : 161 : {
25411 : 161 : tree _q30 = gimple_assign_rhs1 (_a2);
25412 : 161 : _q30 = do_valueize (valueize, _q30);
25413 : 161 : tree _q31 = gimple_assign_rhs2 (_a2);
25414 : 161 : _q31 = do_valueize (valueize, _q31);
25415 : 161 : if (tree_swap_operands_p (_q30, _q31))
25416 : 2 : std::swap (_q30, _q31);
25417 : 161 : switch (TREE_CODE (_q31))
25418 : : {
25419 : 4 : case INTEGER_CST:
25420 : 4 : {
25421 : 4 : switch (TREE_CODE (_p1))
25422 : : {
25423 : 4 : case INTEGER_CST:
25424 : 4 : {
25425 : 4 : {
25426 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
25427 : 4 : if (gimple_simplify_554 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR))
25428 : 2 : return true;
25429 : : }
25430 : 2 : break;
25431 : : }
25432 : : default:;
25433 : : }
25434 : : break;
25435 : : }
25436 : : default:;
25437 : : }
25438 : 45723 : break;
25439 : : }
25440 : 12 : case BIT_XOR_EXPR:
25441 : 12 : {
25442 : 12 : tree _q30 = gimple_assign_rhs1 (_a2);
25443 : 12 : _q30 = do_valueize (valueize, _q30);
25444 : 12 : tree _q31 = gimple_assign_rhs2 (_a2);
25445 : 12 : _q31 = do_valueize (valueize, _q31);
25446 : 12 : if (tree_swap_operands_p (_q30, _q31))
25447 : 0 : std::swap (_q30, _q31);
25448 : 12 : switch (TREE_CODE (_q31))
25449 : : {
25450 : 4 : case INTEGER_CST:
25451 : 4 : {
25452 : 4 : switch (TREE_CODE (_p1))
25453 : : {
25454 : 4 : case INTEGER_CST:
25455 : 4 : {
25456 : 4 : {
25457 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
25458 : 4 : if (gimple_simplify_554 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR))
25459 : 2 : return true;
25460 : : }
25461 : 2 : break;
25462 : : }
25463 : : default:;
25464 : : }
25465 : : break;
25466 : : }
25467 : : default:;
25468 : : }
25469 : 45723 : break;
25470 : : }
25471 : : default:;
25472 : : }
25473 : : }
25474 : : break;
25475 : 45723 : default:;
25476 : : }
25477 : 45723 : if (gimple_zero_one_valued_p (_q20, valueize))
25478 : : {
25479 : 169 : {
25480 : 169 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
25481 : 169 : if (gimple_simplify_555 (res_op, seq, valueize, type, captures))
25482 : 169 : return true;
25483 : : }
25484 : : }
25485 : : break;
25486 : : }
25487 : : default:;
25488 : : }
25489 : : }
25490 : : break;
25491 : 9529898 : default:;
25492 : : }
25493 : 9529898 : if (integer_zerop (_p1))
25494 : : {
25495 : 61574 : {
25496 : 61574 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
25497 : 61574 : gimple_seq *lseq = seq;
25498 : 61574 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2711;
25499 : 61574 : {
25500 : 61574 : tree tem;
25501 : 61574 : tem = captures[1];
25502 : 61574 : res_op->set_value (tem);
25503 : 61574 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1207, __FILE__, __LINE__, true);
25504 : 61574 : return true;
25505 : : }
25506 : 0 : next_after_fail2711:;
25507 : : }
25508 : : }
25509 : 9468324 : if (integer_all_onesp (_p1))
25510 : : {
25511 : 385600 : {
25512 : 385600 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
25513 : 385600 : gimple_seq *lseq = seq;
25514 : 385600 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2712;
25515 : 385600 : {
25516 : 385600 : tree tem;
25517 : 385600 : tem = captures[0];
25518 : 385600 : res_op->set_value (tem);
25519 : 385600 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1208, __FILE__, __LINE__, true);
25520 : 385600 : return true;
25521 : : }
25522 : 0 : next_after_fail2712:;
25523 : : }
25524 : : }
25525 : 9082724 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
25526 : : {
25527 : 731 : {
25528 : 731 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
25529 : 731 : if (gimple_simplify_133 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25530 : 731 : return true;
25531 : : }
25532 : : }
25533 : 9081993 : switch (TREE_CODE (_p0))
25534 : : {
25535 : 8987225 : case SSA_NAME:
25536 : 8987225 : if (gimple *_d1 = get_def (valueize, _p0))
25537 : : {
25538 : 6194478 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25539 : 6725536 : switch (gimple_assign_rhs_code (_a1))
25540 : : {
25541 : 156101 : case BIT_IOR_EXPR:
25542 : 156101 : {
25543 : 156101 : tree _q20 = gimple_assign_rhs1 (_a1);
25544 : 156101 : _q20 = do_valueize (valueize, _q20);
25545 : 156101 : tree _q21 = gimple_assign_rhs2 (_a1);
25546 : 156101 : _q21 = do_valueize (valueize, _q21);
25547 : 156101 : if (tree_swap_operands_p (_q20, _q21))
25548 : 8554 : std::swap (_q20, _q21);
25549 : 156101 : switch (TREE_CODE (_q21))
25550 : : {
25551 : 23807 : case INTEGER_CST:
25552 : 23807 : {
25553 : 23807 : switch (TREE_CODE (_p1))
25554 : : {
25555 : 9514 : case SSA_NAME:
25556 : 9514 : {
25557 : 9514 : {
25558 : 9514 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
25559 : 9514 : if (gimple_simplify_556 (res_op, seq, valueize, type, captures))
25560 : 1 : return true;
25561 : : }
25562 : 9513 : break;
25563 : : }
25564 : : default:;
25565 : : }
25566 : : break;
25567 : : }
25568 : : default:;
25569 : : }
25570 : 8987224 : break;
25571 : : }
25572 : : default:;
25573 : : }
25574 : : }
25575 : 8987224 : {
25576 : 8987224 : switch (TREE_CODE (_p1))
25577 : : {
25578 : 3203059 : case SSA_NAME:
25579 : 3203059 : if (gimple *_d1 = get_def (valueize, _p1))
25580 : : {
25581 : 2556758 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25582 : 2464255 : switch (gimple_assign_rhs_code (_a1))
25583 : : {
25584 : 10596 : case BIT_IOR_EXPR:
25585 : 10596 : {
25586 : 10596 : tree _q30 = gimple_assign_rhs1 (_a1);
25587 : 10596 : _q30 = do_valueize (valueize, _q30);
25588 : 10596 : tree _q31 = gimple_assign_rhs2 (_a1);
25589 : 10596 : _q31 = do_valueize (valueize, _q31);
25590 : 10596 : if (tree_swap_operands_p (_q30, _q31))
25591 : 673 : std::swap (_q30, _q31);
25592 : 10596 : switch (TREE_CODE (_q31))
25593 : : {
25594 : 683 : case INTEGER_CST:
25595 : 683 : {
25596 : 683 : {
25597 : 683 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
25598 : 683 : if (gimple_simplify_556 (res_op, seq, valueize, type, captures))
25599 : 1 : return true;
25600 : : }
25601 : 682 : break;
25602 : : }
25603 : : default:;
25604 : : }
25605 : 9070270 : break;
25606 : : }
25607 : : default:;
25608 : : }
25609 : : }
25610 : : break;
25611 : 5746096 : case INTEGER_CST:
25612 : 5746096 : {
25613 : 5746096 : {
25614 : 5746096 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
25615 : 11001352 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
25616 : 16743963 : && wi::bit_and_not (get_nonzero_bits (captures[0]), wi::to_wide (captures[1])) == 0
25617 : : )
25618 : : {
25619 : 11721 : gimple_seq *lseq = seq;
25620 : 11721 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2713;
25621 : 11721 : {
25622 : 11721 : tree tem;
25623 : 11721 : tem = captures[0];
25624 : 11721 : res_op->set_value (tem);
25625 : 11721 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1209, __FILE__, __LINE__, true);
25626 : 11721 : return true;
25627 : : }
25628 : 0 : next_after_fail2713:;
25629 : : }
25630 : : }
25631 : 5734375 : break;
25632 : : }
25633 : : default:;
25634 : : }
25635 : : }
25636 : : break;
25637 : 9070270 : default:;
25638 : : }
25639 : 9070270 : switch (TREE_CODE (_p1))
25640 : : {
25641 : 3222357 : case SSA_NAME:
25642 : 3222357 : if (gimple *_d1 = get_def (valueize, _p1))
25643 : : {
25644 : 2556757 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25645 : 2464254 : switch (gimple_assign_rhs_code (_a1))
25646 : : {
25647 : 174525 : case BIT_NOT_EXPR:
25648 : 174525 : {
25649 : 174525 : tree _q30 = gimple_assign_rhs1 (_a1);
25650 : 174525 : _q30 = do_valueize (valueize, _q30);
25651 : 174525 : switch (TREE_CODE (_q30))
25652 : : {
25653 : 174525 : case SSA_NAME:
25654 : 174525 : if (gimple *_d2 = get_def (valueize, _q30))
25655 : : {
25656 : 149932 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25657 : 147395 : switch (gimple_assign_rhs_code (_a2))
25658 : : {
25659 : 830 : case BIT_AND_EXPR:
25660 : 830 : {
25661 : 830 : tree _q40 = gimple_assign_rhs1 (_a2);
25662 : 830 : _q40 = do_valueize (valueize, _q40);
25663 : 830 : tree _q41 = gimple_assign_rhs2 (_a2);
25664 : 830 : _q41 = do_valueize (valueize, _q41);
25665 : 830 : if (tree_swap_operands_p (_q40, _q41))
25666 : 46 : std::swap (_q40, _q41);
25667 : 830 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
25668 : : {
25669 : 44 : {
25670 : 44 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q41 };
25671 : 44 : if (gimple_simplify_131 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25672 : 44 : return true;
25673 : : }
25674 : : }
25675 : 786 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
25676 : : {
25677 : 176 : {
25678 : 176 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
25679 : 176 : if (gimple_simplify_131 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
25680 : 0 : return true;
25681 : : }
25682 : : }
25683 : 9070226 : break;
25684 : : }
25685 : : default:;
25686 : : }
25687 : : }
25688 : : break;
25689 : : default:;
25690 : : }
25691 : : break;
25692 : : }
25693 : : default:;
25694 : : }
25695 : : }
25696 : : break;
25697 : 9070226 : default:;
25698 : : }
25699 : 9070226 : switch (TREE_CODE (_p0))
25700 : : {
25701 : 8975458 : case SSA_NAME:
25702 : 8975458 : if (gimple *_d1 = get_def (valueize, _p0))
25703 : : {
25704 : 6184693 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
25705 : 6717061 : switch (gimple_assign_rhs_code (_a1))
25706 : : {
25707 : 156078 : case BIT_IOR_EXPR:
25708 : 156078 : {
25709 : 156078 : tree _q20 = gimple_assign_rhs1 (_a1);
25710 : 156078 : _q20 = do_valueize (valueize, _q20);
25711 : 156078 : tree _q21 = gimple_assign_rhs2 (_a1);
25712 : 156078 : _q21 = do_valueize (valueize, _q21);
25713 : 156078 : if (tree_swap_operands_p (_q20, _q21))
25714 : 8554 : std::swap (_q20, _q21);
25715 : 156078 : switch (TREE_CODE (_p1))
25716 : : {
25717 : 122994 : case SSA_NAME:
25718 : 122994 : if (gimple *_d2 = get_def (valueize, _p1))
25719 : : {
25720 : 118547 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25721 : 112018 : switch (gimple_assign_rhs_code (_a2))
25722 : : {
25723 : 102704 : case BIT_NOT_EXPR:
25724 : 102704 : {
25725 : 102704 : tree _q50 = gimple_assign_rhs1 (_a2);
25726 : 102704 : _q50 = do_valueize (valueize, _q50);
25727 : 102704 : switch (TREE_CODE (_q50))
25728 : : {
25729 : 102704 : case SSA_NAME:
25730 : 102704 : if (gimple *_d3 = get_def (valueize, _q50))
25731 : : {
25732 : 86730 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25733 : 86055 : switch (gimple_assign_rhs_code (_a3))
25734 : : {
25735 : 8 : case BIT_AND_EXPR:
25736 : 8 : {
25737 : 8 : tree _q60 = gimple_assign_rhs1 (_a3);
25738 : 8 : _q60 = do_valueize (valueize, _q60);
25739 : 8 : tree _q61 = gimple_assign_rhs2 (_a3);
25740 : 8 : _q61 = do_valueize (valueize, _q61);
25741 : 8 : if (tree_swap_operands_p (_q60, _q61))
25742 : 2 : std::swap (_q60, _q61);
25743 : 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
25744 : : {
25745 : 8 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
25746 : : {
25747 : 8 : {
25748 : 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
25749 : 8 : if (gimple_simplify_557 (res_op, seq, valueize, type, captures))
25750 : 8 : return true;
25751 : : }
25752 : : }
25753 : : }
25754 : 156062 : break;
25755 : : }
25756 : : default:;
25757 : : }
25758 : : }
25759 : : break;
25760 : : default:;
25761 : : }
25762 : : break;
25763 : : }
25764 : 308 : case BIT_XOR_EXPR:
25765 : 308 : {
25766 : 308 : tree _q50 = gimple_assign_rhs1 (_a2);
25767 : 308 : _q50 = do_valueize (valueize, _q50);
25768 : 308 : tree _q51 = gimple_assign_rhs2 (_a2);
25769 : 308 : _q51 = do_valueize (valueize, _q51);
25770 : 308 : if (tree_swap_operands_p (_q50, _q51))
25771 : 0 : std::swap (_q50, _q51);
25772 : 308 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
25773 : : {
25774 : 0 : {
25775 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
25776 : 0 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
25777 : 0 : return true;
25778 : : }
25779 : : }
25780 : 308 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
25781 : : {
25782 : 10 : {
25783 : 10 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
25784 : 10 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
25785 : 8 : return true;
25786 : : }
25787 : : }
25788 : 300 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
25789 : : {
25790 : 0 : {
25791 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
25792 : 0 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
25793 : 0 : return true;
25794 : : }
25795 : : }
25796 : 300 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
25797 : : {
25798 : 0 : {
25799 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
25800 : 0 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
25801 : 0 : return true;
25802 : : }
25803 : : }
25804 : 156062 : break;
25805 : : }
25806 : : default:;
25807 : : }
25808 : : }
25809 : : break;
25810 : 156062 : default:;
25811 : : }
25812 : 156062 : switch (TREE_CODE (_q20))
25813 : : {
25814 : 156062 : case SSA_NAME:
25815 : 156062 : if (gimple *_d2 = get_def (valueize, _q20))
25816 : : {
25817 : 136751 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25818 : 148713 : switch (gimple_assign_rhs_code (_a2))
25819 : : {
25820 : 1784 : case BIT_NOT_EXPR:
25821 : 1784 : {
25822 : 1784 : tree _q30 = gimple_assign_rhs1 (_a2);
25823 : 1784 : _q30 = do_valueize (valueize, _q30);
25824 : 1784 : switch (TREE_CODE (_p1))
25825 : : {
25826 : 1783 : case SSA_NAME:
25827 : 1783 : if (gimple *_d3 = get_def (valueize, _p1))
25828 : : {
25829 : 1780 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25830 : 437 : switch (gimple_assign_rhs_code (_a3))
25831 : : {
25832 : 0 : case BIT_IOR_EXPR:
25833 : 0 : {
25834 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
25835 : 0 : _q60 = do_valueize (valueize, _q60);
25836 : 0 : tree _q61 = gimple_assign_rhs2 (_a3);
25837 : 0 : _q61 = do_valueize (valueize, _q61);
25838 : 0 : if (tree_swap_operands_p (_q60, _q61))
25839 : 0 : std::swap (_q60, _q61);
25840 : 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
25841 : : {
25842 : 0 : switch (TREE_CODE (_q61))
25843 : : {
25844 : 0 : case SSA_NAME:
25845 : 0 : if (gimple *_d4 = get_def (valueize, _q61))
25846 : : {
25847 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
25848 : 0 : switch (gimple_assign_rhs_code (_a4))
25849 : : {
25850 : 0 : case BIT_NOT_EXPR:
25851 : 0 : {
25852 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
25853 : 0 : _q80 = do_valueize (valueize, _q80);
25854 : 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
25855 : : {
25856 : 0 : {
25857 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q21, _p1 };
25858 : 0 : if (gimple_simplify_559 (res_op, seq, valueize, type, captures))
25859 : 0 : return true;
25860 : : }
25861 : : }
25862 : : break;
25863 : : }
25864 : : default:;
25865 : : }
25866 : : }
25867 : : break;
25868 : : default:;
25869 : : }
25870 : : }
25871 : 0 : switch (TREE_CODE (_q60))
25872 : : {
25873 : 0 : case SSA_NAME:
25874 : 0 : if (gimple *_d4 = get_def (valueize, _q60))
25875 : : {
25876 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
25877 : 0 : switch (gimple_assign_rhs_code (_a4))
25878 : : {
25879 : 0 : case BIT_NOT_EXPR:
25880 : 0 : {
25881 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
25882 : 0 : _q70 = do_valueize (valueize, _q70);
25883 : 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
25884 : : {
25885 : 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
25886 : : {
25887 : 0 : {
25888 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q21, _p1 };
25889 : 0 : if (gimple_simplify_559 (res_op, seq, valueize, type, captures))
25890 : 0 : return true;
25891 : : }
25892 : : }
25893 : : }
25894 : : break;
25895 : : }
25896 : : default:;
25897 : : }
25898 : : }
25899 : : break;
25900 : : default:;
25901 : : }
25902 : 156062 : break;
25903 : : }
25904 : : default:;
25905 : : }
25906 : : }
25907 : : break;
25908 : : default:;
25909 : : }
25910 : : break;
25911 : : }
25912 : : default:;
25913 : : }
25914 : : }
25915 : : break;
25916 : 156062 : default:;
25917 : : }
25918 : 156062 : switch (TREE_CODE (_q21))
25919 : : {
25920 : 132256 : case SSA_NAME:
25921 : 132256 : if (gimple *_d2 = get_def (valueize, _q21))
25922 : : {
25923 : 114113 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
25924 : 132659 : switch (gimple_assign_rhs_code (_a2))
25925 : : {
25926 : 1 : case BIT_NOT_EXPR:
25927 : 1 : {
25928 : 1 : tree _q40 = gimple_assign_rhs1 (_a2);
25929 : 1 : _q40 = do_valueize (valueize, _q40);
25930 : 1 : switch (TREE_CODE (_p1))
25931 : : {
25932 : 1 : case SSA_NAME:
25933 : 1 : if (gimple *_d3 = get_def (valueize, _p1))
25934 : : {
25935 : 1 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
25936 : 1 : switch (gimple_assign_rhs_code (_a3))
25937 : : {
25938 : 1 : case BIT_IOR_EXPR:
25939 : 1 : {
25940 : 1 : tree _q60 = gimple_assign_rhs1 (_a3);
25941 : 1 : _q60 = do_valueize (valueize, _q60);
25942 : 1 : tree _q61 = gimple_assign_rhs2 (_a3);
25943 : 1 : _q61 = do_valueize (valueize, _q61);
25944 : 1 : if (tree_swap_operands_p (_q60, _q61))
25945 : 0 : std::swap (_q60, _q61);
25946 : 1 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
25947 : : {
25948 : 0 : switch (TREE_CODE (_q61))
25949 : : {
25950 : 0 : case SSA_NAME:
25951 : 0 : if (gimple *_d4 = get_def (valueize, _q61))
25952 : : {
25953 : 0 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
25954 : 0 : switch (gimple_assign_rhs_code (_a4))
25955 : : {
25956 : 0 : case BIT_NOT_EXPR:
25957 : 0 : {
25958 : 0 : tree _q80 = gimple_assign_rhs1 (_a4);
25959 : 0 : _q80 = do_valueize (valueize, _q80);
25960 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
25961 : : {
25962 : 0 : {
25963 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q40, _q20, _p1 };
25964 : 0 : if (gimple_simplify_559 (res_op, seq, valueize, type, captures))
25965 : 0 : return true;
25966 : : }
25967 : : }
25968 : : break;
25969 : : }
25970 : : default:;
25971 : : }
25972 : : }
25973 : : break;
25974 : : default:;
25975 : : }
25976 : : }
25977 : 1 : switch (TREE_CODE (_q60))
25978 : : {
25979 : 1 : case SSA_NAME:
25980 : 1 : if (gimple *_d4 = get_def (valueize, _q60))
25981 : : {
25982 : 1 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
25983 : 1 : switch (gimple_assign_rhs_code (_a4))
25984 : : {
25985 : 1 : case BIT_NOT_EXPR:
25986 : 1 : {
25987 : 1 : tree _q70 = gimple_assign_rhs1 (_a4);
25988 : 1 : _q70 = do_valueize (valueize, _q70);
25989 : 1 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
25990 : : {
25991 : 1 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
25992 : : {
25993 : 1 : {
25994 : 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q40, _q20, _p1 };
25995 : 1 : if (gimple_simplify_559 (res_op, seq, valueize, type, captures))
25996 : 1 : return true;
25997 : : }
25998 : : }
25999 : : }
26000 : : break;
26001 : : }
26002 : : default:;
26003 : : }
26004 : : }
26005 : : break;
26006 : : default:;
26007 : : }
26008 : 9069519 : break;
26009 : : }
26010 : : default:;
26011 : : }
26012 : : }
26013 : : break;
26014 : : default:;
26015 : : }
26016 : : break;
26017 : : }
26018 : : default:;
26019 : : }
26020 : : }
26021 : : break;
26022 : : default:;
26023 : : }
26024 : 9069519 : break;
26025 : : }
26026 : 63053 : case BIT_NOT_EXPR:
26027 : 63053 : {
26028 : 63053 : tree _q20 = gimple_assign_rhs1 (_a1);
26029 : 63053 : _q20 = do_valueize (valueize, _q20);
26030 : 63053 : switch (TREE_CODE (_q20))
26031 : : {
26032 : 63053 : case SSA_NAME:
26033 : 63053 : if (gimple *_d2 = get_def (valueize, _q20))
26034 : : {
26035 : 59153 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26036 : 52337 : switch (gimple_assign_rhs_code (_a2))
26037 : : {
26038 : 628 : case BIT_AND_EXPR:
26039 : 628 : {
26040 : 628 : tree _q30 = gimple_assign_rhs1 (_a2);
26041 : 628 : _q30 = do_valueize (valueize, _q30);
26042 : 628 : tree _q31 = gimple_assign_rhs2 (_a2);
26043 : 628 : _q31 = do_valueize (valueize, _q31);
26044 : 628 : if (tree_swap_operands_p (_q30, _q31))
26045 : 32 : std::swap (_q30, _q31);
26046 : 628 : switch (TREE_CODE (_p1))
26047 : : {
26048 : 623 : case SSA_NAME:
26049 : 623 : if (gimple *_d3 = get_def (valueize, _p1))
26050 : : {
26051 : 611 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26052 : 454 : switch (gimple_assign_rhs_code (_a3))
26053 : : {
26054 : 8 : case BIT_IOR_EXPR:
26055 : 8 : {
26056 : 8 : tree _q60 = gimple_assign_rhs1 (_a3);
26057 : 8 : _q60 = do_valueize (valueize, _q60);
26058 : 8 : tree _q61 = gimple_assign_rhs2 (_a3);
26059 : 8 : _q61 = do_valueize (valueize, _q61);
26060 : 8 : if (tree_swap_operands_p (_q60, _q61))
26061 : 2 : std::swap (_q60, _q61);
26062 : 8 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
26063 : : {
26064 : 8 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
26065 : : {
26066 : 8 : {
26067 : 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
26068 : 8 : if (gimple_simplify_557 (res_op, seq, valueize, type, captures))
26069 : 8 : return true;
26070 : : }
26071 : : }
26072 : : }
26073 : 63045 : break;
26074 : : }
26075 : : default:;
26076 : : }
26077 : : }
26078 : : break;
26079 : : default:;
26080 : : }
26081 : 63045 : break;
26082 : : }
26083 : : default:;
26084 : : }
26085 : : }
26086 : : break;
26087 : 63045 : default:;
26088 : : }
26089 : 63045 : switch (TREE_CODE (_p1))
26090 : : {
26091 : 49694 : case SSA_NAME:
26092 : 49694 : if (gimple *_d2 = get_def (valueize, _p1))
26093 : : {
26094 : 45558 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26095 : 44390 : switch (gimple_assign_rhs_code (_a2))
26096 : : {
26097 : 2062 : CASE_CONVERT:
26098 : 2062 : {
26099 : 2062 : tree _q40 = gimple_assign_rhs1 (_a2);
26100 : 2062 : _q40 = do_valueize (valueize, _q40);
26101 : 2062 : switch (TREE_CODE (_q40))
26102 : : {
26103 : 2062 : case SSA_NAME:
26104 : 2062 : if (gimple *_d3 = get_def (valueize, _q40))
26105 : : {
26106 : 2000 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26107 : 2006 : switch (gimple_assign_rhs_code (_a3))
26108 : : {
26109 : 27 : case BIT_NOT_EXPR:
26110 : 27 : {
26111 : 27 : tree _q50 = gimple_assign_rhs1 (_a3);
26112 : 27 : _q50 = do_valueize (valueize, _q50);
26113 : 27 : {
26114 : 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
26115 : 27 : if (gimple_simplify_138 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26116 : 7 : return true;
26117 : : }
26118 : 20 : break;
26119 : : }
26120 : : default:;
26121 : : }
26122 : : }
26123 : : break;
26124 : : default:;
26125 : : }
26126 : : break;
26127 : : }
26128 : 2116 : case BIT_NOT_EXPR:
26129 : 2116 : {
26130 : 2116 : tree _q40 = gimple_assign_rhs1 (_a2);
26131 : 2116 : _q40 = do_valueize (valueize, _q40);
26132 : 2116 : {
26133 : 2116 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
26134 : 2116 : if (gimple_simplify_138 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26135 : 613 : return true;
26136 : : }
26137 : 1503 : break;
26138 : : }
26139 : : default:;
26140 : : }
26141 : : }
26142 : : break;
26143 : : default:;
26144 : : }
26145 : : break;
26146 : : }
26147 : 86354 : case BIT_XOR_EXPR:
26148 : 86354 : {
26149 : 86354 : tree _q20 = gimple_assign_rhs1 (_a1);
26150 : 86354 : _q20 = do_valueize (valueize, _q20);
26151 : 86354 : tree _q21 = gimple_assign_rhs2 (_a1);
26152 : 86354 : _q21 = do_valueize (valueize, _q21);
26153 : 86354 : if (tree_swap_operands_p (_q20, _q21))
26154 : 4037 : std::swap (_q20, _q21);
26155 : 86354 : switch (TREE_CODE (_p1))
26156 : : {
26157 : 27084 : case SSA_NAME:
26158 : 27084 : if (gimple *_d2 = get_def (valueize, _p1))
26159 : : {
26160 : 18061 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26161 : 16935 : switch (gimple_assign_rhs_code (_a2))
26162 : : {
26163 : 1977 : case BIT_IOR_EXPR:
26164 : 1977 : {
26165 : 1977 : tree _q50 = gimple_assign_rhs1 (_a2);
26166 : 1977 : _q50 = do_valueize (valueize, _q50);
26167 : 1977 : tree _q51 = gimple_assign_rhs2 (_a2);
26168 : 1977 : _q51 = do_valueize (valueize, _q51);
26169 : 1977 : if (tree_swap_operands_p (_q50, _q51))
26170 : 65 : std::swap (_q50, _q51);
26171 : 1977 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
26172 : : {
26173 : 36 : {
26174 : 36 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q20, _q21 };
26175 : 36 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
26176 : 0 : return true;
26177 : : }
26178 : : }
26179 : 1977 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
26180 : : {
26181 : 117 : {
26182 : 117 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q21, _q20 };
26183 : 117 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
26184 : 0 : return true;
26185 : : }
26186 : : }
26187 : 1977 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
26188 : : {
26189 : 774 : {
26190 : 774 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q20, _q21 };
26191 : 774 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
26192 : 0 : return true;
26193 : : }
26194 : : }
26195 : 1977 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
26196 : : {
26197 : 654 : {
26198 : 654 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q21, _q20 };
26199 : 654 : if (gimple_simplify_558 (res_op, seq, valueize, type, captures))
26200 : 0 : return true;
26201 : : }
26202 : : }
26203 : 86354 : break;
26204 : : }
26205 : : default:;
26206 : : }
26207 : : }
26208 : : break;
26209 : 86354 : default:;
26210 : : }
26211 : 86354 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
26212 : : {
26213 : 94 : {
26214 : 94 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
26215 : 94 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR))
26216 : 62 : return true;
26217 : : }
26218 : : }
26219 : 86292 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
26220 : : {
26221 : 0 : {
26222 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
26223 : 0 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR))
26224 : 0 : return true;
26225 : : }
26226 : : }
26227 : 9069519 : break;
26228 : : }
26229 : 451996 : CASE_CONVERT:
26230 : 451996 : {
26231 : 451996 : tree _q20 = gimple_assign_rhs1 (_a1);
26232 : 451996 : _q20 = do_valueize (valueize, _q20);
26233 : 451996 : switch (TREE_CODE (_q20))
26234 : : {
26235 : 450854 : case SSA_NAME:
26236 : 450854 : if (gimple *_d2 = get_def (valueize, _q20))
26237 : : {
26238 : 419846 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26239 : 418402 : switch (gimple_assign_rhs_code (_a2))
26240 : : {
26241 : 1789 : case BIT_NOT_EXPR:
26242 : 1789 : {
26243 : 1789 : tree _q30 = gimple_assign_rhs1 (_a2);
26244 : 1789 : _q30 = do_valueize (valueize, _q30);
26245 : 1789 : switch (TREE_CODE (_p1))
26246 : : {
26247 : 1568 : case SSA_NAME:
26248 : 1568 : if (gimple *_d3 = get_def (valueize, _p1))
26249 : : {
26250 : 1527 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26251 : 1284 : switch (gimple_assign_rhs_code (_a3))
26252 : : {
26253 : 256 : CASE_CONVERT:
26254 : 256 : {
26255 : 256 : tree _q50 = gimple_assign_rhs1 (_a3);
26256 : 256 : _q50 = do_valueize (valueize, _q50);
26257 : 256 : switch (TREE_CODE (_q50))
26258 : : {
26259 : 256 : case SSA_NAME:
26260 : 256 : if (gimple *_d4 = get_def (valueize, _q50))
26261 : : {
26262 : 256 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
26263 : 312 : switch (gimple_assign_rhs_code (_a4))
26264 : : {
26265 : 5 : case BIT_NOT_EXPR:
26266 : 5 : {
26267 : 5 : tree _q60 = gimple_assign_rhs1 (_a4);
26268 : 5 : _q60 = do_valueize (valueize, _q60);
26269 : 5 : {
26270 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q60 };
26271 : 5 : if (gimple_simplify_138 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26272 : 0 : return true;
26273 : : }
26274 : 5 : break;
26275 : : }
26276 : : default:;
26277 : : }
26278 : : }
26279 : : break;
26280 : : default:;
26281 : : }
26282 : : break;
26283 : : }
26284 : 11 : case BIT_NOT_EXPR:
26285 : 11 : {
26286 : 11 : tree _q50 = gimple_assign_rhs1 (_a3);
26287 : 11 : _q50 = do_valueize (valueize, _q50);
26288 : 11 : {
26289 : 11 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
26290 : 11 : if (gimple_simplify_138 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26291 : 0 : return true;
26292 : : }
26293 : 11 : break;
26294 : : }
26295 : : default:;
26296 : : }
26297 : : }
26298 : : break;
26299 : : default:;
26300 : : }
26301 : : break;
26302 : : }
26303 : : default:;
26304 : : }
26305 : : }
26306 : : break;
26307 : : default:;
26308 : : }
26309 : : break;
26310 : : }
26311 : : default:;
26312 : : }
26313 : : }
26314 : : break;
26315 : 9069519 : default:;
26316 : : }
26317 : 9069519 : switch (TREE_CODE (_p1))
26318 : : {
26319 : 3221668 : case SSA_NAME:
26320 : 3221668 : if (gimple *_d1 = get_def (valueize, _p1))
26321 : : {
26322 : 2556068 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
26323 : 2463565 : switch (gimple_assign_rhs_code (_a1))
26324 : : {
26325 : 17898 : case BIT_XOR_EXPR:
26326 : 17898 : {
26327 : 17898 : tree _q30 = gimple_assign_rhs1 (_a1);
26328 : 17898 : _q30 = do_valueize (valueize, _q30);
26329 : 17898 : tree _q31 = gimple_assign_rhs2 (_a1);
26330 : 17898 : _q31 = do_valueize (valueize, _q31);
26331 : 17898 : if (tree_swap_operands_p (_q30, _q31))
26332 : 669 : std::swap (_q30, _q31);
26333 : 17898 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
26334 : : {
26335 : 680 : {
26336 : 680 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
26337 : 680 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR))
26338 : 0 : return true;
26339 : : }
26340 : : }
26341 : 17898 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
26342 : : {
26343 : 697 : {
26344 : 697 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
26345 : 697 : if (gimple_simplify_29 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR))
26346 : 9 : return true;
26347 : : }
26348 : : }
26349 : 9069510 : break;
26350 : : }
26351 : : default:;
26352 : : }
26353 : : }
26354 : : break;
26355 : 9069510 : default:;
26356 : : }
26357 : 9069510 : switch (TREE_CODE (_p0))
26358 : : {
26359 : 8974742 : case SSA_NAME:
26360 : 8974742 : if (gimple *_d1 = get_def (valueize, _p0))
26361 : : {
26362 : 6183978 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
26363 : 6716346 : switch (gimple_assign_rhs_code (_a1))
26364 : : {
26365 : 451988 : CASE_CONVERT:
26366 : 451988 : {
26367 : 451988 : tree _q20 = gimple_assign_rhs1 (_a1);
26368 : 451988 : _q20 = do_valueize (valueize, _q20);
26369 : 451988 : switch (TREE_CODE (_q20))
26370 : : {
26371 : 450846 : case SSA_NAME:
26372 : 450846 : if (gimple *_d2 = get_def (valueize, _q20))
26373 : : {
26374 : 419838 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26375 : 418386 : switch (gimple_assign_rhs_code (_a2))
26376 : : {
26377 : 809 : case BIT_IOR_EXPR:
26378 : 809 : {
26379 : 809 : tree _q30 = gimple_assign_rhs1 (_a2);
26380 : 809 : _q30 = do_valueize (valueize, _q30);
26381 : 809 : tree _q31 = gimple_assign_rhs2 (_a2);
26382 : 809 : _q31 = do_valueize (valueize, _q31);
26383 : 809 : if (tree_swap_operands_p (_q30, _q31))
26384 : 15 : std::swap (_q30, _q31);
26385 : 809 : switch (TREE_CODE (_p1))
26386 : : {
26387 : 337 : case SSA_NAME:
26388 : 337 : if (gimple *_d3 = get_def (valueize, _p1))
26389 : : {
26390 : 336 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26391 : 340 : switch (gimple_assign_rhs_code (_a3))
26392 : : {
26393 : 219 : CASE_CONVERT:
26394 : 219 : {
26395 : 219 : tree _q60 = gimple_assign_rhs1 (_a3);
26396 : 219 : _q60 = do_valueize (valueize, _q60);
26397 : 219 : switch (TREE_CODE (_q60))
26398 : : {
26399 : 219 : case SSA_NAME:
26400 : 219 : if (gimple *_d4 = get_def (valueize, _q60))
26401 : : {
26402 : 219 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
26403 : 48 : switch (gimple_assign_rhs_code (_a4))
26404 : : {
26405 : 0 : case BIT_IOR_EXPR:
26406 : 0 : {
26407 : 0 : tree _q70 = gimple_assign_rhs1 (_a4);
26408 : 0 : _q70 = do_valueize (valueize, _q70);
26409 : 0 : tree _q71 = gimple_assign_rhs2 (_a4);
26410 : 0 : _q71 = do_valueize (valueize, _q71);
26411 : 0 : if (tree_swap_operands_p (_q70, _q71))
26412 : 0 : std::swap (_q70, _q71);
26413 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q30, 0))
26414 : : {
26415 : 0 : {
26416 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q71, _q30 };
26417 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26418 : 0 : return true;
26419 : : }
26420 : : }
26421 : 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q30, 0))
26422 : : {
26423 : 0 : {
26424 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q70, _q30 };
26425 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26426 : 0 : return true;
26427 : : }
26428 : : }
26429 : 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q31, 0))
26430 : : {
26431 : 0 : {
26432 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q71, _q31 };
26433 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26434 : 0 : return true;
26435 : : }
26436 : : }
26437 : 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q31, 0))
26438 : : {
26439 : 0 : {
26440 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q70, _q31 };
26441 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26442 : 0 : return true;
26443 : : }
26444 : : }
26445 : 451987 : break;
26446 : : }
26447 : : default:;
26448 : : }
26449 : : }
26450 : : break;
26451 : : default:;
26452 : : }
26453 : : break;
26454 : : }
26455 : : default:;
26456 : : }
26457 : : }
26458 : : break;
26459 : : default:;
26460 : : }
26461 : 451987 : break;
26462 : : }
26463 : 2402 : case BIT_AND_EXPR:
26464 : 2402 : {
26465 : 2402 : tree _q30 = gimple_assign_rhs1 (_a2);
26466 : 2402 : _q30 = do_valueize (valueize, _q30);
26467 : 2402 : tree _q31 = gimple_assign_rhs2 (_a2);
26468 : 2402 : _q31 = do_valueize (valueize, _q31);
26469 : 2402 : if (tree_swap_operands_p (_q30, _q31))
26470 : 49 : std::swap (_q30, _q31);
26471 : 2402 : switch (TREE_CODE (_p1))
26472 : : {
26473 : 1029 : case SSA_NAME:
26474 : 1029 : if (gimple *_d3 = get_def (valueize, _p1))
26475 : : {
26476 : 997 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26477 : 1030 : switch (gimple_assign_rhs_code (_a3))
26478 : : {
26479 : 572 : CASE_CONVERT:
26480 : 572 : {
26481 : 572 : tree _q60 = gimple_assign_rhs1 (_a3);
26482 : 572 : _q60 = do_valueize (valueize, _q60);
26483 : 572 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
26484 : : {
26485 : 0 : {
26486 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q31 };
26487 : 0 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26488 : 0 : return true;
26489 : : }
26490 : : }
26491 : 572 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q30, 0))
26492 : : {
26493 : 0 : {
26494 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q30, _q30 };
26495 : 0 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26496 : 0 : return true;
26497 : : }
26498 : : }
26499 : : break;
26500 : : }
26501 : : default:;
26502 : : }
26503 : : }
26504 : : break;
26505 : 2402 : default:;
26506 : : }
26507 : 2402 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
26508 : : {
26509 : 1 : {
26510 : 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q31 };
26511 : 1 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26512 : 1 : return true;
26513 : : }
26514 : : }
26515 : 2401 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q30, 0))
26516 : : {
26517 : 0 : {
26518 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q30, _q30 };
26519 : 0 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26520 : 0 : return true;
26521 : : }
26522 : : }
26523 : 451987 : break;
26524 : : }
26525 : : default:;
26526 : : }
26527 : : }
26528 : : break;
26529 : 451987 : default:;
26530 : : }
26531 : 451987 : switch (TREE_CODE (_p1))
26532 : : {
26533 : 87420 : case SSA_NAME:
26534 : 87420 : if (gimple *_d2 = get_def (valueize, _p1))
26535 : : {
26536 : 84799 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26537 : 62209 : switch (gimple_assign_rhs_code (_a2))
26538 : : {
26539 : 25262 : CASE_CONVERT:
26540 : 25262 : {
26541 : 25262 : tree _q40 = gimple_assign_rhs1 (_a2);
26542 : 25262 : _q40 = do_valueize (valueize, _q40);
26543 : 25262 : switch (TREE_CODE (_q40))
26544 : : {
26545 : 25262 : case SSA_NAME:
26546 : 25262 : if (gimple *_d3 = get_def (valueize, _q40))
26547 : : {
26548 : 23431 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26549 : 8786 : switch (gimple_assign_rhs_code (_a3))
26550 : : {
26551 : 492 : case BIT_AND_EXPR:
26552 : 492 : {
26553 : 492 : tree _q50 = gimple_assign_rhs1 (_a3);
26554 : 492 : _q50 = do_valueize (valueize, _q50);
26555 : 492 : tree _q51 = gimple_assign_rhs2 (_a3);
26556 : 492 : _q51 = do_valueize (valueize, _q51);
26557 : 492 : if (tree_swap_operands_p (_q50, _q51))
26558 : 13 : std::swap (_q50, _q51);
26559 : 492 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
26560 : : {
26561 : 0 : {
26562 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q51, _q20 };
26563 : 0 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26564 : 0 : return true;
26565 : : }
26566 : : }
26567 : 492 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
26568 : : {
26569 : 0 : {
26570 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q51, _q50, _q20 };
26571 : 0 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26572 : 0 : return true;
26573 : : }
26574 : : }
26575 : 9069507 : break;
26576 : : }
26577 : : default:;
26578 : : }
26579 : : }
26580 : : break;
26581 : : default:;
26582 : : }
26583 : : break;
26584 : : }
26585 : 1191 : case BIT_AND_EXPR:
26586 : 1191 : {
26587 : 1191 : tree _q40 = gimple_assign_rhs1 (_a2);
26588 : 1191 : _q40 = do_valueize (valueize, _q40);
26589 : 1191 : tree _q41 = gimple_assign_rhs2 (_a2);
26590 : 1191 : _q41 = do_valueize (valueize, _q41);
26591 : 1191 : if (tree_swap_operands_p (_q40, _q41))
26592 : 62 : std::swap (_q40, _q41);
26593 : 1191 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q20, 0))
26594 : : {
26595 : 0 : {
26596 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _q20 };
26597 : 0 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26598 : 0 : return true;
26599 : : }
26600 : : }
26601 : 1191 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _q20, 0))
26602 : : {
26603 : 0 : {
26604 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q41, _q40, _q20 };
26605 : 0 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26606 : 0 : return true;
26607 : : }
26608 : : }
26609 : 9069507 : break;
26610 : : }
26611 : : default:;
26612 : : }
26613 : : }
26614 : : break;
26615 : : default:;
26616 : : }
26617 : : break;
26618 : : }
26619 : 156061 : case BIT_IOR_EXPR:
26620 : 156061 : {
26621 : 156061 : tree _q20 = gimple_assign_rhs1 (_a1);
26622 : 156061 : _q20 = do_valueize (valueize, _q20);
26623 : 156061 : tree _q21 = gimple_assign_rhs2 (_a1);
26624 : 156061 : _q21 = do_valueize (valueize, _q21);
26625 : 156061 : if (tree_swap_operands_p (_q20, _q21))
26626 : 8554 : std::swap (_q20, _q21);
26627 : 156061 : switch (TREE_CODE (_p1))
26628 : : {
26629 : 122977 : case SSA_NAME:
26630 : 122977 : if (gimple *_d2 = get_def (valueize, _p1))
26631 : : {
26632 : 118530 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26633 : 112001 : switch (gimple_assign_rhs_code (_a2))
26634 : : {
26635 : 627 : case BIT_IOR_EXPR:
26636 : 627 : {
26637 : 627 : tree _q50 = gimple_assign_rhs1 (_a2);
26638 : 627 : _q50 = do_valueize (valueize, _q50);
26639 : 627 : tree _q51 = gimple_assign_rhs2 (_a2);
26640 : 627 : _q51 = do_valueize (valueize, _q51);
26641 : 627 : if (tree_swap_operands_p (_q50, _q51))
26642 : 49 : std::swap (_q50, _q51);
26643 : 627 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
26644 : : {
26645 : 0 : {
26646 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q20 };
26647 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26648 : 0 : return true;
26649 : : }
26650 : : }
26651 : 627 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
26652 : : {
26653 : 0 : {
26654 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q20 };
26655 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26656 : 0 : return true;
26657 : : }
26658 : : }
26659 : 627 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
26660 : : {
26661 : 4 : {
26662 : 4 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q21 };
26663 : 4 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26664 : 2 : return true;
26665 : : }
26666 : : }
26667 : 625 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q21, 0))
26668 : : {
26669 : 0 : {
26670 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q21 };
26671 : 0 : if (gimple_simplify_30 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
26672 : 0 : return true;
26673 : : }
26674 : : }
26675 : 9069507 : break;
26676 : : }
26677 : : default:;
26678 : : }
26679 : : }
26680 : : break;
26681 : : default:;
26682 : : }
26683 : 9069507 : break;
26684 : : }
26685 : : default:;
26686 : : }
26687 : : }
26688 : : break;
26689 : 9069507 : default:;
26690 : : }
26691 : 9069507 : switch (TREE_CODE (_p1))
26692 : : {
26693 : 3221657 : case SSA_NAME:
26694 : 3221657 : if (gimple *_d1 = get_def (valueize, _p1))
26695 : : {
26696 : 2556057 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
26697 : 2463554 : switch (gimple_assign_rhs_code (_a1))
26698 : : {
26699 : 105674 : CASE_CONVERT:
26700 : 105674 : {
26701 : 105674 : tree _q30 = gimple_assign_rhs1 (_a1);
26702 : 105674 : _q30 = do_valueize (valueize, _q30);
26703 : 105674 : switch (TREE_CODE (_q30))
26704 : : {
26705 : 105642 : case SSA_NAME:
26706 : 105642 : if (gimple *_d2 = get_def (valueize, _q30))
26707 : : {
26708 : 102658 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26709 : 93866 : switch (gimple_assign_rhs_code (_a2))
26710 : : {
26711 : 1678 : case BIT_AND_EXPR:
26712 : 1678 : {
26713 : 1678 : tree _q40 = gimple_assign_rhs1 (_a2);
26714 : 1678 : _q40 = do_valueize (valueize, _q40);
26715 : 1678 : tree _q41 = gimple_assign_rhs2 (_a2);
26716 : 1678 : _q41 = do_valueize (valueize, _q41);
26717 : 1678 : if (tree_swap_operands_p (_q40, _q41))
26718 : 66 : std::swap (_q40, _q41);
26719 : 1678 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
26720 : : {
26721 : 0 : {
26722 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0 };
26723 : 0 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26724 : 0 : return true;
26725 : : }
26726 : : }
26727 : 1678 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
26728 : : {
26729 : 0 : {
26730 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q41, _q40, _p0 };
26731 : 0 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26732 : 0 : return true;
26733 : : }
26734 : : }
26735 : 9069507 : break;
26736 : : }
26737 : : default:;
26738 : : }
26739 : : }
26740 : : break;
26741 : : default:;
26742 : : }
26743 : : break;
26744 : : }
26745 : : default:;
26746 : : }
26747 : : }
26748 : : break;
26749 : 9069507 : default:;
26750 : : }
26751 : 9069507 : switch (TREE_CODE (_p0))
26752 : : {
26753 : 8974739 : case SSA_NAME:
26754 : 8974739 : if (gimple *_d1 = get_def (valueize, _p0))
26755 : : {
26756 : 6183975 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
26757 : 6716343 : switch (gimple_assign_rhs_code (_a1))
26758 : : {
26759 : 52297 : case BIT_AND_EXPR:
26760 : 52297 : {
26761 : 52297 : tree _q20 = gimple_assign_rhs1 (_a1);
26762 : 52297 : _q20 = do_valueize (valueize, _q20);
26763 : 52297 : tree _q21 = gimple_assign_rhs2 (_a1);
26764 : 52297 : _q21 = do_valueize (valueize, _q21);
26765 : 52297 : if (tree_swap_operands_p (_q20, _q21))
26766 : 3310 : std::swap (_q20, _q21);
26767 : 52297 : switch (TREE_CODE (_p1))
26768 : : {
26769 : 39068 : case SSA_NAME:
26770 : 39068 : if (gimple *_d2 = get_def (valueize, _p1))
26771 : : {
26772 : 38820 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26773 : 40660 : switch (gimple_assign_rhs_code (_a2))
26774 : : {
26775 : 1472 : CASE_CONVERT:
26776 : 1472 : {
26777 : 1472 : tree _q50 = gimple_assign_rhs1 (_a2);
26778 : 1472 : _q50 = do_valueize (valueize, _q50);
26779 : 1472 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
26780 : : {
26781 : 0 : {
26782 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q21 };
26783 : 0 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26784 : 0 : return true;
26785 : : }
26786 : : }
26787 : 1472 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
26788 : : {
26789 : 0 : {
26790 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _q20 };
26791 : 0 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26792 : 0 : return true;
26793 : : }
26794 : : }
26795 : : break;
26796 : : }
26797 : : default:;
26798 : : }
26799 : : }
26800 : : break;
26801 : 52297 : default:;
26802 : : }
26803 : 52297 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
26804 : : {
26805 : 72 : {
26806 : 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q21 };
26807 : 72 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26808 : 72 : return true;
26809 : : }
26810 : : }
26811 : 52225 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q20, 0))
26812 : : {
26813 : 41 : {
26814 : 41 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _q20 };
26815 : 41 : if (gimple_simplify_124 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26816 : 41 : return true;
26817 : : }
26818 : : }
26819 : 52184 : {
26820 : 52184 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
26821 : 52184 : if (gimple_simplify_560 (res_op, seq, valueize, type, captures))
26822 : 107 : return true;
26823 : : }
26824 : 52077 : switch (TREE_CODE (_p1))
26825 : : {
26826 : 38975 : case SSA_NAME:
26827 : 38975 : if (gimple *_d2 = get_def (valueize, _p1))
26828 : : {
26829 : 38728 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
26830 : 40565 : switch (gimple_assign_rhs_code (_a2))
26831 : : {
26832 : 1406 : CASE_CONVERT:
26833 : 1406 : {
26834 : 1406 : tree _q50 = gimple_assign_rhs1 (_a2);
26835 : 1406 : _q50 = do_valueize (valueize, _q50);
26836 : 1406 : switch (TREE_CODE (_q50))
26837 : : {
26838 : 1406 : case SSA_NAME:
26839 : 1406 : if (gimple *_d3 = get_def (valueize, _q50))
26840 : : {
26841 : 1406 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
26842 : 1767 : switch (gimple_assign_rhs_code (_a3))
26843 : : {
26844 : 180 : case BIT_AND_EXPR:
26845 : 180 : {
26846 : 180 : tree _q60 = gimple_assign_rhs1 (_a3);
26847 : 180 : _q60 = do_valueize (valueize, _q60);
26848 : 180 : tree _q61 = gimple_assign_rhs2 (_a3);
26849 : 180 : _q61 = do_valueize (valueize, _q61);
26850 : 180 : if (tree_swap_operands_p (_q60, _q61))
26851 : 25 : std::swap (_q60, _q61);
26852 : 180 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
26853 : : {
26854 : 0 : {
26855 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _q50, _q61 };
26856 : 0 : if (gimple_simplify_141 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26857 : 0 : return true;
26858 : : }
26859 : : }
26860 : 180 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
26861 : : {
26862 : 0 : {
26863 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _q50, _q60 };
26864 : 0 : if (gimple_simplify_141 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26865 : 0 : return true;
26866 : : }
26867 : : }
26868 : 180 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
26869 : : {
26870 : 0 : {
26871 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20, _p1, _q50, _q61 };
26872 : 0 : if (gimple_simplify_141 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26873 : 0 : return true;
26874 : : }
26875 : : }
26876 : 180 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
26877 : : {
26878 : 0 : {
26879 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20, _p1, _q50, _q60 };
26880 : 0 : if (gimple_simplify_141 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26881 : 0 : return true;
26882 : : }
26883 : : }
26884 : 9069264 : break;
26885 : : }
26886 : : default:;
26887 : : }
26888 : : }
26889 : : break;
26890 : : default:;
26891 : : }
26892 : : break;
26893 : : }
26894 : 2092 : case BIT_AND_EXPR:
26895 : 2092 : {
26896 : 2092 : tree _q50 = gimple_assign_rhs1 (_a2);
26897 : 2092 : _q50 = do_valueize (valueize, _q50);
26898 : 2092 : tree _q51 = gimple_assign_rhs2 (_a2);
26899 : 2092 : _q51 = do_valueize (valueize, _q51);
26900 : 2092 : if (tree_swap_operands_p (_q50, _q51))
26901 : 296 : std::swap (_q50, _q51);
26902 : 2092 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
26903 : : {
26904 : 22 : {
26905 : 22 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _p1, _q51 };
26906 : 22 : if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26907 : 16 : return true;
26908 : : }
26909 : : }
26910 : 2076 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
26911 : : {
26912 : 0 : {
26913 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _p1, _q50 };
26914 : 0 : if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26915 : 0 : return true;
26916 : : }
26917 : : }
26918 : 2076 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
26919 : : {
26920 : 2 : {
26921 : 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20, _p1, _p1, _q51 };
26922 : 2 : if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26923 : 2 : return true;
26924 : : }
26925 : : }
26926 : 2074 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
26927 : : {
26928 : 5 : {
26929 : 5 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20, _p1, _p1, _q50 };
26930 : 5 : if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26931 : 5 : return true;
26932 : : }
26933 : : }
26934 : 9069264 : break;
26935 : : }
26936 : : default:;
26937 : : }
26938 : : }
26939 : : break;
26940 : : default:;
26941 : : }
26942 : 9069264 : break;
26943 : : }
26944 : : default:;
26945 : : }
26946 : : }
26947 : : break;
26948 : 9069264 : default:;
26949 : : }
26950 : 9069264 : switch (TREE_CODE (_p1))
26951 : : {
26952 : 3221541 : case SSA_NAME:
26953 : 3221541 : if (gimple *_d1 = get_def (valueize, _p1))
26954 : : {
26955 : 2555942 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
26956 : 2463436 : switch (gimple_assign_rhs_code (_a1))
26957 : : {
26958 : 37467 : case BIT_AND_EXPR:
26959 : 37467 : {
26960 : 37467 : tree _q30 = gimple_assign_rhs1 (_a1);
26961 : 37467 : _q30 = do_valueize (valueize, _q30);
26962 : 37467 : tree _q31 = gimple_assign_rhs2 (_a1);
26963 : 37467 : _q31 = do_valueize (valueize, _q31);
26964 : 37467 : if (tree_swap_operands_p (_q30, _q31))
26965 : 3515 : std::swap (_q30, _q31);
26966 : 37467 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
26967 : : {
26968 : 102 : {
26969 : 102 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q31, _p0 };
26970 : 102 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26971 : 102 : return true;
26972 : : }
26973 : : }
26974 : 37365 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || operand_equal_p (_q30, _p0, 0))
26975 : : {
26976 : 262 : {
26977 : 262 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q31, _q30, _p0 };
26978 : 262 : if (gimple_simplify_139 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
26979 : 262 : return true;
26980 : : }
26981 : : }
26982 : 37103 : {
26983 : 37103 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
26984 : 37103 : if (gimple_simplify_560 (res_op, seq, valueize, type, captures))
26985 : 2 : return true;
26986 : : }
26987 : 37101 : break;
26988 : : }
26989 : : default:;
26990 : : }
26991 : : }
26992 : : break;
26993 : 9068898 : default:;
26994 : : }
26995 : 9068898 : switch (TREE_CODE (_p0))
26996 : : {
26997 : 8974130 : case SSA_NAME:
26998 : 8974130 : if (gimple *_d1 = get_def (valueize, _p0))
26999 : : {
27000 : 6183366 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27001 : 6715505 : switch (gimple_assign_rhs_code (_a1))
27002 : : {
27003 : 451914 : CASE_CONVERT:
27004 : 451914 : {
27005 : 451914 : tree _q20 = gimple_assign_rhs1 (_a1);
27006 : 451914 : _q20 = do_valueize (valueize, _q20);
27007 : 451914 : switch (TREE_CODE (_q20))
27008 : : {
27009 : 450772 : case SSA_NAME:
27010 : 450772 : if (gimple *_d2 = get_def (valueize, _q20))
27011 : : {
27012 : 419764 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27013 : 418294 : switch (gimple_assign_rhs_code (_a2))
27014 : : {
27015 : 2400 : case BIT_AND_EXPR:
27016 : 2400 : {
27017 : 2400 : tree _q30 = gimple_assign_rhs1 (_a2);
27018 : 2400 : _q30 = do_valueize (valueize, _q30);
27019 : 2400 : tree _q31 = gimple_assign_rhs2 (_a2);
27020 : 2400 : _q31 = do_valueize (valueize, _q31);
27021 : 2400 : if (tree_swap_operands_p (_q30, _q31))
27022 : 49 : std::swap (_q30, _q31);
27023 : 2400 : switch (TREE_CODE (_p1))
27024 : : {
27025 : 1028 : case SSA_NAME:
27026 : 1028 : if (gimple *_d3 = get_def (valueize, _p1))
27027 : : {
27028 : 996 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27029 : 1029 : switch (gimple_assign_rhs_code (_a3))
27030 : : {
27031 : 572 : CASE_CONVERT:
27032 : 572 : {
27033 : 572 : tree _q60 = gimple_assign_rhs1 (_a3);
27034 : 572 : _q60 = do_valueize (valueize, _q60);
27035 : 572 : switch (TREE_CODE (_q60))
27036 : : {
27037 : 572 : case SSA_NAME:
27038 : 572 : if (gimple *_d4 = get_def (valueize, _q60))
27039 : : {
27040 : 568 : if (gassign *_a4 = dyn_cast <gassign *> (_d4))
27041 : 476 : switch (gimple_assign_rhs_code (_a4))
27042 : : {
27043 : 271 : case BIT_AND_EXPR:
27044 : 271 : {
27045 : 271 : tree _q70 = gimple_assign_rhs1 (_a4);
27046 : 271 : _q70 = do_valueize (valueize, _q70);
27047 : 271 : tree _q71 = gimple_assign_rhs2 (_a4);
27048 : 271 : _q71 = do_valueize (valueize, _q71);
27049 : 271 : if (tree_swap_operands_p (_q70, _q71))
27050 : 0 : std::swap (_q70, _q71);
27051 : 271 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
27052 : : {
27053 : 0 : {
27054 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60, _q71 };
27055 : 0 : if (gimple_simplify_143 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27056 : 0 : return true;
27057 : : }
27058 : : }
27059 : 271 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
27060 : : {
27061 : 0 : {
27062 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60, _q70 };
27063 : 0 : if (gimple_simplify_143 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27064 : 0 : return true;
27065 : : }
27066 : : }
27067 : 271 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
27068 : : {
27069 : 0 : {
27070 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _p1, _q60, _q71 };
27071 : 0 : if (gimple_simplify_143 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27072 : 0 : return true;
27073 : : }
27074 : : }
27075 : 271 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
27076 : : {
27077 : 217 : {
27078 : 217 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _p1, _q60, _q70 };
27079 : 217 : if (gimple_simplify_143 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27080 : 0 : return true;
27081 : : }
27082 : : }
27083 : 451914 : break;
27084 : : }
27085 : : default:;
27086 : : }
27087 : : }
27088 : : break;
27089 : : default:;
27090 : : }
27091 : : break;
27092 : : }
27093 : 15 : case BIT_AND_EXPR:
27094 : 15 : {
27095 : 15 : tree _q60 = gimple_assign_rhs1 (_a3);
27096 : 15 : _q60 = do_valueize (valueize, _q60);
27097 : 15 : tree _q61 = gimple_assign_rhs2 (_a3);
27098 : 15 : _q61 = do_valueize (valueize, _q61);
27099 : 15 : if (tree_swap_operands_p (_q60, _q61))
27100 : 3 : std::swap (_q60, _q61);
27101 : 15 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
27102 : : {
27103 : 0 : {
27104 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _p1, _q61 };
27105 : 0 : if (gimple_simplify_144 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27106 : 0 : return true;
27107 : : }
27108 : : }
27109 : 15 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
27110 : : {
27111 : 0 : {
27112 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _p1, _q60 };
27113 : 0 : if (gimple_simplify_144 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27114 : 0 : return true;
27115 : : }
27116 : : }
27117 : 15 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
27118 : : {
27119 : 0 : {
27120 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _p1, _p1, _q61 };
27121 : 0 : if (gimple_simplify_144 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27122 : 0 : return true;
27123 : : }
27124 : : }
27125 : 15 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
27126 : : {
27127 : 0 : {
27128 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _p1, _p1, _q60 };
27129 : 0 : if (gimple_simplify_144 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27130 : 0 : return true;
27131 : : }
27132 : : }
27133 : 451914 : break;
27134 : : }
27135 : : default:;
27136 : : }
27137 : : }
27138 : : break;
27139 : : default:;
27140 : : }
27141 : 451914 : break;
27142 : : }
27143 : : default:;
27144 : : }
27145 : : }
27146 : : break;
27147 : 451914 : default:;
27148 : : }
27149 : 451914 : switch (TREE_CODE (_p1))
27150 : : {
27151 : 87347 : case SSA_NAME:
27152 : 87347 : if (gimple *_d2 = get_def (valueize, _p1))
27153 : : {
27154 : 84726 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27155 : 62136 : switch (gimple_assign_rhs_code (_a2))
27156 : : {
27157 : 25262 : CASE_CONVERT:
27158 : 25262 : {
27159 : 25262 : tree _q40 = gimple_assign_rhs1 (_a2);
27160 : 25262 : _q40 = do_valueize (valueize, _q40);
27161 : 25262 : {
27162 : 25262 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
27163 : 25262 : if (gimple_simplify_32 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27164 : 1354 : return true;
27165 : : }
27166 : 23908 : break;
27167 : : }
27168 : : default:;
27169 : : }
27170 : : }
27171 : : break;
27172 : 450560 : default:;
27173 : : }
27174 : 450560 : {
27175 : 450560 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
27176 : 450560 : if (gimple_simplify_33 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27177 : 23733 : return true;
27178 : : }
27179 : 426827 : break;
27180 : : }
27181 : 156054 : case BIT_IOR_EXPR:
27182 : 156054 : {
27183 : 156054 : tree _q20 = gimple_assign_rhs1 (_a1);
27184 : 156054 : _q20 = do_valueize (valueize, _q20);
27185 : 156054 : tree _q21 = gimple_assign_rhs2 (_a1);
27186 : 156054 : _q21 = do_valueize (valueize, _q21);
27187 : 156054 : if (tree_swap_operands_p (_q20, _q21))
27188 : 8554 : std::swap (_q20, _q21);
27189 : 156054 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
27190 : : {
27191 : 0 : {
27192 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
27193 : 0 : if (gimple_simplify_145 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27194 : 0 : return true;
27195 : : }
27196 : : }
27197 : 156054 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
27198 : : {
27199 : 2673 : {
27200 : 2673 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
27201 : 2673 : if (gimple_simplify_145 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27202 : 2673 : return true;
27203 : : }
27204 : : }
27205 : 153381 : {
27206 : 153381 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
27207 : 153381 : if (gimple_simplify_146 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27208 : 59 : return true;
27209 : : }
27210 : 153322 : {
27211 : 153322 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
27212 : 153322 : if (gimple_simplify_146 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27213 : 44 : return true;
27214 : : }
27215 : 153278 : switch (TREE_CODE (_p1))
27216 : : {
27217 : 122901 : case SSA_NAME:
27218 : 122901 : if (gimple *_d2 = get_def (valueize, _p1))
27219 : : {
27220 : 118454 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27221 : 111925 : switch (gimple_assign_rhs_code (_a2))
27222 : : {
27223 : 168 : case BIT_AND_EXPR:
27224 : 168 : {
27225 : 168 : tree _q50 = gimple_assign_rhs1 (_a2);
27226 : 168 : _q50 = do_valueize (valueize, _q50);
27227 : 168 : tree _q51 = gimple_assign_rhs2 (_a2);
27228 : 168 : _q51 = do_valueize (valueize, _q51);
27229 : 168 : if (tree_swap_operands_p (_q50, _q51))
27230 : 14 : std::swap (_q50, _q51);
27231 : 168 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
27232 : : {
27233 : 1 : {
27234 : 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51 };
27235 : 1 : if (gimple_simplify_147 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27236 : 1 : return true;
27237 : : }
27238 : : }
27239 : 167 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
27240 : : {
27241 : 0 : {
27242 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50 };
27243 : 0 : if (gimple_simplify_147 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27244 : 0 : return true;
27245 : : }
27246 : : }
27247 : 167 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
27248 : : {
27249 : 0 : {
27250 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51 };
27251 : 0 : if (gimple_simplify_147 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27252 : 0 : return true;
27253 : : }
27254 : : }
27255 : 167 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
27256 : : {
27257 : 0 : {
27258 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50 };
27259 : 0 : if (gimple_simplify_147 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27260 : 0 : return true;
27261 : : }
27262 : : }
27263 : 9041034 : break;
27264 : : }
27265 : 102628 : case BIT_NOT_EXPR:
27266 : 102628 : {
27267 : 102628 : tree _q50 = gimple_assign_rhs1 (_a2);
27268 : 102628 : _q50 = do_valueize (valueize, _q50);
27269 : 102628 : switch (TREE_CODE (_q50))
27270 : : {
27271 : 102628 : case SSA_NAME:
27272 : 102628 : if (gimple *_d3 = get_def (valueize, _q50))
27273 : : {
27274 : 86654 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27275 : 85979 : switch (gimple_assign_rhs_code (_a3))
27276 : : {
27277 : 105 : case BIT_IOR_EXPR:
27278 : 105 : {
27279 : 105 : tree _q60 = gimple_assign_rhs1 (_a3);
27280 : 105 : _q60 = do_valueize (valueize, _q60);
27281 : 105 : tree _q61 = gimple_assign_rhs2 (_a3);
27282 : 105 : _q61 = do_valueize (valueize, _q61);
27283 : 105 : if (tree_swap_operands_p (_q60, _q61))
27284 : 7 : std::swap (_q60, _q61);
27285 : 105 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
27286 : : {
27287 : 0 : {
27288 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q61 };
27289 : 0 : if (gimple_simplify_148 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27290 : 0 : return true;
27291 : : }
27292 : : }
27293 : 105 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
27294 : : {
27295 : 0 : {
27296 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q60 };
27297 : 0 : if (gimple_simplify_148 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27298 : 0 : return true;
27299 : : }
27300 : : }
27301 : 105 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
27302 : : {
27303 : 0 : {
27304 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q61 };
27305 : 0 : if (gimple_simplify_148 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27306 : 0 : return true;
27307 : : }
27308 : : }
27309 : 105 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
27310 : : {
27311 : 0 : {
27312 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q60 };
27313 : 0 : if (gimple_simplify_148 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27314 : 0 : return true;
27315 : : }
27316 : : }
27317 : 9041034 : break;
27318 : : }
27319 : : default:;
27320 : : }
27321 : : }
27322 : : break;
27323 : : default:;
27324 : : }
27325 : : break;
27326 : : }
27327 : : default:;
27328 : : }
27329 : : }
27330 : : break;
27331 : : default:;
27332 : : }
27333 : 9041034 : break;
27334 : : }
27335 : : default:;
27336 : : }
27337 : : }
27338 : : break;
27339 : 9041034 : default:;
27340 : : }
27341 : 9041034 : switch (TREE_CODE (_p1))
27342 : : {
27343 : 3219751 : case SSA_NAME:
27344 : 3219751 : if (gimple *_d1 = get_def (valueize, _p1))
27345 : : {
27346 : 2554152 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27347 : 2461646 : switch (gimple_assign_rhs_code (_a1))
27348 : : {
27349 : 10583 : case BIT_IOR_EXPR:
27350 : 10583 : {
27351 : 10583 : tree _q30 = gimple_assign_rhs1 (_a1);
27352 : 10583 : _q30 = do_valueize (valueize, _q30);
27353 : 10583 : tree _q31 = gimple_assign_rhs2 (_a1);
27354 : 10583 : _q31 = do_valueize (valueize, _q31);
27355 : 10583 : if (tree_swap_operands_p (_q30, _q31))
27356 : 671 : std::swap (_q30, _q31);
27357 : 10583 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
27358 : : {
27359 : 5 : {
27360 : 5 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
27361 : 5 : if (gimple_simplify_145 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27362 : 5 : return true;
27363 : : }
27364 : : }
27365 : 10578 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
27366 : : {
27367 : 1 : {
27368 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
27369 : 1 : if (gimple_simplify_145 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27370 : 1 : return true;
27371 : : }
27372 : : }
27373 : 10577 : {
27374 : 10577 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
27375 : 10577 : if (gimple_simplify_146 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27376 : 7 : return true;
27377 : : }
27378 : 10570 : {
27379 : 10570 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _p0 };
27380 : 10570 : if (gimple_simplify_146 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27381 : 12 : return true;
27382 : : }
27383 : 10558 : break;
27384 : : }
27385 : : default:;
27386 : : }
27387 : : }
27388 : : break;
27389 : 9041009 : default:;
27390 : : }
27391 : 9041009 : switch (TREE_CODE (_p0))
27392 : : {
27393 : 8946241 : case SSA_NAME:
27394 : 8946241 : if (gimple *_d1 = get_def (valueize, _p0))
27395 : : {
27396 : 6155477 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27397 : 6687620 : switch (gimple_assign_rhs_code (_a1))
27398 : : {
27399 : 52054 : case BIT_AND_EXPR:
27400 : 52054 : {
27401 : 52054 : tree _q20 = gimple_assign_rhs1 (_a1);
27402 : 52054 : _q20 = do_valueize (valueize, _q20);
27403 : 52054 : tree _q21 = gimple_assign_rhs2 (_a1);
27404 : 52054 : _q21 = do_valueize (valueize, _q21);
27405 : 52054 : if (tree_swap_operands_p (_q20, _q21))
27406 : 3277 : std::swap (_q20, _q21);
27407 : 52054 : switch (TREE_CODE (_p1))
27408 : : {
27409 : 38952 : case SSA_NAME:
27410 : 38952 : if (gimple *_d2 = get_def (valueize, _p1))
27411 : : {
27412 : 38705 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27413 : 40542 : switch (gimple_assign_rhs_code (_a2))
27414 : : {
27415 : 889 : case BIT_IOR_EXPR:
27416 : 889 : {
27417 : 889 : tree _q50 = gimple_assign_rhs1 (_a2);
27418 : 889 : _q50 = do_valueize (valueize, _q50);
27419 : 889 : tree _q51 = gimple_assign_rhs2 (_a2);
27420 : 889 : _q51 = do_valueize (valueize, _q51);
27421 : 889 : if (tree_swap_operands_p (_q50, _q51))
27422 : 135 : std::swap (_q50, _q51);
27423 : 889 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
27424 : : {
27425 : 0 : {
27426 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q51, _p0, _q21 };
27427 : 0 : if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27428 : 0 : return true;
27429 : : }
27430 : : }
27431 : 889 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
27432 : : {
27433 : 0 : {
27434 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q51, _p0, _q20 };
27435 : 0 : if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27436 : 0 : return true;
27437 : : }
27438 : : }
27439 : 889 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
27440 : : {
27441 : 0 : {
27442 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q50, _p0, _q21 };
27443 : 0 : if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27444 : 0 : return true;
27445 : : }
27446 : : }
27447 : 889 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
27448 : : {
27449 : 0 : {
27450 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q50, _p0, _q20 };
27451 : 0 : if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27452 : 0 : return true;
27453 : : }
27454 : : }
27455 : 9041009 : break;
27456 : : }
27457 : : default:;
27458 : : }
27459 : : }
27460 : : break;
27461 : : default:;
27462 : : }
27463 : 9041009 : break;
27464 : : }
27465 : 62423 : case BIT_NOT_EXPR:
27466 : 62423 : {
27467 : 62423 : tree _q20 = gimple_assign_rhs1 (_a1);
27468 : 62423 : _q20 = do_valueize (valueize, _q20);
27469 : 62423 : switch (TREE_CODE (_q20))
27470 : : {
27471 : 62423 : case SSA_NAME:
27472 : 62423 : if (gimple *_d2 = get_def (valueize, _q20))
27473 : : {
27474 : 58523 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27475 : 51869 : switch (gimple_assign_rhs_code (_a2))
27476 : : {
27477 : 1780 : case BIT_IOR_EXPR:
27478 : 1780 : {
27479 : 1780 : tree _q30 = gimple_assign_rhs1 (_a2);
27480 : 1780 : _q30 = do_valueize (valueize, _q30);
27481 : 1780 : tree _q31 = gimple_assign_rhs2 (_a2);
27482 : 1780 : _q31 = do_valueize (valueize, _q31);
27483 : 1780 : if (tree_swap_operands_p (_q30, _q31))
27484 : 88 : std::swap (_q30, _q31);
27485 : 1780 : switch (TREE_CODE (_p1))
27486 : : {
27487 : 1714 : case SSA_NAME:
27488 : 1714 : if (gimple *_d3 = get_def (valueize, _p1))
27489 : : {
27490 : 1710 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27491 : 1507 : switch (gimple_assign_rhs_code (_a3))
27492 : : {
27493 : 0 : case BIT_IOR_EXPR:
27494 : 0 : {
27495 : 0 : tree _q60 = gimple_assign_rhs1 (_a3);
27496 : 0 : _q60 = do_valueize (valueize, _q60);
27497 : 0 : tree _q61 = gimple_assign_rhs2 (_a3);
27498 : 0 : _q61 = do_valueize (valueize, _q61);
27499 : 0 : if (tree_swap_operands_p (_q60, _q61))
27500 : 0 : std::swap (_q60, _q61);
27501 : 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
27502 : : {
27503 : 0 : {
27504 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q60, _q30, _p0, _q31 };
27505 : 0 : if (gimple_simplify_152 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27506 : 0 : return true;
27507 : : }
27508 : : }
27509 : 0 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
27510 : : {
27511 : 0 : {
27512 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q60, _q31, _p0, _q30 };
27513 : 0 : if (gimple_simplify_152 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27514 : 0 : return true;
27515 : : }
27516 : : }
27517 : 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
27518 : : {
27519 : 0 : {
27520 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q61, _q30, _p0, _q31 };
27521 : 0 : if (gimple_simplify_152 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27522 : 0 : return true;
27523 : : }
27524 : : }
27525 : 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
27526 : : {
27527 : 0 : {
27528 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q61, _q31, _p0, _q30 };
27529 : 0 : if (gimple_simplify_152 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27530 : 0 : return true;
27531 : : }
27532 : : }
27533 : 1780 : break;
27534 : : }
27535 : : default:;
27536 : : }
27537 : : }
27538 : : break;
27539 : 1780 : default:;
27540 : : }
27541 : 1780 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
27542 : : {
27543 : 0 : {
27544 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
27545 : 0 : if (gimple_simplify_153 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27546 : 0 : return true;
27547 : : }
27548 : : }
27549 : 1780 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
27550 : : {
27551 : 0 : {
27552 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
27553 : 0 : if (gimple_simplify_153 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27554 : 0 : return true;
27555 : : }
27556 : : }
27557 : 9041009 : break;
27558 : : }
27559 : : default:;
27560 : : }
27561 : : }
27562 : : break;
27563 : : default:;
27564 : : }
27565 : : break;
27566 : : }
27567 : : default:;
27568 : : }
27569 : : }
27570 : : break;
27571 : 9041009 : default:;
27572 : : }
27573 : 9041009 : switch (TREE_CODE (_p1))
27574 : : {
27575 : 3219726 : case SSA_NAME:
27576 : 3219726 : if (gimple *_d1 = get_def (valueize, _p1))
27577 : : {
27578 : 2554127 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27579 : 2461621 : switch (gimple_assign_rhs_code (_a1))
27580 : : {
27581 : 173792 : case BIT_NOT_EXPR:
27582 : 173792 : {
27583 : 173792 : tree _q30 = gimple_assign_rhs1 (_a1);
27584 : 173792 : _q30 = do_valueize (valueize, _q30);
27585 : 173792 : switch (TREE_CODE (_q30))
27586 : : {
27587 : 173792 : case SSA_NAME:
27588 : 173792 : if (gimple *_d2 = get_def (valueize, _q30))
27589 : : {
27590 : 149199 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27591 : 146825 : switch (gimple_assign_rhs_code (_a2))
27592 : : {
27593 : 2593 : case BIT_IOR_EXPR:
27594 : 2593 : {
27595 : 2593 : tree _q40 = gimple_assign_rhs1 (_a2);
27596 : 2593 : _q40 = do_valueize (valueize, _q40);
27597 : 2593 : tree _q41 = gimple_assign_rhs2 (_a2);
27598 : 2593 : _q41 = do_valueize (valueize, _q41);
27599 : 2593 : if (tree_swap_operands_p (_q40, _q41))
27600 : 105 : std::swap (_q40, _q41);
27601 : 2593 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
27602 : : {
27603 : 1 : {
27604 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
27605 : 1 : if (gimple_simplify_153 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27606 : 1 : return true;
27607 : : }
27608 : : }
27609 : 2592 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
27610 : : {
27611 : 0 : {
27612 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
27613 : 0 : if (gimple_simplify_153 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR))
27614 : 0 : return true;
27615 : : }
27616 : : }
27617 : 9041008 : break;
27618 : : }
27619 : : default:;
27620 : : }
27621 : : }
27622 : : break;
27623 : : default:;
27624 : : }
27625 : : break;
27626 : : }
27627 : : default:;
27628 : : }
27629 : : }
27630 : : break;
27631 : 9041008 : default:;
27632 : : }
27633 : 9041008 : switch (TREE_CODE (_p0))
27634 : : {
27635 : 8946240 : case SSA_NAME:
27636 : 8946240 : if (gimple *_d1 = get_def (valueize, _p0))
27637 : : {
27638 : 6155476 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27639 : 6687619 : switch (gimple_assign_rhs_code (_a1))
27640 : : {
27641 : 153273 : case BIT_IOR_EXPR:
27642 : 153273 : {
27643 : 153273 : tree _q20 = gimple_assign_rhs1 (_a1);
27644 : 153273 : _q20 = do_valueize (valueize, _q20);
27645 : 153273 : tree _q21 = gimple_assign_rhs2 (_a1);
27646 : 153273 : _q21 = do_valueize (valueize, _q21);
27647 : 153273 : if (tree_swap_operands_p (_q20, _q21))
27648 : 8554 : std::swap (_q20, _q21);
27649 : 153273 : if (CONSTANT_CLASS_P (_q21))
27650 : : {
27651 : 21099 : if (CONSTANT_CLASS_P (_p1))
27652 : : {
27653 : 11586 : {
27654 : 11586 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
27655 : 11586 : gimple_seq *lseq = seq;
27656 : 11586 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2714;
27657 : 11586 : {
27658 : 11586 : res_op->set_op (BIT_IOR_EXPR, type, 2);
27659 : 11586 : {
27660 : 11586 : tree _o1[2], _r1;
27661 : 11586 : _o1[0] = captures[0];
27662 : 11586 : _o1[1] = captures[2];
27663 : 11586 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
27664 : 11586 : tem_op.resimplify (lseq, valueize);
27665 : 11586 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
27666 : 11586 : if (!_r1) goto next_after_fail2714;
27667 : 5407 : res_op->ops[0] = _r1;
27668 : : }
27669 : 5407 : {
27670 : 5407 : tree _o1[2], _r1;
27671 : 5407 : _o1[0] = captures[1];
27672 : 5407 : _o1[1] = captures[2];
27673 : 5407 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
27674 : 5407 : tem_op.resimplify (NULL, valueize);
27675 : 5407 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
27676 : 5407 : if (!_r1) goto next_after_fail2714;
27677 : 5407 : res_op->ops[1] = _r1;
27678 : : }
27679 : 5407 : res_op->resimplify (lseq, valueize);
27680 : 5407 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1210, __FILE__, __LINE__, true);
27681 : 5407 : return true;
27682 : : }
27683 : 6179 : next_after_fail2714:;
27684 : : }
27685 : : }
27686 : : }
27687 : 9030125 : break;
27688 : : }
27689 : 52054 : case BIT_AND_EXPR:
27690 : 52054 : {
27691 : 52054 : tree _q20 = gimple_assign_rhs1 (_a1);
27692 : 52054 : _q20 = do_valueize (valueize, _q20);
27693 : 52054 : tree _q21 = gimple_assign_rhs2 (_a1);
27694 : 52054 : _q21 = do_valueize (valueize, _q21);
27695 : 52054 : if (tree_swap_operands_p (_q20, _q21))
27696 : 3277 : std::swap (_q20, _q21);
27697 : 52054 : if (CONSTANT_CLASS_P (_q21))
27698 : : {
27699 : 6893 : if (CONSTANT_CLASS_P (_p1))
27700 : : {
27701 : 5476 : {
27702 : 5476 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
27703 : 5476 : if (gimple_simplify_34 (res_op, seq, valueize, type, captures, BIT_AND_EXPR))
27704 : 5476 : return true;
27705 : : }
27706 : : }
27707 : : }
27708 : 9030125 : break;
27709 : : }
27710 : : default:;
27711 : : }
27712 : : }
27713 : : break;
27714 : 9030125 : default:;
27715 : : }
27716 : 9030125 : {
27717 : 9030125 : tree _p1_pops[1];
27718 : 9030125 : if (gimple_logical_inverted_value (_p1, _p1_pops, valueize))
27719 : : {
27720 : 131636 : tree _q30 = _p1_pops[0];
27721 : 131636 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
27722 : : {
27723 : 0 : {
27724 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
27725 : 0 : if (gimple_simplify_561 (res_op, seq, valueize, type, captures))
27726 : 0 : return true;
27727 : : }
27728 : : }
27729 : : }
27730 : : }
27731 : 9030125 : switch (TREE_CODE (_p0))
27732 : : {
27733 : 8935357 : case SSA_NAME:
27734 : 8935357 : if (gimple *_d1 = get_def (valueize, _p0))
27735 : : {
27736 : 6144593 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27737 : 6676736 : switch (gimple_assign_rhs_code (_a1))
27738 : : {
27739 : 426827 : CASE_CONVERT:
27740 : 426827 : {
27741 : 426827 : tree _q20 = gimple_assign_rhs1 (_a1);
27742 : 426827 : _q20 = do_valueize (valueize, _q20);
27743 : 426827 : switch (TREE_CODE (_q20))
27744 : : {
27745 : 425685 : case SSA_NAME:
27746 : 425685 : if (gimple *_d2 = get_def (valueize, _q20))
27747 : : {
27748 : 395220 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27749 : 389778 : switch (gimple_assign_rhs_code (_a2))
27750 : : {
27751 : 1172 : case NEGATE_EXPR:
27752 : 1172 : {
27753 : 1172 : tree _q30 = gimple_assign_rhs1 (_a2);
27754 : 1172 : _q30 = do_valueize (valueize, _q30);
27755 : 1172 : if (gimple_zero_one_valued_p (_q30, valueize))
27756 : : {
27757 : 2 : {
27758 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
27759 : 2 : if (gimple_simplify_555 (res_op, seq, valueize, type, captures))
27760 : 2 : return true;
27761 : : }
27762 : : }
27763 : : break;
27764 : : }
27765 : : default:;
27766 : : }
27767 : : }
27768 : : break;
27769 : : default:;
27770 : : }
27771 : : break;
27772 : : }
27773 : : default:;
27774 : : }
27775 : : }
27776 : : break;
27777 : 9030123 : default:;
27778 : : }
27779 : 9030123 : {
27780 : 9030123 : tree _p0_pops[1];
27781 : 9030123 : if (gimple_logical_inverted_value (_p0, _p0_pops, valueize))
27782 : : {
27783 : 136891 : tree _q20 = _p0_pops[0];
27784 : 136891 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
27785 : : {
27786 : 0 : {
27787 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
27788 : 0 : if (gimple_simplify_561 (res_op, seq, valueize, type, captures))
27789 : 0 : return true;
27790 : : }
27791 : : }
27792 : : }
27793 : : }
27794 : 9030123 : switch (TREE_CODE (_p1))
27795 : : {
27796 : 3219723 : case SSA_NAME:
27797 : 3219723 : if (gimple *_d1 = get_def (valueize, _p1))
27798 : : {
27799 : 2554124 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27800 : 2461616 : switch (gimple_assign_rhs_code (_a1))
27801 : : {
27802 : 104254 : CASE_CONVERT:
27803 : 104254 : {
27804 : 104254 : tree _q30 = gimple_assign_rhs1 (_a1);
27805 : 104254 : _q30 = do_valueize (valueize, _q30);
27806 : 104254 : switch (TREE_CODE (_q30))
27807 : : {
27808 : 104222 : case SSA_NAME:
27809 : 104222 : if (gimple *_d2 = get_def (valueize, _q30))
27810 : : {
27811 : 101376 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27812 : 92793 : switch (gimple_assign_rhs_code (_a2))
27813 : : {
27814 : 683 : case NEGATE_EXPR:
27815 : 683 : {
27816 : 683 : tree _q40 = gimple_assign_rhs1 (_a2);
27817 : 683 : _q40 = do_valueize (valueize, _q40);
27818 : 683 : if (gimple_zero_one_valued_p (_q40, valueize))
27819 : : {
27820 : 6 : {
27821 : 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
27822 : 6 : if (gimple_simplify_555 (res_op, seq, valueize, type, captures))
27823 : 6 : return true;
27824 : : }
27825 : : }
27826 : : break;
27827 : : }
27828 : : default:;
27829 : : }
27830 : : }
27831 : : break;
27832 : : default:;
27833 : : }
27834 : : break;
27835 : : }
27836 : 26662 : case NEGATE_EXPR:
27837 : 26662 : {
27838 : 26662 : tree _q30 = gimple_assign_rhs1 (_a1);
27839 : 26662 : _q30 = do_valueize (valueize, _q30);
27840 : 26662 : if (gimple_zero_one_valued_p (_q30, valueize))
27841 : : {
27842 : 758 : {
27843 : 758 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
27844 : 758 : if (gimple_simplify_555 (res_op, seq, valueize, type, captures))
27845 : 758 : return true;
27846 : : }
27847 : : }
27848 : : break;
27849 : : }
27850 : : default:;
27851 : : }
27852 : : }
27853 : : break;
27854 : 9029359 : default:;
27855 : : }
27856 : 9029359 : switch (TREE_CODE (_p0))
27857 : : {
27858 : 8934591 : case SSA_NAME:
27859 : 8934591 : if (gimple *_d1 = get_def (valueize, _p0))
27860 : : {
27861 : 6144097 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
27862 : 6676238 : switch (gimple_assign_rhs_code (_a1))
27863 : : {
27864 : 45544 : case NEGATE_EXPR:
27865 : 45544 : {
27866 : 45544 : tree _q20 = gimple_assign_rhs1 (_a1);
27867 : 45544 : _q20 = do_valueize (valueize, _q20);
27868 : 45544 : switch (TREE_CODE (_q20))
27869 : : {
27870 : 45544 : case SSA_NAME:
27871 : 45544 : if (gimple *_d2 = get_def (valueize, _q20))
27872 : : {
27873 : 37824 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
27874 : 21570 : switch (gimple_assign_rhs_code (_a2))
27875 : : {
27876 : 15571 : CASE_CONVERT:
27877 : 15571 : {
27878 : 15571 : tree _q30 = gimple_assign_rhs1 (_a2);
27879 : 15571 : _q30 = do_valueize (valueize, _q30);
27880 : 15571 : switch (TREE_CODE (_q30))
27881 : : {
27882 : 15458 : case SSA_NAME:
27883 : 15458 : if (gimple *_d3 = get_def (valueize, _q30))
27884 : : {
27885 : 15351 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
27886 : 2846 : switch (gimple_assign_rhs_code (_a3))
27887 : : {
27888 : 0 : case LT_EXPR:
27889 : 0 : {
27890 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27891 : 0 : _q40 = do_valueize (valueize, _q40);
27892 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27893 : 0 : _q41 = do_valueize (valueize, _q41);
27894 : 0 : {
27895 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27896 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, LT_EXPR))
27897 : 0 : return true;
27898 : : }
27899 : 0 : break;
27900 : : }
27901 : 0 : case LE_EXPR:
27902 : 0 : {
27903 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27904 : 0 : _q40 = do_valueize (valueize, _q40);
27905 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27906 : 0 : _q41 = do_valueize (valueize, _q41);
27907 : 0 : {
27908 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27909 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, LE_EXPR))
27910 : 0 : return true;
27911 : : }
27912 : 0 : break;
27913 : : }
27914 : 0 : case EQ_EXPR:
27915 : 0 : {
27916 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27917 : 0 : _q40 = do_valueize (valueize, _q40);
27918 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27919 : 0 : _q41 = do_valueize (valueize, _q41);
27920 : 0 : if (tree_swap_operands_p (_q40, _q41))
27921 : 0 : std::swap (_q40, _q41);
27922 : 0 : {
27923 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27924 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, EQ_EXPR))
27925 : 0 : return true;
27926 : : }
27927 : 0 : break;
27928 : : }
27929 : 0 : case NE_EXPR:
27930 : 0 : {
27931 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27932 : 0 : _q40 = do_valueize (valueize, _q40);
27933 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27934 : 0 : _q41 = do_valueize (valueize, _q41);
27935 : 0 : if (tree_swap_operands_p (_q40, _q41))
27936 : 0 : std::swap (_q40, _q41);
27937 : 0 : {
27938 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27939 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, NE_EXPR))
27940 : 0 : return true;
27941 : : }
27942 : 0 : break;
27943 : : }
27944 : 0 : case GE_EXPR:
27945 : 0 : {
27946 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27947 : 0 : _q40 = do_valueize (valueize, _q40);
27948 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27949 : 0 : _q41 = do_valueize (valueize, _q41);
27950 : 0 : {
27951 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27952 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, GE_EXPR))
27953 : 0 : return true;
27954 : : }
27955 : 0 : break;
27956 : : }
27957 : 0 : case GT_EXPR:
27958 : 0 : {
27959 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27960 : 0 : _q40 = do_valueize (valueize, _q40);
27961 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27962 : 0 : _q41 = do_valueize (valueize, _q41);
27963 : 0 : {
27964 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27965 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, GT_EXPR))
27966 : 0 : return true;
27967 : : }
27968 : 0 : break;
27969 : : }
27970 : 0 : case UNORDERED_EXPR:
27971 : 0 : {
27972 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27973 : 0 : _q40 = do_valueize (valueize, _q40);
27974 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27975 : 0 : _q41 = do_valueize (valueize, _q41);
27976 : 0 : if (tree_swap_operands_p (_q40, _q41))
27977 : 0 : std::swap (_q40, _q41);
27978 : 0 : {
27979 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27980 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, UNORDERED_EXPR))
27981 : 0 : return true;
27982 : : }
27983 : 0 : break;
27984 : : }
27985 : 0 : case ORDERED_EXPR:
27986 : 0 : {
27987 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
27988 : 0 : _q40 = do_valueize (valueize, _q40);
27989 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
27990 : 0 : _q41 = do_valueize (valueize, _q41);
27991 : 0 : if (tree_swap_operands_p (_q40, _q41))
27992 : 0 : std::swap (_q40, _q41);
27993 : 0 : {
27994 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
27995 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, ORDERED_EXPR))
27996 : 0 : return true;
27997 : : }
27998 : 0 : break;
27999 : : }
28000 : 0 : case UNLT_EXPR:
28001 : 0 : {
28002 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
28003 : 0 : _q40 = do_valueize (valueize, _q40);
28004 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
28005 : 0 : _q41 = do_valueize (valueize, _q41);
28006 : 0 : {
28007 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
28008 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, UNLT_EXPR))
28009 : 0 : return true;
28010 : : }
28011 : 0 : break;
28012 : : }
28013 : 0 : case UNLE_EXPR:
28014 : 0 : {
28015 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
28016 : 0 : _q40 = do_valueize (valueize, _q40);
28017 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
28018 : 0 : _q41 = do_valueize (valueize, _q41);
28019 : 0 : {
28020 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
28021 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, UNLE_EXPR))
28022 : 0 : return true;
28023 : : }
28024 : 0 : break;
28025 : : }
28026 : 0 : case UNGT_EXPR:
28027 : 0 : {
28028 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
28029 : 0 : _q40 = do_valueize (valueize, _q40);
28030 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
28031 : 0 : _q41 = do_valueize (valueize, _q41);
28032 : 0 : {
28033 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
28034 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, UNGT_EXPR))
28035 : 0 : return true;
28036 : : }
28037 : 0 : break;
28038 : : }
28039 : 0 : case UNGE_EXPR:
28040 : 0 : {
28041 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
28042 : 0 : _q40 = do_valueize (valueize, _q40);
28043 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
28044 : 0 : _q41 = do_valueize (valueize, _q41);
28045 : 0 : {
28046 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
28047 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, UNGE_EXPR))
28048 : 0 : return true;
28049 : : }
28050 : 0 : break;
28051 : : }
28052 : 0 : case UNEQ_EXPR:
28053 : 0 : {
28054 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
28055 : 0 : _q40 = do_valueize (valueize, _q40);
28056 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
28057 : 0 : _q41 = do_valueize (valueize, _q41);
28058 : 0 : if (tree_swap_operands_p (_q40, _q41))
28059 : 0 : std::swap (_q40, _q41);
28060 : 0 : {
28061 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
28062 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, UNEQ_EXPR))
28063 : 0 : return true;
28064 : : }
28065 : 0 : break;
28066 : : }
28067 : 0 : case LTGT_EXPR:
28068 : 0 : {
28069 : 0 : tree _q40 = gimple_assign_rhs1 (_a3);
28070 : 0 : _q40 = do_valueize (valueize, _q40);
28071 : 0 : tree _q41 = gimple_assign_rhs2 (_a3);
28072 : 0 : _q41 = do_valueize (valueize, _q41);
28073 : 0 : if (tree_swap_operands_p (_q40, _q41))
28074 : 0 : std::swap (_q40, _q41);
28075 : 0 : {
28076 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p1 };
28077 : 0 : if (gimple_simplify_562 (res_op, seq, valueize, type, captures, LTGT_EXPR))
28078 : 0 : return true;
28079 : : }
28080 : 0 : break;
28081 : : }
28082 : : default:;
28083 : : }
28084 : : }
28085 : : break;
28086 : : default:;
28087 : : }
28088 : : break;
28089 : : }
28090 : : default:;
28091 : : }
28092 : : }
28093 : : break;
28094 : : default:;
28095 : : }
28096 : : break;
28097 : : }
28098 : : default:;
28099 : : }
28100 : : }
28101 : : break;
28102 : 9029359 : default:;
28103 : : }
28104 : 9029359 : switch (TREE_CODE (_p1))
28105 : : {
28106 : 3218959 : case SSA_NAME:
28107 : 3218959 : if (gimple *_d1 = get_def (valueize, _p1))
28108 : : {
28109 : 2553360 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
28110 : 2460852 : switch (gimple_assign_rhs_code (_a1))
28111 : : {
28112 : 25904 : case NEGATE_EXPR:
28113 : 25904 : {
28114 : 25904 : tree _q30 = gimple_assign_rhs1 (_a1);
28115 : 25904 : _q30 = do_valueize (valueize, _q30);
28116 : 25904 : switch (TREE_CODE (_q30))
28117 : : {
28118 : 25904 : case SSA_NAME:
28119 : 25904 : if (gimple *_d2 = get_def (valueize, _q30))
28120 : : {
28121 : 22005 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28122 : 23021 : switch (gimple_assign_rhs_code (_a2))
28123 : : {
28124 : 2647 : CASE_CONVERT:
28125 : 2647 : {
28126 : 2647 : tree _q40 = gimple_assign_rhs1 (_a2);
28127 : 2647 : _q40 = do_valueize (valueize, _q40);
28128 : 2647 : switch (TREE_CODE (_q40))
28129 : : {
28130 : 2647 : case SSA_NAME:
28131 : 2647 : if (gimple *_d3 = get_def (valueize, _q40))
28132 : : {
28133 : 2631 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
28134 : 1392 : switch (gimple_assign_rhs_code (_a3))
28135 : : {
28136 : 0 : case LT_EXPR:
28137 : 0 : {
28138 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28139 : 0 : _q50 = do_valueize (valueize, _q50);
28140 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28141 : 0 : _q51 = do_valueize (valueize, _q51);
28142 : 0 : {
28143 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28144 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, LT_EXPR))
28145 : 0 : return true;
28146 : : }
28147 : 0 : break;
28148 : : }
28149 : 0 : case LE_EXPR:
28150 : 0 : {
28151 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28152 : 0 : _q50 = do_valueize (valueize, _q50);
28153 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28154 : 0 : _q51 = do_valueize (valueize, _q51);
28155 : 0 : {
28156 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28157 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, LE_EXPR))
28158 : 0 : return true;
28159 : : }
28160 : 0 : break;
28161 : : }
28162 : 0 : case EQ_EXPR:
28163 : 0 : {
28164 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28165 : 0 : _q50 = do_valueize (valueize, _q50);
28166 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28167 : 0 : _q51 = do_valueize (valueize, _q51);
28168 : 0 : if (tree_swap_operands_p (_q50, _q51))
28169 : 0 : std::swap (_q50, _q51);
28170 : 0 : {
28171 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28172 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, EQ_EXPR))
28173 : 0 : return true;
28174 : : }
28175 : 0 : break;
28176 : : }
28177 : 0 : case NE_EXPR:
28178 : 0 : {
28179 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28180 : 0 : _q50 = do_valueize (valueize, _q50);
28181 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28182 : 0 : _q51 = do_valueize (valueize, _q51);
28183 : 0 : if (tree_swap_operands_p (_q50, _q51))
28184 : 0 : std::swap (_q50, _q51);
28185 : 0 : {
28186 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28187 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, NE_EXPR))
28188 : 0 : return true;
28189 : : }
28190 : 0 : break;
28191 : : }
28192 : 0 : case GE_EXPR:
28193 : 0 : {
28194 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28195 : 0 : _q50 = do_valueize (valueize, _q50);
28196 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28197 : 0 : _q51 = do_valueize (valueize, _q51);
28198 : 0 : {
28199 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28200 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, GE_EXPR))
28201 : 0 : return true;
28202 : : }
28203 : 0 : break;
28204 : : }
28205 : 0 : case GT_EXPR:
28206 : 0 : {
28207 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28208 : 0 : _q50 = do_valueize (valueize, _q50);
28209 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28210 : 0 : _q51 = do_valueize (valueize, _q51);
28211 : 0 : {
28212 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28213 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, GT_EXPR))
28214 : 0 : return true;
28215 : : }
28216 : 0 : break;
28217 : : }
28218 : 0 : case UNORDERED_EXPR:
28219 : 0 : {
28220 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28221 : 0 : _q50 = do_valueize (valueize, _q50);
28222 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28223 : 0 : _q51 = do_valueize (valueize, _q51);
28224 : 0 : if (tree_swap_operands_p (_q50, _q51))
28225 : 0 : std::swap (_q50, _q51);
28226 : 0 : {
28227 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28228 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, UNORDERED_EXPR))
28229 : 0 : return true;
28230 : : }
28231 : 0 : break;
28232 : : }
28233 : 0 : case ORDERED_EXPR:
28234 : 0 : {
28235 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28236 : 0 : _q50 = do_valueize (valueize, _q50);
28237 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28238 : 0 : _q51 = do_valueize (valueize, _q51);
28239 : 0 : if (tree_swap_operands_p (_q50, _q51))
28240 : 0 : std::swap (_q50, _q51);
28241 : 0 : {
28242 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28243 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, ORDERED_EXPR))
28244 : 0 : return true;
28245 : : }
28246 : 0 : break;
28247 : : }
28248 : 0 : case UNLT_EXPR:
28249 : 0 : {
28250 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28251 : 0 : _q50 = do_valueize (valueize, _q50);
28252 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28253 : 0 : _q51 = do_valueize (valueize, _q51);
28254 : 0 : {
28255 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28256 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, UNLT_EXPR))
28257 : 0 : return true;
28258 : : }
28259 : 0 : break;
28260 : : }
28261 : 0 : case UNLE_EXPR:
28262 : 0 : {
28263 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28264 : 0 : _q50 = do_valueize (valueize, _q50);
28265 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28266 : 0 : _q51 = do_valueize (valueize, _q51);
28267 : 0 : {
28268 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28269 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, UNLE_EXPR))
28270 : 0 : return true;
28271 : : }
28272 : 0 : break;
28273 : : }
28274 : 0 : case UNGT_EXPR:
28275 : 0 : {
28276 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28277 : 0 : _q50 = do_valueize (valueize, _q50);
28278 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28279 : 0 : _q51 = do_valueize (valueize, _q51);
28280 : 0 : {
28281 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28282 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, UNGT_EXPR))
28283 : 0 : return true;
28284 : : }
28285 : 0 : break;
28286 : : }
28287 : 0 : case UNGE_EXPR:
28288 : 0 : {
28289 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28290 : 0 : _q50 = do_valueize (valueize, _q50);
28291 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28292 : 0 : _q51 = do_valueize (valueize, _q51);
28293 : 0 : {
28294 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28295 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, UNGE_EXPR))
28296 : 0 : return true;
28297 : : }
28298 : 0 : break;
28299 : : }
28300 : 0 : case UNEQ_EXPR:
28301 : 0 : {
28302 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28303 : 0 : _q50 = do_valueize (valueize, _q50);
28304 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28305 : 0 : _q51 = do_valueize (valueize, _q51);
28306 : 0 : if (tree_swap_operands_p (_q50, _q51))
28307 : 0 : std::swap (_q50, _q51);
28308 : 0 : {
28309 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28310 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, UNEQ_EXPR))
28311 : 0 : return true;
28312 : : }
28313 : 0 : break;
28314 : : }
28315 : 0 : case LTGT_EXPR:
28316 : 0 : {
28317 : 0 : tree _q50 = gimple_assign_rhs1 (_a3);
28318 : 0 : _q50 = do_valueize (valueize, _q50);
28319 : 0 : tree _q51 = gimple_assign_rhs2 (_a3);
28320 : 0 : _q51 = do_valueize (valueize, _q51);
28321 : 0 : if (tree_swap_operands_p (_q50, _q51))
28322 : 0 : std::swap (_q50, _q51);
28323 : 0 : {
28324 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q50, _q51, _p0 };
28325 : 0 : if (gimple_simplify_563 (res_op, seq, valueize, type, captures, LTGT_EXPR))
28326 : 0 : return true;
28327 : : }
28328 : 0 : break;
28329 : : }
28330 : : default:;
28331 : : }
28332 : : }
28333 : : break;
28334 : : default:;
28335 : : }
28336 : : break;
28337 : : }
28338 : : default:;
28339 : : }
28340 : : }
28341 : : break;
28342 : : default:;
28343 : : }
28344 : : break;
28345 : : }
28346 : : default:;
28347 : : }
28348 : : }
28349 : : break;
28350 : 9029359 : default:;
28351 : : }
28352 : 9029359 : switch (TREE_CODE (_p0))
28353 : : {
28354 : 8934591 : case SSA_NAME:
28355 : 8934591 : if (gimple *_d1 = get_def (valueize, _p0))
28356 : : {
28357 : 6144097 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
28358 : 6676238 : switch (gimple_assign_rhs_code (_a1))
28359 : : {
28360 : 426819 : CASE_CONVERT:
28361 : 426819 : {
28362 : 426819 : tree _q20 = gimple_assign_rhs1 (_a1);
28363 : 426819 : _q20 = do_valueize (valueize, _q20);
28364 : 426819 : switch (TREE_CODE (_p1))
28365 : : {
28366 : 340798 : case INTEGER_CST:
28367 : 340798 : {
28368 : 340798 : {
28369 : 340798 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
28370 : 340798 : if (gimple_simplify_564 (res_op, seq, valueize, type, captures))
28371 : 912 : return true;
28372 : : }
28373 : 339886 : break;
28374 : : }
28375 : 425907 : default:;
28376 : : }
28377 : 425907 : switch (TREE_CODE (_q20))
28378 : : {
28379 : 425671 : case SSA_NAME:
28380 : 425671 : if (gimple *_d2 = get_def (valueize, _q20))
28381 : : {
28382 : 395206 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28383 : 389764 : switch (gimple_assign_rhs_code (_a2))
28384 : : {
28385 : 20112 : case LSHIFT_EXPR:
28386 : 20112 : {
28387 : 20112 : tree _q30 = gimple_assign_rhs1 (_a2);
28388 : 20112 : _q30 = do_valueize (valueize, _q30);
28389 : 20112 : tree _q31 = gimple_assign_rhs2 (_a2);
28390 : 20112 : _q31 = do_valueize (valueize, _q31);
28391 : 20112 : switch (TREE_CODE (_q30))
28392 : : {
28393 : 1028 : case SSA_NAME:
28394 : 1028 : if (gimple *_d3 = get_def (valueize, _q30))
28395 : : {
28396 : 957 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
28397 : 1255 : switch (gimple_assign_rhs_code (_a3))
28398 : : {
28399 : 63 : CASE_CONVERT:
28400 : 63 : {
28401 : 63 : tree _q40 = gimple_assign_rhs1 (_a3);
28402 : 63 : _q40 = do_valueize (valueize, _q40);
28403 : 63 : switch (TREE_CODE (_q31))
28404 : : {
28405 : 10 : case INTEGER_CST:
28406 : 10 : {
28407 : 10 : switch (TREE_CODE (_p1))
28408 : : {
28409 : 10 : case INTEGER_CST:
28410 : 10 : {
28411 : 10 : {
28412 : 10 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31, _p1 };
28413 : 10 : if (gimple_simplify_565 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
28414 : 0 : return true;
28415 : : }
28416 : 10 : break;
28417 : : }
28418 : : default:;
28419 : : }
28420 : : break;
28421 : : }
28422 : : default:;
28423 : : }
28424 : : break;
28425 : : }
28426 : : default:;
28427 : : }
28428 : : }
28429 : : break;
28430 : 20112 : default:;
28431 : : }
28432 : 20112 : switch (TREE_CODE (_q31))
28433 : : {
28434 : 30 : case INTEGER_CST:
28435 : 30 : {
28436 : 30 : switch (TREE_CODE (_p1))
28437 : : {
28438 : 30 : case INTEGER_CST:
28439 : 30 : {
28440 : 30 : {
28441 : 30 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q30, _q31, _p1 };
28442 : 30 : if (gimple_simplify_566 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
28443 : 0 : return true;
28444 : : }
28445 : 30 : break;
28446 : : }
28447 : : default:;
28448 : : }
28449 : : break;
28450 : : }
28451 : : default:;
28452 : : }
28453 : : break;
28454 : : }
28455 : 80117 : case RSHIFT_EXPR:
28456 : 80117 : {
28457 : 80117 : tree _q30 = gimple_assign_rhs1 (_a2);
28458 : 80117 : _q30 = do_valueize (valueize, _q30);
28459 : 80117 : tree _q31 = gimple_assign_rhs2 (_a2);
28460 : 80117 : _q31 = do_valueize (valueize, _q31);
28461 : 80117 : switch (TREE_CODE (_q30))
28462 : : {
28463 : 79908 : case SSA_NAME:
28464 : 79908 : if (gimple *_d3 = get_def (valueize, _q30))
28465 : : {
28466 : 71937 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
28467 : 67736 : switch (gimple_assign_rhs_code (_a3))
28468 : : {
28469 : 18287 : CASE_CONVERT:
28470 : 18287 : {
28471 : 18287 : tree _q40 = gimple_assign_rhs1 (_a3);
28472 : 18287 : _q40 = do_valueize (valueize, _q40);
28473 : 18287 : switch (TREE_CODE (_q31))
28474 : : {
28475 : 6618 : case INTEGER_CST:
28476 : 6618 : {
28477 : 6618 : switch (TREE_CODE (_p1))
28478 : : {
28479 : 5905 : case INTEGER_CST:
28480 : 5905 : {
28481 : 5905 : {
28482 : 5905 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31, _p1 };
28483 : 5905 : if (gimple_simplify_565 (res_op, seq, valueize, type, captures, RSHIFT_EXPR))
28484 : 0 : return true;
28485 : : }
28486 : 5905 : break;
28487 : : }
28488 : : default:;
28489 : : }
28490 : : break;
28491 : : }
28492 : 18287 : default:;
28493 : : }
28494 : 18287 : switch (TREE_CODE (_q40))
28495 : : {
28496 : 18287 : case SSA_NAME:
28497 : 18287 : if (gimple *_d4 = get_def (valueize, _q40))
28498 : : {
28499 : 18176 : if (gcall *_c4 = dyn_cast <gcall *> (_d4))
28500 : 12 : switch (gimple_call_combined_fn (_c4))
28501 : : {
28502 : 0 : case CFN_BUILT_IN_BSWAP128:
28503 : 0 : if (gimple_call_num_args (_c4) == 1)
28504 : : {
28505 : 0 : tree _q50 = gimple_call_arg (_c4, 0);
28506 : 0 : _q50 = do_valueize (valueize, _q50);
28507 : 0 : switch (TREE_CODE (_q31))
28508 : : {
28509 : 0 : case INTEGER_CST:
28510 : 0 : {
28511 : 0 : switch (TREE_CODE (_p1))
28512 : : {
28513 : 0 : case INTEGER_CST:
28514 : 0 : {
28515 : 0 : {
28516 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q40, _q50, _q31, _p1 };
28517 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128))
28518 : 0 : return true;
28519 : : }
28520 : 0 : break;
28521 : : }
28522 : : default:;
28523 : : }
28524 : : break;
28525 : : }
28526 : : default:;
28527 : : }
28528 : : }
28529 : : break;
28530 : 0 : case CFN_BUILT_IN_BSWAP16:
28531 : 0 : if (gimple_call_num_args (_c4) == 1)
28532 : : {
28533 : 0 : tree _q50 = gimple_call_arg (_c4, 0);
28534 : 0 : _q50 = do_valueize (valueize, _q50);
28535 : 0 : switch (TREE_CODE (_q31))
28536 : : {
28537 : 0 : case INTEGER_CST:
28538 : 0 : {
28539 : 0 : switch (TREE_CODE (_p1))
28540 : : {
28541 : 0 : case INTEGER_CST:
28542 : 0 : {
28543 : 0 : {
28544 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q40, _q50, _q31, _p1 };
28545 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16))
28546 : 0 : return true;
28547 : : }
28548 : 0 : break;
28549 : : }
28550 : : default:;
28551 : : }
28552 : : break;
28553 : : }
28554 : : default:;
28555 : : }
28556 : : }
28557 : : break;
28558 : 0 : case CFN_BUILT_IN_BSWAP32:
28559 : 0 : if (gimple_call_num_args (_c4) == 1)
28560 : : {
28561 : 0 : tree _q50 = gimple_call_arg (_c4, 0);
28562 : 0 : _q50 = do_valueize (valueize, _q50);
28563 : 0 : switch (TREE_CODE (_q31))
28564 : : {
28565 : 0 : case INTEGER_CST:
28566 : 0 : {
28567 : 0 : switch (TREE_CODE (_p1))
28568 : : {
28569 : 0 : case INTEGER_CST:
28570 : 0 : {
28571 : 0 : {
28572 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q40, _q50, _q31, _p1 };
28573 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
28574 : 0 : return true;
28575 : : }
28576 : 0 : break;
28577 : : }
28578 : : default:;
28579 : : }
28580 : : break;
28581 : : }
28582 : : default:;
28583 : : }
28584 : : }
28585 : : break;
28586 : 0 : case CFN_BUILT_IN_BSWAP64:
28587 : 0 : if (gimple_call_num_args (_c4) == 1)
28588 : : {
28589 : 0 : tree _q50 = gimple_call_arg (_c4, 0);
28590 : 0 : _q50 = do_valueize (valueize, _q50);
28591 : 0 : switch (TREE_CODE (_q31))
28592 : : {
28593 : 0 : case INTEGER_CST:
28594 : 0 : {
28595 : 0 : switch (TREE_CODE (_p1))
28596 : : {
28597 : 0 : case INTEGER_CST:
28598 : 0 : {
28599 : 0 : {
28600 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q40, _q50, _q31, _p1 };
28601 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64))
28602 : 0 : return true;
28603 : : }
28604 : 0 : break;
28605 : : }
28606 : : default:;
28607 : : }
28608 : : break;
28609 : : }
28610 : : default:;
28611 : : }
28612 : : }
28613 : : break;
28614 : : default:;
28615 : : }
28616 : : }
28617 : : break;
28618 : : default:;
28619 : : }
28620 : : break;
28621 : : }
28622 : : default:;
28623 : : }
28624 : : }
28625 : : break;
28626 : 80117 : default:;
28627 : : }
28628 : 80117 : switch (TREE_CODE (_q31))
28629 : : {
28630 : 61480 : case INTEGER_CST:
28631 : 61480 : {
28632 : 61480 : switch (TREE_CODE (_p1))
28633 : : {
28634 : 59243 : case INTEGER_CST:
28635 : 59243 : {
28636 : 59243 : {
28637 : 59243 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q30, _q31, _p1 };
28638 : 59243 : if (gimple_simplify_566 (res_op, seq, valueize, type, captures, RSHIFT_EXPR))
28639 : 0 : return true;
28640 : : }
28641 : 59243 : break;
28642 : : }
28643 : : default:;
28644 : : }
28645 : : break;
28646 : : }
28647 : 80117 : default:;
28648 : : }
28649 : 80117 : switch (TREE_CODE (_q30))
28650 : : {
28651 : 79908 : case SSA_NAME:
28652 : 79908 : if (gimple *_d3 = get_def (valueize, _q30))
28653 : : {
28654 : 71937 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
28655 : 406 : switch (gimple_call_combined_fn (_c3))
28656 : : {
28657 : 0 : case CFN_BUILT_IN_BSWAP128:
28658 : 0 : if (gimple_call_num_args (_c3) == 1)
28659 : : {
28660 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
28661 : 0 : _q40 = do_valueize (valueize, _q40);
28662 : 0 : switch (TREE_CODE (_q31))
28663 : : {
28664 : 0 : case INTEGER_CST:
28665 : 0 : {
28666 : 0 : switch (TREE_CODE (_p1))
28667 : : {
28668 : 0 : case INTEGER_CST:
28669 : 0 : {
28670 : 0 : {
28671 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q31, _p1 };
28672 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128))
28673 : 0 : return true;
28674 : : }
28675 : 0 : break;
28676 : : }
28677 : : default:;
28678 : : }
28679 : : break;
28680 : : }
28681 : : default:;
28682 : : }
28683 : : }
28684 : : break;
28685 : 0 : case CFN_BUILT_IN_BSWAP16:
28686 : 0 : if (gimple_call_num_args (_c3) == 1)
28687 : : {
28688 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
28689 : 0 : _q40 = do_valueize (valueize, _q40);
28690 : 0 : switch (TREE_CODE (_q31))
28691 : : {
28692 : 0 : case INTEGER_CST:
28693 : 0 : {
28694 : 0 : switch (TREE_CODE (_p1))
28695 : : {
28696 : 0 : case INTEGER_CST:
28697 : 0 : {
28698 : 0 : {
28699 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q31, _p1 };
28700 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16))
28701 : 0 : return true;
28702 : : }
28703 : 0 : break;
28704 : : }
28705 : : default:;
28706 : : }
28707 : : break;
28708 : : }
28709 : : default:;
28710 : : }
28711 : : }
28712 : : break;
28713 : 0 : case CFN_BUILT_IN_BSWAP32:
28714 : 0 : if (gimple_call_num_args (_c3) == 1)
28715 : : {
28716 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
28717 : 0 : _q40 = do_valueize (valueize, _q40);
28718 : 0 : switch (TREE_CODE (_q31))
28719 : : {
28720 : 0 : case INTEGER_CST:
28721 : 0 : {
28722 : 0 : switch (TREE_CODE (_p1))
28723 : : {
28724 : 0 : case INTEGER_CST:
28725 : 0 : {
28726 : 0 : {
28727 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q31, _p1 };
28728 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
28729 : 0 : return true;
28730 : : }
28731 : 0 : break;
28732 : : }
28733 : : default:;
28734 : : }
28735 : : break;
28736 : : }
28737 : : default:;
28738 : : }
28739 : : }
28740 : : break;
28741 : 0 : case CFN_BUILT_IN_BSWAP64:
28742 : 0 : if (gimple_call_num_args (_c3) == 1)
28743 : : {
28744 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
28745 : 0 : _q40 = do_valueize (valueize, _q40);
28746 : 0 : switch (TREE_CODE (_q31))
28747 : : {
28748 : 0 : case INTEGER_CST:
28749 : 0 : {
28750 : 0 : switch (TREE_CODE (_p1))
28751 : : {
28752 : 0 : case INTEGER_CST:
28753 : 0 : {
28754 : 0 : {
28755 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q31, _p1 };
28756 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64))
28757 : 0 : return true;
28758 : : }
28759 : 0 : break;
28760 : : }
28761 : : default:;
28762 : : }
28763 : : break;
28764 : : }
28765 : : default:;
28766 : : }
28767 : : }
28768 : : break;
28769 : : default:;
28770 : : }
28771 : : }
28772 : : break;
28773 : : default:;
28774 : : }
28775 : : break;
28776 : : }
28777 : : default:;
28778 : : }
28779 : 91142 : else if (gcall *_c2 = dyn_cast <gcall *> (_d2))
28780 : 7026 : switch (gimple_call_combined_fn (_c2))
28781 : : {
28782 : 0 : case CFN_BUILT_IN_BSWAP128:
28783 : 0 : if (gimple_call_num_args (_c2) == 1)
28784 : : {
28785 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
28786 : 0 : _q30 = do_valueize (valueize, _q30);
28787 : 0 : switch (TREE_CODE (_p1))
28788 : : {
28789 : 0 : case INTEGER_CST:
28790 : 0 : {
28791 : 0 : {
28792 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
28793 : 0 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128))
28794 : 0 : return true;
28795 : : }
28796 : 0 : break;
28797 : : }
28798 : : default:;
28799 : : }
28800 : : }
28801 : : break;
28802 : 2 : case CFN_BUILT_IN_BSWAP16:
28803 : 2 : if (gimple_call_num_args (_c2) == 1)
28804 : : {
28805 : 2 : tree _q30 = gimple_call_arg (_c2, 0);
28806 : 2 : _q30 = do_valueize (valueize, _q30);
28807 : 2 : switch (TREE_CODE (_p1))
28808 : : {
28809 : 2 : case INTEGER_CST:
28810 : 2 : {
28811 : 2 : {
28812 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
28813 : 2 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16))
28814 : 0 : return true;
28815 : : }
28816 : 2 : break;
28817 : : }
28818 : : default:;
28819 : : }
28820 : : }
28821 : : break;
28822 : 13 : case CFN_BUILT_IN_BSWAP32:
28823 : 13 : if (gimple_call_num_args (_c2) == 1)
28824 : : {
28825 : 13 : tree _q30 = gimple_call_arg (_c2, 0);
28826 : 13 : _q30 = do_valueize (valueize, _q30);
28827 : 13 : switch (TREE_CODE (_p1))
28828 : : {
28829 : 13 : case INTEGER_CST:
28830 : 13 : {
28831 : 13 : {
28832 : 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
28833 : 13 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
28834 : 0 : return true;
28835 : : }
28836 : 13 : break;
28837 : : }
28838 : : default:;
28839 : : }
28840 : : }
28841 : : break;
28842 : 16 : case CFN_BUILT_IN_BSWAP64:
28843 : 16 : if (gimple_call_num_args (_c2) == 1)
28844 : : {
28845 : 16 : tree _q30 = gimple_call_arg (_c2, 0);
28846 : 16 : _q30 = do_valueize (valueize, _q30);
28847 : 16 : switch (TREE_CODE (_p1))
28848 : : {
28849 : 16 : case INTEGER_CST:
28850 : 16 : {
28851 : 16 : {
28852 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
28853 : 16 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64))
28854 : 4 : return true;
28855 : : }
28856 : 12 : break;
28857 : : }
28858 : : default:;
28859 : : }
28860 : : }
28861 : : break;
28862 : : default:;
28863 : : }
28864 : : }
28865 : : break;
28866 : : default:;
28867 : : }
28868 : : break;
28869 : : }
28870 : : default:;
28871 : : }
28872 : : }
28873 : : break;
28874 : 9028443 : default:;
28875 : : }
28876 : 9028443 : switch (TREE_CODE (_p1))
28877 : : {
28878 : 5762840 : case INTEGER_CST:
28879 : 5762840 : {
28880 : 5762840 : {
28881 : 5762840 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
28882 : 5762840 : if (gimple_simplify_564 (res_op, seq, valueize, type, captures))
28883 : 0 : return true;
28884 : : }
28885 : 5762840 : break;
28886 : : }
28887 : 9028443 : default:;
28888 : : }
28889 : 9028443 : switch (TREE_CODE (_p0))
28890 : : {
28891 : 8933675 : case SSA_NAME:
28892 : 8933675 : if (gimple *_d1 = get_def (valueize, _p0))
28893 : : {
28894 : 6143181 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
28895 : 6675322 : switch (gimple_assign_rhs_code (_a1))
28896 : : {
28897 : 130462 : case GT_EXPR:
28898 : 130462 : {
28899 : 130462 : tree _q20 = gimple_assign_rhs1 (_a1);
28900 : 130462 : _q20 = do_valueize (valueize, _q20);
28901 : 130462 : tree _q21 = gimple_assign_rhs2 (_a1);
28902 : 130462 : _q21 = do_valueize (valueize, _q21);
28903 : 130462 : switch (TREE_CODE (_p1))
28904 : : {
28905 : 130462 : case SSA_NAME:
28906 : 130462 : if (gimple *_d2 = get_def (valueize, _p1))
28907 : : {
28908 : 129862 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28909 : 128953 : switch (gimple_assign_rhs_code (_a2))
28910 : : {
28911 : 8090 : case EQ_EXPR:
28912 : 8090 : {
28913 : 8090 : tree _q50 = gimple_assign_rhs1 (_a2);
28914 : 8090 : _q50 = do_valueize (valueize, _q50);
28915 : 8090 : tree _q51 = gimple_assign_rhs2 (_a2);
28916 : 8090 : _q51 = do_valueize (valueize, _q51);
28917 : 8090 : if (tree_swap_operands_p (_q50, _q51))
28918 : 6 : std::swap (_q50, _q51);
28919 : 8090 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
28920 : : {
28921 : 55 : if (gimple_min_value (_q51, valueize))
28922 : : {
28923 : 6 : {
28924 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
28925 : 6 : if (gimple_simplify_569 (res_op, seq, valueize, type, captures, EQ_EXPR))
28926 : 6 : return true;
28927 : : }
28928 : : }
28929 : : }
28930 : 8084 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
28931 : : {
28932 : 2 : if (gimple_max_value (_q51, valueize))
28933 : : {
28934 : 0 : {
28935 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
28936 : 0 : if (gimple_simplify_570 (res_op, seq, valueize, type, captures, EQ_EXPR))
28937 : 0 : return true;
28938 : : }
28939 : : }
28940 : : }
28941 : 129721 : break;
28942 : : }
28943 : 23962 : case NE_EXPR:
28944 : 23962 : {
28945 : 23962 : tree _q50 = gimple_assign_rhs1 (_a2);
28946 : 23962 : _q50 = do_valueize (valueize, _q50);
28947 : 23962 : tree _q51 = gimple_assign_rhs2 (_a2);
28948 : 23962 : _q51 = do_valueize (valueize, _q51);
28949 : 23962 : if (tree_swap_operands_p (_q50, _q51))
28950 : 8 : std::swap (_q50, _q51);
28951 : 23962 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
28952 : : {
28953 : 4658 : if (gimple_min_value (_q51, valueize))
28954 : : {
28955 : 733 : {
28956 : 733 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
28957 : 733 : if (gimple_simplify_569 (res_op, seq, valueize, type, captures, NE_EXPR))
28958 : 733 : return true;
28959 : : }
28960 : : }
28961 : : }
28962 : 23229 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
28963 : : {
28964 : 1289 : if (gimple_max_value (_q51, valueize))
28965 : : {
28966 : 2 : {
28967 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
28968 : 2 : if (gimple_simplify_570 (res_op, seq, valueize, type, captures, NE_EXPR))
28969 : 2 : return true;
28970 : : }
28971 : : }
28972 : : }
28973 : 129721 : break;
28974 : : }
28975 : : default:;
28976 : : }
28977 : : }
28978 : : break;
28979 : 129721 : default:;
28980 : : }
28981 : 129721 : switch (TREE_CODE (_q20))
28982 : : {
28983 : 129682 : case SSA_NAME:
28984 : 129682 : if (gimple *_d2 = get_def (valueize, _q20))
28985 : : {
28986 : 117901 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
28987 : 90467 : switch (gimple_assign_rhs_code (_a2))
28988 : : {
28989 : 16181 : CASE_CONVERT:
28990 : 16181 : {
28991 : 16181 : tree _q30 = gimple_assign_rhs1 (_a2);
28992 : 16181 : _q30 = do_valueize (valueize, _q30);
28993 : 16181 : switch (TREE_CODE (_p1))
28994 : : {
28995 : 16181 : case SSA_NAME:
28996 : 16181 : if (gimple *_d3 = get_def (valueize, _p1))
28997 : : {
28998 : 16175 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
28999 : 16171 : switch (gimple_assign_rhs_code (_a3))
29000 : : {
29001 : 409 : case EQ_EXPR:
29002 : 409 : {
29003 : 409 : tree _q60 = gimple_assign_rhs1 (_a3);
29004 : 409 : _q60 = do_valueize (valueize, _q60);
29005 : 409 : tree _q61 = gimple_assign_rhs2 (_a3);
29006 : 409 : _q61 = do_valueize (valueize, _q61);
29007 : 409 : if (tree_swap_operands_p (_q60, _q61))
29008 : 0 : std::swap (_q60, _q61);
29009 : 409 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
29010 : : {
29011 : 4 : {
29012 : 4 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
29013 : 4 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29014 : 0 : return true;
29015 : : }
29016 : : }
29017 : 409 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
29018 : : {
29019 : 0 : {
29020 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
29021 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29022 : 0 : return true;
29023 : : }
29024 : : }
29025 : 129699 : break;
29026 : : }
29027 : 2700 : case NE_EXPR:
29028 : 2700 : {
29029 : 2700 : tree _q60 = gimple_assign_rhs1 (_a3);
29030 : 2700 : _q60 = do_valueize (valueize, _q60);
29031 : 2700 : tree _q61 = gimple_assign_rhs2 (_a3);
29032 : 2700 : _q61 = do_valueize (valueize, _q61);
29033 : 2700 : if (tree_swap_operands_p (_q60, _q61))
29034 : 0 : std::swap (_q60, _q61);
29035 : 2700 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
29036 : : {
29037 : 63 : {
29038 : 63 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
29039 : 63 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29040 : 22 : return true;
29041 : : }
29042 : : }
29043 : 2678 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
29044 : : {
29045 : 0 : {
29046 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
29047 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29048 : 0 : return true;
29049 : : }
29050 : : }
29051 : 129699 : break;
29052 : : }
29053 : : default:;
29054 : : }
29055 : : }
29056 : : break;
29057 : : default:;
29058 : : }
29059 : : break;
29060 : : }
29061 : : default:;
29062 : : }
29063 : : }
29064 : : break;
29065 : 129699 : default:;
29066 : : }
29067 : 129699 : switch (TREE_CODE (_q21))
29068 : : {
29069 : 28685 : case SSA_NAME:
29070 : 28685 : if (gimple *_d2 = get_def (valueize, _q21))
29071 : : {
29072 : 25955 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
29073 : 21646 : switch (gimple_assign_rhs_code (_a2))
29074 : : {
29075 : 5874 : CASE_CONVERT:
29076 : 5874 : {
29077 : 5874 : tree _q40 = gimple_assign_rhs1 (_a2);
29078 : 5874 : _q40 = do_valueize (valueize, _q40);
29079 : 5874 : switch (TREE_CODE (_p1))
29080 : : {
29081 : 5874 : case SSA_NAME:
29082 : 5874 : if (gimple *_d3 = get_def (valueize, _p1))
29083 : : {
29084 : 5872 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
29085 : 5862 : switch (gimple_assign_rhs_code (_a3))
29086 : : {
29087 : 3 : case EQ_EXPR:
29088 : 3 : {
29089 : 3 : tree _q60 = gimple_assign_rhs1 (_a3);
29090 : 3 : _q60 = do_valueize (valueize, _q60);
29091 : 3 : tree _q61 = gimple_assign_rhs2 (_a3);
29092 : 3 : _q61 = do_valueize (valueize, _q61);
29093 : 3 : if (tree_swap_operands_p (_q60, _q61))
29094 : 0 : std::swap (_q60, _q61);
29095 : 3 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
29096 : : {
29097 : 0 : {
29098 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
29099 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29100 : 0 : return true;
29101 : : }
29102 : : }
29103 : 3 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
29104 : : {
29105 : 0 : {
29106 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
29107 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29108 : 0 : return true;
29109 : : }
29110 : : }
29111 : 129699 : break;
29112 : : }
29113 : 887 : case NE_EXPR:
29114 : 887 : {
29115 : 887 : tree _q60 = gimple_assign_rhs1 (_a3);
29116 : 887 : _q60 = do_valueize (valueize, _q60);
29117 : 887 : tree _q61 = gimple_assign_rhs2 (_a3);
29118 : 887 : _q61 = do_valueize (valueize, _q61);
29119 : 887 : if (tree_swap_operands_p (_q60, _q61))
29120 : 0 : std::swap (_q60, _q61);
29121 : 887 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
29122 : : {
29123 : 762 : {
29124 : 762 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
29125 : 762 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29126 : 0 : return true;
29127 : : }
29128 : : }
29129 : 887 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
29130 : : {
29131 : 0 : {
29132 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
29133 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29134 : 0 : return true;
29135 : : }
29136 : : }
29137 : 129699 : break;
29138 : : }
29139 : : default:;
29140 : : }
29141 : : }
29142 : : break;
29143 : : default:;
29144 : : }
29145 : : break;
29146 : : }
29147 : : default:;
29148 : : }
29149 : : }
29150 : : break;
29151 : 129699 : default:;
29152 : : }
29153 : 129699 : switch (TREE_CODE (_p1))
29154 : : {
29155 : 129699 : case SSA_NAME:
29156 : 129699 : if (gimple *_d2 = get_def (valueize, _p1))
29157 : : {
29158 : 129099 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
29159 : 128190 : switch (gimple_assign_rhs_code (_a2))
29160 : : {
29161 : 8084 : case EQ_EXPR:
29162 : 8084 : {
29163 : 8084 : tree _q50 = gimple_assign_rhs1 (_a2);
29164 : 8084 : _q50 = do_valueize (valueize, _q50);
29165 : 8084 : tree _q51 = gimple_assign_rhs2 (_a2);
29166 : 8084 : _q51 = do_valueize (valueize, _q51);
29167 : 8084 : if (tree_swap_operands_p (_q50, _q51))
29168 : 6 : std::swap (_q50, _q51);
29169 : 8084 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29170 : : {
29171 : 49 : {
29172 : 49 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
29173 : 49 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29174 : 8 : return true;
29175 : : }
29176 : : }
29177 : 8076 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29178 : : {
29179 : 2 : {
29180 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
29181 : 2 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29182 : 0 : return true;
29183 : : }
29184 : : }
29185 : 8076 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29186 : : {
29187 : 0 : {
29188 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
29189 : 0 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29190 : 0 : return true;
29191 : : }
29192 : : }
29193 : 8076 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29194 : : {
29195 : 651 : {
29196 : 651 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
29197 : 651 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29198 : 0 : return true;
29199 : : }
29200 : : }
29201 : 9019456 : break;
29202 : : }
29203 : 23205 : case NE_EXPR:
29204 : 23205 : {
29205 : 23205 : tree _q50 = gimple_assign_rhs1 (_a2);
29206 : 23205 : _q50 = do_valueize (valueize, _q50);
29207 : 23205 : tree _q51 = gimple_assign_rhs2 (_a2);
29208 : 23205 : _q51 = do_valueize (valueize, _q51);
29209 : 23205 : if (tree_swap_operands_p (_q50, _q51))
29210 : 8 : std::swap (_q50, _q51);
29211 : 23205 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29212 : : {
29213 : 3925 : {
29214 : 3925 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
29215 : 3925 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29216 : 83 : return true;
29217 : : }
29218 : : }
29219 : 23122 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29220 : : {
29221 : 1287 : {
29222 : 1287 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
29223 : 1287 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29224 : 20 : return true;
29225 : : }
29226 : : }
29227 : 23102 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29228 : : {
29229 : 300 : {
29230 : 300 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
29231 : 300 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29232 : 0 : return true;
29233 : : }
29234 : : }
29235 : 23102 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29236 : : {
29237 : 673 : {
29238 : 673 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
29239 : 673 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29240 : 0 : return true;
29241 : : }
29242 : : }
29243 : 9019456 : break;
29244 : : }
29245 : 2429 : case LT_EXPR:
29246 : 2429 : {
29247 : 2429 : tree _q50 = gimple_assign_rhs1 (_a2);
29248 : 2429 : _q50 = do_valueize (valueize, _q50);
29249 : 2429 : tree _q51 = gimple_assign_rhs2 (_a2);
29250 : 2429 : _q51 = do_valueize (valueize, _q51);
29251 : 2429 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29252 : : {
29253 : 560 : {
29254 : 560 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29255 : 560 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR))
29256 : 3 : return true;
29257 : : }
29258 : : }
29259 : 2426 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29260 : : {
29261 : 264 : {
29262 : 264 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29263 : 264 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GT_EXPR))
29264 : 0 : return true;
29265 : : }
29266 : : }
29267 : 2426 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29268 : : {
29269 : 9 : {
29270 : 9 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29271 : 9 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LT_EXPR))
29272 : 0 : return true;
29273 : : }
29274 : : }
29275 : 2426 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29276 : : {
29277 : 133 : {
29278 : 133 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29279 : 133 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
29280 : 0 : return true;
29281 : : }
29282 : : }
29283 : : break;
29284 : : }
29285 : 36783 : case LE_EXPR:
29286 : 36783 : {
29287 : 36783 : tree _q50 = gimple_assign_rhs1 (_a2);
29288 : 36783 : _q50 = do_valueize (valueize, _q50);
29289 : 36783 : tree _q51 = gimple_assign_rhs2 (_a2);
29290 : 36783 : _q51 = do_valueize (valueize, _q51);
29291 : 36783 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29292 : : {
29293 : 5057 : {
29294 : 5057 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29295 : 5057 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR))
29296 : 0 : return true;
29297 : : }
29298 : : }
29299 : 36783 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29300 : : {
29301 : 4 : {
29302 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29303 : 4 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GT_EXPR))
29304 : 0 : return true;
29305 : : }
29306 : : }
29307 : 36783 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29308 : : {
29309 : 3935 : {
29310 : 3935 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29311 : 3935 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LT_EXPR))
29312 : 0 : return true;
29313 : : }
29314 : : }
29315 : 36783 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29316 : : {
29317 : 20062 : {
29318 : 20062 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29319 : 20062 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR))
29320 : 0 : return true;
29321 : : }
29322 : : }
29323 : : break;
29324 : : }
29325 : 43757 : case GT_EXPR:
29326 : 43757 : {
29327 : 43757 : tree _q50 = gimple_assign_rhs1 (_a2);
29328 : 43757 : _q50 = do_valueize (valueize, _q50);
29329 : 43757 : tree _q51 = gimple_assign_rhs2 (_a2);
29330 : 43757 : _q51 = do_valueize (valueize, _q51);
29331 : 43757 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29332 : : {
29333 : 573 : {
29334 : 573 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29335 : 573 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GT_EXPR))
29336 : 89 : return true;
29337 : : }
29338 : : }
29339 : 43668 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29340 : : {
29341 : 693 : {
29342 : 693 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29343 : 693 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR))
29344 : 0 : return true;
29345 : : }
29346 : : }
29347 : 43668 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29348 : : {
29349 : 299 : {
29350 : 299 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29351 : 299 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
29352 : 0 : return true;
29353 : : }
29354 : : }
29355 : 43668 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29356 : : {
29357 : 20736 : {
29358 : 20736 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29359 : 20736 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LT_EXPR))
29360 : 0 : return true;
29361 : : }
29362 : : }
29363 : : break;
29364 : : }
29365 : 9218 : case GE_EXPR:
29366 : 9218 : {
29367 : 9218 : tree _q50 = gimple_assign_rhs1 (_a2);
29368 : 9218 : _q50 = do_valueize (valueize, _q50);
29369 : 9218 : tree _q51 = gimple_assign_rhs2 (_a2);
29370 : 9218 : _q51 = do_valueize (valueize, _q51);
29371 : 9218 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29372 : : {
29373 : 158 : {
29374 : 158 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29375 : 158 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GT_EXPR))
29376 : 61 : return true;
29377 : : }
29378 : : }
29379 : 9157 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29380 : : {
29381 : 726 : {
29382 : 726 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29383 : 726 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR))
29384 : 0 : return true;
29385 : : }
29386 : : }
29387 : 9157 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29388 : : {
29389 : 6483 : {
29390 : 6483 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29391 : 6483 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR))
29392 : 0 : return true;
29393 : : }
29394 : : }
29395 : 9157 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29396 : : {
29397 : 289 : {
29398 : 289 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29399 : 289 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LT_EXPR))
29400 : 0 : return true;
29401 : : }
29402 : : }
29403 : : break;
29404 : : }
29405 : : default:;
29406 : : }
29407 : : }
29408 : : break;
29409 : : default:;
29410 : : }
29411 : : break;
29412 : : }
29413 : 50930 : case LT_EXPR:
29414 : 50930 : {
29415 : 50930 : tree _q20 = gimple_assign_rhs1 (_a1);
29416 : 50930 : _q20 = do_valueize (valueize, _q20);
29417 : 50930 : tree _q21 = gimple_assign_rhs2 (_a1);
29418 : 50930 : _q21 = do_valueize (valueize, _q21);
29419 : 50930 : switch (TREE_CODE (_p1))
29420 : : {
29421 : 50930 : case SSA_NAME:
29422 : 50930 : if (gimple *_d2 = get_def (valueize, _p1))
29423 : : {
29424 : 50574 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
29425 : 51338 : switch (gimple_assign_rhs_code (_a2))
29426 : : {
29427 : 2585 : case EQ_EXPR:
29428 : 2585 : {
29429 : 2585 : tree _q50 = gimple_assign_rhs1 (_a2);
29430 : 2585 : _q50 = do_valueize (valueize, _q50);
29431 : 2585 : tree _q51 = gimple_assign_rhs2 (_a2);
29432 : 2585 : _q51 = do_valueize (valueize, _q51);
29433 : 2585 : if (tree_swap_operands_p (_q50, _q51))
29434 : 0 : std::swap (_q50, _q51);
29435 : 2585 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29436 : : {
29437 : 8 : if (gimple_min_value (_q51, valueize))
29438 : : {
29439 : 0 : {
29440 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
29441 : 0 : if (gimple_simplify_569 (res_op, seq, valueize, type, captures, EQ_EXPR))
29442 : 0 : return true;
29443 : : }
29444 : : }
29445 : : }
29446 : 2585 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29447 : : {
29448 : 13 : if (gimple_max_value (_q51, valueize))
29449 : : {
29450 : 6 : {
29451 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
29452 : 6 : if (gimple_simplify_570 (res_op, seq, valueize, type, captures, EQ_EXPR))
29453 : 6 : return true;
29454 : : }
29455 : : }
29456 : : }
29457 : 50791 : break;
29458 : : }
29459 : 8069 : case NE_EXPR:
29460 : 8069 : {
29461 : 8069 : tree _q50 = gimple_assign_rhs1 (_a2);
29462 : 8069 : _q50 = do_valueize (valueize, _q50);
29463 : 8069 : tree _q51 = gimple_assign_rhs2 (_a2);
29464 : 8069 : _q51 = do_valueize (valueize, _q51);
29465 : 8069 : if (tree_swap_operands_p (_q50, _q51))
29466 : 8 : std::swap (_q50, _q51);
29467 : 8069 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29468 : : {
29469 : 1973 : if (gimple_min_value (_q51, valueize))
29470 : : {
29471 : 127 : {
29472 : 127 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
29473 : 127 : if (gimple_simplify_569 (res_op, seq, valueize, type, captures, NE_EXPR))
29474 : 127 : return true;
29475 : : }
29476 : : }
29477 : : }
29478 : 7942 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29479 : : {
29480 : 946 : if (gimple_max_value (_q51, valueize))
29481 : : {
29482 : 6 : {
29483 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
29484 : 6 : if (gimple_simplify_570 (res_op, seq, valueize, type, captures, NE_EXPR))
29485 : 6 : return true;
29486 : : }
29487 : : }
29488 : : }
29489 : 50791 : break;
29490 : : }
29491 : : default:;
29492 : : }
29493 : : }
29494 : : break;
29495 : 50791 : default:;
29496 : : }
29497 : 50791 : switch (TREE_CODE (_q20))
29498 : : {
29499 : 50701 : case SSA_NAME:
29500 : 50701 : if (gimple *_d2 = get_def (valueize, _q20))
29501 : : {
29502 : 46160 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
29503 : 26538 : switch (gimple_assign_rhs_code (_a2))
29504 : : {
29505 : 4329 : CASE_CONVERT:
29506 : 4329 : {
29507 : 4329 : tree _q30 = gimple_assign_rhs1 (_a2);
29508 : 4329 : _q30 = do_valueize (valueize, _q30);
29509 : 4329 : switch (TREE_CODE (_p1))
29510 : : {
29511 : 4329 : case SSA_NAME:
29512 : 4329 : if (gimple *_d3 = get_def (valueize, _p1))
29513 : : {
29514 : 4329 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
29515 : 4303 : switch (gimple_assign_rhs_code (_a3))
29516 : : {
29517 : 1222 : case EQ_EXPR:
29518 : 1222 : {
29519 : 1222 : tree _q60 = gimple_assign_rhs1 (_a3);
29520 : 1222 : _q60 = do_valueize (valueize, _q60);
29521 : 1222 : tree _q61 = gimple_assign_rhs2 (_a3);
29522 : 1222 : _q61 = do_valueize (valueize, _q61);
29523 : 1222 : if (tree_swap_operands_p (_q60, _q61))
29524 : 0 : std::swap (_q60, _q61);
29525 : 1222 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
29526 : : {
29527 : 0 : {
29528 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
29529 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29530 : 0 : return true;
29531 : : }
29532 : : }
29533 : 1222 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
29534 : : {
29535 : 0 : {
29536 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
29537 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29538 : 0 : return true;
29539 : : }
29540 : : }
29541 : 50783 : break;
29542 : : }
29543 : 639 : case NE_EXPR:
29544 : 639 : {
29545 : 639 : tree _q60 = gimple_assign_rhs1 (_a3);
29546 : 639 : _q60 = do_valueize (valueize, _q60);
29547 : 639 : tree _q61 = gimple_assign_rhs2 (_a3);
29548 : 639 : _q61 = do_valueize (valueize, _q61);
29549 : 639 : if (tree_swap_operands_p (_q60, _q61))
29550 : 0 : std::swap (_q60, _q61);
29551 : 639 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
29552 : : {
29553 : 89 : {
29554 : 89 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
29555 : 89 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29556 : 8 : return true;
29557 : : }
29558 : : }
29559 : 631 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
29560 : : {
29561 : 0 : {
29562 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
29563 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29564 : 0 : return true;
29565 : : }
29566 : : }
29567 : 50783 : break;
29568 : : }
29569 : : default:;
29570 : : }
29571 : : }
29572 : : break;
29573 : : default:;
29574 : : }
29575 : : break;
29576 : : }
29577 : : default:;
29578 : : }
29579 : : }
29580 : : break;
29581 : 50783 : default:;
29582 : : }
29583 : 50783 : switch (TREE_CODE (_q21))
29584 : : {
29585 : 27943 : case SSA_NAME:
29586 : 27943 : if (gimple *_d2 = get_def (valueize, _q21))
29587 : : {
29588 : 25681 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
29589 : 32739 : switch (gimple_assign_rhs_code (_a2))
29590 : : {
29591 : 772 : CASE_CONVERT:
29592 : 772 : {
29593 : 772 : tree _q40 = gimple_assign_rhs1 (_a2);
29594 : 772 : _q40 = do_valueize (valueize, _q40);
29595 : 772 : switch (TREE_CODE (_p1))
29596 : : {
29597 : 772 : case SSA_NAME:
29598 : 772 : if (gimple *_d3 = get_def (valueize, _p1))
29599 : : {
29600 : 772 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
29601 : 773 : switch (gimple_assign_rhs_code (_a3))
29602 : : {
29603 : 88 : case EQ_EXPR:
29604 : 88 : {
29605 : 88 : tree _q60 = gimple_assign_rhs1 (_a3);
29606 : 88 : _q60 = do_valueize (valueize, _q60);
29607 : 88 : tree _q61 = gimple_assign_rhs2 (_a3);
29608 : 88 : _q61 = do_valueize (valueize, _q61);
29609 : 88 : if (tree_swap_operands_p (_q60, _q61))
29610 : 0 : std::swap (_q60, _q61);
29611 : 88 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
29612 : : {
29613 : 0 : {
29614 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
29615 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29616 : 0 : return true;
29617 : : }
29618 : : }
29619 : 88 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
29620 : : {
29621 : 0 : {
29622 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
29623 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29624 : 0 : return true;
29625 : : }
29626 : : }
29627 : 50783 : break;
29628 : : }
29629 : 109 : case NE_EXPR:
29630 : 109 : {
29631 : 109 : tree _q60 = gimple_assign_rhs1 (_a3);
29632 : 109 : _q60 = do_valueize (valueize, _q60);
29633 : 109 : tree _q61 = gimple_assign_rhs2 (_a3);
29634 : 109 : _q61 = do_valueize (valueize, _q61);
29635 : 109 : if (tree_swap_operands_p (_q60, _q61))
29636 : 0 : std::swap (_q60, _q61);
29637 : 109 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
29638 : : {
29639 : 0 : {
29640 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
29641 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29642 : 0 : return true;
29643 : : }
29644 : : }
29645 : 109 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
29646 : : {
29647 : 0 : {
29648 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
29649 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29650 : 0 : return true;
29651 : : }
29652 : : }
29653 : 50783 : break;
29654 : : }
29655 : : default:;
29656 : : }
29657 : : }
29658 : : break;
29659 : : default:;
29660 : : }
29661 : : break;
29662 : : }
29663 : : default:;
29664 : : }
29665 : : }
29666 : : break;
29667 : 50783 : default:;
29668 : : }
29669 : 50783 : switch (TREE_CODE (_p1))
29670 : : {
29671 : 50783 : case SSA_NAME:
29672 : 50783 : if (gimple *_d2 = get_def (valueize, _p1))
29673 : : {
29674 : 50427 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
29675 : 51191 : switch (gimple_assign_rhs_code (_a2))
29676 : : {
29677 : 2579 : case EQ_EXPR:
29678 : 2579 : {
29679 : 2579 : tree _q50 = gimple_assign_rhs1 (_a2);
29680 : 2579 : _q50 = do_valueize (valueize, _q50);
29681 : 2579 : tree _q51 = gimple_assign_rhs2 (_a2);
29682 : 2579 : _q51 = do_valueize (valueize, _q51);
29683 : 2579 : if (tree_swap_operands_p (_q50, _q51))
29684 : 0 : std::swap (_q50, _q51);
29685 : 2579 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29686 : : {
29687 : 7 : {
29688 : 7 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
29689 : 7 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29690 : 1 : return true;
29691 : : }
29692 : : }
29693 : 2578 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29694 : : {
29695 : 8 : {
29696 : 8 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
29697 : 8 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29698 : 0 : return true;
29699 : : }
29700 : : }
29701 : 2578 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29702 : : {
29703 : 0 : {
29704 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
29705 : 0 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
29706 : 0 : return true;
29707 : : }
29708 : : }
29709 : 2578 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29710 : : {
29711 : 12 : {
29712 : 12 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
29713 : 12 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
29714 : 0 : return true;
29715 : : }
29716 : : }
29717 : 9019456 : break;
29718 : : }
29719 : 7928 : case NE_EXPR:
29720 : 7928 : {
29721 : 7928 : tree _q50 = gimple_assign_rhs1 (_a2);
29722 : 7928 : _q50 = do_valueize (valueize, _q50);
29723 : 7928 : tree _q51 = gimple_assign_rhs2 (_a2);
29724 : 7928 : _q51 = do_valueize (valueize, _q51);
29725 : 7928 : if (tree_swap_operands_p (_q50, _q51))
29726 : 8 : std::swap (_q50, _q51);
29727 : 7928 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29728 : : {
29729 : 940 : {
29730 : 940 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
29731 : 940 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29732 : 13 : return true;
29733 : : }
29734 : : }
29735 : 7915 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29736 : : {
29737 : 1846 : {
29738 : 1846 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
29739 : 1846 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29740 : 0 : return true;
29741 : : }
29742 : : }
29743 : 7915 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29744 : : {
29745 : 68 : {
29746 : 68 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
29747 : 68 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
29748 : 0 : return true;
29749 : : }
29750 : : }
29751 : 7915 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29752 : : {
29753 : 177 : {
29754 : 177 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
29755 : 177 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
29756 : 0 : return true;
29757 : : }
29758 : : }
29759 : 9019456 : break;
29760 : : }
29761 : 4443 : case LT_EXPR:
29762 : 4443 : {
29763 : 4443 : tree _q50 = gimple_assign_rhs1 (_a2);
29764 : 4443 : _q50 = do_valueize (valueize, _q50);
29765 : 4443 : tree _q51 = gimple_assign_rhs2 (_a2);
29766 : 4443 : _q51 = do_valueize (valueize, _q51);
29767 : 4443 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29768 : : {
29769 : 180 : {
29770 : 180 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29771 : 180 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LT_EXPR))
29772 : 16 : return true;
29773 : : }
29774 : : }
29775 : 4427 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29776 : : {
29777 : 8 : {
29778 : 8 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29779 : 8 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
29780 : 0 : return true;
29781 : : }
29782 : : }
29783 : 4427 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29784 : : {
29785 : 48 : {
29786 : 48 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29787 : 48 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR))
29788 : 0 : return true;
29789 : : }
29790 : : }
29791 : 4427 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29792 : : {
29793 : 656 : {
29794 : 656 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29795 : 656 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GT_EXPR))
29796 : 0 : return true;
29797 : : }
29798 : : }
29799 : : break;
29800 : : }
29801 : 3952 : case LE_EXPR:
29802 : 3952 : {
29803 : 3952 : tree _q50 = gimple_assign_rhs1 (_a2);
29804 : 3952 : _q50 = do_valueize (valueize, _q50);
29805 : 3952 : tree _q51 = gimple_assign_rhs2 (_a2);
29806 : 3952 : _q51 = do_valueize (valueize, _q51);
29807 : 3952 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29808 : : {
29809 : 1525 : {
29810 : 1525 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29811 : 1525 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LT_EXPR))
29812 : 21 : return true;
29813 : : }
29814 : : }
29815 : 3931 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29816 : : {
29817 : 97 : {
29818 : 97 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29819 : 97 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR))
29820 : 0 : return true;
29821 : : }
29822 : : }
29823 : 3931 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29824 : : {
29825 : 276 : {
29826 : 276 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29827 : 276 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR))
29828 : 0 : return true;
29829 : : }
29830 : : }
29831 : 3931 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29832 : : {
29833 : 47 : {
29834 : 47 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29835 : 47 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GT_EXPR))
29836 : 0 : return true;
29837 : : }
29838 : : }
29839 : : break;
29840 : : }
29841 : 1477 : case GT_EXPR:
29842 : 1477 : {
29843 : 1477 : tree _q50 = gimple_assign_rhs1 (_a2);
29844 : 1477 : _q50 = do_valueize (valueize, _q50);
29845 : 1477 : tree _q51 = gimple_assign_rhs2 (_a2);
29846 : 1477 : _q51 = do_valueize (valueize, _q51);
29847 : 1477 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29848 : : {
29849 : 558 : {
29850 : 558 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29851 : 558 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR))
29852 : 2 : return true;
29853 : : }
29854 : : }
29855 : 1475 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29856 : : {
29857 : 1 : {
29858 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29859 : 1 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LT_EXPR))
29860 : 0 : return true;
29861 : : }
29862 : : }
29863 : 1475 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29864 : : {
29865 : 36 : {
29866 : 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29867 : 36 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GT_EXPR))
29868 : 0 : return true;
29869 : : }
29870 : : }
29871 : 1475 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29872 : : {
29873 : 200 : {
29874 : 200 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29875 : 200 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR))
29876 : 0 : return true;
29877 : : }
29878 : : }
29879 : : break;
29880 : : }
29881 : 27997 : case GE_EXPR:
29882 : 27997 : {
29883 : 27997 : tree _q50 = gimple_assign_rhs1 (_a2);
29884 : 27997 : _q50 = do_valueize (valueize, _q50);
29885 : 27997 : tree _q51 = gimple_assign_rhs2 (_a2);
29886 : 27997 : _q51 = do_valueize (valueize, _q51);
29887 : 27997 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29888 : : {
29889 : 10478 : {
29890 : 10478 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
29891 : 10478 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR))
29892 : 0 : return true;
29893 : : }
29894 : : }
29895 : 27997 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29896 : : {
29897 : 35 : {
29898 : 35 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
29899 : 35 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LT_EXPR))
29900 : 0 : return true;
29901 : : }
29902 : : }
29903 : 27997 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
29904 : : {
29905 : 10 : {
29906 : 10 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
29907 : 10 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GT_EXPR))
29908 : 0 : return true;
29909 : : }
29910 : : }
29911 : 27997 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
29912 : : {
29913 : 15746 : {
29914 : 15746 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
29915 : 15746 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR))
29916 : 0 : return true;
29917 : : }
29918 : : }
29919 : : break;
29920 : : }
29921 : : default:;
29922 : : }
29923 : : }
29924 : : break;
29925 : : default:;
29926 : : }
29927 : : break;
29928 : : }
29929 : 452164 : case EQ_EXPR:
29930 : 452164 : {
29931 : 452164 : tree _q20 = gimple_assign_rhs1 (_a1);
29932 : 452164 : _q20 = do_valueize (valueize, _q20);
29933 : 452164 : tree _q21 = gimple_assign_rhs2 (_a1);
29934 : 452164 : _q21 = do_valueize (valueize, _q21);
29935 : 452164 : if (tree_swap_operands_p (_q20, _q21))
29936 : 7986 : std::swap (_q20, _q21);
29937 : 452164 : if (gimple_min_value (_q21, valueize))
29938 : : {
29939 : 76574 : switch (TREE_CODE (_p1))
29940 : : {
29941 : 76494 : case SSA_NAME:
29942 : 76494 : if (gimple *_d2 = get_def (valueize, _p1))
29943 : : {
29944 : 76210 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
29945 : 75674 : switch (gimple_assign_rhs_code (_a2))
29946 : : {
29947 : 1070 : case GT_EXPR:
29948 : 1070 : {
29949 : 1070 : tree _q50 = gimple_assign_rhs1 (_a2);
29950 : 1070 : _q50 = do_valueize (valueize, _q50);
29951 : 1070 : tree _q51 = gimple_assign_rhs2 (_a2);
29952 : 1070 : _q51 = do_valueize (valueize, _q51);
29953 : 1070 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29954 : : {
29955 : 0 : {
29956 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q51 };
29957 : 0 : if (gimple_simplify_574 (res_op, seq, valueize, type, captures, EQ_EXPR))
29958 : 0 : return true;
29959 : : }
29960 : : }
29961 : : break;
29962 : : }
29963 : 376 : case LT_EXPR:
29964 : 376 : {
29965 : 376 : tree _q50 = gimple_assign_rhs1 (_a2);
29966 : 376 : _q50 = do_valueize (valueize, _q50);
29967 : 376 : tree _q51 = gimple_assign_rhs2 (_a2);
29968 : 376 : _q51 = do_valueize (valueize, _q51);
29969 : 376 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
29970 : : {
29971 : 0 : {
29972 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q50 };
29973 : 0 : if (gimple_simplify_574 (res_op, seq, valueize, type, captures, EQ_EXPR))
29974 : 0 : return true;
29975 : : }
29976 : : }
29977 : : break;
29978 : : }
29979 : 1466 : case LE_EXPR:
29980 : 1466 : {
29981 : 1466 : tree _q50 = gimple_assign_rhs1 (_a2);
29982 : 1466 : _q50 = do_valueize (valueize, _q50);
29983 : 1466 : tree _q51 = gimple_assign_rhs2 (_a2);
29984 : 1466 : _q51 = do_valueize (valueize, _q51);
29985 : 1466 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
29986 : : {
29987 : 15 : {
29988 : 15 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _p0 };
29989 : 15 : if (gimple_simplify_575 (res_op, seq, valueize, type, captures))
29990 : 15 : return true;
29991 : : }
29992 : : }
29993 : : break;
29994 : : }
29995 : 1154 : case GE_EXPR:
29996 : 1154 : {
29997 : 1154 : tree _q50 = gimple_assign_rhs1 (_a2);
29998 : 1154 : _q50 = do_valueize (valueize, _q50);
29999 : 1154 : tree _q51 = gimple_assign_rhs2 (_a2);
30000 : 1154 : _q51 = do_valueize (valueize, _q51);
30001 : 1154 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30002 : : {
30003 : 34 : {
30004 : 34 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _p0 };
30005 : 34 : if (gimple_simplify_575 (res_op, seq, valueize, type, captures))
30006 : 34 : return true;
30007 : : }
30008 : : }
30009 : : break;
30010 : : }
30011 : : default:;
30012 : : }
30013 : : }
30014 : : break;
30015 : : default:;
30016 : : }
30017 : : }
30018 : 452115 : if (gimple_max_value (_q21, valueize))
30019 : : {
30020 : 14080 : switch (TREE_CODE (_p1))
30021 : : {
30022 : 14080 : case SSA_NAME:
30023 : 14080 : if (gimple *_d2 = get_def (valueize, _p1))
30024 : : {
30025 : 14078 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
30026 : 13425 : switch (gimple_assign_rhs_code (_a2))
30027 : : {
30028 : 49 : case LT_EXPR:
30029 : 49 : {
30030 : 49 : tree _q50 = gimple_assign_rhs1 (_a2);
30031 : 49 : _q50 = do_valueize (valueize, _q50);
30032 : 49 : tree _q51 = gimple_assign_rhs2 (_a2);
30033 : 49 : _q51 = do_valueize (valueize, _q51);
30034 : 49 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
30035 : : {
30036 : 0 : {
30037 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q51 };
30038 : 0 : if (gimple_simplify_576 (res_op, seq, valueize, type, captures, EQ_EXPR))
30039 : 0 : return true;
30040 : : }
30041 : : }
30042 : : break;
30043 : : }
30044 : 25 : case GT_EXPR:
30045 : 25 : {
30046 : 25 : tree _q50 = gimple_assign_rhs1 (_a2);
30047 : 25 : _q50 = do_valueize (valueize, _q50);
30048 : 25 : tree _q51 = gimple_assign_rhs2 (_a2);
30049 : 25 : _q51 = do_valueize (valueize, _q51);
30050 : 25 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30051 : : {
30052 : 0 : {
30053 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q50 };
30054 : 0 : if (gimple_simplify_576 (res_op, seq, valueize, type, captures, EQ_EXPR))
30055 : 0 : return true;
30056 : : }
30057 : : }
30058 : : break;
30059 : : }
30060 : 952 : case GE_EXPR:
30061 : 952 : {
30062 : 952 : tree _q50 = gimple_assign_rhs1 (_a2);
30063 : 952 : _q50 = do_valueize (valueize, _q50);
30064 : 952 : tree _q51 = gimple_assign_rhs2 (_a2);
30065 : 952 : _q51 = do_valueize (valueize, _q51);
30066 : 952 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
30067 : : {
30068 : 14 : {
30069 : 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _p0 };
30070 : 14 : if (gimple_simplify_577 (res_op, seq, valueize, type, captures))
30071 : 14 : return true;
30072 : : }
30073 : : }
30074 : : break;
30075 : : }
30076 : 15 : case LE_EXPR:
30077 : 15 : {
30078 : 15 : tree _q50 = gimple_assign_rhs1 (_a2);
30079 : 15 : _q50 = do_valueize (valueize, _q50);
30080 : 15 : tree _q51 = gimple_assign_rhs2 (_a2);
30081 : 15 : _q51 = do_valueize (valueize, _q51);
30082 : 15 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30083 : : {
30084 : 0 : {
30085 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _p0 };
30086 : 0 : if (gimple_simplify_577 (res_op, seq, valueize, type, captures))
30087 : 0 : return true;
30088 : : }
30089 : : }
30090 : : break;
30091 : : }
30092 : : default:;
30093 : : }
30094 : : }
30095 : : break;
30096 : : default:;
30097 : : }
30098 : : }
30099 : 452101 : switch (TREE_CODE (_p1))
30100 : : {
30101 : 452021 : case SSA_NAME:
30102 : 452021 : if (gimple *_d2 = get_def (valueize, _p1))
30103 : : {
30104 : 449753 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
30105 : 445799 : switch (gimple_assign_rhs_code (_a2))
30106 : : {
30107 : 302686 : case EQ_EXPR:
30108 : 302686 : {
30109 : 302686 : tree _q50 = gimple_assign_rhs1 (_a2);
30110 : 302686 : _q50 = do_valueize (valueize, _q50);
30111 : 302686 : tree _q51 = gimple_assign_rhs2 (_a2);
30112 : 302686 : _q51 = do_valueize (valueize, _q51);
30113 : 302686 : if (tree_swap_operands_p (_q50, _q51))
30114 : 2939 : std::swap (_q50, _q51);
30115 : 302686 : switch (TREE_CODE (_q50))
30116 : : {
30117 : 302684 : case SSA_NAME:
30118 : 302684 : if (gimple *_d3 = get_def (valueize, _q50))
30119 : : {
30120 : 291061 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30121 : 449987 : switch (gimple_assign_rhs_code (_a3))
30122 : : {
30123 : 5471 : CASE_CONVERT:
30124 : 5471 : {
30125 : 5471 : tree _q60 = gimple_assign_rhs1 (_a3);
30126 : 5471 : _q60 = do_valueize (valueize, _q60);
30127 : 5471 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
30128 : : {
30129 : 27 : {
30130 : 27 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30131 : 27 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30132 : 17 : return true;
30133 : : }
30134 : : }
30135 : 5454 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
30136 : : {
30137 : 0 : {
30138 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30139 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30140 : 0 : return true;
30141 : : }
30142 : : }
30143 : : break;
30144 : : }
30145 : : default:;
30146 : : }
30147 : : }
30148 : : break;
30149 : 302669 : default:;
30150 : : }
30151 : 302669 : switch (TREE_CODE (_q51))
30152 : : {
30153 : 84699 : case SSA_NAME:
30154 : 84699 : if (gimple *_d3 = get_def (valueize, _q51))
30155 : : {
30156 : 81129 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30157 : 130238 : switch (gimple_assign_rhs_code (_a3))
30158 : : {
30159 : 5525 : CASE_CONVERT:
30160 : 5525 : {
30161 : 5525 : tree _q70 = gimple_assign_rhs1 (_a3);
30162 : 5525 : _q70 = do_valueize (valueize, _q70);
30163 : 5525 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
30164 : : {
30165 : 0 : {
30166 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30167 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30168 : 0 : return true;
30169 : : }
30170 : : }
30171 : 5525 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
30172 : : {
30173 : 0 : {
30174 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30175 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30176 : 0 : return true;
30177 : : }
30178 : : }
30179 : : break;
30180 : : }
30181 : : default:;
30182 : : }
30183 : : }
30184 : : break;
30185 : : default:;
30186 : : }
30187 : 452074 : break;
30188 : : }
30189 : 103736 : case NE_EXPR:
30190 : 103736 : {
30191 : 103736 : tree _q50 = gimple_assign_rhs1 (_a2);
30192 : 103736 : _q50 = do_valueize (valueize, _q50);
30193 : 103736 : tree _q51 = gimple_assign_rhs2 (_a2);
30194 : 103736 : _q51 = do_valueize (valueize, _q51);
30195 : 103736 : if (tree_swap_operands_p (_q50, _q51))
30196 : 58 : std::swap (_q50, _q51);
30197 : 103736 : switch (TREE_CODE (_q50))
30198 : : {
30199 : 103719 : case SSA_NAME:
30200 : 103719 : if (gimple *_d3 = get_def (valueize, _q50))
30201 : : {
30202 : 93423 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30203 : 74423 : switch (gimple_assign_rhs_code (_a3))
30204 : : {
30205 : 3102 : CASE_CONVERT:
30206 : 3102 : {
30207 : 3102 : tree _q60 = gimple_assign_rhs1 (_a3);
30208 : 3102 : _q60 = do_valueize (valueize, _q60);
30209 : 3102 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
30210 : : {
30211 : 0 : {
30212 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30213 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30214 : 0 : return true;
30215 : : }
30216 : : }
30217 : 3102 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
30218 : : {
30219 : 0 : {
30220 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30221 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30222 : 0 : return true;
30223 : : }
30224 : : }
30225 : : break;
30226 : : }
30227 : : default:;
30228 : : }
30229 : : }
30230 : : break;
30231 : 103736 : default:;
30232 : : }
30233 : 103736 : switch (TREE_CODE (_q51))
30234 : : {
30235 : 2395 : case SSA_NAME:
30236 : 2395 : if (gimple *_d3 = get_def (valueize, _q51))
30237 : : {
30238 : 2131 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30239 : 1940 : switch (gimple_assign_rhs_code (_a3))
30240 : : {
30241 : 32 : CASE_CONVERT:
30242 : 32 : {
30243 : 32 : tree _q70 = gimple_assign_rhs1 (_a3);
30244 : 32 : _q70 = do_valueize (valueize, _q70);
30245 : 32 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
30246 : : {
30247 : 0 : {
30248 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30249 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30250 : 0 : return true;
30251 : : }
30252 : : }
30253 : 32 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
30254 : : {
30255 : 0 : {
30256 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30257 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30258 : 0 : return true;
30259 : : }
30260 : : }
30261 : : break;
30262 : : }
30263 : : default:;
30264 : : }
30265 : : }
30266 : : break;
30267 : : default:;
30268 : : }
30269 : 452074 : break;
30270 : : }
30271 : 3266 : case LT_EXPR:
30272 : 3266 : {
30273 : 3266 : tree _q50 = gimple_assign_rhs1 (_a2);
30274 : 3266 : _q50 = do_valueize (valueize, _q50);
30275 : 3266 : tree _q51 = gimple_assign_rhs2 (_a2);
30276 : 3266 : _q51 = do_valueize (valueize, _q51);
30277 : 3266 : switch (TREE_CODE (_q50))
30278 : : {
30279 : 3260 : case SSA_NAME:
30280 : 3260 : if (gimple *_d3 = get_def (valueize, _q50))
30281 : : {
30282 : 2866 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30283 : 3245 : switch (gimple_assign_rhs_code (_a3))
30284 : : {
30285 : 569 : CASE_CONVERT:
30286 : 569 : {
30287 : 569 : tree _q60 = gimple_assign_rhs1 (_a3);
30288 : 569 : _q60 = do_valueize (valueize, _q60);
30289 : 569 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
30290 : : {
30291 : 0 : {
30292 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30293 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30294 : 0 : return true;
30295 : : }
30296 : : }
30297 : 569 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
30298 : : {
30299 : 0 : {
30300 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30301 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30302 : 0 : return true;
30303 : : }
30304 : : }
30305 : : break;
30306 : : }
30307 : : default:;
30308 : : }
30309 : : }
30310 : : break;
30311 : 3266 : default:;
30312 : : }
30313 : 3266 : switch (TREE_CODE (_q51))
30314 : : {
30315 : 2048 : case SSA_NAME:
30316 : 2048 : if (gimple *_d3 = get_def (valueize, _q51))
30317 : : {
30318 : 1770 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30319 : 1093 : switch (gimple_assign_rhs_code (_a3))
30320 : : {
30321 : 395 : CASE_CONVERT:
30322 : 395 : {
30323 : 395 : tree _q70 = gimple_assign_rhs1 (_a3);
30324 : 395 : _q70 = do_valueize (valueize, _q70);
30325 : 395 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
30326 : : {
30327 : 0 : {
30328 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30329 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30330 : 0 : return true;
30331 : : }
30332 : : }
30333 : 395 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
30334 : : {
30335 : 0 : {
30336 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30337 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30338 : 0 : return true;
30339 : : }
30340 : : }
30341 : : break;
30342 : : }
30343 : : default:;
30344 : : }
30345 : : }
30346 : : break;
30347 : : default:;
30348 : : }
30349 : : break;
30350 : : }
30351 : 7624 : case GT_EXPR:
30352 : 7624 : {
30353 : 7624 : tree _q50 = gimple_assign_rhs1 (_a2);
30354 : 7624 : _q50 = do_valueize (valueize, _q50);
30355 : 7624 : tree _q51 = gimple_assign_rhs2 (_a2);
30356 : 7624 : _q51 = do_valueize (valueize, _q51);
30357 : 7624 : switch (TREE_CODE (_q50))
30358 : : {
30359 : 7623 : case SSA_NAME:
30360 : 7623 : if (gimple *_d3 = get_def (valueize, _q50))
30361 : : {
30362 : 6807 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30363 : 7188 : switch (gimple_assign_rhs_code (_a3))
30364 : : {
30365 : 475 : CASE_CONVERT:
30366 : 475 : {
30367 : 475 : tree _q60 = gimple_assign_rhs1 (_a3);
30368 : 475 : _q60 = do_valueize (valueize, _q60);
30369 : 475 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
30370 : : {
30371 : 7 : {
30372 : 7 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30373 : 7 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30374 : 7 : return true;
30375 : : }
30376 : : }
30377 : 468 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
30378 : : {
30379 : 0 : {
30380 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30381 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30382 : 0 : return true;
30383 : : }
30384 : : }
30385 : : break;
30386 : : }
30387 : : default:;
30388 : : }
30389 : : }
30390 : : break;
30391 : 7617 : default:;
30392 : : }
30393 : 7617 : switch (TREE_CODE (_q51))
30394 : : {
30395 : 1949 : case SSA_NAME:
30396 : 1949 : if (gimple *_d3 = get_def (valueize, _q51))
30397 : : {
30398 : 1677 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30399 : 1365 : switch (gimple_assign_rhs_code (_a3))
30400 : : {
30401 : 0 : CASE_CONVERT:
30402 : 0 : {
30403 : 0 : tree _q70 = gimple_assign_rhs1 (_a3);
30404 : 0 : _q70 = do_valueize (valueize, _q70);
30405 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
30406 : : {
30407 : 0 : {
30408 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30409 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30410 : 0 : return true;
30411 : : }
30412 : : }
30413 : 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
30414 : : {
30415 : 0 : {
30416 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30417 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30418 : 0 : return true;
30419 : : }
30420 : : }
30421 : : break;
30422 : : }
30423 : : default:;
30424 : : }
30425 : : }
30426 : : break;
30427 : : default:;
30428 : : }
30429 : : break;
30430 : : }
30431 : 7311 : case LE_EXPR:
30432 : 7311 : {
30433 : 7311 : tree _q50 = gimple_assign_rhs1 (_a2);
30434 : 7311 : _q50 = do_valueize (valueize, _q50);
30435 : 7311 : tree _q51 = gimple_assign_rhs2 (_a2);
30436 : 7311 : _q51 = do_valueize (valueize, _q51);
30437 : 7311 : switch (TREE_CODE (_q50))
30438 : : {
30439 : 7309 : case SSA_NAME:
30440 : 7309 : if (gimple *_d3 = get_def (valueize, _q50))
30441 : : {
30442 : 6764 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30443 : 6975 : switch (gimple_assign_rhs_code (_a3))
30444 : : {
30445 : 2080 : CASE_CONVERT:
30446 : 2080 : {
30447 : 2080 : tree _q60 = gimple_assign_rhs1 (_a3);
30448 : 2080 : _q60 = do_valueize (valueize, _q60);
30449 : 2080 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
30450 : : {
30451 : 2 : {
30452 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30453 : 2 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
30454 : 2 : return true;
30455 : : }
30456 : : }
30457 : 2078 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
30458 : : {
30459 : 1 : {
30460 : 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30461 : 1 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
30462 : 1 : return true;
30463 : : }
30464 : : }
30465 : : break;
30466 : : }
30467 : : default:;
30468 : : }
30469 : : }
30470 : : break;
30471 : 7308 : default:;
30472 : : }
30473 : 7308 : switch (TREE_CODE (_q51))
30474 : : {
30475 : 1205 : case SSA_NAME:
30476 : 1205 : if (gimple *_d3 = get_def (valueize, _q51))
30477 : : {
30478 : 1124 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30479 : 1386 : switch (gimple_assign_rhs_code (_a3))
30480 : : {
30481 : 14 : CASE_CONVERT:
30482 : 14 : {
30483 : 14 : tree _q70 = gimple_assign_rhs1 (_a3);
30484 : 14 : _q70 = do_valueize (valueize, _q70);
30485 : 14 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
30486 : : {
30487 : 0 : {
30488 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30489 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
30490 : 0 : return true;
30491 : : }
30492 : : }
30493 : 14 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
30494 : : {
30495 : 0 : {
30496 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30497 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
30498 : 0 : return true;
30499 : : }
30500 : : }
30501 : : break;
30502 : : }
30503 : : default:;
30504 : : }
30505 : : }
30506 : : break;
30507 : : default:;
30508 : : }
30509 : : break;
30510 : : }
30511 : 4542 : case GE_EXPR:
30512 : 4542 : {
30513 : 4542 : tree _q50 = gimple_assign_rhs1 (_a2);
30514 : 4542 : _q50 = do_valueize (valueize, _q50);
30515 : 4542 : tree _q51 = gimple_assign_rhs2 (_a2);
30516 : 4542 : _q51 = do_valueize (valueize, _q51);
30517 : 4542 : switch (TREE_CODE (_q50))
30518 : : {
30519 : 4542 : case SSA_NAME:
30520 : 4542 : if (gimple *_d3 = get_def (valueize, _q50))
30521 : : {
30522 : 4414 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30523 : 6144 : switch (gimple_assign_rhs_code (_a3))
30524 : : {
30525 : 394 : CASE_CONVERT:
30526 : 394 : {
30527 : 394 : tree _q60 = gimple_assign_rhs1 (_a3);
30528 : 394 : _q60 = do_valueize (valueize, _q60);
30529 : 394 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
30530 : : {
30531 : 2 : {
30532 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30533 : 2 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
30534 : 0 : return true;
30535 : : }
30536 : : }
30537 : 394 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
30538 : : {
30539 : 7 : {
30540 : 7 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30541 : 7 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
30542 : 0 : return true;
30543 : : }
30544 : : }
30545 : : break;
30546 : : }
30547 : : default:;
30548 : : }
30549 : : }
30550 : : break;
30551 : 4542 : default:;
30552 : : }
30553 : 4542 : switch (TREE_CODE (_q51))
30554 : : {
30555 : 2644 : case SSA_NAME:
30556 : 2644 : if (gimple *_d3 = get_def (valueize, _q51))
30557 : : {
30558 : 2605 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30559 : 3919 : switch (gimple_assign_rhs_code (_a3))
30560 : : {
30561 : 4 : CASE_CONVERT:
30562 : 4 : {
30563 : 4 : tree _q70 = gimple_assign_rhs1 (_a3);
30564 : 4 : _q70 = do_valueize (valueize, _q70);
30565 : 4 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
30566 : : {
30567 : 0 : {
30568 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30569 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
30570 : 0 : return true;
30571 : : }
30572 : : }
30573 : 4 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
30574 : : {
30575 : 0 : {
30576 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30577 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
30578 : 0 : return true;
30579 : : }
30580 : : }
30581 : : break;
30582 : : }
30583 : : default:;
30584 : : }
30585 : : }
30586 : : break;
30587 : : default:;
30588 : : }
30589 : : break;
30590 : : }
30591 : : default:;
30592 : : }
30593 : : }
30594 : : break;
30595 : 452074 : default:;
30596 : : }
30597 : 452074 : switch (TREE_CODE (_q20))
30598 : : {
30599 : 452074 : case SSA_NAME:
30600 : 452074 : if (gimple *_d2 = get_def (valueize, _q20))
30601 : : {
30602 : 344626 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
30603 : 391188 : switch (gimple_assign_rhs_code (_a2))
30604 : : {
30605 : 20581 : CASE_CONVERT:
30606 : 20581 : {
30607 : 20581 : tree _q30 = gimple_assign_rhs1 (_a2);
30608 : 20581 : _q30 = do_valueize (valueize, _q30);
30609 : 20581 : switch (TREE_CODE (_p1))
30610 : : {
30611 : 20581 : case SSA_NAME:
30612 : 20581 : if (gimple *_d3 = get_def (valueize, _p1))
30613 : : {
30614 : 20571 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30615 : 20417 : switch (gimple_assign_rhs_code (_a3))
30616 : : {
30617 : 18076 : case EQ_EXPR:
30618 : 18076 : {
30619 : 18076 : tree _q60 = gimple_assign_rhs1 (_a3);
30620 : 18076 : _q60 = do_valueize (valueize, _q60);
30621 : 18076 : tree _q61 = gimple_assign_rhs2 (_a3);
30622 : 18076 : _q61 = do_valueize (valueize, _q61);
30623 : 18076 : if (tree_swap_operands_p (_q60, _q61))
30624 : 48 : std::swap (_q60, _q61);
30625 : 18076 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
30626 : : {
30627 : 0 : {
30628 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
30629 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30630 : 0 : return true;
30631 : : }
30632 : : }
30633 : 18076 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
30634 : : {
30635 : 0 : {
30636 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
30637 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30638 : 0 : return true;
30639 : : }
30640 : : }
30641 : 452074 : break;
30642 : : }
30643 : 1019 : case NE_EXPR:
30644 : 1019 : {
30645 : 1019 : tree _q60 = gimple_assign_rhs1 (_a3);
30646 : 1019 : _q60 = do_valueize (valueize, _q60);
30647 : 1019 : tree _q61 = gimple_assign_rhs2 (_a3);
30648 : 1019 : _q61 = do_valueize (valueize, _q61);
30649 : 1019 : if (tree_swap_operands_p (_q60, _q61))
30650 : 0 : std::swap (_q60, _q61);
30651 : 1019 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
30652 : : {
30653 : 20 : {
30654 : 20 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
30655 : 20 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30656 : 0 : return true;
30657 : : }
30658 : : }
30659 : 1019 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
30660 : : {
30661 : 0 : {
30662 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
30663 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30664 : 0 : return true;
30665 : : }
30666 : : }
30667 : 452074 : break;
30668 : : }
30669 : : default:;
30670 : : }
30671 : : }
30672 : : break;
30673 : : default:;
30674 : : }
30675 : : break;
30676 : : }
30677 : : default:;
30678 : : }
30679 : : }
30680 : : break;
30681 : 452074 : default:;
30682 : : }
30683 : 452074 : switch (TREE_CODE (_q21))
30684 : : {
30685 : 135428 : case SSA_NAME:
30686 : 135428 : if (gimple *_d2 = get_def (valueize, _q21))
30687 : : {
30688 : 118293 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
30689 : 168402 : switch (gimple_assign_rhs_code (_a2))
30690 : : {
30691 : 7697 : CASE_CONVERT:
30692 : 7697 : {
30693 : 7697 : tree _q40 = gimple_assign_rhs1 (_a2);
30694 : 7697 : _q40 = do_valueize (valueize, _q40);
30695 : 7697 : switch (TREE_CODE (_p1))
30696 : : {
30697 : 7697 : case SSA_NAME:
30698 : 7697 : if (gimple *_d3 = get_def (valueize, _p1))
30699 : : {
30700 : 7689 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
30701 : 7676 : switch (gimple_assign_rhs_code (_a3))
30702 : : {
30703 : 7033 : case EQ_EXPR:
30704 : 7033 : {
30705 : 7033 : tree _q60 = gimple_assign_rhs1 (_a3);
30706 : 7033 : _q60 = do_valueize (valueize, _q60);
30707 : 7033 : tree _q61 = gimple_assign_rhs2 (_a3);
30708 : 7033 : _q61 = do_valueize (valueize, _q61);
30709 : 7033 : if (tree_swap_operands_p (_q60, _q61))
30710 : 7 : std::swap (_q60, _q61);
30711 : 7033 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
30712 : : {
30713 : 0 : {
30714 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
30715 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30716 : 0 : return true;
30717 : : }
30718 : : }
30719 : 7033 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
30720 : : {
30721 : 0 : {
30722 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
30723 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30724 : 0 : return true;
30725 : : }
30726 : : }
30727 : 452074 : break;
30728 : : }
30729 : 87 : case NE_EXPR:
30730 : 87 : {
30731 : 87 : tree _q60 = gimple_assign_rhs1 (_a3);
30732 : 87 : _q60 = do_valueize (valueize, _q60);
30733 : 87 : tree _q61 = gimple_assign_rhs2 (_a3);
30734 : 87 : _q61 = do_valueize (valueize, _q61);
30735 : 87 : if (tree_swap_operands_p (_q60, _q61))
30736 : 1 : std::swap (_q60, _q61);
30737 : 87 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
30738 : : {
30739 : 6 : {
30740 : 6 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
30741 : 6 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30742 : 0 : return true;
30743 : : }
30744 : : }
30745 : 87 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
30746 : : {
30747 : 0 : {
30748 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
30749 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30750 : 0 : return true;
30751 : : }
30752 : : }
30753 : 452074 : break;
30754 : : }
30755 : : default:;
30756 : : }
30757 : : }
30758 : : break;
30759 : : default:;
30760 : : }
30761 : : break;
30762 : : }
30763 : : default:;
30764 : : }
30765 : : }
30766 : : break;
30767 : 452074 : default:;
30768 : : }
30769 : 452074 : switch (TREE_CODE (_p1))
30770 : : {
30771 : 451994 : case SSA_NAME:
30772 : 451994 : if (gimple *_d2 = get_def (valueize, _p1))
30773 : : {
30774 : 449726 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
30775 : 445772 : switch (gimple_assign_rhs_code (_a2))
30776 : : {
30777 : 302669 : case EQ_EXPR:
30778 : 302669 : {
30779 : 302669 : tree _q50 = gimple_assign_rhs1 (_a2);
30780 : 302669 : _q50 = do_valueize (valueize, _q50);
30781 : 302669 : tree _q51 = gimple_assign_rhs2 (_a2);
30782 : 302669 : _q51 = do_valueize (valueize, _q51);
30783 : 302669 : if (tree_swap_operands_p (_q50, _q51))
30784 : 2939 : std::swap (_q50, _q51);
30785 : 302669 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
30786 : : {
30787 : 4975 : {
30788 : 4975 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30789 : 4975 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30790 : 24 : return true;
30791 : : }
30792 : 4951 : {
30793 : 4951 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
30794 : 4951 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30795 : 0 : return true;
30796 : : }
30797 : : }
30798 : 302645 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30799 : : {
30800 : 212 : {
30801 : 212 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30802 : 212 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30803 : 0 : return true;
30804 : : }
30805 : : }
30806 : 302645 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
30807 : : {
30808 : 204 : {
30809 : 204 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30810 : 204 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30811 : 0 : return true;
30812 : : }
30813 : 204 : {
30814 : 204 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
30815 : 204 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30816 : 0 : return true;
30817 : : }
30818 : : }
30819 : 302645 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
30820 : : {
30821 : 40631 : {
30822 : 40631 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30823 : 40631 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30824 : 3 : return true;
30825 : : }
30826 : 40628 : {
30827 : 40628 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
30828 : 40628 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30829 : 0 : return true;
30830 : : }
30831 : : }
30832 : 302642 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30833 : : {
30834 : 212 : {
30835 : 212 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
30836 : 212 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR))
30837 : 0 : return true;
30838 : : }
30839 : : }
30840 : 9019456 : break;
30841 : : }
30842 : 103736 : case NE_EXPR:
30843 : 103736 : {
30844 : 103736 : tree _q50 = gimple_assign_rhs1 (_a2);
30845 : 103736 : _q50 = do_valueize (valueize, _q50);
30846 : 103736 : tree _q51 = gimple_assign_rhs2 (_a2);
30847 : 103736 : _q51 = do_valueize (valueize, _q51);
30848 : 103736 : if (tree_swap_operands_p (_q50, _q51))
30849 : 58 : std::swap (_q50, _q51);
30850 : 103736 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
30851 : : {
30852 : 1572 : {
30853 : 1572 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30854 : 1572 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30855 : 277 : return true;
30856 : : }
30857 : 1295 : {
30858 : 1295 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
30859 : 1295 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30860 : 0 : return true;
30861 : : }
30862 : : }
30863 : 103459 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30864 : : {
30865 : 44 : {
30866 : 44 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30867 : 44 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30868 : 0 : return true;
30869 : : }
30870 : : }
30871 : 103459 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
30872 : : {
30873 : 1022 : {
30874 : 1022 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30875 : 1022 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30876 : 0 : return true;
30877 : : }
30878 : 1022 : {
30879 : 1022 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
30880 : 1022 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30881 : 0 : return true;
30882 : : }
30883 : : }
30884 : 103459 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
30885 : : {
30886 : 31997 : {
30887 : 31997 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30888 : 31997 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
30889 : 0 : return true;
30890 : : }
30891 : 31997 : {
30892 : 31997 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
30893 : 31997 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30894 : 0 : return true;
30895 : : }
30896 : : }
30897 : 103459 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30898 : : {
30899 : 44 : {
30900 : 44 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
30901 : 44 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
30902 : 0 : return true;
30903 : : }
30904 : : }
30905 : 9019456 : break;
30906 : : }
30907 : 3266 : case LT_EXPR:
30908 : 3266 : {
30909 : 3266 : tree _q50 = gimple_assign_rhs1 (_a2);
30910 : 3266 : _q50 = do_valueize (valueize, _q50);
30911 : 3266 : tree _q51 = gimple_assign_rhs2 (_a2);
30912 : 3266 : _q51 = do_valueize (valueize, _q51);
30913 : 3266 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
30914 : : {
30915 : 8 : {
30916 : 8 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30917 : 8 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30918 : 8 : return true;
30919 : : }
30920 : : }
30921 : 3258 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30922 : : {
30923 : 92 : {
30924 : 92 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30925 : 92 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30926 : 0 : return true;
30927 : : }
30928 : : }
30929 : 3258 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
30930 : : {
30931 : 26 : {
30932 : 26 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30933 : 26 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30934 : 0 : return true;
30935 : : }
30936 : : }
30937 : 3258 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
30938 : : {
30939 : 15 : {
30940 : 15 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30941 : 15 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30942 : 0 : return true;
30943 : : }
30944 : : }
30945 : : break;
30946 : : }
30947 : 7617 : case GT_EXPR:
30948 : 7617 : {
30949 : 7617 : tree _q50 = gimple_assign_rhs1 (_a2);
30950 : 7617 : _q50 = do_valueize (valueize, _q50);
30951 : 7617 : tree _q51 = gimple_assign_rhs2 (_a2);
30952 : 7617 : _q51 = do_valueize (valueize, _q51);
30953 : 7617 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
30954 : : {
30955 : 160 : {
30956 : 160 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30957 : 160 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30958 : 63 : return true;
30959 : : }
30960 : : }
30961 : 7554 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
30962 : : {
30963 : 0 : {
30964 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
30965 : 0 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30966 : 0 : return true;
30967 : : }
30968 : : }
30969 : 7554 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
30970 : : {
30971 : 24 : {
30972 : 24 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
30973 : 24 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, EQ_EXPR))
30974 : 0 : return true;
30975 : : }
30976 : : }
30977 : 7554 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
30978 : : {
30979 : 505 : {
30980 : 505 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
30981 : 505 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR))
30982 : 0 : return true;
30983 : : }
30984 : : }
30985 : : break;
30986 : : }
30987 : 7308 : case LE_EXPR:
30988 : 7308 : {
30989 : 7308 : tree _q50 = gimple_assign_rhs1 (_a2);
30990 : 7308 : _q50 = do_valueize (valueize, _q50);
30991 : 7308 : tree _q51 = gimple_assign_rhs2 (_a2);
30992 : 7308 : _q51 = do_valueize (valueize, _q51);
30993 : 7308 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
30994 : : {
30995 : 37 : {
30996 : 37 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
30997 : 37 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
30998 : 10 : return true;
30999 : : }
31000 : : }
31001 : 7298 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31002 : : {
31003 : 4 : {
31004 : 4 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31005 : 4 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
31006 : 0 : return true;
31007 : : }
31008 : : }
31009 : 7298 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
31010 : : {
31011 : 14 : {
31012 : 14 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31013 : 14 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
31014 : 0 : return true;
31015 : : }
31016 : : }
31017 : 7298 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
31018 : : {
31019 : 132 : {
31020 : 132 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31021 : 132 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
31022 : 0 : return true;
31023 : : }
31024 : : }
31025 : : break;
31026 : : }
31027 : 4542 : case GE_EXPR:
31028 : 4542 : {
31029 : 4542 : tree _q50 = gimple_assign_rhs1 (_a2);
31030 : 4542 : _q50 = do_valueize (valueize, _q50);
31031 : 4542 : tree _q51 = gimple_assign_rhs2 (_a2);
31032 : 4542 : _q51 = do_valueize (valueize, _q51);
31033 : 4542 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
31034 : : {
31035 : 21 : {
31036 : 21 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31037 : 21 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
31038 : 13 : return true;
31039 : : }
31040 : : }
31041 : 4529 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31042 : : {
31043 : 12 : {
31044 : 12 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31045 : 12 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
31046 : 0 : return true;
31047 : : }
31048 : : }
31049 : 4529 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
31050 : : {
31051 : 31 : {
31052 : 31 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31053 : 31 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
31054 : 0 : return true;
31055 : : }
31056 : : }
31057 : 4529 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
31058 : : {
31059 : 211 : {
31060 : 211 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31061 : 211 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
31062 : 0 : return true;
31063 : : }
31064 : : }
31065 : : break;
31066 : : }
31067 : : default:;
31068 : : }
31069 : : }
31070 : : break;
31071 : : default:;
31072 : : }
31073 : 9019456 : break;
31074 : : }
31075 : 292987 : case NE_EXPR:
31076 : 292987 : {
31077 : 292987 : tree _q20 = gimple_assign_rhs1 (_a1);
31078 : 292987 : _q20 = do_valueize (valueize, _q20);
31079 : 292987 : tree _q21 = gimple_assign_rhs2 (_a1);
31080 : 292987 : _q21 = do_valueize (valueize, _q21);
31081 : 292987 : if (tree_swap_operands_p (_q20, _q21))
31082 : 840 : std::swap (_q20, _q21);
31083 : 292987 : if (gimple_min_value (_q21, valueize))
31084 : : {
31085 : 133523 : switch (TREE_CODE (_p1))
31086 : : {
31087 : 133515 : case SSA_NAME:
31088 : 133515 : if (gimple *_d2 = get_def (valueize, _p1))
31089 : : {
31090 : 132349 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
31091 : 129777 : switch (gimple_assign_rhs_code (_a2))
31092 : : {
31093 : 3501 : case GT_EXPR:
31094 : 3501 : {
31095 : 3501 : tree _q50 = gimple_assign_rhs1 (_a2);
31096 : 3501 : _q50 = do_valueize (valueize, _q50);
31097 : 3501 : tree _q51 = gimple_assign_rhs2 (_a2);
31098 : 3501 : _q51 = do_valueize (valueize, _q51);
31099 : 3501 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
31100 : : {
31101 : 0 : {
31102 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q51 };
31103 : 0 : if (gimple_simplify_574 (res_op, seq, valueize, type, captures, NE_EXPR))
31104 : 0 : return true;
31105 : : }
31106 : : }
31107 : : break;
31108 : : }
31109 : 2762 : case LT_EXPR:
31110 : 2762 : {
31111 : 2762 : tree _q50 = gimple_assign_rhs1 (_a2);
31112 : 2762 : _q50 = do_valueize (valueize, _q50);
31113 : 2762 : tree _q51 = gimple_assign_rhs2 (_a2);
31114 : 2762 : _q51 = do_valueize (valueize, _q51);
31115 : 2762 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31116 : : {
31117 : 8 : {
31118 : 8 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q50 };
31119 : 8 : if (gimple_simplify_574 (res_op, seq, valueize, type, captures, NE_EXPR))
31120 : 8 : return true;
31121 : : }
31122 : : }
31123 : : break;
31124 : : }
31125 : 5504 : case GE_EXPR:
31126 : 5504 : {
31127 : 5504 : tree _q50 = gimple_assign_rhs1 (_a2);
31128 : 5504 : _q50 = do_valueize (valueize, _q50);
31129 : 5504 : tree _q51 = gimple_assign_rhs2 (_a2);
31130 : 5504 : _q51 = do_valueize (valueize, _q51);
31131 : 5504 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31132 : : {
31133 : 1662 : {
31134 : 1662 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q50 };
31135 : 1662 : if (gimple_simplify_580 (res_op, seq, valueize, type, captures))
31136 : 214 : return true;
31137 : : }
31138 : : }
31139 : : break;
31140 : : }
31141 : 2215 : case LE_EXPR:
31142 : 2215 : {
31143 : 2215 : tree _q50 = gimple_assign_rhs1 (_a2);
31144 : 2215 : _q50 = do_valueize (valueize, _q50);
31145 : 2215 : tree _q51 = gimple_assign_rhs2 (_a2);
31146 : 2215 : _q51 = do_valueize (valueize, _q51);
31147 : 2215 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
31148 : : {
31149 : 488 : {
31150 : 488 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q51 };
31151 : 488 : if (gimple_simplify_580 (res_op, seq, valueize, type, captures))
31152 : 232 : return true;
31153 : : }
31154 : : }
31155 : : break;
31156 : : }
31157 : : default:;
31158 : : }
31159 : : }
31160 : : break;
31161 : : default:;
31162 : : }
31163 : : }
31164 : 292533 : if (gimple_max_value (_q21, valueize))
31165 : : {
31166 : 7488 : switch (TREE_CODE (_p1))
31167 : : {
31168 : 7488 : case SSA_NAME:
31169 : 7488 : if (gimple *_d2 = get_def (valueize, _p1))
31170 : : {
31171 : 7488 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
31172 : 7460 : switch (gimple_assign_rhs_code (_a2))
31173 : : {
31174 : 2344 : case LT_EXPR:
31175 : 2344 : {
31176 : 2344 : tree _q50 = gimple_assign_rhs1 (_a2);
31177 : 2344 : _q50 = do_valueize (valueize, _q50);
31178 : 2344 : tree _q51 = gimple_assign_rhs2 (_a2);
31179 : 2344 : _q51 = do_valueize (valueize, _q51);
31180 : 2344 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
31181 : : {
31182 : 0 : {
31183 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q51 };
31184 : 0 : if (gimple_simplify_576 (res_op, seq, valueize, type, captures, NE_EXPR))
31185 : 0 : return true;
31186 : : }
31187 : : }
31188 : : break;
31189 : : }
31190 : 1931 : case GT_EXPR:
31191 : 1931 : {
31192 : 1931 : tree _q50 = gimple_assign_rhs1 (_a2);
31193 : 1931 : _q50 = do_valueize (valueize, _q50);
31194 : 1931 : tree _q51 = gimple_assign_rhs2 (_a2);
31195 : 1931 : _q51 = do_valueize (valueize, _q51);
31196 : 1931 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31197 : : {
31198 : 2 : {
31199 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q50 };
31200 : 2 : if (gimple_simplify_576 (res_op, seq, valueize, type, captures, NE_EXPR))
31201 : 2 : return true;
31202 : : }
31203 : : }
31204 : : break;
31205 : : }
31206 : : default:;
31207 : : }
31208 : : }
31209 : : break;
31210 : : default:;
31211 : : }
31212 : : }
31213 : 292531 : switch (TREE_CODE (_p1))
31214 : : {
31215 : 292403 : case SSA_NAME:
31216 : 292403 : if (gimple *_d2 = get_def (valueize, _p1))
31217 : : {
31218 : 289324 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
31219 : 284185 : switch (gimple_assign_rhs_code (_a2))
31220 : : {
31221 : 65281 : case EQ_EXPR:
31222 : 65281 : {
31223 : 65281 : tree _q50 = gimple_assign_rhs1 (_a2);
31224 : 65281 : _q50 = do_valueize (valueize, _q50);
31225 : 65281 : tree _q51 = gimple_assign_rhs2 (_a2);
31226 : 65281 : _q51 = do_valueize (valueize, _q51);
31227 : 65281 : if (tree_swap_operands_p (_q50, _q51))
31228 : 382 : std::swap (_q50, _q51);
31229 : 65281 : switch (TREE_CODE (_q50))
31230 : : {
31231 : 65281 : case SSA_NAME:
31232 : 65281 : if (gimple *_d3 = get_def (valueize, _q50))
31233 : : {
31234 : 62467 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31235 : 61884 : switch (gimple_assign_rhs_code (_a3))
31236 : : {
31237 : 930 : CASE_CONVERT:
31238 : 930 : {
31239 : 930 : tree _q60 = gimple_assign_rhs1 (_a3);
31240 : 930 : _q60 = do_valueize (valueize, _q60);
31241 : 930 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
31242 : : {
31243 : 110 : {
31244 : 110 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31245 : 110 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31246 : 0 : return true;
31247 : : }
31248 : : }
31249 : 930 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
31250 : : {
31251 : 0 : {
31252 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31253 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31254 : 0 : return true;
31255 : : }
31256 : : }
31257 : : break;
31258 : : }
31259 : : default:;
31260 : : }
31261 : : }
31262 : : break;
31263 : 65281 : default:;
31264 : : }
31265 : 65281 : switch (TREE_CODE (_q51))
31266 : : {
31267 : 12014 : case SSA_NAME:
31268 : 12014 : if (gimple *_d3 = get_def (valueize, _q51))
31269 : : {
31270 : 10958 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31271 : 6940 : switch (gimple_assign_rhs_code (_a3))
31272 : : {
31273 : 275 : CASE_CONVERT:
31274 : 275 : {
31275 : 275 : tree _q70 = gimple_assign_rhs1 (_a3);
31276 : 275 : _q70 = do_valueize (valueize, _q70);
31277 : 275 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
31278 : : {
31279 : 12 : {
31280 : 12 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31281 : 12 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31282 : 0 : return true;
31283 : : }
31284 : : }
31285 : 275 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
31286 : : {
31287 : 0 : {
31288 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31289 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31290 : 0 : return true;
31291 : : }
31292 : : }
31293 : : break;
31294 : : }
31295 : : default:;
31296 : : }
31297 : : }
31298 : : break;
31299 : : default:;
31300 : : }
31301 : 292470 : break;
31302 : : }
31303 : 169346 : case NE_EXPR:
31304 : 169346 : {
31305 : 169346 : tree _q50 = gimple_assign_rhs1 (_a2);
31306 : 169346 : _q50 = do_valueize (valueize, _q50);
31307 : 169346 : tree _q51 = gimple_assign_rhs2 (_a2);
31308 : 169346 : _q51 = do_valueize (valueize, _q51);
31309 : 169346 : if (tree_swap_operands_p (_q50, _q51))
31310 : 719 : std::swap (_q50, _q51);
31311 : 169346 : switch (TREE_CODE (_q50))
31312 : : {
31313 : 169346 : case SSA_NAME:
31314 : 169346 : if (gimple *_d3 = get_def (valueize, _q50))
31315 : : {
31316 : 154057 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31317 : 142194 : switch (gimple_assign_rhs_code (_a3))
31318 : : {
31319 : 2802 : CASE_CONVERT:
31320 : 2802 : {
31321 : 2802 : tree _q60 = gimple_assign_rhs1 (_a3);
31322 : 2802 : _q60 = do_valueize (valueize, _q60);
31323 : 2802 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
31324 : : {
31325 : 24 : {
31326 : 24 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31327 : 24 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31328 : 0 : return true;
31329 : : }
31330 : : }
31331 : 2802 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
31332 : : {
31333 : 6 : {
31334 : 6 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31335 : 6 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31336 : 0 : return true;
31337 : : }
31338 : : }
31339 : : break;
31340 : : }
31341 : : default:;
31342 : : }
31343 : : }
31344 : : break;
31345 : 169346 : default:;
31346 : : }
31347 : 169346 : switch (TREE_CODE (_q51))
31348 : : {
31349 : 24786 : case SSA_NAME:
31350 : 24786 : if (gimple *_d3 = get_def (valueize, _q51))
31351 : : {
31352 : 21827 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31353 : 15006 : switch (gimple_assign_rhs_code (_a3))
31354 : : {
31355 : 341 : CASE_CONVERT:
31356 : 341 : {
31357 : 341 : tree _q70 = gimple_assign_rhs1 (_a3);
31358 : 341 : _q70 = do_valueize (valueize, _q70);
31359 : 341 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
31360 : : {
31361 : 29 : {
31362 : 29 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31363 : 29 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31364 : 0 : return true;
31365 : : }
31366 : : }
31367 : 341 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
31368 : : {
31369 : 2 : {
31370 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31371 : 2 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31372 : 0 : return true;
31373 : : }
31374 : : }
31375 : : break;
31376 : : }
31377 : : default:;
31378 : : }
31379 : : }
31380 : : break;
31381 : : default:;
31382 : : }
31383 : 292470 : break;
31384 : : }
31385 : 10964 : case LT_EXPR:
31386 : 10964 : {
31387 : 10964 : tree _q50 = gimple_assign_rhs1 (_a2);
31388 : 10964 : _q50 = do_valueize (valueize, _q50);
31389 : 10964 : tree _q51 = gimple_assign_rhs2 (_a2);
31390 : 10964 : _q51 = do_valueize (valueize, _q51);
31391 : 10964 : switch (TREE_CODE (_q50))
31392 : : {
31393 : 10824 : case SSA_NAME:
31394 : 10824 : if (gimple *_d3 = get_def (valueize, _q50))
31395 : : {
31396 : 9027 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31397 : 12194 : switch (gimple_assign_rhs_code (_a3))
31398 : : {
31399 : 894 : CASE_CONVERT:
31400 : 894 : {
31401 : 894 : tree _q60 = gimple_assign_rhs1 (_a3);
31402 : 894 : _q60 = do_valueize (valueize, _q60);
31403 : 894 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
31404 : : {
31405 : 30 : {
31406 : 30 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31407 : 30 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
31408 : 0 : return true;
31409 : : }
31410 : : }
31411 : 894 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
31412 : : {
31413 : 0 : {
31414 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31415 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
31416 : 0 : return true;
31417 : : }
31418 : : }
31419 : : break;
31420 : : }
31421 : : default:;
31422 : : }
31423 : : }
31424 : : break;
31425 : 10964 : default:;
31426 : : }
31427 : 10964 : switch (TREE_CODE (_q51))
31428 : : {
31429 : 10204 : case SSA_NAME:
31430 : 10204 : if (gimple *_d3 = get_def (valueize, _q51))
31431 : : {
31432 : 9194 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31433 : 13233 : switch (gimple_assign_rhs_code (_a3))
31434 : : {
31435 : 146 : CASE_CONVERT:
31436 : 146 : {
31437 : 146 : tree _q70 = gimple_assign_rhs1 (_a3);
31438 : 146 : _q70 = do_valueize (valueize, _q70);
31439 : 146 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
31440 : : {
31441 : 15 : {
31442 : 15 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31443 : 15 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
31444 : 0 : return true;
31445 : : }
31446 : : }
31447 : 146 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
31448 : : {
31449 : 0 : {
31450 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31451 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
31452 : 0 : return true;
31453 : : }
31454 : : }
31455 : : break;
31456 : : }
31457 : : default:;
31458 : : }
31459 : : }
31460 : : break;
31461 : : default:;
31462 : : }
31463 : : break;
31464 : : }
31465 : 14022 : case GT_EXPR:
31466 : 14022 : {
31467 : 14022 : tree _q50 = gimple_assign_rhs1 (_a2);
31468 : 14022 : _q50 = do_valueize (valueize, _q50);
31469 : 14022 : tree _q51 = gimple_assign_rhs2 (_a2);
31470 : 14022 : _q51 = do_valueize (valueize, _q51);
31471 : 14022 : switch (TREE_CODE (_q50))
31472 : : {
31473 : 14018 : case SSA_NAME:
31474 : 14018 : if (gimple *_d3 = get_def (valueize, _q50))
31475 : : {
31476 : 12257 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31477 : 12099 : switch (gimple_assign_rhs_code (_a3))
31478 : : {
31479 : 663 : CASE_CONVERT:
31480 : 663 : {
31481 : 663 : tree _q60 = gimple_assign_rhs1 (_a3);
31482 : 663 : _q60 = do_valueize (valueize, _q60);
31483 : 663 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
31484 : : {
31485 : 59 : {
31486 : 59 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31487 : 59 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
31488 : 47 : return true;
31489 : : }
31490 : : }
31491 : 616 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
31492 : : {
31493 : 0 : {
31494 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31495 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
31496 : 0 : return true;
31497 : : }
31498 : : }
31499 : : break;
31500 : : }
31501 : : default:;
31502 : : }
31503 : : }
31504 : : break;
31505 : 13975 : default:;
31506 : : }
31507 : 13975 : switch (TREE_CODE (_q51))
31508 : : {
31509 : 6769 : case SSA_NAME:
31510 : 6769 : if (gimple *_d3 = get_def (valueize, _q51))
31511 : : {
31512 : 5335 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31513 : 4361 : switch (gimple_assign_rhs_code (_a3))
31514 : : {
31515 : 331 : CASE_CONVERT:
31516 : 331 : {
31517 : 331 : tree _q70 = gimple_assign_rhs1 (_a3);
31518 : 331 : _q70 = do_valueize (valueize, _q70);
31519 : 331 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
31520 : : {
31521 : 44 : {
31522 : 44 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31523 : 44 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
31524 : 0 : return true;
31525 : : }
31526 : : }
31527 : 331 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
31528 : : {
31529 : 0 : {
31530 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31531 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
31532 : 0 : return true;
31533 : : }
31534 : : }
31535 : : break;
31536 : : }
31537 : : default:;
31538 : : }
31539 : : }
31540 : : break;
31541 : : default:;
31542 : : }
31543 : : break;
31544 : : }
31545 : 5221 : case LE_EXPR:
31546 : 5221 : {
31547 : 5221 : tree _q50 = gimple_assign_rhs1 (_a2);
31548 : 5221 : _q50 = do_valueize (valueize, _q50);
31549 : 5221 : tree _q51 = gimple_assign_rhs2 (_a2);
31550 : 5221 : _q51 = do_valueize (valueize, _q51);
31551 : 5221 : switch (TREE_CODE (_q50))
31552 : : {
31553 : 5221 : case SSA_NAME:
31554 : 5221 : if (gimple *_d3 = get_def (valueize, _q50))
31555 : : {
31556 : 4825 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31557 : 4769 : switch (gimple_assign_rhs_code (_a3))
31558 : : {
31559 : 273 : CASE_CONVERT:
31560 : 273 : {
31561 : 273 : tree _q60 = gimple_assign_rhs1 (_a3);
31562 : 273 : _q60 = do_valueize (valueize, _q60);
31563 : 273 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
31564 : : {
31565 : 13 : {
31566 : 13 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31567 : 13 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
31568 : 0 : return true;
31569 : : }
31570 : : }
31571 : 273 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
31572 : : {
31573 : 0 : {
31574 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31575 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
31576 : 0 : return true;
31577 : : }
31578 : : }
31579 : : break;
31580 : : }
31581 : : default:;
31582 : : }
31583 : : }
31584 : : break;
31585 : 5221 : default:;
31586 : : }
31587 : 5221 : switch (TREE_CODE (_q51))
31588 : : {
31589 : 1529 : case SSA_NAME:
31590 : 1529 : if (gimple *_d3 = get_def (valueize, _q51))
31591 : : {
31592 : 1355 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31593 : 1880 : switch (gimple_assign_rhs_code (_a3))
31594 : : {
31595 : 4 : CASE_CONVERT:
31596 : 4 : {
31597 : 4 : tree _q70 = gimple_assign_rhs1 (_a3);
31598 : 4 : _q70 = do_valueize (valueize, _q70);
31599 : 4 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
31600 : : {
31601 : 0 : {
31602 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31603 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
31604 : 0 : return true;
31605 : : }
31606 : : }
31607 : 4 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
31608 : : {
31609 : 0 : {
31610 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31611 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
31612 : 0 : return true;
31613 : : }
31614 : : }
31615 : : break;
31616 : : }
31617 : : default:;
31618 : : }
31619 : : }
31620 : : break;
31621 : : default:;
31622 : : }
31623 : : break;
31624 : : }
31625 : 8231 : case GE_EXPR:
31626 : 8231 : {
31627 : 8231 : tree _q50 = gimple_assign_rhs1 (_a2);
31628 : 8231 : _q50 = do_valueize (valueize, _q50);
31629 : 8231 : tree _q51 = gimple_assign_rhs2 (_a2);
31630 : 8231 : _q51 = do_valueize (valueize, _q51);
31631 : 8231 : switch (TREE_CODE (_q50))
31632 : : {
31633 : 8231 : case SSA_NAME:
31634 : 8231 : if (gimple *_d3 = get_def (valueize, _q50))
31635 : : {
31636 : 7626 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31637 : 4296 : switch (gimple_assign_rhs_code (_a3))
31638 : : {
31639 : 905 : CASE_CONVERT:
31640 : 905 : {
31641 : 905 : tree _q60 = gimple_assign_rhs1 (_a3);
31642 : 905 : _q60 = do_valueize (valueize, _q60);
31643 : 905 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
31644 : : {
31645 : 14 : {
31646 : 14 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31647 : 14 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
31648 : 14 : return true;
31649 : : }
31650 : : }
31651 : 891 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
31652 : : {
31653 : 0 : {
31654 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31655 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
31656 : 0 : return true;
31657 : : }
31658 : : }
31659 : : break;
31660 : : }
31661 : : default:;
31662 : : }
31663 : : }
31664 : : break;
31665 : 8217 : default:;
31666 : : }
31667 : 8217 : switch (TREE_CODE (_q51))
31668 : : {
31669 : 3496 : case SSA_NAME:
31670 : 3496 : if (gimple *_d3 = get_def (valueize, _q51))
31671 : : {
31672 : 3391 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31673 : 4026 : switch (gimple_assign_rhs_code (_a3))
31674 : : {
31675 : 627 : CASE_CONVERT:
31676 : 627 : {
31677 : 627 : tree _q70 = gimple_assign_rhs1 (_a3);
31678 : 627 : _q70 = do_valueize (valueize, _q70);
31679 : 627 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
31680 : : {
31681 : 10 : {
31682 : 10 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31683 : 10 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
31684 : 0 : return true;
31685 : : }
31686 : : }
31687 : 627 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
31688 : : {
31689 : 0 : {
31690 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31691 : 0 : if (gimple_simplify_578 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
31692 : 0 : return true;
31693 : : }
31694 : : }
31695 : : break;
31696 : : }
31697 : : default:;
31698 : : }
31699 : : }
31700 : : break;
31701 : : default:;
31702 : : }
31703 : : break;
31704 : : }
31705 : : default:;
31706 : : }
31707 : : }
31708 : : break;
31709 : 292470 : default:;
31710 : : }
31711 : 292470 : switch (TREE_CODE (_q20))
31712 : : {
31713 : 292429 : case SSA_NAME:
31714 : 292429 : if (gimple *_d2 = get_def (valueize, _q20))
31715 : : {
31716 : 256155 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
31717 : 241249 : switch (gimple_assign_rhs_code (_a2))
31718 : : {
31719 : 7236 : CASE_CONVERT:
31720 : 7236 : {
31721 : 7236 : tree _q30 = gimple_assign_rhs1 (_a2);
31722 : 7236 : _q30 = do_valueize (valueize, _q30);
31723 : 7236 : switch (TREE_CODE (_p1))
31724 : : {
31725 : 7236 : case SSA_NAME:
31726 : 7236 : if (gimple *_d3 = get_def (valueize, _p1))
31727 : : {
31728 : 7217 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31729 : 7140 : switch (gimple_assign_rhs_code (_a3))
31730 : : {
31731 : 635 : case EQ_EXPR:
31732 : 635 : {
31733 : 635 : tree _q60 = gimple_assign_rhs1 (_a3);
31734 : 635 : _q60 = do_valueize (valueize, _q60);
31735 : 635 : tree _q61 = gimple_assign_rhs2 (_a3);
31736 : 635 : _q61 = do_valueize (valueize, _q61);
31737 : 635 : if (tree_swap_operands_p (_q60, _q61))
31738 : 1 : std::swap (_q60, _q61);
31739 : 635 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
31740 : : {
31741 : 0 : {
31742 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
31743 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31744 : 0 : return true;
31745 : : }
31746 : : }
31747 : 635 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
31748 : : {
31749 : 0 : {
31750 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
31751 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31752 : 0 : return true;
31753 : : }
31754 : : }
31755 : 292470 : break;
31756 : : }
31757 : 3916 : case NE_EXPR:
31758 : 3916 : {
31759 : 3916 : tree _q60 = gimple_assign_rhs1 (_a3);
31760 : 3916 : _q60 = do_valueize (valueize, _q60);
31761 : 3916 : tree _q61 = gimple_assign_rhs2 (_a3);
31762 : 3916 : _q61 = do_valueize (valueize, _q61);
31763 : 3916 : if (tree_swap_operands_p (_q60, _q61))
31764 : 19 : std::swap (_q60, _q61);
31765 : 3916 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
31766 : : {
31767 : 50 : {
31768 : 50 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
31769 : 50 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31770 : 0 : return true;
31771 : : }
31772 : : }
31773 : 3916 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
31774 : : {
31775 : 0 : {
31776 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
31777 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31778 : 0 : return true;
31779 : : }
31780 : : }
31781 : 292470 : break;
31782 : : }
31783 : : default:;
31784 : : }
31785 : : }
31786 : : break;
31787 : : default:;
31788 : : }
31789 : : break;
31790 : : }
31791 : : default:;
31792 : : }
31793 : : }
31794 : : break;
31795 : 292470 : default:;
31796 : : }
31797 : 292470 : switch (TREE_CODE (_q21))
31798 : : {
31799 : 24505 : case SSA_NAME:
31800 : 24505 : if (gimple *_d2 = get_def (valueize, _q21))
31801 : : {
31802 : 20048 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
31803 : 18611 : switch (gimple_assign_rhs_code (_a2))
31804 : : {
31805 : 808 : CASE_CONVERT:
31806 : 808 : {
31807 : 808 : tree _q40 = gimple_assign_rhs1 (_a2);
31808 : 808 : _q40 = do_valueize (valueize, _q40);
31809 : 808 : switch (TREE_CODE (_p1))
31810 : : {
31811 : 808 : case SSA_NAME:
31812 : 808 : if (gimple *_d3 = get_def (valueize, _p1))
31813 : : {
31814 : 795 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
31815 : 764 : switch (gimple_assign_rhs_code (_a3))
31816 : : {
31817 : 70 : case EQ_EXPR:
31818 : 70 : {
31819 : 70 : tree _q60 = gimple_assign_rhs1 (_a3);
31820 : 70 : _q60 = do_valueize (valueize, _q60);
31821 : 70 : tree _q61 = gimple_assign_rhs2 (_a3);
31822 : 70 : _q61 = do_valueize (valueize, _q61);
31823 : 70 : if (tree_swap_operands_p (_q60, _q61))
31824 : 0 : std::swap (_q60, _q61);
31825 : 70 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
31826 : : {
31827 : 0 : {
31828 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
31829 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31830 : 0 : return true;
31831 : : }
31832 : : }
31833 : 70 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
31834 : : {
31835 : 0 : {
31836 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
31837 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31838 : 0 : return true;
31839 : : }
31840 : : }
31841 : 292470 : break;
31842 : : }
31843 : 441 : case NE_EXPR:
31844 : 441 : {
31845 : 441 : tree _q60 = gimple_assign_rhs1 (_a3);
31846 : 441 : _q60 = do_valueize (valueize, _q60);
31847 : 441 : tree _q61 = gimple_assign_rhs2 (_a3);
31848 : 441 : _q61 = do_valueize (valueize, _q61);
31849 : 441 : if (tree_swap_operands_p (_q60, _q61))
31850 : 2 : std::swap (_q60, _q61);
31851 : 441 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
31852 : : {
31853 : 57 : {
31854 : 57 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
31855 : 57 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31856 : 0 : return true;
31857 : : }
31858 : : }
31859 : 441 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
31860 : : {
31861 : 0 : {
31862 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
31863 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31864 : 0 : return true;
31865 : : }
31866 : : }
31867 : 292470 : break;
31868 : : }
31869 : : default:;
31870 : : }
31871 : : }
31872 : : break;
31873 : : default:;
31874 : : }
31875 : : break;
31876 : : }
31877 : : default:;
31878 : : }
31879 : : }
31880 : : break;
31881 : 292470 : default:;
31882 : : }
31883 : 292470 : switch (TREE_CODE (_p1))
31884 : : {
31885 : 292342 : case SSA_NAME:
31886 : 292342 : if (gimple *_d2 = get_def (valueize, _p1))
31887 : : {
31888 : 289263 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
31889 : 284124 : switch (gimple_assign_rhs_code (_a2))
31890 : : {
31891 : 65281 : case EQ_EXPR:
31892 : 65281 : {
31893 : 65281 : tree _q50 = gimple_assign_rhs1 (_a2);
31894 : 65281 : _q50 = do_valueize (valueize, _q50);
31895 : 65281 : tree _q51 = gimple_assign_rhs2 (_a2);
31896 : 65281 : _q51 = do_valueize (valueize, _q51);
31897 : 65281 : if (tree_swap_operands_p (_q50, _q51))
31898 : 382 : std::swap (_q50, _q51);
31899 : 65281 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
31900 : : {
31901 : 1548 : {
31902 : 1548 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31903 : 1548 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31904 : 208 : return true;
31905 : : }
31906 : 1340 : {
31907 : 1340 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
31908 : 1340 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31909 : 0 : return true;
31910 : : }
31911 : : }
31912 : 65073 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31913 : : {
31914 : 555 : {
31915 : 555 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31916 : 555 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31917 : 0 : return true;
31918 : : }
31919 : : }
31920 : 65073 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
31921 : : {
31922 : 59 : {
31923 : 59 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31924 : 59 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31925 : 0 : return true;
31926 : : }
31927 : 59 : {
31928 : 59 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
31929 : 59 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31930 : 0 : return true;
31931 : : }
31932 : : }
31933 : 65073 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
31934 : : {
31935 : 15391 : {
31936 : 15391 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
31937 : 15391 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR))
31938 : 0 : return true;
31939 : : }
31940 : 15391 : {
31941 : 15391 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
31942 : 15391 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31943 : 0 : return true;
31944 : : }
31945 : : }
31946 : 65073 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31947 : : {
31948 : 555 : {
31949 : 555 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
31950 : 555 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR))
31951 : 0 : return true;
31952 : : }
31953 : : }
31954 : 9019456 : break;
31955 : : }
31956 : 169346 : case NE_EXPR:
31957 : 169346 : {
31958 : 169346 : tree _q50 = gimple_assign_rhs1 (_a2);
31959 : 169346 : _q50 = do_valueize (valueize, _q50);
31960 : 169346 : tree _q51 = gimple_assign_rhs2 (_a2);
31961 : 169346 : _q51 = do_valueize (valueize, _q51);
31962 : 169346 : if (tree_swap_operands_p (_q50, _q51))
31963 : 719 : std::swap (_q50, _q51);
31964 : 169346 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
31965 : : {
31966 : 43832 : {
31967 : 43832 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
31968 : 43832 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31969 : 9 : return true;
31970 : : }
31971 : 43823 : {
31972 : 43823 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
31973 : 43823 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31974 : 0 : return true;
31975 : : }
31976 : : }
31977 : 169337 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
31978 : : {
31979 : 1080 : {
31980 : 1080 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
31981 : 1080 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31982 : 0 : return true;
31983 : : }
31984 : : }
31985 : 169337 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
31986 : : {
31987 : 1422 : {
31988 : 1422 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
31989 : 1422 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31990 : 0 : return true;
31991 : : }
31992 : 1422 : {
31993 : 1422 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
31994 : 1422 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
31995 : 0 : return true;
31996 : : }
31997 : : }
31998 : 169337 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
31999 : : {
32000 : 34784 : {
32001 : 34784 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
32002 : 34784 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
32003 : 0 : return true;
32004 : : }
32005 : 34784 : {
32006 : 34784 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
32007 : 34784 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
32008 : 0 : return true;
32009 : : }
32010 : : }
32011 : 169337 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32012 : : {
32013 : 1080 : {
32014 : 1080 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
32015 : 1080 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR))
32016 : 0 : return true;
32017 : : }
32018 : : }
32019 : 9019456 : break;
32020 : : }
32021 : 10964 : case LT_EXPR:
32022 : 10964 : {
32023 : 10964 : tree _q50 = gimple_assign_rhs1 (_a2);
32024 : 10964 : _q50 = do_valueize (valueize, _q50);
32025 : 10964 : tree _q51 = gimple_assign_rhs2 (_a2);
32026 : 10964 : _q51 = do_valueize (valueize, _q51);
32027 : 10964 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32028 : : {
32029 : 5391 : {
32030 : 5391 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
32031 : 5391 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
32032 : 4 : return true;
32033 : : }
32034 : : }
32035 : 10960 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32036 : : {
32037 : 2350 : {
32038 : 2350 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
32039 : 2350 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
32040 : 0 : return true;
32041 : : }
32042 : : }
32043 : 10960 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32044 : : {
32045 : 5 : {
32046 : 5 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
32047 : 5 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
32048 : 0 : return true;
32049 : : }
32050 : : }
32051 : 10960 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32052 : : {
32053 : 155 : {
32054 : 155 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
32055 : 155 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
32056 : 0 : return true;
32057 : : }
32058 : : }
32059 : : break;
32060 : : }
32061 : 13975 : case GT_EXPR:
32062 : 13975 : {
32063 : 13975 : tree _q50 = gimple_assign_rhs1 (_a2);
32064 : 13975 : _q50 = do_valueize (valueize, _q50);
32065 : 13975 : tree _q51 = gimple_assign_rhs2 (_a2);
32066 : 13975 : _q51 = do_valueize (valueize, _q51);
32067 : 13975 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32068 : : {
32069 : 3150 : {
32070 : 3150 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
32071 : 3150 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
32072 : 96 : return true;
32073 : : }
32074 : : }
32075 : 13879 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32076 : : {
32077 : 3194 : {
32078 : 3194 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
32079 : 3194 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
32080 : 0 : return true;
32081 : : }
32082 : : }
32083 : 13879 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32084 : : {
32085 : 10 : {
32086 : 10 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
32087 : 10 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR))
32088 : 0 : return true;
32089 : : }
32090 : : }
32091 : 13879 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32092 : : {
32093 : 417 : {
32094 : 417 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
32095 : 417 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR))
32096 : 0 : return true;
32097 : : }
32098 : : }
32099 : : break;
32100 : : }
32101 : 5221 : case LE_EXPR:
32102 : 5221 : {
32103 : 5221 : tree _q50 = gimple_assign_rhs1 (_a2);
32104 : 5221 : _q50 = do_valueize (valueize, _q50);
32105 : 5221 : tree _q51 = gimple_assign_rhs2 (_a2);
32106 : 5221 : _q51 = do_valueize (valueize, _q51);
32107 : 5221 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32108 : : {
32109 : 1593 : {
32110 : 1593 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
32111 : 1593 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32112 : 20 : return true;
32113 : : }
32114 : : }
32115 : 5201 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32116 : : {
32117 : 46 : {
32118 : 46 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
32119 : 46 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32120 : 0 : return true;
32121 : : }
32122 : : }
32123 : 5201 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32124 : : {
32125 : 12 : {
32126 : 12 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
32127 : 12 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32128 : 0 : return true;
32129 : : }
32130 : : }
32131 : 5201 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32132 : : {
32133 : 43 : {
32134 : 43 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
32135 : 43 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32136 : 0 : return true;
32137 : : }
32138 : : }
32139 : : break;
32140 : : }
32141 : 8217 : case GE_EXPR:
32142 : 8217 : {
32143 : 8217 : tree _q50 = gimple_assign_rhs1 (_a2);
32144 : 8217 : _q50 = do_valueize (valueize, _q50);
32145 : 8217 : tree _q51 = gimple_assign_rhs2 (_a2);
32146 : 8217 : _q51 = do_valueize (valueize, _q51);
32147 : 8217 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32148 : : {
32149 : 219 : {
32150 : 219 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
32151 : 219 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32152 : 4 : return true;
32153 : : }
32154 : : }
32155 : 8213 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32156 : : {
32157 : 1928 : {
32158 : 1928 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51, _q50 };
32159 : 1928 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32160 : 0 : return true;
32161 : : }
32162 : : }
32163 : 8213 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32164 : : {
32165 : 75 : {
32166 : 75 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50, _q51 };
32167 : 75 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32168 : 0 : return true;
32169 : : }
32170 : : }
32171 : 8213 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32172 : : {
32173 : 71 : {
32174 : 71 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51, _q50 };
32175 : 71 : if (gimple_simplify_579 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32176 : 0 : return true;
32177 : : }
32178 : : }
32179 : : break;
32180 : : }
32181 : : default:;
32182 : : }
32183 : : }
32184 : : break;
32185 : : default:;
32186 : : }
32187 : 9019456 : break;
32188 : : }
32189 : 109479 : case LE_EXPR:
32190 : 109479 : {
32191 : 109479 : tree _q20 = gimple_assign_rhs1 (_a1);
32192 : 109479 : _q20 = do_valueize (valueize, _q20);
32193 : 109479 : tree _q21 = gimple_assign_rhs2 (_a1);
32194 : 109479 : _q21 = do_valueize (valueize, _q21);
32195 : 109479 : switch (TREE_CODE (_p1))
32196 : : {
32197 : 109479 : case SSA_NAME:
32198 : 109479 : if (gimple *_d2 = get_def (valueize, _p1))
32199 : : {
32200 : 109243 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32201 : 108354 : switch (gimple_assign_rhs_code (_a2))
32202 : : {
32203 : 8261 : case EQ_EXPR:
32204 : 8261 : {
32205 : 8261 : tree _q50 = gimple_assign_rhs1 (_a2);
32206 : 8261 : _q50 = do_valueize (valueize, _q50);
32207 : 8261 : tree _q51 = gimple_assign_rhs2 (_a2);
32208 : 8261 : _q51 = do_valueize (valueize, _q51);
32209 : 8261 : if (tree_swap_operands_p (_q50, _q51))
32210 : 0 : std::swap (_q50, _q51);
32211 : 8261 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32212 : : {
32213 : 37 : if (gimple_min_value (_q51, valueize))
32214 : : {
32215 : 16 : {
32216 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
32217 : 16 : if (gimple_simplify_581 (res_op, seq, valueize, type, captures))
32218 : 16 : return true;
32219 : : }
32220 : : }
32221 : : }
32222 : 8245 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32223 : : {
32224 : 2 : if (gimple_max_value (_q51, valueize))
32225 : : {
32226 : 0 : {
32227 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
32228 : 0 : if (gimple_simplify_582 (res_op, seq, valueize, type, captures))
32229 : 0 : return true;
32230 : : }
32231 : : }
32232 : : }
32233 : 109415 : break;
32234 : : }
32235 : 5801 : case NE_EXPR:
32236 : 5801 : {
32237 : 5801 : tree _q50 = gimple_assign_rhs1 (_a2);
32238 : 5801 : _q50 = do_valueize (valueize, _q50);
32239 : 5801 : tree _q51 = gimple_assign_rhs2 (_a2);
32240 : 5801 : _q51 = do_valueize (valueize, _q51);
32241 : 5801 : if (tree_swap_operands_p (_q50, _q51))
32242 : 22 : std::swap (_q50, _q51);
32243 : 5801 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32244 : : {
32245 : 858 : if (gimple_min_value (_q51, valueize))
32246 : : {
32247 : 292 : {
32248 : 292 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q20, _p0, _q21 };
32249 : 292 : if (gimple_simplify_583 (res_op, seq, valueize, type, captures))
32250 : 48 : return true;
32251 : : }
32252 : : }
32253 : : }
32254 : 109415 : break;
32255 : : }
32256 : : default:;
32257 : : }
32258 : : }
32259 : : break;
32260 : 109415 : default:;
32261 : : }
32262 : 109415 : switch (TREE_CODE (_q20))
32263 : : {
32264 : 109275 : case SSA_NAME:
32265 : 109275 : if (gimple *_d2 = get_def (valueize, _q20))
32266 : : {
32267 : 102671 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32268 : 138551 : switch (gimple_assign_rhs_code (_a2))
32269 : : {
32270 : 8505 : CASE_CONVERT:
32271 : 8505 : {
32272 : 8505 : tree _q30 = gimple_assign_rhs1 (_a2);
32273 : 8505 : _q30 = do_valueize (valueize, _q30);
32274 : 8505 : switch (TREE_CODE (_p1))
32275 : : {
32276 : 8505 : case SSA_NAME:
32277 : 8505 : if (gimple *_d3 = get_def (valueize, _p1))
32278 : : {
32279 : 8504 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
32280 : 8504 : switch (gimple_assign_rhs_code (_a3))
32281 : : {
32282 : 511 : case EQ_EXPR:
32283 : 511 : {
32284 : 511 : tree _q60 = gimple_assign_rhs1 (_a3);
32285 : 511 : _q60 = do_valueize (valueize, _q60);
32286 : 511 : tree _q61 = gimple_assign_rhs2 (_a3);
32287 : 511 : _q61 = do_valueize (valueize, _q61);
32288 : 511 : if (tree_swap_operands_p (_q60, _q61))
32289 : 0 : std::swap (_q60, _q61);
32290 : 511 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
32291 : : {
32292 : 33 : {
32293 : 33 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
32294 : 33 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
32295 : 1 : return true;
32296 : : }
32297 : : }
32298 : 510 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
32299 : : {
32300 : 0 : {
32301 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
32302 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
32303 : 0 : return true;
32304 : : }
32305 : : }
32306 : 109414 : break;
32307 : : }
32308 : 500 : case NE_EXPR:
32309 : 500 : {
32310 : 500 : tree _q60 = gimple_assign_rhs1 (_a3);
32311 : 500 : _q60 = do_valueize (valueize, _q60);
32312 : 500 : tree _q61 = gimple_assign_rhs2 (_a3);
32313 : 500 : _q61 = do_valueize (valueize, _q61);
32314 : 500 : if (tree_swap_operands_p (_q60, _q61))
32315 : 0 : std::swap (_q60, _q61);
32316 : 500 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
32317 : : {
32318 : 88 : {
32319 : 88 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
32320 : 88 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32321 : 0 : return true;
32322 : : }
32323 : : }
32324 : 500 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
32325 : : {
32326 : 78 : {
32327 : 78 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
32328 : 78 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32329 : 0 : return true;
32330 : : }
32331 : : }
32332 : 109414 : break;
32333 : : }
32334 : : default:;
32335 : : }
32336 : : }
32337 : : break;
32338 : : default:;
32339 : : }
32340 : : break;
32341 : : }
32342 : : default:;
32343 : : }
32344 : : }
32345 : : break;
32346 : 109414 : default:;
32347 : : }
32348 : 109414 : switch (TREE_CODE (_q21))
32349 : : {
32350 : 63447 : case SSA_NAME:
32351 : 63447 : if (gimple *_d2 = get_def (valueize, _q21))
32352 : : {
32353 : 58290 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32354 : 76077 : switch (gimple_assign_rhs_code (_a2))
32355 : : {
32356 : 3573 : CASE_CONVERT:
32357 : 3573 : {
32358 : 3573 : tree _q40 = gimple_assign_rhs1 (_a2);
32359 : 3573 : _q40 = do_valueize (valueize, _q40);
32360 : 3573 : switch (TREE_CODE (_p1))
32361 : : {
32362 : 3573 : case SSA_NAME:
32363 : 3573 : if (gimple *_d3 = get_def (valueize, _p1))
32364 : : {
32365 : 3573 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
32366 : 3570 : switch (gimple_assign_rhs_code (_a3))
32367 : : {
32368 : 195 : case EQ_EXPR:
32369 : 195 : {
32370 : 195 : tree _q60 = gimple_assign_rhs1 (_a3);
32371 : 195 : _q60 = do_valueize (valueize, _q60);
32372 : 195 : tree _q61 = gimple_assign_rhs2 (_a3);
32373 : 195 : _q61 = do_valueize (valueize, _q61);
32374 : 195 : if (tree_swap_operands_p (_q60, _q61))
32375 : 0 : std::swap (_q60, _q61);
32376 : 195 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
32377 : : {
32378 : 0 : {
32379 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
32380 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
32381 : 0 : return true;
32382 : : }
32383 : : }
32384 : 195 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
32385 : : {
32386 : 0 : {
32387 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
32388 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
32389 : 0 : return true;
32390 : : }
32391 : : }
32392 : 109414 : break;
32393 : : }
32394 : 186 : case NE_EXPR:
32395 : 186 : {
32396 : 186 : tree _q60 = gimple_assign_rhs1 (_a3);
32397 : 186 : _q60 = do_valueize (valueize, _q60);
32398 : 186 : tree _q61 = gimple_assign_rhs2 (_a3);
32399 : 186 : _q61 = do_valueize (valueize, _q61);
32400 : 186 : if (tree_swap_operands_p (_q60, _q61))
32401 : 0 : std::swap (_q60, _q61);
32402 : 186 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
32403 : : {
32404 : 0 : {
32405 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
32406 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32407 : 0 : return true;
32408 : : }
32409 : : }
32410 : 186 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
32411 : : {
32412 : 0 : {
32413 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
32414 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32415 : 0 : return true;
32416 : : }
32417 : : }
32418 : 109414 : break;
32419 : : }
32420 : : default:;
32421 : : }
32422 : : }
32423 : : break;
32424 : : default:;
32425 : : }
32426 : : break;
32427 : : }
32428 : : default:;
32429 : : }
32430 : : }
32431 : : break;
32432 : 109414 : default:;
32433 : : }
32434 : 109414 : switch (TREE_CODE (_p1))
32435 : : {
32436 : 109414 : case SSA_NAME:
32437 : 109414 : if (gimple *_d2 = get_def (valueize, _p1))
32438 : : {
32439 : 109178 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32440 : 108289 : switch (gimple_assign_rhs_code (_a2))
32441 : : {
32442 : 8244 : case EQ_EXPR:
32443 : 8244 : {
32444 : 8244 : tree _q50 = gimple_assign_rhs1 (_a2);
32445 : 8244 : _q50 = do_valueize (valueize, _q50);
32446 : 8244 : tree _q51 = gimple_assign_rhs2 (_a2);
32447 : 8244 : _q51 = do_valueize (valueize, _q51);
32448 : 8244 : if (tree_swap_operands_p (_q50, _q51))
32449 : 0 : std::swap (_q50, _q51);
32450 : 8244 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32451 : : {
32452 : 21 : {
32453 : 21 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
32454 : 21 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
32455 : 10 : return true;
32456 : : }
32457 : : }
32458 : 8234 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32459 : : {
32460 : 2 : {
32461 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
32462 : 2 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
32463 : 0 : return true;
32464 : : }
32465 : : }
32466 : 8234 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32467 : : {
32468 : 3 : {
32469 : 3 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
32470 : 3 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
32471 : 0 : return true;
32472 : : }
32473 : : }
32474 : 8234 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32475 : : {
32476 : 41 : {
32477 : 41 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
32478 : 41 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
32479 : 0 : return true;
32480 : : }
32481 : : }
32482 : 109052 : break;
32483 : : }
32484 : 5753 : case NE_EXPR:
32485 : 5753 : {
32486 : 5753 : tree _q50 = gimple_assign_rhs1 (_a2);
32487 : 5753 : _q50 = do_valueize (valueize, _q50);
32488 : 5753 : tree _q51 = gimple_assign_rhs2 (_a2);
32489 : 5753 : _q51 = do_valueize (valueize, _q51);
32490 : 5753 : if (tree_swap_operands_p (_q50, _q51))
32491 : 22 : std::swap (_q50, _q51);
32492 : 5753 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32493 : : {
32494 : 810 : {
32495 : 810 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
32496 : 810 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32497 : 42 : return true;
32498 : : }
32499 : : }
32500 : 5711 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32501 : : {
32502 : 142 : {
32503 : 142 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
32504 : 142 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32505 : 0 : return true;
32506 : : }
32507 : : }
32508 : 5711 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32509 : : {
32510 : 48 : {
32511 : 48 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
32512 : 48 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32513 : 0 : return true;
32514 : : }
32515 : : }
32516 : 5711 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32517 : : {
32518 : 107 : {
32519 : 107 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
32520 : 107 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32521 : 0 : return true;
32522 : : }
32523 : : }
32524 : 109052 : break;
32525 : : }
32526 : 7044 : case LT_EXPR:
32527 : 7044 : {
32528 : 7044 : tree _q50 = gimple_assign_rhs1 (_a2);
32529 : 7044 : _q50 = do_valueize (valueize, _q50);
32530 : 7044 : tree _q51 = gimple_assign_rhs2 (_a2);
32531 : 7044 : _q51 = do_valueize (valueize, _q51);
32532 : 7044 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32533 : : {
32534 : 1838 : {
32535 : 1838 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
32536 : 1838 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LE_EXPR))
32537 : 24 : return true;
32538 : : }
32539 : : }
32540 : 7020 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32541 : : {
32542 : 1048 : {
32543 : 1048 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
32544 : 1048 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR))
32545 : 221 : return true;
32546 : : }
32547 : : }
32548 : 6799 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32549 : : {
32550 : 852 : {
32551 : 852 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
32552 : 852 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR))
32553 : 0 : return true;
32554 : : }
32555 : : }
32556 : 6799 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32557 : : {
32558 : 1086 : {
32559 : 1086 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
32560 : 1086 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR))
32561 : 0 : return true;
32562 : : }
32563 : : }
32564 : : break;
32565 : : }
32566 : 15652 : case LE_EXPR:
32567 : 15652 : {
32568 : 15652 : tree _q50 = gimple_assign_rhs1 (_a2);
32569 : 15652 : _q50 = do_valueize (valueize, _q50);
32570 : 15652 : tree _q51 = gimple_assign_rhs2 (_a2);
32571 : 15652 : _q51 = do_valueize (valueize, _q51);
32572 : 15652 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32573 : : {
32574 : 6206 : {
32575 : 6206 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
32576 : 6206 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LE_EXPR))
32577 : 13 : return true;
32578 : : }
32579 : : }
32580 : 15639 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32581 : : {
32582 : 159 : {
32583 : 159 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
32584 : 159 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR))
32585 : 0 : return true;
32586 : : }
32587 : : }
32588 : 15639 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32589 : : {
32590 : 2043 : {
32591 : 2043 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
32592 : 2043 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR))
32593 : 0 : return true;
32594 : : }
32595 : : }
32596 : 15639 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32597 : : {
32598 : 2093 : {
32599 : 2093 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
32600 : 2093 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GE_EXPR))
32601 : 0 : return true;
32602 : : }
32603 : : }
32604 : : break;
32605 : : }
32606 : 25450 : case GT_EXPR:
32607 : 25450 : {
32608 : 25450 : tree _q50 = gimple_assign_rhs1 (_a2);
32609 : 25450 : _q50 = do_valueize (valueize, _q50);
32610 : 25450 : tree _q51 = gimple_assign_rhs2 (_a2);
32611 : 25450 : _q51 = do_valueize (valueize, _q51);
32612 : 25450 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32613 : : {
32614 : 17958 : {
32615 : 17958 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
32616 : 17958 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR))
32617 : 0 : return true;
32618 : : }
32619 : : }
32620 : 25450 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32621 : : {
32622 : 957 : {
32623 : 957 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
32624 : 957 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LE_EXPR))
32625 : 0 : return true;
32626 : : }
32627 : : }
32628 : 25450 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32629 : : {
32630 : 1254 : {
32631 : 1254 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
32632 : 1254 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR))
32633 : 0 : return true;
32634 : : }
32635 : : }
32636 : 25450 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32637 : : {
32638 : 1291 : {
32639 : 1291 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
32640 : 1291 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR))
32641 : 0 : return true;
32642 : : }
32643 : : }
32644 : : break;
32645 : : }
32646 : 44007 : case GE_EXPR:
32647 : 44007 : {
32648 : 44007 : tree _q50 = gimple_assign_rhs1 (_a2);
32649 : 44007 : _q50 = do_valueize (valueize, _q50);
32650 : 44007 : tree _q51 = gimple_assign_rhs2 (_a2);
32651 : 44007 : _q51 = do_valueize (valueize, _q51);
32652 : 44007 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32653 : : {
32654 : 26351 : {
32655 : 26351 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
32656 : 26351 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR))
32657 : 49 : return true;
32658 : : }
32659 : : }
32660 : 43958 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
32661 : : {
32662 : 3967 : {
32663 : 3967 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
32664 : 3967 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LE_EXPR))
32665 : 3 : return true;
32666 : : }
32667 : : }
32668 : 43955 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32669 : : {
32670 : 4 : {
32671 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
32672 : 4 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GE_EXPR))
32673 : 0 : return true;
32674 : : }
32675 : : }
32676 : 43955 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
32677 : : {
32678 : 16590 : {
32679 : 16590 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
32680 : 16590 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR))
32681 : 0 : return true;
32682 : : }
32683 : : }
32684 : : break;
32685 : : }
32686 : : default:;
32687 : : }
32688 : : }
32689 : : break;
32690 : 109052 : default:;
32691 : : }
32692 : 109052 : if (integer_onep (_q21))
32693 : : {
32694 : 1254 : switch (TREE_CODE (_p1))
32695 : : {
32696 : 1254 : case SSA_NAME:
32697 : 1254 : if (gimple *_d2 = get_def (valueize, _p1))
32698 : : {
32699 : 1254 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32700 : 1234 : switch (gimple_assign_rhs_code (_a2))
32701 : : {
32702 : 0 : CASE_CONVERT:
32703 : 0 : {
32704 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
32705 : 0 : _q50 = do_valueize (valueize, _q50);
32706 : 0 : {
32707 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
32708 : 0 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
32709 : 0 : return true;
32710 : : }
32711 : 0 : break;
32712 : : }
32713 : : default:;
32714 : : }
32715 : : }
32716 : : break;
32717 : 1254 : default:;
32718 : : }
32719 : 1254 : {
32720 : 1254 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
32721 : 1254 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
32722 : 0 : return true;
32723 : : }
32724 : : }
32725 : : break;
32726 : : }
32727 : 574898 : case GE_EXPR:
32728 : 574898 : {
32729 : 574898 : tree _q20 = gimple_assign_rhs1 (_a1);
32730 : 574898 : _q20 = do_valueize (valueize, _q20);
32731 : 574898 : tree _q21 = gimple_assign_rhs2 (_a1);
32732 : 574898 : _q21 = do_valueize (valueize, _q21);
32733 : 574898 : switch (TREE_CODE (_p1))
32734 : : {
32735 : 574898 : case SSA_NAME:
32736 : 574898 : if (gimple *_d2 = get_def (valueize, _p1))
32737 : : {
32738 : 573037 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32739 : 571258 : switch (gimple_assign_rhs_code (_a2))
32740 : : {
32741 : 13223 : case EQ_EXPR:
32742 : 13223 : {
32743 : 13223 : tree _q50 = gimple_assign_rhs1 (_a2);
32744 : 13223 : _q50 = do_valueize (valueize, _q50);
32745 : 13223 : tree _q51 = gimple_assign_rhs2 (_a2);
32746 : 13223 : _q51 = do_valueize (valueize, _q51);
32747 : 13223 : if (tree_swap_operands_p (_q50, _q51))
32748 : 8 : std::swap (_q50, _q51);
32749 : 13223 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32750 : : {
32751 : 2 : if (gimple_min_value (_q51, valueize))
32752 : : {
32753 : 0 : {
32754 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
32755 : 0 : if (gimple_simplify_581 (res_op, seq, valueize, type, captures))
32756 : 0 : return true;
32757 : : }
32758 : : }
32759 : : }
32760 : 13223 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32761 : : {
32762 : 11 : if (gimple_max_value (_q51, valueize))
32763 : : {
32764 : 6 : {
32765 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
32766 : 6 : if (gimple_simplify_582 (res_op, seq, valueize, type, captures))
32767 : 6 : return true;
32768 : : }
32769 : : }
32770 : : }
32771 : 574892 : break;
32772 : : }
32773 : 4909 : case NE_EXPR:
32774 : 4909 : {
32775 : 4909 : tree _q50 = gimple_assign_rhs1 (_a2);
32776 : 4909 : _q50 = do_valueize (valueize, _q50);
32777 : 4909 : tree _q51 = gimple_assign_rhs2 (_a2);
32778 : 4909 : _q51 = do_valueize (valueize, _q51);
32779 : 4909 : if (tree_swap_operands_p (_q50, _q51))
32780 : 49 : std::swap (_q50, _q51);
32781 : 4909 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32782 : : {
32783 : 1161 : if (gimple_min_value (_q51, valueize))
32784 : : {
32785 : 1004 : {
32786 : 1004 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q21, _p0, _q20 };
32787 : 1004 : if (gimple_simplify_583 (res_op, seq, valueize, type, captures))
32788 : 0 : return true;
32789 : : }
32790 : : }
32791 : : }
32792 : 574892 : break;
32793 : : }
32794 : : default:;
32795 : : }
32796 : : }
32797 : : break;
32798 : 574892 : default:;
32799 : : }
32800 : 574892 : switch (TREE_CODE (_q20))
32801 : : {
32802 : 574476 : case SSA_NAME:
32803 : 574476 : if (gimple *_d2 = get_def (valueize, _q20))
32804 : : {
32805 : 499150 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32806 : 398907 : switch (gimple_assign_rhs_code (_a2))
32807 : : {
32808 : 18759 : CASE_CONVERT:
32809 : 18759 : {
32810 : 18759 : tree _q30 = gimple_assign_rhs1 (_a2);
32811 : 18759 : _q30 = do_valueize (valueize, _q30);
32812 : 18759 : switch (TREE_CODE (_p1))
32813 : : {
32814 : 18759 : case SSA_NAME:
32815 : 18759 : if (gimple *_d3 = get_def (valueize, _p1))
32816 : : {
32817 : 18759 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
32818 : 18602 : switch (gimple_assign_rhs_code (_a3))
32819 : : {
32820 : 1105 : case EQ_EXPR:
32821 : 1105 : {
32822 : 1105 : tree _q60 = gimple_assign_rhs1 (_a3);
32823 : 1105 : _q60 = do_valueize (valueize, _q60);
32824 : 1105 : tree _q61 = gimple_assign_rhs2 (_a3);
32825 : 1105 : _q61 = do_valueize (valueize, _q61);
32826 : 1105 : if (tree_swap_operands_p (_q60, _q61))
32827 : 0 : std::swap (_q60, _q61);
32828 : 1105 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
32829 : : {
32830 : 1 : {
32831 : 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
32832 : 1 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
32833 : 1 : return true;
32834 : : }
32835 : : }
32836 : 1104 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
32837 : : {
32838 : 0 : {
32839 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
32840 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
32841 : 0 : return true;
32842 : : }
32843 : : }
32844 : 574837 : break;
32845 : : }
32846 : 442 : case NE_EXPR:
32847 : 442 : {
32848 : 442 : tree _q60 = gimple_assign_rhs1 (_a3);
32849 : 442 : _q60 = do_valueize (valueize, _q60);
32850 : 442 : tree _q61 = gimple_assign_rhs2 (_a3);
32851 : 442 : _q61 = do_valueize (valueize, _q61);
32852 : 442 : if (tree_swap_operands_p (_q60, _q61))
32853 : 0 : std::swap (_q60, _q61);
32854 : 442 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
32855 : : {
32856 : 54 : {
32857 : 54 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q61, _p0, _q20, _q21 };
32858 : 54 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32859 : 54 : return true;
32860 : : }
32861 : : }
32862 : 388 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
32863 : : {
32864 : 0 : {
32865 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q60, _p0, _q20, _q21 };
32866 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
32867 : 0 : return true;
32868 : : }
32869 : : }
32870 : 574837 : break;
32871 : : }
32872 : : default:;
32873 : : }
32874 : : }
32875 : : break;
32876 : : default:;
32877 : : }
32878 : : break;
32879 : : }
32880 : : default:;
32881 : : }
32882 : : }
32883 : : break;
32884 : 574837 : default:;
32885 : : }
32886 : 574837 : switch (TREE_CODE (_q21))
32887 : : {
32888 : 60897 : case SSA_NAME:
32889 : 60897 : if (gimple *_d2 = get_def (valueize, _q21))
32890 : : {
32891 : 58077 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32892 : 90344 : switch (gimple_assign_rhs_code (_a2))
32893 : : {
32894 : 2792 : CASE_CONVERT:
32895 : 2792 : {
32896 : 2792 : tree _q40 = gimple_assign_rhs1 (_a2);
32897 : 2792 : _q40 = do_valueize (valueize, _q40);
32898 : 2792 : switch (TREE_CODE (_p1))
32899 : : {
32900 : 2792 : case SSA_NAME:
32901 : 2792 : if (gimple *_d3 = get_def (valueize, _p1))
32902 : : {
32903 : 2791 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
32904 : 2791 : switch (gimple_assign_rhs_code (_a3))
32905 : : {
32906 : 14 : case EQ_EXPR:
32907 : 14 : {
32908 : 14 : tree _q60 = gimple_assign_rhs1 (_a3);
32909 : 14 : _q60 = do_valueize (valueize, _q60);
32910 : 14 : tree _q61 = gimple_assign_rhs2 (_a3);
32911 : 14 : _q61 = do_valueize (valueize, _q61);
32912 : 14 : if (tree_swap_operands_p (_q60, _q61))
32913 : 0 : std::swap (_q60, _q61);
32914 : 14 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
32915 : : {
32916 : 0 : {
32917 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
32918 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
32919 : 0 : return true;
32920 : : }
32921 : : }
32922 : 14 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
32923 : : {
32924 : 0 : {
32925 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
32926 : 0 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
32927 : 0 : return true;
32928 : : }
32929 : : }
32930 : 574837 : break;
32931 : : }
32932 : 40 : case NE_EXPR:
32933 : 40 : {
32934 : 40 : tree _q60 = gimple_assign_rhs1 (_a3);
32935 : 40 : _q60 = do_valueize (valueize, _q60);
32936 : 40 : tree _q61 = gimple_assign_rhs2 (_a3);
32937 : 40 : _q61 = do_valueize (valueize, _q61);
32938 : 40 : if (tree_swap_operands_p (_q60, _q61))
32939 : 0 : std::swap (_q60, _q61);
32940 : 40 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
32941 : : {
32942 : 6 : {
32943 : 6 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q61, _p0, _q21, _q20 };
32944 : 6 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32945 : 0 : return true;
32946 : : }
32947 : : }
32948 : 40 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
32949 : : {
32950 : 2 : {
32951 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q40, _q60, _p0, _q21, _q20 };
32952 : 2 : if (gimple_simplify_571 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
32953 : 0 : return true;
32954 : : }
32955 : : }
32956 : 574837 : break;
32957 : : }
32958 : : default:;
32959 : : }
32960 : : }
32961 : : break;
32962 : : default:;
32963 : : }
32964 : : break;
32965 : : }
32966 : : default:;
32967 : : }
32968 : : }
32969 : : break;
32970 : 574837 : default:;
32971 : : }
32972 : 574837 : switch (TREE_CODE (_p1))
32973 : : {
32974 : 574837 : case SSA_NAME:
32975 : 574837 : if (gimple *_d2 = get_def (valueize, _p1))
32976 : : {
32977 : 572976 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
32978 : 571197 : switch (gimple_assign_rhs_code (_a2))
32979 : : {
32980 : 13216 : case EQ_EXPR:
32981 : 13216 : {
32982 : 13216 : tree _q50 = gimple_assign_rhs1 (_a2);
32983 : 13216 : _q50 = do_valueize (valueize, _q50);
32984 : 13216 : tree _q51 = gimple_assign_rhs2 (_a2);
32985 : 13216 : _q51 = do_valueize (valueize, _q51);
32986 : 13216 : if (tree_swap_operands_p (_q50, _q51))
32987 : 8 : std::swap (_q50, _q51);
32988 : 13216 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
32989 : : {
32990 : 5 : {
32991 : 5 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
32992 : 5 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
32993 : 1 : return true;
32994 : : }
32995 : : }
32996 : 13215 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
32997 : : {
32998 : 2 : {
32999 : 2 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
33000 : 2 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
33001 : 0 : return true;
33002 : : }
33003 : : }
33004 : 13215 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33005 : : {
33006 : 0 : {
33007 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
33008 : 0 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR))
33009 : 0 : return true;
33010 : : }
33011 : : }
33012 : 13215 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33013 : : {
33014 : 74 : {
33015 : 74 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
33016 : 74 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR))
33017 : 0 : return true;
33018 : : }
33019 : : }
33020 : 9019456 : break;
33021 : : }
33022 : 4855 : case NE_EXPR:
33023 : 4855 : {
33024 : 4855 : tree _q50 = gimple_assign_rhs1 (_a2);
33025 : 4855 : _q50 = do_valueize (valueize, _q50);
33026 : 4855 : tree _q51 = gimple_assign_rhs2 (_a2);
33027 : 4855 : _q51 = do_valueize (valueize, _q51);
33028 : 4855 : if (tree_swap_operands_p (_q50, _q51))
33029 : 49 : std::swap (_q50, _q51);
33030 : 4855 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
33031 : : {
33032 : 357 : {
33033 : 357 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q51, _p0, _q20, _q21 };
33034 : 357 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
33035 : 5 : return true;
33036 : : }
33037 : : }
33038 : 4850 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
33039 : : {
33040 : 1161 : {
33041 : 1161 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q51, _p0, _q21, _q20 };
33042 : 1161 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
33043 : 0 : return true;
33044 : : }
33045 : : }
33046 : 4850 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33047 : : {
33048 : 135 : {
33049 : 135 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q20, _q50, _p0, _q20, _q21 };
33050 : 135 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR))
33051 : 0 : return true;
33052 : : }
33053 : : }
33054 : 4850 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33055 : : {
33056 : 189 : {
33057 : 189 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q21, _q50, _p0, _q21, _q20 };
33058 : 189 : if (gimple_simplify_572 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR))
33059 : 0 : return true;
33060 : : }
33061 : : }
33062 : 9019456 : break;
33063 : : }
33064 : 193183 : case LT_EXPR:
33065 : 193183 : {
33066 : 193183 : tree _q50 = gimple_assign_rhs1 (_a2);
33067 : 193183 : _q50 = do_valueize (valueize, _q50);
33068 : 193183 : tree _q51 = gimple_assign_rhs2 (_a2);
33069 : 193183 : _q51 = do_valueize (valueize, _q51);
33070 : 193183 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
33071 : : {
33072 : 190199 : {
33073 : 190199 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
33074 : 190199 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR))
33075 : 3 : return true;
33076 : : }
33077 : : }
33078 : 193180 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33079 : : {
33080 : 45 : {
33081 : 45 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
33082 : 45 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR))
33083 : 0 : return true;
33084 : : }
33085 : : }
33086 : 193180 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
33087 : : {
33088 : 31 : {
33089 : 31 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
33090 : 31 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LE_EXPR))
33091 : 0 : return true;
33092 : : }
33093 : : }
33094 : 193180 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33095 : : {
33096 : 423 : {
33097 : 423 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
33098 : 423 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR))
33099 : 0 : return true;
33100 : : }
33101 : : }
33102 : : break;
33103 : : }
33104 : 189692 : case LE_EXPR:
33105 : 189692 : {
33106 : 189692 : tree _q50 = gimple_assign_rhs1 (_a2);
33107 : 189692 : _q50 = do_valueize (valueize, _q50);
33108 : 189692 : tree _q51 = gimple_assign_rhs2 (_a2);
33109 : 189692 : _q51 = do_valueize (valueize, _q51);
33110 : 189692 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
33111 : : {
33112 : 181228 : {
33113 : 181228 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
33114 : 181228 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR))
33115 : 40 : return true;
33116 : : }
33117 : : }
33118 : 189652 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33119 : : {
33120 : 199 : {
33121 : 199 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
33122 : 199 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GE_EXPR))
33123 : 0 : return true;
33124 : : }
33125 : : }
33126 : 189652 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
33127 : : {
33128 : 3700 : {
33129 : 3700 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
33130 : 3700 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LE_EXPR))
33131 : 0 : return true;
33132 : : }
33133 : : }
33134 : 189652 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33135 : : {
33136 : 6129 : {
33137 : 6129 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
33138 : 6129 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR))
33139 : 0 : return true;
33140 : : }
33141 : : }
33142 : : break;
33143 : : }
33144 : 51434 : case GT_EXPR:
33145 : 51434 : {
33146 : 51434 : tree _q50 = gimple_assign_rhs1 (_a2);
33147 : 51434 : _q50 = do_valueize (valueize, _q50);
33148 : 51434 : tree _q51 = gimple_assign_rhs2 (_a2);
33149 : 51434 : _q51 = do_valueize (valueize, _q51);
33150 : 51434 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
33151 : : {
33152 : 203 : {
33153 : 203 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
33154 : 203 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR))
33155 : 41 : return true;
33156 : : }
33157 : : }
33158 : 51393 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33159 : : {
33160 : 48584 : {
33161 : 48584 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
33162 : 48584 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR))
33163 : 57 : return true;
33164 : : }
33165 : : }
33166 : 51336 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
33167 : : {
33168 : 99 : {
33169 : 99 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
33170 : 99 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR))
33171 : 0 : return true;
33172 : : }
33173 : : }
33174 : 51336 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33175 : : {
33176 : 145 : {
33177 : 145 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
33178 : 145 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LT_EXPR, LE_EXPR))
33179 : 0 : return true;
33180 : : }
33181 : : }
33182 : : break;
33183 : : }
33184 : 118120 : case GE_EXPR:
33185 : 118120 : {
33186 : 118120 : tree _q50 = gimple_assign_rhs1 (_a2);
33187 : 118120 : _q50 = do_valueize (valueize, _q50);
33188 : 118120 : tree _q51 = gimple_assign_rhs2 (_a2);
33189 : 118120 : _q51 = do_valueize (valueize, _q51);
33190 : 118120 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
33191 : : {
33192 : 42 : {
33193 : 42 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
33194 : 42 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, GE_EXPR))
33195 : 2 : return true;
33196 : : }
33197 : : }
33198 : 118118 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33199 : : {
33200 : 83043 : {
33201 : 83043 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
33202 : 83043 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR))
33203 : 18 : return true;
33204 : : }
33205 : : }
33206 : 118100 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
33207 : : {
33208 : 17166 : {
33209 : 17166 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
33210 : 17166 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR))
33211 : 0 : return true;
33212 : : }
33213 : : }
33214 : 118100 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33215 : : {
33216 : 14372 : {
33217 : 14372 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
33218 : 14372 : if (gimple_simplify_573 (res_op, seq, valueize, type, captures, LE_EXPR, LE_EXPR))
33219 : 0 : return true;
33220 : : }
33221 : : }
33222 : : break;
33223 : : }
33224 : : default:;
33225 : : }
33226 : : }
33227 : : break;
33228 : : default:;
33229 : : }
33230 : : break;
33231 : : }
33232 : 14126 : case MIN_EXPR:
33233 : 14126 : {
33234 : 14126 : tree _q20 = gimple_assign_rhs1 (_a1);
33235 : 14126 : _q20 = do_valueize (valueize, _q20);
33236 : 14126 : tree _q21 = gimple_assign_rhs2 (_a1);
33237 : 14126 : _q21 = do_valueize (valueize, _q21);
33238 : 14126 : if (tree_swap_operands_p (_q20, _q21))
33239 : 21 : std::swap (_q20, _q21);
33240 : 14126 : switch (TREE_CODE (_p1))
33241 : : {
33242 : 217 : case SSA_NAME:
33243 : 217 : if (gimple *_d2 = get_def (valueize, _p1))
33244 : : {
33245 : 207 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
33246 : 207 : switch (gimple_assign_rhs_code (_a2))
33247 : : {
33248 : 2 : case MAX_EXPR:
33249 : 2 : {
33250 : 2 : tree _q50 = gimple_assign_rhs1 (_a2);
33251 : 2 : _q50 = do_valueize (valueize, _q50);
33252 : 2 : tree _q51 = gimple_assign_rhs2 (_a2);
33253 : 2 : _q51 = do_valueize (valueize, _q51);
33254 : 2 : if (tree_swap_operands_p (_q50, _q51))
33255 : 0 : std::swap (_q50, _q51);
33256 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
33257 : : {
33258 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33259 : : {
33260 : 2 : {
33261 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
33262 : 2 : if (!HONOR_NANS (captures[0])
33263 : : )
33264 : : {
33265 : 2 : gimple_seq *lseq = seq;
33266 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2715;
33267 : 2 : {
33268 : 2 : res_op->set_op (BIT_AND_EXPR, type, 2);
33269 : 2 : res_op->ops[0] = captures[0];
33270 : 2 : res_op->ops[1] = captures[1];
33271 : 2 : res_op->resimplify (lseq, valueize);
33272 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
33273 : 2 : return true;
33274 : : }
33275 : 0 : next_after_fail2715:;
33276 : : }
33277 : : }
33278 : : }
33279 : : }
33280 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
33281 : : {
33282 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33283 : : {
33284 : 0 : {
33285 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
33286 : 0 : if (!HONOR_NANS (captures[0])
33287 : : )
33288 : : {
33289 : 0 : gimple_seq *lseq = seq;
33290 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2716;
33291 : 0 : {
33292 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
33293 : 0 : res_op->ops[0] = captures[0];
33294 : 0 : res_op->ops[1] = captures[1];
33295 : 0 : res_op->resimplify (lseq, valueize);
33296 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
33297 : 0 : return true;
33298 : : }
33299 : 0 : next_after_fail2716:;
33300 : : }
33301 : : }
33302 : : }
33303 : : }
33304 : 9019456 : break;
33305 : : }
33306 : : default:;
33307 : : }
33308 : : }
33309 : : break;
33310 : : default:;
33311 : : }
33312 : 9019456 : break;
33313 : : }
33314 : 1221 : case MAX_EXPR:
33315 : 1221 : {
33316 : 1221 : tree _q20 = gimple_assign_rhs1 (_a1);
33317 : 1221 : _q20 = do_valueize (valueize, _q20);
33318 : 1221 : tree _q21 = gimple_assign_rhs2 (_a1);
33319 : 1221 : _q21 = do_valueize (valueize, _q21);
33320 : 1221 : if (tree_swap_operands_p (_q20, _q21))
33321 : 18 : std::swap (_q20, _q21);
33322 : 1221 : switch (TREE_CODE (_p1))
33323 : : {
33324 : 441 : case SSA_NAME:
33325 : 441 : if (gimple *_d2 = get_def (valueize, _p1))
33326 : : {
33327 : 431 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
33328 : 313 : switch (gimple_assign_rhs_code (_a2))
33329 : : {
33330 : 0 : case MIN_EXPR:
33331 : 0 : {
33332 : 0 : tree _q50 = gimple_assign_rhs1 (_a2);
33333 : 0 : _q50 = do_valueize (valueize, _q50);
33334 : 0 : tree _q51 = gimple_assign_rhs2 (_a2);
33335 : 0 : _q51 = do_valueize (valueize, _q51);
33336 : 0 : if (tree_swap_operands_p (_q50, _q51))
33337 : 0 : std::swap (_q50, _q51);
33338 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
33339 : : {
33340 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
33341 : : {
33342 : 0 : {
33343 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
33344 : 0 : if (!HONOR_NANS (captures[0])
33345 : : )
33346 : : {
33347 : 0 : gimple_seq *lseq = seq;
33348 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2717;
33349 : 0 : {
33350 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
33351 : 0 : res_op->ops[0] = captures[0];
33352 : 0 : res_op->ops[1] = captures[1];
33353 : 0 : res_op->resimplify (lseq, valueize);
33354 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
33355 : 0 : return true;
33356 : : }
33357 : 0 : next_after_fail2717:;
33358 : : }
33359 : : }
33360 : : }
33361 : : }
33362 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
33363 : : {
33364 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
33365 : : {
33366 : 0 : {
33367 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
33368 : 0 : if (!HONOR_NANS (captures[0])
33369 : : )
33370 : : {
33371 : 0 : gimple_seq *lseq = seq;
33372 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2718;
33373 : 0 : {
33374 : 0 : res_op->set_op (BIT_AND_EXPR, type, 2);
33375 : 0 : res_op->ops[0] = captures[0];
33376 : 0 : res_op->ops[1] = captures[1];
33377 : 0 : res_op->resimplify (lseq, valueize);
33378 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
33379 : 0 : return true;
33380 : : }
33381 : 0 : next_after_fail2718:;
33382 : : }
33383 : : }
33384 : : }
33385 : : }
33386 : 9019456 : break;
33387 : : }
33388 : : default:;
33389 : : }
33390 : : }
33391 : : break;
33392 : : default:;
33393 : : }
33394 : 9019456 : break;
33395 : : }
33396 : 76970 : case LSHIFT_EXPR:
33397 : 76970 : {
33398 : 76970 : tree _q20 = gimple_assign_rhs1 (_a1);
33399 : 76970 : _q20 = do_valueize (valueize, _q20);
33400 : 76970 : tree _q21 = gimple_assign_rhs2 (_a1);
33401 : 76970 : _q21 = do_valueize (valueize, _q21);
33402 : 76970 : switch (TREE_CODE (_q20))
33403 : : {
33404 : 31024 : case SSA_NAME:
33405 : 31024 : if (gimple *_d2 = get_def (valueize, _q20))
33406 : : {
33407 : 28282 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
33408 : 25945 : switch (gimple_assign_rhs_code (_a2))
33409 : : {
33410 : 9520 : CASE_CONVERT:
33411 : 9520 : {
33412 : 9520 : tree _q30 = gimple_assign_rhs1 (_a2);
33413 : 9520 : _q30 = do_valueize (valueize, _q30);
33414 : 9520 : switch (TREE_CODE (_q21))
33415 : : {
33416 : 9459 : case INTEGER_CST:
33417 : 9459 : {
33418 : 9459 : switch (TREE_CODE (_p1))
33419 : : {
33420 : 9457 : case INTEGER_CST:
33421 : 9457 : {
33422 : 9457 : {
33423 : 9457 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21, _p1 };
33424 : 9457 : if (gimple_simplify_585 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
33425 : 261 : return true;
33426 : : }
33427 : 9196 : break;
33428 : : }
33429 : : default:;
33430 : : }
33431 : : break;
33432 : : }
33433 : : default:;
33434 : : }
33435 : : break;
33436 : : }
33437 : : default:;
33438 : : }
33439 : : }
33440 : : break;
33441 : 43120 : case INTEGER_CST:
33442 : 43120 : {
33443 : 43120 : if (integer_onep (_p1))
33444 : : {
33445 : 588 : {
33446 : 588 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
33447 : 588 : if ((wi::to_wide (captures[0]) & 1) != 0
33448 : : )
33449 : : {
33450 : 588 : gimple_seq *lseq = seq;
33451 : 588 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2719;
33452 : 588 : {
33453 : 588 : res_op->set_op (NOP_EXPR, type, 1);
33454 : 588 : {
33455 : 588 : tree _o1[2], _r1;
33456 : 588 : _o1[0] = captures[1];
33457 : 588 : _o1[1] = build_zero_cst (TREE_TYPE (captures[1]));
33458 : 588 : (*res_op).set_op (EQ_EXPR, boolean_type_node, 2);
33459 : 588 : (*res_op).ops[0] = _o1[0];
33460 : 588 : (*res_op).ops[1] = _o1[1];
33461 : 588 : (*res_op).resimplify (lseq, valueize);
33462 : : }
33463 : 588 : if (type != res_op->type
33464 : 588 : && !useless_type_conversion_p (type, res_op->type))
33465 : : {
33466 : 588 : if (!(res_op->ops[0] = maybe_push_res_to_seq (res_op, lseq))) goto next_after_fail2719;
33467 : 6 : res_op->set_op (NOP_EXPR, type, 1);
33468 : 6 : res_op->resimplify (lseq, valueize);
33469 : : }
33470 : 6 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1211, __FILE__, __LINE__, true);
33471 : 6 : return true;
33472 : : }
33473 : 582 : next_after_fail2719:;
33474 : : }
33475 : : else
33476 : : {
33477 : 0 : gimple_seq *lseq = seq;
33478 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2720;
33479 : 0 : {
33480 : 0 : tree tem;
33481 : 0 : tem = build_zero_cst (type);
33482 : 0 : res_op->set_value (tem);
33483 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1212, __FILE__, __LINE__, true);
33484 : 0 : return true;
33485 : : }
33486 : 582 : next_after_fail2720:;
33487 : : }
33488 : : }
33489 : : }
33490 : : break;
33491 : : }
33492 : 76703 : default:;
33493 : : }
33494 : 76703 : switch (TREE_CODE (_q21))
33495 : : {
33496 : 27281 : case INTEGER_CST:
33497 : 27281 : {
33498 : 27281 : switch (TREE_CODE (_p1))
33499 : : {
33500 : 26464 : case INTEGER_CST:
33501 : 26464 : {
33502 : 26464 : {
33503 : 26464 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21, _p1 };
33504 : 26464 : if (gimple_simplify_586 (res_op, seq, valueize, type, captures, LSHIFT_EXPR))
33505 : 326 : return true;
33506 : : }
33507 : 26138 : break;
33508 : : }
33509 : : default:;
33510 : : }
33511 : : break;
33512 : : }
33513 : : default:;
33514 : : }
33515 : : break;
33516 : : }
33517 : 232276 : case RSHIFT_EXPR:
33518 : 232276 : {
33519 : 232276 : tree _q20 = gimple_assign_rhs1 (_a1);
33520 : 232276 : _q20 = do_valueize (valueize, _q20);
33521 : 232276 : tree _q21 = gimple_assign_rhs2 (_a1);
33522 : 232276 : _q21 = do_valueize (valueize, _q21);
33523 : 232276 : switch (TREE_CODE (_q20))
33524 : : {
33525 : 210604 : case SSA_NAME:
33526 : 210604 : if (gimple *_d2 = get_def (valueize, _q20))
33527 : : {
33528 : 182238 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
33529 : 151537 : switch (gimple_assign_rhs_code (_a2))
33530 : : {
33531 : 26360 : CASE_CONVERT:
33532 : 26360 : {
33533 : 26360 : tree _q30 = gimple_assign_rhs1 (_a2);
33534 : 26360 : _q30 = do_valueize (valueize, _q30);
33535 : 26360 : switch (TREE_CODE (_q21))
33536 : : {
33537 : 14148 : case INTEGER_CST:
33538 : 14148 : {
33539 : 14148 : switch (TREE_CODE (_p1))
33540 : : {
33541 : 14066 : case INTEGER_CST:
33542 : 14066 : {
33543 : 14066 : {
33544 : 14066 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21, _p1 };
33545 : 14066 : if (gimple_simplify_585 (res_op, seq, valueize, type, captures, RSHIFT_EXPR))
33546 : 34 : return true;
33547 : : }
33548 : 14032 : break;
33549 : : }
33550 : : default:;
33551 : : }
33552 : : break;
33553 : : }
33554 : 26326 : default:;
33555 : : }
33556 : 26326 : switch (TREE_CODE (_q30))
33557 : : {
33558 : 26326 : case SSA_NAME:
33559 : 26326 : if (gimple *_d3 = get_def (valueize, _q30))
33560 : : {
33561 : 25652 : if (gcall *_c3 = dyn_cast <gcall *> (_d3))
33562 : 493 : switch (gimple_call_combined_fn (_c3))
33563 : : {
33564 : 0 : case CFN_BUILT_IN_BSWAP128:
33565 : 0 : if (gimple_call_num_args (_c3) == 1)
33566 : : {
33567 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
33568 : 0 : _q40 = do_valueize (valueize, _q40);
33569 : 0 : switch (TREE_CODE (_q21))
33570 : : {
33571 : 0 : case INTEGER_CST:
33572 : 0 : {
33573 : 0 : switch (TREE_CODE (_p1))
33574 : : {
33575 : 0 : case INTEGER_CST:
33576 : 0 : {
33577 : 0 : {
33578 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q21, _p1 };
33579 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128))
33580 : 0 : return true;
33581 : : }
33582 : 0 : break;
33583 : : }
33584 : : default:;
33585 : : }
33586 : : break;
33587 : : }
33588 : : default:;
33589 : : }
33590 : : }
33591 : : break;
33592 : 16 : case CFN_BUILT_IN_BSWAP16:
33593 : 16 : if (gimple_call_num_args (_c3) == 1)
33594 : : {
33595 : 16 : tree _q40 = gimple_call_arg (_c3, 0);
33596 : 16 : _q40 = do_valueize (valueize, _q40);
33597 : 16 : switch (TREE_CODE (_q21))
33598 : : {
33599 : 0 : case INTEGER_CST:
33600 : 0 : {
33601 : 0 : switch (TREE_CODE (_p1))
33602 : : {
33603 : 0 : case INTEGER_CST:
33604 : 0 : {
33605 : 0 : {
33606 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q21, _p1 };
33607 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16))
33608 : 0 : return true;
33609 : : }
33610 : 0 : break;
33611 : : }
33612 : : default:;
33613 : : }
33614 : : break;
33615 : : }
33616 : : default:;
33617 : : }
33618 : : }
33619 : : break;
33620 : 0 : case CFN_BUILT_IN_BSWAP32:
33621 : 0 : if (gimple_call_num_args (_c3) == 1)
33622 : : {
33623 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
33624 : 0 : _q40 = do_valueize (valueize, _q40);
33625 : 0 : switch (TREE_CODE (_q21))
33626 : : {
33627 : 0 : case INTEGER_CST:
33628 : 0 : {
33629 : 0 : switch (TREE_CODE (_p1))
33630 : : {
33631 : 0 : case INTEGER_CST:
33632 : 0 : {
33633 : 0 : {
33634 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q21, _p1 };
33635 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
33636 : 0 : return true;
33637 : : }
33638 : 0 : break;
33639 : : }
33640 : : default:;
33641 : : }
33642 : : break;
33643 : : }
33644 : : default:;
33645 : : }
33646 : : }
33647 : : break;
33648 : 0 : case CFN_BUILT_IN_BSWAP64:
33649 : 0 : if (gimple_call_num_args (_c3) == 1)
33650 : : {
33651 : 0 : tree _q40 = gimple_call_arg (_c3, 0);
33652 : 0 : _q40 = do_valueize (valueize, _q40);
33653 : 0 : switch (TREE_CODE (_q21))
33654 : : {
33655 : 0 : case INTEGER_CST:
33656 : 0 : {
33657 : 0 : switch (TREE_CODE (_p1))
33658 : : {
33659 : 0 : case INTEGER_CST:
33660 : 0 : {
33661 : 0 : {
33662 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q21, _p1 };
33663 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64))
33664 : 0 : return true;
33665 : : }
33666 : 0 : break;
33667 : : }
33668 : : default:;
33669 : : }
33670 : : break;
33671 : : }
33672 : : default:;
33673 : : }
33674 : : }
33675 : : break;
33676 : : default:;
33677 : : }
33678 : : }
33679 : : break;
33680 : : default:;
33681 : : }
33682 : : break;
33683 : : }
33684 : : default:;
33685 : : }
33686 : : }
33687 : : break;
33688 : 232242 : default:;
33689 : : }
33690 : 232242 : switch (TREE_CODE (_q21))
33691 : : {
33692 : 171867 : case INTEGER_CST:
33693 : 171867 : {
33694 : 171867 : switch (TREE_CODE (_p1))
33695 : : {
33696 : 168989 : case INTEGER_CST:
33697 : 168989 : {
33698 : 168989 : {
33699 : 168989 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21, _p1 };
33700 : 168989 : if (gimple_simplify_586 (res_op, seq, valueize, type, captures, RSHIFT_EXPR))
33701 : 814 : return true;
33702 : : }
33703 : 168175 : break;
33704 : : }
33705 : : default:;
33706 : : }
33707 : : break;
33708 : : }
33709 : 231428 : default:;
33710 : : }
33711 : 231428 : switch (TREE_CODE (_q20))
33712 : : {
33713 : 209756 : case SSA_NAME:
33714 : 209756 : if (gimple *_d2 = get_def (valueize, _q20))
33715 : : {
33716 : 181402 : if (gcall *_c2 = dyn_cast <gcall *> (_d2))
33717 : 6392 : switch (gimple_call_combined_fn (_c2))
33718 : : {
33719 : 0 : case CFN_BUILT_IN_BSWAP128:
33720 : 0 : if (gimple_call_num_args (_c2) == 1)
33721 : : {
33722 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
33723 : 0 : _q30 = do_valueize (valueize, _q30);
33724 : 0 : switch (TREE_CODE (_q21))
33725 : : {
33726 : 0 : case INTEGER_CST:
33727 : 0 : {
33728 : 0 : switch (TREE_CODE (_p1))
33729 : : {
33730 : 0 : case INTEGER_CST:
33731 : 0 : {
33732 : 0 : {
33733 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
33734 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128))
33735 : 0 : return true;
33736 : : }
33737 : 0 : break;
33738 : : }
33739 : : default:;
33740 : : }
33741 : : break;
33742 : : }
33743 : : default:;
33744 : : }
33745 : : }
33746 : : break;
33747 : 0 : case CFN_BUILT_IN_BSWAP16:
33748 : 0 : if (gimple_call_num_args (_c2) == 1)
33749 : : {
33750 : 0 : tree _q30 = gimple_call_arg (_c2, 0);
33751 : 0 : _q30 = do_valueize (valueize, _q30);
33752 : 0 : switch (TREE_CODE (_q21))
33753 : : {
33754 : 0 : case INTEGER_CST:
33755 : 0 : {
33756 : 0 : switch (TREE_CODE (_p1))
33757 : : {
33758 : 0 : case INTEGER_CST:
33759 : 0 : {
33760 : 0 : {
33761 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
33762 : 0 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16))
33763 : 0 : return true;
33764 : : }
33765 : 0 : break;
33766 : : }
33767 : : default:;
33768 : : }
33769 : : break;
33770 : : }
33771 : : default:;
33772 : : }
33773 : : }
33774 : : break;
33775 : 26 : case CFN_BUILT_IN_BSWAP32:
33776 : 26 : if (gimple_call_num_args (_c2) == 1)
33777 : : {
33778 : 26 : tree _q30 = gimple_call_arg (_c2, 0);
33779 : 26 : _q30 = do_valueize (valueize, _q30);
33780 : 26 : switch (TREE_CODE (_q21))
33781 : : {
33782 : 24 : case INTEGER_CST:
33783 : 24 : {
33784 : 24 : switch (TREE_CODE (_p1))
33785 : : {
33786 : 24 : case INTEGER_CST:
33787 : 24 : {
33788 : 24 : {
33789 : 24 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
33790 : 24 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
33791 : 1 : return true;
33792 : : }
33793 : 23 : break;
33794 : : }
33795 : : default:;
33796 : : }
33797 : : break;
33798 : : }
33799 : : default:;
33800 : : }
33801 : : }
33802 : : break;
33803 : 38 : case CFN_BUILT_IN_BSWAP64:
33804 : 38 : if (gimple_call_num_args (_c2) == 1)
33805 : : {
33806 : 38 : tree _q30 = gimple_call_arg (_c2, 0);
33807 : 38 : _q30 = do_valueize (valueize, _q30);
33808 : 38 : switch (TREE_CODE (_q21))
33809 : : {
33810 : 36 : case INTEGER_CST:
33811 : 36 : {
33812 : 36 : switch (TREE_CODE (_p1))
33813 : : {
33814 : 36 : case INTEGER_CST:
33815 : 36 : {
33816 : 36 : {
33817 : 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
33818 : 36 : if (gimple_simplify_567 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64))
33819 : 0 : return true;
33820 : : }
33821 : 36 : break;
33822 : : }
33823 : : default:;
33824 : : }
33825 : : break;
33826 : : }
33827 : : default:;
33828 : : }
33829 : : }
33830 : : break;
33831 : : default:;
33832 : : }
33833 : : }
33834 : : break;
33835 : : default:;
33836 : : }
33837 : : break;
33838 : : }
33839 : 6154 : case VEC_COND_EXPR:
33840 : 6154 : {
33841 : 6154 : tree _q20 = gimple_assign_rhs1 (_a1);
33842 : 6154 : _q20 = do_valueize (valueize, _q20);
33843 : 6154 : tree _q21 = gimple_assign_rhs2 (_a1);
33844 : 6154 : _q21 = do_valueize (valueize, _q21);
33845 : 6154 : tree _q22 = gimple_assign_rhs3 (_a1);
33846 : 6154 : _q22 = do_valueize (valueize, _q22);
33847 : 6154 : switch (TREE_CODE (_p1))
33848 : : {
33849 : 2526 : case SSA_NAME:
33850 : 2526 : if (gimple *_d2 = get_def (valueize, _p1))
33851 : : {
33852 : 2526 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
33853 : 2432 : switch (gimple_assign_rhs_code (_a2))
33854 : : {
33855 : 2168 : case VEC_COND_EXPR:
33856 : 2168 : {
33857 : 2168 : tree _q60 = gimple_assign_rhs1 (_a2);
33858 : 2168 : _q60 = do_valueize (valueize, _q60);
33859 : 2168 : tree _q61 = gimple_assign_rhs2 (_a2);
33860 : 2168 : _q61 = do_valueize (valueize, _q61);
33861 : 2168 : tree _q62 = gimple_assign_rhs3 (_a2);
33862 : 2168 : _q62 = do_valueize (valueize, _q62);
33863 : 2168 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
33864 : : {
33865 : 0 : {
33866 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
33867 : 0 : if (VECTOR_TYPE_P (type)
33868 : 0 : && (TREE_CODE_CLASS (BIT_AND_EXPR) != tcc_comparison
33869 : : || types_match (type, TREE_TYPE (captures[2]))
33870 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
33871 : : || (optimize_vectors_before_lowering_p ()
33872 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
33873 : : )
33874 : : {
33875 : 0 : gimple_seq *lseq = seq;
33876 : 0 : if (lseq
33877 : 0 : && (!single_use (captures[0])
33878 : 0 : || !single_use (captures[4])))
33879 : 0 : lseq = NULL;
33880 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2721;
33881 : 0 : {
33882 : 0 : res_op->set_op (VEC_COND_EXPR, type, 3);
33883 : 0 : res_op->ops[0] = captures[1];
33884 : 0 : {
33885 : 0 : tree _o1[2], _r1;
33886 : 0 : _o1[0] = captures[2];
33887 : 0 : _o1[1] = captures[5];
33888 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
33889 : 0 : tem_op.resimplify (NULL, valueize);
33890 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
33891 : 0 : if (!_r1) goto next_after_fail2721;
33892 : 0 : res_op->ops[1] = _r1;
33893 : : }
33894 : 0 : {
33895 : 0 : tree _o1[2], _r1;
33896 : 0 : _o1[0] = captures[3];
33897 : 0 : _o1[1] = captures[6];
33898 : 0 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
33899 : 0 : tem_op.resimplify (NULL, valueize);
33900 : 0 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
33901 : 0 : if (!_r1) goto next_after_fail2721;
33902 : 0 : res_op->ops[2] = _r1;
33903 : : }
33904 : 0 : res_op->resimplify (lseq, valueize);
33905 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
33906 : 0 : return true;
33907 : : }
33908 : 0 : next_after_fail2721:;
33909 : : }
33910 : : }
33911 : : }
33912 : : break;
33913 : : }
33914 : : default:;
33915 : : }
33916 : : }
33917 : : break;
33918 : 6154 : default:;
33919 : : }
33920 : 6154 : if (integer_minus_onep (_q21))
33921 : : {
33922 : 136 : if (integer_zerop (_q22))
33923 : : {
33924 : 109 : switch (TREE_CODE (_p1))
33925 : : {
33926 : 49 : case SSA_NAME:
33927 : 49 : if (gimple *_d2 = get_def (valueize, _p1))
33928 : : {
33929 : 49 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
33930 : 20 : switch (gimple_assign_rhs_code (_a2))
33931 : : {
33932 : 16 : case VEC_COND_EXPR:
33933 : 16 : {
33934 : 16 : tree _q60 = gimple_assign_rhs1 (_a2);
33935 : 16 : _q60 = do_valueize (valueize, _q60);
33936 : 16 : tree _q61 = gimple_assign_rhs2 (_a2);
33937 : 16 : _q61 = do_valueize (valueize, _q61);
33938 : 16 : tree _q62 = gimple_assign_rhs3 (_a2);
33939 : 16 : _q62 = do_valueize (valueize, _q62);
33940 : 16 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
33941 : : {
33942 : 16 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
33943 : : {
33944 : 16 : {
33945 : 16 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
33946 : 16 : const enum tree_code lop = BIT_AND_EXPR;
33947 : 16 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
33948 : : )
33949 : : {
33950 : 4 : gimple_seq *lseq = seq;
33951 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2722;
33952 : 4 : {
33953 : 4 : res_op->set_op (VEC_COND_EXPR, type, 3);
33954 : 4 : {
33955 : 4 : tree _o1[2], _r1;
33956 : 4 : _o1[0] = captures[0];
33957 : 4 : _o1[1] = captures[3];
33958 : 4 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
33959 : 4 : tem_op.resimplify (lseq, valueize);
33960 : 4 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
33961 : 4 : if (!_r1) goto next_after_fail2722;
33962 : 2 : res_op->ops[0] = _r1;
33963 : : }
33964 : 2 : res_op->ops[1] = captures[1];
33965 : 2 : res_op->ops[2] = captures[2];
33966 : 2 : res_op->resimplify (lseq, valueize);
33967 : 2 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
33968 : 2 : return true;
33969 : : }
33970 : 14 : next_after_fail2722:;
33971 : : }
33972 : : }
33973 : 14 : {
33974 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
33975 : 14 : const enum tree_code lop = BIT_AND_EXPR;
33976 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
33977 : : )
33978 : : {
33979 : 2 : gimple_seq *lseq = seq;
33980 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2723;
33981 : 2 : {
33982 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
33983 : 2 : {
33984 : 2 : tree _o1[2], _r1;
33985 : 2 : _o1[0] = captures[0];
33986 : 2 : _o1[1] = captures[3];
33987 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
33988 : 2 : tem_op.resimplify (lseq, valueize);
33989 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
33990 : 2 : if (!_r1) goto next_after_fail2723;
33991 : 0 : res_op->ops[0] = _r1;
33992 : : }
33993 : 0 : res_op->ops[1] = captures[1];
33994 : 0 : res_op->ops[2] = captures[2];
33995 : 0 : res_op->resimplify (lseq, valueize);
33996 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
33997 : 0 : return true;
33998 : : }
33999 : 14 : next_after_fail2723:;
34000 : : }
34001 : : }
34002 : 14 : {
34003 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34004 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34005 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34006 : : )
34007 : : {
34008 : 2 : gimple_seq *lseq = seq;
34009 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2724;
34010 : 2 : {
34011 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34012 : 2 : {
34013 : 2 : tree _o1[2], _r1;
34014 : 2 : _o1[0] = captures[0];
34015 : 2 : _o1[1] = captures[3];
34016 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34017 : 2 : tem_op.resimplify (lseq, valueize);
34018 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34019 : 2 : if (!_r1) goto next_after_fail2724;
34020 : 0 : res_op->ops[0] = _r1;
34021 : : }
34022 : 0 : res_op->ops[1] = captures[1];
34023 : 0 : res_op->ops[2] = captures[2];
34024 : 0 : res_op->resimplify (lseq, valueize);
34025 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34026 : 0 : return true;
34027 : : }
34028 : 14 : next_after_fail2724:;
34029 : : }
34030 : : }
34031 : 14 : {
34032 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34033 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34034 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34035 : : )
34036 : : {
34037 : 2 : gimple_seq *lseq = seq;
34038 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2725;
34039 : 2 : {
34040 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34041 : 2 : {
34042 : 2 : tree _o1[2], _r1;
34043 : 2 : _o1[0] = captures[0];
34044 : 2 : _o1[1] = captures[3];
34045 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34046 : 2 : tem_op.resimplify (lseq, valueize);
34047 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34048 : 2 : if (!_r1) goto next_after_fail2725;
34049 : 0 : res_op->ops[0] = _r1;
34050 : : }
34051 : 0 : res_op->ops[1] = captures[1];
34052 : 0 : res_op->ops[2] = captures[2];
34053 : 0 : res_op->resimplify (lseq, valueize);
34054 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34055 : 0 : return true;
34056 : : }
34057 : 14 : next_after_fail2725:;
34058 : : }
34059 : : }
34060 : 14 : {
34061 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34062 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34063 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34064 : : )
34065 : : {
34066 : 2 : gimple_seq *lseq = seq;
34067 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2726;
34068 : 2 : {
34069 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34070 : 2 : {
34071 : 2 : tree _o1[2], _r1;
34072 : 2 : _o1[0] = captures[0];
34073 : 2 : _o1[1] = captures[3];
34074 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34075 : 2 : tem_op.resimplify (lseq, valueize);
34076 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34077 : 2 : if (!_r1) goto next_after_fail2726;
34078 : 0 : res_op->ops[0] = _r1;
34079 : : }
34080 : 0 : res_op->ops[1] = captures[1];
34081 : 0 : res_op->ops[2] = captures[2];
34082 : 0 : res_op->resimplify (lseq, valueize);
34083 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34084 : 0 : return true;
34085 : : }
34086 : 14 : next_after_fail2726:;
34087 : : }
34088 : : }
34089 : 14 : {
34090 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34091 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34092 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34093 : : )
34094 : : {
34095 : 2 : gimple_seq *lseq = seq;
34096 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2727;
34097 : 2 : {
34098 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34099 : 2 : {
34100 : 2 : tree _o1[2], _r1;
34101 : 2 : _o1[0] = captures[0];
34102 : 2 : _o1[1] = captures[3];
34103 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34104 : 2 : tem_op.resimplify (lseq, valueize);
34105 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34106 : 2 : if (!_r1) goto next_after_fail2727;
34107 : 0 : res_op->ops[0] = _r1;
34108 : : }
34109 : 0 : res_op->ops[1] = captures[1];
34110 : 0 : res_op->ops[2] = captures[2];
34111 : 0 : res_op->resimplify (lseq, valueize);
34112 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34113 : 0 : return true;
34114 : : }
34115 : 14 : next_after_fail2727:;
34116 : : }
34117 : : }
34118 : 14 : {
34119 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34120 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34121 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34122 : : )
34123 : : {
34124 : 2 : gimple_seq *lseq = seq;
34125 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2728;
34126 : 2 : {
34127 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34128 : 2 : {
34129 : 2 : tree _o1[2], _r1;
34130 : 2 : _o1[0] = captures[0];
34131 : 2 : _o1[1] = captures[3];
34132 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34133 : 2 : tem_op.resimplify (lseq, valueize);
34134 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34135 : 2 : if (!_r1) goto next_after_fail2728;
34136 : 0 : res_op->ops[0] = _r1;
34137 : : }
34138 : 0 : res_op->ops[1] = captures[1];
34139 : 0 : res_op->ops[2] = captures[2];
34140 : 0 : res_op->resimplify (lseq, valueize);
34141 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34142 : 0 : return true;
34143 : : }
34144 : 14 : next_after_fail2728:;
34145 : : }
34146 : : }
34147 : 14 : {
34148 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34149 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34150 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34151 : : )
34152 : : {
34153 : 2 : gimple_seq *lseq = seq;
34154 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2729;
34155 : 2 : {
34156 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34157 : 2 : {
34158 : 2 : tree _o1[2], _r1;
34159 : 2 : _o1[0] = captures[0];
34160 : 2 : _o1[1] = captures[3];
34161 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34162 : 2 : tem_op.resimplify (lseq, valueize);
34163 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34164 : 2 : if (!_r1) goto next_after_fail2729;
34165 : 0 : res_op->ops[0] = _r1;
34166 : : }
34167 : 0 : res_op->ops[1] = captures[1];
34168 : 0 : res_op->ops[2] = captures[2];
34169 : 0 : res_op->resimplify (lseq, valueize);
34170 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34171 : 0 : return true;
34172 : : }
34173 : 14 : next_after_fail2729:;
34174 : : }
34175 : : }
34176 : 14 : {
34177 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34178 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34179 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34180 : : )
34181 : : {
34182 : 2 : gimple_seq *lseq = seq;
34183 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2730;
34184 : 2 : {
34185 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34186 : 2 : {
34187 : 2 : tree _o1[2], _r1;
34188 : 2 : _o1[0] = captures[0];
34189 : 2 : _o1[1] = captures[3];
34190 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34191 : 2 : tem_op.resimplify (lseq, valueize);
34192 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34193 : 2 : if (!_r1) goto next_after_fail2730;
34194 : 0 : res_op->ops[0] = _r1;
34195 : : }
34196 : 0 : res_op->ops[1] = captures[1];
34197 : 0 : res_op->ops[2] = captures[2];
34198 : 0 : res_op->resimplify (lseq, valueize);
34199 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34200 : 0 : return true;
34201 : : }
34202 : 14 : next_after_fail2730:;
34203 : : }
34204 : : }
34205 : 14 : {
34206 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34207 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34208 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34209 : : )
34210 : : {
34211 : 2 : gimple_seq *lseq = seq;
34212 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2731;
34213 : 2 : {
34214 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34215 : 2 : {
34216 : 2 : tree _o1[2], _r1;
34217 : 2 : _o1[0] = captures[0];
34218 : 2 : _o1[1] = captures[3];
34219 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34220 : 2 : tem_op.resimplify (lseq, valueize);
34221 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34222 : 2 : if (!_r1) goto next_after_fail2731;
34223 : 0 : res_op->ops[0] = _r1;
34224 : : }
34225 : 0 : res_op->ops[1] = captures[1];
34226 : 0 : res_op->ops[2] = captures[2];
34227 : 0 : res_op->resimplify (lseq, valueize);
34228 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34229 : 0 : return true;
34230 : : }
34231 : 14 : next_after_fail2731:;
34232 : : }
34233 : : }
34234 : 14 : {
34235 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34236 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34237 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34238 : : )
34239 : : {
34240 : 2 : gimple_seq *lseq = seq;
34241 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2732;
34242 : 2 : {
34243 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34244 : 2 : {
34245 : 2 : tree _o1[2], _r1;
34246 : 2 : _o1[0] = captures[0];
34247 : 2 : _o1[1] = captures[3];
34248 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34249 : 2 : tem_op.resimplify (lseq, valueize);
34250 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34251 : 2 : if (!_r1) goto next_after_fail2732;
34252 : 0 : res_op->ops[0] = _r1;
34253 : : }
34254 : 0 : res_op->ops[1] = captures[1];
34255 : 0 : res_op->ops[2] = captures[2];
34256 : 0 : res_op->resimplify (lseq, valueize);
34257 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34258 : 0 : return true;
34259 : : }
34260 : 14 : next_after_fail2732:;
34261 : : }
34262 : : }
34263 : 14 : {
34264 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34265 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34266 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34267 : : )
34268 : : {
34269 : 2 : gimple_seq *lseq = seq;
34270 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2733;
34271 : 2 : {
34272 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34273 : 2 : {
34274 : 2 : tree _o1[2], _r1;
34275 : 2 : _o1[0] = captures[0];
34276 : 2 : _o1[1] = captures[3];
34277 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34278 : 2 : tem_op.resimplify (lseq, valueize);
34279 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34280 : 2 : if (!_r1) goto next_after_fail2733;
34281 : 0 : res_op->ops[0] = _r1;
34282 : : }
34283 : 0 : res_op->ops[1] = captures[1];
34284 : 0 : res_op->ops[2] = captures[2];
34285 : 0 : res_op->resimplify (lseq, valueize);
34286 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34287 : 0 : return true;
34288 : : }
34289 : 14 : next_after_fail2733:;
34290 : : }
34291 : : }
34292 : 14 : {
34293 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34294 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34295 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34296 : : )
34297 : : {
34298 : 2 : gimple_seq *lseq = seq;
34299 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2734;
34300 : 2 : {
34301 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34302 : 2 : {
34303 : 2 : tree _o1[2], _r1;
34304 : 2 : _o1[0] = captures[0];
34305 : 2 : _o1[1] = captures[3];
34306 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34307 : 2 : tem_op.resimplify (lseq, valueize);
34308 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34309 : 2 : if (!_r1) goto next_after_fail2734;
34310 : 0 : res_op->ops[0] = _r1;
34311 : : }
34312 : 0 : res_op->ops[1] = captures[1];
34313 : 0 : res_op->ops[2] = captures[2];
34314 : 0 : res_op->resimplify (lseq, valueize);
34315 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34316 : 0 : return true;
34317 : : }
34318 : 14 : next_after_fail2734:;
34319 : : }
34320 : : }
34321 : 14 : {
34322 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34323 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34324 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34325 : : )
34326 : : {
34327 : 2 : gimple_seq *lseq = seq;
34328 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2735;
34329 : 2 : {
34330 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34331 : 2 : {
34332 : 2 : tree _o1[2], _r1;
34333 : 2 : _o1[0] = captures[0];
34334 : 2 : _o1[1] = captures[3];
34335 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34336 : 2 : tem_op.resimplify (lseq, valueize);
34337 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34338 : 2 : if (!_r1) goto next_after_fail2735;
34339 : 0 : res_op->ops[0] = _r1;
34340 : : }
34341 : 0 : res_op->ops[1] = captures[1];
34342 : 0 : res_op->ops[2] = captures[2];
34343 : 0 : res_op->resimplify (lseq, valueize);
34344 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34345 : 0 : return true;
34346 : : }
34347 : 14 : next_after_fail2735:;
34348 : : }
34349 : : }
34350 : 14 : {
34351 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34352 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34353 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34354 : : )
34355 : : {
34356 : 2 : gimple_seq *lseq = seq;
34357 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2736;
34358 : 2 : {
34359 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34360 : 2 : {
34361 : 2 : tree _o1[2], _r1;
34362 : 2 : _o1[0] = captures[0];
34363 : 2 : _o1[1] = captures[3];
34364 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34365 : 2 : tem_op.resimplify (lseq, valueize);
34366 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34367 : 2 : if (!_r1) goto next_after_fail2736;
34368 : 0 : res_op->ops[0] = _r1;
34369 : : }
34370 : 0 : res_op->ops[1] = captures[1];
34371 : 0 : res_op->ops[2] = captures[2];
34372 : 0 : res_op->resimplify (lseq, valueize);
34373 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34374 : 0 : return true;
34375 : : }
34376 : 14 : next_after_fail2736:;
34377 : : }
34378 : : }
34379 : 14 : {
34380 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34381 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34382 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34383 : : )
34384 : : {
34385 : 2 : gimple_seq *lseq = seq;
34386 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2737;
34387 : 2 : {
34388 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34389 : 2 : {
34390 : 2 : tree _o1[2], _r1;
34391 : 2 : _o1[0] = captures[0];
34392 : 2 : _o1[1] = captures[3];
34393 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34394 : 2 : tem_op.resimplify (lseq, valueize);
34395 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34396 : 2 : if (!_r1) goto next_after_fail2737;
34397 : 0 : res_op->ops[0] = _r1;
34398 : : }
34399 : 0 : res_op->ops[1] = captures[1];
34400 : 0 : res_op->ops[2] = captures[2];
34401 : 0 : res_op->resimplify (lseq, valueize);
34402 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34403 : 0 : return true;
34404 : : }
34405 : 14 : next_after_fail2737:;
34406 : : }
34407 : : }
34408 : 14 : {
34409 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34410 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34411 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34412 : : )
34413 : : {
34414 : 2 : gimple_seq *lseq = seq;
34415 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2738;
34416 : 2 : {
34417 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34418 : 2 : {
34419 : 2 : tree _o1[2], _r1;
34420 : 2 : _o1[0] = captures[0];
34421 : 2 : _o1[1] = captures[3];
34422 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34423 : 2 : tem_op.resimplify (lseq, valueize);
34424 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34425 : 2 : if (!_r1) goto next_after_fail2738;
34426 : 0 : res_op->ops[0] = _r1;
34427 : : }
34428 : 0 : res_op->ops[1] = captures[1];
34429 : 0 : res_op->ops[2] = captures[2];
34430 : 0 : res_op->resimplify (lseq, valueize);
34431 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34432 : 0 : return true;
34433 : : }
34434 : 14 : next_after_fail2738:;
34435 : : }
34436 : : }
34437 : 14 : {
34438 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34439 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34440 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34441 : : )
34442 : : {
34443 : 2 : gimple_seq *lseq = seq;
34444 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2739;
34445 : 2 : {
34446 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34447 : 2 : {
34448 : 2 : tree _o1[2], _r1;
34449 : 2 : _o1[0] = captures[0];
34450 : 2 : _o1[1] = captures[3];
34451 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34452 : 2 : tem_op.resimplify (lseq, valueize);
34453 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34454 : 2 : if (!_r1) goto next_after_fail2739;
34455 : 0 : res_op->ops[0] = _r1;
34456 : : }
34457 : 0 : res_op->ops[1] = captures[1];
34458 : 0 : res_op->ops[2] = captures[2];
34459 : 0 : res_op->resimplify (lseq, valueize);
34460 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34461 : 0 : return true;
34462 : : }
34463 : 14 : next_after_fail2739:;
34464 : : }
34465 : : }
34466 : 14 : {
34467 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34468 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34469 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34470 : : )
34471 : : {
34472 : 2 : gimple_seq *lseq = seq;
34473 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2740;
34474 : 2 : {
34475 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34476 : 2 : {
34477 : 2 : tree _o1[2], _r1;
34478 : 2 : _o1[0] = captures[0];
34479 : 2 : _o1[1] = captures[3];
34480 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34481 : 2 : tem_op.resimplify (lseq, valueize);
34482 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34483 : 2 : if (!_r1) goto next_after_fail2740;
34484 : 0 : res_op->ops[0] = _r1;
34485 : : }
34486 : 0 : res_op->ops[1] = captures[1];
34487 : 0 : res_op->ops[2] = captures[2];
34488 : 0 : res_op->resimplify (lseq, valueize);
34489 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34490 : 0 : return true;
34491 : : }
34492 : 14 : next_after_fail2740:;
34493 : : }
34494 : : }
34495 : 14 : {
34496 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34497 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34498 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34499 : : )
34500 : : {
34501 : 2 : gimple_seq *lseq = seq;
34502 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2741;
34503 : 2 : {
34504 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34505 : 2 : {
34506 : 2 : tree _o1[2], _r1;
34507 : 2 : _o1[0] = captures[0];
34508 : 2 : _o1[1] = captures[3];
34509 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34510 : 2 : tem_op.resimplify (lseq, valueize);
34511 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34512 : 2 : if (!_r1) goto next_after_fail2741;
34513 : 0 : res_op->ops[0] = _r1;
34514 : : }
34515 : 0 : res_op->ops[1] = captures[1];
34516 : 0 : res_op->ops[2] = captures[2];
34517 : 0 : res_op->resimplify (lseq, valueize);
34518 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34519 : 0 : return true;
34520 : : }
34521 : 14 : next_after_fail2741:;
34522 : : }
34523 : : }
34524 : 14 : {
34525 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34526 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34527 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34528 : : )
34529 : : {
34530 : 2 : gimple_seq *lseq = seq;
34531 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2742;
34532 : 2 : {
34533 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34534 : 2 : {
34535 : 2 : tree _o1[2], _r1;
34536 : 2 : _o1[0] = captures[0];
34537 : 2 : _o1[1] = captures[3];
34538 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34539 : 2 : tem_op.resimplify (lseq, valueize);
34540 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34541 : 2 : if (!_r1) goto next_after_fail2742;
34542 : 0 : res_op->ops[0] = _r1;
34543 : : }
34544 : 0 : res_op->ops[1] = captures[1];
34545 : 0 : res_op->ops[2] = captures[2];
34546 : 0 : res_op->resimplify (lseq, valueize);
34547 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34548 : 0 : return true;
34549 : : }
34550 : 14 : next_after_fail2742:;
34551 : : }
34552 : : }
34553 : 14 : {
34554 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34555 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34556 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34557 : : )
34558 : : {
34559 : 2 : gimple_seq *lseq = seq;
34560 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2743;
34561 : 2 : {
34562 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34563 : 2 : {
34564 : 2 : tree _o1[2], _r1;
34565 : 2 : _o1[0] = captures[0];
34566 : 2 : _o1[1] = captures[3];
34567 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34568 : 2 : tem_op.resimplify (lseq, valueize);
34569 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34570 : 2 : if (!_r1) goto next_after_fail2743;
34571 : 0 : res_op->ops[0] = _r1;
34572 : : }
34573 : 0 : res_op->ops[1] = captures[1];
34574 : 0 : res_op->ops[2] = captures[2];
34575 : 0 : res_op->resimplify (lseq, valueize);
34576 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34577 : 0 : return true;
34578 : : }
34579 : 14 : next_after_fail2743:;
34580 : : }
34581 : : }
34582 : 14 : {
34583 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34584 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34585 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34586 : : )
34587 : : {
34588 : 2 : gimple_seq *lseq = seq;
34589 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2744;
34590 : 2 : {
34591 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34592 : 2 : {
34593 : 2 : tree _o1[2], _r1;
34594 : 2 : _o1[0] = captures[0];
34595 : 2 : _o1[1] = captures[3];
34596 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34597 : 2 : tem_op.resimplify (lseq, valueize);
34598 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34599 : 2 : if (!_r1) goto next_after_fail2744;
34600 : 0 : res_op->ops[0] = _r1;
34601 : : }
34602 : 0 : res_op->ops[1] = captures[1];
34603 : 0 : res_op->ops[2] = captures[2];
34604 : 0 : res_op->resimplify (lseq, valueize);
34605 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34606 : 0 : return true;
34607 : : }
34608 : 14 : next_after_fail2744:;
34609 : : }
34610 : : }
34611 : 14 : {
34612 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34613 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34614 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34615 : : )
34616 : : {
34617 : 2 : gimple_seq *lseq = seq;
34618 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2745;
34619 : 2 : {
34620 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34621 : 2 : {
34622 : 2 : tree _o1[2], _r1;
34623 : 2 : _o1[0] = captures[0];
34624 : 2 : _o1[1] = captures[3];
34625 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34626 : 2 : tem_op.resimplify (lseq, valueize);
34627 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34628 : 2 : if (!_r1) goto next_after_fail2745;
34629 : 0 : res_op->ops[0] = _r1;
34630 : : }
34631 : 0 : res_op->ops[1] = captures[1];
34632 : 0 : res_op->ops[2] = captures[2];
34633 : 0 : res_op->resimplify (lseq, valueize);
34634 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34635 : 0 : return true;
34636 : : }
34637 : 14 : next_after_fail2745:;
34638 : : }
34639 : : }
34640 : 14 : {
34641 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34642 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34643 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34644 : : )
34645 : : {
34646 : 2 : gimple_seq *lseq = seq;
34647 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2746;
34648 : 2 : {
34649 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34650 : 2 : {
34651 : 2 : tree _o1[2], _r1;
34652 : 2 : _o1[0] = captures[0];
34653 : 2 : _o1[1] = captures[3];
34654 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34655 : 2 : tem_op.resimplify (lseq, valueize);
34656 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34657 : 2 : if (!_r1) goto next_after_fail2746;
34658 : 0 : res_op->ops[0] = _r1;
34659 : : }
34660 : 0 : res_op->ops[1] = captures[1];
34661 : 0 : res_op->ops[2] = captures[2];
34662 : 0 : res_op->resimplify (lseq, valueize);
34663 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34664 : 0 : return true;
34665 : : }
34666 : 14 : next_after_fail2746:;
34667 : : }
34668 : : }
34669 : 14 : {
34670 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34671 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34672 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34673 : : )
34674 : : {
34675 : 2 : gimple_seq *lseq = seq;
34676 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2747;
34677 : 2 : {
34678 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34679 : 2 : {
34680 : 2 : tree _o1[2], _r1;
34681 : 2 : _o1[0] = captures[0];
34682 : 2 : _o1[1] = captures[3];
34683 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34684 : 2 : tem_op.resimplify (lseq, valueize);
34685 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34686 : 2 : if (!_r1) goto next_after_fail2747;
34687 : 0 : res_op->ops[0] = _r1;
34688 : : }
34689 : 0 : res_op->ops[1] = captures[1];
34690 : 0 : res_op->ops[2] = captures[2];
34691 : 0 : res_op->resimplify (lseq, valueize);
34692 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34693 : 0 : return true;
34694 : : }
34695 : 14 : next_after_fail2747:;
34696 : : }
34697 : : }
34698 : 14 : {
34699 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34700 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34701 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34702 : : )
34703 : : {
34704 : 2 : gimple_seq *lseq = seq;
34705 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2748;
34706 : 2 : {
34707 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34708 : 2 : {
34709 : 2 : tree _o1[2], _r1;
34710 : 2 : _o1[0] = captures[0];
34711 : 2 : _o1[1] = captures[3];
34712 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34713 : 2 : tem_op.resimplify (lseq, valueize);
34714 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34715 : 2 : if (!_r1) goto next_after_fail2748;
34716 : 0 : res_op->ops[0] = _r1;
34717 : : }
34718 : 0 : res_op->ops[1] = captures[1];
34719 : 0 : res_op->ops[2] = captures[2];
34720 : 0 : res_op->resimplify (lseq, valueize);
34721 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34722 : 0 : return true;
34723 : : }
34724 : 14 : next_after_fail2748:;
34725 : : }
34726 : : }
34727 : 14 : {
34728 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34729 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34730 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34731 : : )
34732 : : {
34733 : 2 : gimple_seq *lseq = seq;
34734 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2749;
34735 : 2 : {
34736 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34737 : 2 : {
34738 : 2 : tree _o1[2], _r1;
34739 : 2 : _o1[0] = captures[0];
34740 : 2 : _o1[1] = captures[3];
34741 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34742 : 2 : tem_op.resimplify (lseq, valueize);
34743 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34744 : 2 : if (!_r1) goto next_after_fail2749;
34745 : 0 : res_op->ops[0] = _r1;
34746 : : }
34747 : 0 : res_op->ops[1] = captures[1];
34748 : 0 : res_op->ops[2] = captures[2];
34749 : 0 : res_op->resimplify (lseq, valueize);
34750 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34751 : 0 : return true;
34752 : : }
34753 : 14 : next_after_fail2749:;
34754 : : }
34755 : : }
34756 : 14 : {
34757 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34758 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34759 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34760 : : )
34761 : : {
34762 : 2 : gimple_seq *lseq = seq;
34763 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2750;
34764 : 2 : {
34765 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34766 : 2 : {
34767 : 2 : tree _o1[2], _r1;
34768 : 2 : _o1[0] = captures[0];
34769 : 2 : _o1[1] = captures[3];
34770 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34771 : 2 : tem_op.resimplify (lseq, valueize);
34772 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34773 : 2 : if (!_r1) goto next_after_fail2750;
34774 : 0 : res_op->ops[0] = _r1;
34775 : : }
34776 : 0 : res_op->ops[1] = captures[1];
34777 : 0 : res_op->ops[2] = captures[2];
34778 : 0 : res_op->resimplify (lseq, valueize);
34779 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34780 : 0 : return true;
34781 : : }
34782 : 14 : next_after_fail2750:;
34783 : : }
34784 : : }
34785 : 14 : {
34786 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34787 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34788 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34789 : : )
34790 : : {
34791 : 2 : gimple_seq *lseq = seq;
34792 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2751;
34793 : 2 : {
34794 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34795 : 2 : {
34796 : 2 : tree _o1[2], _r1;
34797 : 2 : _o1[0] = captures[0];
34798 : 2 : _o1[1] = captures[3];
34799 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34800 : 2 : tem_op.resimplify (lseq, valueize);
34801 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34802 : 2 : if (!_r1) goto next_after_fail2751;
34803 : 0 : res_op->ops[0] = _r1;
34804 : : }
34805 : 0 : res_op->ops[1] = captures[1];
34806 : 0 : res_op->ops[2] = captures[2];
34807 : 0 : res_op->resimplify (lseq, valueize);
34808 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34809 : 0 : return true;
34810 : : }
34811 : 14 : next_after_fail2751:;
34812 : : }
34813 : : }
34814 : 14 : {
34815 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34816 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34817 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34818 : : )
34819 : : {
34820 : 2 : gimple_seq *lseq = seq;
34821 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2752;
34822 : 2 : {
34823 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34824 : 2 : {
34825 : 2 : tree _o1[2], _r1;
34826 : 2 : _o1[0] = captures[0];
34827 : 2 : _o1[1] = captures[3];
34828 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34829 : 2 : tem_op.resimplify (lseq, valueize);
34830 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34831 : 2 : if (!_r1) goto next_after_fail2752;
34832 : 0 : res_op->ops[0] = _r1;
34833 : : }
34834 : 0 : res_op->ops[1] = captures[1];
34835 : 0 : res_op->ops[2] = captures[2];
34836 : 0 : res_op->resimplify (lseq, valueize);
34837 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34838 : 0 : return true;
34839 : : }
34840 : 14 : next_after_fail2752:;
34841 : : }
34842 : : }
34843 : 14 : {
34844 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34845 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34846 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34847 : : )
34848 : : {
34849 : 2 : gimple_seq *lseq = seq;
34850 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2753;
34851 : 2 : {
34852 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34853 : 2 : {
34854 : 2 : tree _o1[2], _r1;
34855 : 2 : _o1[0] = captures[0];
34856 : 2 : _o1[1] = captures[3];
34857 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34858 : 2 : tem_op.resimplify (lseq, valueize);
34859 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34860 : 2 : if (!_r1) goto next_after_fail2753;
34861 : 0 : res_op->ops[0] = _r1;
34862 : : }
34863 : 0 : res_op->ops[1] = captures[1];
34864 : 0 : res_op->ops[2] = captures[2];
34865 : 0 : res_op->resimplify (lseq, valueize);
34866 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34867 : 0 : return true;
34868 : : }
34869 : 14 : next_after_fail2753:;
34870 : : }
34871 : : }
34872 : 14 : {
34873 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34874 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34875 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34876 : : )
34877 : : {
34878 : 2 : gimple_seq *lseq = seq;
34879 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2754;
34880 : 2 : {
34881 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34882 : 2 : {
34883 : 2 : tree _o1[2], _r1;
34884 : 2 : _o1[0] = captures[0];
34885 : 2 : _o1[1] = captures[3];
34886 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34887 : 2 : tem_op.resimplify (lseq, valueize);
34888 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34889 : 2 : if (!_r1) goto next_after_fail2754;
34890 : 0 : res_op->ops[0] = _r1;
34891 : : }
34892 : 0 : res_op->ops[1] = captures[1];
34893 : 0 : res_op->ops[2] = captures[2];
34894 : 0 : res_op->resimplify (lseq, valueize);
34895 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34896 : 0 : return true;
34897 : : }
34898 : 14 : next_after_fail2754:;
34899 : : }
34900 : : }
34901 : 14 : {
34902 : 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
34903 : 14 : const enum tree_code lop = BIT_AND_EXPR;
34904 : 14 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
34905 : : )
34906 : : {
34907 : 2 : gimple_seq *lseq = seq;
34908 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2755;
34909 : 2 : {
34910 : 2 : res_op->set_op (VEC_COND_EXPR, type, 3);
34911 : 2 : {
34912 : 2 : tree _o1[2], _r1;
34913 : 2 : _o1[0] = captures[0];
34914 : 2 : _o1[1] = captures[3];
34915 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34916 : 2 : tem_op.resimplify (lseq, valueize);
34917 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
34918 : 2 : if (!_r1) goto next_after_fail2755;
34919 : 0 : res_op->ops[0] = _r1;
34920 : : }
34921 : 0 : res_op->ops[1] = captures[1];
34922 : 0 : res_op->ops[2] = captures[2];
34923 : 0 : res_op->resimplify (lseq, valueize);
34924 : 0 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
34925 : 0 : return true;
34926 : : }
34927 : 14 : next_after_fail2755:;
34928 : : }
34929 : : }
34930 : : }
34931 : : }
34932 : : break;
34933 : : }
34934 : : default:;
34935 : : }
34936 : : }
34937 : : break;
34938 : : default:;
34939 : : }
34940 : : }
34941 : : }
34942 : 6152 : {
34943 : 6152 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
34944 : 6152 : if (VECTOR_TYPE_P (type)
34945 : 6152 : && (TREE_CODE_CLASS (BIT_AND_EXPR) != tcc_comparison
34946 : : || types_match (type, TREE_TYPE (captures[2]))
34947 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
34948 : : || (optimize_vectors_before_lowering_p ()
34949 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
34950 : : )
34951 : : {
34952 : 6152 : gimple_seq *lseq = seq;
34953 : 6152 : if (lseq
34954 : 1133 : && (!single_use (captures[0])))
34955 : 5214 : lseq = NULL;
34956 : 6152 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2756;
34957 : 6152 : {
34958 : 6152 : res_op->set_op (VEC_COND_EXPR, type, 3);
34959 : 6152 : res_op->ops[0] = captures[1];
34960 : 6152 : {
34961 : 6152 : tree _o1[2], _r1;
34962 : 6152 : _o1[0] = captures[2];
34963 : 6152 : _o1[1] = captures[4];
34964 : 6152 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34965 : 6152 : tem_op.resimplify (NULL, valueize);
34966 : 6152 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
34967 : 6152 : if (!_r1) goto next_after_fail2756;
34968 : 4333 : res_op->ops[1] = _r1;
34969 : : }
34970 : 4333 : {
34971 : 4333 : tree _o1[2], _r1;
34972 : 4333 : _o1[0] = captures[3];
34973 : 4333 : _o1[1] = captures[4];
34974 : 4333 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
34975 : 4333 : tem_op.resimplify (NULL, valueize);
34976 : 4333 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
34977 : 4333 : if (!_r1) goto next_after_fail2756;
34978 : 4306 : res_op->ops[2] = _r1;
34979 : : }
34980 : 4306 : res_op->resimplify (lseq, valueize);
34981 : 4306 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
34982 : 4306 : return true;
34983 : : }
34984 : 1846 : next_after_fail2756:;
34985 : : }
34986 : : }
34987 : 1846 : break;
34988 : : }
34989 : : default:;
34990 : : }
34991 : 1161898 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
34992 : 165188 : switch (gimple_call_combined_fn (_c1))
34993 : : {
34994 : 0 : case CFN_BUILT_IN_BSWAP128:
34995 : 0 : if (gimple_call_num_args (_c1) == 1)
34996 : : {
34997 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
34998 : 0 : _q20 = do_valueize (valueize, _q20);
34999 : 0 : switch (TREE_CODE (_p1))
35000 : : {
35001 : 0 : case INTEGER_CST:
35002 : 0 : {
35003 : 0 : {
35004 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
35005 : 0 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP128))
35006 : 0 : return true;
35007 : : }
35008 : 0 : break;
35009 : : }
35010 : : default:;
35011 : : }
35012 : : }
35013 : : break;
35014 : 6 : case CFN_BUILT_IN_BSWAP16:
35015 : 6 : if (gimple_call_num_args (_c1) == 1)
35016 : : {
35017 : 6 : tree _q20 = gimple_call_arg (_c1, 0);
35018 : 6 : _q20 = do_valueize (valueize, _q20);
35019 : 6 : switch (TREE_CODE (_p1))
35020 : : {
35021 : 6 : case INTEGER_CST:
35022 : 6 : {
35023 : 6 : {
35024 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
35025 : 6 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16))
35026 : 2 : return true;
35027 : : }
35028 : 4 : break;
35029 : : }
35030 : : default:;
35031 : : }
35032 : : }
35033 : : break;
35034 : 711 : case CFN_BUILT_IN_BSWAP32:
35035 : 711 : if (gimple_call_num_args (_c1) == 1)
35036 : : {
35037 : 711 : tree _q20 = gimple_call_arg (_c1, 0);
35038 : 711 : _q20 = do_valueize (valueize, _q20);
35039 : 711 : switch (TREE_CODE (_p1))
35040 : : {
35041 : 707 : case INTEGER_CST:
35042 : 707 : {
35043 : 707 : {
35044 : 707 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
35045 : 707 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32))
35046 : 1 : return true;
35047 : : }
35048 : 706 : break;
35049 : : }
35050 : : default:;
35051 : : }
35052 : : }
35053 : : break;
35054 : 471 : case CFN_BUILT_IN_BSWAP64:
35055 : 471 : if (gimple_call_num_args (_c1) == 1)
35056 : : {
35057 : 471 : tree _q20 = gimple_call_arg (_c1, 0);
35058 : 471 : _q20 = do_valueize (valueize, _q20);
35059 : 471 : switch (TREE_CODE (_p1))
35060 : : {
35061 : 469 : case INTEGER_CST:
35062 : 469 : {
35063 : 469 : {
35064 : 469 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
35065 : 469 : if (gimple_simplify_568 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64))
35066 : 4 : return true;
35067 : : }
35068 : 465 : break;
35069 : : }
35070 : : default:;
35071 : : }
35072 : : }
35073 : : break;
35074 : : default:;
35075 : : }
35076 : : }
35077 : : break;
35078 : 9019456 : default:;
35079 : : }
35080 : 9019456 : switch (TREE_CODE (_p1))
35081 : : {
35082 : 3215049 : case SSA_NAME:
35083 : 3215049 : if (gimple *_d1 = get_def (valueize, _p1))
35084 : : {
35085 : 2549450 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
35086 : 2456972 : switch (gimple_assign_rhs_code (_a1))
35087 : : {
35088 : 2015 : case VEC_COND_EXPR:
35089 : 2015 : {
35090 : 2015 : tree _q30 = gimple_assign_rhs1 (_a1);
35091 : 2015 : _q30 = do_valueize (valueize, _q30);
35092 : 2015 : tree _q31 = gimple_assign_rhs2 (_a1);
35093 : 2015 : _q31 = do_valueize (valueize, _q31);
35094 : 2015 : tree _q32 = gimple_assign_rhs3 (_a1);
35095 : 2015 : _q32 = do_valueize (valueize, _q32);
35096 : 2015 : {
35097 : 2015 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
35098 : 2015 : if (VECTOR_TYPE_P (type)
35099 : 2015 : && (TREE_CODE_CLASS (BIT_AND_EXPR) != tcc_comparison
35100 : : || types_match (type, TREE_TYPE (captures[3]))
35101 : : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
35102 : : || (optimize_vectors_before_lowering_p ()
35103 : : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
35104 : : )
35105 : : {
35106 : 2015 : gimple_seq *lseq = seq;
35107 : 2015 : if (lseq
35108 : 1089 : && (!single_use (captures[1])))
35109 : 951 : lseq = NULL;
35110 : 2015 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2757;
35111 : 2015 : {
35112 : 2015 : res_op->set_op (VEC_COND_EXPR, type, 3);
35113 : 2015 : res_op->ops[0] = captures[2];
35114 : 2015 : {
35115 : 2015 : tree _o1[2], _r1;
35116 : 2015 : _o1[0] = captures[0];
35117 : 2015 : _o1[1] = captures[3];
35118 : 2015 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
35119 : 2015 : tem_op.resimplify (NULL, valueize);
35120 : 2015 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
35121 : 2015 : if (!_r1) goto next_after_fail2757;
35122 : 57 : res_op->ops[1] = _r1;
35123 : : }
35124 : 57 : {
35125 : 57 : tree _o1[2], _r1;
35126 : 57 : _o1[0] = captures[0];
35127 : 57 : _o1[1] = captures[4];
35128 : 57 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
35129 : 57 : tem_op.resimplify (NULL, valueize);
35130 : 57 : _r1 = maybe_push_res_to_seq (&tem_op, NULL);
35131 : 57 : if (!_r1) goto next_after_fail2757;
35132 : 57 : res_op->ops[2] = _r1;
35133 : : }
35134 : 57 : res_op->resimplify (lseq, valueize);
35135 : 57 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
35136 : 57 : return true;
35137 : : }
35138 : 1958 : next_after_fail2757:;
35139 : : }
35140 : : }
35141 : 1958 : break;
35142 : : }
35143 : : default:;
35144 : : }
35145 : : }
35146 : : break;
35147 : 9019399 : default:;
35148 : : }
35149 : 9019399 : switch (TREE_CODE (_p0))
35150 : : {
35151 : 8924631 : case SSA_NAME:
35152 : 8924631 : if (gimple *_d1 = get_def (valueize, _p0))
35153 : : {
35154 : 6134137 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
35155 : 6666286 : switch (gimple_assign_rhs_code (_a1))
35156 : : {
35157 : 425903 : CASE_CONVERT:
35158 : 425903 : {
35159 : 425903 : tree _q20 = gimple_assign_rhs1 (_a1);
35160 : 425903 : _q20 = do_valueize (valueize, _q20);
35161 : 425903 : switch (TREE_CODE (_q20))
35162 : : {
35163 : 425667 : case SSA_NAME:
35164 : 425667 : if (gimple *_d2 = get_def (valueize, _q20))
35165 : : {
35166 : 395202 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35167 : 389764 : switch (gimple_assign_rhs_code (_a2))
35168 : : {
35169 : 494 : case LE_EXPR:
35170 : 494 : {
35171 : 494 : tree _q30 = gimple_assign_rhs1 (_a2);
35172 : 494 : _q30 = do_valueize (valueize, _q30);
35173 : 494 : tree _q31 = gimple_assign_rhs2 (_a2);
35174 : 494 : _q31 = do_valueize (valueize, _q31);
35175 : 494 : if (integer_onep (_q31))
35176 : : {
35177 : 28 : switch (TREE_CODE (_p1))
35178 : : {
35179 : 28 : case SSA_NAME:
35180 : 28 : if (gimple *_d3 = get_def (valueize, _p1))
35181 : : {
35182 : 28 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35183 : 3 : switch (gimple_assign_rhs_code (_a3))
35184 : : {
35185 : 3 : CASE_CONVERT:
35186 : 3 : {
35187 : 3 : tree _q60 = gimple_assign_rhs1 (_a3);
35188 : 3 : _q60 = do_valueize (valueize, _q60);
35189 : 3 : {
35190 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
35191 : 3 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
35192 : 1 : return true;
35193 : : }
35194 : 2 : break;
35195 : : }
35196 : : default:;
35197 : : }
35198 : : }
35199 : : break;
35200 : 27 : default:;
35201 : : }
35202 : 27 : {
35203 : 27 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
35204 : 27 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
35205 : 2 : return true;
35206 : : }
35207 : : }
35208 : : break;
35209 : : }
35210 : : default:;
35211 : : }
35212 : : }
35213 : : break;
35214 : 425900 : default:;
35215 : : }
35216 : 425900 : switch (TREE_CODE (_p1))
35217 : : {
35218 : 85982 : case SSA_NAME:
35219 : 85982 : if (gimple *_d2 = get_def (valueize, _p1))
35220 : : {
35221 : 83361 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35222 : 60771 : switch (gimple_assign_rhs_code (_a2))
35223 : : {
35224 : 23901 : CASE_CONVERT:
35225 : 23901 : {
35226 : 23901 : tree _q40 = gimple_assign_rhs1 (_a2);
35227 : 23901 : _q40 = do_valueize (valueize, _q40);
35228 : 23901 : switch (TREE_CODE (_q40))
35229 : : {
35230 : 23901 : case SSA_NAME:
35231 : 23901 : if (gimple *_d3 = get_def (valueize, _q40))
35232 : : {
35233 : 22205 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35234 : 7802 : switch (gimple_assign_rhs_code (_a3))
35235 : : {
35236 : 15 : case LE_EXPR:
35237 : 15 : {
35238 : 15 : tree _q50 = gimple_assign_rhs1 (_a3);
35239 : 15 : _q50 = do_valueize (valueize, _q50);
35240 : 15 : tree _q51 = gimple_assign_rhs2 (_a3);
35241 : 15 : _q51 = do_valueize (valueize, _q51);
35242 : 15 : if (integer_onep (_q51))
35243 : : {
35244 : 0 : {
35245 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
35246 : 0 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
35247 : 0 : return true;
35248 : : }
35249 : : }
35250 : : break;
35251 : : }
35252 : : default:;
35253 : : }
35254 : : }
35255 : : break;
35256 : : default:;
35257 : : }
35258 : : break;
35259 : : }
35260 : 91 : case LE_EXPR:
35261 : 91 : {
35262 : 91 : tree _q40 = gimple_assign_rhs1 (_a2);
35263 : 91 : _q40 = do_valueize (valueize, _q40);
35264 : 91 : tree _q41 = gimple_assign_rhs2 (_a2);
35265 : 91 : _q41 = do_valueize (valueize, _q41);
35266 : 91 : if (integer_onep (_q41))
35267 : : {
35268 : 1 : {
35269 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q20 };
35270 : 1 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
35271 : 1 : return true;
35272 : : }
35273 : : }
35274 : : break;
35275 : : }
35276 : : default:;
35277 : : }
35278 : : }
35279 : : break;
35280 : 425899 : default:;
35281 : : }
35282 : 425899 : switch (TREE_CODE (_q20))
35283 : : {
35284 : 425663 : case SSA_NAME:
35285 : 425663 : if (gimple *_d2 = get_def (valueize, _q20))
35286 : : {
35287 : 395198 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35288 : 389761 : switch (gimple_assign_rhs_code (_a2))
35289 : : {
35290 : 2635 : case EQ_EXPR:
35291 : 2635 : {
35292 : 2635 : tree _q30 = gimple_assign_rhs1 (_a2);
35293 : 2635 : _q30 = do_valueize (valueize, _q30);
35294 : 2635 : tree _q31 = gimple_assign_rhs2 (_a2);
35295 : 2635 : _q31 = do_valueize (valueize, _q31);
35296 : 2635 : if (tree_swap_operands_p (_q30, _q31))
35297 : 0 : std::swap (_q30, _q31);
35298 : 2635 : switch (TREE_CODE (_q31))
35299 : : {
35300 : 325 : case INTEGER_CST:
35301 : 325 : {
35302 : 325 : switch (TREE_CODE (_p1))
35303 : : {
35304 : 323 : case SSA_NAME:
35305 : 323 : if (gimple *_d3 = get_def (valueize, _p1))
35306 : : {
35307 : 307 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35308 : 396 : switch (gimple_assign_rhs_code (_a3))
35309 : : {
35310 : 24 : CASE_CONVERT:
35311 : 24 : {
35312 : 24 : tree _q60 = gimple_assign_rhs1 (_a3);
35313 : 24 : _q60 = do_valueize (valueize, _q60);
35314 : 24 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
35315 : : {
35316 : 1 : {
35317 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
35318 : 1 : if (gimple_simplify_587 (res_op, seq, valueize, type, captures))
35319 : 1 : return true;
35320 : : }
35321 : : }
35322 : : break;
35323 : : }
35324 : : default:;
35325 : : }
35326 : : }
35327 : : break;
35328 : 324 : default:;
35329 : : }
35330 : 324 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
35331 : : {
35332 : 0 : {
35333 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
35334 : 0 : if (gimple_simplify_587 (res_op, seq, valueize, type, captures))
35335 : 0 : return true;
35336 : : }
35337 : : }
35338 : : break;
35339 : : }
35340 : : default:;
35341 : : }
35342 : 425898 : break;
35343 : : }
35344 : : default:;
35345 : : }
35346 : : }
35347 : : break;
35348 : 425898 : default:;
35349 : : }
35350 : 425898 : switch (TREE_CODE (_p1))
35351 : : {
35352 : 85980 : case SSA_NAME:
35353 : 85980 : if (gimple *_d2 = get_def (valueize, _p1))
35354 : : {
35355 : 83359 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35356 : 60769 : switch (gimple_assign_rhs_code (_a2))
35357 : : {
35358 : 23900 : CASE_CONVERT:
35359 : 23900 : {
35360 : 23900 : tree _q40 = gimple_assign_rhs1 (_a2);
35361 : 23900 : _q40 = do_valueize (valueize, _q40);
35362 : 23900 : switch (TREE_CODE (_q40))
35363 : : {
35364 : 23900 : case SSA_NAME:
35365 : 23900 : if (gimple *_d3 = get_def (valueize, _q40))
35366 : : {
35367 : 22204 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35368 : 7802 : switch (gimple_assign_rhs_code (_a3))
35369 : : {
35370 : 310 : case EQ_EXPR:
35371 : 310 : {
35372 : 310 : tree _q50 = gimple_assign_rhs1 (_a3);
35373 : 310 : _q50 = do_valueize (valueize, _q50);
35374 : 310 : tree _q51 = gimple_assign_rhs2 (_a3);
35375 : 310 : _q51 = do_valueize (valueize, _q51);
35376 : 310 : if (tree_swap_operands_p (_q50, _q51))
35377 : 24 : std::swap (_q50, _q51);
35378 : 310 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
35379 : : {
35380 : 2 : switch (TREE_CODE (_q51))
35381 : : {
35382 : 2 : case INTEGER_CST:
35383 : 2 : {
35384 : 2 : {
35385 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q51 };
35386 : 2 : if (gimple_simplify_588 (res_op, seq, valueize, type, captures))
35387 : 2 : return true;
35388 : : }
35389 : 0 : break;
35390 : : }
35391 : : default:;
35392 : : }
35393 : : }
35394 : 9019392 : break;
35395 : : }
35396 : : default:;
35397 : : }
35398 : : }
35399 : : break;
35400 : : default:;
35401 : : }
35402 : : break;
35403 : : }
35404 : : default:;
35405 : : }
35406 : : }
35407 : : break;
35408 : : default:;
35409 : : }
35410 : : break;
35411 : : }
35412 : : default:;
35413 : : }
35414 : : }
35415 : : break;
35416 : 9019392 : default:;
35417 : : }
35418 : 9019392 : switch (TREE_CODE (_p1))
35419 : : {
35420 : 3214985 : case SSA_NAME:
35421 : 3214985 : if (gimple *_d1 = get_def (valueize, _p1))
35422 : : {
35423 : 2549386 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
35424 : 2456910 : switch (gimple_assign_rhs_code (_a1))
35425 : : {
35426 : 104244 : CASE_CONVERT:
35427 : 104244 : {
35428 : 104244 : tree _q30 = gimple_assign_rhs1 (_a1);
35429 : 104244 : _q30 = do_valueize (valueize, _q30);
35430 : 104244 : switch (TREE_CODE (_q30))
35431 : : {
35432 : 104212 : case SSA_NAME:
35433 : 104212 : if (gimple *_d2 = get_def (valueize, _q30))
35434 : : {
35435 : 101366 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35436 : 92785 : switch (gimple_assign_rhs_code (_a2))
35437 : : {
35438 : 103 : case LE_EXPR:
35439 : 103 : {
35440 : 103 : tree _q40 = gimple_assign_rhs1 (_a2);
35441 : 103 : _q40 = do_valueize (valueize, _q40);
35442 : 103 : tree _q41 = gimple_assign_rhs2 (_a2);
35443 : 103 : _q41 = do_valueize (valueize, _q41);
35444 : 103 : if (integer_onep (_q41))
35445 : : {
35446 : 0 : {
35447 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _p0 };
35448 : 0 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
35449 : 0 : return true;
35450 : : }
35451 : : }
35452 : : break;
35453 : : }
35454 : 2237 : case EQ_EXPR:
35455 : 2237 : {
35456 : 2237 : tree _q40 = gimple_assign_rhs1 (_a2);
35457 : 2237 : _q40 = do_valueize (valueize, _q40);
35458 : 2237 : tree _q41 = gimple_assign_rhs2 (_a2);
35459 : 2237 : _q41 = do_valueize (valueize, _q41);
35460 : 2237 : if (tree_swap_operands_p (_q40, _q41))
35461 : 24 : std::swap (_q40, _q41);
35462 : 2237 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
35463 : : {
35464 : 47 : switch (TREE_CODE (_q41))
35465 : : {
35466 : 47 : case INTEGER_CST:
35467 : 47 : {
35468 : 47 : {
35469 : 47 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q41 };
35470 : 47 : if (gimple_simplify_588 (res_op, seq, valueize, type, captures))
35471 : 47 : return true;
35472 : : }
35473 : 0 : break;
35474 : : }
35475 : : default:;
35476 : : }
35477 : : }
35478 : 9019345 : break;
35479 : : }
35480 : : default:;
35481 : : }
35482 : : }
35483 : : break;
35484 : : default:;
35485 : : }
35486 : : break;
35487 : : }
35488 : 261754 : case LE_EXPR:
35489 : 261754 : {
35490 : 261754 : tree _q30 = gimple_assign_rhs1 (_a1);
35491 : 261754 : _q30 = do_valueize (valueize, _q30);
35492 : 261754 : tree _q31 = gimple_assign_rhs2 (_a1);
35493 : 261754 : _q31 = do_valueize (valueize, _q31);
35494 : 261754 : if (integer_onep (_q31))
35495 : : {
35496 : 1522 : {
35497 : 1522 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
35498 : 1522 : if (gimple_simplify_584 (res_op, seq, valueize, type, captures))
35499 : 0 : return true;
35500 : : }
35501 : : }
35502 : : break;
35503 : : }
35504 : : default:;
35505 : : }
35506 : : }
35507 : : break;
35508 : 9019345 : default:;
35509 : : }
35510 : 9019345 : switch (TREE_CODE (_p0))
35511 : : {
35512 : 8924577 : case SSA_NAME:
35513 : 8924577 : if (gimple *_d1 = get_def (valueize, _p0))
35514 : : {
35515 : 6134083 : if (gassign *_a1 = dyn_cast <gassign *> (_d1))
35516 : 6666279 : switch (gimple_assign_rhs_code (_a1))
35517 : : {
35518 : 292129 : case NE_EXPR:
35519 : 292129 : {
35520 : 292129 : tree _q20 = gimple_assign_rhs1 (_a1);
35521 : 292129 : _q20 = do_valueize (valueize, _q20);
35522 : 292129 : tree _q21 = gimple_assign_rhs2 (_a1);
35523 : 292129 : _q21 = do_valueize (valueize, _q21);
35524 : 292129 : if (tree_swap_operands_p (_q20, _q21))
35525 : 840 : std::swap (_q20, _q21);
35526 : 292129 : switch (TREE_CODE (_p1))
35527 : : {
35528 : 292001 : case SSA_NAME:
35529 : 292001 : if (gimple *_d2 = get_def (valueize, _p1))
35530 : : {
35531 : 288922 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35532 : 283783 : switch (gimple_assign_rhs_code (_a2))
35533 : : {
35534 : 169337 : case NE_EXPR:
35535 : 169337 : {
35536 : 169337 : tree _q50 = gimple_assign_rhs1 (_a2);
35537 : 169337 : _q50 = do_valueize (valueize, _q50);
35538 : 169337 : tree _q51 = gimple_assign_rhs2 (_a2);
35539 : 169337 : _q51 = do_valueize (valueize, _q51);
35540 : 169337 : if (tree_swap_operands_p (_q50, _q51))
35541 : 719 : std::swap (_q50, _q51);
35542 : 169337 : switch (TREE_CODE (_q50))
35543 : : {
35544 : 169337 : case SSA_NAME:
35545 : 169337 : if (gimple *_d3 = get_def (valueize, _q50))
35546 : : {
35547 : 154053 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35548 : 142192 : switch (gimple_assign_rhs_code (_a3))
35549 : : {
35550 : 904 : case BIT_IOR_EXPR:
35551 : 904 : {
35552 : 904 : tree _q60 = gimple_assign_rhs1 (_a3);
35553 : 904 : _q60 = do_valueize (valueize, _q60);
35554 : 904 : tree _q61 = gimple_assign_rhs2 (_a3);
35555 : 904 : _q61 = do_valueize (valueize, _q61);
35556 : 904 : if (tree_swap_operands_p (_q60, _q61))
35557 : 14 : std::swap (_q60, _q61);
35558 : 904 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
35559 : : {
35560 : 10 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
35561 : : {
35562 : 2 : if (integer_zerop (_q51))
35563 : : {
35564 : 2 : {
35565 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
35566 : 2 : if (gimple_simplify_589 (res_op, seq, valueize, type, captures))
35567 : 2 : return true;
35568 : : }
35569 : : }
35570 : : }
35571 : : }
35572 : 902 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
35573 : : {
35574 : 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
35575 : : {
35576 : 0 : if (integer_zerop (_q51))
35577 : : {
35578 : 0 : {
35579 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
35580 : 0 : if (gimple_simplify_589 (res_op, seq, valueize, type, captures))
35581 : 0 : return true;
35582 : : }
35583 : : }
35584 : : }
35585 : : }
35586 : 292127 : break;
35587 : : }
35588 : : default:;
35589 : : }
35590 : : }
35591 : : break;
35592 : : default:;
35593 : : }
35594 : 292127 : break;
35595 : : }
35596 : : default:;
35597 : : }
35598 : : }
35599 : : break;
35600 : 292127 : default:;
35601 : : }
35602 : 292127 : switch (TREE_CODE (_q20))
35603 : : {
35604 : 292086 : case SSA_NAME:
35605 : 292086 : if (gimple *_d2 = get_def (valueize, _q20))
35606 : : {
35607 : 255826 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35608 : 240821 : switch (gimple_assign_rhs_code (_a2))
35609 : : {
35610 : 2103 : case BIT_IOR_EXPR:
35611 : 2103 : {
35612 : 2103 : tree _q30 = gimple_assign_rhs1 (_a2);
35613 : 2103 : _q30 = do_valueize (valueize, _q30);
35614 : 2103 : tree _q31 = gimple_assign_rhs2 (_a2);
35615 : 2103 : _q31 = do_valueize (valueize, _q31);
35616 : 2103 : if (tree_swap_operands_p (_q30, _q31))
35617 : 31 : std::swap (_q30, _q31);
35618 : 2103 : if (integer_zerop (_q21))
35619 : : {
35620 : 1885 : switch (TREE_CODE (_p1))
35621 : : {
35622 : 1885 : case SSA_NAME:
35623 : 1885 : if (gimple *_d3 = get_def (valueize, _p1))
35624 : : {
35625 : 1885 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35626 : 1885 : switch (gimple_assign_rhs_code (_a3))
35627 : : {
35628 : 1296 : case NE_EXPR:
35629 : 1296 : {
35630 : 1296 : tree _q70 = gimple_assign_rhs1 (_a3);
35631 : 1296 : _q70 = do_valueize (valueize, _q70);
35632 : 1296 : tree _q71 = gimple_assign_rhs2 (_a3);
35633 : 1296 : _q71 = do_valueize (valueize, _q71);
35634 : 1296 : if (tree_swap_operands_p (_q70, _q71))
35635 : 0 : std::swap (_q70, _q71);
35636 : 1296 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
35637 : : {
35638 : 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
35639 : : {
35640 : 0 : {
35641 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
35642 : 0 : if (gimple_simplify_590 (res_op, seq, valueize, type, captures))
35643 : 0 : return true;
35644 : : }
35645 : : }
35646 : : }
35647 : 1296 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
35648 : : {
35649 : 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
35650 : : {
35651 : 0 : {
35652 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
35653 : 0 : if (gimple_simplify_590 (res_op, seq, valueize, type, captures))
35654 : 0 : return true;
35655 : : }
35656 : : }
35657 : : }
35658 : 292127 : break;
35659 : : }
35660 : : default:;
35661 : : }
35662 : : }
35663 : : break;
35664 : : default:;
35665 : : }
35666 : : }
35667 : 292127 : break;
35668 : : }
35669 : : default:;
35670 : : }
35671 : : }
35672 : : break;
35673 : 292127 : default:;
35674 : : }
35675 : 292127 : switch (TREE_CODE (_p1))
35676 : : {
35677 : 291999 : case SSA_NAME:
35678 : 291999 : if (gimple *_d2 = get_def (valueize, _p1))
35679 : : {
35680 : 288920 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35681 : 283781 : switch (gimple_assign_rhs_code (_a2))
35682 : : {
35683 : 65073 : case EQ_EXPR:
35684 : 65073 : {
35685 : 65073 : tree _q50 = gimple_assign_rhs1 (_a2);
35686 : 65073 : _q50 = do_valueize (valueize, _q50);
35687 : 65073 : tree _q51 = gimple_assign_rhs2 (_a2);
35688 : 65073 : _q51 = do_valueize (valueize, _q51);
35689 : 65073 : if (tree_swap_operands_p (_q50, _q51))
35690 : 382 : std::swap (_q50, _q51);
35691 : 65073 : switch (TREE_CODE (_q50))
35692 : : {
35693 : 65073 : case SSA_NAME:
35694 : 65073 : if (gimple *_d3 = get_def (valueize, _q50))
35695 : : {
35696 : 62259 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35697 : 61523 : switch (gimple_assign_rhs_code (_a3))
35698 : : {
35699 : 2913 : case BIT_IOR_EXPR:
35700 : 2913 : {
35701 : 2913 : tree _q60 = gimple_assign_rhs1 (_a3);
35702 : 2913 : _q60 = do_valueize (valueize, _q60);
35703 : 2913 : tree _q61 = gimple_assign_rhs2 (_a3);
35704 : 2913 : _q61 = do_valueize (valueize, _q61);
35705 : 2913 : if (tree_swap_operands_p (_q60, _q61))
35706 : 6 : std::swap (_q60, _q61);
35707 : 2913 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
35708 : : {
35709 : 1 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
35710 : : {
35711 : 1 : if (integer_zerop (_q51))
35712 : : {
35713 : 1 : {
35714 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
35715 : 1 : if (gimple_simplify_591 (res_op, seq, valueize, type, captures))
35716 : 1 : return true;
35717 : : }
35718 : : }
35719 : : }
35720 : : }
35721 : 2912 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
35722 : : {
35723 : 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
35724 : : {
35725 : 0 : if (integer_zerop (_q51))
35726 : : {
35727 : 0 : {
35728 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
35729 : 0 : if (gimple_simplify_591 (res_op, seq, valueize, type, captures))
35730 : 0 : return true;
35731 : : }
35732 : : }
35733 : : }
35734 : : }
35735 : 9534757 : break;
35736 : : }
35737 : : default:;
35738 : : }
35739 : : }
35740 : : break;
35741 : : default:;
35742 : : }
35743 : 9534757 : break;
35744 : : }
35745 : 376 : case ORDERED_EXPR:
35746 : 376 : {
35747 : 376 : tree _q50 = gimple_assign_rhs1 (_a2);
35748 : 376 : _q50 = do_valueize (valueize, _q50);
35749 : 376 : tree _q51 = gimple_assign_rhs2 (_a2);
35750 : 376 : _q51 = do_valueize (valueize, _q51);
35751 : 376 : if (tree_swap_operands_p (_q50, _q51))
35752 : 6 : std::swap (_q50, _q51);
35753 : 376 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
35754 : : {
35755 : 60 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
35756 : : {
35757 : 60 : {
35758 : 60 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
35759 : 60 : if (gimple_simplify_592 (res_op, seq, valueize, type, captures))
35760 : 60 : return true;
35761 : : }
35762 : : }
35763 : : }
35764 : 9534757 : break;
35765 : : }
35766 : : default:;
35767 : : }
35768 : : }
35769 : : break;
35770 : : default:;
35771 : : }
35772 : 9534757 : break;
35773 : : }
35774 : 451676 : case EQ_EXPR:
35775 : 451676 : {
35776 : 451676 : tree _q20 = gimple_assign_rhs1 (_a1);
35777 : 451676 : _q20 = do_valueize (valueize, _q20);
35778 : 451676 : tree _q21 = gimple_assign_rhs2 (_a1);
35779 : 451676 : _q21 = do_valueize (valueize, _q21);
35780 : 451676 : if (tree_swap_operands_p (_q20, _q21))
35781 : 7986 : std::swap (_q20, _q21);
35782 : 451676 : switch (TREE_CODE (_p1))
35783 : : {
35784 : 451596 : case SSA_NAME:
35785 : 451596 : if (gimple *_d2 = get_def (valueize, _p1))
35786 : : {
35787 : 449328 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35788 : 445374 : switch (gimple_assign_rhs_code (_a2))
35789 : : {
35790 : 302642 : case EQ_EXPR:
35791 : 302642 : {
35792 : 302642 : tree _q50 = gimple_assign_rhs1 (_a2);
35793 : 302642 : _q50 = do_valueize (valueize, _q50);
35794 : 302642 : tree _q51 = gimple_assign_rhs2 (_a2);
35795 : 302642 : _q51 = do_valueize (valueize, _q51);
35796 : 302642 : if (tree_swap_operands_p (_q50, _q51))
35797 : 2939 : std::swap (_q50, _q51);
35798 : 302642 : switch (TREE_CODE (_q50))
35799 : : {
35800 : 302640 : case SSA_NAME:
35801 : 302640 : if (gimple *_d3 = get_def (valueize, _q50))
35802 : : {
35803 : 291017 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35804 : 449941 : switch (gimple_assign_rhs_code (_a3))
35805 : : {
35806 : 6831 : case BIT_IOR_EXPR:
35807 : 6831 : {
35808 : 6831 : tree _q60 = gimple_assign_rhs1 (_a3);
35809 : 6831 : _q60 = do_valueize (valueize, _q60);
35810 : 6831 : tree _q61 = gimple_assign_rhs2 (_a3);
35811 : 6831 : _q61 = do_valueize (valueize, _q61);
35812 : 6831 : if (tree_swap_operands_p (_q60, _q61))
35813 : 51 : std::swap (_q60, _q61);
35814 : 6831 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
35815 : : {
35816 : 26 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
35817 : : {
35818 : 26 : if (integer_zerop (_q51))
35819 : : {
35820 : 26 : {
35821 : 26 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
35822 : 26 : if (gimple_simplify_593 (res_op, seq, valueize, type, captures))
35823 : 26 : return true;
35824 : : }
35825 : : }
35826 : : }
35827 : : }
35828 : 6805 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
35829 : : {
35830 : 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
35831 : : {
35832 : 0 : if (integer_zerop (_q51))
35833 : : {
35834 : 0 : {
35835 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q51 };
35836 : 0 : if (gimple_simplify_593 (res_op, seq, valueize, type, captures))
35837 : 0 : return true;
35838 : : }
35839 : : }
35840 : : }
35841 : : }
35842 : 451650 : break;
35843 : : }
35844 : : default:;
35845 : : }
35846 : : }
35847 : : break;
35848 : : default:;
35849 : : }
35850 : 451650 : break;
35851 : : }
35852 : : default:;
35853 : : }
35854 : : }
35855 : : break;
35856 : 451650 : default:;
35857 : : }
35858 : 451650 : switch (TREE_CODE (_q20))
35859 : : {
35860 : 451650 : case SSA_NAME:
35861 : 451650 : if (gimple *_d2 = get_def (valueize, _q20))
35862 : : {
35863 : 344202 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35864 : 390737 : switch (gimple_assign_rhs_code (_a2))
35865 : : {
35866 : 5417 : case BIT_IOR_EXPR:
35867 : 5417 : {
35868 : 5417 : tree _q30 = gimple_assign_rhs1 (_a2);
35869 : 5417 : _q30 = do_valueize (valueize, _q30);
35870 : 5417 : tree _q31 = gimple_assign_rhs2 (_a2);
35871 : 5417 : _q31 = do_valueize (valueize, _q31);
35872 : 5417 : if (tree_swap_operands_p (_q30, _q31))
35873 : 80 : std::swap (_q30, _q31);
35874 : 5417 : if (integer_zerop (_q21))
35875 : : {
35876 : 5042 : switch (TREE_CODE (_p1))
35877 : : {
35878 : 5042 : case SSA_NAME:
35879 : 5042 : if (gimple *_d3 = get_def (valueize, _p1))
35880 : : {
35881 : 5042 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
35882 : 5042 : switch (gimple_assign_rhs_code (_a3))
35883 : : {
35884 : 4209 : case EQ_EXPR:
35885 : 4209 : {
35886 : 4209 : tree _q70 = gimple_assign_rhs1 (_a3);
35887 : 4209 : _q70 = do_valueize (valueize, _q70);
35888 : 4209 : tree _q71 = gimple_assign_rhs2 (_a3);
35889 : 4209 : _q71 = do_valueize (valueize, _q71);
35890 : 4209 : if (tree_swap_operands_p (_q70, _q71))
35891 : 0 : std::swap (_q70, _q71);
35892 : 4209 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
35893 : : {
35894 : 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
35895 : : {
35896 : 0 : {
35897 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q20, _q21 };
35898 : 0 : if (gimple_simplify_594 (res_op, seq, valueize, type, captures))
35899 : 0 : return true;
35900 : : }
35901 : : }
35902 : : }
35903 : 4209 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
35904 : : {
35905 : 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
35906 : : {
35907 : 0 : {
35908 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q20, _q21 };
35909 : 0 : if (gimple_simplify_594 (res_op, seq, valueize, type, captures))
35910 : 0 : return true;
35911 : : }
35912 : : }
35913 : : }
35914 : 9534757 : break;
35915 : : }
35916 : 482 : case NE_EXPR:
35917 : 482 : {
35918 : 482 : tree _q70 = gimple_assign_rhs1 (_a3);
35919 : 482 : _q70 = do_valueize (valueize, _q70);
35920 : 482 : tree _q71 = gimple_assign_rhs2 (_a3);
35921 : 482 : _q71 = do_valueize (valueize, _q71);
35922 : 482 : if (tree_swap_operands_p (_q70, _q71))
35923 : 0 : std::swap (_q70, _q71);
35924 : 482 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
35925 : : {
35926 : 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
35927 : : {
35928 : 0 : {
35929 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
35930 : 0 : if (gimple_simplify_595 (res_op, seq, valueize, type, captures))
35931 : 0 : return true;
35932 : : }
35933 : : }
35934 : : }
35935 : 482 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
35936 : : {
35937 : 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
35938 : : {
35939 : 0 : {
35940 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
35941 : 0 : if (gimple_simplify_595 (res_op, seq, valueize, type, captures))
35942 : 0 : return true;
35943 : : }
35944 : : }
35945 : : }
35946 : 9534757 : break;
35947 : : }
35948 : : default:;
35949 : : }
35950 : : }
35951 : : break;
35952 : : default:;
35953 : : }
35954 : : }
35955 : 9534757 : break;
35956 : : }
35957 : : default:;
35958 : : }
35959 : : }
35960 : : break;
35961 : : default:;
35962 : : }
35963 : 9534757 : break;
35964 : : }
35965 : 996 : case ORDERED_EXPR:
35966 : 996 : {
35967 : 996 : tree _q20 = gimple_assign_rhs1 (_a1);
35968 : 996 : _q20 = do_valueize (valueize, _q20);
35969 : 996 : tree _q21 = gimple_assign_rhs2 (_a1);
35970 : 996 : _q21 = do_valueize (valueize, _q21);
35971 : 996 : if (tree_swap_operands_p (_q20, _q21))
35972 : 0 : std::swap (_q20, _q21);
35973 : 996 : switch (TREE_CODE (_p1))
35974 : : {
35975 : 996 : case SSA_NAME:
35976 : 996 : if (gimple *_d2 = get_def (valueize, _p1))
35977 : : {
35978 : 995 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
35979 : 995 : switch (gimple_assign_rhs_code (_a2))
35980 : : {
35981 : 92 : case NE_EXPR:
35982 : 92 : {
35983 : 92 : tree _q50 = gimple_assign_rhs1 (_a2);
35984 : 92 : _q50 = do_valueize (valueize, _q50);
35985 : 92 : tree _q51 = gimple_assign_rhs2 (_a2);
35986 : 92 : _q51 = do_valueize (valueize, _q51);
35987 : 92 : if (tree_swap_operands_p (_q50, _q51))
35988 : 6 : std::swap (_q50, _q51);
35989 : 92 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
35990 : : {
35991 : 74 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
35992 : : {
35993 : 74 : {
35994 : 74 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
35995 : 74 : if (gimple_simplify_592 (res_op, seq, valueize, type, captures))
35996 : 74 : return true;
35997 : : }
35998 : : }
35999 : : }
36000 : 922 : break;
36001 : : }
36002 : : default:;
36003 : : }
36004 : : }
36005 : : break;
36006 : 922 : default:;
36007 : : }
36008 : 922 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
36009 : : {
36010 : 444 : switch (TREE_CODE (_p1))
36011 : : {
36012 : 444 : case SSA_NAME:
36013 : 444 : if (gimple *_d2 = get_def (valueize, _p1))
36014 : : {
36015 : 444 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36016 : 444 : switch (gimple_assign_rhs_code (_a2))
36017 : : {
36018 : 195 : case ORDERED_EXPR:
36019 : 195 : {
36020 : 195 : tree _q50 = gimple_assign_rhs1 (_a2);
36021 : 195 : _q50 = do_valueize (valueize, _q50);
36022 : 195 : tree _q51 = gimple_assign_rhs2 (_a2);
36023 : 195 : _q51 = do_valueize (valueize, _q51);
36024 : 195 : if (tree_swap_operands_p (_q50, _q51))
36025 : 0 : std::swap (_q50, _q51);
36026 : 195 : if ((_q51 == _q50 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q50, 0) && types_match (_q51, _q50)))
36027 : : {
36028 : 169 : {
36029 : 169 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
36030 : 169 : if (types_match (captures[0], captures[1])
36031 : : )
36032 : : {
36033 : 156 : gimple_seq *lseq = seq;
36034 : 156 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2758;
36035 : 156 : {
36036 : 156 : res_op->set_op (ORDERED_EXPR, type, 2);
36037 : 156 : res_op->ops[0] = captures[0];
36038 : 156 : res_op->ops[1] = captures[1];
36039 : 156 : res_op->resimplify (lseq, valueize);
36040 : 156 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1213, __FILE__, __LINE__, true);
36041 : 156 : return true;
36042 : : }
36043 : 0 : next_after_fail2758:;
36044 : : }
36045 : : }
36046 : : }
36047 : 39 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
36048 : : {
36049 : 0 : {
36050 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q51 };
36051 : 0 : if (gimple_simplify_596 (res_op, seq, valueize, type, captures))
36052 : 0 : return true;
36053 : : }
36054 : : }
36055 : 39 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
36056 : : {
36057 : 0 : {
36058 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q50 };
36059 : 0 : if (gimple_simplify_596 (res_op, seq, valueize, type, captures))
36060 : 0 : return true;
36061 : : }
36062 : : }
36063 : 766 : break;
36064 : : }
36065 : : default:;
36066 : : }
36067 : : }
36068 : : break;
36069 : : default:;
36070 : : }
36071 : : }
36072 : 766 : switch (TREE_CODE (_p1))
36073 : : {
36074 : 766 : case SSA_NAME:
36075 : 766 : if (gimple *_d2 = get_def (valueize, _p1))
36076 : : {
36077 : 765 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36078 : 765 : switch (gimple_assign_rhs_code (_a2))
36079 : : {
36080 : 41 : case ORDERED_EXPR:
36081 : 41 : {
36082 : 41 : tree _q50 = gimple_assign_rhs1 (_a2);
36083 : 41 : _q50 = do_valueize (valueize, _q50);
36084 : 41 : tree _q51 = gimple_assign_rhs2 (_a2);
36085 : 41 : _q51 = do_valueize (valueize, _q51);
36086 : 41 : if (tree_swap_operands_p (_q50, _q51))
36087 : 0 : std::swap (_q50, _q51);
36088 : 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
36089 : : {
36090 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
36091 : : {
36092 : 0 : {
36093 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
36094 : 0 : if (gimple_simplify_597 (res_op, seq, valueize, type, captures))
36095 : 0 : return true;
36096 : : }
36097 : : }
36098 : : }
36099 : 41 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
36100 : : {
36101 : 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
36102 : : {
36103 : 2 : {
36104 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _p0, _q20 };
36105 : 2 : if (gimple_simplify_597 (res_op, seq, valueize, type, captures))
36106 : 2 : return true;
36107 : : }
36108 : : }
36109 : : }
36110 : 9534757 : break;
36111 : : }
36112 : : default:;
36113 : : }
36114 : : }
36115 : : break;
36116 : : default:;
36117 : : }
36118 : 9534757 : break;
36119 : : }
36120 : 19080 : case MINUS_EXPR:
36121 : 19080 : {
36122 : 19080 : tree _q20 = gimple_assign_rhs1 (_a1);
36123 : 19080 : _q20 = do_valueize (valueize, _q20);
36124 : 19080 : tree _q21 = gimple_assign_rhs2 (_a1);
36125 : 19080 : _q21 = do_valueize (valueize, _q21);
36126 : 19080 : switch (TREE_CODE (_q20))
36127 : : {
36128 : 17215 : case SSA_NAME:
36129 : 17215 : if (gimple *_d2 = get_def (valueize, _q20))
36130 : : {
36131 : 16917 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36132 : 15216 : switch (gimple_assign_rhs_code (_a2))
36133 : : {
36134 : 3479 : CASE_CONVERT:
36135 : 3479 : {
36136 : 3479 : tree _q30 = gimple_assign_rhs1 (_a2);
36137 : 3479 : _q30 = do_valueize (valueize, _q30);
36138 : 3479 : switch (TREE_CODE (_q21))
36139 : : {
36140 : 3474 : case SSA_NAME:
36141 : 3474 : if (gimple *_d3 = get_def (valueize, _q21))
36142 : : {
36143 : 3449 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
36144 : 4522 : switch (gimple_assign_rhs_code (_a3))
36145 : : {
36146 : 1694 : CASE_CONVERT:
36147 : 1694 : {
36148 : 1694 : tree _q50 = gimple_assign_rhs1 (_a3);
36149 : 1694 : _q50 = do_valueize (valueize, _q50);
36150 : 1694 : switch (TREE_CODE (_p1))
36151 : : {
36152 : 1460 : case INTEGER_CST:
36153 : 1460 : {
36154 : 1460 : {
36155 : 1460 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1 };
36156 : 1460 : if (gimple_simplify_598 (res_op, seq, valueize, type, captures, MINUS_EXPR))
36157 : 184 : return true;
36158 : : }
36159 : 1276 : break;
36160 : : }
36161 : : default:;
36162 : : }
36163 : : break;
36164 : : }
36165 : : default:;
36166 : : }
36167 : : }
36168 : : break;
36169 : : default:;
36170 : : }
36171 : : break;
36172 : : }
36173 : : default:;
36174 : : }
36175 : : }
36176 : : break;
36177 : : default:;
36178 : : }
36179 : : break;
36180 : : }
36181 : 390861 : case PLUS_EXPR:
36182 : 390861 : {
36183 : 390861 : tree _q20 = gimple_assign_rhs1 (_a1);
36184 : 390861 : _q20 = do_valueize (valueize, _q20);
36185 : 390861 : tree _q21 = gimple_assign_rhs2 (_a1);
36186 : 390861 : _q21 = do_valueize (valueize, _q21);
36187 : 390861 : if (tree_swap_operands_p (_q20, _q21))
36188 : 12479 : std::swap (_q20, _q21);
36189 : 390861 : switch (TREE_CODE (_q20))
36190 : : {
36191 : 390861 : case SSA_NAME:
36192 : 390861 : if (gimple *_d2 = get_def (valueize, _q20))
36193 : : {
36194 : 372244 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36195 : 336748 : switch (gimple_assign_rhs_code (_a2))
36196 : : {
36197 : 65456 : CASE_CONVERT:
36198 : 65456 : {
36199 : 65456 : tree _q30 = gimple_assign_rhs1 (_a2);
36200 : 65456 : _q30 = do_valueize (valueize, _q30);
36201 : 65456 : switch (TREE_CODE (_q21))
36202 : : {
36203 : 36689 : case SSA_NAME:
36204 : 36689 : if (gimple *_d3 = get_def (valueize, _q21))
36205 : : {
36206 : 36551 : if (gassign *_a3 = dyn_cast <gassign *> (_d3))
36207 : 33114 : switch (gimple_assign_rhs_code (_a3))
36208 : : {
36209 : 30755 : CASE_CONVERT:
36210 : 30755 : {
36211 : 30755 : tree _q50 = gimple_assign_rhs1 (_a3);
36212 : 30755 : _q50 = do_valueize (valueize, _q50);
36213 : 30755 : switch (TREE_CODE (_p1))
36214 : : {
36215 : 30269 : case INTEGER_CST:
36216 : 30269 : {
36217 : 30269 : {
36218 : 30269 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1 };
36219 : 30269 : if (gimple_simplify_598 (res_op, seq, valueize, type, captures, PLUS_EXPR))
36220 : 183 : return true;
36221 : : }
36222 : 30086 : break;
36223 : : }
36224 : : default:;
36225 : : }
36226 : : break;
36227 : : }
36228 : : default:;
36229 : : }
36230 : : }
36231 : : break;
36232 : : default:;
36233 : : }
36234 : : break;
36235 : : }
36236 : : default:;
36237 : : }
36238 : : }
36239 : : break;
36240 : : default:;
36241 : : }
36242 : 9534757 : break;
36243 : : }
36244 : 50730 : case LT_EXPR:
36245 : 50730 : {
36246 : 50730 : tree _q20 = gimple_assign_rhs1 (_a1);
36247 : 50730 : _q20 = do_valueize (valueize, _q20);
36248 : 50730 : tree _q21 = gimple_assign_rhs2 (_a1);
36249 : 50730 : _q21 = do_valueize (valueize, _q21);
36250 : 50730 : switch (TREE_CODE (_p1))
36251 : : {
36252 : 50730 : case SSA_NAME:
36253 : 50730 : if (gimple *_d2 = get_def (valueize, _p1))
36254 : : {
36255 : 50374 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36256 : 51138 : switch (gimple_assign_rhs_code (_a2))
36257 : : {
36258 : 4427 : case LT_EXPR:
36259 : 4427 : {
36260 : 4427 : tree _q50 = gimple_assign_rhs1 (_a2);
36261 : 4427 : _q50 = do_valueize (valueize, _q50);
36262 : 4427 : tree _q51 = gimple_assign_rhs2 (_a2);
36263 : 4427 : _q51 = do_valueize (valueize, _q51);
36264 : 4427 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
36265 : : {
36266 : 164 : {
36267 : 164 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
36268 : 164 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR))
36269 : 14 : return true;
36270 : : }
36271 : : }
36272 : 4413 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
36273 : : {
36274 : 656 : {
36275 : 656 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
36276 : 656 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR))
36277 : 0 : return true;
36278 : : }
36279 : : }
36280 : : break;
36281 : : }
36282 : 1475 : case GT_EXPR:
36283 : 1475 : {
36284 : 1475 : tree _q50 = gimple_assign_rhs1 (_a2);
36285 : 1475 : _q50 = do_valueize (valueize, _q50);
36286 : 1475 : tree _q51 = gimple_assign_rhs2 (_a2);
36287 : 1475 : _q51 = do_valueize (valueize, _q51);
36288 : 1475 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
36289 : : {
36290 : 1 : {
36291 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
36292 : 1 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR))
36293 : 0 : return true;
36294 : : }
36295 : : }
36296 : 1475 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
36297 : : {
36298 : 36 : {
36299 : 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
36300 : 36 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR))
36301 : 9 : return true;
36302 : : }
36303 : : }
36304 : : break;
36305 : : }
36306 : : default:;
36307 : : }
36308 : : }
36309 : : break;
36310 : : default:;
36311 : : }
36312 : : break;
36313 : : }
36314 : 109052 : case LE_EXPR:
36315 : 109052 : {
36316 : 109052 : tree _q20 = gimple_assign_rhs1 (_a1);
36317 : 109052 : _q20 = do_valueize (valueize, _q20);
36318 : 109052 : tree _q21 = gimple_assign_rhs2 (_a1);
36319 : 109052 : _q21 = do_valueize (valueize, _q21);
36320 : 109052 : switch (TREE_CODE (_p1))
36321 : : {
36322 : 109052 : case SSA_NAME:
36323 : 109052 : if (gimple *_d2 = get_def (valueize, _p1))
36324 : : {
36325 : 108816 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36326 : 107927 : switch (gimple_assign_rhs_code (_a2))
36327 : : {
36328 : 15639 : case LE_EXPR:
36329 : 15639 : {
36330 : 15639 : tree _q50 = gimple_assign_rhs1 (_a2);
36331 : 15639 : _q50 = do_valueize (valueize, _q50);
36332 : 15639 : tree _q51 = gimple_assign_rhs2 (_a2);
36333 : 15639 : _q51 = do_valueize (valueize, _q51);
36334 : 15639 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
36335 : : {
36336 : 6193 : {
36337 : 6193 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
36338 : 6193 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR))
36339 : 125 : return true;
36340 : : }
36341 : : }
36342 : 15514 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
36343 : : {
36344 : 2093 : {
36345 : 2093 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
36346 : 2093 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR))
36347 : 0 : return true;
36348 : : }
36349 : : }
36350 : : break;
36351 : : }
36352 : 43955 : case GE_EXPR:
36353 : 43955 : {
36354 : 43955 : tree _q50 = gimple_assign_rhs1 (_a2);
36355 : 43955 : _q50 = do_valueize (valueize, _q50);
36356 : 43955 : tree _q51 = gimple_assign_rhs2 (_a2);
36357 : 43955 : _q51 = do_valueize (valueize, _q51);
36358 : 43955 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
36359 : : {
36360 : 3964 : {
36361 : 3964 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
36362 : 3964 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR))
36363 : 0 : return true;
36364 : : }
36365 : : }
36366 : 43955 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
36367 : : {
36368 : 4 : {
36369 : 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
36370 : 4 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR))
36371 : 0 : return true;
36372 : : }
36373 : : }
36374 : : break;
36375 : : }
36376 : : default:;
36377 : : }
36378 : : }
36379 : : break;
36380 : : default:;
36381 : : }
36382 : : break;
36383 : : }
36384 : 129435 : case GT_EXPR:
36385 : 129435 : {
36386 : 129435 : tree _q20 = gimple_assign_rhs1 (_a1);
36387 : 129435 : _q20 = do_valueize (valueize, _q20);
36388 : 129435 : tree _q21 = gimple_assign_rhs2 (_a1);
36389 : 129435 : _q21 = do_valueize (valueize, _q21);
36390 : 129435 : switch (TREE_CODE (_p1))
36391 : : {
36392 : 129435 : case SSA_NAME:
36393 : 129435 : if (gimple *_d2 = get_def (valueize, _p1))
36394 : : {
36395 : 128835 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36396 : 127926 : switch (gimple_assign_rhs_code (_a2))
36397 : : {
36398 : 43668 : case GT_EXPR:
36399 : 43668 : {
36400 : 43668 : tree _q50 = gimple_assign_rhs1 (_a2);
36401 : 43668 : _q50 = do_valueize (valueize, _q50);
36402 : 43668 : tree _q51 = gimple_assign_rhs2 (_a2);
36403 : 43668 : _q51 = do_valueize (valueize, _q51);
36404 : 43668 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
36405 : : {
36406 : 484 : {
36407 : 484 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
36408 : 484 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR))
36409 : 68 : return true;
36410 : : }
36411 : : }
36412 : 43600 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
36413 : : {
36414 : 20736 : {
36415 : 20736 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
36416 : 20736 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR))
36417 : 0 : return true;
36418 : : }
36419 : : }
36420 : : break;
36421 : : }
36422 : 2426 : case LT_EXPR:
36423 : 2426 : {
36424 : 2426 : tree _q50 = gimple_assign_rhs1 (_a2);
36425 : 2426 : _q50 = do_valueize (valueize, _q50);
36426 : 2426 : tree _q51 = gimple_assign_rhs2 (_a2);
36427 : 2426 : _q51 = do_valueize (valueize, _q51);
36428 : 2426 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
36429 : : {
36430 : 264 : {
36431 : 264 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
36432 : 264 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR))
36433 : 240 : return true;
36434 : : }
36435 : : }
36436 : 2186 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
36437 : : {
36438 : 9 : {
36439 : 9 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
36440 : 9 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR))
36441 : 4 : return true;
36442 : : }
36443 : : }
36444 : : break;
36445 : : }
36446 : : default:;
36447 : : }
36448 : : }
36449 : : break;
36450 : : default:;
36451 : : }
36452 : : break;
36453 : : }
36454 : 574670 : case GE_EXPR:
36455 : 574670 : {
36456 : 574670 : tree _q20 = gimple_assign_rhs1 (_a1);
36457 : 574670 : _q20 = do_valueize (valueize, _q20);
36458 : 574670 : tree _q21 = gimple_assign_rhs2 (_a1);
36459 : 574670 : _q21 = do_valueize (valueize, _q21);
36460 : 574670 : switch (TREE_CODE (_p1))
36461 : : {
36462 : 574670 : case SSA_NAME:
36463 : 574670 : if (gimple *_d2 = get_def (valueize, _p1))
36464 : : {
36465 : 572809 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36466 : 571030 : switch (gimple_assign_rhs_code (_a2))
36467 : : {
36468 : 118100 : case GE_EXPR:
36469 : 118100 : {
36470 : 118100 : tree _q50 = gimple_assign_rhs1 (_a2);
36471 : 118100 : _q50 = do_valueize (valueize, _q50);
36472 : 118100 : tree _q51 = gimple_assign_rhs2 (_a2);
36473 : 118100 : _q51 = do_valueize (valueize, _q51);
36474 : 118100 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
36475 : : {
36476 : 40 : {
36477 : 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
36478 : 40 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR))
36479 : 20 : return true;
36480 : : }
36481 : : }
36482 : 118080 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
36483 : : {
36484 : 14372 : {
36485 : 14372 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
36486 : 14372 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR))
36487 : 0 : return true;
36488 : : }
36489 : : }
36490 : : break;
36491 : : }
36492 : 189652 : case LE_EXPR:
36493 : 189652 : {
36494 : 189652 : tree _q50 = gimple_assign_rhs1 (_a2);
36495 : 189652 : _q50 = do_valueize (valueize, _q50);
36496 : 189652 : tree _q51 = gimple_assign_rhs2 (_a2);
36497 : 189652 : _q51 = do_valueize (valueize, _q51);
36498 : 189652 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
36499 : : {
36500 : 199 : {
36501 : 199 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
36502 : 199 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR))
36503 : 26 : return true;
36504 : : }
36505 : : }
36506 : 189626 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
36507 : : {
36508 : 3700 : {
36509 : 3700 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
36510 : 3700 : if (gimple_simplify_185 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR))
36511 : 0 : return true;
36512 : : }
36513 : : }
36514 : : break;
36515 : : }
36516 : : default:;
36517 : : }
36518 : : }
36519 : : break;
36520 : : default:;
36521 : : }
36522 : : break;
36523 : : }
36524 : 45544 : case NEGATE_EXPR:
36525 : 45544 : {
36526 : 45544 : tree _q20 = gimple_assign_rhs1 (_a1);
36527 : 45544 : _q20 = do_valueize (valueize, _q20);
36528 : 45544 : if (integer_onep (_p1))
36529 : : {
36530 : 122 : {
36531 : 122 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
36532 : 122 : if (!TYPE_OVERFLOW_SANITIZED (type)
36533 : : )
36534 : : {
36535 : 122 : gimple_seq *lseq = seq;
36536 : 122 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2759;
36537 : 122 : {
36538 : 122 : res_op->set_op (BIT_AND_EXPR, type, 2);
36539 : 122 : res_op->ops[0] = captures[0];
36540 : 122 : res_op->ops[1] = captures[1];
36541 : 122 : res_op->resimplify (lseq, valueize);
36542 : 122 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1214, __FILE__, __LINE__, true);
36543 : 122 : return true;
36544 : : }
36545 : 0 : next_after_fail2759:;
36546 : : }
36547 : : }
36548 : : }
36549 : : break;
36550 : : }
36551 : 635 : case VEC_PERM_EXPR:
36552 : 635 : {
36553 : 635 : tree _q20 = gimple_assign_rhs1 (_a1);
36554 : 635 : _q20 = do_valueize (valueize, _q20);
36555 : 635 : tree _q21 = gimple_assign_rhs2 (_a1);
36556 : 635 : _q21 = do_valueize (valueize, _q21);
36557 : 635 : tree _q22 = gimple_assign_rhs3 (_a1);
36558 : 635 : _q22 = do_valueize (valueize, _q22);
36559 : 635 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
36560 : : {
36561 : 378 : switch (TREE_CODE (_p1))
36562 : : {
36563 : 378 : case SSA_NAME:
36564 : 378 : if (gimple *_d2 = get_def (valueize, _p1))
36565 : : {
36566 : 300 : if (gassign *_a2 = dyn_cast <gassign *> (_d2))
36567 : 122 : switch (gimple_assign_rhs_code (_a2))
36568 : : {
36569 : 2 : case VEC_PERM_EXPR:
36570 : 2 : {
36571 : 2 : tree _q60 = gimple_assign_rhs1 (_a2);
36572 : 2 : _q60 = do_valueize (valueize, _q60);
36573 : 2 : tree _q61 = gimple_assign_rhs2 (_a2);
36574 : 2 : _q61 = do_valueize (valueize, _q61);
36575 : 2 : tree _q62 = gimple_assign_rhs3 (_a2);
36576 : 2 : _q62 = do_valueize (valueize, _q62);
36577 : 2 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
36578 : : {
36579 : 2 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
36580 : : {
36581 : 2 : {
36582 : 2 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
36583 : 2 : if (VECTOR_INTEGER_TYPE_P (type)
36584 : : )
36585 : : {
36586 : 2 : gimple_seq *lseq = seq;
36587 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2760;
36588 : 2 : {
36589 : 2 : res_op->set_op (VEC_PERM_EXPR, type, 3);
36590 : 2 : {
36591 : 2 : tree _o1[2], _r1;
36592 : 2 : _o1[0] = captures[0];
36593 : 2 : _o1[1] = captures[2];
36594 : 2 : gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
36595 : 2 : tem_op.resimplify (lseq, valueize);
36596 : 2 : _r1 = maybe_push_res_to_seq (&tem_op, lseq);
36597 : 2 : if (!_r1) goto next_after_fail2760;
36598 : 1 : captures[3] = _r1;
36599 : : }
36600 : 1 : res_op->ops[0] = captures[3];
36601 : 1 : res_op->ops[1] = captures[3];
36602 : 1 : res_op->ops[2] = captures[1];
36603 : 1 : res_op->resimplify (lseq, valueize);
36604 : 1 : if (UNLIKELY (debug_dump)) gimple_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
36605 : 1 : return true;
36606 : : }
36607 : : next_after_fail2760:;
36608 : : }
36609 : : }
36610 : : }
36611 : : }
36612 : : break;
36613 : : }
36614 : : default:;
36615 : : }
36616 : : }
36617 : : break;
36618 : : default:;
36619 : : }
36620 : : }
36621 : : break;
36622 : : }
36623 : : default:;
36624 : : }
36625 : 1161842 : else if (gcall *_c1 = dyn_cast <gcall *> (_d1))
36626 : 165181 : switch (gimple_call_combined_fn (_c1))
36627 : : {
36628 : 16 : case CFN_BUILT_IN_POPCOUNT:
36629 : 16 : if (gimple_call_num_args (_c1) == 1)
36630 : : {
36631 : 16 : tree _q20 = gimple_call_arg (_c1, 0);
36632 : 16 : _q20 = do_valueize (valueize, _q20);
36633 : 16 : if (integer_onep (_p1))
36634 : : {
36635 : 0 : {
36636 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
36637 : 0 : if (gimple_simplify_599 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNT, CFN_BUILT_IN_PARITY))
36638 : 0 : return true;
36639 : : }
36640 : : }
36641 : : }
36642 : : break;
36643 : 0 : case CFN_BUILT_IN_POPCOUNTLL:
36644 : 0 : if (gimple_call_num_args (_c1) == 1)
36645 : : {
36646 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
36647 : 0 : _q20 = do_valueize (valueize, _q20);
36648 : 0 : if (integer_onep (_p1))
36649 : : {
36650 : 0 : {
36651 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
36652 : 0 : if (gimple_simplify_599 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTLL, CFN_BUILT_IN_PARITYLL))
36653 : 0 : return true;
36654 : : }
36655 : : }
36656 : : }
36657 : : break;
36658 : 0 : case CFN_POPCOUNT:
36659 : 0 : if (gimple_call_num_args (_c1) == 1)
36660 : : {
36661 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
36662 : 0 : _q20 = do_valueize (valueize, _q20);
36663 : 0 : if (integer_onep (_p1))
36664 : : {
36665 : 0 : {
36666 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
36667 : 0 : if (gimple_simplify_599 (res_op, seq, valueize, type, captures, CFN_POPCOUNT, CFN_PARITY))
36668 : 0 : return true;
36669 : : }
36670 : : }
36671 : : }
36672 : : break;
36673 : 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
36674 : 0 : if (gimple_call_num_args (_c1) == 1)
36675 : : {
36676 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
36677 : 0 : _q20 = do_valueize (valueize, _q20);
36678 : 0 : if (integer_onep (_p1))
36679 : : {
36680 : 0 : {
36681 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
36682 : 0 : if (gimple_simplify_599 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTIMAX, CFN_BUILT_IN_PARITYIMAX))
36683 : 0 : return true;
36684 : : }
36685 : : }
36686 : : }
36687 : : break;
36688 : 0 : case CFN_BUILT_IN_POPCOUNTL:
36689 : 0 : if (gimple_call_num_args (_c1) == 1)
36690 : : {
36691 : 0 : tree _q20 = gimple_call_arg (_c1, 0);
36692 : 0 : _q20 = do_valueize (valueize, _q20);
36693 : 0 : if (integer_onep (_p1))
36694 : : {
36695 : 0 : {
36696 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
36697 : 0 : if (gimple_simplify_599 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTL, CFN_BUILT_IN_PARITYL))
36698 : 0 : return true;
36699 : : }
36700 : : }
36701 : : }
36702 : : break;
36703 : : default:;
36704 : : }
36705 : : }
36706 : : break;
36707 : : default:;
36708 : : }
36709 : : return false;
36710 : : }
36711 : : #pragma GCC diagnostic pop
|