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 "generic-match-auto.h"
8 :
9 : bool
10 1946972 : tree_power_of_two_cand (tree t, tree *res_ops)
11 : {
12 1946972 : const tree type = TREE_TYPE (t);
13 1946972 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 1946972 : if (TREE_SIDE_EFFECTS (t)) return false;
15 1946206 : switch (TREE_CODE (t))
16 : {
17 1607157 : case INTEGER_CST:
18 1607157 : {
19 1607157 : {
20 1607157 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 1607157 : {
22 1607157 : res_ops[0] = captures[0];
23 1607157 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 12, __FILE__, __LINE__, false);
24 : return true;
25 : }
26 : }
27 16 : break;
28 : }
29 16 : case LSHIFT_EXPR:
30 16 : {
31 16 : tree _p0 = TREE_OPERAND (t, 0);
32 16 : tree _p1 = TREE_OPERAND (t, 1);
33 16 : switch (TREE_CODE (_p0))
34 : {
35 16 : case INTEGER_CST:
36 16 : {
37 16 : {
38 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
39 16 : {
40 16 : res_ops[0] = captures[0];
41 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 13, __FILE__, __LINE__, false);
42 16 : return true;
43 : }
44 : }
45 : break;
46 : }
47 : default:;
48 : }
49 : break;
50 : }
51 : default:;
52 : }
53 : return false;
54 : }
55 :
56 : bool
57 83919609 : tree_with_possible_nonzero_bits (tree t)
58 : {
59 83919609 : const tree type = TREE_TYPE (t);
60 83919609 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
61 83919609 : if (TREE_SIDE_EFFECTS (t)) return false;
62 78702474 : switch (TREE_CODE (t))
63 : {
64 2038304 : case BIT_AND_EXPR:
65 2038304 : {
66 2038304 : tree _p0 = TREE_OPERAND (t, 0);
67 2038304 : tree _p1 = TREE_OPERAND (t, 1);
68 2038304 : if (tree_with_possible_nonzero_bits_1 (_p0))
69 : {
70 882061 : {
71 882061 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
72 882061 : {
73 882061 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
74 882061 : return true;
75 : }
76 : }
77 : }
78 1156243 : if (tree_with_possible_nonzero_bits_1 (_p1))
79 : {
80 976661 : {
81 976661 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
82 976661 : {
83 976661 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
84 976661 : return true;
85 : }
86 : }
87 : }
88 : break;
89 : }
90 76843752 : default:;
91 : }
92 76843752 : if (tree_with_possible_nonzero_bits_1 (t))
93 : {
94 41286753 : {
95 41286753 : tree captures[1] ATTRIBUTE_UNUSED = { t };
96 41286753 : {
97 41286753 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 36, __FILE__, __LINE__, false);
98 41286753 : return true;
99 : }
100 : }
101 : }
102 : return false;
103 : }
104 :
105 : bool
106 781283 : tree_vec_same_elem_p (tree t)
107 : {
108 781283 : const tree type = TREE_TYPE (t);
109 781283 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
110 781283 : if (TREE_SIDE_EFFECTS (t)) return false;
111 781283 : switch (TREE_CODE (t))
112 : {
113 0 : case VEC_DUPLICATE_EXPR:
114 0 : {
115 0 : tree _p0 = TREE_OPERAND (t, 0);
116 0 : {
117 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
118 0 : {
119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 46, __FILE__, __LINE__, false);
120 0 : return true;
121 : }
122 : }
123 : break;
124 : }
125 : case CONSTRUCTOR:
126 : {
127 : {
128 : tree captures[1] ATTRIBUTE_UNUSED = { t };
129 : if (TREE_CODE (captures[0]) == SSA_NAME
130 : && uniform_vector_p (gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])))
131 : )
132 : {
133 : {
134 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
135 : return true;
136 : }
137 : }
138 : }
139 : break;
140 : }
141 781283 : default:;
142 : }
143 781283 : {
144 781283 : tree captures[1] ATTRIBUTE_UNUSED = { t };
145 781283 : if (uniform_vector_p (captures[0])
146 : )
147 : {
148 13981 : {
149 13981 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
150 13981 : return true;
151 : }
152 : }
153 : }
154 : return false;
155 : }
156 :
157 : tree
158 240341 : generic_simplify_14 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
159 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
160 : const enum tree_code ARG_UNUSED (op))
161 : {
162 240341 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
163 240341 : {
164 240341 : bool wascmp;
165 240341 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
166 240341 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
167 : )
168 : {
169 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail88;
170 47 : {
171 47 : tree res_op0;
172 47 : res_op0 = wascmp
173 47 : ? constant_boolean_node (true, type)
174 40 : : build_all_ones_cst (TREE_TYPE (captures[0]));
175 47 : tree _r;
176 47 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
177 47 : if (TREE_SIDE_EFFECTS (captures[0]))
178 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
179 47 : if (TREE_SIDE_EFFECTS (captures[1]))
180 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
181 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 63, __FILE__, __LINE__, true);
182 47 : return _r;
183 : }
184 0 : next_after_fail88:;
185 : }
186 : }
187 240294 : return NULL_TREE;
188 : }
189 :
190 : tree
191 10 : generic_simplify_24 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
192 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
193 : {
194 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
195 10 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
196 10 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
197 : )
198 : {
199 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail98;
200 10 : {
201 10 : tree res_op0;
202 10 : {
203 10 : tree _o1[1], _r1;
204 10 : _o1[0] = captures[0];
205 10 : if (TREE_TYPE (_o1[0]) != type)
206 : {
207 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
208 : }
209 : else
210 : _r1 = _o1[0];
211 10 : res_op0 = _r1;
212 : }
213 10 : tree res_op1;
214 10 : {
215 10 : tree _o1[1], _r1;
216 10 : _o1[0] = captures[1];
217 10 : if (TREE_TYPE (_o1[0]) != type)
218 : {
219 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
220 : }
221 : else
222 : _r1 = _o1[0];
223 10 : res_op1 = _r1;
224 : }
225 10 : tree _r;
226 10 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
227 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, true);
228 10 : return _r;
229 : }
230 0 : next_after_fail98:;
231 : }
232 : return NULL_TREE;
233 : }
234 :
235 : tree
236 0 : generic_simplify_34 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
237 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
238 : const enum tree_code ARG_UNUSED (op),
239 : const enum tree_code ARG_UNUSED (cmp),
240 : const enum tree_code ARG_UNUSED (icmp))
241 : {
242 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
243 0 : if (INTEGRAL_TYPE_P (type)
244 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[1])) == icmp
245 0 : && canonicalize_math_after_vectorization_p ()
246 : )
247 : {
248 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail110;
249 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail110;
250 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail110;
251 : {
252 : tree res_op0;
253 : res_op0 = captures[0];
254 : tree res_op1;
255 : res_op1 = captures[3];
256 : tree res_op2;
257 : res_op2 = captures[5];
258 : tree _r;
259 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
260 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 84, __FILE__, __LINE__, true);
261 : return _r;
262 : }
263 0 : next_after_fail110:;
264 : }
265 0 : return NULL_TREE;
266 : }
267 :
268 : tree
269 19 : generic_simplify_41 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
270 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
271 : const enum tree_code ARG_UNUSED (op))
272 : {
273 19 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
274 38 : if (INTEGRAL_TYPE_P (type)
275 19 : && operand_equal_p (captures[2], captures[6], 0)
276 38 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
277 : )
278 : {
279 0 : {
280 0 : tree t = type;
281 0 : if (!TYPE_OVERFLOW_WRAPS (t))
282 0 : t = unsigned_type_for (t);
283 0 : wide_int c = wi::add (wi::to_wide (captures[3]), wi::to_wide (captures[7]));
284 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail118;
285 0 : if (TREE_SIDE_EFFECTS (captures[7])) goto next_after_fail118;
286 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail118;
287 0 : {
288 0 : tree res_op0;
289 0 : {
290 0 : tree _o1[2], _r1;
291 0 : {
292 0 : tree _o2[1], _r2;
293 0 : _o2[0] = captures[2];
294 0 : if (TREE_TYPE (_o2[0]) != t)
295 : {
296 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
297 : }
298 : else
299 : _r2 = _o2[0];
300 0 : _o1[0] = _r2;
301 : }
302 0 : _o1[1] = wide_int_to_tree (t, c);
303 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
304 0 : res_op0 = _r1;
305 : }
306 0 : tree _r;
307 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
308 0 : if (TREE_SIDE_EFFECTS (captures[6]))
309 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
310 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 86, __FILE__, __LINE__, true);
311 0 : return _r;
312 : }
313 0 : next_after_fail118:;
314 0 : }
315 : }
316 : return NULL_TREE;
317 : }
318 :
319 : tree
320 5343 : generic_simplify_53 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
321 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
322 : {
323 5343 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
324 5343 : if (fold_real_zero_addition_p (type, captures[0], captures[1], 0)
325 : )
326 : {
327 95 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail132;
328 95 : {
329 95 : tree res_op0;
330 95 : res_op0 = captures[0];
331 95 : tree _r;
332 95 : _r = non_lvalue_loc (loc, res_op0);
333 95 : if (TREE_SIDE_EFFECTS (captures[1]))
334 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
335 95 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 101, __FILE__, __LINE__, true);
336 95 : return _r;
337 : }
338 0 : next_after_fail132:;
339 : }
340 : return NULL_TREE;
341 : }
342 :
343 : tree
344 2 : generic_simplify_59 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
345 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
346 : {
347 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
348 2 : if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
349 2 : && !TYPE_SATURATING (type) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
350 2 : && !TYPE_OVERFLOW_TRAPS (TREE_TYPE (captures[0]))
351 4 : && !TYPE_SATURATING (TREE_TYPE (captures[0]))
352 : )
353 : {
354 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail139;
355 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail139;
356 2 : {
357 2 : tree res_op0;
358 2 : {
359 2 : tree _o1[1], _r1;
360 2 : {
361 2 : tree _o2[2], _r2;
362 2 : _o2[0] = captures[1];
363 2 : _o2[1] = captures[2];
364 2 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
365 2 : _o1[0] = _r2;
366 : }
367 2 : if (TREE_TYPE (_o1[0]) != type)
368 : {
369 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
370 : }
371 : else
372 : _r1 = _o1[0];
373 2 : res_op0 = _r1;
374 : }
375 2 : tree _r;
376 2 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
377 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, true);
378 2 : return _r;
379 : }
380 : next_after_fail139:;
381 : }
382 : return NULL_TREE;
383 : }
384 :
385 : tree
386 121753 : generic_simplify_69 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
387 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
388 : {
389 121753 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
390 121753 : if (!TYPE_SATURATING (type)
391 : )
392 : {
393 121753 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
394 243506 : && !FIXED_POINT_TYPE_P (type)
395 : )
396 : {
397 121753 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
398 : )
399 : {
400 120890 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail157;
401 120890 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail157;
402 120890 : {
403 120890 : tree res_op0;
404 120890 : {
405 120890 : tree _o1[1], _r1;
406 120890 : _o1[0] = captures[0];
407 120890 : if (TREE_TYPE (_o1[0]) != type)
408 : {
409 118185 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
410 : }
411 : else
412 : _r1 = _o1[0];
413 120890 : res_op0 = _r1;
414 : }
415 120890 : tree _r;
416 120890 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
417 120890 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 126, __FILE__, __LINE__, true);
418 120890 : return _r;
419 : }
420 : next_after_fail157:;
421 : }
422 : }
423 : }
424 : return NULL_TREE;
425 : }
426 :
427 : tree
428 0 : generic_simplify_77 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
429 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
430 : {
431 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
432 0 : if (VECTOR_TYPE_P (type)
433 0 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
434 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3])))
435 0 : && (TYPE_MODE (TREE_TYPE (type))
436 0 : == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))
437 : )
438 : {
439 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail166;
440 0 : {
441 0 : tree res_op0;
442 0 : res_op0 = captures[0];
443 0 : tree res_op1;
444 0 : {
445 0 : tree _o1[1], _r1;
446 0 : {
447 0 : tree _o2[3], _r2;
448 0 : _o2[0] = captures[2];
449 0 : {
450 0 : tree _o3[1], _r3;
451 0 : _o3[0] = captures[3];
452 0 : _r3 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
453 0 : _o2[1] = _r3;
454 : }
455 0 : _o2[2] = captures[4];
456 0 : _r2 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o2[1]), _o2[0], _o2[1], _o2[2]);
457 0 : _o1[0] = _r2;
458 : }
459 0 : if (TREE_TYPE (_o1[0]) != type)
460 : {
461 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
462 : }
463 : else
464 : _r1 = _o1[0];
465 0 : res_op1 = _r1;
466 : }
467 0 : tree _r;
468 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
469 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 135, __FILE__, __LINE__, true);
470 0 : return _r;
471 : }
472 0 : next_after_fail166:;
473 : }
474 : return NULL_TREE;
475 : }
476 :
477 : tree
478 0 : generic_simplify_85 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
479 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
480 : const enum tree_code ARG_UNUSED (op))
481 : {
482 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
483 0 : if (VECTOR_FLOAT_TYPE_P (type)
484 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
485 : )
486 : {
487 0 : {
488 0 : tree perm_cst = captures[1];
489 0 : vec_perm_builder builder;
490 0 : bool full_perm_p = false;
491 0 : if (tree_to_vec_perm_builder (&builder, perm_cst))
492 : {
493 0 : unsigned HOST_WIDE_INT nelts;
494 0 : nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
495 0 : vec_perm_indices sel (builder, 1, nelts);
496 0 : if (sel.encoding ().encoded_full_vector_p ())
497 : {
498 0 : auto_sbitmap seen (nelts);
499 0 : bitmap_clear (seen);
500 0 : unsigned HOST_WIDE_INT count = 0, i;
501 0 : for (i = 0; i < nelts; i++)
502 : {
503 0 : if (!bitmap_set_bit (seen, sel[i].to_constant ()))
504 : break;
505 0 : count++;
506 : }
507 0 : full_perm_p = count == nelts;
508 0 : }
509 0 : }
510 0 : if (full_perm_p
511 : )
512 : {
513 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail175;
514 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail175;
515 0 : {
516 0 : tree res_op0;
517 0 : {
518 0 : tree _o1[2], _r1;
519 0 : _o1[0] = captures[0];
520 0 : _o1[1] = captures[2];
521 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
522 0 : captures[3] = _r1;
523 : }
524 0 : res_op0 = unshare_expr (captures[3]);
525 0 : tree res_op1;
526 0 : res_op1 = captures[3];
527 0 : tree res_op2;
528 0 : res_op2 = captures[1];
529 0 : tree _r;
530 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
531 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 144, __FILE__, __LINE__, true);
532 0 : return _r;
533 : }
534 0 : next_after_fail175:;
535 : }
536 0 : }
537 : }
538 : return NULL_TREE;
539 : }
540 :
541 : tree
542 170 : generic_simplify_99 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
543 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
544 : {
545 170 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
546 170 : if (!TYPE_SATURATING (type)
547 : )
548 : {
549 170 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
550 340 : && !FIXED_POINT_TYPE_P (type)
551 : )
552 : {
553 0 : if (!ANY_INTEGRAL_TYPE_P (type)
554 170 : || TYPE_OVERFLOW_WRAPS (type)
555 : )
556 : {
557 126 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail189;
558 126 : {
559 126 : tree res_op0;
560 126 : {
561 126 : tree _o1[1], _r1;
562 126 : _o1[0] = captures[1];
563 126 : if (TREE_TYPE (_o1[0]) != type)
564 : {
565 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
566 : }
567 : else
568 : _r1 = _o1[0];
569 126 : res_op0 = _r1;
570 : }
571 126 : tree _r;
572 126 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
573 126 : if (TREE_SIDE_EFFECTS (captures[0]))
574 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
575 126 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 157, __FILE__, __LINE__, true);
576 126 : return _r;
577 : }
578 0 : next_after_fail189:;
579 : }
580 : else
581 : {
582 44 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail190;
583 44 : {
584 44 : tree res_op0;
585 44 : {
586 44 : tree _o1[1], _r1;
587 44 : _o1[0] = captures[1];
588 44 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
589 44 : res_op0 = _r1;
590 : }
591 44 : tree _r;
592 44 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
593 44 : if (TREE_SIDE_EFFECTS (captures[0]))
594 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
595 44 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 158, __FILE__, __LINE__, true);
596 44 : return _r;
597 : }
598 0 : next_after_fail190:;
599 : }
600 : }
601 : }
602 : return NULL_TREE;
603 : }
604 :
605 : tree
606 0 : generic_simplify_112 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
607 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
608 : {
609 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
610 0 : if (TREE_CODE (captures[1]) == SSA_NAME && num_imm_uses (captures[1]) == 2
611 : )
612 : {
613 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail208;
614 0 : {
615 0 : if (! tree_invariant_p (captures[2])) goto next_after_fail208;
616 0 : tree res_op0;
617 0 : {
618 0 : tree _o1[2], _r1;
619 0 : {
620 0 : tree _o2[3], _r2;
621 0 : _o2[0] = unshare_expr (captures[2]);
622 0 : _o2[1] = captures[2];
623 0 : _o2[2] = captures[4];
624 0 : _r2 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1], _o2[2]);
625 0 : _o1[0] = _r2;
626 : }
627 0 : _o1[1] = captures[3];
628 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
629 0 : res_op0 = _r1;
630 : }
631 0 : tree res_op1;
632 0 : res_op1 = captures[5];
633 0 : tree _r;
634 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
635 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 176, __FILE__, __LINE__, true);
636 0 : return _r;
637 : }
638 : next_after_fail208:;
639 : }
640 : return NULL_TREE;
641 : }
642 :
643 : tree
644 0 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
645 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
646 : {
647 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
648 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail216;
649 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail216;
650 0 : {
651 0 : tree _r;
652 0 : _r = captures[2];
653 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 182, __FILE__, __LINE__, true);
654 : return _r;
655 : }
656 : next_after_fail216:;
657 : return NULL_TREE;
658 : }
659 :
660 : tree
661 0 : generic_simplify_123 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
662 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
663 : const enum tree_code ARG_UNUSED (op))
664 : {
665 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
666 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail221;
667 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail221;
668 0 : {
669 0 : tree _r;
670 0 : _r = captures[0];
671 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 186, __FILE__, __LINE__, true);
672 : return _r;
673 : }
674 : next_after_fail221:;
675 : return NULL_TREE;
676 : }
677 :
678 : tree
679 0 : generic_simplify_129 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
680 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
681 : {
682 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
683 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail227;
684 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail227;
685 0 : {
686 0 : tree res_op0;
687 0 : res_op0 = captures[0];
688 0 : tree res_op1;
689 0 : res_op1 = captures[3];
690 0 : tree _r;
691 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
692 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 190, __FILE__, __LINE__, true);
693 : return _r;
694 : }
695 : next_after_fail227:;
696 : return NULL_TREE;
697 : }
698 :
699 : tree
700 0 : generic_simplify_140 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
701 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
702 : const enum tree_code ARG_UNUSED (op))
703 : {
704 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
705 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
706 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
707 : )
708 : {
709 0 : if (single_use (captures[4]) && single_use (captures[5])
710 : )
711 : {
712 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail238;
713 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail238;
714 0 : {
715 0 : tree res_op0;
716 0 : res_op0 = captures[0];
717 0 : tree res_op1;
718 0 : {
719 0 : tree _o1[1], _r1;
720 0 : _o1[0] = captures[6];
721 0 : if (TREE_TYPE (_o1[0]) != type)
722 : {
723 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
724 : }
725 : else
726 : _r1 = _o1[0];
727 0 : res_op1 = _r1;
728 : }
729 0 : tree _r;
730 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
731 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 197, __FILE__, __LINE__, true);
732 0 : return _r;
733 : }
734 : next_after_fail238:;
735 : }
736 : else
737 : {
738 : if (single_use (captures[0]) && single_use (captures[1])
739 : )
740 : {
741 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail239;
742 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail239;
743 : {
744 : tree res_op0;
745 : {
746 : tree _o1[1], _r1;
747 : _o1[0] = captures[3];
748 : if (TREE_TYPE (_o1[0]) != type)
749 : {
750 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
751 : }
752 : else
753 : _r1 = _o1[0];
754 : res_op0 = _r1;
755 : }
756 : tree res_op1;
757 : res_op1 = captures[4];
758 : tree _r;
759 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
760 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 198, __FILE__, __LINE__, true);
761 : return _r;
762 : }
763 : next_after_fail239:;
764 : }
765 : }
766 : }
767 : return NULL_TREE;
768 : }
769 :
770 : tree
771 0 : generic_simplify_155 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
772 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
773 : const enum tree_code ARG_UNUSED (cmp),
774 : const enum tree_code ARG_UNUSED (icmp))
775 : {
776 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
777 0 : if (integer_zerop (captures[5])
778 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
779 : )
780 : {
781 0 : if (integer_onep (captures[4])
782 : )
783 : {
784 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail258;
785 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail258;
786 0 : {
787 0 : tree res_op0;
788 0 : {
789 0 : tree _o1[3], _r1;
790 0 : _o1[0] = captures[1];
791 0 : _o1[1] = captures[6];
792 0 : _o1[2] = captures[9];
793 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
794 0 : res_op0 = _r1;
795 : }
796 0 : tree res_op1;
797 0 : res_op1 = captures[4];
798 0 : tree _r;
799 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
800 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 206, __FILE__, __LINE__, true);
801 0 : return _r;
802 : }
803 : next_after_fail258:;
804 : }
805 : else
806 : {
807 0 : if (integer_minus_onep (captures[4])
808 : )
809 : {
810 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail259;
811 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail259;
812 0 : {
813 0 : tree res_op0;
814 0 : res_op0 = captures[1];
815 0 : tree res_op1;
816 0 : res_op1 = captures[6];
817 0 : tree res_op2;
818 0 : res_op2 = captures[9];
819 0 : tree _r;
820 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
821 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 207, __FILE__, __LINE__, true);
822 0 : return _r;
823 : }
824 : next_after_fail259:;
825 : }
826 : }
827 : }
828 : else
829 : {
830 0 : if (integer_zerop (captures[4])
831 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
832 : )
833 : {
834 0 : if (integer_onep (captures[5])
835 : )
836 : {
837 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail260;
838 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail260;
839 0 : {
840 0 : tree res_op0;
841 0 : {
842 0 : tree _o1[3], _r1;
843 0 : _o1[0] = captures[1];
844 0 : _o1[1] = captures[9];
845 0 : _o1[2] = captures[6];
846 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
847 0 : res_op0 = _r1;
848 : }
849 0 : tree res_op1;
850 0 : res_op1 = captures[5];
851 0 : tree _r;
852 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
853 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 208, __FILE__, __LINE__, true);
854 0 : return _r;
855 : }
856 : next_after_fail260:;
857 : }
858 : else
859 : {
860 0 : if (integer_minus_onep (captures[5])
861 : )
862 : {
863 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail261;
864 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail261;
865 0 : {
866 0 : tree res_op0;
867 0 : res_op0 = captures[1];
868 0 : tree res_op1;
869 0 : res_op1 = captures[9];
870 0 : tree res_op2;
871 0 : res_op2 = captures[6];
872 0 : tree _r;
873 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
874 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 209, __FILE__, __LINE__, true);
875 0 : return _r;
876 : }
877 : next_after_fail261:;
878 : }
879 : }
880 : }
881 : }
882 : return NULL_TREE;
883 : }
884 :
885 : tree
886 2 : generic_simplify_177 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
887 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
888 : {
889 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
890 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
891 4 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
892 : )
893 : {
894 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail316;
895 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail316;
896 2 : {
897 2 : tree res_op0;
898 2 : res_op0 = captures[3];
899 2 : tree res_op1;
900 2 : {
901 2 : tree _o1[2], _r1;
902 2 : _o1[0] = captures[1];
903 2 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
904 2 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
905 2 : res_op1 = _r1;
906 : }
907 2 : tree _r;
908 2 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
909 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
910 2 : return _r;
911 : }
912 : next_after_fail316:;
913 : }
914 : return NULL_TREE;
915 : }
916 :
917 : tree
918 0 : generic_simplify_183 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
919 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
920 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
921 : {
922 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
923 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
924 : )
925 : {
926 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail322;
927 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail322;
928 0 : {
929 0 : tree res_op0;
930 0 : res_op0 = captures[0];
931 0 : tree _r;
932 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
933 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 240, __FILE__, __LINE__, true);
934 0 : return _r;
935 : }
936 : next_after_fail322:;
937 : }
938 : return NULL_TREE;
939 : }
940 :
941 : tree
942 0 : generic_simplify_186 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
943 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
944 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
945 : {
946 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
947 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
948 : )
949 : {
950 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail325;
951 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail325;
952 0 : {
953 0 : tree res_op0;
954 0 : {
955 0 : tree _o1[1], _r1;
956 0 : _o1[0] = captures[0];
957 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
958 0 : res_op0 = _r1;
959 : }
960 0 : tree _r;
961 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
962 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 241, __FILE__, __LINE__, true);
963 0 : return _r;
964 : }
965 : next_after_fail325:;
966 : }
967 : return NULL_TREE;
968 : }
969 :
970 : tree
971 31108 : generic_simplify_193 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
972 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
973 : {
974 31108 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
975 31108 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
976 31108 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
977 : )
978 : {
979 28368 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail334;
980 28368 : {
981 28368 : tree res_op0;
982 28368 : {
983 28368 : tree _o1[1], _r1;
984 28368 : _o1[0] = captures[0];
985 28368 : if (TREE_TYPE (_o1[0]) != type)
986 : {
987 2806 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
988 : }
989 : else
990 : _r1 = _o1[0];
991 28368 : res_op0 = _r1;
992 : }
993 28368 : tree res_op1;
994 28368 : {
995 28368 : tree _o1[1], _r1;
996 28368 : {
997 28368 : tree _o2[1], _r2;
998 28368 : _o2[0] = captures[1];
999 28368 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1000 28368 : _o1[0] = _r2;
1001 : }
1002 28368 : if (TREE_TYPE (_o1[0]) != type)
1003 : {
1004 7 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1005 : }
1006 : else
1007 : _r1 = _o1[0];
1008 28368 : res_op1 = _r1;
1009 : }
1010 28368 : tree _r;
1011 28368 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1012 28368 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 248, __FILE__, __LINE__, true);
1013 28368 : return _r;
1014 : }
1015 0 : next_after_fail334:;
1016 : }
1017 : return NULL_TREE;
1018 : }
1019 :
1020 : tree
1021 186207 : generic_simplify_201 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1022 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1023 : {
1024 186207 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1025 186207 : if (TREE_CODE (captures[3]) != INTEGER_CST
1026 : && single_use (captures[0])
1027 186207 : && !integer_zerop (captures[2]) && !integer_minus_onep (captures[2])
1028 : )
1029 : {
1030 186177 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail343;
1031 186177 : {
1032 186177 : tree res_op0;
1033 186177 : {
1034 186177 : tree _o1[2], _r1;
1035 186177 : _o1[0] = captures[1];
1036 186177 : _o1[1] = captures[3];
1037 186177 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1038 186177 : res_op0 = _r1;
1039 : }
1040 186177 : tree res_op1;
1041 186177 : res_op1 = captures[2];
1042 186177 : tree _r;
1043 186177 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1044 186177 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 256, __FILE__, __LINE__, true);
1045 186177 : return _r;
1046 : }
1047 0 : next_after_fail343:;
1048 : }
1049 : return NULL_TREE;
1050 : }
1051 :
1052 : tree
1053 38 : generic_simplify_207 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1054 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1055 : const combined_fn ARG_UNUSED (POW))
1056 : {
1057 38 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1058 38 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1059 : )
1060 : {
1061 38 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail349;
1062 38 : {
1063 38 : tree res_op0;
1064 38 : res_op0 = captures[1];
1065 38 : tree res_op1;
1066 38 : {
1067 38 : tree _o1[2], _r1;
1068 38 : _o1[0] = captures[2];
1069 38 : _o1[1] = captures[4];
1070 38 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1071 38 : res_op1 = _r1;
1072 : }
1073 38 : tree _r;
1074 38 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1075 38 : if (!_r)
1076 0 : goto next_after_fail349;
1077 38 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 262, __FILE__, __LINE__, true);
1078 38 : return _r;
1079 : }
1080 : next_after_fail349:;
1081 : }
1082 : return NULL_TREE;
1083 : }
1084 :
1085 : tree
1086 7 : generic_simplify_215 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1087 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1088 : const enum tree_code ARG_UNUSED (neeq))
1089 : {
1090 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1091 7 : if (tree_fits_uhwi_p (captures[1])
1092 7 : && tree_to_uhwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
1093 : )
1094 : {
1095 7 : if (neeq == NE_EXPR
1096 : )
1097 : {
1098 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail360;
1099 5 : {
1100 5 : tree res_op0;
1101 5 : res_op0 = captures[0];
1102 5 : tree _r;
1103 5 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1104 5 : if (TREE_SIDE_EFFECTS (captures[1]))
1105 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1106 5 : if (TREE_SIDE_EFFECTS (captures[2]))
1107 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1108 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 272, __FILE__, __LINE__, true);
1109 5 : return _r;
1110 : }
1111 0 : next_after_fail360:;
1112 : }
1113 : else
1114 : {
1115 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail361;
1116 2 : {
1117 2 : tree res_op0;
1118 2 : res_op0 = captures[0];
1119 2 : tree res_op1;
1120 2 : res_op1 = captures[2];
1121 2 : tree _r;
1122 2 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1123 2 : if (TREE_SIDE_EFFECTS (captures[1]))
1124 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1125 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 273, __FILE__, __LINE__, true);
1126 2 : return _r;
1127 : }
1128 0 : next_after_fail361:;
1129 : }
1130 : }
1131 : return NULL_TREE;
1132 : }
1133 :
1134 : tree
1135 24376 : generic_simplify_225 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1136 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1137 : const enum tree_code ARG_UNUSED (op))
1138 : {
1139 24376 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1140 48752 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1141 48614 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1142 21811 : || ((op == EQ_EXPR || op == NE_EXPR)
1143 1766 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))))
1144 48683 : && (CONSTANT_CLASS_P (captures[2]) || single_use (captures[1]))
1145 : )
1146 : {
1147 4262 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail384;
1148 4262 : {
1149 4262 : tree res_op0;
1150 4262 : res_op0 = captures[2];
1151 4262 : tree res_op1;
1152 4262 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1153 4262 : tree _r;
1154 4262 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1155 4262 : if (TREE_SIDE_EFFECTS (captures[0]))
1156 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1157 4262 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 296, __FILE__, __LINE__, true);
1158 4262 : return _r;
1159 : }
1160 0 : next_after_fail384:;
1161 : }
1162 : return NULL_TREE;
1163 : }
1164 :
1165 : tree
1166 40218546 : generic_simplify_233 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1167 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1168 : const enum tree_code ARG_UNUSED (cmp))
1169 : {
1170 40218546 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1171 80437266 : if (wi::bit_and_not (get_known_nonzero_bits (captures[1]),
1172 120655638 : get_nonzero_bits (captures[0])) != 0
1173 : )
1174 : {
1175 75652 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail392;
1176 75652 : {
1177 75652 : tree _r;
1178 75652 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1179 75652 : if (TREE_SIDE_EFFECTS (captures[0]))
1180 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1181 75652 : if (TREE_SIDE_EFFECTS (captures[1]))
1182 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1183 75652 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 303, __FILE__, __LINE__, true);
1184 75652 : return _r;
1185 : }
1186 0 : next_after_fail392:;
1187 : }
1188 : return NULL_TREE;
1189 : }
1190 :
1191 : tree
1192 8 : generic_simplify_241 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1193 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1194 : const enum tree_code ARG_UNUSED (cmp),
1195 : const enum tree_code ARG_UNUSED (icmp))
1196 : {
1197 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1198 8 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1199 : )
1200 : {
1201 8 : {
1202 8 : int c = wi::exact_log2 (wi::to_wide (captures[1]));
1203 8 : if (wi::fits_to_tree_p (wi::shwi (c, HOST_BITS_PER_INT), TREE_TYPE (captures[0]))
1204 : )
1205 : {
1206 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail404;
1207 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail404;
1208 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail404;
1209 0 : {
1210 0 : tree res_op0;
1211 0 : res_op0 = captures[0];
1212 0 : tree res_op1;
1213 0 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), c);
1214 0 : tree _r;
1215 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1216 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 315, __FILE__, __LINE__, true);
1217 0 : return _r;
1218 : }
1219 : next_after_fail404:;
1220 : }
1221 : }
1222 : }
1223 : return NULL_TREE;
1224 : }
1225 :
1226 : tree
1227 124 : generic_simplify_246 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1228 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1229 : const enum tree_code ARG_UNUSED (rotate),
1230 : const enum tree_code ARG_UNUSED (invrot),
1231 : const enum tree_code ARG_UNUSED (cmp))
1232 : {
1233 124 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1234 124 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail417;
1235 124 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail417;
1236 124 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail417;
1237 124 : {
1238 124 : tree res_op0;
1239 124 : res_op0 = captures[0];
1240 124 : tree res_op1;
1241 124 : res_op1 = const_binop (invrot, TREE_TYPE (captures[0]), captures[2], captures[1]);
1242 124 : tree _r;
1243 124 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1244 124 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 328, __FILE__, __LINE__, true);
1245 : return _r;
1246 : }
1247 : next_after_fail417:;
1248 : return NULL_TREE;
1249 : }
1250 :
1251 : tree
1252 25788 : generic_simplify_252 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1253 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1254 : const enum tree_code ARG_UNUSED (cmp),
1255 : const enum tree_code ARG_UNUSED (icmp),
1256 : const enum tree_code ARG_UNUSED (ncmp))
1257 : {
1258 25788 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1259 25788 : if (types_match (type, TREE_TYPE (captures[0]))
1260 : )
1261 : {
1262 25123 : {
1263 25123 : enum tree_code ic = invert_tree_comparison
1264 25123 : (cmp, HONOR_NANS (captures[1]));
1265 25123 : if (ic == icmp
1266 : )
1267 : {
1268 24879 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail423;
1269 24879 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail423;
1270 24879 : {
1271 24879 : tree res_op0;
1272 24879 : res_op0 = captures[1];
1273 24879 : tree res_op1;
1274 24879 : res_op1 = captures[2];
1275 24879 : tree _r;
1276 24879 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1277 24879 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 334, __FILE__, __LINE__, true);
1278 24879 : return _r;
1279 : }
1280 : next_after_fail423:;
1281 : }
1282 : else
1283 : {
1284 244 : if (ic == ncmp
1285 : )
1286 : {
1287 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail424;
1288 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail424;
1289 0 : {
1290 0 : tree res_op0;
1291 0 : res_op0 = captures[1];
1292 0 : tree res_op1;
1293 0 : res_op1 = captures[2];
1294 0 : tree _r;
1295 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1296 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 335, __FILE__, __LINE__, true);
1297 0 : return _r;
1298 : }
1299 : next_after_fail424:;
1300 : }
1301 : }
1302 : }
1303 : }
1304 : return NULL_TREE;
1305 : }
1306 :
1307 : tree
1308 6466255 : generic_simplify_262 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1309 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1310 : const enum tree_code ARG_UNUSED (cmp))
1311 : {
1312 6466255 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1313 6466255 : if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[1]))
1314 : )
1315 : {
1316 1708 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail439;
1317 1708 : {
1318 1708 : tree res_op0;
1319 1708 : res_op0 = captures[0];
1320 1708 : tree res_op1;
1321 1708 : res_op1 = build_real (TREE_TYPE (captures[1]), dconst0);
1322 1708 : tree _r;
1323 1708 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1324 1708 : if (TREE_SIDE_EFFECTS (captures[1]))
1325 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1326 1708 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 348, __FILE__, __LINE__, true);
1327 1708 : return _r;
1328 : }
1329 0 : next_after_fail439:;
1330 : }
1331 : else
1332 : {
1333 6464547 : if (TREE_CODE (captures[0]) == REAL_CST
1334 6464547 : && REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[0]))
1335 : )
1336 : {
1337 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail440;
1338 0 : {
1339 0 : tree res_op0;
1340 0 : res_op0 = build_real (TREE_TYPE (captures[0]), dconst0);
1341 0 : tree res_op1;
1342 0 : res_op1 = captures[1];
1343 0 : tree _r;
1344 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1345 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1346 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1347 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 349, __FILE__, __LINE__, true);
1348 0 : return _r;
1349 : }
1350 0 : next_after_fail440:;
1351 : }
1352 : else
1353 : {
1354 6464547 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
1355 862 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1356 286 : && !tree_expr_signaling_nan_p (captures[1])
1357 6464803 : && !tree_expr_maybe_signaling_nan_p (captures[0])
1358 : )
1359 : {
1360 256 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail441;
1361 256 : {
1362 256 : tree _r;
1363 256 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1364 256 : if (TREE_SIDE_EFFECTS (captures[0]))
1365 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1366 256 : if (TREE_SIDE_EFFECTS (captures[1]))
1367 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1368 256 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 350, __FILE__, __LINE__, true);
1369 256 : return _r;
1370 : }
1371 0 : next_after_fail441:;
1372 : }
1373 : else
1374 : {
1375 6464291 : if (TREE_CODE (captures[0]) == REAL_CST
1376 2043 : && REAL_VALUE_ISNAN (TREE_REAL_CST (captures[0]))
1377 1849 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1378 0 : && !tree_expr_signaling_nan_p (captures[0])
1379 6464291 : && !tree_expr_signaling_nan_p (captures[1])
1380 : )
1381 : {
1382 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail442;
1383 0 : {
1384 0 : tree _r;
1385 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1386 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1387 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1388 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1389 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1390 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 351, __FILE__, __LINE__, true);
1391 0 : return _r;
1392 : }
1393 0 : next_after_fail442:;
1394 : }
1395 : else
1396 : {
1397 6464291 : if (REAL_VALUE_ISINF (TREE_REAL_CST (captures[1]))
1398 7206081 : && MODE_HAS_INFINITIES (TYPE_MODE (TREE_TYPE (captures[1])))
1399 : )
1400 : {
1401 247291 : {
1402 247291 : REAL_VALUE_TYPE max;
1403 247291 : enum tree_code code = cmp;
1404 247291 : bool neg = REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]));
1405 247291 : if (neg)
1406 34005 : code = swap_tree_comparison (code);
1407 247291 : if (code == GT_EXPR
1408 247291 : && !(HONOR_NANS (captures[0]) && flag_trapping_math)
1409 : )
1410 : {
1411 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail443;
1412 21 : {
1413 21 : tree _r;
1414 21 : _r = constant_boolean_node (false, type);
1415 21 : if (TREE_SIDE_EFFECTS (captures[0]))
1416 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1417 21 : if (TREE_SIDE_EFFECTS (captures[1]))
1418 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1419 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 352, __FILE__, __LINE__, true);
1420 71603 : return _r;
1421 : }
1422 0 : next_after_fail443:;
1423 : }
1424 : else
1425 : {
1426 247270 : if (code == LE_EXPR
1427 : )
1428 : {
1429 32148 : if (! HONOR_NANS (captures[0])
1430 : )
1431 : {
1432 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail444;
1433 0 : {
1434 0 : tree _r;
1435 0 : _r = constant_boolean_node (true, type);
1436 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1437 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1438 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1439 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1440 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 353, __FILE__, __LINE__, true);
1441 0 : return _r;
1442 : }
1443 0 : next_after_fail444:;
1444 : }
1445 : else
1446 : {
1447 32148 : if (!flag_trapping_math
1448 : )
1449 : {
1450 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail445;
1451 16 : {
1452 16 : if (! tree_invariant_p (captures[0])) goto next_after_fail445;
1453 0 : tree res_op0;
1454 0 : res_op0 = unshare_expr (captures[0]);
1455 0 : tree res_op1;
1456 0 : res_op1 = captures[0];
1457 0 : tree _r;
1458 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1459 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1460 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1461 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 354, __FILE__, __LINE__, true);
1462 0 : return _r;
1463 : }
1464 175688 : next_after_fail445:;
1465 : }
1466 : }
1467 : }
1468 : else
1469 : {
1470 143325 : if ((code == EQ_EXPR && !(HONOR_NANS (captures[0]) && flag_trapping_math))
1471 358411 : || code == GE_EXPR
1472 : )
1473 : {
1474 168 : {
1475 168 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1476 168 : if (neg
1477 : )
1478 : {
1479 69 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail446;
1480 69 : {
1481 69 : tree res_op0;
1482 69 : res_op0 = captures[0];
1483 69 : tree res_op1;
1484 69 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1485 69 : tree _r;
1486 69 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1487 69 : if (TREE_SIDE_EFFECTS (captures[1]))
1488 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1489 69 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 355, __FILE__, __LINE__, true);
1490 69 : return _r;
1491 : }
1492 0 : next_after_fail446:;
1493 : }
1494 : else
1495 : {
1496 99 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail447;
1497 99 : {
1498 99 : tree res_op0;
1499 99 : res_op0 = captures[0];
1500 99 : tree res_op1;
1501 99 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1502 99 : tree _r;
1503 99 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1504 99 : if (TREE_SIDE_EFFECTS (captures[1]))
1505 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1506 99 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 356, __FILE__, __LINE__, true);
1507 99 : return _r;
1508 : }
1509 0 : next_after_fail447:;
1510 : }
1511 : }
1512 : }
1513 : else
1514 : {
1515 214954 : if (code == LT_EXPR
1516 : )
1517 : {
1518 118 : {
1519 118 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1520 118 : if (neg
1521 : )
1522 : {
1523 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail448;
1524 40 : {
1525 40 : tree res_op0;
1526 40 : res_op0 = captures[0];
1527 40 : tree res_op1;
1528 40 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1529 40 : tree _r;
1530 40 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1531 40 : if (TREE_SIDE_EFFECTS (captures[1]))
1532 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1533 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 357, __FILE__, __LINE__, true);
1534 40 : return _r;
1535 : }
1536 0 : next_after_fail448:;
1537 : }
1538 : else
1539 : {
1540 78 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail449;
1541 78 : {
1542 78 : tree res_op0;
1543 78 : res_op0 = captures[0];
1544 78 : tree res_op1;
1545 78 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1546 78 : tree _r;
1547 78 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1548 78 : if (TREE_SIDE_EFFECTS (captures[1]))
1549 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1550 78 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 358, __FILE__, __LINE__, true);
1551 78 : return _r;
1552 : }
1553 0 : next_after_fail449:;
1554 : }
1555 : }
1556 : }
1557 : else
1558 : {
1559 214836 : if (code == NE_EXPR
1560 : )
1561 : {
1562 71296 : {
1563 71296 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1564 71296 : if (! HONOR_NANS (captures[0])
1565 : )
1566 : {
1567 0 : if (neg
1568 : )
1569 : {
1570 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail450;
1571 0 : {
1572 0 : tree res_op0;
1573 0 : res_op0 = captures[0];
1574 0 : tree res_op1;
1575 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1576 0 : tree _r;
1577 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1578 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1579 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1580 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 359, __FILE__, __LINE__, true);
1581 0 : return _r;
1582 : }
1583 0 : next_after_fail450:;
1584 : }
1585 : else
1586 : {
1587 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail451;
1588 0 : {
1589 0 : tree res_op0;
1590 0 : res_op0 = captures[0];
1591 0 : tree res_op1;
1592 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1593 0 : tree _r;
1594 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1595 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1596 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1597 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 360, __FILE__, __LINE__, true);
1598 0 : return _r;
1599 : }
1600 0 : next_after_fail451:;
1601 : }
1602 : }
1603 : else
1604 : {
1605 71296 : if (neg
1606 : )
1607 : {
1608 627 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail452;
1609 627 : {
1610 627 : tree res_op0;
1611 627 : res_op0 = captures[0];
1612 627 : tree res_op1;
1613 627 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1614 627 : tree _r;
1615 627 : _r = fold_build2_loc (loc, UNGE_EXPR, type, res_op0, res_op1);
1616 627 : if (TREE_SIDE_EFFECTS (captures[1]))
1617 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1618 627 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 361, __FILE__, __LINE__, true);
1619 627 : return _r;
1620 : }
1621 0 : next_after_fail452:;
1622 : }
1623 : else
1624 : {
1625 70669 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail453;
1626 70669 : {
1627 70669 : tree res_op0;
1628 70669 : res_op0 = captures[0];
1629 70669 : tree res_op1;
1630 70669 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1631 70669 : tree _r;
1632 70669 : _r = fold_build2_loc (loc, UNLE_EXPR, type, res_op0, res_op1);
1633 70669 : if (TREE_SIDE_EFFECTS (captures[1]))
1634 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1635 70669 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 362, __FILE__, __LINE__, true);
1636 70669 : return _r;
1637 : }
1638 0 : next_after_fail453:;
1639 : }
1640 : }
1641 : }
1642 : }
1643 : }
1644 : }
1645 : }
1646 : }
1647 : }
1648 : }
1649 : }
1650 : }
1651 : }
1652 : }
1653 : return NULL_TREE;
1654 : }
1655 :
1656 : tree
1657 17 : generic_simplify_304 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1658 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1659 : const enum tree_code ARG_UNUSED (cmp),
1660 : const combined_fn ARG_UNUSED (ffs))
1661 : {
1662 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1663 17 : {
1664 17 : int prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
1665 17 : if (integer_zerop (captures[2])
1666 : )
1667 : {
1668 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail570;
1669 9 : {
1670 9 : tree res_op0;
1671 9 : res_op0 = captures[1];
1672 9 : tree res_op1;
1673 9 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1674 9 : tree _r;
1675 9 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1676 9 : if (TREE_SIDE_EFFECTS (captures[2]))
1677 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1678 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 461, __FILE__, __LINE__, true);
1679 17 : return _r;
1680 : }
1681 0 : next_after_fail570:;
1682 : }
1683 : else
1684 : {
1685 8 : if (tree_int_cst_sgn (captures[2]) < 0 || wi::to_widest (captures[2]) > prec
1686 : )
1687 : {
1688 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail571;
1689 4 : {
1690 4 : tree _r;
1691 4 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1692 4 : if (TREE_SIDE_EFFECTS (captures[1]))
1693 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1694 4 : if (TREE_SIDE_EFFECTS (captures[2]))
1695 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1696 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 462, __FILE__, __LINE__, true);
1697 4 : return _r;
1698 : }
1699 0 : next_after_fail571:;
1700 : }
1701 : else
1702 : {
1703 4 : if (single_use (captures[0])
1704 : )
1705 : {
1706 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail572;
1707 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail572;
1708 4 : {
1709 4 : tree res_op0;
1710 4 : {
1711 4 : tree _o1[2], _r1;
1712 4 : _o1[0] = captures[1];
1713 4 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[1]),
1714 4 : wi::mask (tree_to_uhwi (captures[2]),
1715 : false, prec));
1716 4 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1717 4 : res_op0 = _r1;
1718 : }
1719 4 : tree res_op1;
1720 4 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[1]),
1721 4 : wi::shifted_mask (tree_to_uhwi (captures[2]) - 1, 1,
1722 : false, prec));
1723 4 : tree _r;
1724 4 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1725 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 463, __FILE__, __LINE__, true);
1726 4 : return _r;
1727 : }
1728 0 : next_after_fail572:;
1729 : }
1730 : }
1731 : }
1732 : }
1733 0 : return NULL_TREE;
1734 : }
1735 :
1736 : tree
1737 1 : generic_simplify_321 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1738 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1739 : const enum tree_code ARG_UNUSED (div))
1740 : {
1741 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1742 1 : if (INTEGRAL_TYPE_P (type)
1743 1 : && TYPE_OVERFLOW_UNDEFINED (type)
1744 1 : && !integer_zerop (captures[0])
1745 2 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1746 : )
1747 : {
1748 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail592;
1749 1 : {
1750 1 : tree res_op0;
1751 1 : {
1752 1 : tree _o1[2], _r1;
1753 1 : _o1[0] = captures[0];
1754 1 : _o1[1] = build_zero_cst (type);
1755 1 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
1756 1 : res_op0 = _r1;
1757 : }
1758 1 : tree res_op1;
1759 1 : res_op1 = build_minus_one_cst (type);
1760 1 : tree res_op2;
1761 1 : res_op2 = build_one_cst (type);
1762 1 : tree _r;
1763 1 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
1764 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 481, __FILE__, __LINE__, true);
1765 1 : return _r;
1766 : }
1767 0 : next_after_fail592:;
1768 : }
1769 : return NULL_TREE;
1770 : }
1771 :
1772 : tree
1773 2195714 : generic_simplify_328 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1774 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1775 : const enum tree_code ARG_UNUSED (floor_divmod),
1776 : const enum tree_code ARG_UNUSED (trunc_divmod))
1777 : {
1778 2195714 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1779 0 : if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
1780 2195714 : && TYPE_UNSIGNED (type)
1781 : )
1782 : {
1783 2186590 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail600;
1784 2186590 : {
1785 2186590 : tree res_op0;
1786 2186590 : res_op0 = captures[0];
1787 2186590 : tree res_op1;
1788 2186590 : res_op1 = captures[1];
1789 2186590 : tree _r;
1790 2186590 : _r = fold_build2_loc (loc, trunc_divmod, type, res_op0, res_op1);
1791 2186590 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 489, __FILE__, __LINE__, true);
1792 2186590 : return _r;
1793 : }
1794 0 : next_after_fail600:;
1795 : }
1796 : return NULL_TREE;
1797 : }
1798 :
1799 : tree
1800 7232 : generic_simplify_334 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1801 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1802 : const enum tree_code ARG_UNUSED (mod))
1803 : {
1804 7232 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1805 0 : if (ANY_INTEGRAL_TYPE_P (type)
1806 7232 : && TYPE_OVERFLOW_UNDEFINED (type)
1807 14464 : && wi::multiple_of_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1808 195 : TYPE_SIGN (type))
1809 : )
1810 : {
1811 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail606;
1812 0 : {
1813 0 : tree _r;
1814 0 : _r = build_zero_cst (type);
1815 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1816 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1817 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1818 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1819 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1820 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1821 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 495, __FILE__, __LINE__, true);
1822 0 : return _r;
1823 : }
1824 0 : next_after_fail606:;
1825 : }
1826 : return NULL_TREE;
1827 : }
1828 :
1829 : tree
1830 0 : generic_simplify_347 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1831 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1832 : const enum tree_code ARG_UNUSED (op),
1833 : const combined_fn ARG_UNUSED (bt),
1834 : const combined_fn ARG_UNUSED (bf),
1835 : const combined_fn ARG_UNUSED (floor),
1836 : const combined_fn ARG_UNUSED (ceil))
1837 : {
1838 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1839 0 : if (!HONOR_SIGNED_ZEROS (type) && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
1840 : )
1841 : {
1842 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail621;
1843 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail621;
1844 0 : {
1845 0 : tree res_op0;
1846 0 : {
1847 0 : tree _o1[2], _r1;
1848 0 : _o1[0] = captures[1];
1849 0 : _o1[1] = build_real (type, dconsthalf);
1850 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1851 0 : res_op0 = _r1;
1852 : }
1853 0 : tree _r;
1854 0 : _r = maybe_build_call_expr_loc (loc, floor, type, 1, res_op0);
1855 0 : if (!_r)
1856 0 : goto next_after_fail621;
1857 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 510, __FILE__, __LINE__, true);
1858 0 : return _r;
1859 : }
1860 : next_after_fail621:;
1861 : }
1862 : return NULL_TREE;
1863 : }
1864 :
1865 : tree
1866 3 : generic_simplify_356 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1867 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1868 : const enum tree_code ARG_UNUSED (op))
1869 : {
1870 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1871 3 : if (INTEGRAL_TYPE_P (type)
1872 3 : && TYPE_PRECISION (type) > 1
1873 3 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1874 6 : && expr_no_side_effects_p (captures[2])
1875 : )
1876 : {
1877 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail636;
1878 3 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail636;
1879 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail636;
1880 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail636;
1881 3 : {
1882 3 : tree res_op0;
1883 3 : {
1884 3 : tree _o1[2], _r1;
1885 3 : {
1886 3 : tree _o2[1], _r2;
1887 3 : _o2[0] = captures[0];
1888 3 : if (TREE_TYPE (_o2[0]) != type)
1889 : {
1890 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1891 : }
1892 : else
1893 : _r2 = _o2[0];
1894 3 : _o1[0] = _r2;
1895 : }
1896 3 : _o1[1] = captures[2];
1897 3 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1898 3 : res_op0 = _r1;
1899 : }
1900 3 : tree res_op1;
1901 3 : res_op1 = captures[1];
1902 3 : tree _r;
1903 3 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1904 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 525, __FILE__, __LINE__, true);
1905 3 : return _r;
1906 : }
1907 : next_after_fail636:;
1908 : }
1909 : return NULL_TREE;
1910 : }
1911 :
1912 : tree
1913 204 : generic_simplify_365 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1914 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1915 : const enum tree_code ARG_UNUSED (op))
1916 : {
1917 204 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1918 204 : if (bitwise_equal_p (captures[0], captures[3])
1919 204 : && expr_no_side_effects_p (captures[2])
1920 : )
1921 : {
1922 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail645;
1923 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail645;
1924 1 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail645;
1925 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail645;
1926 1 : {
1927 1 : tree _r;
1928 1 : _r = captures[1];
1929 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 534, __FILE__, __LINE__, true);
1930 1 : return _r;
1931 : }
1932 : next_after_fail645:;
1933 : }
1934 : return NULL_TREE;
1935 : }
1936 :
1937 : tree
1938 0 : generic_simplify_372 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1939 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1940 : const enum tree_code ARG_UNUSED (cmp))
1941 : {
1942 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1943 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail653;
1944 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail653;
1945 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail653;
1946 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail653;
1947 0 : {
1948 0 : tree _r;
1949 0 : _r = captures[0];
1950 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 542, __FILE__, __LINE__, true);
1951 : return _r;
1952 : }
1953 : next_after_fail653:;
1954 : return NULL_TREE;
1955 : }
1956 :
1957 : tree
1958 444 : generic_simplify_380 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1959 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1960 : const enum tree_code ARG_UNUSED (op),
1961 : const enum tree_code ARG_UNUSED (neg_op))
1962 : {
1963 444 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1964 444 : if (flag_unsafe_math_optimizations
1965 : )
1966 : {
1967 4 : if (!HONOR_SIGNED_ZEROS (captures[1]) && !HONOR_INFINITIES (captures[1])
1968 : )
1969 : {
1970 4 : if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[0]))
1971 : )
1972 : {
1973 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail663;
1974 2 : {
1975 2 : tree res_op0;
1976 2 : res_op0 = captures[1];
1977 2 : tree res_op1;
1978 2 : res_op1 = captures[2];
1979 2 : tree _r;
1980 2 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1981 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1982 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1983 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 550, __FILE__, __LINE__, true);
1984 2 : return _r;
1985 : }
1986 0 : next_after_fail663:;
1987 : }
1988 : else
1989 : {
1990 2 : if (real_less (TREE_REAL_CST_PTR (captures[0]), &dconst0)
1991 : )
1992 : {
1993 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail664;
1994 2 : {
1995 2 : tree res_op0;
1996 2 : res_op0 = captures[1];
1997 2 : tree res_op1;
1998 2 : res_op1 = captures[2];
1999 2 : tree _r;
2000 2 : _r = fold_build2_loc (loc, neg_op, type, res_op0, res_op1);
2001 2 : if (TREE_SIDE_EFFECTS (captures[0]))
2002 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2003 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 551, __FILE__, __LINE__, true);
2004 2 : return _r;
2005 : }
2006 0 : next_after_fail664:;
2007 : }
2008 : }
2009 : }
2010 : }
2011 : return NULL_TREE;
2012 : }
2013 :
2014 : tree
2015 0 : generic_simplify_390 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2016 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2017 : const enum tree_code ARG_UNUSED (ltge),
2018 : const enum tree_code ARG_UNUSED (neeq))
2019 : {
2020 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2021 0 : if (!HONOR_NANS (captures[0])
2022 : )
2023 : {
2024 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail676;
2025 0 : {
2026 0 : tree res_op0;
2027 0 : res_op0 = captures[0];
2028 0 : tree res_op1;
2029 0 : res_op1 = captures[1];
2030 0 : tree _r;
2031 0 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
2032 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 563, __FILE__, __LINE__, true);
2033 0 : return _r;
2034 : }
2035 0 : next_after_fail676:;
2036 : }
2037 : return NULL_TREE;
2038 : }
2039 :
2040 : tree
2041 1233683 : generic_simplify_399 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2042 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2043 : const enum tree_code ARG_UNUSED (cmp))
2044 : {
2045 1233683 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2046 2467366 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2047 548 : || POINTER_TYPE_P (TREE_TYPE (captures[2]))
2048 173 : || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2])))
2049 2467366 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2050 : )
2051 : {
2052 1053035 : {
2053 1053035 : tree cst = uniform_integer_cst_p (captures[2]);
2054 1053035 : tree arg1_type = TREE_TYPE (cst);
2055 1053035 : unsigned int prec = TYPE_PRECISION (arg1_type);
2056 1053035 : wide_int max = wi::max_value (arg1_type);
2057 1053035 : wide_int signed_max = wi::max_value (prec, SIGNED);
2058 1053035 : wide_int min = wi::min_value (arg1_type);
2059 1053035 : if (wi::to_wide (cst) == max
2060 : )
2061 : {
2062 709 : if (cmp == GT_EXPR
2063 : )
2064 : {
2065 477 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail687;
2066 477 : {
2067 477 : tree _r;
2068 477 : _r = constant_boolean_node (false, type);
2069 477 : if (TREE_SIDE_EFFECTS (captures[1]))
2070 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2071 477 : if (TREE_SIDE_EFFECTS (captures[2]))
2072 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2073 477 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 574, __FILE__, __LINE__, true);
2074 477 : return _r;
2075 : }
2076 0 : next_after_fail687:;
2077 : }
2078 : else
2079 : {
2080 232 : if (cmp == GE_EXPR
2081 : )
2082 : {
2083 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail688;
2084 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail688;
2085 0 : {
2086 0 : tree res_op0;
2087 0 : res_op0 = captures[0];
2088 0 : tree res_op1;
2089 0 : res_op1 = captures[2];
2090 0 : tree _r;
2091 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2092 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 575, __FILE__, __LINE__, true);
2093 0 : return _r;
2094 : }
2095 991211 : next_after_fail688:;
2096 : }
2097 : else
2098 : {
2099 232 : if (cmp == LE_EXPR
2100 : )
2101 : {
2102 232 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail689;
2103 232 : {
2104 232 : tree _r;
2105 232 : _r = constant_boolean_node (true, type);
2106 232 : if (TREE_SIDE_EFFECTS (captures[1]))
2107 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2108 232 : if (TREE_SIDE_EFFECTS (captures[2]))
2109 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2110 232 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 576, __FILE__, __LINE__, true);
2111 232 : return _r;
2112 : }
2113 0 : next_after_fail689:;
2114 : }
2115 : else
2116 : {
2117 0 : if (cmp == LT_EXPR
2118 : )
2119 : {
2120 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail690;
2121 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail690;
2122 0 : {
2123 0 : tree res_op0;
2124 0 : res_op0 = captures[0];
2125 0 : tree res_op1;
2126 0 : res_op1 = captures[2];
2127 0 : tree _r;
2128 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2129 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 577, __FILE__, __LINE__, true);
2130 0 : return _r;
2131 : }
2132 991211 : next_after_fail690:;
2133 : }
2134 : }
2135 : }
2136 : }
2137 : }
2138 : else
2139 : {
2140 1052326 : if (wi::to_wide (cst) == min
2141 : )
2142 : {
2143 56523 : if (cmp == LT_EXPR
2144 : )
2145 : {
2146 2544 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail691;
2147 2544 : {
2148 2544 : tree _r;
2149 2544 : _r = constant_boolean_node (false, type);
2150 2544 : if (TREE_SIDE_EFFECTS (captures[1]))
2151 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2152 2544 : if (TREE_SIDE_EFFECTS (captures[2]))
2153 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2154 2544 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 578, __FILE__, __LINE__, true);
2155 2544 : return _r;
2156 : }
2157 0 : next_after_fail691:;
2158 : }
2159 : else
2160 : {
2161 53979 : if (cmp == LE_EXPR
2162 : )
2163 : {
2164 14208 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail692;
2165 13090 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail692;
2166 13090 : {
2167 13090 : tree res_op0;
2168 13090 : res_op0 = captures[0];
2169 13090 : tree res_op1;
2170 13090 : res_op1 = captures[2];
2171 13090 : tree _r;
2172 13090 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2173 13090 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 579, __FILE__, __LINE__, true);
2174 13090 : return _r;
2175 : }
2176 991211 : next_after_fail692:;
2177 : }
2178 : else
2179 : {
2180 39771 : if (cmp == GE_EXPR
2181 : )
2182 : {
2183 8605 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail693;
2184 8605 : {
2185 8605 : tree _r;
2186 8605 : _r = constant_boolean_node (true, type);
2187 8605 : if (TREE_SIDE_EFFECTS (captures[1]))
2188 51 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2189 8605 : if (TREE_SIDE_EFFECTS (captures[2]))
2190 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2191 8605 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 580, __FILE__, __LINE__, true);
2192 8605 : return _r;
2193 : }
2194 0 : next_after_fail693:;
2195 : }
2196 : else
2197 : {
2198 31166 : if (cmp == GT_EXPR
2199 : )
2200 : {
2201 31166 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail694;
2202 25576 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail694;
2203 25576 : {
2204 25576 : tree res_op0;
2205 25576 : res_op0 = captures[0];
2206 25576 : tree res_op1;
2207 25576 : res_op1 = captures[2];
2208 25576 : tree _r;
2209 25576 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2210 25576 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 581, __FILE__, __LINE__, true);
2211 25576 : return _r;
2212 : }
2213 991211 : next_after_fail694:;
2214 : }
2215 : }
2216 : }
2217 : }
2218 : }
2219 : else
2220 : {
2221 995803 : if (wi::to_wide (cst) == max - 1
2222 : )
2223 : {
2224 6341 : if (cmp == GT_EXPR
2225 : )
2226 : {
2227 1415 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail695;
2228 1415 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail695;
2229 1415 : {
2230 1415 : tree res_op0;
2231 1415 : res_op0 = captures[0];
2232 1415 : tree res_op1;
2233 1415 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2234 1415 : wide_int_to_tree (TREE_TYPE (cst),
2235 1415 : wi::to_wide (cst)
2236 2830 : + 1));
2237 1415 : tree _r;
2238 1415 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2239 1415 : if (TREE_SIDE_EFFECTS (captures[2]))
2240 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2241 1415 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 582, __FILE__, __LINE__, true);
2242 1415 : return _r;
2243 : }
2244 991211 : next_after_fail695:;
2245 : }
2246 : else
2247 : {
2248 4926 : if (cmp == LE_EXPR
2249 : )
2250 : {
2251 4926 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail696;
2252 4926 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail696;
2253 4926 : {
2254 4926 : tree res_op0;
2255 4926 : res_op0 = captures[0];
2256 4926 : tree res_op1;
2257 4926 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2258 4926 : wide_int_to_tree (TREE_TYPE (cst),
2259 4926 : wi::to_wide (cst)
2260 9852 : + 1));
2261 4926 : tree _r;
2262 4926 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2263 4926 : if (TREE_SIDE_EFFECTS (captures[2]))
2264 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2265 4926 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 583, __FILE__, __LINE__, true);
2266 4926 : return _r;
2267 : }
2268 991211 : next_after_fail696:;
2269 : }
2270 : }
2271 : }
2272 : else
2273 : {
2274 989462 : if (wi::to_wide (cst) == min + 1
2275 : )
2276 : {
2277 56088 : if (cmp == GE_EXPR
2278 : )
2279 : {
2280 1741 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail697;
2281 1741 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail697;
2282 1741 : {
2283 1741 : tree res_op0;
2284 1741 : res_op0 = captures[0];
2285 1741 : tree res_op1;
2286 1741 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2287 1741 : wide_int_to_tree (TREE_TYPE (cst),
2288 1741 : wi::to_wide (cst)
2289 3482 : - 1));
2290 1741 : tree _r;
2291 1741 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2292 1741 : if (TREE_SIDE_EFFECTS (captures[2]))
2293 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2294 1741 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 584, __FILE__, __LINE__, true);
2295 1741 : return _r;
2296 : }
2297 991211 : next_after_fail697:;
2298 : }
2299 : else
2300 : {
2301 54347 : if (cmp == LT_EXPR
2302 : )
2303 : {
2304 334 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail698;
2305 334 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail698;
2306 334 : {
2307 334 : tree res_op0;
2308 334 : res_op0 = captures[0];
2309 334 : tree res_op1;
2310 334 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2311 334 : wide_int_to_tree (TREE_TYPE (cst),
2312 334 : wi::to_wide (cst)
2313 668 : - 1));
2314 334 : tree _r;
2315 334 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2316 334 : if (TREE_SIDE_EFFECTS (captures[2]))
2317 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2318 334 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 585, __FILE__, __LINE__, true);
2319 334 : return _r;
2320 : }
2321 991211 : next_after_fail698:;
2322 : }
2323 : }
2324 : }
2325 : else
2326 : {
2327 933374 : if (wi::to_wide (cst) == signed_max
2328 2884 : && TYPE_UNSIGNED (arg1_type)
2329 2884 : && TYPE_MODE (arg1_type) != BLKmode
2330 933374 : && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type))
2331 936258 : && INTEGRAL_TYPE_P (arg1_type)
2332 : )
2333 : {
2334 2884 : if (cmp == LE_EXPR || cmp == GT_EXPR
2335 : )
2336 : {
2337 2884 : {
2338 2884 : tree st = signed_type_for (TREE_TYPE (captures[2]));
2339 2884 : if (cst == captures[2] && cmp == LE_EXPR
2340 : )
2341 : {
2342 2841 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail699;
2343 2841 : {
2344 2841 : tree res_op0;
2345 2841 : {
2346 2841 : tree _o1[1], _r1;
2347 2841 : _o1[0] = captures[1];
2348 2841 : if (TREE_TYPE (_o1[0]) != st)
2349 : {
2350 2837 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2351 : }
2352 : else
2353 : _r1 = _o1[0];
2354 2841 : res_op0 = _r1;
2355 : }
2356 2841 : tree res_op1;
2357 2841 : res_op1 = build_zero_cst (st);
2358 2841 : tree _r;
2359 2841 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2360 2841 : if (TREE_SIDE_EFFECTS (captures[2]))
2361 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2362 2841 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 586, __FILE__, __LINE__, true);
2363 2841 : return _r;
2364 : }
2365 0 : next_after_fail699:;
2366 0 : }
2367 : else
2368 : {
2369 43 : if (cst == captures[2] && cmp == GT_EXPR
2370 : )
2371 : {
2372 43 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail700;
2373 43 : {
2374 43 : tree res_op0;
2375 43 : {
2376 43 : tree _o1[1], _r1;
2377 43 : _o1[0] = captures[1];
2378 43 : if (TREE_TYPE (_o1[0]) != st)
2379 : {
2380 43 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2381 : }
2382 : else
2383 : _r1 = _o1[0];
2384 43 : res_op0 = _r1;
2385 : }
2386 43 : tree res_op1;
2387 43 : res_op1 = build_zero_cst (st);
2388 43 : tree _r;
2389 43 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2390 43 : if (TREE_SIDE_EFFECTS (captures[2]))
2391 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2392 43 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 587, __FILE__, __LINE__, true);
2393 43 : return _r;
2394 : }
2395 0 : next_after_fail700:;
2396 0 : }
2397 : else
2398 : {
2399 0 : if (cmp == LE_EXPR
2400 : )
2401 : {
2402 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail701;
2403 0 : {
2404 0 : tree res_op0;
2405 0 : {
2406 0 : tree _o1[1], _r1;
2407 0 : _o1[0] = captures[1];
2408 0 : if (TREE_TYPE (_o1[0]) != st)
2409 : {
2410 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2411 : }
2412 : else
2413 : _r1 = _o1[0];
2414 0 : res_op0 = _r1;
2415 : }
2416 0 : tree res_op1;
2417 0 : res_op1 = build_zero_cst (st);
2418 0 : tree _r;
2419 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2420 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2421 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2422 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 588, __FILE__, __LINE__, true);
2423 0 : return _r;
2424 : }
2425 0 : next_after_fail701:;
2426 : }
2427 : else
2428 : {
2429 0 : if (cmp == GT_EXPR
2430 : )
2431 : {
2432 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail702;
2433 0 : {
2434 0 : tree res_op0;
2435 0 : {
2436 0 : tree _o1[1], _r1;
2437 0 : _o1[0] = captures[1];
2438 0 : if (TREE_TYPE (_o1[0]) != st)
2439 : {
2440 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2441 : }
2442 : else
2443 : _r1 = _o1[0];
2444 0 : res_op0 = _r1;
2445 : }
2446 0 : tree res_op1;
2447 0 : res_op1 = build_zero_cst (st);
2448 0 : tree _r;
2449 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2450 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2451 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2452 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 589, __FILE__, __LINE__, true);
2453 0 : return _r;
2454 : }
2455 0 : next_after_fail702:;
2456 : }
2457 : }
2458 : }
2459 : }
2460 : }
2461 : }
2462 : }
2463 : }
2464 : }
2465 : }
2466 : }
2467 1053035 : }
2468 : }
2469 : return NULL_TREE;
2470 : }
2471 :
2472 : tree
2473 1 : generic_simplify_461 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2474 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2475 : {
2476 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2477 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail811;
2478 1 : {
2479 1 : tree res_op0;
2480 1 : res_op0 = captures[0];
2481 1 : tree res_op1;
2482 1 : res_op1 = captures[1];
2483 1 : tree _r;
2484 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2485 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 663, __FILE__, __LINE__, true);
2486 : return _r;
2487 : }
2488 0 : next_after_fail811:;
2489 0 : return NULL_TREE;
2490 : }
2491 :
2492 : tree
2493 912711 : generic_simplify_467 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2494 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2495 : const enum tree_code ARG_UNUSED (op))
2496 : {
2497 912711 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2498 912711 : {
2499 912711 : tree pmop[2];
2500 912711 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[3], op, captures[1], ERROR_MARK,
2501 : NULL_TREE, NULL_TREE, captures[2], ERROR_MARK,
2502 : NULL_TREE, NULL_TREE, pmop);
2503 912711 : if (utype
2504 : )
2505 : {
2506 323888 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail817;
2507 323888 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail817;
2508 323888 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail817;
2509 323888 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail817;
2510 323888 : {
2511 323888 : tree res_op0;
2512 323888 : {
2513 323888 : tree _o1[2], _r1;
2514 323888 : {
2515 323888 : tree _o2[2], _r2;
2516 323888 : {
2517 323888 : tree _o3[1], _r3;
2518 323888 : _o3[0] = pmop[0];
2519 323888 : if (TREE_TYPE (_o3[0]) != utype)
2520 : {
2521 238 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2522 : }
2523 : else
2524 : _r3 = _o3[0];
2525 323888 : _o2[0] = _r3;
2526 : }
2527 323888 : {
2528 323888 : tree _o3[1], _r3;
2529 323888 : _o3[0] = pmop[1];
2530 323888 : if (TREE_TYPE (_o3[0]) != utype)
2531 : {
2532 238 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2533 : }
2534 : else
2535 : _r3 = _o3[0];
2536 323888 : _o2[1] = _r3;
2537 : }
2538 323888 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2539 323888 : _o1[0] = _r2;
2540 : }
2541 323888 : {
2542 323888 : tree _o2[1], _r2;
2543 323888 : _o2[0] = captures[3];
2544 323888 : if (TREE_TYPE (_o2[0]) != utype)
2545 : {
2546 238 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2547 : }
2548 : else
2549 : _r2 = _o2[0];
2550 323888 : _o1[1] = _r2;
2551 : }
2552 323888 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2553 323888 : res_op0 = _r1;
2554 : }
2555 323888 : tree _r;
2556 323888 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2557 323888 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 668, __FILE__, __LINE__, true);
2558 323888 : return _r;
2559 : }
2560 588823 : next_after_fail817:;
2561 : }
2562 : }
2563 588823 : return NULL_TREE;
2564 : }
2565 :
2566 : tree
2567 0 : generic_simplify_480 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2568 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2569 : const enum tree_code ARG_UNUSED (code2),
2570 : const enum tree_code ARG_UNUSED (code1))
2571 : {
2572 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2573 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2574 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2575 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2576 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2]))
2577 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[2])))
2578 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2579 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2580 0 : && bitwise_equal_p (captures[2], captures[5]))
2581 : )
2582 : {
2583 0 : {
2584 0 : bool one_before = false;
2585 0 : bool one_after = false;
2586 0 : int cmp = 0;
2587 0 : bool allbits = true;
2588 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
2589 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2590 : {
2591 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2592 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2593 0 : auto t2 = wi::to_wide (captures[5]);
2594 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2595 0 : if (cmp < 0
2596 0 : && t1 == t2 - 1)
2597 : one_before = true;
2598 0 : if (cmp > 0
2599 0 : && t1 == t2 + 1)
2600 : one_after = true;
2601 : }
2602 0 : bool val;
2603 0 : switch (code2)
2604 : {
2605 0 : case EQ_EXPR: val = (cmp == 0); break;
2606 0 : case NE_EXPR: val = (cmp != 0); break;
2607 0 : case LT_EXPR: val = (cmp < 0); break;
2608 0 : case GT_EXPR: val = (cmp > 0); break;
2609 0 : case LE_EXPR: val = (cmp <= 0); break;
2610 0 : case GE_EXPR: val = (cmp >= 0); break;
2611 0 : default: gcc_unreachable ();
2612 : }
2613 0 : if (code1 == EQ_EXPR && val
2614 : )
2615 : {
2616 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail832;
2617 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail832;
2618 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail832;
2619 0 : {
2620 0 : tree _r;
2621 0 : _r = captures[0];
2622 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2623 0 : return _r;
2624 : }
2625 : next_after_fail832:;
2626 : }
2627 : else
2628 : {
2629 0 : if (code1 == EQ_EXPR && !val
2630 : )
2631 : {
2632 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail833;
2633 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail833;
2634 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail833;
2635 0 : {
2636 0 : tree _r;
2637 0 : _r = constant_boolean_node (false, type);
2638 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2639 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2640 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2641 0 : return _r;
2642 : }
2643 : next_after_fail833:;
2644 : }
2645 : else
2646 : {
2647 0 : if (code1 == NE_EXPR && !val && allbits
2648 : )
2649 : {
2650 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail834;
2651 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail834;
2652 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail834;
2653 0 : {
2654 0 : tree _r;
2655 0 : _r = captures[3];
2656 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 684, __FILE__, __LINE__, true);
2657 0 : return _r;
2658 : }
2659 : next_after_fail834:;
2660 : }
2661 : else
2662 : {
2663 0 : if ((code1 == NE_EXPR
2664 0 : && code2 == GE_EXPR
2665 0 : && cmp == 0
2666 0 : && allbits)
2667 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2668 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2669 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2670 : )
2671 : {
2672 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail835;
2673 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail835;
2674 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail835;
2675 0 : {
2676 0 : tree res_op0;
2677 0 : res_op0 = captures[4];
2678 0 : tree res_op1;
2679 0 : {
2680 0 : tree _o1[1], _r1;
2681 0 : _o1[0] = captures[2];
2682 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2683 : {
2684 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2685 : }
2686 : else
2687 : _r1 = _o1[0];
2688 0 : res_op1 = _r1;
2689 : }
2690 0 : tree _r;
2691 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2692 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 685, __FILE__, __LINE__, true);
2693 0 : return _r;
2694 : }
2695 : next_after_fail835:;
2696 : }
2697 : else
2698 : {
2699 0 : if ((code1 == NE_EXPR
2700 0 : && code2 == LE_EXPR
2701 0 : && cmp == 0
2702 0 : && allbits)
2703 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2704 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2705 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2706 : )
2707 : {
2708 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail836;
2709 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail836;
2710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail836;
2711 0 : {
2712 0 : tree res_op0;
2713 0 : res_op0 = captures[4];
2714 0 : tree res_op1;
2715 0 : {
2716 0 : tree _o1[1], _r1;
2717 0 : _o1[0] = captures[2];
2718 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2719 : {
2720 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2721 : }
2722 : else
2723 : _r1 = _o1[0];
2724 0 : res_op1 = _r1;
2725 : }
2726 0 : tree _r;
2727 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2728 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 686, __FILE__, __LINE__, true);
2729 0 : return _r;
2730 : }
2731 : next_after_fail836:;
2732 : }
2733 : else
2734 : {
2735 0 : if ((code1 == NE_EXPR
2736 0 : && code2 == GT_EXPR
2737 : && one_after
2738 0 : && allbits)
2739 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2740 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2741 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2742 : )
2743 : {
2744 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail837;
2745 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail837;
2746 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail837;
2747 0 : {
2748 0 : tree res_op0;
2749 0 : res_op0 = captures[4];
2750 0 : tree res_op1;
2751 0 : {
2752 0 : tree _o1[1], _r1;
2753 0 : _o1[0] = captures[2];
2754 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2755 : {
2756 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2757 : }
2758 : else
2759 : _r1 = _o1[0];
2760 0 : res_op1 = _r1;
2761 : }
2762 0 : tree _r;
2763 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2764 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 687, __FILE__, __LINE__, true);
2765 0 : return _r;
2766 : }
2767 : next_after_fail837:;
2768 : }
2769 : else
2770 : {
2771 0 : if ((code1 == NE_EXPR
2772 0 : && code2 == LT_EXPR
2773 : && one_before
2774 0 : && allbits)
2775 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2776 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2777 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2778 : )
2779 : {
2780 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail838;
2781 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail838;
2782 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail838;
2783 0 : {
2784 0 : tree res_op0;
2785 0 : res_op0 = captures[4];
2786 0 : tree res_op1;
2787 0 : {
2788 0 : tree _o1[1], _r1;
2789 0 : _o1[0] = captures[2];
2790 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2791 : {
2792 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2793 : }
2794 : else
2795 : _r1 = _o1[0];
2796 0 : res_op1 = _r1;
2797 : }
2798 0 : tree _r;
2799 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2800 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 688, __FILE__, __LINE__, true);
2801 0 : return _r;
2802 : }
2803 : next_after_fail838:;
2804 : }
2805 : }
2806 : }
2807 : }
2808 : }
2809 : }
2810 : }
2811 : }
2812 : }
2813 : return NULL_TREE;
2814 : }
2815 :
2816 : tree
2817 31 : generic_simplify_510 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2818 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2819 : {
2820 31 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2821 31 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2822 54 : && (element_precision (TREE_TYPE (captures[2]))
2823 23 : <= element_precision (TREE_TYPE (captures[3]))
2824 1 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2825 : )
2826 : {
2827 22 : {
2828 22 : tree shift_type = TREE_TYPE (captures[2]);
2829 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail904;
2830 22 : {
2831 22 : tree res_op0;
2832 22 : {
2833 22 : tree _o1[2], _r1;
2834 22 : {
2835 22 : tree _o2[1], _r2;
2836 22 : _o2[0] = captures[3];
2837 22 : if (TREE_TYPE (_o2[0]) != shift_type)
2838 : {
2839 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o2[0]);
2840 : }
2841 : else
2842 : _r2 = _o2[0];
2843 22 : _o1[0] = _r2;
2844 : }
2845 22 : _o1[1] = captures[4];
2846 22 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2847 22 : res_op0 = _r1;
2848 : }
2849 22 : tree _r;
2850 22 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2851 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 716, __FILE__, __LINE__, true);
2852 22 : return _r;
2853 : }
2854 0 : next_after_fail904:;
2855 : }
2856 : }
2857 : return NULL_TREE;
2858 : }
2859 :
2860 : tree
2861 3814 : generic_simplify_522 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2862 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2863 : {
2864 3814 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2865 3814 : if (!TYPE_SATURATING (type)
2866 : )
2867 : {
2868 3779 : if (!TYPE_OVERFLOW_SANITIZED (type)
2869 7580 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
2870 : )
2871 : {
2872 3801 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail917;
2873 3801 : {
2874 3801 : tree res_op0;
2875 3801 : {
2876 3801 : tree _o1[1], _r1;
2877 3801 : _o1[0] = captures[0];
2878 3801 : if (TREE_TYPE (_o1[0]) != type)
2879 : {
2880 31 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2881 : }
2882 : else
2883 : _r1 = _o1[0];
2884 3801 : res_op0 = _r1;
2885 : }
2886 3801 : tree _r;
2887 3801 : _r = non_lvalue_loc (loc, res_op0);
2888 3801 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 727, __FILE__, __LINE__, true);
2889 3801 : return _r;
2890 : }
2891 0 : next_after_fail917:;
2892 : }
2893 : }
2894 : return NULL_TREE;
2895 : }
2896 :
2897 : tree
2898 0 : generic_simplify_529 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2899 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2900 : const enum tree_code ARG_UNUSED (minmax))
2901 : {
2902 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2903 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail925;
2904 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail925;
2905 0 : {
2906 0 : tree _r;
2907 0 : _r = captures[0];
2908 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 734, __FILE__, __LINE__, true);
2909 : return _r;
2910 : }
2911 : next_after_fail925:;
2912 : return NULL_TREE;
2913 : }
2914 :
2915 : tree
2916 47 : generic_simplify_536 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2917 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2918 : const enum tree_code ARG_UNUSED (minmax),
2919 : const enum tree_code ARG_UNUSED (cmp))
2920 : {
2921 47 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2922 47 : {
2923 47 : poly_int64 off0, off1;
2924 47 : tree base0, base1;
2925 47 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2926 : off0, off1,
2927 : 1
2928 : );
2929 47 : if (equal == 1
2930 : )
2931 : {
2932 0 : if (minmax == MIN_EXPR
2933 : )
2934 : {
2935 0 : if (known_le (off0, off1)
2936 : )
2937 : {
2938 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail934;
2939 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail934;
2940 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail934;
2941 0 : {
2942 0 : tree _r;
2943 0 : _r = captures[0];
2944 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 743, __FILE__, __LINE__, true);
2945 0 : return _r;
2946 : }
2947 47 : next_after_fail934:;
2948 : }
2949 : else
2950 : {
2951 0 : if (known_gt (off0, off1)
2952 : )
2953 : {
2954 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail935;
2955 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail935;
2956 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail935;
2957 0 : {
2958 0 : tree _r;
2959 0 : _r = captures[2];
2960 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 744, __FILE__, __LINE__, true);
2961 0 : return _r;
2962 : }
2963 47 : next_after_fail935:;
2964 : }
2965 : }
2966 : }
2967 : else
2968 : {
2969 0 : if (known_ge (off0, off1)
2970 : )
2971 : {
2972 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail936;
2973 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail936;
2974 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail936;
2975 0 : {
2976 0 : tree _r;
2977 0 : _r = captures[0];
2978 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 745, __FILE__, __LINE__, true);
2979 0 : return _r;
2980 : }
2981 47 : next_after_fail936:;
2982 : }
2983 : else
2984 : {
2985 0 : if (known_lt (off0, off1)
2986 : )
2987 : {
2988 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail937;
2989 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail937;
2990 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail937;
2991 0 : {
2992 0 : tree _r;
2993 0 : _r = captures[2];
2994 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 746, __FILE__, __LINE__, true);
2995 0 : return _r;
2996 : }
2997 47 : next_after_fail937:;
2998 : }
2999 : }
3000 : }
3001 : }
3002 : }
3003 47 : return NULL_TREE;
3004 : }
3005 :
3006 : tree
3007 0 : generic_simplify_555 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3008 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3009 : const combined_fn ARG_UNUSED (cond_op))
3010 : {
3011 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3012 0 : {
3013 0 : tree op_type = TREE_TYPE (captures[3]);
3014 0 : if (element_precision (type) == element_precision (op_type)
3015 : )
3016 : {
3017 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail965;
3018 0 : {
3019 0 : tree res_op0;
3020 0 : {
3021 0 : tree _o1[4], _r1;
3022 0 : _o1[0] = captures[0];
3023 0 : _o1[1] = captures[1];
3024 0 : _o1[2] = captures[2];
3025 0 : {
3026 0 : tree _o2[1], _r2;
3027 0 : _o2[0] = captures[4];
3028 0 : if (TREE_TYPE (_o2[0]) != op_type)
3029 : {
3030 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3031 : }
3032 : else
3033 : _r2 = _o2[0];
3034 0 : _o1[3] = _r2;
3035 : }
3036 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 4, _o1[0], _o1[1], _o1[2], _o1[3]);
3037 0 : if (!_r1)
3038 0 : goto next_after_fail965;
3039 0 : res_op0 = _r1;
3040 : }
3041 0 : tree _r;
3042 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3043 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3044 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3045 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 757, __FILE__, __LINE__, true);
3046 0 : return _r;
3047 : }
3048 : next_after_fail965:;
3049 : }
3050 : }
3051 : return NULL_TREE;
3052 : }
3053 :
3054 : tree
3055 0 : generic_simplify_565 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3056 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3057 : const enum tree_code ARG_UNUSED (rotate))
3058 : {
3059 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3060 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail975;
3061 0 : {
3062 0 : tree _r;
3063 0 : _r = captures[0];
3064 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3065 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3066 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 767, __FILE__, __LINE__, true);
3067 : return _r;
3068 : }
3069 0 : next_after_fail975:;
3070 0 : return NULL_TREE;
3071 : }
3072 :
3073 : tree
3074 0 : generic_simplify_575 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3075 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3076 : const combined_fn ARG_UNUSED (ovf))
3077 : {
3078 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3079 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3080 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3081 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
3082 0 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) || TYPE_UNSIGNED (TREE_TYPE (captures[1])))
3083 : )
3084 : {
3085 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail988;
3086 0 : {
3087 0 : tree res_op0;
3088 0 : res_op0 = captures[1];
3089 0 : tree res_op1;
3090 0 : res_op1 = captures[2];
3091 0 : tree _r;
3092 0 : _r = maybe_build_call_expr_loc (loc, ovf, type, 2, res_op0, res_op1);
3093 0 : if (!_r)
3094 0 : goto next_after_fail988;
3095 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 780, __FILE__, __LINE__, true);
3096 0 : return _r;
3097 : }
3098 : next_after_fail988:;
3099 : }
3100 : return NULL_TREE;
3101 : }
3102 :
3103 : tree
3104 0 : generic_simplify_583 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3105 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3106 : const combined_fn ARG_UNUSED (fns))
3107 : {
3108 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3109 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail996;
3110 0 : {
3111 0 : tree res_op0;
3112 0 : res_op0 = captures[0];
3113 0 : tree _r;
3114 0 : _r = maybe_build_call_expr_loc (loc, fns, type, 1, res_op0);
3115 0 : if (!_r)
3116 0 : goto next_after_fail996;
3117 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 788, __FILE__, __LINE__, true);
3118 : return _r;
3119 : }
3120 : next_after_fail996:;
3121 : return NULL_TREE;
3122 : }
3123 :
3124 : tree
3125 0 : generic_simplify_590 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3126 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3127 : const combined_fn ARG_UNUSED (froms),
3128 : const combined_fn ARG_UNUSED (tos))
3129 : {
3130 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3131 0 : if (optimize && canonicalize_math_p ()
3132 : )
3133 : {
3134 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1003;
3135 0 : {
3136 0 : tree res_op0;
3137 0 : res_op0 = captures[0];
3138 0 : tree _r;
3139 0 : _r = maybe_build_call_expr_loc (loc, tos, type, 1, res_op0);
3140 0 : if (!_r)
3141 0 : goto next_after_fail1003;
3142 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 795, __FILE__, __LINE__, true);
3143 0 : return _r;
3144 : }
3145 : next_after_fail1003:;
3146 : }
3147 : return NULL_TREE;
3148 : }
3149 :
3150 : tree
3151 0 : generic_simplify_598 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3152 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3153 : const combined_fn ARG_UNUSED (SIGNBIT))
3154 : {
3155 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3156 0 : if (!HONOR_SIGNED_ZEROS (captures[0])
3157 : )
3158 : {
3159 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1011;
3160 0 : {
3161 0 : tree res_op0;
3162 0 : {
3163 0 : tree _o1[2], _r1;
3164 0 : _o1[0] = captures[0];
3165 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), dconst0);
3166 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3167 0 : res_op0 = _r1;
3168 : }
3169 0 : tree _r;
3170 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3171 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 803, __FILE__, __LINE__, true);
3172 0 : return _r;
3173 : }
3174 0 : next_after_fail1011:;
3175 : }
3176 : return NULL_TREE;
3177 : }
3178 :
3179 : tree
3180 0 : generic_simplify_607 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3181 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3182 : {
3183 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3184 0 : if (canonicalize_math_after_vectorization_p ()
3185 : )
3186 : {
3187 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1020;
3188 : {
3189 : tree res_op0;
3190 : res_op0 = captures[0];
3191 : tree res_op1;
3192 : res_op1 = captures[1];
3193 : tree res_op2;
3194 : res_op2 = captures[2];
3195 : tree _r;
3196 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3197 : if (!_r)
3198 : goto next_after_fail1020;
3199 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 812, __FILE__, __LINE__, true);
3200 : return _r;
3201 : }
3202 0 : next_after_fail1020:;
3203 : }
3204 0 : return NULL_TREE;
3205 : }
3206 :
3207 : tree
3208 0 : generic_simplify_616 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3209 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3210 : {
3211 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3212 0 : if (canonicalize_math_after_vectorization_p ()
3213 : )
3214 : {
3215 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1029;
3216 : {
3217 : tree res_op0;
3218 : res_op0 = captures[0];
3219 : tree res_op1;
3220 : res_op1 = captures[1];
3221 : tree res_op2;
3222 : res_op2 = captures[2];
3223 : tree res_op3;
3224 : res_op3 = captures[3];
3225 : tree res_op4;
3226 : res_op4 = captures[4];
3227 : tree _r;
3228 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3229 : if (!_r)
3230 : goto next_after_fail1029;
3231 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
3232 : return _r;
3233 : }
3234 0 : next_after_fail1029:;
3235 : }
3236 0 : return NULL_TREE;
3237 : }
3238 :
3239 : tree
3240 0 : generic_simplify_627 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3241 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3242 : const combined_fn ARG_UNUSED (PARITY))
3243 : {
3244 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3245 0 : if ((element_precision (TREE_TYPE (captures[0])) & 1) == 0
3246 : )
3247 : {
3248 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1041;
3249 0 : {
3250 0 : tree res_op0;
3251 0 : res_op0 = captures[0];
3252 0 : tree _r;
3253 0 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
3254 0 : if (!_r)
3255 0 : goto next_after_fail1041;
3256 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
3257 0 : return _r;
3258 : }
3259 : next_after_fail1041:;
3260 : }
3261 : else
3262 : {
3263 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1042;
3264 0 : {
3265 0 : tree res_op0;
3266 0 : {
3267 0 : tree _o1[1], _r1;
3268 0 : _o1[0] = captures[0];
3269 0 : _r1 = maybe_build_call_expr_loc (loc, PARITY, type, 1, _o1[0]);
3270 0 : if (!_r1)
3271 0 : goto next_after_fail1042;
3272 0 : res_op0 = _r1;
3273 : }
3274 0 : tree res_op1;
3275 0 : res_op1 = build_one_cst (type);
3276 0 : tree _r;
3277 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
3278 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 829, __FILE__, __LINE__, true);
3279 0 : return _r;
3280 : }
3281 : next_after_fail1042:;
3282 : }
3283 : return NULL_TREE;
3284 : }
3285 :
3286 : tree
3287 0 : generic_simplify_634 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3288 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3289 : const enum tree_code ARG_UNUSED (plusminus),
3290 : const enum tree_code ARG_UNUSED (minusplus))
3291 : {
3292 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3293 0 : if (!VECTOR_INTEGER_TYPE_P (type)
3294 : && !FLOAT_WORDS_BIG_ENDIAN
3295 0 : && (operand_equal_p (captures[0], captures[2], 0)
3296 0 : ? operand_equal_p (captures[1], captures[3], 0)
3297 0 : : operand_equal_p (captures[0], captures[3], 0) && operand_equal_p (captures[1], captures[2], 0))
3298 : )
3299 : {
3300 0 : {
3301 0 : vec_perm_builder builder;
3302 0 : if (tree_to_vec_perm_builder (&builder, captures[4])
3303 : )
3304 : {
3305 0 : {
3306 0 : poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
3307 0 : vec_perm_indices sel (builder, 2, nelts);
3308 0 : machine_mode vec_mode = TYPE_MODE (type);
3309 0 : machine_mode wide_mode;
3310 0 : scalar_mode wide_elt_mode;
3311 0 : poly_uint64 wide_nunits;
3312 0 : scalar_mode inner_mode = GET_MODE_INNER (vec_mode);
3313 0 : if (VECTOR_MODE_P (vec_mode)
3314 0 : && sel.series_p (0, 2, 0, 2)
3315 0 : && sel.series_p (1, 2, nelts + 1, 2)
3316 0 : && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode)
3317 0 : && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits)
3318 0 : && related_vector_mode (vec_mode, wide_elt_mode,
3319 0 : wide_nunits).exists (&wide_mode)
3320 : )
3321 : {
3322 0 : {
3323 0 : tree stype
3324 0 : = lang_hooks.types.type_for_mode (GET_MODE_INNER (wide_mode),
3325 0 : TYPE_UNSIGNED (type));
3326 0 : tree ntype = build_vector_type_for_mode (stype, wide_mode);
3327 0 : const struct real_format *fmt_old = FLOAT_MODE_FORMAT (vec_mode);
3328 0 : const struct real_format *fmt_new = FLOAT_MODE_FORMAT (wide_mode);
3329 0 : if (TYPE_MODE (stype) != BLKmode
3330 0 : && VECTOR_TYPE_P (ntype)
3331 0 : && fmt_old != NULL
3332 0 : && fmt_new != NULL
3333 : )
3334 : {
3335 0 : {
3336 0 : if (known_eq (GET_MODE_NUNITS (wide_mode), 1)
3337 0 : && !target_supports_op_p (ntype, NEGATE_EXPR, optab_vector))
3338 : ntype = stype;
3339 0 : if (fmt_new->signbit_rw
3340 0 : == fmt_old->signbit_rw + GET_MODE_UNIT_BITSIZE (vec_mode)
3341 0 : && fmt_new->signbit_rw == fmt_new->signbit_ro
3342 0 : && targetm.can_change_mode_class (TYPE_MODE (ntype),
3343 0 : TYPE_MODE (type), ALL_REGS)
3344 0 : && ((optimize_vectors_before_lowering_p ()
3345 0 : && VECTOR_TYPE_P (ntype))
3346 0 : || target_supports_op_p (ntype, NEGATE_EXPR, optab_vector))
3347 : )
3348 : {
3349 0 : if (plusminus == PLUS_EXPR
3350 : )
3351 : {
3352 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1049;
3353 0 : {
3354 0 : tree res_op0;
3355 0 : {
3356 0 : tree _o1[1], _r1;
3357 0 : {
3358 0 : tree _o2[1], _r2;
3359 0 : {
3360 0 : tree _o3[1], _r3;
3361 0 : _o3[0] = captures[3];
3362 0 : if (TREE_TYPE (_o3[0]) != ntype)
3363 : {
3364 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o3[0]);
3365 : }
3366 : else
3367 : _r3 = _o3[0];
3368 0 : _o2[0] = _r3;
3369 : }
3370 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3371 0 : _o1[0] = _r2;
3372 : }
3373 0 : if (TREE_TYPE (_o1[0]) != type)
3374 : {
3375 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3376 : }
3377 : else
3378 : _r1 = _o1[0];
3379 0 : res_op0 = _r1;
3380 : }
3381 0 : tree res_op1;
3382 0 : res_op1 = captures[2];
3383 0 : tree _r;
3384 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3385 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3386 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3387 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3388 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3389 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3390 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3391 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 834, __FILE__, __LINE__, true);
3392 0 : return _r;
3393 : }
3394 0 : next_after_fail1049:;
3395 : }
3396 : else
3397 : {
3398 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1050;
3399 0 : {
3400 0 : tree res_op0;
3401 0 : res_op0 = captures[0];
3402 0 : tree res_op1;
3403 0 : {
3404 0 : tree _o1[1], _r1;
3405 0 : {
3406 0 : tree _o2[1], _r2;
3407 0 : {
3408 0 : tree _o3[1], _r3;
3409 0 : _o3[0] = captures[1];
3410 0 : if (TREE_TYPE (_o3[0]) != ntype)
3411 : {
3412 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o3[0]);
3413 : }
3414 : else
3415 : _r3 = _o3[0];
3416 0 : _o2[0] = _r3;
3417 : }
3418 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3419 0 : _o1[0] = _r2;
3420 : }
3421 0 : if (TREE_TYPE (_o1[0]) != type)
3422 : {
3423 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3424 : }
3425 : else
3426 : _r1 = _o1[0];
3427 0 : res_op1 = _r1;
3428 : }
3429 0 : tree _r;
3430 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3431 0 : if (TREE_SIDE_EFFECTS (captures[2]))
3432 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3433 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3434 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3435 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3436 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3437 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 835, __FILE__, __LINE__, true);
3438 0 : return _r;
3439 : }
3440 0 : next_after_fail1050:;
3441 : }
3442 : }
3443 : }
3444 : }
3445 : }
3446 : }
3447 0 : }
3448 : }
3449 0 : }
3450 : }
3451 : return NULL_TREE;
3452 : }
3453 :
3454 : tree
3455 1330 : generic_simplify_CONJ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3456 : {
3457 1330 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3458 1330 : switch (TREE_CODE (_p0))
3459 : {
3460 0 : CASE_CONVERT:
3461 0 : {
3462 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3463 0 : switch (TREE_CODE (_q20))
3464 : {
3465 0 : case CONJ_EXPR:
3466 0 : {
3467 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3468 0 : {
3469 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3470 0 : tree res = generic_simplify_568 (loc, type, _p0, captures);
3471 0 : if (res) return res;
3472 : }
3473 0 : break;
3474 : }
3475 0 : case COMPLEX_EXPR:
3476 0 : {
3477 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3478 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3479 0 : {
3480 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3481 0 : {
3482 0 : tree itype = TREE_TYPE (type);
3483 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1173;
3484 0 : {
3485 0 : tree res_op0;
3486 0 : {
3487 0 : tree _o1[1], _r1;
3488 0 : _o1[0] = captures[2];
3489 0 : if (TREE_TYPE (_o1[0]) != itype)
3490 : {
3491 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
3492 : }
3493 : else
3494 : _r1 = _o1[0];
3495 0 : res_op0 = _r1;
3496 : }
3497 0 : tree res_op1;
3498 0 : {
3499 0 : tree _o1[1], _r1;
3500 0 : {
3501 0 : tree _o2[1], _r2;
3502 0 : _o2[0] = captures[3];
3503 0 : if (TREE_TYPE (_o2[0]) != itype)
3504 : {
3505 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
3506 : }
3507 : else
3508 : _r2 = _o2[0];
3509 0 : _o1[0] = _r2;
3510 : }
3511 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3512 0 : res_op1 = _r1;
3513 : }
3514 0 : tree _r;
3515 0 : _r = fold_build2_loc (loc, COMPLEX_EXPR, type, res_op0, res_op1);
3516 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
3517 0 : return _r;
3518 : }
3519 0 : next_after_fail1173:;
3520 : }
3521 : }
3522 0 : break;
3523 : }
3524 : default:;
3525 : }
3526 : break;
3527 : }
3528 1 : case CONJ_EXPR:
3529 1 : {
3530 1 : tree _q20 = TREE_OPERAND (_p0, 0);
3531 1 : {
3532 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3533 1 : tree res = generic_simplify_568 (loc, type, _p0, captures);
3534 1 : if (res) return res;
3535 : }
3536 0 : break;
3537 : }
3538 12 : case COMPLEX_EXPR:
3539 12 : {
3540 12 : tree _q20 = TREE_OPERAND (_p0, 0);
3541 12 : tree _q21 = TREE_OPERAND (_p0, 1);
3542 12 : {
3543 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3544 12 : {
3545 12 : tree itype = TREE_TYPE (type);
3546 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1174;
3547 12 : {
3548 12 : tree res_op0;
3549 12 : {
3550 12 : tree _o1[1], _r1;
3551 12 : _o1[0] = captures[2];
3552 12 : if (TREE_TYPE (_o1[0]) != itype)
3553 : {
3554 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
3555 : }
3556 : else
3557 : _r1 = _o1[0];
3558 12 : res_op0 = _r1;
3559 : }
3560 12 : tree res_op1;
3561 12 : {
3562 12 : tree _o1[1], _r1;
3563 12 : {
3564 12 : tree _o2[1], _r2;
3565 12 : _o2[0] = captures[3];
3566 12 : if (TREE_TYPE (_o2[0]) != itype)
3567 : {
3568 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
3569 : }
3570 : else
3571 : _r2 = _o2[0];
3572 12 : _o1[0] = _r2;
3573 : }
3574 12 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3575 12 : res_op1 = _r1;
3576 : }
3577 12 : tree _r;
3578 12 : _r = fold_build2_loc (loc, COMPLEX_EXPR, type, res_op0, res_op1);
3579 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
3580 12 : return _r;
3581 : }
3582 0 : next_after_fail1174:;
3583 : }
3584 : }
3585 0 : break;
3586 : }
3587 : default:;
3588 : }
3589 : return NULL_TREE;
3590 : }
3591 :
3592 : tree
3593 98658411 : generic_simplify_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3594 : {
3595 98658411 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3596 98658411 : switch (TREE_CODE (_p0))
3597 : {
3598 1533 : case BIT_XOR_EXPR:
3599 1533 : {
3600 1533 : tree _q20 = TREE_OPERAND (_p0, 0);
3601 1533 : tree _q21 = TREE_OPERAND (_p0, 1);
3602 1533 : switch (TREE_CODE (_q21))
3603 : {
3604 8 : case NEGATE_EXPR:
3605 8 : {
3606 8 : tree _q40 = TREE_OPERAND (_q21, 0);
3607 8 : switch (TREE_CODE (_q40))
3608 : {
3609 0 : CASE_CONVERT:
3610 0 : {
3611 0 : tree _q50 = TREE_OPERAND (_q40, 0);
3612 0 : switch (TREE_CODE (_q50))
3613 : {
3614 0 : case LT_EXPR:
3615 0 : {
3616 0 : tree _q60 = TREE_OPERAND (_q50, 0);
3617 0 : tree _q61 = TREE_OPERAND (_q50, 1);
3618 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
3619 : {
3620 0 : if (integer_zerop (_q61))
3621 : {
3622 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
3623 : {
3624 0 : {
3625 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
3626 0 : tree res = generic_simplify_51 (loc, type, _p0, _p1, captures);
3627 0 : if (res) return res;
3628 : }
3629 : }
3630 : }
3631 : }
3632 : break;
3633 : }
3634 : default:;
3635 : }
3636 : break;
3637 : }
3638 : default:;
3639 : }
3640 : break;
3641 : }
3642 1533 : default:;
3643 : }
3644 1533 : switch (TREE_CODE (_q20))
3645 : {
3646 9 : case NEGATE_EXPR:
3647 9 : {
3648 9 : tree _q30 = TREE_OPERAND (_q20, 0);
3649 9 : switch (TREE_CODE (_q30))
3650 : {
3651 0 : CASE_CONVERT:
3652 0 : {
3653 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3654 0 : switch (TREE_CODE (_q40))
3655 : {
3656 0 : case LT_EXPR:
3657 0 : {
3658 0 : tree _q50 = TREE_OPERAND (_q40, 0);
3659 0 : tree _q51 = TREE_OPERAND (_q40, 1);
3660 0 : if (integer_zerop (_q51))
3661 : {
3662 0 : if ((_q21 == _q50 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q50, 0) && types_match (_q21, _q50)))
3663 : {
3664 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
3665 : {
3666 0 : {
3667 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
3668 0 : tree res = generic_simplify_51 (loc, type, _p0, _p1, captures);
3669 0 : if (res) return res;
3670 : }
3671 : }
3672 : }
3673 : }
3674 : break;
3675 : }
3676 : default:;
3677 : }
3678 : break;
3679 : }
3680 : default:;
3681 : }
3682 : break;
3683 : }
3684 : default:;
3685 : }
3686 : break;
3687 : }
3688 98658411 : default:;
3689 : }
3690 98658411 : switch (TREE_CODE (_p1))
3691 : {
3692 165 : case BIT_XOR_EXPR:
3693 165 : {
3694 165 : tree _q30 = TREE_OPERAND (_p1, 0);
3695 165 : tree _q31 = TREE_OPERAND (_p1, 1);
3696 165 : switch (TREE_CODE (_q31))
3697 : {
3698 0 : case NEGATE_EXPR:
3699 0 : {
3700 0 : tree _q50 = TREE_OPERAND (_q31, 0);
3701 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
3702 : {
3703 0 : switch (TREE_CODE (_q50))
3704 : {
3705 0 : CASE_CONVERT:
3706 0 : {
3707 0 : tree _q70 = TREE_OPERAND (_q50, 0);
3708 0 : switch (TREE_CODE (_q70))
3709 : {
3710 0 : case LT_EXPR:
3711 0 : {
3712 0 : tree _q80 = TREE_OPERAND (_q70, 0);
3713 0 : tree _q81 = TREE_OPERAND (_q70, 1);
3714 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
3715 : {
3716 0 : if (integer_zerop (_q81))
3717 : {
3718 0 : {
3719 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
3720 0 : tree res = generic_simplify_52 (loc, type, _p0, _p1, captures);
3721 0 : if (res) return res;
3722 : }
3723 : }
3724 : }
3725 : break;
3726 : }
3727 : default:;
3728 : }
3729 : break;
3730 : }
3731 : default:;
3732 : }
3733 : }
3734 : break;
3735 : }
3736 165 : default:;
3737 : }
3738 165 : switch (TREE_CODE (_q30))
3739 : {
3740 0 : case NEGATE_EXPR:
3741 0 : {
3742 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3743 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
3744 : {
3745 0 : switch (TREE_CODE (_q40))
3746 : {
3747 0 : CASE_CONVERT:
3748 0 : {
3749 0 : tree _q60 = TREE_OPERAND (_q40, 0);
3750 0 : switch (TREE_CODE (_q60))
3751 : {
3752 0 : case LT_EXPR:
3753 0 : {
3754 0 : tree _q70 = TREE_OPERAND (_q60, 0);
3755 0 : tree _q71 = TREE_OPERAND (_q60, 1);
3756 0 : if (integer_zerop (_q71))
3757 : {
3758 0 : if ((_q31 == _q70 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q70, 0) && types_match (_q31, _q70)))
3759 : {
3760 0 : {
3761 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q70, _p0 };
3762 0 : tree res = generic_simplify_52 (loc, type, _p0, _p1, captures);
3763 0 : if (res) return res;
3764 : }
3765 : }
3766 : }
3767 : break;
3768 : }
3769 : default:;
3770 : }
3771 : break;
3772 : }
3773 : default:;
3774 : }
3775 : }
3776 : break;
3777 : }
3778 : default:;
3779 : }
3780 : break;
3781 : }
3782 98658411 : default:;
3783 : }
3784 98658411 : if (integer_zerop (_p1))
3785 : {
3786 27829322 : {
3787 27829322 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3788 27829322 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1260;
3789 27829322 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1260;
3790 27829322 : {
3791 27829322 : tree res_op0;
3792 27829322 : res_op0 = captures[0];
3793 27829322 : tree _r;
3794 27829322 : _r = non_lvalue_loc (loc, res_op0);
3795 27829322 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
3796 27829322 : return _r;
3797 : }
3798 : next_after_fail1260:;
3799 : }
3800 : }
3801 70829089 : if (real_zerop (_p1))
3802 : {
3803 5343 : {
3804 5343 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3805 5343 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures);
3806 5343 : if (res) return res;
3807 : }
3808 : }
3809 70828994 : switch (TREE_CODE (_p0))
3810 : {
3811 6507403 : case PLUS_EXPR:
3812 6507403 : {
3813 6507403 : tree _q20 = TREE_OPERAND (_p0, 0);
3814 6507403 : tree _q21 = TREE_OPERAND (_p0, 1);
3815 6507403 : switch (TREE_CODE (_q21))
3816 : {
3817 119073 : case REAL_CST:
3818 119073 : {
3819 119073 : switch (TREE_CODE (_p1))
3820 : {
3821 70 : case REAL_CST:
3822 70 : {
3823 70 : {
3824 70 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3825 70 : tree res = generic_simplify_54 (loc, type, _p0, _p1, captures, PLUS_EXPR, PLUS_EXPR);
3826 70 : if (res) return res;
3827 : }
3828 67 : break;
3829 : }
3830 : default:;
3831 : }
3832 : break;
3833 : }
3834 : default:;
3835 : }
3836 : break;
3837 : }
3838 2057304 : case MINUS_EXPR:
3839 2057304 : {
3840 2057304 : tree _q20 = TREE_OPERAND (_p0, 0);
3841 2057304 : tree _q21 = TREE_OPERAND (_p0, 1);
3842 2057304 : switch (TREE_CODE (_q21))
3843 : {
3844 22450 : case REAL_CST:
3845 22450 : {
3846 22450 : switch (TREE_CODE (_p1))
3847 : {
3848 190 : case REAL_CST:
3849 190 : {
3850 190 : {
3851 190 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3852 190 : tree res = generic_simplify_54 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR);
3853 190 : if (res) return res;
3854 : }
3855 188 : break;
3856 : }
3857 : default:;
3858 : }
3859 : break;
3860 : }
3861 : default:;
3862 : }
3863 : break;
3864 : }
3865 12216 : case MAX_EXPR:
3866 12216 : {
3867 12216 : tree _q20 = TREE_OPERAND (_p0, 0);
3868 12216 : tree _q21 = TREE_OPERAND (_p0, 1);
3869 12216 : if (integer_zerop (_q21))
3870 : {
3871 4609 : switch (TREE_CODE (_p1))
3872 : {
3873 114 : case MAX_EXPR:
3874 114 : {
3875 114 : tree _q50 = TREE_OPERAND (_p1, 0);
3876 114 : tree _q51 = TREE_OPERAND (_p1, 1);
3877 114 : switch (TREE_CODE (_q50))
3878 : {
3879 48 : case NEGATE_EXPR:
3880 48 : {
3881 48 : tree _q60 = TREE_OPERAND (_q50, 0);
3882 48 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
3883 : {
3884 48 : if (integer_zerop (_q51))
3885 : {
3886 48 : {
3887 48 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3888 48 : tree res = generic_simplify_55 (loc, type, _p0, _p1, captures);
3889 48 : if (res) return res;
3890 : }
3891 : }
3892 : }
3893 : break;
3894 : }
3895 : default:;
3896 : }
3897 : break;
3898 : }
3899 : default:;
3900 : }
3901 : }
3902 12168 : switch (TREE_CODE (_q20))
3903 : {
3904 18 : case NEGATE_EXPR:
3905 18 : {
3906 18 : tree _q30 = TREE_OPERAND (_q20, 0);
3907 18 : if (integer_zerop (_q21))
3908 : {
3909 18 : switch (TREE_CODE (_p1))
3910 : {
3911 18 : case MAX_EXPR:
3912 18 : {
3913 18 : tree _q60 = TREE_OPERAND (_p1, 0);
3914 18 : tree _q61 = TREE_OPERAND (_p1, 1);
3915 18 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
3916 : {
3917 18 : if (integer_zerop (_q61))
3918 : {
3919 18 : {
3920 18 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3921 18 : tree res = generic_simplify_55 (loc, type, _p0, _p1, captures);
3922 18 : if (res) return res;
3923 : }
3924 : }
3925 : }
3926 : break;
3927 : }
3928 : default:;
3929 : }
3930 : }
3931 : break;
3932 : }
3933 : default:;
3934 : }
3935 : break;
3936 : }
3937 13407355 : case MULT_EXPR:
3938 13407355 : {
3939 13407355 : tree _q20 = TREE_OPERAND (_p0, 0);
3940 13407355 : tree _q21 = TREE_OPERAND (_p0, 1);
3941 13407355 : switch (TREE_CODE (_q20))
3942 : {
3943 1935557 : case PLUS_EXPR:
3944 1935557 : {
3945 1935557 : tree _q30 = TREE_OPERAND (_q20, 0);
3946 1935557 : tree _q31 = TREE_OPERAND (_q20, 1);
3947 1935557 : switch (TREE_CODE (_q31))
3948 : {
3949 524902 : case INTEGER_CST:
3950 524902 : {
3951 524902 : switch (TREE_CODE (_q21))
3952 : {
3953 192130 : case INTEGER_CST:
3954 192130 : {
3955 192130 : switch (TREE_CODE (_p1))
3956 : {
3957 126806 : case INTEGER_CST:
3958 126806 : {
3959 126806 : {
3960 126806 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
3961 126806 : {
3962 126806 : bool overflowed = true;
3963 126806 : wi::overflow_type ovf1;
3964 126806 : wi::overflow_type ovf2;
3965 126806 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[4]),
3966 253612 : TYPE_SIGN (type), &ovf1);
3967 380418 : wide_int add = wi::add (mul, wi::to_wide (captures[5]),
3968 126806 : TYPE_SIGN (type), &ovf2);
3969 126806 : if (TYPE_OVERFLOW_UNDEFINED (type))
3970 : {
3971 : }
3972 : else
3973 65981 : overflowed = false;
3974 65981 : if (!overflowed
3975 : )
3976 : {
3977 65981 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1261;
3978 65981 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1261;
3979 65981 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1261;
3980 65981 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1261;
3981 65981 : {
3982 65981 : tree res_op0;
3983 65981 : {
3984 65981 : tree _o1[2], _r1;
3985 65981 : _o1[0] = captures[2];
3986 65981 : _o1[1] = captures[4];
3987 65981 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3988 65981 : res_op0 = _r1;
3989 : }
3990 65981 : tree res_op1;
3991 65981 : res_op1 = wide_int_to_tree (type, add);
3992 65981 : tree _r;
3993 65981 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3994 65981 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
3995 65981 : return _r;
3996 : }
3997 60825 : next_after_fail1261:;
3998 : }
3999 126806 : }
4000 : }
4001 60825 : break;
4002 : }
4003 : default:;
4004 : }
4005 : break;
4006 : }
4007 : default:;
4008 : }
4009 : break;
4010 : }
4011 : default:;
4012 : }
4013 : break;
4014 : }
4015 : default:;
4016 : }
4017 : break;
4018 : }
4019 26155 : case LSHIFT_EXPR:
4020 26155 : {
4021 26155 : tree _q20 = TREE_OPERAND (_p0, 0);
4022 26155 : tree _q21 = TREE_OPERAND (_p0, 1);
4023 26155 : switch (TREE_CODE (_p1))
4024 : {
4025 688 : case LSHIFT_EXPR:
4026 688 : {
4027 688 : tree _q50 = TREE_OPERAND (_p1, 0);
4028 688 : tree _q51 = TREE_OPERAND (_p1, 1);
4029 688 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4030 : {
4031 7 : {
4032 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
4033 7 : tree res = generic_simplify_56 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4034 7 : if (res) return res;
4035 : }
4036 : }
4037 : break;
4038 : }
4039 : default:;
4040 : }
4041 : break;
4042 : }
4043 216681 : case BIT_AND_EXPR:
4044 216681 : {
4045 216681 : tree _q20 = TREE_OPERAND (_p0, 0);
4046 216681 : tree _q21 = TREE_OPERAND (_p0, 1);
4047 216681 : switch (TREE_CODE (_p1))
4048 : {
4049 300 : case BIT_AND_EXPR:
4050 300 : {
4051 300 : tree _q50 = TREE_OPERAND (_p1, 0);
4052 300 : tree _q51 = TREE_OPERAND (_p1, 1);
4053 300 : {
4054 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
4055 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4056 300 : if (res) return res;
4057 : }
4058 300 : {
4059 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q50 };
4060 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4061 300 : if (res) return res;
4062 : }
4063 300 : {
4064 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q51 };
4065 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4066 300 : if (res) return res;
4067 : }
4068 300 : {
4069 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q50 };
4070 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4071 300 : if (res) return res;
4072 : }
4073 300 : break;
4074 : }
4075 216681 : default:;
4076 : }
4077 216681 : if (integer_onep (_q21))
4078 : {
4079 129566 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4080 : {
4081 29 : {
4082 29 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
4083 29 : tree res = generic_simplify_57 (loc, type, _p0, _p1, captures);
4084 29 : if (res) return res;
4085 : }
4086 : }
4087 : }
4088 : break;
4089 : }
4090 70762906 : default:;
4091 : }
4092 70762906 : if (real_zerop (_p0))
4093 : {
4094 0 : {
4095 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
4096 0 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures);
4097 0 : if (res) return res;
4098 : }
4099 : }
4100 70762906 : switch (TREE_CODE (_p1))
4101 : {
4102 5559 : case BIT_AND_EXPR:
4103 5559 : {
4104 5559 : tree _q30 = TREE_OPERAND (_p1, 0);
4105 5559 : tree _q31 = TREE_OPERAND (_p1, 1);
4106 5559 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4107 : {
4108 16 : if (integer_onep (_q31))
4109 : {
4110 16 : {
4111 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
4112 16 : tree res = generic_simplify_57 (loc, type, _p0, _p1, captures);
4113 16 : if (res) return res;
4114 : }
4115 : }
4116 : }
4117 : break;
4118 : }
4119 70762890 : default:;
4120 : }
4121 70762890 : switch (TREE_CODE (_p0))
4122 : {
4123 216652 : case BIT_AND_EXPR:
4124 216652 : {
4125 216652 : tree _q20 = TREE_OPERAND (_p0, 0);
4126 216652 : tree _q21 = TREE_OPERAND (_p0, 1);
4127 216652 : switch (TREE_CODE (_p1))
4128 : {
4129 9 : case BIT_XOR_EXPR:
4130 9 : {
4131 9 : tree _q50 = TREE_OPERAND (_p1, 0);
4132 9 : tree _q51 = TREE_OPERAND (_p1, 1);
4133 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4134 : {
4135 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4136 : {
4137 0 : {
4138 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4139 0 : tree res = generic_simplify_21 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4140 0 : if (res) return res;
4141 : }
4142 : }
4143 : }
4144 : break;
4145 : }
4146 1 : case BIT_IOR_EXPR:
4147 1 : {
4148 1 : tree _q50 = TREE_OPERAND (_p1, 0);
4149 1 : tree _q51 = TREE_OPERAND (_p1, 1);
4150 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4151 : {
4152 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4153 : {
4154 0 : {
4155 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4156 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
4157 0 : if (res) return res;
4158 : }
4159 : }
4160 : }
4161 : break;
4162 : }
4163 216652 : default:;
4164 : }
4165 216652 : switch (TREE_CODE (_q21))
4166 : {
4167 216348 : case INTEGER_CST:
4168 216348 : {
4169 216348 : switch (TREE_CODE (_p1))
4170 : {
4171 14695 : CASE_CONVERT:
4172 14695 : {
4173 14695 : tree _q50 = TREE_OPERAND (_p1, 0);
4174 14695 : switch (TREE_CODE (_q50))
4175 : {
4176 0 : case BIT_AND_EXPR:
4177 0 : {
4178 0 : tree _q60 = TREE_OPERAND (_q50, 0);
4179 0 : tree _q61 = TREE_OPERAND (_q50, 1);
4180 0 : switch (TREE_CODE (_q61))
4181 : {
4182 0 : case INTEGER_CST:
4183 0 : {
4184 0 : {
4185 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q60, _q61 };
4186 0 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4187 0 : if (res) return res;
4188 : }
4189 0 : break;
4190 : }
4191 : default:;
4192 : }
4193 : break;
4194 : }
4195 : default:;
4196 : }
4197 : break;
4198 : }
4199 300 : case BIT_AND_EXPR:
4200 300 : {
4201 300 : tree _q50 = TREE_OPERAND (_p1, 0);
4202 300 : tree _q51 = TREE_OPERAND (_p1, 1);
4203 300 : switch (TREE_CODE (_q51))
4204 : {
4205 300 : case INTEGER_CST:
4206 300 : {
4207 300 : {
4208 300 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
4209 300 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4210 300 : if (res) return res;
4211 : }
4212 200 : break;
4213 : }
4214 : default:;
4215 : }
4216 : break;
4217 : }
4218 : default:;
4219 : }
4220 : break;
4221 : }
4222 : default:;
4223 : }
4224 : break;
4225 : }
4226 1533 : case BIT_XOR_EXPR:
4227 1533 : {
4228 1533 : tree _q20 = TREE_OPERAND (_p0, 0);
4229 1533 : tree _q21 = TREE_OPERAND (_p0, 1);
4230 1533 : switch (TREE_CODE (_p1))
4231 : {
4232 0 : case BIT_AND_EXPR:
4233 0 : {
4234 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4235 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4236 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4237 : {
4238 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4239 : {
4240 0 : {
4241 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4242 0 : tree res = generic_simplify_21 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4243 0 : if (res) return res;
4244 : }
4245 : }
4246 : }
4247 : break;
4248 : }
4249 : default:;
4250 : }
4251 : break;
4252 : }
4253 558 : case BIT_IOR_EXPR:
4254 558 : {
4255 558 : tree _q20 = TREE_OPERAND (_p0, 0);
4256 558 : tree _q21 = TREE_OPERAND (_p0, 1);
4257 558 : switch (TREE_CODE (_p1))
4258 : {
4259 0 : case BIT_AND_EXPR:
4260 0 : {
4261 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4262 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4263 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4264 : {
4265 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4266 : {
4267 0 : {
4268 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4269 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
4270 0 : if (res) return res;
4271 : }
4272 : }
4273 : }
4274 : break;
4275 : }
4276 : default:;
4277 : }
4278 : break;
4279 : }
4280 2057302 : case MINUS_EXPR:
4281 2057302 : {
4282 2057302 : tree _q20 = TREE_OPERAND (_p0, 0);
4283 2057302 : tree _q21 = TREE_OPERAND (_p0, 1);
4284 2057302 : switch (TREE_CODE (_q20))
4285 : {
4286 2 : case BIT_AND_EXPR:
4287 2 : {
4288 2 : tree _q30 = TREE_OPERAND (_q20, 0);
4289 2 : tree _q31 = TREE_OPERAND (_q20, 1);
4290 2 : switch (TREE_CODE (_q21))
4291 : {
4292 1 : case BIT_IOR_EXPR:
4293 1 : {
4294 1 : tree _q60 = TREE_OPERAND (_q21, 0);
4295 1 : tree _q61 = TREE_OPERAND (_q21, 1);
4296 1 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4297 : {
4298 1 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
4299 : {
4300 1 : if (integer_all_onesp (_p1))
4301 : {
4302 1 : {
4303 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
4304 1 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
4305 1 : if (res) return res;
4306 : }
4307 : }
4308 : }
4309 : }
4310 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4311 : {
4312 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
4313 : {
4314 0 : if (integer_all_onesp (_p1))
4315 : {
4316 0 : {
4317 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q30 };
4318 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
4319 0 : if (res) return res;
4320 : }
4321 : }
4322 : }
4323 : }
4324 : break;
4325 : }
4326 : default:;
4327 : }
4328 : break;
4329 : }
4330 2057301 : default:;
4331 : }
4332 2057301 : {
4333 2057301 : tree _q20_pops[1];
4334 2057301 : if (tree_nop_convert (_q20, _q20_pops))
4335 : {
4336 918154 : tree _q30 = _q20_pops[0];
4337 918154 : switch (TREE_CODE (_q30))
4338 : {
4339 0 : case BIT_AND_EXPR:
4340 0 : {
4341 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4342 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4343 0 : {
4344 0 : tree _q21_pops[1];
4345 0 : if (tree_nop_convert (_q21, _q21_pops))
4346 : {
4347 0 : tree _q70 = _q21_pops[0];
4348 0 : switch (TREE_CODE (_q70))
4349 : {
4350 0 : case BIT_IOR_EXPR:
4351 0 : {
4352 0 : tree _q80 = TREE_OPERAND (_q70, 0);
4353 0 : tree _q81 = TREE_OPERAND (_q70, 1);
4354 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4355 : {
4356 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
4357 : {
4358 0 : if (integer_all_onesp (_p1))
4359 : {
4360 0 : {
4361 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
4362 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
4363 0 : if (res) return res;
4364 : }
4365 : }
4366 : }
4367 : }
4368 0 : if ((_q80 == _q41 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q41, 0) && types_match (_q80, _q41)))
4369 : {
4370 0 : if ((_q81 == _q40 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q40, 0) && types_match (_q81, _q40)))
4371 : {
4372 0 : if (integer_all_onesp (_p1))
4373 : {
4374 0 : {
4375 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q40 };
4376 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
4377 0 : if (res) return res;
4378 : }
4379 : }
4380 : }
4381 : }
4382 : break;
4383 : }
4384 : default:;
4385 : }
4386 : }
4387 : }
4388 0 : break;
4389 : }
4390 : default:;
4391 : }
4392 : }
4393 : }
4394 2057301 : {
4395 2057301 : tree _q21_pops[1];
4396 2057301 : if (tree_nop_convert (_q21, _q21_pops))
4397 : {
4398 1154958 : tree _q40 = _q21_pops[0];
4399 1154958 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4400 : {
4401 34 : {
4402 34 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
4403 34 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
4404 34 : if (res) return res;
4405 : }
4406 : }
4407 : }
4408 : }
4409 2057271 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4410 : {
4411 45411 : {
4412 45411 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4413 45411 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
4414 45411 : if (res) return res;
4415 : }
4416 : }
4417 : break;
4418 : }
4419 19142120 : CASE_CONVERT:
4420 19142120 : {
4421 19142120 : tree _q20 = TREE_OPERAND (_p0, 0);
4422 19142120 : switch (TREE_CODE (_q20))
4423 : {
4424 72 : case BIT_AND_EXPR:
4425 72 : {
4426 72 : tree _q30 = TREE_OPERAND (_q20, 0);
4427 72 : tree _q31 = TREE_OPERAND (_q20, 1);
4428 72 : switch (TREE_CODE (_q31))
4429 : {
4430 8 : case INTEGER_CST:
4431 8 : {
4432 8 : switch (TREE_CODE (_p1))
4433 : {
4434 0 : CASE_CONVERT:
4435 0 : {
4436 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4437 0 : switch (TREE_CODE (_q60))
4438 : {
4439 0 : case BIT_AND_EXPR:
4440 0 : {
4441 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4442 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4443 0 : switch (TREE_CODE (_q71))
4444 : {
4445 0 : case INTEGER_CST:
4446 0 : {
4447 0 : {
4448 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q60, _q70, _q71 };
4449 0 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4450 0 : if (res) return res;
4451 : }
4452 0 : break;
4453 : }
4454 : default:;
4455 : }
4456 : break;
4457 : }
4458 : default:;
4459 : }
4460 : break;
4461 : }
4462 0 : case BIT_AND_EXPR:
4463 0 : {
4464 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4465 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4466 0 : switch (TREE_CODE (_q61))
4467 : {
4468 0 : case INTEGER_CST:
4469 0 : {
4470 0 : {
4471 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1, _q60, _q61 };
4472 0 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4473 0 : if (res) return res;
4474 : }
4475 0 : break;
4476 : }
4477 : default:;
4478 : }
4479 : break;
4480 : }
4481 : default:;
4482 : }
4483 : break;
4484 : }
4485 : default:;
4486 : }
4487 : break;
4488 : }
4489 4433 : case NEGATE_EXPR:
4490 4433 : {
4491 4433 : tree _q30 = TREE_OPERAND (_q20, 0);
4492 4433 : {
4493 4433 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q30 };
4494 4433 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
4495 4433 : if (res) return res;
4496 : }
4497 1825 : break;
4498 : }
4499 : default:;
4500 : }
4501 : break;
4502 : }
4503 121209 : case COND_EXPR:
4504 121209 : {
4505 121209 : tree _q20 = TREE_OPERAND (_p0, 0);
4506 121209 : tree _q21 = TREE_OPERAND (_p0, 1);
4507 121209 : tree _q22 = TREE_OPERAND (_p0, 2);
4508 121209 : if (integer_zerop (_q22))
4509 : {
4510 110199 : switch (TREE_CODE (_p1))
4511 : {
4512 44 : case COND_EXPR:
4513 44 : {
4514 44 : tree _q60 = TREE_OPERAND (_p1, 0);
4515 44 : tree _q61 = TREE_OPERAND (_p1, 1);
4516 44 : tree _q62 = TREE_OPERAND (_p1, 2);
4517 44 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4518 : {
4519 6 : if (integer_zerop (_q61))
4520 : {
4521 0 : {
4522 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
4523 0 : const enum tree_code op = PLUS_EXPR;
4524 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1262;
4525 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1262;
4526 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1262;
4527 0 : {
4528 0 : tree res_op0;
4529 0 : res_op0 = captures[1];
4530 0 : tree res_op1;
4531 0 : res_op1 = captures[2];
4532 0 : tree res_op2;
4533 0 : res_op2 = captures[4];
4534 0 : tree _r;
4535 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4536 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 904, __FILE__, __LINE__, true);
4537 0 : return _r;
4538 : }
4539 0 : next_after_fail1262:;
4540 : }
4541 : }
4542 : }
4543 : break;
4544 : }
4545 : default:;
4546 : }
4547 : }
4548 121209 : if (integer_zerop (_q21))
4549 : {
4550 1035 : switch (TREE_CODE (_p1))
4551 : {
4552 0 : case COND_EXPR:
4553 0 : {
4554 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4555 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4556 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4557 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4558 : {
4559 0 : if (integer_zerop (_q62))
4560 : {
4561 0 : {
4562 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
4563 0 : const enum tree_code op = PLUS_EXPR;
4564 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1263;
4565 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1263;
4566 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1263;
4567 0 : {
4568 0 : tree res_op0;
4569 0 : res_op0 = captures[1];
4570 0 : tree res_op1;
4571 0 : res_op1 = captures[2];
4572 0 : tree res_op2;
4573 0 : res_op2 = captures[4];
4574 0 : tree _r;
4575 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4576 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 904, __FILE__, __LINE__, true);
4577 0 : return _r;
4578 : }
4579 0 : next_after_fail1263:;
4580 : }
4581 : }
4582 : }
4583 : break;
4584 : }
4585 : default:;
4586 : }
4587 : }
4588 121209 : switch (TREE_CODE (_q20))
4589 : {
4590 29444 : case LT_EXPR:
4591 29444 : {
4592 29444 : tree _q30 = TREE_OPERAND (_q20, 0);
4593 29444 : tree _q31 = TREE_OPERAND (_q20, 1);
4594 29444 : if (zerop (_q22))
4595 : {
4596 29378 : switch (TREE_CODE (_p1))
4597 : {
4598 0 : case COND_EXPR:
4599 0 : {
4600 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4601 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4602 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4603 0 : switch (TREE_CODE (_q80))
4604 : {
4605 0 : case GE_EXPR:
4606 0 : {
4607 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4608 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4609 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4610 : {
4611 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4612 : {
4613 0 : if (zerop (_q82))
4614 : {
4615 0 : {
4616 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4617 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, LT_EXPR, GE_EXPR);
4618 0 : if (res) return res;
4619 : }
4620 : }
4621 : }
4622 : }
4623 : break;
4624 : }
4625 : default:;
4626 : }
4627 : break;
4628 : }
4629 : default:;
4630 : }
4631 : }
4632 : break;
4633 : }
4634 26668 : case LE_EXPR:
4635 26668 : {
4636 26668 : tree _q30 = TREE_OPERAND (_q20, 0);
4637 26668 : tree _q31 = TREE_OPERAND (_q20, 1);
4638 26668 : if (zerop (_q22))
4639 : {
4640 26530 : switch (TREE_CODE (_p1))
4641 : {
4642 5 : case COND_EXPR:
4643 5 : {
4644 5 : tree _q80 = TREE_OPERAND (_p1, 0);
4645 5 : tree _q81 = TREE_OPERAND (_p1, 1);
4646 5 : tree _q82 = TREE_OPERAND (_p1, 2);
4647 5 : switch (TREE_CODE (_q80))
4648 : {
4649 0 : case GT_EXPR:
4650 0 : {
4651 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4652 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4653 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4654 : {
4655 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4656 : {
4657 0 : if (zerop (_q82))
4658 : {
4659 0 : {
4660 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4661 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR, GT_EXPR);
4662 0 : if (res) return res;
4663 : }
4664 : }
4665 : }
4666 : }
4667 : break;
4668 : }
4669 : default:;
4670 : }
4671 : break;
4672 : }
4673 : default:;
4674 : }
4675 : }
4676 : break;
4677 : }
4678 1051 : case EQ_EXPR:
4679 1051 : {
4680 1051 : tree _q30 = TREE_OPERAND (_q20, 0);
4681 1051 : tree _q31 = TREE_OPERAND (_q20, 1);
4682 1051 : if (zerop (_q22))
4683 : {
4684 570 : switch (TREE_CODE (_p1))
4685 : {
4686 32 : case COND_EXPR:
4687 32 : {
4688 32 : tree _q80 = TREE_OPERAND (_p1, 0);
4689 32 : tree _q81 = TREE_OPERAND (_p1, 1);
4690 32 : tree _q82 = TREE_OPERAND (_p1, 2);
4691 32 : switch (TREE_CODE (_q80))
4692 : {
4693 0 : case NE_EXPR:
4694 0 : {
4695 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4696 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4697 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4698 : {
4699 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4700 : {
4701 0 : if (zerop (_q82))
4702 : {
4703 0 : {
4704 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4705 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR, NE_EXPR);
4706 0 : if (res) return res;
4707 : }
4708 : }
4709 : }
4710 : }
4711 : break;
4712 : }
4713 : default:;
4714 : }
4715 : break;
4716 : }
4717 : default:;
4718 : }
4719 : }
4720 : break;
4721 : }
4722 8068 : case NE_EXPR:
4723 8068 : {
4724 8068 : tree _q30 = TREE_OPERAND (_q20, 0);
4725 8068 : tree _q31 = TREE_OPERAND (_q20, 1);
4726 8068 : if (zerop (_q22))
4727 : {
4728 5463 : switch (TREE_CODE (_p1))
4729 : {
4730 7 : case COND_EXPR:
4731 7 : {
4732 7 : tree _q80 = TREE_OPERAND (_p1, 0);
4733 7 : tree _q81 = TREE_OPERAND (_p1, 1);
4734 7 : tree _q82 = TREE_OPERAND (_p1, 2);
4735 7 : switch (TREE_CODE (_q80))
4736 : {
4737 0 : case EQ_EXPR:
4738 0 : {
4739 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4740 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4741 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4742 : {
4743 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4744 : {
4745 0 : if (zerop (_q82))
4746 : {
4747 0 : {
4748 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4749 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR, EQ_EXPR);
4750 0 : if (res) return res;
4751 : }
4752 : }
4753 : }
4754 : }
4755 : break;
4756 : }
4757 : default:;
4758 : }
4759 : break;
4760 : }
4761 : default:;
4762 : }
4763 : }
4764 : break;
4765 : }
4766 18247 : case GE_EXPR:
4767 18247 : {
4768 18247 : tree _q30 = TREE_OPERAND (_q20, 0);
4769 18247 : tree _q31 = TREE_OPERAND (_q20, 1);
4770 18247 : if (zerop (_q22))
4771 : {
4772 16915 : switch (TREE_CODE (_p1))
4773 : {
4774 0 : case COND_EXPR:
4775 0 : {
4776 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4777 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4778 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4779 0 : switch (TREE_CODE (_q80))
4780 : {
4781 0 : case LT_EXPR:
4782 0 : {
4783 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4784 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4785 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4786 : {
4787 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4788 : {
4789 0 : if (zerop (_q82))
4790 : {
4791 0 : {
4792 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4793 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR, LT_EXPR);
4794 0 : if (res) return res;
4795 : }
4796 : }
4797 : }
4798 : }
4799 : break;
4800 : }
4801 : default:;
4802 : }
4803 : break;
4804 : }
4805 : default:;
4806 : }
4807 : }
4808 : break;
4809 : }
4810 30878 : case GT_EXPR:
4811 30878 : {
4812 30878 : tree _q30 = TREE_OPERAND (_q20, 0);
4813 30878 : tree _q31 = TREE_OPERAND (_q20, 1);
4814 30878 : if (zerop (_q22))
4815 : {
4816 28561 : switch (TREE_CODE (_p1))
4817 : {
4818 0 : case COND_EXPR:
4819 0 : {
4820 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4821 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4822 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4823 0 : switch (TREE_CODE (_q80))
4824 : {
4825 0 : case LE_EXPR:
4826 0 : {
4827 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4828 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4829 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4830 : {
4831 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4832 : {
4833 0 : if (zerop (_q82))
4834 : {
4835 0 : {
4836 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4837 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, GT_EXPR, LE_EXPR);
4838 0 : if (res) return res;
4839 : }
4840 : }
4841 : }
4842 : }
4843 : break;
4844 : }
4845 : default:;
4846 : }
4847 : break;
4848 : }
4849 : default:;
4850 : }
4851 : }
4852 : break;
4853 : }
4854 0 : case UNORDERED_EXPR:
4855 0 : {
4856 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4857 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4858 0 : if (zerop (_q22))
4859 : {
4860 0 : switch (TREE_CODE (_p1))
4861 : {
4862 0 : case COND_EXPR:
4863 0 : {
4864 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4865 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4866 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4867 0 : switch (TREE_CODE (_q80))
4868 : {
4869 0 : case ORDERED_EXPR:
4870 0 : {
4871 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4872 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4873 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4874 : {
4875 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4876 : {
4877 0 : if (zerop (_q82))
4878 : {
4879 0 : {
4880 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4881 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
4882 0 : if (res) return res;
4883 : }
4884 : }
4885 : }
4886 : }
4887 : break;
4888 : }
4889 : default:;
4890 : }
4891 : break;
4892 : }
4893 : default:;
4894 : }
4895 : }
4896 : break;
4897 : }
4898 0 : case ORDERED_EXPR:
4899 0 : {
4900 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4901 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4902 0 : if (zerop (_q22))
4903 : {
4904 0 : switch (TREE_CODE (_p1))
4905 : {
4906 0 : case COND_EXPR:
4907 0 : {
4908 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4909 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4910 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4911 0 : switch (TREE_CODE (_q80))
4912 : {
4913 0 : case UNORDERED_EXPR:
4914 0 : {
4915 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4916 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4917 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4918 : {
4919 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4920 : {
4921 0 : if (zerop (_q82))
4922 : {
4923 0 : {
4924 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4925 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
4926 0 : if (res) return res;
4927 : }
4928 : }
4929 : }
4930 : }
4931 : break;
4932 : }
4933 : default:;
4934 : }
4935 : break;
4936 : }
4937 : default:;
4938 : }
4939 : }
4940 : break;
4941 : }
4942 0 : case UNLT_EXPR:
4943 0 : {
4944 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4945 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4946 0 : if (zerop (_q22))
4947 : {
4948 0 : switch (TREE_CODE (_p1))
4949 : {
4950 0 : case COND_EXPR:
4951 0 : {
4952 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4953 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4954 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4955 0 : switch (TREE_CODE (_q80))
4956 : {
4957 0 : case GE_EXPR:
4958 0 : {
4959 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4960 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4961 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4962 : {
4963 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4964 : {
4965 0 : if (zerop (_q82))
4966 : {
4967 0 : {
4968 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4969 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLT_EXPR, GE_EXPR);
4970 0 : if (res) return res;
4971 : }
4972 : }
4973 : }
4974 : }
4975 : break;
4976 : }
4977 : default:;
4978 : }
4979 : break;
4980 : }
4981 : default:;
4982 : }
4983 : }
4984 : break;
4985 : }
4986 0 : case UNLE_EXPR:
4987 0 : {
4988 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4989 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4990 0 : if (zerop (_q22))
4991 : {
4992 0 : switch (TREE_CODE (_p1))
4993 : {
4994 0 : case COND_EXPR:
4995 0 : {
4996 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4997 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4998 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4999 0 : switch (TREE_CODE (_q80))
5000 : {
5001 0 : case GT_EXPR:
5002 0 : {
5003 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5004 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5005 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5006 : {
5007 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5008 : {
5009 0 : if (zerop (_q82))
5010 : {
5011 0 : {
5012 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
5013 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLE_EXPR, GT_EXPR);
5014 0 : if (res) return res;
5015 : }
5016 : }
5017 : }
5018 : }
5019 : break;
5020 : }
5021 : default:;
5022 : }
5023 : break;
5024 : }
5025 : default:;
5026 : }
5027 : }
5028 : break;
5029 : }
5030 0 : case UNGT_EXPR:
5031 0 : {
5032 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5033 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5034 0 : if (zerop (_q22))
5035 : {
5036 0 : switch (TREE_CODE (_p1))
5037 : {
5038 0 : case COND_EXPR:
5039 0 : {
5040 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5041 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5042 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5043 0 : switch (TREE_CODE (_q80))
5044 : {
5045 0 : case LE_EXPR:
5046 0 : {
5047 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5048 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5049 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5050 : {
5051 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5052 : {
5053 0 : if (zerop (_q82))
5054 : {
5055 0 : {
5056 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
5057 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGT_EXPR, LE_EXPR);
5058 0 : if (res) return res;
5059 : }
5060 : }
5061 : }
5062 : }
5063 : break;
5064 : }
5065 : default:;
5066 : }
5067 : break;
5068 : }
5069 : default:;
5070 : }
5071 : }
5072 : break;
5073 : }
5074 0 : case UNGE_EXPR:
5075 0 : {
5076 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5077 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5078 0 : if (zerop (_q22))
5079 : {
5080 0 : switch (TREE_CODE (_p1))
5081 : {
5082 0 : case COND_EXPR:
5083 0 : {
5084 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5085 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5086 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5087 0 : switch (TREE_CODE (_q80))
5088 : {
5089 0 : case LT_EXPR:
5090 0 : {
5091 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5092 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5093 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5094 : {
5095 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5096 : {
5097 0 : if (zerop (_q82))
5098 : {
5099 0 : {
5100 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
5101 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGE_EXPR, LT_EXPR);
5102 0 : if (res) return res;
5103 : }
5104 : }
5105 : }
5106 : }
5107 : break;
5108 : }
5109 : default:;
5110 : }
5111 : break;
5112 : }
5113 : default:;
5114 : }
5115 : }
5116 : break;
5117 : }
5118 0 : case UNEQ_EXPR:
5119 0 : {
5120 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5121 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5122 0 : if (zerop (_q22))
5123 : {
5124 0 : switch (TREE_CODE (_p1))
5125 : {
5126 0 : case COND_EXPR:
5127 0 : {
5128 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5129 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5130 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5131 0 : switch (TREE_CODE (_q80))
5132 : {
5133 0 : case LTGT_EXPR:
5134 0 : {
5135 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5136 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5137 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5138 : {
5139 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5140 : {
5141 0 : if (zerop (_q82))
5142 : {
5143 0 : {
5144 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
5145 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNEQ_EXPR, LTGT_EXPR);
5146 0 : if (res) return res;
5147 : }
5148 : }
5149 : }
5150 : }
5151 : break;
5152 : }
5153 : default:;
5154 : }
5155 : break;
5156 : }
5157 : default:;
5158 : }
5159 : }
5160 : break;
5161 : }
5162 0 : case LTGT_EXPR:
5163 0 : {
5164 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5165 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5166 0 : if (zerop (_q22))
5167 : {
5168 0 : switch (TREE_CODE (_p1))
5169 : {
5170 0 : case COND_EXPR:
5171 0 : {
5172 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5173 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5174 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5175 0 : switch (TREE_CODE (_q80))
5176 : {
5177 0 : case UNEQ_EXPR:
5178 0 : {
5179 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5180 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5181 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5182 : {
5183 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5184 : {
5185 0 : if (zerop (_q82))
5186 : {
5187 0 : {
5188 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
5189 0 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, PLUS_EXPR, LTGT_EXPR, UNEQ_EXPR);
5190 0 : if (res) return res;
5191 : }
5192 : }
5193 : }
5194 : }
5195 : break;
5196 : }
5197 : default:;
5198 : }
5199 : break;
5200 : }
5201 : default:;
5202 : }
5203 : }
5204 : break;
5205 : }
5206 : default:;
5207 : }
5208 : break;
5209 : }
5210 168 : case VEC_COND_EXPR:
5211 168 : {
5212 168 : tree _q20 = TREE_OPERAND (_p0, 0);
5213 168 : tree _q21 = TREE_OPERAND (_p0, 1);
5214 168 : tree _q22 = TREE_OPERAND (_p0, 2);
5215 168 : if (integer_zerop (_q22))
5216 : {
5217 106 : switch (TREE_CODE (_p1))
5218 : {
5219 24 : case VEC_COND_EXPR:
5220 24 : {
5221 24 : tree _q60 = TREE_OPERAND (_p1, 0);
5222 24 : tree _q61 = TREE_OPERAND (_p1, 1);
5223 24 : tree _q62 = TREE_OPERAND (_p1, 2);
5224 24 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5225 : {
5226 0 : if (integer_zerop (_q61))
5227 : {
5228 0 : {
5229 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
5230 0 : const enum tree_code op = PLUS_EXPR;
5231 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1264;
5232 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1264;
5233 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1264;
5234 0 : {
5235 0 : tree res_op0;
5236 0 : res_op0 = captures[1];
5237 0 : tree res_op1;
5238 0 : res_op1 = captures[2];
5239 0 : tree res_op2;
5240 0 : res_op2 = captures[4];
5241 0 : tree _r;
5242 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5243 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 904, __FILE__, __LINE__, true);
5244 0 : return _r;
5245 : }
5246 0 : next_after_fail1264:;
5247 : }
5248 : }
5249 : }
5250 : break;
5251 : }
5252 : default:;
5253 : }
5254 : }
5255 168 : if (integer_zerop (_q21))
5256 : {
5257 0 : switch (TREE_CODE (_p1))
5258 : {
5259 0 : case VEC_COND_EXPR:
5260 0 : {
5261 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5262 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5263 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5264 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5265 : {
5266 0 : if (integer_zerop (_q62))
5267 : {
5268 0 : {
5269 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
5270 0 : const enum tree_code op = PLUS_EXPR;
5271 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1265;
5272 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1265;
5273 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1265;
5274 0 : {
5275 0 : tree res_op0;
5276 0 : res_op0 = captures[1];
5277 0 : tree res_op1;
5278 0 : res_op1 = captures[2];
5279 0 : tree res_op2;
5280 0 : res_op2 = captures[4];
5281 0 : tree _r;
5282 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5283 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 904, __FILE__, __LINE__, true);
5284 0 : return _r;
5285 : }
5286 0 : next_after_fail1265:;
5287 : }
5288 : }
5289 : }
5290 : break;
5291 : }
5292 : default:;
5293 : }
5294 : }
5295 168 : switch (TREE_CODE (_q20))
5296 : {
5297 8 : case LT_EXPR:
5298 8 : {
5299 8 : tree _q30 = TREE_OPERAND (_q20, 0);
5300 8 : tree _q31 = TREE_OPERAND (_q20, 1);
5301 8 : if (integer_zerop (_q22))
5302 : {
5303 8 : switch (TREE_CODE (_p1))
5304 : {
5305 0 : case VEC_COND_EXPR:
5306 0 : {
5307 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5308 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5309 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5310 0 : switch (TREE_CODE (_q80))
5311 : {
5312 0 : case GE_EXPR:
5313 0 : {
5314 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5315 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5316 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5317 : {
5318 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5319 : {
5320 0 : if (integer_zerop (_q82))
5321 : {
5322 0 : {
5323 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5324 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, LT_EXPR, GE_EXPR);
5325 0 : if (res) return res;
5326 : }
5327 : }
5328 : }
5329 : }
5330 : break;
5331 : }
5332 : default:;
5333 : }
5334 : break;
5335 : }
5336 : default:;
5337 : }
5338 : }
5339 : break;
5340 : }
5341 8 : case LE_EXPR:
5342 8 : {
5343 8 : tree _q30 = TREE_OPERAND (_q20, 0);
5344 8 : tree _q31 = TREE_OPERAND (_q20, 1);
5345 8 : if (integer_zerop (_q22))
5346 : {
5347 8 : switch (TREE_CODE (_p1))
5348 : {
5349 0 : case VEC_COND_EXPR:
5350 0 : {
5351 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5352 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5353 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5354 0 : switch (TREE_CODE (_q80))
5355 : {
5356 0 : case GT_EXPR:
5357 0 : {
5358 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5359 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5360 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5361 : {
5362 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5363 : {
5364 0 : if (integer_zerop (_q82))
5365 : {
5366 0 : {
5367 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5368 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR, GT_EXPR);
5369 0 : if (res) return res;
5370 : }
5371 : }
5372 : }
5373 : }
5374 : break;
5375 : }
5376 : default:;
5377 : }
5378 : break;
5379 : }
5380 : default:;
5381 : }
5382 : }
5383 : break;
5384 : }
5385 34 : case EQ_EXPR:
5386 34 : {
5387 34 : tree _q30 = TREE_OPERAND (_q20, 0);
5388 34 : tree _q31 = TREE_OPERAND (_q20, 1);
5389 34 : if (integer_zerop (_q22))
5390 : {
5391 34 : switch (TREE_CODE (_p1))
5392 : {
5393 24 : case VEC_COND_EXPR:
5394 24 : {
5395 24 : tree _q80 = TREE_OPERAND (_p1, 0);
5396 24 : tree _q81 = TREE_OPERAND (_p1, 1);
5397 24 : tree _q82 = TREE_OPERAND (_p1, 2);
5398 24 : switch (TREE_CODE (_q80))
5399 : {
5400 24 : case NE_EXPR:
5401 24 : {
5402 24 : tree _q90 = TREE_OPERAND (_q80, 0);
5403 24 : tree _q91 = TREE_OPERAND (_q80, 1);
5404 24 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5405 : {
5406 24 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5407 : {
5408 24 : if (integer_zerop (_q82))
5409 : {
5410 24 : {
5411 24 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5412 24 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR, NE_EXPR);
5413 24 : if (res) return res;
5414 : }
5415 : }
5416 : }
5417 : }
5418 : break;
5419 : }
5420 : default:;
5421 : }
5422 : break;
5423 : }
5424 : default:;
5425 : }
5426 : }
5427 : break;
5428 : }
5429 22 : case NE_EXPR:
5430 22 : {
5431 22 : tree _q30 = TREE_OPERAND (_q20, 0);
5432 22 : tree _q31 = TREE_OPERAND (_q20, 1);
5433 22 : if (integer_zerop (_q22))
5434 : {
5435 8 : switch (TREE_CODE (_p1))
5436 : {
5437 0 : case VEC_COND_EXPR:
5438 0 : {
5439 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5440 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5441 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5442 0 : switch (TREE_CODE (_q80))
5443 : {
5444 0 : case EQ_EXPR:
5445 0 : {
5446 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5447 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5448 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5449 : {
5450 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5451 : {
5452 0 : if (integer_zerop (_q82))
5453 : {
5454 0 : {
5455 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5456 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR, EQ_EXPR);
5457 0 : if (res) return res;
5458 : }
5459 : }
5460 : }
5461 : }
5462 : break;
5463 : }
5464 : default:;
5465 : }
5466 : break;
5467 : }
5468 : default:;
5469 : }
5470 : }
5471 : break;
5472 : }
5473 15 : case GE_EXPR:
5474 15 : {
5475 15 : tree _q30 = TREE_OPERAND (_q20, 0);
5476 15 : tree _q31 = TREE_OPERAND (_q20, 1);
5477 15 : if (integer_zerop (_q22))
5478 : {
5479 15 : switch (TREE_CODE (_p1))
5480 : {
5481 0 : case VEC_COND_EXPR:
5482 0 : {
5483 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5484 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5485 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5486 0 : switch (TREE_CODE (_q80))
5487 : {
5488 0 : case LT_EXPR:
5489 0 : {
5490 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5491 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5492 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5493 : {
5494 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5495 : {
5496 0 : if (integer_zerop (_q82))
5497 : {
5498 0 : {
5499 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5500 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR, LT_EXPR);
5501 0 : if (res) return res;
5502 : }
5503 : }
5504 : }
5505 : }
5506 : break;
5507 : }
5508 : default:;
5509 : }
5510 : break;
5511 : }
5512 : default:;
5513 : }
5514 : }
5515 : break;
5516 : }
5517 81 : case GT_EXPR:
5518 81 : {
5519 81 : tree _q30 = TREE_OPERAND (_q20, 0);
5520 81 : tree _q31 = TREE_OPERAND (_q20, 1);
5521 81 : if (integer_zerop (_q22))
5522 : {
5523 33 : switch (TREE_CODE (_p1))
5524 : {
5525 0 : case VEC_COND_EXPR:
5526 0 : {
5527 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5528 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5529 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5530 0 : switch (TREE_CODE (_q80))
5531 : {
5532 0 : case LE_EXPR:
5533 0 : {
5534 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5535 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5536 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5537 : {
5538 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5539 : {
5540 0 : if (integer_zerop (_q82))
5541 : {
5542 0 : {
5543 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5544 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, GT_EXPR, LE_EXPR);
5545 0 : if (res) return res;
5546 : }
5547 : }
5548 : }
5549 : }
5550 : break;
5551 : }
5552 : default:;
5553 : }
5554 : break;
5555 : }
5556 : default:;
5557 : }
5558 : }
5559 : break;
5560 : }
5561 0 : case UNORDERED_EXPR:
5562 0 : {
5563 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5564 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5565 0 : if (integer_zerop (_q22))
5566 : {
5567 0 : switch (TREE_CODE (_p1))
5568 : {
5569 0 : case VEC_COND_EXPR:
5570 0 : {
5571 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5572 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5573 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5574 0 : switch (TREE_CODE (_q80))
5575 : {
5576 0 : case ORDERED_EXPR:
5577 0 : {
5578 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5579 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5580 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5581 : {
5582 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5583 : {
5584 0 : if (integer_zerop (_q82))
5585 : {
5586 0 : {
5587 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5588 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
5589 0 : if (res) return res;
5590 : }
5591 : }
5592 : }
5593 : }
5594 : break;
5595 : }
5596 : default:;
5597 : }
5598 : break;
5599 : }
5600 : default:;
5601 : }
5602 : }
5603 : break;
5604 : }
5605 0 : case ORDERED_EXPR:
5606 0 : {
5607 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5608 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5609 0 : if (integer_zerop (_q22))
5610 : {
5611 0 : switch (TREE_CODE (_p1))
5612 : {
5613 0 : case VEC_COND_EXPR:
5614 0 : {
5615 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5616 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5617 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5618 0 : switch (TREE_CODE (_q80))
5619 : {
5620 0 : case UNORDERED_EXPR:
5621 0 : {
5622 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5623 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5624 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5625 : {
5626 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5627 : {
5628 0 : if (integer_zerop (_q82))
5629 : {
5630 0 : {
5631 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5632 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
5633 0 : if (res) return res;
5634 : }
5635 : }
5636 : }
5637 : }
5638 : break;
5639 : }
5640 : default:;
5641 : }
5642 : break;
5643 : }
5644 : default:;
5645 : }
5646 : }
5647 : break;
5648 : }
5649 0 : case UNLT_EXPR:
5650 0 : {
5651 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5652 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5653 0 : if (integer_zerop (_q22))
5654 : {
5655 0 : switch (TREE_CODE (_p1))
5656 : {
5657 0 : case VEC_COND_EXPR:
5658 0 : {
5659 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5660 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5661 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5662 0 : switch (TREE_CODE (_q80))
5663 : {
5664 0 : case GE_EXPR:
5665 0 : {
5666 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5667 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5668 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5669 : {
5670 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5671 : {
5672 0 : if (integer_zerop (_q82))
5673 : {
5674 0 : {
5675 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5676 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLT_EXPR, GE_EXPR);
5677 0 : if (res) return res;
5678 : }
5679 : }
5680 : }
5681 : }
5682 : break;
5683 : }
5684 : default:;
5685 : }
5686 : break;
5687 : }
5688 : default:;
5689 : }
5690 : }
5691 : break;
5692 : }
5693 0 : case UNLE_EXPR:
5694 0 : {
5695 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5696 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5697 0 : if (integer_zerop (_q22))
5698 : {
5699 0 : switch (TREE_CODE (_p1))
5700 : {
5701 0 : case VEC_COND_EXPR:
5702 0 : {
5703 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5704 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5705 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5706 0 : switch (TREE_CODE (_q80))
5707 : {
5708 0 : case GT_EXPR:
5709 0 : {
5710 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5711 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5712 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5713 : {
5714 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5715 : {
5716 0 : if (integer_zerop (_q82))
5717 : {
5718 0 : {
5719 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5720 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLE_EXPR, GT_EXPR);
5721 0 : if (res) return res;
5722 : }
5723 : }
5724 : }
5725 : }
5726 : break;
5727 : }
5728 : default:;
5729 : }
5730 : break;
5731 : }
5732 : default:;
5733 : }
5734 : }
5735 : break;
5736 : }
5737 0 : case UNGT_EXPR:
5738 0 : {
5739 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5740 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5741 0 : if (integer_zerop (_q22))
5742 : {
5743 0 : switch (TREE_CODE (_p1))
5744 : {
5745 0 : case VEC_COND_EXPR:
5746 0 : {
5747 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5748 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5749 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5750 0 : switch (TREE_CODE (_q80))
5751 : {
5752 0 : case LE_EXPR:
5753 0 : {
5754 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5755 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5756 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5757 : {
5758 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5759 : {
5760 0 : if (integer_zerop (_q82))
5761 : {
5762 0 : {
5763 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5764 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGT_EXPR, LE_EXPR);
5765 0 : if (res) return res;
5766 : }
5767 : }
5768 : }
5769 : }
5770 : break;
5771 : }
5772 : default:;
5773 : }
5774 : break;
5775 : }
5776 : default:;
5777 : }
5778 : }
5779 : break;
5780 : }
5781 0 : case UNGE_EXPR:
5782 0 : {
5783 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5784 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5785 0 : if (integer_zerop (_q22))
5786 : {
5787 0 : switch (TREE_CODE (_p1))
5788 : {
5789 0 : case VEC_COND_EXPR:
5790 0 : {
5791 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5792 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5793 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5794 0 : switch (TREE_CODE (_q80))
5795 : {
5796 0 : case LT_EXPR:
5797 0 : {
5798 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5799 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5800 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5801 : {
5802 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5803 : {
5804 0 : if (integer_zerop (_q82))
5805 : {
5806 0 : {
5807 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5808 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGE_EXPR, LT_EXPR);
5809 0 : if (res) return res;
5810 : }
5811 : }
5812 : }
5813 : }
5814 : break;
5815 : }
5816 : default:;
5817 : }
5818 : break;
5819 : }
5820 : default:;
5821 : }
5822 : }
5823 : break;
5824 : }
5825 0 : case UNEQ_EXPR:
5826 0 : {
5827 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5828 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5829 0 : if (integer_zerop (_q22))
5830 : {
5831 0 : switch (TREE_CODE (_p1))
5832 : {
5833 0 : case VEC_COND_EXPR:
5834 0 : {
5835 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5836 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5837 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5838 0 : switch (TREE_CODE (_q80))
5839 : {
5840 0 : case LTGT_EXPR:
5841 0 : {
5842 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5843 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5844 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5845 : {
5846 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5847 : {
5848 0 : if (integer_zerop (_q82))
5849 : {
5850 0 : {
5851 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5852 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNEQ_EXPR, LTGT_EXPR);
5853 0 : if (res) return res;
5854 : }
5855 : }
5856 : }
5857 : }
5858 : break;
5859 : }
5860 : default:;
5861 : }
5862 : break;
5863 : }
5864 : default:;
5865 : }
5866 : }
5867 : break;
5868 : }
5869 0 : case LTGT_EXPR:
5870 0 : {
5871 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5872 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5873 0 : if (integer_zerop (_q22))
5874 : {
5875 0 : switch (TREE_CODE (_p1))
5876 : {
5877 0 : case VEC_COND_EXPR:
5878 0 : {
5879 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5880 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5881 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5882 0 : switch (TREE_CODE (_q80))
5883 : {
5884 0 : case UNEQ_EXPR:
5885 0 : {
5886 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5887 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5888 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5889 : {
5890 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5891 : {
5892 0 : if (integer_zerop (_q82))
5893 : {
5894 0 : {
5895 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5896 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, LTGT_EXPR, UNEQ_EXPR);
5897 0 : if (res) return res;
5898 : }
5899 : }
5900 : }
5901 : }
5902 : break;
5903 : }
5904 : default:;
5905 : }
5906 : break;
5907 : }
5908 : default:;
5909 : }
5910 : }
5911 : break;
5912 : }
5913 : default:;
5914 : }
5915 : break;
5916 : }
5917 70714781 : default:;
5918 : }
5919 70714781 : {
5920 70714781 : tree _p0_pops[1];
5921 70714781 : if (tree_nop_convert (_p0, _p0_pops))
5922 : {
5923 14116405 : tree _q20 = _p0_pops[0];
5924 14116405 : switch (TREE_CODE (_q20))
5925 : {
5926 98308 : case MINUS_EXPR:
5927 98308 : {
5928 98308 : tree _q30 = TREE_OPERAND (_q20, 0);
5929 98308 : tree _q31 = TREE_OPERAND (_q20, 1);
5930 98308 : switch (TREE_CODE (_q30))
5931 : {
5932 2 : case BIT_AND_EXPR:
5933 2 : {
5934 2 : tree _q40 = TREE_OPERAND (_q30, 0);
5935 2 : tree _q41 = TREE_OPERAND (_q30, 1);
5936 2 : switch (TREE_CODE (_q31))
5937 : {
5938 1 : case BIT_IOR_EXPR:
5939 1 : {
5940 1 : tree _q70 = TREE_OPERAND (_q31, 0);
5941 1 : tree _q71 = TREE_OPERAND (_q31, 1);
5942 1 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5943 : {
5944 1 : if ((_q71 == _q41 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q41, 0) && types_match (_q71, _q41)))
5945 : {
5946 1 : if (integer_all_onesp (_p1))
5947 : {
5948 1 : {
5949 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
5950 1 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5951 1 : if (res) return res;
5952 : }
5953 : }
5954 : }
5955 : }
5956 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
5957 : {
5958 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
5959 : {
5960 0 : if (integer_all_onesp (_p1))
5961 : {
5962 0 : {
5963 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q40 };
5964 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5965 0 : if (res) return res;
5966 : }
5967 : }
5968 : }
5969 : }
5970 : break;
5971 : }
5972 : default:;
5973 : }
5974 : break;
5975 : }
5976 98307 : default:;
5977 : }
5978 98307 : {
5979 98307 : tree _q30_pops[1];
5980 98307 : if (tree_nop_convert (_q30, _q30_pops))
5981 : {
5982 50974 : tree _q40 = _q30_pops[0];
5983 50974 : switch (TREE_CODE (_q40))
5984 : {
5985 0 : case BIT_AND_EXPR:
5986 0 : {
5987 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5988 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5989 0 : {
5990 0 : tree _q31_pops[1];
5991 0 : if (tree_nop_convert (_q31, _q31_pops))
5992 : {
5993 0 : tree _q80 = _q31_pops[0];
5994 0 : switch (TREE_CODE (_q80))
5995 : {
5996 0 : case BIT_IOR_EXPR:
5997 0 : {
5998 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5999 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6000 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
6001 : {
6002 0 : if ((_q91 == _q51 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q51, 0) && types_match (_q91, _q51)))
6003 : {
6004 0 : if (integer_all_onesp (_p1))
6005 : {
6006 0 : {
6007 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
6008 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
6009 0 : if (res) return res;
6010 : }
6011 : }
6012 : }
6013 : }
6014 0 : if ((_q90 == _q51 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q51, 0) && types_match (_q90, _q51)))
6015 : {
6016 0 : if ((_q91 == _q50 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q50, 0) && types_match (_q91, _q50)))
6017 : {
6018 0 : if (integer_all_onesp (_p1))
6019 : {
6020 0 : {
6021 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
6022 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
6023 0 : if (res) return res;
6024 : }
6025 : }
6026 : }
6027 : }
6028 : break;
6029 : }
6030 : default:;
6031 : }
6032 : }
6033 : }
6034 0 : break;
6035 : }
6036 : default:;
6037 : }
6038 : }
6039 : }
6040 98307 : break;
6041 : }
6042 : default:;
6043 : }
6044 : }
6045 : }
6046 70714780 : switch (TREE_CODE (_p1))
6047 : {
6048 8335646 : CASE_CONVERT:
6049 8335646 : {
6050 8335646 : tree _q30 = TREE_OPERAND (_p1, 0);
6051 8335646 : switch (TREE_CODE (_q30))
6052 : {
6053 346 : case NEGATE_EXPR:
6054 346 : {
6055 346 : tree _q40 = TREE_OPERAND (_q30, 0);
6056 346 : {
6057 346 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6058 346 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
6059 346 : if (res) return res;
6060 : }
6061 295 : break;
6062 : }
6063 : default:;
6064 : }
6065 : break;
6066 : }
6067 8173 : case NEGATE_EXPR:
6068 8173 : {
6069 8173 : tree _q30 = TREE_OPERAND (_p1, 0);
6070 8173 : {
6071 8173 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6072 8173 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
6073 8173 : if (res) return res;
6074 : }
6075 0 : break;
6076 : }
6077 70706556 : default:;
6078 : }
6079 70706556 : switch (TREE_CODE (_p0))
6080 : {
6081 232943 : case NEGATE_EXPR:
6082 232943 : {
6083 232943 : tree _q20 = TREE_OPERAND (_p0, 0);
6084 232943 : {
6085 232943 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
6086 232943 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
6087 232943 : if (res) return res;
6088 : }
6089 134 : break;
6090 : }
6091 70473747 : default:;
6092 : }
6093 70473747 : {
6094 70473747 : tree _p0_pops[1];
6095 70473747 : if (tree_nop_convert (_p0, _p0_pops))
6096 : {
6097 14111779 : tree _q20 = _p0_pops[0];
6098 14111779 : switch (TREE_CODE (_q20))
6099 : {
6100 98287 : case MINUS_EXPR:
6101 98287 : {
6102 98287 : tree _q30 = TREE_OPERAND (_q20, 0);
6103 98287 : tree _q31 = TREE_OPERAND (_q20, 1);
6104 98287 : {
6105 98287 : tree _q31_pops[1];
6106 98287 : if (tree_nop_convert (_q31, _q31_pops))
6107 : {
6108 61838 : tree _q50 = _q31_pops[0];
6109 61838 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6110 : {
6111 28 : {
6112 28 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
6113 28 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
6114 28 : if (res) return res;
6115 : }
6116 : }
6117 : }
6118 : }
6119 98259 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6120 : {
6121 6 : {
6122 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6123 6 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
6124 6 : if (res) return res;
6125 : }
6126 : }
6127 98253 : if (CONSTANT_CLASS_P (_q31))
6128 : {
6129 17086 : if (CONSTANT_CLASS_P (_p1))
6130 : {
6131 16964 : {
6132 16964 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6133 16964 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, PLUS_EXPR);
6134 16964 : if (res) return res;
6135 : }
6136 : }
6137 : }
6138 81289 : if (CONSTANT_CLASS_P (_q30))
6139 : {
6140 14847 : if (CONSTANT_CLASS_P (_p1))
6141 : {
6142 5607 : {
6143 5607 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6144 5607 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6145 5607 : if (res) return res;
6146 : }
6147 : }
6148 : }
6149 : break;
6150 : }
6151 1320513 : case PLUS_EXPR:
6152 1320513 : {
6153 1320513 : tree _q30 = TREE_OPERAND (_q20, 0);
6154 1320513 : tree _q31 = TREE_OPERAND (_q20, 1);
6155 1320513 : if (CONSTANT_CLASS_P (_q31))
6156 : {
6157 1109896 : if (CONSTANT_CLASS_P (_p1))
6158 : {
6159 1021118 : {
6160 1021118 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6161 1021118 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, PLUS_EXPR);
6162 1021118 : if (res) return res;
6163 : }
6164 : }
6165 : }
6166 : break;
6167 : }
6168 : default:;
6169 : }
6170 : }
6171 : }
6172 69430988 : switch (TREE_CODE (_p1))
6173 : {
6174 175380 : case MINUS_EXPR:
6175 175380 : {
6176 175380 : tree _q30 = TREE_OPERAND (_p1, 0);
6177 175380 : tree _q31 = TREE_OPERAND (_p1, 1);
6178 175380 : {
6179 175380 : tree _q31_pops[1];
6180 175380 : if (tree_nop_convert (_q31, _q31_pops))
6181 : {
6182 61468 : tree _q50 = _q31_pops[0];
6183 61468 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6184 : {
6185 0 : {
6186 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
6187 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
6188 0 : if (res) return res;
6189 : }
6190 : }
6191 : }
6192 : }
6193 175380 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6194 : {
6195 308 : {
6196 308 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
6197 308 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
6198 308 : if (res) return res;
6199 : }
6200 : }
6201 : break;
6202 : }
6203 69430680 : default:;
6204 : }
6205 69430680 : {
6206 69430680 : tree _p1_pops[1];
6207 69430680 : if (tree_nop_convert (_p1, _p1_pops))
6208 : {
6209 8030265 : tree _q30 = _p1_pops[0];
6210 8030265 : switch (TREE_CODE (_q30))
6211 : {
6212 3612 : case MINUS_EXPR:
6213 3612 : {
6214 3612 : tree _q40 = TREE_OPERAND (_q30, 0);
6215 3612 : tree _q41 = TREE_OPERAND (_q30, 1);
6216 3612 : {
6217 3612 : tree _q41_pops[1];
6218 3612 : if (tree_nop_convert (_q41, _q41_pops))
6219 : {
6220 571 : tree _q60 = _q41_pops[0];
6221 571 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6222 : {
6223 0 : {
6224 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
6225 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
6226 0 : if (res) return res;
6227 : }
6228 : }
6229 : }
6230 : }
6231 3612 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6232 : {
6233 0 : {
6234 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
6235 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
6236 0 : if (res) return res;
6237 : }
6238 : }
6239 : break;
6240 : }
6241 : default:;
6242 : }
6243 : }
6244 : }
6245 69430680 : switch (TREE_CODE (_p0))
6246 : {
6247 6506748 : case PLUS_EXPR:
6248 6506748 : {
6249 6506748 : tree _q20 = TREE_OPERAND (_p0, 0);
6250 6506748 : tree _q21 = TREE_OPERAND (_p0, 1);
6251 6506748 : switch (TREE_CODE (_p1))
6252 : {
6253 46520 : case MINUS_EXPR:
6254 46520 : {
6255 46520 : tree _q50 = TREE_OPERAND (_p1, 0);
6256 46520 : tree _q51 = TREE_OPERAND (_p1, 1);
6257 46520 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6258 : {
6259 140 : {
6260 140 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6261 140 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures);
6262 140 : if (res) return res;
6263 : }
6264 : }
6265 46380 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6266 : {
6267 329 : {
6268 329 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
6269 329 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures);
6270 329 : if (res) return res;
6271 : }
6272 : }
6273 : break;
6274 : }
6275 6506279 : default:;
6276 : }
6277 6506279 : if (CONSTANT_CLASS_P (_q21))
6278 : {
6279 2564841 : if (CONSTANT_CLASS_P (_p1))
6280 : {
6281 1885244 : {
6282 1885244 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6283 1885244 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, PLUS_EXPR);
6284 1885244 : if (res) return res;
6285 : }
6286 : }
6287 : }
6288 : break;
6289 : }
6290 2010886 : case MINUS_EXPR:
6291 2010886 : {
6292 2010886 : tree _q20 = TREE_OPERAND (_p0, 0);
6293 2010886 : tree _q21 = TREE_OPERAND (_p0, 1);
6294 2010886 : switch (TREE_CODE (_p1))
6295 : {
6296 4862 : case PLUS_EXPR:
6297 4862 : {
6298 4862 : tree _q50 = TREE_OPERAND (_p1, 0);
6299 4862 : tree _q51 = TREE_OPERAND (_p1, 1);
6300 4862 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6301 : {
6302 368 : {
6303 368 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
6304 368 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures);
6305 368 : if (res) return res;
6306 : }
6307 : }
6308 4494 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6309 : {
6310 3705 : {
6311 3705 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q50, _q20 };
6312 3705 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures);
6313 3705 : if (res) return res;
6314 : }
6315 : }
6316 : break;
6317 : }
6318 741 : case MINUS_EXPR:
6319 741 : {
6320 741 : tree _q50 = TREE_OPERAND (_p1, 0);
6321 741 : tree _q51 = TREE_OPERAND (_p1, 1);
6322 741 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6323 : {
6324 1 : {
6325 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6326 1 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6327 1 : if (res) return res;
6328 : }
6329 : }
6330 740 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6331 : {
6332 153 : {
6333 153 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
6334 153 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6335 153 : if (res) return res;
6336 : }
6337 : }
6338 : break;
6339 : }
6340 2006659 : default:;
6341 : }
6342 2006659 : if (CONSTANT_CLASS_P (_q21))
6343 : {
6344 125826 : if (CONSTANT_CLASS_P (_p1))
6345 : {
6346 86318 : {
6347 86318 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6348 86318 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, PLUS_EXPR);
6349 86318 : if (res) return res;
6350 : }
6351 : }
6352 : }
6353 1920533 : if (CONSTANT_CLASS_P (_q20))
6354 : {
6355 404259 : if (CONSTANT_CLASS_P (_p1))
6356 : {
6357 235715 : {
6358 235715 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6359 235715 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6360 235715 : if (res) return res;
6361 : }
6362 : }
6363 : }
6364 : break;
6365 : }
6366 478 : case POINTER_DIFF_EXPR:
6367 478 : {
6368 478 : tree _q20 = TREE_OPERAND (_p0, 0);
6369 478 : tree _q21 = TREE_OPERAND (_p0, 1);
6370 478 : switch (TREE_CODE (_p1))
6371 : {
6372 7 : case POINTER_DIFF_EXPR:
6373 7 : {
6374 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6375 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6376 7 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6377 : {
6378 7 : {
6379 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6380 7 : tree res = generic_simplify_66 (loc, type, _p0, _p1, captures);
6381 7 : if (res) return res;
6382 : }
6383 : }
6384 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6385 : {
6386 0 : {
6387 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
6388 0 : tree res = generic_simplify_66 (loc, type, _p0, _p1, captures);
6389 0 : if (res) return res;
6390 : }
6391 : }
6392 : break;
6393 : }
6394 : default:;
6395 : }
6396 : break;
6397 : }
6398 18091489 : CASE_CONVERT:
6399 18091489 : {
6400 18091489 : tree _q20 = TREE_OPERAND (_p0, 0);
6401 18091489 : switch (TREE_CODE (_p1))
6402 : {
6403 2925117 : CASE_CONVERT:
6404 2925117 : {
6405 2925117 : tree _q40 = TREE_OPERAND (_p1, 0);
6406 2925117 : {
6407 2925117 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6408 2925117 : tree res = generic_simplify_67 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6409 2925117 : if (res) return res;
6410 : }
6411 2924972 : break;
6412 : }
6413 18091344 : default:;
6414 : }
6415 18091344 : switch (TREE_CODE (_q20))
6416 : {
6417 122573 : case BIT_NOT_EXPR:
6418 122573 : {
6419 122573 : tree _q30 = TREE_OPERAND (_q20, 0);
6420 122573 : switch (TREE_CODE (_p1))
6421 : {
6422 193 : CASE_CONVERT:
6423 193 : {
6424 193 : tree _q50 = TREE_OPERAND (_p1, 0);
6425 193 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
6426 : {
6427 0 : {
6428 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6429 0 : tree res = generic_simplify_68 (loc, type, _p0, _p1, captures);
6430 0 : if (res) return res;
6431 : }
6432 : }
6433 : break;
6434 : }
6435 : default:;
6436 : }
6437 : break;
6438 : }
6439 18091344 : default:;
6440 : }
6441 18091344 : switch (TREE_CODE (_p1))
6442 : {
6443 2924972 : CASE_CONVERT:
6444 2924972 : {
6445 2924972 : tree _q40 = TREE_OPERAND (_p1, 0);
6446 2924972 : switch (TREE_CODE (_q40))
6447 : {
6448 503 : case BIT_NOT_EXPR:
6449 503 : {
6450 503 : tree _q50 = TREE_OPERAND (_q40, 0);
6451 503 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6452 : {
6453 0 : {
6454 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6455 0 : tree res = generic_simplify_68 (loc, type, _p0, _p1, captures);
6456 0 : if (res) return res;
6457 : }
6458 : }
6459 : break;
6460 : }
6461 : default:;
6462 : }
6463 : break;
6464 : }
6465 : default:;
6466 : }
6467 : break;
6468 : }
6469 322763 : case BIT_NOT_EXPR:
6470 322763 : {
6471 322763 : tree _q20 = TREE_OPERAND (_p0, 0);
6472 322763 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6473 : {
6474 540 : {
6475 540 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6476 540 : tree res = generic_simplify_68 (loc, type, _p0, _p1, captures);
6477 540 : if (res) return res;
6478 : }
6479 : }
6480 322223 : if (integer_each_onep (_p1))
6481 : {
6482 2705 : {
6483 2705 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6484 2705 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures);
6485 2705 : if (res) return res;
6486 : }
6487 : }
6488 : break;
6489 : }
6490 67215858 : default:;
6491 : }
6492 67215858 : switch (TREE_CODE (_p1))
6493 : {
6494 40414 : case BIT_NOT_EXPR:
6495 40414 : {
6496 40414 : tree _q30 = TREE_OPERAND (_p1, 0);
6497 40414 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6498 : {
6499 0 : {
6500 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6501 0 : tree res = generic_simplify_68 (loc, type, _p0, _p1, captures);
6502 0 : if (res) return res;
6503 : }
6504 : }
6505 : break;
6506 : }
6507 67215858 : default:;
6508 : }
6509 67215858 : switch (TREE_CODE (_p0))
6510 : {
6511 18091344 : CASE_CONVERT:
6512 18091344 : {
6513 18091344 : tree _q20 = TREE_OPERAND (_p0, 0);
6514 18091344 : switch (TREE_CODE (_q20))
6515 : {
6516 122573 : case BIT_NOT_EXPR:
6517 122573 : {
6518 122573 : tree _q30 = TREE_OPERAND (_q20, 0);
6519 122573 : if (integer_each_onep (_p1))
6520 : {
6521 119048 : {
6522 119048 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6523 119048 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures);
6524 119048 : if (res) return res;
6525 : }
6526 : }
6527 : break;
6528 : }
6529 : default:;
6530 : }
6531 : break;
6532 : }
6533 13340908 : case MULT_EXPR:
6534 13340908 : {
6535 13340908 : tree _q20 = TREE_OPERAND (_p0, 0);
6536 13340908 : tree _q21 = TREE_OPERAND (_p0, 1);
6537 13340908 : switch (TREE_CODE (_p1))
6538 : {
6539 3346280 : case MULT_EXPR:
6540 3346280 : {
6541 3346280 : tree _q50 = TREE_OPERAND (_p1, 0);
6542 3346280 : tree _q51 = TREE_OPERAND (_p1, 1);
6543 3346280 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6544 : {
6545 791730 : {
6546 791730 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
6547 791730 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6548 791730 : if (res) return res;
6549 : }
6550 : }
6551 3341887 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6552 : {
6553 22 : {
6554 22 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
6555 22 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6556 22 : if (res) return res;
6557 : }
6558 : }
6559 3341881 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6560 : {
6561 242 : {
6562 242 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
6563 242 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6564 242 : if (res) return res;
6565 : }
6566 : }
6567 3341709 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6568 : {
6569 1270726 : {
6570 1270726 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
6571 1270726 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6572 1270726 : if (res) return res;
6573 : }
6574 : }
6575 : break;
6576 : }
6577 : default:;
6578 : }
6579 : break;
6580 : }
6581 65822618 : default:;
6582 : }
6583 65822618 : switch (TREE_CODE (_p1))
6584 : {
6585 3491369 : case MULT_EXPR:
6586 3491369 : {
6587 3491369 : tree _q30 = TREE_OPERAND (_p1, 0);
6588 3491369 : tree _q31 = TREE_OPERAND (_p1, 1);
6589 3491369 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6590 : {
6591 3905 : {
6592 3905 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
6593 3905 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6594 3905 : if (res) return res;
6595 : }
6596 : }
6597 3487511 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6598 : {
6599 0 : {
6600 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6601 0 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6602 0 : if (res) return res;
6603 : }
6604 : }
6605 : break;
6606 : }
6607 65818760 : default:;
6608 : }
6609 65818760 : switch (TREE_CODE (_p0))
6610 : {
6611 12065853 : case MULT_EXPR:
6612 12065853 : {
6613 12065853 : tree _q20 = TREE_OPERAND (_p0, 0);
6614 12065853 : tree _q21 = TREE_OPERAND (_p0, 1);
6615 12065853 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6616 : {
6617 33273 : {
6618 33273 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6619 33273 : tree res = generic_simplify_72 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6620 33273 : if (res) return res;
6621 : }
6622 : }
6623 12033231 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6624 : {
6625 324608 : {
6626 324608 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
6627 324608 : tree res = generic_simplify_72 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6628 324608 : if (res) return res;
6629 : }
6630 : }
6631 11709241 : if (integer_nonzerop (_q20))
6632 : {
6633 102 : switch (TREE_CODE (_p1))
6634 : {
6635 50 : case INTEGER_CST:
6636 50 : {
6637 50 : {
6638 50 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6639 50 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures);
6640 50 : if (res) return res;
6641 : }
6642 50 : break;
6643 : }
6644 : default:;
6645 : }
6646 : }
6647 11709241 : if (integer_nonzerop (_q21))
6648 : {
6649 7800659 : switch (TREE_CODE (_p1))
6650 : {
6651 3829328 : case INTEGER_CST:
6652 3829328 : {
6653 3829328 : {
6654 3829328 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1 };
6655 3829328 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures);
6656 3829328 : if (res) return res;
6657 : }
6658 3370318 : break;
6659 : }
6660 : default:;
6661 : }
6662 : }
6663 11250231 : switch (TREE_CODE (_q20))
6664 : {
6665 209072 : case MINUS_EXPR:
6666 209072 : {
6667 209072 : tree _q30 = TREE_OPERAND (_q20, 0);
6668 209072 : tree _q31 = TREE_OPERAND (_q20, 1);
6669 209072 : if (tree_zero_one_valued_p (_q21))
6670 : {
6671 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6672 : {
6673 0 : {
6674 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q21 };
6675 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures);
6676 0 : if (res) return res;
6677 : }
6678 : }
6679 : }
6680 : break;
6681 : }
6682 11250231 : default:;
6683 : }
6684 11250231 : if (tree_zero_one_valued_p (_q20))
6685 : {
6686 41034 : switch (TREE_CODE (_q21))
6687 : {
6688 9 : case MINUS_EXPR:
6689 9 : {
6690 9 : tree _q40 = TREE_OPERAND (_q21, 0);
6691 9 : tree _q41 = TREE_OPERAND (_q21, 1);
6692 9 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
6693 : {
6694 9 : {
6695 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
6696 9 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures);
6697 9 : if (res) return res;
6698 : }
6699 : }
6700 : break;
6701 : }
6702 : default:;
6703 : }
6704 : }
6705 : break;
6706 : }
6707 3104 : case MIN_EXPR:
6708 3104 : {
6709 3104 : tree _q20 = TREE_OPERAND (_p0, 0);
6710 3104 : tree _q21 = TREE_OPERAND (_p0, 1);
6711 3104 : switch (TREE_CODE (_p1))
6712 : {
6713 0 : case MAX_EXPR:
6714 0 : {
6715 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6716 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6717 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6718 : {
6719 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6720 : {
6721 0 : {
6722 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6723 0 : if (!HONOR_NANS (captures[0])
6724 : )
6725 : {
6726 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1266;
6727 0 : {
6728 0 : tree res_op0;
6729 0 : res_op0 = captures[0];
6730 0 : tree res_op1;
6731 0 : res_op1 = captures[1];
6732 0 : tree _r;
6733 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6734 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
6735 0 : return _r;
6736 : }
6737 0 : next_after_fail1266:;
6738 : }
6739 : }
6740 : }
6741 : }
6742 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6743 : {
6744 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6745 : {
6746 0 : {
6747 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6748 0 : if (!HONOR_NANS (captures[0])
6749 : )
6750 : {
6751 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1267;
6752 0 : {
6753 0 : tree res_op0;
6754 0 : res_op0 = captures[0];
6755 0 : tree res_op1;
6756 0 : res_op1 = captures[1];
6757 0 : tree _r;
6758 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6759 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
6760 0 : return _r;
6761 : }
6762 0 : next_after_fail1267:;
6763 : }
6764 : }
6765 : }
6766 : }
6767 : break;
6768 : }
6769 : default:;
6770 : }
6771 : break;
6772 : }
6773 12150 : case MAX_EXPR:
6774 12150 : {
6775 12150 : tree _q20 = TREE_OPERAND (_p0, 0);
6776 12150 : tree _q21 = TREE_OPERAND (_p0, 1);
6777 12150 : switch (TREE_CODE (_p1))
6778 : {
6779 0 : case MIN_EXPR:
6780 0 : {
6781 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6782 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6783 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6784 : {
6785 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6786 : {
6787 0 : {
6788 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6789 0 : if (!HONOR_NANS (captures[0])
6790 : )
6791 : {
6792 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1268;
6793 0 : {
6794 0 : tree res_op0;
6795 0 : res_op0 = captures[0];
6796 0 : tree res_op1;
6797 0 : res_op1 = captures[1];
6798 0 : tree _r;
6799 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6800 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
6801 0 : return _r;
6802 : }
6803 0 : next_after_fail1268:;
6804 : }
6805 : }
6806 : }
6807 : }
6808 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6809 : {
6810 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6811 : {
6812 0 : {
6813 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6814 0 : if (!HONOR_NANS (captures[0])
6815 : )
6816 : {
6817 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1269;
6818 0 : {
6819 0 : tree res_op0;
6820 0 : res_op0 = captures[0];
6821 0 : tree res_op1;
6822 0 : res_op1 = captures[1];
6823 0 : tree _r;
6824 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6825 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
6826 0 : return _r;
6827 : }
6828 0 : next_after_fail1269:;
6829 : }
6830 : }
6831 : }
6832 : }
6833 : break;
6834 : }
6835 : default:;
6836 : }
6837 : break;
6838 : }
6839 65003136 : default:;
6840 : }
6841 65003136 : switch (TREE_CODE (_p1))
6842 : {
6843 3487447 : case MULT_EXPR:
6844 3487447 : {
6845 3487447 : tree _q30 = TREE_OPERAND (_p1, 0);
6846 3487447 : tree _q31 = TREE_OPERAND (_p1, 1);
6847 3487447 : switch (TREE_CODE (_q30))
6848 : {
6849 151121 : case MINUS_EXPR:
6850 151121 : {
6851 151121 : tree _q40 = TREE_OPERAND (_q30, 0);
6852 151121 : tree _q41 = TREE_OPERAND (_q30, 1);
6853 151121 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6854 : {
6855 16 : if (tree_zero_one_valued_p (_q31))
6856 : {
6857 0 : {
6858 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q31 };
6859 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures);
6860 0 : if (res) return res;
6861 : }
6862 : }
6863 : }
6864 : break;
6865 : }
6866 3487447 : default:;
6867 : }
6868 3487447 : if (tree_zero_one_valued_p (_q30))
6869 : {
6870 13778 : switch (TREE_CODE (_q31))
6871 : {
6872 0 : case MINUS_EXPR:
6873 0 : {
6874 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6875 0 : tree _q51 = TREE_OPERAND (_q31, 1);
6876 0 : if ((_q51 == _p0 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _p0, 0) && types_match (_q51, _p0)))
6877 : {
6878 0 : {
6879 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q50, _q30 };
6880 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures);
6881 0 : if (res) return res;
6882 : }
6883 : }
6884 : break;
6885 : }
6886 : default:;
6887 : }
6888 : }
6889 : break;
6890 : }
6891 65003136 : default:;
6892 : }
6893 65003136 : switch (TREE_CODE (_p0))
6894 : {
6895 1533 : case BIT_XOR_EXPR:
6896 1533 : {
6897 1533 : tree _q20 = TREE_OPERAND (_p0, 0);
6898 1533 : tree _q21 = TREE_OPERAND (_p0, 1);
6899 1533 : switch (TREE_CODE (_q21))
6900 : {
6901 8 : case NEGATE_EXPR:
6902 8 : {
6903 8 : tree _q40 = TREE_OPERAND (_q21, 0);
6904 8 : if (tree_zero_one_valued_p (_q40))
6905 : {
6906 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6907 : {
6908 0 : {
6909 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6910 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6911 0 : if (res) return res;
6912 : }
6913 : }
6914 : }
6915 : break;
6916 : }
6917 1533 : default:;
6918 : }
6919 1533 : switch (TREE_CODE (_q20))
6920 : {
6921 9 : case NEGATE_EXPR:
6922 9 : {
6923 9 : tree _q30 = TREE_OPERAND (_q20, 0);
6924 9 : if (tree_zero_one_valued_p (_q30))
6925 : {
6926 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6927 : {
6928 0 : {
6929 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q30 };
6930 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6931 0 : if (res) return res;
6932 : }
6933 : }
6934 : }
6935 : break;
6936 : }
6937 : default:;
6938 : }
6939 : break;
6940 : }
6941 65003136 : default:;
6942 : }
6943 65003136 : switch (TREE_CODE (_p1))
6944 : {
6945 165 : case BIT_XOR_EXPR:
6946 165 : {
6947 165 : tree _q30 = TREE_OPERAND (_p1, 0);
6948 165 : tree _q31 = TREE_OPERAND (_p1, 1);
6949 165 : switch (TREE_CODE (_q31))
6950 : {
6951 0 : case NEGATE_EXPR:
6952 0 : {
6953 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6954 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6955 : {
6956 0 : if (tree_zero_one_valued_p (_q50))
6957 : {
6958 0 : {
6959 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
6960 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6961 0 : if (res) return res;
6962 : }
6963 : }
6964 : }
6965 : break;
6966 : }
6967 165 : default:;
6968 : }
6969 165 : switch (TREE_CODE (_q30))
6970 : {
6971 0 : case NEGATE_EXPR:
6972 0 : {
6973 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6974 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6975 : {
6976 0 : if (tree_zero_one_valued_p (_q40))
6977 : {
6978 0 : {
6979 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
6980 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6981 0 : if (res) return res;
6982 : }
6983 : }
6984 : }
6985 : break;
6986 : }
6987 : default:;
6988 : }
6989 : break;
6990 : }
6991 65003136 : default:;
6992 : }
6993 65003136 : switch (TREE_CODE (_p0))
6994 : {
6995 11250229 : case MULT_EXPR:
6996 11250229 : {
6997 11250229 : tree _q20 = TREE_OPERAND (_p0, 0);
6998 11250229 : tree _q21 = TREE_OPERAND (_p0, 1);
6999 11250229 : switch (TREE_CODE (_q20))
7000 : {
7001 16109 : case TRUNC_DIV_EXPR:
7002 16109 : {
7003 16109 : tree _q30 = TREE_OPERAND (_q20, 0);
7004 16109 : tree _q31 = TREE_OPERAND (_q20, 1);
7005 16109 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
7006 : {
7007 2338 : switch (TREE_CODE (_p1))
7008 : {
7009 2 : case TRUNC_MOD_EXPR:
7010 2 : {
7011 2 : tree _q70 = TREE_OPERAND (_p1, 0);
7012 2 : tree _q71 = TREE_OPERAND (_p1, 1);
7013 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
7014 : {
7015 2 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
7016 : {
7017 2 : {
7018 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
7019 2 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
7020 2 : if (res) return res;
7021 : }
7022 : }
7023 : }
7024 : break;
7025 : }
7026 : default:;
7027 : }
7028 : }
7029 : break;
7030 : }
7031 0 : case CEIL_DIV_EXPR:
7032 0 : {
7033 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7034 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7035 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
7036 : {
7037 0 : switch (TREE_CODE (_p1))
7038 : {
7039 0 : case CEIL_MOD_EXPR:
7040 0 : {
7041 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7042 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7043 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
7044 : {
7045 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
7046 : {
7047 0 : {
7048 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
7049 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
7050 0 : if (res) return res;
7051 : }
7052 : }
7053 : }
7054 : break;
7055 : }
7056 : default:;
7057 : }
7058 : }
7059 : break;
7060 : }
7061 0 : case FLOOR_DIV_EXPR:
7062 0 : {
7063 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7064 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7065 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
7066 : {
7067 0 : switch (TREE_CODE (_p1))
7068 : {
7069 0 : case FLOOR_MOD_EXPR:
7070 0 : {
7071 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7072 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7073 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
7074 : {
7075 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
7076 : {
7077 0 : {
7078 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
7079 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
7080 0 : if (res) return res;
7081 : }
7082 : }
7083 : }
7084 : break;
7085 : }
7086 : default:;
7087 : }
7088 : }
7089 : break;
7090 : }
7091 0 : case ROUND_DIV_EXPR:
7092 0 : {
7093 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7094 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7095 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
7096 : {
7097 0 : switch (TREE_CODE (_p1))
7098 : {
7099 0 : case ROUND_MOD_EXPR:
7100 0 : {
7101 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7102 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7103 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
7104 : {
7105 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
7106 : {
7107 0 : {
7108 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
7109 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7110 0 : if (res) return res;
7111 : }
7112 : }
7113 : }
7114 : break;
7115 : }
7116 : default:;
7117 : }
7118 : }
7119 : break;
7120 : }
7121 11250227 : default:;
7122 : }
7123 11250227 : switch (TREE_CODE (_q21))
7124 : {
7125 6 : case TRUNC_DIV_EXPR:
7126 6 : {
7127 6 : tree _q40 = TREE_OPERAND (_q21, 0);
7128 6 : tree _q41 = TREE_OPERAND (_q21, 1);
7129 6 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
7130 : {
7131 0 : switch (TREE_CODE (_p1))
7132 : {
7133 0 : case TRUNC_MOD_EXPR:
7134 0 : {
7135 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7136 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7137 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
7138 : {
7139 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
7140 : {
7141 0 : {
7142 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7143 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
7144 0 : if (res) return res;
7145 : }
7146 : }
7147 : }
7148 : break;
7149 : }
7150 : default:;
7151 : }
7152 : }
7153 : break;
7154 : }
7155 4 : case CEIL_DIV_EXPR:
7156 4 : {
7157 4 : tree _q40 = TREE_OPERAND (_q21, 0);
7158 4 : tree _q41 = TREE_OPERAND (_q21, 1);
7159 4 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
7160 : {
7161 0 : switch (TREE_CODE (_p1))
7162 : {
7163 0 : case CEIL_MOD_EXPR:
7164 0 : {
7165 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7166 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7167 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
7168 : {
7169 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
7170 : {
7171 0 : {
7172 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7173 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
7174 0 : if (res) return res;
7175 : }
7176 : }
7177 : }
7178 : break;
7179 : }
7180 : default:;
7181 : }
7182 : }
7183 : break;
7184 : }
7185 0 : case FLOOR_DIV_EXPR:
7186 0 : {
7187 0 : tree _q40 = TREE_OPERAND (_q21, 0);
7188 0 : tree _q41 = TREE_OPERAND (_q21, 1);
7189 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
7190 : {
7191 0 : switch (TREE_CODE (_p1))
7192 : {
7193 0 : case FLOOR_MOD_EXPR:
7194 0 : {
7195 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7196 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7197 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
7198 : {
7199 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
7200 : {
7201 0 : {
7202 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7203 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
7204 0 : if (res) return res;
7205 : }
7206 : }
7207 : }
7208 : break;
7209 : }
7210 : default:;
7211 : }
7212 : }
7213 : break;
7214 : }
7215 0 : case ROUND_DIV_EXPR:
7216 0 : {
7217 0 : tree _q40 = TREE_OPERAND (_q21, 0);
7218 0 : tree _q41 = TREE_OPERAND (_q21, 1);
7219 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
7220 : {
7221 0 : switch (TREE_CODE (_p1))
7222 : {
7223 0 : case ROUND_MOD_EXPR:
7224 0 : {
7225 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7226 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7227 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
7228 : {
7229 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
7230 : {
7231 0 : {
7232 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7233 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7234 0 : if (res) return res;
7235 : }
7236 : }
7237 : }
7238 : break;
7239 : }
7240 : default:;
7241 : }
7242 : }
7243 : break;
7244 : }
7245 : default:;
7246 : }
7247 : break;
7248 : }
7249 30984 : case TRUNC_MOD_EXPR:
7250 30984 : {
7251 30984 : tree _q20 = TREE_OPERAND (_p0, 0);
7252 30984 : tree _q21 = TREE_OPERAND (_p0, 1);
7253 30984 : switch (TREE_CODE (_p1))
7254 : {
7255 119 : case MULT_EXPR:
7256 119 : {
7257 119 : tree _q50 = TREE_OPERAND (_p1, 0);
7258 119 : tree _q51 = TREE_OPERAND (_p1, 1);
7259 119 : switch (TREE_CODE (_q50))
7260 : {
7261 106 : case TRUNC_DIV_EXPR:
7262 106 : {
7263 106 : tree _q60 = TREE_OPERAND (_q50, 0);
7264 106 : tree _q61 = TREE_OPERAND (_q50, 1);
7265 106 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7266 : {
7267 106 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7268 : {
7269 94 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7270 : {
7271 0 : {
7272 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7273 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
7274 0 : if (res) return res;
7275 : }
7276 : }
7277 : }
7278 : }
7279 : break;
7280 : }
7281 119 : default:;
7282 : }
7283 119 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7284 : {
7285 0 : switch (TREE_CODE (_q51))
7286 : {
7287 0 : case TRUNC_DIV_EXPR:
7288 0 : {
7289 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7290 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7291 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7292 : {
7293 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7294 : {
7295 0 : {
7296 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7297 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
7298 0 : if (res) return res;
7299 : }
7300 : }
7301 : }
7302 : break;
7303 : }
7304 : default:;
7305 : }
7306 : }
7307 : break;
7308 : }
7309 : default:;
7310 : }
7311 : break;
7312 : }
7313 0 : case CEIL_MOD_EXPR:
7314 0 : {
7315 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7316 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7317 0 : switch (TREE_CODE (_p1))
7318 : {
7319 0 : case MULT_EXPR:
7320 0 : {
7321 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7322 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7323 0 : switch (TREE_CODE (_q50))
7324 : {
7325 0 : case CEIL_DIV_EXPR:
7326 0 : {
7327 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7328 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7329 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7330 : {
7331 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7332 : {
7333 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7334 : {
7335 0 : {
7336 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7337 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
7338 0 : if (res) return res;
7339 : }
7340 : }
7341 : }
7342 : }
7343 : break;
7344 : }
7345 0 : default:;
7346 : }
7347 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7348 : {
7349 0 : switch (TREE_CODE (_q51))
7350 : {
7351 0 : case CEIL_DIV_EXPR:
7352 0 : {
7353 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7354 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7355 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7356 : {
7357 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7358 : {
7359 0 : {
7360 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7361 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
7362 0 : if (res) return res;
7363 : }
7364 : }
7365 : }
7366 : break;
7367 : }
7368 : default:;
7369 : }
7370 : }
7371 : break;
7372 : }
7373 : default:;
7374 : }
7375 : break;
7376 : }
7377 126 : case FLOOR_MOD_EXPR:
7378 126 : {
7379 126 : tree _q20 = TREE_OPERAND (_p0, 0);
7380 126 : tree _q21 = TREE_OPERAND (_p0, 1);
7381 126 : switch (TREE_CODE (_p1))
7382 : {
7383 0 : case MULT_EXPR:
7384 0 : {
7385 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7386 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7387 0 : switch (TREE_CODE (_q50))
7388 : {
7389 0 : case FLOOR_DIV_EXPR:
7390 0 : {
7391 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7392 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7393 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7394 : {
7395 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7396 : {
7397 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7398 : {
7399 0 : {
7400 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7401 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
7402 0 : if (res) return res;
7403 : }
7404 : }
7405 : }
7406 : }
7407 : break;
7408 : }
7409 0 : default:;
7410 : }
7411 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7412 : {
7413 0 : switch (TREE_CODE (_q51))
7414 : {
7415 0 : case FLOOR_DIV_EXPR:
7416 0 : {
7417 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7418 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7419 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7420 : {
7421 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7422 : {
7423 0 : {
7424 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7425 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
7426 0 : if (res) return res;
7427 : }
7428 : }
7429 : }
7430 : break;
7431 : }
7432 : default:;
7433 : }
7434 : }
7435 : break;
7436 : }
7437 : default:;
7438 : }
7439 : break;
7440 : }
7441 0 : case ROUND_MOD_EXPR:
7442 0 : {
7443 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7444 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7445 0 : switch (TREE_CODE (_p1))
7446 : {
7447 0 : case MULT_EXPR:
7448 0 : {
7449 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7450 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7451 0 : switch (TREE_CODE (_q50))
7452 : {
7453 0 : case ROUND_DIV_EXPR:
7454 0 : {
7455 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7456 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7457 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7458 : {
7459 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7460 : {
7461 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7462 : {
7463 0 : {
7464 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7465 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7466 0 : if (res) return res;
7467 : }
7468 : }
7469 : }
7470 : }
7471 : break;
7472 : }
7473 0 : default:;
7474 : }
7475 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7476 : {
7477 0 : switch (TREE_CODE (_q51))
7478 : {
7479 0 : case ROUND_DIV_EXPR:
7480 0 : {
7481 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7482 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7483 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7484 : {
7485 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7486 : {
7487 0 : {
7488 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7489 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7490 0 : if (res) return res;
7491 : }
7492 : }
7493 : }
7494 : break;
7495 : }
7496 : default:;
7497 : }
7498 : }
7499 : break;
7500 : }
7501 : default:;
7502 : }
7503 : break;
7504 : }
7505 65003134 : default:;
7506 : }
7507 65003134 : switch (TREE_CODE (_p1))
7508 : {
7509 3166902 : case REAL_CST:
7510 3166902 : {
7511 3166902 : {
7512 3166902 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7513 3166902 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
7514 : )
7515 : {
7516 117338 : {
7517 117338 : tree tem = const_unop (NEGATE_EXPR, type, captures[1]);
7518 117338 : if (!TREE_OVERFLOW (tem) || !flag_trapping_math
7519 : )
7520 : {
7521 117338 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1270;
7522 117338 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1270;
7523 117338 : {
7524 117338 : tree res_op0;
7525 117338 : res_op0 = captures[0];
7526 117338 : tree res_op1;
7527 117338 : res_op1 = tem;
7528 117338 : tree _r;
7529 117338 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
7530 117338 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 914, __FILE__, __LINE__, true);
7531 117338 : return _r;
7532 : }
7533 3049564 : next_after_fail1270:;
7534 : }
7535 : }
7536 : }
7537 : }
7538 3049564 : break;
7539 : }
7540 64885796 : default:;
7541 : }
7542 64885796 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
7543 : {
7544 1585690 : {
7545 1585690 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7546 1585690 : if (SCALAR_FLOAT_TYPE_P (type)
7547 : )
7548 : {
7549 729 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1271;
7550 729 : {
7551 729 : tree res_op0;
7552 729 : res_op0 = captures[0];
7553 729 : tree res_op1;
7554 729 : res_op1 = build_real (type, dconst2);
7555 729 : tree _r;
7556 729 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7557 729 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
7558 729 : return _r;
7559 : }
7560 0 : next_after_fail1271:;
7561 : }
7562 : else
7563 : {
7564 1584961 : if (INTEGRAL_TYPE_P (type)
7565 1584961 : && TYPE_PRECISION (type) > (2 - TYPE_UNSIGNED (type))
7566 : )
7567 : {
7568 1584836 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1272;
7569 1584836 : {
7570 1584836 : tree res_op0;
7571 1584836 : res_op0 = captures[0];
7572 1584836 : tree res_op1;
7573 1584836 : res_op1 = build_int_cst (type, 2);
7574 1584836 : tree _r;
7575 1584836 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7576 1584836 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 916, __FILE__, __LINE__, true);
7577 1584836 : return _r;
7578 : }
7579 0 : next_after_fail1272:;
7580 : }
7581 : }
7582 : }
7583 : }
7584 63300231 : switch (TREE_CODE (_p0))
7585 : {
7586 144 : case VEC_COND_EXPR:
7587 144 : {
7588 144 : tree _q20 = TREE_OPERAND (_p0, 0);
7589 144 : tree _q21 = TREE_OPERAND (_p0, 1);
7590 144 : tree _q22 = TREE_OPERAND (_p0, 2);
7591 144 : switch (TREE_CODE (_p1))
7592 : {
7593 48 : case VEC_COND_EXPR:
7594 48 : {
7595 48 : tree _q60 = TREE_OPERAND (_p1, 0);
7596 48 : tree _q61 = TREE_OPERAND (_p1, 1);
7597 48 : tree _q62 = TREE_OPERAND (_p1, 2);
7598 48 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7599 : {
7600 24 : {
7601 24 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7602 24 : if (VECTOR_TYPE_P (type)
7603 24 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7604 : || types_match (type, TREE_TYPE (captures[2]))
7605 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7606 : || (optimize_vectors_before_lowering_p ()
7607 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7608 : )
7609 : {
7610 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1273;
7611 24 : {
7612 24 : tree res_op0;
7613 24 : res_op0 = captures[1];
7614 24 : tree res_op1;
7615 24 : {
7616 24 : tree _o1[2], _r1;
7617 24 : _o1[0] = captures[2];
7618 24 : _o1[1] = captures[5];
7619 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7620 24 : if (EXPR_P (_r1))
7621 0 : goto next_after_fail1273;
7622 24 : res_op1 = _r1;
7623 : }
7624 24 : tree res_op2;
7625 24 : {
7626 24 : tree _o1[2], _r1;
7627 24 : _o1[0] = captures[3];
7628 24 : _o1[1] = captures[6];
7629 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7630 24 : if (EXPR_P (_r1))
7631 0 : goto next_after_fail1273;
7632 24 : res_op2 = _r1;
7633 : }
7634 24 : tree _r;
7635 24 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7636 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
7637 24 : return _r;
7638 : }
7639 0 : next_after_fail1273:;
7640 : }
7641 : }
7642 : }
7643 : break;
7644 : }
7645 120 : default:;
7646 : }
7647 120 : {
7648 120 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7649 120 : if (VECTOR_TYPE_P (type)
7650 120 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7651 : || types_match (type, TREE_TYPE (captures[2]))
7652 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7653 : || (optimize_vectors_before_lowering_p ()
7654 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7655 : )
7656 : {
7657 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1274;
7658 120 : {
7659 120 : if (! tree_invariant_p (captures[4])) goto next_after_fail1274;
7660 26 : tree res_op0;
7661 26 : res_op0 = captures[1];
7662 26 : tree res_op1;
7663 26 : {
7664 26 : tree _o1[2], _r1;
7665 26 : _o1[0] = captures[2];
7666 26 : _o1[1] = unshare_expr (captures[4]);
7667 26 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7668 26 : if (EXPR_P (_r1))
7669 0 : goto next_after_fail1274;
7670 26 : res_op1 = _r1;
7671 : }
7672 26 : tree res_op2;
7673 26 : {
7674 26 : tree _o1[2], _r1;
7675 26 : _o1[0] = captures[3];
7676 26 : _o1[1] = captures[4];
7677 26 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7678 26 : if (EXPR_P (_r1))
7679 0 : goto next_after_fail1274;
7680 26 : res_op2 = _r1;
7681 : }
7682 26 : tree _r;
7683 26 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7684 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
7685 26 : return _r;
7686 : }
7687 94 : next_after_fail1274:;
7688 : }
7689 : }
7690 94 : if (integer_each_onep (_q21))
7691 : {
7692 0 : if (integer_zerop (_q22))
7693 : {
7694 0 : {
7695 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p0, _q20, _q21, _q22 };
7696 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7697 0 : if (res) return res;
7698 : }
7699 : }
7700 : }
7701 : break;
7702 : }
7703 63300181 : default:;
7704 : }
7705 63300181 : switch (TREE_CODE (_p1))
7706 : {
7707 40 : case VEC_COND_EXPR:
7708 40 : {
7709 40 : tree _q30 = TREE_OPERAND (_p1, 0);
7710 40 : tree _q31 = TREE_OPERAND (_p1, 1);
7711 40 : tree _q32 = TREE_OPERAND (_p1, 2);
7712 40 : {
7713 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7714 40 : if (VECTOR_TYPE_P (type)
7715 40 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7716 : || types_match (type, TREE_TYPE (captures[3]))
7717 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
7718 : || (optimize_vectors_before_lowering_p ()
7719 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
7720 : )
7721 : {
7722 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1275;
7723 40 : {
7724 40 : if (! tree_invariant_p (captures[0])) goto next_after_fail1275;
7725 0 : tree res_op0;
7726 0 : res_op0 = captures[2];
7727 0 : tree res_op1;
7728 0 : {
7729 0 : tree _o1[2], _r1;
7730 0 : _o1[0] = unshare_expr (captures[0]);
7731 0 : _o1[1] = captures[3];
7732 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7733 0 : if (EXPR_P (_r1))
7734 0 : goto next_after_fail1275;
7735 0 : res_op1 = _r1;
7736 : }
7737 0 : tree res_op2;
7738 0 : {
7739 0 : tree _o1[2], _r1;
7740 0 : _o1[0] = captures[0];
7741 0 : _o1[1] = captures[4];
7742 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7743 0 : if (EXPR_P (_r1))
7744 0 : goto next_after_fail1275;
7745 0 : res_op2 = _r1;
7746 : }
7747 0 : tree _r;
7748 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7749 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
7750 0 : return _r;
7751 : }
7752 40 : next_after_fail1275:;
7753 : }
7754 : }
7755 40 : break;
7756 : }
7757 331835 : case VIEW_CONVERT_EXPR:
7758 331835 : {
7759 331835 : tree _q30 = TREE_OPERAND (_p1, 0);
7760 331835 : switch (TREE_CODE (_q30))
7761 : {
7762 0 : case VEC_COND_EXPR:
7763 0 : {
7764 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7765 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7766 0 : tree _q42 = TREE_OPERAND (_q30, 2);
7767 0 : if (integer_each_onep (_q41))
7768 : {
7769 0 : if (integer_zerop (_q42))
7770 : {
7771 0 : {
7772 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42 };
7773 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7774 0 : if (res) return res;
7775 : }
7776 : }
7777 : }
7778 : break;
7779 : }
7780 : default:;
7781 : }
7782 : break;
7783 : }
7784 63300181 : default:;
7785 : }
7786 63300181 : switch (TREE_CODE (_p0))
7787 : {
7788 320653 : case VIEW_CONVERT_EXPR:
7789 320653 : {
7790 320653 : tree _q20 = TREE_OPERAND (_p0, 0);
7791 320653 : switch (TREE_CODE (_q20))
7792 : {
7793 0 : case VEC_COND_EXPR:
7794 0 : {
7795 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7796 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7797 0 : tree _q32 = TREE_OPERAND (_q20, 2);
7798 0 : if (integer_each_onep (_q31))
7799 : {
7800 0 : if (integer_zerop (_q32))
7801 : {
7802 0 : {
7803 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q30, _q31, _q32 };
7804 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7805 0 : if (res) return res;
7806 : }
7807 : }
7808 : }
7809 : break;
7810 : }
7811 : default:;
7812 : }
7813 : break;
7814 : }
7815 63300181 : default:;
7816 : }
7817 63300181 : switch (TREE_CODE (_p1))
7818 : {
7819 40 : case VEC_COND_EXPR:
7820 40 : {
7821 40 : tree _q30 = TREE_OPERAND (_p1, 0);
7822 40 : tree _q31 = TREE_OPERAND (_p1, 1);
7823 40 : tree _q32 = TREE_OPERAND (_p1, 2);
7824 40 : if (integer_each_onep (_q31))
7825 : {
7826 0 : if (integer_zerop (_q32))
7827 : {
7828 0 : {
7829 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7830 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7831 0 : if (res) return res;
7832 : }
7833 : }
7834 : }
7835 : break;
7836 : }
7837 63300181 : default:;
7838 : }
7839 63300181 : switch (TREE_CODE (_p0))
7840 : {
7841 17966500 : CASE_CONVERT:
7842 17966500 : {
7843 17966500 : tree _q20 = TREE_OPERAND (_p0, 0);
7844 17966500 : switch (TREE_CODE (_q20))
7845 : {
7846 0 : case LT_EXPR:
7847 0 : {
7848 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7849 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7850 0 : if (integer_minus_onep (_p1))
7851 : {
7852 0 : {
7853 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7854 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
7855 0 : if (res) return res;
7856 : }
7857 : }
7858 : break;
7859 : }
7860 0 : case LE_EXPR:
7861 0 : {
7862 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7863 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7864 0 : if (integer_minus_onep (_p1))
7865 : {
7866 0 : {
7867 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7868 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
7869 0 : if (res) return res;
7870 : }
7871 : }
7872 : break;
7873 : }
7874 78 : case EQ_EXPR:
7875 78 : {
7876 78 : tree _q30 = TREE_OPERAND (_q20, 0);
7877 78 : tree _q31 = TREE_OPERAND (_q20, 1);
7878 78 : if (integer_minus_onep (_p1))
7879 : {
7880 0 : {
7881 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7882 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
7883 0 : if (res) return res;
7884 : }
7885 : }
7886 : break;
7887 : }
7888 224 : case NE_EXPR:
7889 224 : {
7890 224 : tree _q30 = TREE_OPERAND (_q20, 0);
7891 224 : tree _q31 = TREE_OPERAND (_q20, 1);
7892 224 : if (integer_minus_onep (_p1))
7893 : {
7894 0 : {
7895 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7896 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
7897 0 : if (res) return res;
7898 : }
7899 : }
7900 : break;
7901 : }
7902 12 : case GE_EXPR:
7903 12 : {
7904 12 : tree _q30 = TREE_OPERAND (_q20, 0);
7905 12 : tree _q31 = TREE_OPERAND (_q20, 1);
7906 12 : if (integer_minus_onep (_p1))
7907 : {
7908 0 : {
7909 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7910 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
7911 0 : if (res) return res;
7912 : }
7913 : }
7914 : break;
7915 : }
7916 1 : case GT_EXPR:
7917 1 : {
7918 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7919 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7920 1 : if (integer_minus_onep (_p1))
7921 : {
7922 0 : {
7923 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7924 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
7925 0 : if (res) return res;
7926 : }
7927 : }
7928 : break;
7929 : }
7930 0 : case UNORDERED_EXPR:
7931 0 : {
7932 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7933 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7934 0 : if (integer_minus_onep (_p1))
7935 : {
7936 0 : {
7937 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7938 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
7939 0 : if (res) return res;
7940 : }
7941 : }
7942 : break;
7943 : }
7944 0 : case ORDERED_EXPR:
7945 0 : {
7946 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7947 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7948 0 : if (integer_minus_onep (_p1))
7949 : {
7950 0 : {
7951 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7952 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
7953 0 : if (res) return res;
7954 : }
7955 : }
7956 : break;
7957 : }
7958 0 : case UNLT_EXPR:
7959 0 : {
7960 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7961 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7962 0 : if (integer_minus_onep (_p1))
7963 : {
7964 0 : {
7965 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7966 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
7967 0 : if (res) return res;
7968 : }
7969 : }
7970 : break;
7971 : }
7972 0 : case UNLE_EXPR:
7973 0 : {
7974 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7975 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7976 0 : if (integer_minus_onep (_p1))
7977 : {
7978 0 : {
7979 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7980 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
7981 0 : if (res) return res;
7982 : }
7983 : }
7984 : break;
7985 : }
7986 0 : case UNGT_EXPR:
7987 0 : {
7988 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7989 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7990 0 : if (integer_minus_onep (_p1))
7991 : {
7992 0 : {
7993 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7994 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
7995 0 : if (res) return res;
7996 : }
7997 : }
7998 : break;
7999 : }
8000 0 : case UNGE_EXPR:
8001 0 : {
8002 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8003 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8004 0 : if (integer_minus_onep (_p1))
8005 : {
8006 0 : {
8007 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
8008 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8009 0 : if (res) return res;
8010 : }
8011 : }
8012 : break;
8013 : }
8014 0 : case UNEQ_EXPR:
8015 0 : {
8016 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8017 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8018 0 : if (integer_minus_onep (_p1))
8019 : {
8020 0 : {
8021 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
8022 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8023 0 : if (res) return res;
8024 : }
8025 : }
8026 : break;
8027 : }
8028 0 : case LTGT_EXPR:
8029 0 : {
8030 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8031 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8032 0 : if (integer_minus_onep (_p1))
8033 : {
8034 0 : {
8035 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
8036 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8037 0 : if (res) return res;
8038 : }
8039 : }
8040 : break;
8041 : }
8042 : default:;
8043 : }
8044 : break;
8045 : }
8046 155 : case LT_EXPR:
8047 155 : {
8048 155 : tree _q20 = TREE_OPERAND (_p0, 0);
8049 155 : tree _q21 = TREE_OPERAND (_p0, 1);
8050 155 : if (integer_minus_onep (_p1))
8051 : {
8052 0 : {
8053 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8054 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8055 0 : if (res) return res;
8056 : }
8057 : }
8058 : break;
8059 : }
8060 64 : case LE_EXPR:
8061 64 : {
8062 64 : tree _q20 = TREE_OPERAND (_p0, 0);
8063 64 : tree _q21 = TREE_OPERAND (_p0, 1);
8064 64 : if (integer_minus_onep (_p1))
8065 : {
8066 0 : {
8067 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8068 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8069 0 : if (res) return res;
8070 : }
8071 : }
8072 : break;
8073 : }
8074 19445 : case EQ_EXPR:
8075 19445 : {
8076 19445 : tree _q20 = TREE_OPERAND (_p0, 0);
8077 19445 : tree _q21 = TREE_OPERAND (_p0, 1);
8078 19445 : if (integer_minus_onep (_p1))
8079 : {
8080 23 : {
8081 23 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8082 23 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8083 23 : if (res) return res;
8084 : }
8085 : }
8086 : break;
8087 : }
8088 1677 : case NE_EXPR:
8089 1677 : {
8090 1677 : tree _q20 = TREE_OPERAND (_p0, 0);
8091 1677 : tree _q21 = TREE_OPERAND (_p0, 1);
8092 1677 : if (integer_minus_onep (_p1))
8093 : {
8094 33 : {
8095 33 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8096 33 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8097 33 : if (res) return res;
8098 : }
8099 : }
8100 : break;
8101 : }
8102 35 : case GE_EXPR:
8103 35 : {
8104 35 : tree _q20 = TREE_OPERAND (_p0, 0);
8105 35 : tree _q21 = TREE_OPERAND (_p0, 1);
8106 35 : if (integer_minus_onep (_p1))
8107 : {
8108 0 : {
8109 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8110 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8111 0 : if (res) return res;
8112 : }
8113 : }
8114 : break;
8115 : }
8116 103 : case GT_EXPR:
8117 103 : {
8118 103 : tree _q20 = TREE_OPERAND (_p0, 0);
8119 103 : tree _q21 = TREE_OPERAND (_p0, 1);
8120 103 : if (integer_minus_onep (_p1))
8121 : {
8122 0 : {
8123 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8124 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8125 0 : if (res) return res;
8126 : }
8127 : }
8128 : break;
8129 : }
8130 0 : case UNORDERED_EXPR:
8131 0 : {
8132 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8133 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8134 0 : if (integer_minus_onep (_p1))
8135 : {
8136 0 : {
8137 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8138 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8139 0 : if (res) return res;
8140 : }
8141 : }
8142 : break;
8143 : }
8144 0 : case ORDERED_EXPR:
8145 0 : {
8146 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8147 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8148 0 : if (integer_minus_onep (_p1))
8149 : {
8150 0 : {
8151 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8152 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8153 0 : if (res) return res;
8154 : }
8155 : }
8156 : break;
8157 : }
8158 0 : case UNLT_EXPR:
8159 0 : {
8160 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8161 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8162 0 : if (integer_minus_onep (_p1))
8163 : {
8164 0 : {
8165 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8166 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8167 0 : if (res) return res;
8168 : }
8169 : }
8170 : break;
8171 : }
8172 0 : case UNLE_EXPR:
8173 0 : {
8174 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8175 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8176 0 : if (integer_minus_onep (_p1))
8177 : {
8178 0 : {
8179 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8180 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8181 0 : if (res) return res;
8182 : }
8183 : }
8184 : break;
8185 : }
8186 0 : case UNGT_EXPR:
8187 0 : {
8188 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8189 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8190 0 : if (integer_minus_onep (_p1))
8191 : {
8192 0 : {
8193 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8194 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8195 0 : if (res) return res;
8196 : }
8197 : }
8198 : break;
8199 : }
8200 0 : case UNGE_EXPR:
8201 0 : {
8202 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8203 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8204 0 : if (integer_minus_onep (_p1))
8205 : {
8206 0 : {
8207 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8208 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8209 0 : if (res) return res;
8210 : }
8211 : }
8212 : break;
8213 : }
8214 0 : case UNEQ_EXPR:
8215 0 : {
8216 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8217 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8218 0 : if (integer_minus_onep (_p1))
8219 : {
8220 0 : {
8221 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8222 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8223 0 : if (res) return res;
8224 : }
8225 : }
8226 : break;
8227 : }
8228 0 : case LTGT_EXPR:
8229 0 : {
8230 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8231 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8232 0 : if (integer_minus_onep (_p1))
8233 : {
8234 0 : {
8235 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8236 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8237 0 : if (res) return res;
8238 : }
8239 : }
8240 : break;
8241 : }
8242 538292 : case RDIV_EXPR:
8243 538292 : {
8244 538292 : tree _q20 = TREE_OPERAND (_p0, 0);
8245 538292 : tree _q21 = TREE_OPERAND (_p0, 1);
8246 538292 : switch (TREE_CODE (_p1))
8247 : {
8248 114607 : case RDIV_EXPR:
8249 114607 : {
8250 114607 : tree _q50 = TREE_OPERAND (_p1, 0);
8251 114607 : tree _q51 = TREE_OPERAND (_p1, 1);
8252 114607 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8253 : {
8254 2 : {
8255 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
8256 2 : tree res = generic_simplify_79 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8257 2 : if (res) return res;
8258 : }
8259 : }
8260 : break;
8261 : }
8262 : default:;
8263 : }
8264 : break;
8265 : }
8266 1684796 : case MINUS_EXPR:
8267 1684796 : {
8268 1684796 : tree _q20 = TREE_OPERAND (_p0, 0);
8269 1684796 : tree _q21 = TREE_OPERAND (_p0, 1);
8270 1684796 : switch (TREE_CODE (_q20))
8271 : {
8272 41 : case CALL_EXPR:
8273 41 : switch (get_call_combined_fn (_q20))
8274 : {
8275 4 : case CFN_BUILT_IN_POPCOUNT:
8276 4 : if (call_expr_nargs (_q20) == 1)
8277 : {
8278 4 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8279 4 : switch (TREE_CODE (_q21))
8280 : {
8281 4 : case CALL_EXPR:
8282 4 : switch (get_call_combined_fn (_q21))
8283 : {
8284 4 : case CFN_BUILT_IN_POPCOUNT:
8285 4 : if (call_expr_nargs (_q21) == 1)
8286 : {
8287 4 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8288 4 : switch (TREE_CODE (_q50))
8289 : {
8290 2 : case BIT_AND_EXPR:
8291 2 : {
8292 2 : tree _q60 = TREE_OPERAND (_q50, 0);
8293 2 : tree _q61 = TREE_OPERAND (_q50, 1);
8294 2 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8295 : {
8296 1 : switch (TREE_CODE (_p1))
8297 : {
8298 1 : case CALL_EXPR:
8299 1 : switch (get_call_combined_fn (_p1))
8300 : {
8301 1 : case CFN_BUILT_IN_POPCOUNT:
8302 1 : if (call_expr_nargs (_p1) == 1)
8303 : {
8304 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8305 1 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8306 : {
8307 1 : {
8308 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8309 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
8310 1 : if (res) return res;
8311 : }
8312 : }
8313 : }
8314 : break;
8315 : default:;
8316 : }
8317 : break;
8318 : default:;
8319 : }
8320 : }
8321 1 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8322 : {
8323 1 : switch (TREE_CODE (_p1))
8324 : {
8325 1 : case CALL_EXPR:
8326 1 : switch (get_call_combined_fn (_p1))
8327 : {
8328 1 : case CFN_BUILT_IN_POPCOUNT:
8329 1 : if (call_expr_nargs (_p1) == 1)
8330 : {
8331 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8332 1 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8333 : {
8334 1 : {
8335 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8336 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
8337 1 : if (res) return res;
8338 : }
8339 : }
8340 : }
8341 : break;
8342 : default:;
8343 : }
8344 : break;
8345 : default:;
8346 : }
8347 : }
8348 : break;
8349 : }
8350 2 : case BIT_IOR_EXPR:
8351 2 : {
8352 2 : tree _q60 = TREE_OPERAND (_q50, 0);
8353 2 : tree _q61 = TREE_OPERAND (_q50, 1);
8354 2 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8355 : {
8356 1 : switch (TREE_CODE (_p1))
8357 : {
8358 1 : case CALL_EXPR:
8359 1 : switch (get_call_combined_fn (_p1))
8360 : {
8361 1 : case CFN_BUILT_IN_POPCOUNT:
8362 1 : if (call_expr_nargs (_p1) == 1)
8363 : {
8364 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8365 1 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8366 : {
8367 1 : {
8368 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8369 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
8370 1 : if (res) return res;
8371 : }
8372 : }
8373 : }
8374 : break;
8375 : default:;
8376 : }
8377 : break;
8378 : default:;
8379 : }
8380 : }
8381 1 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8382 : {
8383 1 : switch (TREE_CODE (_p1))
8384 : {
8385 1 : case CALL_EXPR:
8386 1 : switch (get_call_combined_fn (_p1))
8387 : {
8388 1 : case CFN_BUILT_IN_POPCOUNT:
8389 1 : if (call_expr_nargs (_p1) == 1)
8390 : {
8391 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8392 1 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8393 : {
8394 1 : {
8395 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8396 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
8397 1 : if (res) return res;
8398 : }
8399 : }
8400 : }
8401 : break;
8402 : default:;
8403 : }
8404 : break;
8405 : default:;
8406 : }
8407 : }
8408 : break;
8409 : }
8410 : default:;
8411 : }
8412 : }
8413 : break;
8414 : default:;
8415 : }
8416 : break;
8417 : default:;
8418 : }
8419 : }
8420 : break;
8421 0 : case CFN_BUILT_IN_POPCOUNTLL:
8422 0 : if (call_expr_nargs (_q20) == 1)
8423 : {
8424 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8425 0 : switch (TREE_CODE (_q21))
8426 : {
8427 0 : case CALL_EXPR:
8428 0 : switch (get_call_combined_fn (_q21))
8429 : {
8430 0 : case CFN_BUILT_IN_POPCOUNTLL:
8431 0 : if (call_expr_nargs (_q21) == 1)
8432 : {
8433 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8434 0 : switch (TREE_CODE (_q50))
8435 : {
8436 0 : case BIT_AND_EXPR:
8437 0 : {
8438 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8439 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8440 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8441 : {
8442 0 : switch (TREE_CODE (_p1))
8443 : {
8444 0 : case CALL_EXPR:
8445 0 : switch (get_call_combined_fn (_p1))
8446 : {
8447 0 : case CFN_BUILT_IN_POPCOUNTLL:
8448 0 : if (call_expr_nargs (_p1) == 1)
8449 : {
8450 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8451 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8452 : {
8453 0 : {
8454 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8455 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8456 0 : if (res) return res;
8457 : }
8458 : }
8459 : }
8460 : break;
8461 : default:;
8462 : }
8463 : break;
8464 : default:;
8465 : }
8466 : }
8467 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8468 : {
8469 0 : switch (TREE_CODE (_p1))
8470 : {
8471 0 : case CALL_EXPR:
8472 0 : switch (get_call_combined_fn (_p1))
8473 : {
8474 0 : case CFN_BUILT_IN_POPCOUNTLL:
8475 0 : if (call_expr_nargs (_p1) == 1)
8476 : {
8477 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8478 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8479 : {
8480 0 : {
8481 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8482 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8483 0 : if (res) return res;
8484 : }
8485 : }
8486 : }
8487 : break;
8488 : default:;
8489 : }
8490 : break;
8491 : default:;
8492 : }
8493 : }
8494 : break;
8495 : }
8496 0 : case BIT_IOR_EXPR:
8497 0 : {
8498 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8499 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8500 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8501 : {
8502 0 : switch (TREE_CODE (_p1))
8503 : {
8504 0 : case CALL_EXPR:
8505 0 : switch (get_call_combined_fn (_p1))
8506 : {
8507 0 : case CFN_BUILT_IN_POPCOUNTLL:
8508 0 : if (call_expr_nargs (_p1) == 1)
8509 : {
8510 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8511 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8512 : {
8513 0 : {
8514 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8515 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8516 0 : if (res) return res;
8517 : }
8518 : }
8519 : }
8520 : break;
8521 : default:;
8522 : }
8523 : break;
8524 : default:;
8525 : }
8526 : }
8527 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8528 : {
8529 0 : switch (TREE_CODE (_p1))
8530 : {
8531 0 : case CALL_EXPR:
8532 0 : switch (get_call_combined_fn (_p1))
8533 : {
8534 0 : case CFN_BUILT_IN_POPCOUNTLL:
8535 0 : if (call_expr_nargs (_p1) == 1)
8536 : {
8537 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8538 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8539 : {
8540 0 : {
8541 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8542 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8543 0 : if (res) return res;
8544 : }
8545 : }
8546 : }
8547 : break;
8548 : default:;
8549 : }
8550 : break;
8551 : default:;
8552 : }
8553 : }
8554 : break;
8555 : }
8556 : default:;
8557 : }
8558 : }
8559 : break;
8560 : default:;
8561 : }
8562 : break;
8563 : default:;
8564 : }
8565 : }
8566 : break;
8567 0 : case CFN_POPCOUNT:
8568 0 : if (call_expr_nargs (_q20) == 1)
8569 : {
8570 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8571 0 : switch (TREE_CODE (_q21))
8572 : {
8573 0 : case CALL_EXPR:
8574 0 : switch (get_call_combined_fn (_q21))
8575 : {
8576 0 : case CFN_POPCOUNT:
8577 0 : if (call_expr_nargs (_q21) == 1)
8578 : {
8579 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8580 0 : switch (TREE_CODE (_q50))
8581 : {
8582 0 : case BIT_AND_EXPR:
8583 0 : {
8584 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8585 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8586 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8587 : {
8588 0 : switch (TREE_CODE (_p1))
8589 : {
8590 0 : case CALL_EXPR:
8591 0 : switch (get_call_combined_fn (_p1))
8592 : {
8593 0 : case CFN_POPCOUNT:
8594 0 : if (call_expr_nargs (_p1) == 1)
8595 : {
8596 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8597 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8598 : {
8599 0 : {
8600 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8601 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
8602 0 : if (res) return res;
8603 : }
8604 : }
8605 : }
8606 : break;
8607 : default:;
8608 : }
8609 : break;
8610 : default:;
8611 : }
8612 : }
8613 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8614 : {
8615 0 : switch (TREE_CODE (_p1))
8616 : {
8617 0 : case CALL_EXPR:
8618 0 : switch (get_call_combined_fn (_p1))
8619 : {
8620 0 : case CFN_POPCOUNT:
8621 0 : if (call_expr_nargs (_p1) == 1)
8622 : {
8623 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8624 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8625 : {
8626 0 : {
8627 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8628 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
8629 0 : if (res) return res;
8630 : }
8631 : }
8632 : }
8633 : break;
8634 : default:;
8635 : }
8636 : break;
8637 : default:;
8638 : }
8639 : }
8640 : break;
8641 : }
8642 0 : case BIT_IOR_EXPR:
8643 0 : {
8644 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8645 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8646 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8647 : {
8648 0 : switch (TREE_CODE (_p1))
8649 : {
8650 0 : case CALL_EXPR:
8651 0 : switch (get_call_combined_fn (_p1))
8652 : {
8653 0 : case CFN_POPCOUNT:
8654 0 : if (call_expr_nargs (_p1) == 1)
8655 : {
8656 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8657 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8658 : {
8659 0 : {
8660 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8661 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
8662 0 : if (res) return res;
8663 : }
8664 : }
8665 : }
8666 : break;
8667 : default:;
8668 : }
8669 : break;
8670 : default:;
8671 : }
8672 : }
8673 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8674 : {
8675 0 : switch (TREE_CODE (_p1))
8676 : {
8677 0 : case CALL_EXPR:
8678 0 : switch (get_call_combined_fn (_p1))
8679 : {
8680 0 : case CFN_POPCOUNT:
8681 0 : if (call_expr_nargs (_p1) == 1)
8682 : {
8683 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8684 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8685 : {
8686 0 : {
8687 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8688 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
8689 0 : if (res) return res;
8690 : }
8691 : }
8692 : }
8693 : break;
8694 : default:;
8695 : }
8696 : break;
8697 : default:;
8698 : }
8699 : }
8700 : break;
8701 : }
8702 : default:;
8703 : }
8704 : }
8705 : break;
8706 : default:;
8707 : }
8708 : break;
8709 : default:;
8710 : }
8711 : }
8712 : break;
8713 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8714 0 : if (call_expr_nargs (_q20) == 1)
8715 : {
8716 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8717 0 : switch (TREE_CODE (_q21))
8718 : {
8719 0 : case CALL_EXPR:
8720 0 : switch (get_call_combined_fn (_q21))
8721 : {
8722 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8723 0 : if (call_expr_nargs (_q21) == 1)
8724 : {
8725 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8726 0 : switch (TREE_CODE (_q50))
8727 : {
8728 0 : case BIT_AND_EXPR:
8729 0 : {
8730 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8731 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8732 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8733 : {
8734 0 : switch (TREE_CODE (_p1))
8735 : {
8736 0 : case CALL_EXPR:
8737 0 : switch (get_call_combined_fn (_p1))
8738 : {
8739 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8740 0 : if (call_expr_nargs (_p1) == 1)
8741 : {
8742 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8743 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8744 : {
8745 0 : {
8746 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8747 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8748 0 : if (res) return res;
8749 : }
8750 : }
8751 : }
8752 : break;
8753 : default:;
8754 : }
8755 : break;
8756 : default:;
8757 : }
8758 : }
8759 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8760 : {
8761 0 : switch (TREE_CODE (_p1))
8762 : {
8763 0 : case CALL_EXPR:
8764 0 : switch (get_call_combined_fn (_p1))
8765 : {
8766 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8767 0 : if (call_expr_nargs (_p1) == 1)
8768 : {
8769 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8770 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8771 : {
8772 0 : {
8773 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8774 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8775 0 : if (res) return res;
8776 : }
8777 : }
8778 : }
8779 : break;
8780 : default:;
8781 : }
8782 : break;
8783 : default:;
8784 : }
8785 : }
8786 : break;
8787 : }
8788 0 : case BIT_IOR_EXPR:
8789 0 : {
8790 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8791 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8792 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8793 : {
8794 0 : switch (TREE_CODE (_p1))
8795 : {
8796 0 : case CALL_EXPR:
8797 0 : switch (get_call_combined_fn (_p1))
8798 : {
8799 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8800 0 : if (call_expr_nargs (_p1) == 1)
8801 : {
8802 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8803 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8804 : {
8805 0 : {
8806 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8807 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8808 0 : if (res) return res;
8809 : }
8810 : }
8811 : }
8812 : break;
8813 : default:;
8814 : }
8815 : break;
8816 : default:;
8817 : }
8818 : }
8819 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8820 : {
8821 0 : switch (TREE_CODE (_p1))
8822 : {
8823 0 : case CALL_EXPR:
8824 0 : switch (get_call_combined_fn (_p1))
8825 : {
8826 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8827 0 : if (call_expr_nargs (_p1) == 1)
8828 : {
8829 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8830 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8831 : {
8832 0 : {
8833 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8834 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8835 0 : if (res) return res;
8836 : }
8837 : }
8838 : }
8839 : break;
8840 : default:;
8841 : }
8842 : break;
8843 : default:;
8844 : }
8845 : }
8846 : break;
8847 : }
8848 : default:;
8849 : }
8850 : }
8851 : break;
8852 : default:;
8853 : }
8854 : break;
8855 : default:;
8856 : }
8857 : }
8858 : break;
8859 0 : case CFN_BUILT_IN_POPCOUNTL:
8860 0 : if (call_expr_nargs (_q20) == 1)
8861 : {
8862 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8863 0 : switch (TREE_CODE (_q21))
8864 : {
8865 0 : case CALL_EXPR:
8866 0 : switch (get_call_combined_fn (_q21))
8867 : {
8868 0 : case CFN_BUILT_IN_POPCOUNTL:
8869 0 : if (call_expr_nargs (_q21) == 1)
8870 : {
8871 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8872 0 : switch (TREE_CODE (_q50))
8873 : {
8874 0 : case BIT_AND_EXPR:
8875 0 : {
8876 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8877 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8878 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8879 : {
8880 0 : switch (TREE_CODE (_p1))
8881 : {
8882 0 : case CALL_EXPR:
8883 0 : switch (get_call_combined_fn (_p1))
8884 : {
8885 0 : case CFN_BUILT_IN_POPCOUNTL:
8886 0 : if (call_expr_nargs (_p1) == 1)
8887 : {
8888 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8889 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8890 : {
8891 0 : {
8892 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8893 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
8894 0 : if (res) return res;
8895 : }
8896 : }
8897 : }
8898 : break;
8899 : default:;
8900 : }
8901 : break;
8902 : default:;
8903 : }
8904 : }
8905 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8906 : {
8907 0 : switch (TREE_CODE (_p1))
8908 : {
8909 0 : case CALL_EXPR:
8910 0 : switch (get_call_combined_fn (_p1))
8911 : {
8912 0 : case CFN_BUILT_IN_POPCOUNTL:
8913 0 : if (call_expr_nargs (_p1) == 1)
8914 : {
8915 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8916 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8917 : {
8918 0 : {
8919 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8920 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
8921 0 : if (res) return res;
8922 : }
8923 : }
8924 : }
8925 : break;
8926 : default:;
8927 : }
8928 : break;
8929 : default:;
8930 : }
8931 : }
8932 : break;
8933 : }
8934 0 : case BIT_IOR_EXPR:
8935 0 : {
8936 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8937 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8938 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8939 : {
8940 0 : switch (TREE_CODE (_p1))
8941 : {
8942 0 : case CALL_EXPR:
8943 0 : switch (get_call_combined_fn (_p1))
8944 : {
8945 0 : case CFN_BUILT_IN_POPCOUNTL:
8946 0 : if (call_expr_nargs (_p1) == 1)
8947 : {
8948 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8949 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8950 : {
8951 0 : {
8952 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8953 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
8954 0 : if (res) return res;
8955 : }
8956 : }
8957 : }
8958 : break;
8959 : default:;
8960 : }
8961 : break;
8962 : default:;
8963 : }
8964 : }
8965 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8966 : {
8967 0 : switch (TREE_CODE (_p1))
8968 : {
8969 0 : case CALL_EXPR:
8970 0 : switch (get_call_combined_fn (_p1))
8971 : {
8972 0 : case CFN_BUILT_IN_POPCOUNTL:
8973 0 : if (call_expr_nargs (_p1) == 1)
8974 : {
8975 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8976 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8977 : {
8978 0 : {
8979 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8980 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
8981 0 : if (res) return res;
8982 : }
8983 : }
8984 : }
8985 : break;
8986 : default:;
8987 : }
8988 : break;
8989 : default:;
8990 : }
8991 : }
8992 : break;
8993 : }
8994 : default:;
8995 : }
8996 : }
8997 : break;
8998 : default:;
8999 : }
9000 : break;
9001 : default:;
9002 : }
9003 : }
9004 : break;
9005 : default:;
9006 : }
9007 : break;
9008 : default:;
9009 : }
9010 : break;
9011 : }
9012 1 : case VEC_PERM_EXPR:
9013 1 : {
9014 1 : tree _q20 = TREE_OPERAND (_p0, 0);
9015 1 : tree _q21 = TREE_OPERAND (_p0, 1);
9016 1 : tree _q22 = TREE_OPERAND (_p0, 2);
9017 1 : switch (TREE_CODE (_q20))
9018 : {
9019 0 : case MULT_EXPR:
9020 0 : {
9021 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9022 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9023 0 : if (tree_vec_same_elem_p (_q31))
9024 : {
9025 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
9026 : {
9027 0 : {
9028 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q22, _p1 };
9029 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
9030 0 : if (res) return res;
9031 : }
9032 : }
9033 : }
9034 0 : if (tree_vec_same_elem_p (_q30))
9035 : {
9036 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
9037 : {
9038 0 : {
9039 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _q22, _p1 };
9040 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
9041 0 : if (res) return res;
9042 : }
9043 : }
9044 : }
9045 : break;
9046 : }
9047 1 : default:;
9048 : }
9049 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
9050 : {
9051 0 : switch (TREE_CODE (_p1))
9052 : {
9053 0 : case VEC_PERM_EXPR:
9054 0 : {
9055 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9056 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9057 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9058 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
9059 : {
9060 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9061 : {
9062 0 : {
9063 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
9064 0 : if (VECTOR_INTEGER_TYPE_P (type)
9065 : )
9066 : {
9067 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1276;
9068 0 : {
9069 0 : tree res_op0;
9070 0 : {
9071 0 : tree _o1[2], _r1;
9072 0 : _o1[0] = captures[0];
9073 0 : _o1[1] = captures[2];
9074 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9075 0 : captures[3] = _r1;
9076 : }
9077 0 : res_op0 = unshare_expr (captures[3]);
9078 0 : tree res_op1;
9079 0 : res_op1 = captures[3];
9080 0 : tree res_op2;
9081 0 : res_op2 = captures[1];
9082 0 : tree _r;
9083 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
9084 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 912, __FILE__, __LINE__, true);
9085 0 : return _r;
9086 : }
9087 0 : next_after_fail1276:;
9088 : }
9089 : }
9090 : }
9091 : }
9092 : break;
9093 : }
9094 0 : default:;
9095 : }
9096 0 : switch (TREE_CODE (_q22))
9097 : {
9098 0 : case VECTOR_CST:
9099 0 : {
9100 0 : switch (TREE_CODE (_p1))
9101 : {
9102 0 : case VEC_PERM_EXPR:
9103 0 : {
9104 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9105 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9106 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9107 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
9108 : {
9109 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9110 : {
9111 0 : switch (TREE_CODE (_q62))
9112 : {
9113 0 : case VECTOR_CST:
9114 0 : {
9115 0 : {
9116 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
9117 0 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures, PLUS_EXPR);
9118 0 : if (res) return res;
9119 : }
9120 0 : break;
9121 : }
9122 : default:;
9123 : }
9124 : }
9125 : }
9126 : break;
9127 : }
9128 : default:;
9129 : }
9130 : break;
9131 : }
9132 : default:;
9133 : }
9134 : }
9135 : break;
9136 : }
9137 1433333 : case CALL_EXPR:
9138 1433333 : switch (get_call_combined_fn (_p0))
9139 : {
9140 9 : case CFN_BUILT_IN_LOG:
9141 9 : if (call_expr_nargs (_p0) == 1)
9142 : {
9143 9 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9144 9 : switch (TREE_CODE (_p1))
9145 : {
9146 0 : case CALL_EXPR:
9147 0 : switch (get_call_combined_fn (_p1))
9148 : {
9149 0 : case CFN_BUILT_IN_LOG:
9150 0 : if (call_expr_nargs (_p1) == 1)
9151 : {
9152 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9153 0 : {
9154 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9155 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG);
9156 0 : if (res) return res;
9157 : }
9158 : }
9159 : break;
9160 : default:;
9161 : }
9162 : break;
9163 : default:;
9164 : }
9165 : }
9166 : break;
9167 2360 : case CFN_BUILT_IN_POPCOUNT:
9168 2360 : if (call_expr_nargs (_p0) == 1)
9169 : {
9170 2360 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9171 2360 : switch (TREE_CODE (_p1))
9172 : {
9173 22 : case CALL_EXPR:
9174 22 : switch (get_call_combined_fn (_p1))
9175 : {
9176 22 : case CFN_BUILT_IN_POPCOUNT:
9177 22 : if (call_expr_nargs (_p1) == 1)
9178 : {
9179 22 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9180 22 : {
9181 22 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9182 22 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
9183 22 : if (res) return res;
9184 : }
9185 : }
9186 : break;
9187 : default:;
9188 : }
9189 : break;
9190 2359 : default:;
9191 : }
9192 2359 : switch (TREE_CODE (_q20))
9193 : {
9194 9 : case BIT_AND_EXPR:
9195 9 : {
9196 9 : tree _q30 = TREE_OPERAND (_q20, 0);
9197 9 : tree _q31 = TREE_OPERAND (_q20, 1);
9198 9 : switch (TREE_CODE (_p1))
9199 : {
9200 9 : case CALL_EXPR:
9201 9 : switch (get_call_combined_fn (_p1))
9202 : {
9203 9 : case CFN_BUILT_IN_POPCOUNT:
9204 9 : if (call_expr_nargs (_p1) == 1)
9205 : {
9206 9 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9207 9 : switch (TREE_CODE (_q60))
9208 : {
9209 9 : case BIT_IOR_EXPR:
9210 9 : {
9211 9 : tree _q70 = TREE_OPERAND (_q60, 0);
9212 9 : tree _q71 = TREE_OPERAND (_q60, 1);
9213 9 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9214 : {
9215 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9216 : {
9217 1 : {
9218 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9219 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
9220 1 : if (res) return res;
9221 : }
9222 : }
9223 : }
9224 8 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9225 : {
9226 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9227 : {
9228 1 : {
9229 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9230 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
9231 1 : if (res) return res;
9232 : }
9233 : }
9234 : }
9235 : break;
9236 : }
9237 : default:;
9238 : }
9239 : }
9240 : break;
9241 : default:;
9242 : }
9243 : break;
9244 : default:;
9245 : }
9246 : break;
9247 : }
9248 2 : case BIT_IOR_EXPR:
9249 2 : {
9250 2 : tree _q30 = TREE_OPERAND (_q20, 0);
9251 2 : tree _q31 = TREE_OPERAND (_q20, 1);
9252 2 : switch (TREE_CODE (_p1))
9253 : {
9254 2 : case CALL_EXPR:
9255 2 : switch (get_call_combined_fn (_p1))
9256 : {
9257 2 : case CFN_BUILT_IN_POPCOUNT:
9258 2 : if (call_expr_nargs (_p1) == 1)
9259 : {
9260 2 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9261 2 : switch (TREE_CODE (_q60))
9262 : {
9263 2 : case BIT_AND_EXPR:
9264 2 : {
9265 2 : tree _q70 = TREE_OPERAND (_q60, 0);
9266 2 : tree _q71 = TREE_OPERAND (_q60, 1);
9267 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9268 : {
9269 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9270 : {
9271 1 : {
9272 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9273 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
9274 1 : if (res) return res;
9275 : }
9276 : }
9277 : }
9278 1 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9279 : {
9280 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9281 : {
9282 1 : {
9283 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9284 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
9285 1 : if (res) return res;
9286 : }
9287 : }
9288 : }
9289 : break;
9290 : }
9291 : default:;
9292 : }
9293 : }
9294 : break;
9295 : default:;
9296 : }
9297 : break;
9298 : default:;
9299 : }
9300 : break;
9301 : }
9302 2355 : default:;
9303 : }
9304 2355 : switch (TREE_CODE (_p1))
9305 : {
9306 0 : case MINUS_EXPR:
9307 0 : {
9308 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9309 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9310 0 : switch (TREE_CODE (_q40))
9311 : {
9312 0 : case CALL_EXPR:
9313 0 : switch (get_call_combined_fn (_q40))
9314 : {
9315 0 : case CFN_BUILT_IN_POPCOUNT:
9316 0 : if (call_expr_nargs (_q40) == 1)
9317 : {
9318 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9319 0 : switch (TREE_CODE (_q41))
9320 : {
9321 0 : case CALL_EXPR:
9322 0 : switch (get_call_combined_fn (_q41))
9323 : {
9324 0 : case CFN_BUILT_IN_POPCOUNT:
9325 0 : if (call_expr_nargs (_q41) == 1)
9326 : {
9327 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9328 0 : switch (TREE_CODE (_q70))
9329 : {
9330 0 : case BIT_AND_EXPR:
9331 0 : {
9332 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9333 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9334 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9335 : {
9336 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9337 : {
9338 0 : {
9339 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9340 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
9341 0 : if (res) return res;
9342 : }
9343 : }
9344 : }
9345 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9346 : {
9347 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9348 : {
9349 0 : {
9350 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9351 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
9352 0 : if (res) return res;
9353 : }
9354 : }
9355 : }
9356 : break;
9357 : }
9358 0 : case BIT_IOR_EXPR:
9359 0 : {
9360 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9361 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9362 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9363 : {
9364 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9365 : {
9366 0 : {
9367 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9368 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
9369 0 : if (res) return res;
9370 : }
9371 : }
9372 : }
9373 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9374 : {
9375 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9376 : {
9377 0 : {
9378 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9379 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
9380 0 : if (res) return res;
9381 : }
9382 : }
9383 : }
9384 : break;
9385 : }
9386 : default:;
9387 : }
9388 : }
9389 : break;
9390 : default:;
9391 : }
9392 : break;
9393 : default:;
9394 : }
9395 : }
9396 : break;
9397 : default:;
9398 : }
9399 : break;
9400 : default:;
9401 : }
9402 : break;
9403 : }
9404 : default:;
9405 : }
9406 : }
9407 : break;
9408 1 : case CFN_BUILT_IN_LOG2:
9409 1 : if (call_expr_nargs (_p0) == 1)
9410 : {
9411 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9412 1 : switch (TREE_CODE (_p1))
9413 : {
9414 1 : case CALL_EXPR:
9415 1 : switch (get_call_combined_fn (_p1))
9416 : {
9417 1 : case CFN_BUILT_IN_LOG2:
9418 1 : if (call_expr_nargs (_p1) == 1)
9419 : {
9420 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9421 1 : {
9422 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9423 1 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2);
9424 1 : if (res) return res;
9425 : }
9426 : }
9427 : break;
9428 : default:;
9429 : }
9430 : break;
9431 : default:;
9432 : }
9433 : }
9434 : break;
9435 0 : case CFN_BUILT_IN_LOGF:
9436 0 : if (call_expr_nargs (_p0) == 1)
9437 : {
9438 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9439 0 : switch (TREE_CODE (_p1))
9440 : {
9441 0 : case CALL_EXPR:
9442 0 : switch (get_call_combined_fn (_p1))
9443 : {
9444 0 : case CFN_BUILT_IN_LOGF:
9445 0 : if (call_expr_nargs (_p1) == 1)
9446 : {
9447 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9448 0 : {
9449 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9450 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF);
9451 0 : if (res) return res;
9452 : }
9453 : }
9454 : break;
9455 : default:;
9456 : }
9457 : break;
9458 : default:;
9459 : }
9460 : }
9461 : break;
9462 0 : case CFN_BUILT_IN_LOGL:
9463 0 : if (call_expr_nargs (_p0) == 1)
9464 : {
9465 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9466 0 : switch (TREE_CODE (_p1))
9467 : {
9468 0 : case CALL_EXPR:
9469 0 : switch (get_call_combined_fn (_p1))
9470 : {
9471 0 : case CFN_BUILT_IN_LOGL:
9472 0 : if (call_expr_nargs (_p1) == 1)
9473 : {
9474 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9475 0 : {
9476 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9477 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL);
9478 0 : if (res) return res;
9479 : }
9480 : }
9481 : break;
9482 : default:;
9483 : }
9484 : break;
9485 : default:;
9486 : }
9487 : }
9488 : break;
9489 27 : case CFN_BUILT_IN_POPCOUNTLL:
9490 27 : if (call_expr_nargs (_p0) == 1)
9491 : {
9492 27 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9493 27 : switch (TREE_CODE (_p1))
9494 : {
9495 25 : case CALL_EXPR:
9496 25 : switch (get_call_combined_fn (_p1))
9497 : {
9498 25 : case CFN_BUILT_IN_POPCOUNTLL:
9499 25 : if (call_expr_nargs (_p1) == 1)
9500 : {
9501 25 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9502 25 : {
9503 25 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9504 25 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9505 25 : if (res) return res;
9506 : }
9507 : }
9508 : break;
9509 : default:;
9510 : }
9511 : break;
9512 27 : default:;
9513 : }
9514 27 : switch (TREE_CODE (_q20))
9515 : {
9516 0 : case BIT_AND_EXPR:
9517 0 : {
9518 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9519 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9520 0 : switch (TREE_CODE (_p1))
9521 : {
9522 0 : case CALL_EXPR:
9523 0 : switch (get_call_combined_fn (_p1))
9524 : {
9525 0 : case CFN_BUILT_IN_POPCOUNTLL:
9526 0 : if (call_expr_nargs (_p1) == 1)
9527 : {
9528 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9529 0 : switch (TREE_CODE (_q60))
9530 : {
9531 0 : case BIT_IOR_EXPR:
9532 0 : {
9533 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9534 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9535 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9536 : {
9537 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9538 : {
9539 0 : {
9540 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9541 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9542 0 : if (res) return res;
9543 : }
9544 : }
9545 : }
9546 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9547 : {
9548 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9549 : {
9550 0 : {
9551 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9552 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9553 0 : if (res) return res;
9554 : }
9555 : }
9556 : }
9557 : break;
9558 : }
9559 : default:;
9560 : }
9561 : }
9562 : break;
9563 : default:;
9564 : }
9565 : break;
9566 : default:;
9567 : }
9568 : break;
9569 : }
9570 0 : case BIT_IOR_EXPR:
9571 0 : {
9572 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9573 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9574 0 : switch (TREE_CODE (_p1))
9575 : {
9576 0 : case CALL_EXPR:
9577 0 : switch (get_call_combined_fn (_p1))
9578 : {
9579 0 : case CFN_BUILT_IN_POPCOUNTLL:
9580 0 : if (call_expr_nargs (_p1) == 1)
9581 : {
9582 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9583 0 : switch (TREE_CODE (_q60))
9584 : {
9585 0 : case BIT_AND_EXPR:
9586 0 : {
9587 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9588 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9589 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9590 : {
9591 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9592 : {
9593 0 : {
9594 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9595 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9596 0 : if (res) return res;
9597 : }
9598 : }
9599 : }
9600 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9601 : {
9602 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9603 : {
9604 0 : {
9605 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9606 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9607 0 : if (res) return res;
9608 : }
9609 : }
9610 : }
9611 : break;
9612 : }
9613 : default:;
9614 : }
9615 : }
9616 : break;
9617 : default:;
9618 : }
9619 : break;
9620 : default:;
9621 : }
9622 : break;
9623 : }
9624 27 : default:;
9625 : }
9626 27 : switch (TREE_CODE (_p1))
9627 : {
9628 0 : case MINUS_EXPR:
9629 0 : {
9630 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9631 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9632 0 : switch (TREE_CODE (_q40))
9633 : {
9634 0 : case CALL_EXPR:
9635 0 : switch (get_call_combined_fn (_q40))
9636 : {
9637 0 : case CFN_BUILT_IN_POPCOUNTLL:
9638 0 : if (call_expr_nargs (_q40) == 1)
9639 : {
9640 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9641 0 : switch (TREE_CODE (_q41))
9642 : {
9643 0 : case CALL_EXPR:
9644 0 : switch (get_call_combined_fn (_q41))
9645 : {
9646 0 : case CFN_BUILT_IN_POPCOUNTLL:
9647 0 : if (call_expr_nargs (_q41) == 1)
9648 : {
9649 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9650 0 : switch (TREE_CODE (_q70))
9651 : {
9652 0 : case BIT_AND_EXPR:
9653 0 : {
9654 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9655 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9656 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9657 : {
9658 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9659 : {
9660 0 : {
9661 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9662 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9663 0 : if (res) return res;
9664 : }
9665 : }
9666 : }
9667 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9668 : {
9669 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9670 : {
9671 0 : {
9672 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9673 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9674 0 : if (res) return res;
9675 : }
9676 : }
9677 : }
9678 : break;
9679 : }
9680 0 : case BIT_IOR_EXPR:
9681 0 : {
9682 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9683 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9684 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9685 : {
9686 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9687 : {
9688 0 : {
9689 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9690 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9691 0 : if (res) return res;
9692 : }
9693 : }
9694 : }
9695 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9696 : {
9697 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9698 : {
9699 0 : {
9700 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9701 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9702 0 : if (res) return res;
9703 : }
9704 : }
9705 : }
9706 : break;
9707 : }
9708 : default:;
9709 : }
9710 : }
9711 : break;
9712 : default:;
9713 : }
9714 : break;
9715 : default:;
9716 : }
9717 : }
9718 : break;
9719 : default:;
9720 : }
9721 : break;
9722 : default:;
9723 : }
9724 : break;
9725 : }
9726 : default:;
9727 : }
9728 : }
9729 : break;
9730 0 : case CFN_BUILT_IN_LOG10F:
9731 0 : if (call_expr_nargs (_p0) == 1)
9732 : {
9733 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9734 0 : switch (TREE_CODE (_p1))
9735 : {
9736 0 : case CALL_EXPR:
9737 0 : switch (get_call_combined_fn (_p1))
9738 : {
9739 0 : case CFN_BUILT_IN_LOG10F:
9740 0 : if (call_expr_nargs (_p1) == 1)
9741 : {
9742 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9743 0 : {
9744 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9745 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F);
9746 0 : if (res) return res;
9747 : }
9748 : }
9749 : break;
9750 : default:;
9751 : }
9752 : break;
9753 : default:;
9754 : }
9755 : }
9756 : break;
9757 0 : case CFN_BUILT_IN_LOG10L:
9758 0 : if (call_expr_nargs (_p0) == 1)
9759 : {
9760 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9761 0 : switch (TREE_CODE (_p1))
9762 : {
9763 0 : case CALL_EXPR:
9764 0 : switch (get_call_combined_fn (_p1))
9765 : {
9766 0 : case CFN_BUILT_IN_LOG10L:
9767 0 : if (call_expr_nargs (_p1) == 1)
9768 : {
9769 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9770 0 : {
9771 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9772 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L);
9773 0 : if (res) return res;
9774 : }
9775 : }
9776 : break;
9777 : default:;
9778 : }
9779 : break;
9780 : default:;
9781 : }
9782 : }
9783 : break;
9784 7 : case CFN_POPCOUNT:
9785 7 : if (call_expr_nargs (_p0) == 1)
9786 : {
9787 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9788 7 : switch (TREE_CODE (_p1))
9789 : {
9790 1 : case CALL_EXPR:
9791 1 : switch (get_call_combined_fn (_p1))
9792 : {
9793 1 : case CFN_POPCOUNT:
9794 1 : if (call_expr_nargs (_p1) == 1)
9795 : {
9796 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9797 1 : {
9798 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9799 1 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9800 1 : if (res) return res;
9801 : }
9802 : }
9803 : break;
9804 : default:;
9805 : }
9806 : break;
9807 7 : default:;
9808 : }
9809 7 : switch (TREE_CODE (_q20))
9810 : {
9811 0 : case BIT_AND_EXPR:
9812 0 : {
9813 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9814 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9815 0 : switch (TREE_CODE (_p1))
9816 : {
9817 0 : case CALL_EXPR:
9818 0 : switch (get_call_combined_fn (_p1))
9819 : {
9820 0 : case CFN_POPCOUNT:
9821 0 : if (call_expr_nargs (_p1) == 1)
9822 : {
9823 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9824 0 : switch (TREE_CODE (_q60))
9825 : {
9826 0 : case BIT_IOR_EXPR:
9827 0 : {
9828 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9829 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9830 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9831 : {
9832 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9833 : {
9834 0 : {
9835 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9836 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9837 0 : if (res) return res;
9838 : }
9839 : }
9840 : }
9841 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9842 : {
9843 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9844 : {
9845 0 : {
9846 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9847 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9848 0 : if (res) return res;
9849 : }
9850 : }
9851 : }
9852 : break;
9853 : }
9854 : default:;
9855 : }
9856 : }
9857 : break;
9858 : default:;
9859 : }
9860 : break;
9861 : default:;
9862 : }
9863 : break;
9864 : }
9865 0 : case BIT_IOR_EXPR:
9866 0 : {
9867 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9868 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9869 0 : switch (TREE_CODE (_p1))
9870 : {
9871 0 : case CALL_EXPR:
9872 0 : switch (get_call_combined_fn (_p1))
9873 : {
9874 0 : case CFN_POPCOUNT:
9875 0 : if (call_expr_nargs (_p1) == 1)
9876 : {
9877 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9878 0 : switch (TREE_CODE (_q60))
9879 : {
9880 0 : case BIT_AND_EXPR:
9881 0 : {
9882 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9883 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9884 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9885 : {
9886 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9887 : {
9888 0 : {
9889 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9890 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9891 0 : if (res) return res;
9892 : }
9893 : }
9894 : }
9895 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9896 : {
9897 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9898 : {
9899 0 : {
9900 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9901 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9902 0 : if (res) return res;
9903 : }
9904 : }
9905 : }
9906 : break;
9907 : }
9908 : default:;
9909 : }
9910 : }
9911 : break;
9912 : default:;
9913 : }
9914 : break;
9915 : default:;
9916 : }
9917 : break;
9918 : }
9919 7 : default:;
9920 : }
9921 7 : switch (TREE_CODE (_p1))
9922 : {
9923 0 : case MINUS_EXPR:
9924 0 : {
9925 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9926 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9927 0 : switch (TREE_CODE (_q40))
9928 : {
9929 0 : case CALL_EXPR:
9930 0 : switch (get_call_combined_fn (_q40))
9931 : {
9932 0 : case CFN_POPCOUNT:
9933 0 : if (call_expr_nargs (_q40) == 1)
9934 : {
9935 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9936 0 : switch (TREE_CODE (_q41))
9937 : {
9938 0 : case CALL_EXPR:
9939 0 : switch (get_call_combined_fn (_q41))
9940 : {
9941 0 : case CFN_POPCOUNT:
9942 0 : if (call_expr_nargs (_q41) == 1)
9943 : {
9944 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9945 0 : switch (TREE_CODE (_q70))
9946 : {
9947 0 : case BIT_AND_EXPR:
9948 0 : {
9949 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9950 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9951 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9952 : {
9953 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9954 : {
9955 0 : {
9956 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9957 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
9958 0 : if (res) return res;
9959 : }
9960 : }
9961 : }
9962 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9963 : {
9964 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9965 : {
9966 0 : {
9967 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9968 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
9969 0 : if (res) return res;
9970 : }
9971 : }
9972 : }
9973 : break;
9974 : }
9975 0 : case BIT_IOR_EXPR:
9976 0 : {
9977 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9978 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9979 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9980 : {
9981 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9982 : {
9983 0 : {
9984 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9985 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
9986 0 : if (res) return res;
9987 : }
9988 : }
9989 : }
9990 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9991 : {
9992 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9993 : {
9994 0 : {
9995 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9996 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
9997 0 : if (res) return res;
9998 : }
9999 : }
10000 : }
10001 : break;
10002 : }
10003 : default:;
10004 : }
10005 : }
10006 : break;
10007 : default:;
10008 : }
10009 : break;
10010 : default:;
10011 : }
10012 : }
10013 : break;
10014 : default:;
10015 : }
10016 : break;
10017 : default:;
10018 : }
10019 : break;
10020 : }
10021 : default:;
10022 : }
10023 : }
10024 : break;
10025 0 : case CFN_LOG:
10026 0 : if (call_expr_nargs (_p0) == 1)
10027 : {
10028 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10029 0 : switch (TREE_CODE (_p1))
10030 : {
10031 0 : case CALL_EXPR:
10032 0 : switch (get_call_combined_fn (_p1))
10033 : {
10034 0 : case CFN_LOG:
10035 0 : if (call_expr_nargs (_p1) == 1)
10036 : {
10037 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10038 0 : {
10039 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10040 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_LOG);
10041 0 : if (res) return res;
10042 : }
10043 : }
10044 : break;
10045 : default:;
10046 : }
10047 : break;
10048 : default:;
10049 : }
10050 : }
10051 : break;
10052 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
10053 0 : if (call_expr_nargs (_p0) == 1)
10054 : {
10055 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10056 0 : switch (TREE_CODE (_p1))
10057 : {
10058 0 : case CALL_EXPR:
10059 0 : switch (get_call_combined_fn (_p1))
10060 : {
10061 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
10062 0 : if (call_expr_nargs (_p1) == 1)
10063 : {
10064 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10065 0 : {
10066 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10067 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
10068 0 : if (res) return res;
10069 : }
10070 : }
10071 : break;
10072 : default:;
10073 : }
10074 : break;
10075 0 : default:;
10076 : }
10077 0 : switch (TREE_CODE (_q20))
10078 : {
10079 0 : case BIT_AND_EXPR:
10080 0 : {
10081 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10082 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10083 0 : switch (TREE_CODE (_p1))
10084 : {
10085 0 : case CALL_EXPR:
10086 0 : switch (get_call_combined_fn (_p1))
10087 : {
10088 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
10089 0 : if (call_expr_nargs (_p1) == 1)
10090 : {
10091 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
10092 0 : switch (TREE_CODE (_q60))
10093 : {
10094 0 : case BIT_IOR_EXPR:
10095 0 : {
10096 0 : tree _q70 = TREE_OPERAND (_q60, 0);
10097 0 : tree _q71 = TREE_OPERAND (_q60, 1);
10098 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10099 : {
10100 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
10101 : {
10102 0 : {
10103 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
10104 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
10105 0 : if (res) return res;
10106 : }
10107 : }
10108 : }
10109 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
10110 : {
10111 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10112 : {
10113 0 : {
10114 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
10115 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
10116 0 : if (res) return res;
10117 : }
10118 : }
10119 : }
10120 : break;
10121 : }
10122 : default:;
10123 : }
10124 : }
10125 : break;
10126 : default:;
10127 : }
10128 : break;
10129 : default:;
10130 : }
10131 : break;
10132 : }
10133 0 : case BIT_IOR_EXPR:
10134 0 : {
10135 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10136 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10137 0 : switch (TREE_CODE (_p1))
10138 : {
10139 0 : case CALL_EXPR:
10140 0 : switch (get_call_combined_fn (_p1))
10141 : {
10142 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
10143 0 : if (call_expr_nargs (_p1) == 1)
10144 : {
10145 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
10146 0 : switch (TREE_CODE (_q60))
10147 : {
10148 0 : case BIT_AND_EXPR:
10149 0 : {
10150 0 : tree _q70 = TREE_OPERAND (_q60, 0);
10151 0 : tree _q71 = TREE_OPERAND (_q60, 1);
10152 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10153 : {
10154 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
10155 : {
10156 0 : {
10157 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
10158 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
10159 0 : if (res) return res;
10160 : }
10161 : }
10162 : }
10163 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
10164 : {
10165 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10166 : {
10167 0 : {
10168 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
10169 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
10170 0 : if (res) return res;
10171 : }
10172 : }
10173 : }
10174 : break;
10175 : }
10176 : default:;
10177 : }
10178 : }
10179 : break;
10180 : default:;
10181 : }
10182 : break;
10183 : default:;
10184 : }
10185 : break;
10186 : }
10187 0 : default:;
10188 : }
10189 0 : switch (TREE_CODE (_p1))
10190 : {
10191 0 : case MINUS_EXPR:
10192 0 : {
10193 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10194 0 : tree _q41 = TREE_OPERAND (_p1, 1);
10195 0 : switch (TREE_CODE (_q40))
10196 : {
10197 0 : case CALL_EXPR:
10198 0 : switch (get_call_combined_fn (_q40))
10199 : {
10200 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
10201 0 : if (call_expr_nargs (_q40) == 1)
10202 : {
10203 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
10204 0 : switch (TREE_CODE (_q41))
10205 : {
10206 0 : case CALL_EXPR:
10207 0 : switch (get_call_combined_fn (_q41))
10208 : {
10209 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
10210 0 : if (call_expr_nargs (_q41) == 1)
10211 : {
10212 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
10213 0 : switch (TREE_CODE (_q70))
10214 : {
10215 0 : case BIT_AND_EXPR:
10216 0 : {
10217 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10218 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10219 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10220 : {
10221 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10222 : {
10223 0 : {
10224 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10225 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
10226 0 : if (res) return res;
10227 : }
10228 : }
10229 : }
10230 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10231 : {
10232 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10233 : {
10234 0 : {
10235 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10236 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
10237 0 : if (res) return res;
10238 : }
10239 : }
10240 : }
10241 : break;
10242 : }
10243 0 : case BIT_IOR_EXPR:
10244 0 : {
10245 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10246 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10247 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10248 : {
10249 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10250 : {
10251 0 : {
10252 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10253 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
10254 0 : if (res) return res;
10255 : }
10256 : }
10257 : }
10258 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10259 : {
10260 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10261 : {
10262 0 : {
10263 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10264 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
10265 0 : if (res) return res;
10266 : }
10267 : }
10268 : }
10269 : break;
10270 : }
10271 : default:;
10272 : }
10273 : }
10274 : break;
10275 : default:;
10276 : }
10277 : break;
10278 : default:;
10279 : }
10280 : }
10281 : break;
10282 : default:;
10283 : }
10284 : break;
10285 : default:;
10286 : }
10287 : break;
10288 : }
10289 : default:;
10290 : }
10291 : }
10292 : break;
10293 0 : case CFN_LOG2:
10294 0 : if (call_expr_nargs (_p0) == 1)
10295 : {
10296 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10297 0 : switch (TREE_CODE (_p1))
10298 : {
10299 0 : case CALL_EXPR:
10300 0 : switch (get_call_combined_fn (_p1))
10301 : {
10302 0 : case CFN_LOG2:
10303 0 : if (call_expr_nargs (_p1) == 1)
10304 : {
10305 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10306 0 : {
10307 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10308 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_LOG2);
10309 0 : if (res) return res;
10310 : }
10311 : }
10312 : break;
10313 : default:;
10314 : }
10315 : break;
10316 : default:;
10317 : }
10318 : }
10319 : break;
10320 136 : case CFN_BUILT_IN_POPCOUNTL:
10321 136 : if (call_expr_nargs (_p0) == 1)
10322 : {
10323 136 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10324 136 : switch (TREE_CODE (_p1))
10325 : {
10326 69 : case CALL_EXPR:
10327 69 : switch (get_call_combined_fn (_p1))
10328 : {
10329 69 : case CFN_BUILT_IN_POPCOUNTL:
10330 69 : if (call_expr_nargs (_p1) == 1)
10331 : {
10332 69 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10333 69 : {
10334 69 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10335 69 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10336 69 : if (res) return res;
10337 : }
10338 : }
10339 : break;
10340 : default:;
10341 : }
10342 : break;
10343 136 : default:;
10344 : }
10345 136 : switch (TREE_CODE (_q20))
10346 : {
10347 0 : case BIT_AND_EXPR:
10348 0 : {
10349 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10350 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10351 0 : switch (TREE_CODE (_p1))
10352 : {
10353 0 : case CALL_EXPR:
10354 0 : switch (get_call_combined_fn (_p1))
10355 : {
10356 0 : case CFN_BUILT_IN_POPCOUNTL:
10357 0 : if (call_expr_nargs (_p1) == 1)
10358 : {
10359 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
10360 0 : switch (TREE_CODE (_q60))
10361 : {
10362 0 : case BIT_IOR_EXPR:
10363 0 : {
10364 0 : tree _q70 = TREE_OPERAND (_q60, 0);
10365 0 : tree _q71 = TREE_OPERAND (_q60, 1);
10366 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10367 : {
10368 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
10369 : {
10370 0 : {
10371 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
10372 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10373 0 : if (res) return res;
10374 : }
10375 : }
10376 : }
10377 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
10378 : {
10379 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10380 : {
10381 0 : {
10382 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
10383 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10384 0 : if (res) return res;
10385 : }
10386 : }
10387 : }
10388 : break;
10389 : }
10390 : default:;
10391 : }
10392 : }
10393 : break;
10394 : default:;
10395 : }
10396 : break;
10397 : default:;
10398 : }
10399 : break;
10400 : }
10401 0 : case BIT_IOR_EXPR:
10402 0 : {
10403 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10404 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10405 0 : switch (TREE_CODE (_p1))
10406 : {
10407 0 : case CALL_EXPR:
10408 0 : switch (get_call_combined_fn (_p1))
10409 : {
10410 0 : case CFN_BUILT_IN_POPCOUNTL:
10411 0 : if (call_expr_nargs (_p1) == 1)
10412 : {
10413 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
10414 0 : switch (TREE_CODE (_q60))
10415 : {
10416 0 : case BIT_AND_EXPR:
10417 0 : {
10418 0 : tree _q70 = TREE_OPERAND (_q60, 0);
10419 0 : tree _q71 = TREE_OPERAND (_q60, 1);
10420 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10421 : {
10422 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
10423 : {
10424 0 : {
10425 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
10426 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10427 0 : if (res) return res;
10428 : }
10429 : }
10430 : }
10431 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
10432 : {
10433 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10434 : {
10435 0 : {
10436 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
10437 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10438 0 : if (res) return res;
10439 : }
10440 : }
10441 : }
10442 : break;
10443 : }
10444 : default:;
10445 : }
10446 : }
10447 : break;
10448 : default:;
10449 : }
10450 : break;
10451 : default:;
10452 : }
10453 : break;
10454 : }
10455 136 : default:;
10456 : }
10457 136 : switch (TREE_CODE (_p1))
10458 : {
10459 0 : case MINUS_EXPR:
10460 0 : {
10461 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10462 0 : tree _q41 = TREE_OPERAND (_p1, 1);
10463 0 : switch (TREE_CODE (_q40))
10464 : {
10465 0 : case CALL_EXPR:
10466 0 : switch (get_call_combined_fn (_q40))
10467 : {
10468 0 : case CFN_BUILT_IN_POPCOUNTL:
10469 0 : if (call_expr_nargs (_q40) == 1)
10470 : {
10471 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
10472 0 : switch (TREE_CODE (_q41))
10473 : {
10474 0 : case CALL_EXPR:
10475 0 : switch (get_call_combined_fn (_q41))
10476 : {
10477 0 : case CFN_BUILT_IN_POPCOUNTL:
10478 0 : if (call_expr_nargs (_q41) == 1)
10479 : {
10480 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
10481 0 : switch (TREE_CODE (_q70))
10482 : {
10483 0 : case BIT_AND_EXPR:
10484 0 : {
10485 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10486 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10487 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10488 : {
10489 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10490 : {
10491 0 : {
10492 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10493 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
10494 0 : if (res) return res;
10495 : }
10496 : }
10497 : }
10498 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10499 : {
10500 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10501 : {
10502 0 : {
10503 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10504 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
10505 0 : if (res) return res;
10506 : }
10507 : }
10508 : }
10509 : break;
10510 : }
10511 0 : case BIT_IOR_EXPR:
10512 0 : {
10513 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10514 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10515 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10516 : {
10517 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10518 : {
10519 0 : {
10520 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10521 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
10522 0 : if (res) return res;
10523 : }
10524 : }
10525 : }
10526 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10527 : {
10528 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10529 : {
10530 0 : {
10531 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10532 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
10533 0 : if (res) return res;
10534 : }
10535 : }
10536 : }
10537 : break;
10538 : }
10539 : default:;
10540 : }
10541 : }
10542 : break;
10543 : default:;
10544 : }
10545 : break;
10546 : default:;
10547 : }
10548 : }
10549 : break;
10550 : default:;
10551 : }
10552 : break;
10553 : default:;
10554 : }
10555 : break;
10556 : }
10557 : default:;
10558 : }
10559 : }
10560 : break;
10561 0 : case CFN_LOG10:
10562 0 : if (call_expr_nargs (_p0) == 1)
10563 : {
10564 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10565 0 : switch (TREE_CODE (_p1))
10566 : {
10567 0 : case CALL_EXPR:
10568 0 : switch (get_call_combined_fn (_p1))
10569 : {
10570 0 : case CFN_LOG10:
10571 0 : if (call_expr_nargs (_p1) == 1)
10572 : {
10573 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10574 0 : {
10575 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10576 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_LOG10);
10577 0 : if (res) return res;
10578 : }
10579 : }
10580 : break;
10581 : default:;
10582 : }
10583 : break;
10584 : default:;
10585 : }
10586 : }
10587 : break;
10588 0 : case CFN_BUILT_IN_LOG10:
10589 0 : if (call_expr_nargs (_p0) == 1)
10590 : {
10591 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10592 0 : switch (TREE_CODE (_p1))
10593 : {
10594 0 : case CALL_EXPR:
10595 0 : switch (get_call_combined_fn (_p1))
10596 : {
10597 0 : case CFN_BUILT_IN_LOG10:
10598 0 : if (call_expr_nargs (_p1) == 1)
10599 : {
10600 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10601 0 : {
10602 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10603 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10);
10604 0 : if (res) return res;
10605 : }
10606 : }
10607 : break;
10608 : default:;
10609 : }
10610 : break;
10611 : default:;
10612 : }
10613 : }
10614 : break;
10615 0 : case CFN_BUILT_IN_LOG2F:
10616 0 : if (call_expr_nargs (_p0) == 1)
10617 : {
10618 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10619 0 : switch (TREE_CODE (_p1))
10620 : {
10621 0 : case CALL_EXPR:
10622 0 : switch (get_call_combined_fn (_p1))
10623 : {
10624 0 : case CFN_BUILT_IN_LOG2F:
10625 0 : if (call_expr_nargs (_p1) == 1)
10626 : {
10627 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10628 0 : {
10629 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10630 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F);
10631 0 : if (res) return res;
10632 : }
10633 : }
10634 : break;
10635 : default:;
10636 : }
10637 : break;
10638 : default:;
10639 : }
10640 : }
10641 : break;
10642 0 : case CFN_BUILT_IN_LOG2L:
10643 0 : if (call_expr_nargs (_p0) == 1)
10644 : {
10645 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10646 0 : switch (TREE_CODE (_p1))
10647 : {
10648 0 : case CALL_EXPR:
10649 0 : switch (get_call_combined_fn (_p1))
10650 : {
10651 0 : case CFN_BUILT_IN_LOG2L:
10652 0 : if (call_expr_nargs (_p1) == 1)
10653 : {
10654 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10655 0 : {
10656 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10657 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L);
10658 0 : if (res) return res;
10659 : }
10660 : }
10661 : break;
10662 : default:;
10663 : }
10664 : break;
10665 : default:;
10666 : }
10667 : }
10668 : break;
10669 : default:;
10670 : }
10671 : break;
10672 63300170 : default:;
10673 : }
10674 63300170 : switch (TREE_CODE (_p1))
10675 : {
10676 0 : case VEC_PERM_EXPR:
10677 0 : {
10678 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10679 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10680 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10681 0 : switch (TREE_CODE (_q30))
10682 : {
10683 0 : case MULT_EXPR:
10684 0 : {
10685 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10686 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10687 0 : if (tree_vec_same_elem_p (_q41))
10688 : {
10689 0 : if ((_q31 == _q30 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q30, 0) && types_match (_q31, _q30)))
10690 : {
10691 0 : {
10692 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _q41, _q32, _p0 };
10693 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
10694 0 : if (res) return res;
10695 : }
10696 : }
10697 : }
10698 0 : if (tree_vec_same_elem_p (_q40))
10699 : {
10700 0 : if ((_q31 == _q30 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q30, 0) && types_match (_q31, _q30)))
10701 : {
10702 0 : {
10703 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _q40, _q32, _p0 };
10704 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
10705 0 : if (res) return res;
10706 : }
10707 : }
10708 : }
10709 : break;
10710 : }
10711 : default:;
10712 : }
10713 : break;
10714 : }
10715 : default:;
10716 : }
10717 : return NULL_TREE;
10718 : }
10719 :
10720 : tree
10721 1946 : generic_simplify_LROTATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10722 : {
10723 1946 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10724 1946 : if (integer_all_onesp (_p0))
10725 : {
10726 0 : {
10727 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10728 0 : tree res = generic_simplify_565 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10729 0 : if (res) return res;
10730 : }
10731 : }
10732 1946 : if (integer_zerop (_p1))
10733 : {
10734 0 : {
10735 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10736 0 : tree res = generic_simplify_426 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10737 0 : if (res) return res;
10738 : }
10739 : }
10740 1946 : if (integer_zerop (_p0))
10741 : {
10742 0 : {
10743 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10744 0 : tree res = generic_simplify_427 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10745 0 : if (res) return res;
10746 : }
10747 : }
10748 1946 : switch (TREE_CODE (_p1))
10749 : {
10750 0 : case VECTOR_CST:
10751 0 : {
10752 0 : {
10753 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10754 0 : tree res = generic_simplify_428 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10755 0 : if (res) return res;
10756 : }
10757 0 : break;
10758 : }
10759 0 : case CONSTRUCTOR:
10760 0 : {
10761 0 : {
10762 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10763 0 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10764 0 : if (res) return res;
10765 : }
10766 0 : break;
10767 : }
10768 1295 : case INTEGER_CST:
10769 1295 : {
10770 1295 : {
10771 1295 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10772 1295 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1812;
10773 1295 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1812;
10774 1295 : {
10775 1295 : tree res_op0;
10776 1295 : res_op0 = captures[0];
10777 1295 : tree res_op1;
10778 1295 : res_op1 = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]),
10779 1295 : build_int_cst (TREE_TYPE (captures[1]),
10780 1295 : element_precision (type)), captures[1]);
10781 1295 : tree _r;
10782 1295 : _r = fold_build2_loc (loc, RROTATE_EXPR, type, res_op0, res_op1);
10783 1295 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1042, __FILE__, __LINE__, true);
10784 1295 : return _r;
10785 : }
10786 0 : next_after_fail1812:;
10787 : }
10788 0 : break;
10789 : }
10790 0 : case MINUS_EXPR:
10791 0 : {
10792 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10793 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10794 0 : switch (TREE_CODE (_q30))
10795 : {
10796 0 : case INTEGER_CST:
10797 0 : {
10798 0 : {
10799 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
10800 0 : tree res = generic_simplify_566 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR);
10801 0 : if (res) return res;
10802 : }
10803 0 : break;
10804 : }
10805 : default:;
10806 : }
10807 : break;
10808 : }
10809 651 : default:;
10810 : }
10811 651 : switch (TREE_CODE (_p0))
10812 : {
10813 0 : case LROTATE_EXPR:
10814 0 : {
10815 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10816 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10817 0 : switch (TREE_CODE (_q21))
10818 : {
10819 0 : case INTEGER_CST:
10820 0 : {
10821 0 : switch (TREE_CODE (_p1))
10822 : {
10823 0 : case INTEGER_CST:
10824 0 : {
10825 0 : {
10826 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10827 0 : tree res = generic_simplify_430 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10828 0 : if (res) return res;
10829 : }
10830 0 : break;
10831 : }
10832 : default:;
10833 : }
10834 : break;
10835 : }
10836 : default:;
10837 : }
10838 : break;
10839 : }
10840 : default:;
10841 : }
10842 : return NULL_TREE;
10843 : }
10844 :
10845 : tree
10846 664452 : generic_simplify_COMPLEX_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10847 : {
10848 664452 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10849 664452 : switch (TREE_CODE (_p0))
10850 : {
10851 40 : case REALPART_EXPR:
10852 40 : {
10853 40 : tree _q20 = TREE_OPERAND (_p0, 0);
10854 40 : switch (TREE_CODE (_p1))
10855 : {
10856 30 : case IMAGPART_EXPR:
10857 30 : {
10858 30 : tree _q40 = TREE_OPERAND (_p1, 0);
10859 30 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10860 : {
10861 30 : {
10862 30 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10863 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1813;
10864 30 : {
10865 30 : tree _r;
10866 30 : _r = captures[0];
10867 30 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1043, __FILE__, __LINE__, true);
10868 30 : return _r;
10869 : }
10870 0 : next_after_fail1813:;
10871 : }
10872 : }
10873 : break;
10874 : }
10875 : default:;
10876 : }
10877 : break;
10878 : }
10879 : default:;
10880 : }
10881 : return NULL_TREE;
10882 : }
10883 :
10884 : tree
10885 203332 : generic_simplify_ORDERED_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10886 : {
10887 203332 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10888 203332 : switch (TREE_CODE (_p0))
10889 : {
10890 0 : case VEC_COND_EXPR:
10891 0 : {
10892 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10893 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10894 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10895 0 : switch (TREE_CODE (_p1))
10896 : {
10897 0 : case VEC_COND_EXPR:
10898 0 : {
10899 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10900 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10901 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10902 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10903 : {
10904 0 : {
10905 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10906 0 : if (VECTOR_TYPE_P (type)
10907 0 : && (TREE_CODE_CLASS (ORDERED_EXPR) != tcc_comparison
10908 0 : || types_match (type, TREE_TYPE (captures[2]))
10909 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10910 : || (optimize_vectors_before_lowering_p ()
10911 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10912 : )
10913 : {
10914 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1819;
10915 0 : {
10916 0 : tree res_op0;
10917 0 : res_op0 = captures[1];
10918 0 : tree res_op1;
10919 0 : {
10920 0 : tree _o1[2], _r1;
10921 0 : _o1[0] = captures[2];
10922 0 : _o1[1] = captures[5];
10923 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10924 0 : if (EXPR_P (_r1))
10925 0 : goto next_after_fail1819;
10926 0 : res_op1 = _r1;
10927 : }
10928 0 : tree res_op2;
10929 0 : {
10930 0 : tree _o1[2], _r1;
10931 0 : _o1[0] = captures[3];
10932 0 : _o1[1] = captures[6];
10933 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10934 0 : if (EXPR_P (_r1))
10935 0 : goto next_after_fail1819;
10936 0 : res_op2 = _r1;
10937 : }
10938 0 : tree _r;
10939 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10940 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
10941 0 : return _r;
10942 : }
10943 0 : next_after_fail1819:;
10944 : }
10945 : }
10946 : }
10947 : break;
10948 : }
10949 0 : default:;
10950 : }
10951 0 : {
10952 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10953 0 : if (VECTOR_TYPE_P (type)
10954 0 : && (TREE_CODE_CLASS (ORDERED_EXPR) != tcc_comparison
10955 0 : || types_match (type, TREE_TYPE (captures[2]))
10956 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10957 : || (optimize_vectors_before_lowering_p ()
10958 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10959 : )
10960 : {
10961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1820;
10962 0 : {
10963 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1820;
10964 0 : tree res_op0;
10965 0 : res_op0 = captures[1];
10966 0 : tree res_op1;
10967 0 : {
10968 0 : tree _o1[2], _r1;
10969 0 : _o1[0] = captures[2];
10970 0 : _o1[1] = unshare_expr (captures[4]);
10971 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10972 0 : if (EXPR_P (_r1))
10973 0 : goto next_after_fail1820;
10974 0 : res_op1 = _r1;
10975 : }
10976 0 : tree res_op2;
10977 0 : {
10978 0 : tree _o1[2], _r1;
10979 0 : _o1[0] = captures[3];
10980 0 : _o1[1] = captures[4];
10981 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10982 0 : if (EXPR_P (_r1))
10983 0 : goto next_after_fail1820;
10984 0 : res_op2 = _r1;
10985 : }
10986 0 : tree _r;
10987 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10988 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
10989 0 : return _r;
10990 : }
10991 0 : next_after_fail1820:;
10992 : }
10993 : }
10994 0 : break;
10995 : }
10996 203332 : default:;
10997 : }
10998 203332 : switch (TREE_CODE (_p1))
10999 : {
11000 0 : case VEC_COND_EXPR:
11001 0 : {
11002 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11003 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11004 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11005 0 : {
11006 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11007 0 : if (VECTOR_TYPE_P (type)
11008 0 : && (TREE_CODE_CLASS (ORDERED_EXPR) != tcc_comparison
11009 0 : || types_match (type, TREE_TYPE (captures[3]))
11010 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11011 : || (optimize_vectors_before_lowering_p ()
11012 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11013 : )
11014 : {
11015 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1821;
11016 0 : {
11017 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1821;
11018 0 : tree res_op0;
11019 0 : res_op0 = captures[2];
11020 0 : tree res_op1;
11021 0 : {
11022 0 : tree _o1[2], _r1;
11023 0 : _o1[0] = unshare_expr (captures[0]);
11024 0 : _o1[1] = captures[3];
11025 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
11026 0 : if (EXPR_P (_r1))
11027 0 : goto next_after_fail1821;
11028 0 : res_op1 = _r1;
11029 : }
11030 0 : tree res_op2;
11031 0 : {
11032 0 : tree _o1[2], _r1;
11033 0 : _o1[0] = captures[0];
11034 0 : _o1[1] = captures[4];
11035 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
11036 0 : if (EXPR_P (_r1))
11037 0 : goto next_after_fail1821;
11038 0 : res_op2 = _r1;
11039 : }
11040 0 : tree _r;
11041 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11042 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
11043 0 : return _r;
11044 : }
11045 0 : next_after_fail1821:;
11046 : }
11047 : }
11048 0 : break;
11049 : }
11050 203332 : default:;
11051 : }
11052 203332 : switch (TREE_CODE (_p0))
11053 : {
11054 0 : case FLOAT_EXPR:
11055 0 : {
11056 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11057 0 : switch (TREE_CODE (_p1))
11058 : {
11059 0 : case FLOAT_EXPR:
11060 0 : {
11061 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11062 0 : {
11063 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11064 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, ORDERED_EXPR, ORDERED_EXPR);
11065 0 : if (res) return res;
11066 : }
11067 0 : break;
11068 : }
11069 : default:;
11070 : }
11071 : break;
11072 : }
11073 0 : case NEGATE_EXPR:
11074 0 : {
11075 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11076 0 : switch (TREE_CODE (_p1))
11077 : {
11078 0 : case NEGATE_EXPR:
11079 0 : {
11080 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11081 0 : {
11082 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11083 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, ORDERED_EXPR, ORDERED_EXPR);
11084 0 : if (res) return res;
11085 : }
11086 0 : break;
11087 : }
11088 0 : default:;
11089 : }
11090 0 : if (CONSTANT_CLASS_P (_p1))
11091 : {
11092 0 : {
11093 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11094 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, ORDERED_EXPR, ORDERED_EXPR);
11095 0 : if (res) return res;
11096 : }
11097 : }
11098 : break;
11099 : }
11100 203332 : default:;
11101 : }
11102 203332 : switch (TREE_CODE (_p1))
11103 : {
11104 102 : case REAL_CST:
11105 102 : {
11106 102 : {
11107 102 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11108 102 : tree res = generic_simplify_572 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
11109 102 : if (res) return res;
11110 : }
11111 102 : break;
11112 : }
11113 203332 : default:;
11114 : }
11115 203332 : {
11116 203332 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11117 203332 : if (tree_expr_nan_p (captures[0]) || tree_expr_nan_p (captures[1])
11118 : )
11119 : {
11120 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1822;
11121 0 : {
11122 0 : tree _r;
11123 0 : _r = constant_boolean_node (false, type);
11124 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11125 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11126 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11127 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11128 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1046, __FILE__, __LINE__, true);
11129 0 : return _r;
11130 : }
11131 0 : next_after_fail1822:;
11132 : }
11133 : else
11134 : {
11135 203332 : if (!tree_expr_maybe_nan_p (captures[0]) && !tree_expr_maybe_nan_p (captures[1])
11136 : )
11137 : {
11138 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1823;
11139 10 : {
11140 10 : tree _r;
11141 10 : _r = constant_boolean_node (true, type);
11142 10 : if (TREE_SIDE_EFFECTS (captures[0]))
11143 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11144 10 : if (TREE_SIDE_EFFECTS (captures[1]))
11145 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11146 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
11147 10 : return _r;
11148 : }
11149 0 : next_after_fail1823:;
11150 : }
11151 : }
11152 : }
11153 203322 : return NULL_TREE;
11154 : }
11155 :
11156 : tree
11157 79 : generic_simplify_LTGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11158 : {
11159 79 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11160 79 : switch (TREE_CODE (_p0))
11161 : {
11162 0 : case VEC_COND_EXPR:
11163 0 : {
11164 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11165 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11166 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11167 0 : switch (TREE_CODE (_p1))
11168 : {
11169 0 : case VEC_COND_EXPR:
11170 0 : {
11171 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11172 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11173 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11174 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11175 : {
11176 0 : {
11177 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11178 0 : if (VECTOR_TYPE_P (type)
11179 0 : && (TREE_CODE_CLASS (LTGT_EXPR) != tcc_comparison
11180 0 : || types_match (type, TREE_TYPE (captures[2]))
11181 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11182 : || (optimize_vectors_before_lowering_p ()
11183 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11184 : )
11185 : {
11186 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1839;
11187 0 : {
11188 0 : tree res_op0;
11189 0 : res_op0 = captures[1];
11190 0 : tree res_op1;
11191 0 : {
11192 0 : tree _o1[2], _r1;
11193 0 : _o1[0] = captures[2];
11194 0 : _o1[1] = captures[5];
11195 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11196 0 : if (EXPR_P (_r1))
11197 0 : goto next_after_fail1839;
11198 0 : res_op1 = _r1;
11199 : }
11200 0 : tree res_op2;
11201 0 : {
11202 0 : tree _o1[2], _r1;
11203 0 : _o1[0] = captures[3];
11204 0 : _o1[1] = captures[6];
11205 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11206 0 : if (EXPR_P (_r1))
11207 0 : goto next_after_fail1839;
11208 0 : res_op2 = _r1;
11209 : }
11210 0 : tree _r;
11211 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11212 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
11213 0 : return _r;
11214 : }
11215 0 : next_after_fail1839:;
11216 : }
11217 : }
11218 : }
11219 : break;
11220 : }
11221 0 : default:;
11222 : }
11223 0 : {
11224 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11225 0 : if (VECTOR_TYPE_P (type)
11226 0 : && (TREE_CODE_CLASS (LTGT_EXPR) != tcc_comparison
11227 0 : || types_match (type, TREE_TYPE (captures[2]))
11228 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11229 : || (optimize_vectors_before_lowering_p ()
11230 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11231 : )
11232 : {
11233 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1840;
11234 0 : {
11235 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1840;
11236 0 : tree res_op0;
11237 0 : res_op0 = captures[1];
11238 0 : tree res_op1;
11239 0 : {
11240 0 : tree _o1[2], _r1;
11241 0 : _o1[0] = captures[2];
11242 0 : _o1[1] = unshare_expr (captures[4]);
11243 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11244 0 : if (EXPR_P (_r1))
11245 0 : goto next_after_fail1840;
11246 0 : res_op1 = _r1;
11247 : }
11248 0 : tree res_op2;
11249 0 : {
11250 0 : tree _o1[2], _r1;
11251 0 : _o1[0] = captures[3];
11252 0 : _o1[1] = captures[4];
11253 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11254 0 : if (EXPR_P (_r1))
11255 0 : goto next_after_fail1840;
11256 0 : res_op2 = _r1;
11257 : }
11258 0 : tree _r;
11259 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11260 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
11261 0 : return _r;
11262 : }
11263 0 : next_after_fail1840:;
11264 : }
11265 : }
11266 0 : break;
11267 : }
11268 79 : default:;
11269 : }
11270 79 : switch (TREE_CODE (_p1))
11271 : {
11272 0 : case VEC_COND_EXPR:
11273 0 : {
11274 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11275 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11276 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11277 0 : {
11278 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11279 0 : if (VECTOR_TYPE_P (type)
11280 0 : && (TREE_CODE_CLASS (LTGT_EXPR) != tcc_comparison
11281 0 : || types_match (type, TREE_TYPE (captures[3]))
11282 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11283 : || (optimize_vectors_before_lowering_p ()
11284 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11285 : )
11286 : {
11287 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1841;
11288 0 : {
11289 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1841;
11290 0 : tree res_op0;
11291 0 : res_op0 = captures[2];
11292 0 : tree res_op1;
11293 0 : {
11294 0 : tree _o1[2], _r1;
11295 0 : _o1[0] = unshare_expr (captures[0]);
11296 0 : _o1[1] = captures[3];
11297 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11298 0 : if (EXPR_P (_r1))
11299 0 : goto next_after_fail1841;
11300 0 : res_op1 = _r1;
11301 : }
11302 0 : tree res_op2;
11303 0 : {
11304 0 : tree _o1[2], _r1;
11305 0 : _o1[0] = captures[0];
11306 0 : _o1[1] = captures[4];
11307 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11308 0 : if (EXPR_P (_r1))
11309 0 : goto next_after_fail1841;
11310 0 : res_op2 = _r1;
11311 : }
11312 0 : tree _r;
11313 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11314 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
11315 0 : return _r;
11316 : }
11317 0 : next_after_fail1841:;
11318 : }
11319 : }
11320 0 : break;
11321 : }
11322 79 : default:;
11323 : }
11324 79 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11325 : {
11326 2 : {
11327 2 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11328 2 : if (!flag_trapping_math || !tree_expr_maybe_nan_p (captures[0])
11329 : )
11330 : {
11331 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1842;
11332 0 : {
11333 0 : tree _r;
11334 0 : _r = constant_boolean_node (false, type);
11335 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11336 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11337 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
11338 0 : return _r;
11339 : }
11340 0 : next_after_fail1842:;
11341 : }
11342 : }
11343 : }
11344 79 : switch (TREE_CODE (_p0))
11345 : {
11346 0 : case FLOAT_EXPR:
11347 0 : {
11348 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11349 0 : switch (TREE_CODE (_p1))
11350 : {
11351 0 : case FLOAT_EXPR:
11352 0 : {
11353 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11354 0 : {
11355 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11356 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, LTGT_EXPR, NE_EXPR);
11357 0 : if (res) return res;
11358 : }
11359 0 : break;
11360 : }
11361 : default:;
11362 : }
11363 : break;
11364 : }
11365 0 : case NEGATE_EXPR:
11366 0 : {
11367 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11368 0 : switch (TREE_CODE (_p1))
11369 : {
11370 0 : case NEGATE_EXPR:
11371 0 : {
11372 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11373 0 : {
11374 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11375 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, LTGT_EXPR, LTGT_EXPR);
11376 0 : if (res) return res;
11377 : }
11378 0 : break;
11379 : }
11380 0 : default:;
11381 : }
11382 0 : if (CONSTANT_CLASS_P (_p1))
11383 : {
11384 0 : {
11385 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11386 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, LTGT_EXPR, LTGT_EXPR);
11387 0 : if (res) return res;
11388 : }
11389 : }
11390 : break;
11391 : }
11392 79 : default:;
11393 : }
11394 79 : switch (TREE_CODE (_p1))
11395 : {
11396 2 : case REAL_CST:
11397 2 : {
11398 2 : {
11399 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11400 2 : tree res = generic_simplify_572 (loc, type, _p0, _p1, captures, LTGT_EXPR);
11401 2 : if (res) return res;
11402 : }
11403 2 : break;
11404 : }
11405 : default:;
11406 : }
11407 : return NULL_TREE;
11408 : }
11409 :
11410 : tree
11411 834667 : generic_simplify_VEC_PERM_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
11412 : {
11413 834667 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11414 834667 : switch (TREE_CODE (_p0))
11415 : {
11416 0 : case PLUS_EXPR:
11417 0 : {
11418 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11419 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11420 0 : switch (TREE_CODE (_p1))
11421 : {
11422 0 : case MINUS_EXPR:
11423 0 : {
11424 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11425 0 : tree _q51 = TREE_OPERAND (_p1, 1);
11426 0 : switch (TREE_CODE (_p2))
11427 : {
11428 0 : case VECTOR_CST:
11429 0 : {
11430 0 : {
11431 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51, _p2 };
11432 0 : tree res = generic_simplify_634 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR, MINUS_EXPR);
11433 0 : if (res) return res;
11434 : }
11435 0 : break;
11436 : }
11437 : default:;
11438 : }
11439 : break;
11440 : }
11441 : default:;
11442 : }
11443 : break;
11444 : }
11445 0 : case MINUS_EXPR:
11446 0 : {
11447 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11448 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11449 0 : switch (TREE_CODE (_p1))
11450 : {
11451 0 : case PLUS_EXPR:
11452 0 : {
11453 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11454 0 : tree _q51 = TREE_OPERAND (_p1, 1);
11455 0 : switch (TREE_CODE (_p2))
11456 : {
11457 0 : case VECTOR_CST:
11458 0 : {
11459 0 : {
11460 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51, _p2 };
11461 0 : tree res = generic_simplify_634 (loc, type, _p0, _p1, _p2, captures, MINUS_EXPR, PLUS_EXPR);
11462 0 : if (res) return res;
11463 : }
11464 0 : break;
11465 : }
11466 : default:;
11467 : }
11468 : break;
11469 : }
11470 : default:;
11471 : }
11472 : break;
11473 : }
11474 834667 : default:;
11475 : }
11476 834667 : switch (TREE_CODE (_p2))
11477 : {
11478 823193 : case VECTOR_CST:
11479 823193 : {
11480 823193 : {
11481 823193 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11482 823193 : {
11483 823193 : tree op0 = captures[0], op1 = captures[1], op2 = captures[2];
11484 823193 : machine_mode result_mode = TYPE_MODE (type);
11485 823193 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (op0));
11486 823193 : vec_perm_builder builder;
11487 823193 : if (tree_to_vec_perm_builder (&builder, op2)
11488 : )
11489 : {
11490 823181 : {
11491 823181 : poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
11492 823181 : poly_uint64 nelts_in = TYPE_VECTOR_SUBPARTS (TREE_TYPE (op0));
11493 823181 : bool single_arg = (op0 == op1);
11494 1437257 : vec_perm_indices sel (builder, single_arg ? 1 : 2, nelts_in);
11495 823181 : if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, 0, 1)
11496 : )
11497 : {
11498 21766 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2022;
11499 21766 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2022;
11500 21766 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2022;
11501 21766 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2022;
11502 21766 : {
11503 21766 : tree res_op0;
11504 21766 : res_op0 = captures[0];
11505 21766 : tree _r;
11506 21766 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11507 21766 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
11508 21766 : return _r;
11509 : }
11510 769797 : next_after_fail2022:;
11511 : }
11512 : else
11513 : {
11514 801415 : if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, nelts_in, 1)
11515 : )
11516 : {
11517 13 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2023;
11518 13 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2023;
11519 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2023;
11520 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2023;
11521 13 : {
11522 13 : tree res_op0;
11523 13 : res_op0 = captures[1];
11524 13 : tree _r;
11525 13 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11526 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1115, __FILE__, __LINE__, true);
11527 13 : return _r;
11528 : }
11529 769797 : next_after_fail2023:;
11530 : }
11531 : else
11532 : {
11533 801402 : {
11534 801402 : if (!single_arg)
11535 : {
11536 592973 : if (sel.all_from_input_p (0))
11537 : op1 = op0;
11538 572765 : else if (sel.all_from_input_p (1))
11539 : {
11540 33 : op0 = op1;
11541 33 : sel.rotate_inputs (1);
11542 : }
11543 572732 : else if (known_ge (poly_uint64 (sel[0]), nelts_in))
11544 : {
11545 169 : std::swap (op0, op1);
11546 169 : sel.rotate_inputs (1);
11547 : }
11548 : }
11549 801402 : gassign *def;
11550 801402 : tree cop0 = op0, cop1 = op1;
11551 801402 : if (TREE_CODE (op0) == SSA_NAME
11552 753203 : && (def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op0)))
11553 1518677 : && gimple_assign_rhs_code (def) == CONSTRUCTOR)
11554 14240 : cop0 = gimple_assign_rhs1 (def);
11555 801402 : if (TREE_CODE (op1) == SSA_NAME
11556 732297 : && (def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op1)))
11557 1499700 : && gimple_assign_rhs_code (def) == CONSTRUCTOR)
11558 21151 : cop1 = gimple_assign_rhs1 (def);
11559 801402 : tree t;
11560 801402 : if ((TREE_CODE (cop0) == VECTOR_CST
11561 757747 : || TREE_CODE (cop0) == CONSTRUCTOR)
11562 59727 : && (TREE_CODE (cop1) == VECTOR_CST
11563 25897 : || TREE_CODE (cop1) == CONSTRUCTOR)
11564 848310 : && (t = fold_vec_perm (type, cop0, cop1, sel))
11565 : )
11566 : {
11567 29140 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2024;
11568 29140 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2024;
11569 29140 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2024;
11570 29140 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2024;
11571 29140 : {
11572 29140 : tree _r;
11573 29140 : _r = t;
11574 29140 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1116, __FILE__, __LINE__, true);
11575 29140 : return _r;
11576 : }
11577 769797 : next_after_fail2024:;
11578 : }
11579 : else
11580 : {
11581 772262 : {
11582 772262 : bool changed = (op0 == op1 && !single_arg);
11583 772262 : tree ins = NULL_TREE;
11584 772262 : unsigned at = 0;
11585 772262 : if (op_mode != BLKmode
11586 760021 : && known_eq (nelts, nelts_in)
11587 1532130 : && (TREE_CODE (cop0) == VECTOR_CST
11588 744379 : || TREE_CODE (cop0) == CONSTRUCTOR
11589 734693 : || TREE_CODE (cop1) == VECTOR_CST
11590 703752 : || TREE_CODE (cop1) == CONSTRUCTOR))
11591 : {
11592 65219 : bool insert_first_p = sel.series_p (1, 1, nelts + 1, 1);
11593 65219 : if (insert_first_p)
11594 : {
11595 777 : at = 0;
11596 777 : if ((ins = fold_read_from_vector (cop0, sel[0])))
11597 115 : op0 = op1;
11598 : }
11599 777 : if (!insert_first_p || (!ins && maybe_eq (nelts, 2u)))
11600 : {
11601 64904 : unsigned int encoded_nelts = sel.encoding ().encoded_nelts ();
11602 140685 : for (at = 0; at < encoded_nelts; ++at)
11603 140538 : if (maybe_ne (sel[at], at))
11604 : break;
11605 64904 : if (at < encoded_nelts
11606 64904 : && (known_eq (at + 1, nelts)
11607 63407 : || sel.series_p (at + 1, 1, at + 1, 1)))
11608 : {
11609 2078 : if (known_lt (poly_uint64 (sel[at]), nelts))
11610 0 : ins = fold_read_from_vector (cop0, sel[at]);
11611 : else
11612 2078 : ins = fold_read_from_vector (cop1, sel[at] - nelts);
11613 : }
11614 : }
11615 : }
11616 772262 : if (!ins && sel.encoding () != builder)
11617 : {
11618 1048 : tree oldop2 = op2;
11619 1048 : if (sel.ninputs () == 2
11620 1048 : || can_vec_perm_const_p (result_mode, op_mode, sel, false))
11621 713 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel);
11622 : else
11623 : {
11624 335 : vec_perm_indices sel2 (builder, 2, nelts);
11625 335 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false))
11626 60 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel2);
11627 : else
11628 275 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel);
11629 335 : }
11630 1048 : if (!operand_equal_p (op2, oldop2, 0))
11631 988 : changed = true;
11632 : }
11633 772262 : if (ins
11634 : )
11635 : {
11636 1476 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2025;
11637 1476 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2025;
11638 1476 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2025;
11639 1476 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2025;
11640 1476 : {
11641 1476 : tree res_op0;
11642 1476 : res_op0 = op0;
11643 1476 : tree res_op1;
11644 1476 : res_op1 = ins;
11645 1476 : tree res_op2;
11646 1476 : res_op2 = bitsize_int (at * vector_element_bits (type));
11647 1476 : tree _r;
11648 1476 : _r = fold_build3_loc (loc, BIT_INSERT_EXPR, type, res_op0, res_op1, res_op2);
11649 1476 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1117, __FILE__, __LINE__, true);
11650 53384 : return _r;
11651 : }
11652 : next_after_fail2025:;
11653 : }
11654 : else
11655 : {
11656 770786 : if (changed
11657 : )
11658 : {
11659 989 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2026;
11660 989 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2026;
11661 989 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2026;
11662 989 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2026;
11663 989 : {
11664 989 : tree res_op0;
11665 989 : res_op0 = op0;
11666 989 : tree res_op1;
11667 989 : res_op1 = op1;
11668 989 : tree res_op2;
11669 989 : res_op2 = op2;
11670 989 : tree _r;
11671 989 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11672 989 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1118, __FILE__, __LINE__, true);
11673 989 : return _r;
11674 : }
11675 : next_after_fail2026:;
11676 : }
11677 : }
11678 : }
11679 : }
11680 : }
11681 : }
11682 : }
11683 823181 : }
11684 : }
11685 53384 : }
11686 : }
11687 769809 : break;
11688 : }
11689 781283 : default:;
11690 : }
11691 781283 : switch (TREE_CODE (_p0))
11692 : {
11693 0 : case VIEW_CONVERT_EXPR:
11694 0 : {
11695 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11696 0 : switch (TREE_CODE (_q20))
11697 : {
11698 0 : case VEC_PERM_EXPR:
11699 0 : {
11700 0 : tree _q30 = TREE_OPERAND (_q20, 0);
11701 0 : tree _q31 = TREE_OPERAND (_q20, 1);
11702 0 : tree _q32 = TREE_OPERAND (_q20, 2);
11703 0 : switch (TREE_CODE (_q32))
11704 : {
11705 0 : case VECTOR_CST:
11706 0 : {
11707 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11708 : {
11709 0 : switch (TREE_CODE (_p2))
11710 : {
11711 0 : case VECTOR_CST:
11712 0 : {
11713 0 : {
11714 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q32, _p2 };
11715 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11716 : )
11717 : {
11718 0 : {
11719 0 : machine_mode result_mode = TYPE_MODE (type);
11720 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11721 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11722 0 : vec_perm_indices sel0, sel1;
11723 0 : if (tree_to_vec_perm_indices (&sel0, captures[2], captures[3], captures[4])
11724 0 : && tree_to_vec_perm_indices (&sel1, captures[0], captures[0], captures[5])
11725 0 : && TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))
11726 0 : == TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[1])))
11727 : )
11728 : {
11729 0 : {
11730 0 : vec_perm_builder builder2 (nelts, nelts, 1);
11731 0 : for (int i = 0; i < nelts; i++)
11732 0 : builder2.quick_push (sel0[sel1[i].to_constant ()]);
11733 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11734 0 : tree op0 = NULL_TREE;
11735 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11736 0 : || (single_use (captures[0])
11737 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, true)
11738 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, true))
11739 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, true)))
11740 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11741 0 : if (op0
11742 : )
11743 : {
11744 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2027;
11745 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2027;
11746 0 : {
11747 0 : tree res_op0;
11748 0 : {
11749 0 : tree _o1[3], _r1;
11750 0 : _o1[0] = captures[2];
11751 0 : _o1[1] = captures[3];
11752 0 : _o1[2] = op0;
11753 0 : _r1 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1], _o1[2]);
11754 0 : res_op0 = _r1;
11755 : }
11756 0 : tree _r;
11757 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11758 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11759 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11760 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11761 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11762 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11763 0 : return _r;
11764 : }
11765 0 : next_after_fail2027:;
11766 : }
11767 0 : }
11768 : }
11769 0 : }
11770 : }
11771 : }
11772 0 : break;
11773 : }
11774 : default:;
11775 : }
11776 : }
11777 : break;
11778 : }
11779 : default:;
11780 : }
11781 : break;
11782 : }
11783 : default:;
11784 : }
11785 : break;
11786 : }
11787 0 : case VEC_PERM_EXPR:
11788 0 : {
11789 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11790 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11791 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11792 0 : switch (TREE_CODE (_q22))
11793 : {
11794 0 : case VECTOR_CST:
11795 0 : {
11796 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11797 : {
11798 0 : switch (TREE_CODE (_p2))
11799 : {
11800 0 : case VECTOR_CST:
11801 0 : {
11802 0 : {
11803 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _q22, _p2 };
11804 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11805 : )
11806 : {
11807 0 : {
11808 0 : machine_mode result_mode = TYPE_MODE (type);
11809 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11810 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11811 0 : vec_perm_indices sel0, sel1;
11812 0 : if (tree_to_vec_perm_indices (&sel0, captures[2], captures[3], captures[4])
11813 0 : && tree_to_vec_perm_indices (&sel1, captures[0], captures[0], captures[5])
11814 0 : && TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))
11815 0 : == TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[1])))
11816 : )
11817 : {
11818 0 : {
11819 0 : vec_perm_builder builder2 (nelts, nelts, 1);
11820 0 : for (int i = 0; i < nelts; i++)
11821 0 : builder2.quick_push (sel0[sel1[i].to_constant ()]);
11822 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11823 0 : tree op0 = NULL_TREE;
11824 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11825 0 : || (single_use (captures[0])
11826 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, true)
11827 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, true))
11828 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, true)))
11829 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11830 0 : if (op0
11831 : )
11832 : {
11833 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2028;
11834 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2028;
11835 0 : {
11836 0 : tree res_op0;
11837 0 : {
11838 0 : tree _o1[3], _r1;
11839 0 : _o1[0] = captures[2];
11840 0 : _o1[1] = captures[3];
11841 0 : _o1[2] = op0;
11842 0 : _r1 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1], _o1[2]);
11843 0 : res_op0 = _r1;
11844 : }
11845 0 : tree _r;
11846 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11847 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11848 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11849 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11850 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11851 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1119, __FILE__, __LINE__, true);
11852 0 : return _r;
11853 : }
11854 0 : next_after_fail2028:;
11855 : }
11856 0 : }
11857 : }
11858 0 : }
11859 : }
11860 : }
11861 0 : break;
11862 : }
11863 : default:;
11864 : }
11865 : }
11866 : break;
11867 : }
11868 : default:;
11869 : }
11870 : break;
11871 : }
11872 781283 : default:;
11873 : }
11874 781283 : if (tree_vec_same_elem_p (_p0))
11875 : {
11876 13981 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11877 : {
11878 0 : {
11879 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p2 };
11880 0 : if (types_match (type, TREE_TYPE (captures[0]))
11881 : )
11882 : {
11883 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2029;
11884 0 : {
11885 0 : tree _r;
11886 0 : _r = captures[0];
11887 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11888 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11889 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1120, __FILE__, __LINE__, true);
11890 0 : return _r;
11891 : }
11892 0 : next_after_fail2029:;
11893 : }
11894 : else
11895 : {
11896 0 : {
11897 0 : tree elem = uniform_vector_p (captures[0]);
11898 0 : if (elem
11899 : )
11900 : {
11901 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2030;
11902 0 : {
11903 0 : tree _r;
11904 0 : _r = build_vector_from_val (type, elem);
11905 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11906 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11907 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11908 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11909 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1121, __FILE__, __LINE__, true);
11910 0 : return _r;
11911 : }
11912 0 : next_after_fail2030:;
11913 : }
11914 : }
11915 : }
11916 : }
11917 : }
11918 : }
11919 781283 : switch (TREE_CODE (_p1))
11920 : {
11921 0 : case VEC_PERM_EXPR:
11922 0 : {
11923 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11924 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11925 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11926 0 : switch (TREE_CODE (_q32))
11927 : {
11928 0 : case VECTOR_CST:
11929 0 : {
11930 0 : switch (TREE_CODE (_p2))
11931 : {
11932 0 : case VECTOR_CST:
11933 0 : {
11934 0 : {
11935 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
11936 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11937 : )
11938 : {
11939 0 : {
11940 0 : machine_mode result_mode = TYPE_MODE (type);
11941 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11942 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11943 0 : vec_perm_indices sel0, sel1;
11944 0 : if (tree_to_vec_perm_indices (&sel0, captures[2], captures[3], captures[4])
11945 0 : && tree_to_vec_perm_indices (&sel1, captures[0], captures[1], captures[5])
11946 : )
11947 : {
11948 0 : {
11949 0 : bool use_1 = false, use_2 = false;
11950 0 : vec_perm_builder builder2 (nelts, nelts, 2);
11951 0 : for (int i = 0; i < nelts; i++)
11952 : {
11953 0 : if (known_lt ((poly_uint64)sel1[i], sel1.nelts_per_input ()))
11954 0 : builder2.quick_push (sel1[i]);
11955 : else
11956 : {
11957 0 : poly_uint64 j = sel0[(sel1[i] - sel1.nelts_per_input ())
11958 0 : .to_constant ()];
11959 0 : if (known_lt (j, sel0.nelts_per_input ()))
11960 : use_1 = true;
11961 : else
11962 : {
11963 0 : use_2 = true;
11964 0 : j -= sel0.nelts_per_input ();
11965 : }
11966 0 : builder2.quick_push (j + sel1.nelts_per_input ());
11967 : }
11968 : }
11969 0 : if (use_1 ^ use_2
11970 : )
11971 : {
11972 0 : {
11973 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11974 0 : tree op0 = NULL_TREE;
11975 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11976 0 : || (single_use (captures[1])
11977 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, true)
11978 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, true))
11979 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, true)))
11980 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11981 0 : if (op0
11982 : )
11983 : {
11984 0 : if (use_1
11985 : )
11986 : {
11987 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2031;
11988 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2031;
11989 0 : {
11990 0 : tree res_op0;
11991 0 : res_op0 = captures[0];
11992 0 : tree res_op1;
11993 0 : res_op1 = captures[2];
11994 0 : tree res_op2;
11995 0 : res_op2 = op0;
11996 0 : tree _r;
11997 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11998 0 : if (TREE_SIDE_EFFECTS (captures[3]))
11999 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12000 0 : if (TREE_SIDE_EFFECTS (captures[4]))
12001 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
12002 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12003 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12004 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1122, __FILE__, __LINE__, true);
12005 0 : return _r;
12006 : }
12007 0 : next_after_fail2031:;
12008 : }
12009 : else
12010 : {
12011 0 : if (use_2
12012 : )
12013 : {
12014 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2032;
12015 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2032;
12016 0 : {
12017 0 : tree res_op0;
12018 0 : res_op0 = captures[0];
12019 0 : tree res_op1;
12020 0 : res_op1 = captures[3];
12021 0 : tree res_op2;
12022 0 : res_op2 = op0;
12023 0 : tree _r;
12024 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12025 0 : if (TREE_SIDE_EFFECTS (captures[2]))
12026 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
12027 0 : if (TREE_SIDE_EFFECTS (captures[4]))
12028 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
12029 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12030 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12031 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1123, __FILE__, __LINE__, true);
12032 0 : return _r;
12033 : }
12034 0 : next_after_fail2032:;
12035 : }
12036 : }
12037 : }
12038 0 : }
12039 : }
12040 0 : }
12041 : }
12042 0 : }
12043 : }
12044 : }
12045 0 : break;
12046 : }
12047 : default:;
12048 : }
12049 : break;
12050 : }
12051 : default:;
12052 : }
12053 : break;
12054 : }
12055 781283 : default:;
12056 : }
12057 781283 : switch (TREE_CODE (_p0))
12058 : {
12059 0 : case VEC_PERM_EXPR:
12060 0 : {
12061 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12062 0 : tree _q21 = TREE_OPERAND (_p0, 1);
12063 0 : tree _q22 = TREE_OPERAND (_p0, 2);
12064 0 : switch (TREE_CODE (_q22))
12065 : {
12066 0 : case VECTOR_CST:
12067 0 : {
12068 0 : switch (TREE_CODE (_p2))
12069 : {
12070 0 : case VECTOR_CST:
12071 0 : {
12072 0 : {
12073 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _p2 };
12074 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
12075 : )
12076 : {
12077 0 : {
12078 0 : machine_mode result_mode = TYPE_MODE (type);
12079 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[1]));
12080 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
12081 0 : vec_perm_indices sel0, sel1;
12082 0 : if (tree_to_vec_perm_indices (&sel0, captures[1], captures[2], captures[3])
12083 0 : && tree_to_vec_perm_indices (&sel1, captures[0], captures[4], captures[5])
12084 : )
12085 : {
12086 0 : {
12087 0 : bool use_1 = false, use_2 = false;
12088 0 : vec_perm_builder builder2 (nelts, nelts, 2);
12089 0 : for (int i = 0; i < nelts; i++)
12090 : {
12091 0 : if (known_ge ((poly_uint64)sel1[i], sel1.nelts_per_input ()))
12092 0 : builder2.quick_push (sel1[i]);
12093 : else
12094 : {
12095 0 : poly_uint64 j = sel0[sel1[i].to_constant ()];
12096 0 : if (known_lt (j, sel0.nelts_per_input ()))
12097 : use_1 = true;
12098 : else
12099 : {
12100 0 : use_2 = true;
12101 0 : j -= sel0.nelts_per_input ();
12102 : }
12103 0 : builder2.quick_push (j);
12104 : }
12105 : }
12106 0 : if (use_1 ^ use_2
12107 : )
12108 : {
12109 0 : {
12110 0 : vec_perm_indices sel2 (builder2, 2, nelts);
12111 0 : tree op0 = NULL_TREE;
12112 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
12113 0 : || (single_use (captures[0])
12114 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, true)
12115 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, true))
12116 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, true)))
12117 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
12118 0 : if (op0
12119 : )
12120 : {
12121 0 : if (use_1
12122 : )
12123 : {
12124 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2033;
12125 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2033;
12126 0 : {
12127 0 : tree res_op0;
12128 0 : res_op0 = captures[1];
12129 0 : tree res_op1;
12130 0 : res_op1 = captures[4];
12131 0 : tree res_op2;
12132 0 : res_op2 = op0;
12133 0 : tree _r;
12134 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12135 0 : if (TREE_SIDE_EFFECTS (captures[2]))
12136 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
12137 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12138 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12139 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12140 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12141 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1124, __FILE__, __LINE__, true);
12142 0 : return _r;
12143 : }
12144 0 : next_after_fail2033:;
12145 : }
12146 : else
12147 : {
12148 0 : if (use_2
12149 : )
12150 : {
12151 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2034;
12152 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2034;
12153 0 : {
12154 0 : tree res_op0;
12155 0 : res_op0 = captures[2];
12156 0 : tree res_op1;
12157 0 : res_op1 = captures[4];
12158 0 : tree res_op2;
12159 0 : res_op2 = op0;
12160 0 : tree _r;
12161 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12162 0 : if (TREE_SIDE_EFFECTS (captures[1]))
12163 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
12164 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12165 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12166 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12167 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12168 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1125, __FILE__, __LINE__, true);
12169 0 : return _r;
12170 : }
12171 0 : next_after_fail2034:;
12172 : }
12173 : }
12174 : }
12175 0 : }
12176 : }
12177 0 : }
12178 : }
12179 0 : }
12180 : }
12181 : }
12182 0 : break;
12183 : }
12184 0 : default:;
12185 : }
12186 0 : switch (TREE_CODE (_p1))
12187 : {
12188 0 : case VEC_PERM_EXPR:
12189 0 : {
12190 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12191 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12192 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12193 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12194 : {
12195 0 : switch (TREE_CODE (_q62))
12196 : {
12197 0 : case VECTOR_CST:
12198 0 : {
12199 0 : switch (TREE_CODE (_p2))
12200 : {
12201 0 : case VECTOR_CST:
12202 0 : {
12203 0 : {
12204 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60, _q61, _p2 };
12205 0 : tree res = generic_simplify_635 (loc, type, _p0, _p1, _p2, captures);
12206 0 : if (res) return res;
12207 : }
12208 0 : break;
12209 : }
12210 : default:;
12211 : }
12212 : break;
12213 : }
12214 : default:;
12215 : }
12216 : }
12217 : break;
12218 : }
12219 : default:;
12220 : }
12221 : break;
12222 : }
12223 : default:;
12224 : }
12225 : break;
12226 : }
12227 0 : case VIEW_CONVERT_EXPR:
12228 0 : {
12229 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12230 0 : switch (TREE_CODE (_q20))
12231 : {
12232 0 : case VEC_PERM_EXPR:
12233 0 : {
12234 0 : tree _q30 = TREE_OPERAND (_q20, 0);
12235 0 : tree _q31 = TREE_OPERAND (_q20, 1);
12236 0 : tree _q32 = TREE_OPERAND (_q20, 2);
12237 0 : switch (TREE_CODE (_q32))
12238 : {
12239 0 : case VECTOR_CST:
12240 0 : {
12241 0 : switch (TREE_CODE (_p1))
12242 : {
12243 0 : case VIEW_CONVERT_EXPR:
12244 0 : {
12245 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12246 0 : switch (TREE_CODE (_q70))
12247 : {
12248 0 : case VEC_PERM_EXPR:
12249 0 : {
12250 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12251 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12252 0 : tree _q82 = TREE_OPERAND (_q70, 2);
12253 0 : if ((_q82 == _q32 && ! TREE_SIDE_EFFECTS (_q82)) || (operand_equal_p (_q82, _q32, 0) && types_match (_q82, _q32)))
12254 : {
12255 0 : switch (TREE_CODE (_q82))
12256 : {
12257 0 : case VECTOR_CST:
12258 0 : {
12259 0 : switch (TREE_CODE (_p2))
12260 : {
12261 0 : case VECTOR_CST:
12262 0 : {
12263 0 : {
12264 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q30, _q31, _q32, _q80, _q81, _p2 };
12265 0 : tree res = generic_simplify_635 (loc, type, _p0, _p1, _p2, captures);
12266 0 : if (res) return res;
12267 : }
12268 0 : break;
12269 : }
12270 : default:;
12271 : }
12272 : break;
12273 : }
12274 : default:;
12275 : }
12276 : }
12277 : break;
12278 : }
12279 : default:;
12280 : }
12281 : break;
12282 : }
12283 : default:;
12284 : }
12285 : break;
12286 : }
12287 : default:;
12288 : }
12289 : break;
12290 : }
12291 : default:;
12292 : }
12293 : break;
12294 : }
12295 : default:;
12296 : }
12297 : return NULL_TREE;
12298 : }
12299 : #pragma GCC diagnostic pop
|