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 164610505 : tree_maybe_bit_not (tree t, tree *res_ops)
11 : {
12 164610505 : const tree type = TREE_TYPE (t);
13 164610505 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 164610505 : if (TREE_SIDE_EFFECTS (t)) return false;
15 157195985 : switch (TREE_CODE (t))
16 : {
17 49761741 : case INTEGER_CST:
18 49761741 : {
19 49761741 : {
20 49761741 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 49761741 : {
22 49761741 : res_ops[0] = captures[0];
23 49761741 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 8, __FILE__, __LINE__, false);
24 : return true;
25 : }
26 : }
27 107434244 : break;
28 : }
29 107434244 : default:;
30 : }
31 107434244 : {
32 107434244 : tree t_pops[1];
33 107434244 : if (tree_bit_not_with_nop (t, t_pops))
34 : {
35 146178 : tree _p0 = t_pops[0];
36 146178 : {
37 146178 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
38 146178 : {
39 146178 : res_ops[0] = captures[0];
40 146178 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 9, __FILE__, __LINE__, false);
41 146178 : return true;
42 : }
43 : }
44 : }
45 : }
46 107288066 : {
47 107288066 : tree t_pops[1];
48 107288066 : if (tree_maybe_cmp (t, t_pops))
49 : {
50 539704 : tree _p0 = t_pops[0];
51 539704 : {
52 539704 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
53 539704 : {
54 539704 : res_ops[0] = captures[0];
55 539704 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 10, __FILE__, __LINE__, false);
56 539704 : return true;
57 : }
58 : }
59 : }
60 : }
61 106748362 : {
62 106748362 : tree t_pops[2];
63 106748362 : if (tree_bit_xor_cst (t, t_pops))
64 : {
65 1601 : tree _p0 = t_pops[0];
66 1601 : tree _p1 = t_pops[1];
67 1601 : {
68 1601 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
69 1601 : {
70 1601 : res_ops[0] = captures[0];
71 1601 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 11, __FILE__, __LINE__, false);
72 1601 : return true;
73 : }
74 : }
75 : }
76 : }
77 106746761 : return false;
78 : }
79 :
80 : bool
81 2429 : tree_min_value (tree t)
82 : {
83 2429 : const tree type = TREE_TYPE (t);
84 2429 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
85 2429 : if (TREE_SIDE_EFFECTS (t)) return false;
86 2421 : if (uniform_integer_cst_p (t))
87 : {
88 2149 : {
89 2149 : {
90 2149 : tree int_cst = uniform_integer_cst_p (t);
91 2149 : tree inner_type = TREE_TYPE (int_cst);
92 4298 : if ((INTEGRAL_TYPE_P (inner_type)
93 17 : || POINTER_TYPE_P (inner_type))
94 4315 : && wi::eq_p (wi::to_wide (int_cst), wi::min_value (inner_type))
95 : )
96 : {
97 138 : {
98 138 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 41, __FILE__, __LINE__, false);
99 138 : return true;
100 : }
101 : }
102 : }
103 : }
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 3 : generic_simplify_1 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (op))
112 : {
113 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 3 : if (!flag_trapping_math
115 : )
116 : {
117 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail72;
118 2 : {
119 2 : tree res_op0;
120 2 : res_op0 = captures[0];
121 2 : tree _r;
122 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
123 2 : if (TREE_SIDE_EFFECTS (captures[1]))
124 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
125 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 49, __FILE__, __LINE__, true);
126 2 : return _r;
127 : }
128 0 : next_after_fail72:;
129 : }
130 : return NULL_TREE;
131 : }
132 :
133 : tree
134 29 : generic_simplify_8 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
135 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
136 : const enum tree_code ARG_UNUSED (bit_op))
137 : {
138 29 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
139 29 : if (bit_op == BIT_AND_EXPR
140 : )
141 : {
142 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail79;
143 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail79;
144 9 : {
145 9 : tree _r;
146 9 : _r = build_zero_cst (type);
147 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 56, __FILE__, __LINE__, true);
148 9 : return _r;
149 : }
150 : next_after_fail79:;
151 : }
152 : else
153 : {
154 20 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail80;
155 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail80;
156 20 : {
157 20 : tree _r;
158 20 : _r = build_minus_one_cst (type);
159 20 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 57, __FILE__, __LINE__, true);
160 20 : return _r;
161 : }
162 : next_after_fail80:;
163 : }
164 : return NULL_TREE;
165 : }
166 :
167 : tree
168 1 : generic_simplify_17 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
169 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
170 : {
171 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
172 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail92;
173 1 : {
174 1 : tree res_op0;
175 1 : res_op0 = captures[0];
176 1 : tree res_op1;
177 1 : res_op1 = captures[1];
178 1 : tree _r;
179 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
180 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 65, __FILE__, __LINE__, true);
181 : return _r;
182 : }
183 0 : next_after_fail92:;
184 0 : return NULL_TREE;
185 : }
186 :
187 : tree
188 510 : generic_simplify_25 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
189 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
190 : const enum tree_code ARG_UNUSED (op))
191 : {
192 510 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
193 510 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
194 510 : && tree_nop_conversion_p (type, TREE_TYPE (captures[4]))
195 1020 : && (wi::to_wide (captures[2]) & wi::to_wide (captures[5])) == 0
196 : )
197 : {
198 101 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail100;
199 101 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail100;
200 101 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail100;
201 101 : {
202 101 : tree res_op0;
203 101 : {
204 101 : tree _o1[1], _r1;
205 101 : _o1[0] = captures[0];
206 101 : if (TREE_TYPE (_o1[0]) != type)
207 : {
208 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
209 : }
210 : else
211 : _r1 = _o1[0];
212 101 : res_op0 = _r1;
213 : }
214 101 : tree res_op1;
215 101 : {
216 101 : tree _o1[1], _r1;
217 101 : _o1[0] = captures[3];
218 101 : if (TREE_TYPE (_o1[0]) != type)
219 : {
220 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
221 : }
222 : else
223 : _r1 = _o1[0];
224 101 : res_op1 = _r1;
225 : }
226 101 : tree _r;
227 101 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
228 101 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, true);
229 101 : return _r;
230 : }
231 : next_after_fail100:;
232 : }
233 : return NULL_TREE;
234 : }
235 :
236 : tree
237 24 : generic_simplify_38 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
238 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
239 : const enum tree_code ARG_UNUSED (op),
240 : const enum tree_code ARG_UNUSED (cmp),
241 : const enum tree_code ARG_UNUSED (icmp))
242 : {
243 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
244 24 : if (invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
245 : )
246 : {
247 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail115;
248 24 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail115;
249 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail115;
250 24 : {
251 24 : tree res_op0;
252 24 : res_op0 = captures[1];
253 24 : tree res_op1;
254 24 : res_op1 = captures[4];
255 24 : tree res_op2;
256 24 : res_op2 = captures[7];
257 24 : tree _r;
258 24 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
259 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 87, __FILE__, __LINE__, true);
260 24 : return _r;
261 : }
262 : next_after_fail115:;
263 : }
264 : return NULL_TREE;
265 : }
266 :
267 : tree
268 0 : generic_simplify_45 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
269 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
270 : const enum tree_code ARG_UNUSED (op))
271 : {
272 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
273 0 : if (INTEGRAL_TYPE_P (type)
274 0 : && tree_int_cst_sgn (captures[5]) > 0
275 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
276 : )
277 : {
278 0 : {
279 0 : tree t = type;
280 0 : if (!TYPE_OVERFLOW_WRAPS (t))
281 0 : t = unsigned_type_for (t);
282 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
283 0 : wide_int c = wi::add (wi::to_wide (captures[3]),
284 0 : wi::lshift (wone, wi::to_wide (captures[5])));
285 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail123;
286 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail123;
287 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail123;
288 0 : {
289 0 : tree res_op0;
290 0 : {
291 0 : tree _o1[2], _r1;
292 0 : {
293 0 : tree _o2[1], _r2;
294 0 : _o2[0] = captures[2];
295 0 : if (TREE_TYPE (_o2[0]) != t)
296 : {
297 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
298 : }
299 : else
300 : _r2 = _o2[0];
301 0 : _o1[0] = _r2;
302 : }
303 0 : _o1[1] = wide_int_to_tree (t, c);
304 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
305 0 : res_op0 = _r1;
306 : }
307 0 : tree _r;
308 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
309 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 89, __FILE__, __LINE__, true);
310 0 : return _r;
311 : }
312 0 : next_after_fail123:;
313 0 : }
314 : }
315 : return NULL_TREE;
316 : }
317 :
318 : tree
319 312 : generic_simplify_55 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
320 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
321 : const enum tree_code ARG_UNUSED (outer_op),
322 : const enum tree_code ARG_UNUSED (inner_op))
323 : {
324 312 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
325 312 : if (real_zerop (captures[2])
326 34 : && real_zerop (captures[3])
327 346 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
328 : )
329 : {
330 10 : {
331 10 : bool inner_plus = ((inner_op == PLUS_EXPR)
332 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[2])));
333 10 : bool outer_plus
334 10 : = ((outer_op == PLUS_EXPR)
335 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[3])));
336 10 : if (outer_plus && !inner_plus
337 : )
338 : {
339 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail135;
340 2 : {
341 2 : tree res_op0;
342 2 : res_op0 = captures[1];
343 2 : tree res_op1;
344 2 : res_op1 = captures[3];
345 2 : tree _r;
346 2 : _r = fold_build2_loc (loc, outer_op, type, res_op0, res_op1);
347 2 : if (TREE_SIDE_EFFECTS (captures[2]))
348 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
349 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 103, __FILE__, __LINE__, true);
350 2 : return _r;
351 : }
352 0 : next_after_fail135:;
353 : }
354 : else
355 : {
356 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail136;
357 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail136;
358 8 : {
359 8 : tree _r;
360 8 : _r = captures[0];
361 8 : if (TREE_SIDE_EFFECTS (captures[3]))
362 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
363 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 104, __FILE__, __LINE__, true);
364 8 : return _r;
365 : }
366 : next_after_fail136:;
367 : }
368 : }
369 : }
370 : return NULL_TREE;
371 : }
372 :
373 : tree
374 539 : generic_simplify_69 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
375 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
376 : {
377 539 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
378 539 : if (!TYPE_SATURATING (type)
379 : )
380 : {
381 539 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
382 1078 : && !FIXED_POINT_TYPE_P (type)
383 : )
384 : {
385 539 : if (!TYPE_OVERFLOW_TRAPS (type)
386 : )
387 : {
388 539 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail158;
389 539 : {
390 539 : tree res_op0;
391 539 : res_op0 = build_all_ones_cst (TREE_TYPE (captures[0]));
392 539 : tree _r;
393 539 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
394 539 : if (TREE_SIDE_EFFECTS (captures[0]))
395 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
396 539 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 126, __FILE__, __LINE__, true);
397 539 : return _r;
398 : }
399 0 : next_after_fail158:;
400 : }
401 : }
402 : }
403 : return NULL_TREE;
404 : }
405 :
406 : tree
407 2 : generic_simplify_76 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
408 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
409 : const enum tree_code ARG_UNUSED (div),
410 : const enum tree_code ARG_UNUSED (mod))
411 : {
412 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
413 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail166;
414 2 : {
415 2 : tree _r;
416 2 : _r = captures[0];
417 2 : if (TREE_SIDE_EFFECTS (captures[1]))
418 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
419 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 134, __FILE__, __LINE__, true);
420 : return _r;
421 : }
422 0 : next_after_fail166:;
423 0 : return NULL_TREE;
424 : }
425 :
426 : tree
427 18901 : generic_simplify_79 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
428 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
429 : const enum tree_code ARG_UNUSED (op))
430 : {
431 18901 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
432 18901 : if (flag_unsafe_math_optimizations
433 : )
434 : {
435 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail170;
436 12 : {
437 12 : tree res_op0;
438 12 : {
439 12 : tree _o1[2], _r1;
440 12 : _o1[0] = captures[0];
441 12 : _o1[1] = captures[2];
442 12 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
443 12 : res_op0 = _r1;
444 : }
445 12 : tree res_op1;
446 12 : res_op1 = captures[1];
447 12 : tree _r;
448 12 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
449 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 138, __FILE__, __LINE__, true);
450 12 : return _r;
451 : }
452 0 : next_after_fail170:;
453 : }
454 : return NULL_TREE;
455 : }
456 :
457 : tree
458 0 : generic_simplify_85 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
459 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
460 : const enum tree_code ARG_UNUSED (op))
461 : {
462 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
463 0 : if (VECTOR_FLOAT_TYPE_P (type)
464 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
465 : )
466 : {
467 0 : {
468 0 : tree perm_cst = captures[1];
469 0 : vec_perm_builder builder;
470 0 : bool full_perm_p = false;
471 0 : if (tree_to_vec_perm_builder (&builder, perm_cst))
472 : {
473 0 : unsigned HOST_WIDE_INT nelts;
474 0 : nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
475 0 : vec_perm_indices sel (builder, 1, nelts);
476 0 : if (sel.encoding ().encoded_full_vector_p ())
477 : {
478 0 : auto_sbitmap seen (nelts);
479 0 : bitmap_clear (seen);
480 0 : unsigned HOST_WIDE_INT count = 0, i;
481 0 : for (i = 0; i < nelts; i++)
482 : {
483 0 : if (!bitmap_set_bit (seen, sel[i].to_constant ()))
484 : break;
485 0 : count++;
486 : }
487 0 : full_perm_p = count == nelts;
488 0 : }
489 0 : }
490 0 : if (full_perm_p
491 : )
492 : {
493 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail176;
494 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail176;
495 0 : {
496 0 : tree res_op0;
497 0 : {
498 0 : tree _o1[2], _r1;
499 0 : _o1[0] = captures[0];
500 0 : _o1[1] = captures[2];
501 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
502 0 : captures[3] = _r1;
503 : }
504 0 : res_op0 = unshare_expr (captures[3]);
505 0 : tree res_op1;
506 0 : res_op1 = captures[3];
507 0 : tree res_op2;
508 0 : res_op2 = captures[1];
509 0 : tree _r;
510 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
511 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 144, __FILE__, __LINE__, true);
512 0 : return _r;
513 : }
514 0 : next_after_fail176:;
515 : }
516 0 : }
517 : }
518 : return NULL_TREE;
519 : }
520 :
521 : tree
522 39739 : generic_simplify_98 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
523 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
524 : {
525 39739 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
526 39739 : if (!TYPE_SATURATING (type)
527 : )
528 : {
529 39739 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
530 79478 : && !FIXED_POINT_TYPE_P (type)
531 : )
532 : {
533 0 : if (!ANY_INTEGRAL_TYPE_P (type)
534 39739 : || TYPE_OVERFLOW_WRAPS (type)
535 : )
536 : {
537 35970 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail190;
538 35970 : {
539 35970 : tree res_op0;
540 35970 : {
541 35970 : tree _o1[1], _r1;
542 35970 : _o1[0] = captures[1];
543 35970 : if (TREE_TYPE (_o1[0]) != type)
544 : {
545 192 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
546 : }
547 : else
548 : _r1 = _o1[0];
549 35970 : res_op0 = _r1;
550 : }
551 35970 : tree _r;
552 35970 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
553 35970 : if (TREE_SIDE_EFFECTS (captures[0]))
554 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
555 35970 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 157, __FILE__, __LINE__, true);
556 35970 : return _r;
557 : }
558 0 : next_after_fail190:;
559 : }
560 : else
561 : {
562 3769 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail191;
563 3769 : {
564 3769 : tree res_op0;
565 3769 : {
566 3769 : tree _o1[1], _r1;
567 3769 : _o1[0] = captures[1];
568 3769 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
569 3769 : res_op0 = _r1;
570 : }
571 3769 : tree _r;
572 3769 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
573 3769 : if (TREE_SIDE_EFFECTS (captures[0]))
574 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
575 3769 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 158, __FILE__, __LINE__, true);
576 3769 : return _r;
577 : }
578 0 : next_after_fail191:;
579 : }
580 : }
581 : }
582 : return NULL_TREE;
583 : }
584 :
585 : tree
586 36 : generic_simplify_111 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
587 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
588 : const enum tree_code ARG_UNUSED (bitop),
589 : const enum tree_code ARG_UNUSED (cmp))
590 : {
591 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
592 72 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
593 36 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
594 72 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
595 : )
596 : {
597 36 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail208;
598 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail208;
599 36 : {
600 36 : tree res_op0;
601 36 : {
602 36 : tree _o1[2], _r1;
603 36 : _o1[0] = captures[0];
604 36 : {
605 36 : tree _o2[1], _r2;
606 36 : _o2[0] = captures[2];
607 36 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
608 : {
609 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
610 : }
611 : else
612 : _r2 = _o2[0];
613 36 : _o1[1] = _r2;
614 : }
615 36 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
616 36 : res_op0 = _r1;
617 : }
618 36 : tree res_op1;
619 36 : res_op1 = captures[1];
620 36 : tree _r;
621 36 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
622 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 175, __FILE__, __LINE__, true);
623 36 : return _r;
624 : }
625 : next_after_fail208:;
626 : }
627 : return NULL_TREE;
628 : }
629 :
630 : tree
631 16 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
632 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
633 : {
634 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
635 32 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
636 32 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
637 : )
638 : {
639 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail215;
640 0 : {
641 0 : tree res_op0;
642 0 : res_op0 = captures[0];
643 0 : tree res_op1;
644 0 : {
645 0 : tree _o1[2], _r1;
646 0 : _o1[0] = captures[1];
647 0 : _o1[1] = build_one_cst (type);
648 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
649 0 : res_op1 = _r1;
650 : }
651 0 : tree _r;
652 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
653 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 181, __FILE__, __LINE__, true);
654 0 : return _r;
655 : }
656 0 : next_after_fail215:;
657 : }
658 : return NULL_TREE;
659 : }
660 :
661 : tree
662 1 : generic_simplify_131 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
663 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
664 : {
665 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
666 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail228;
667 1 : {
668 1 : tree res_op0;
669 1 : {
670 1 : tree _o1[2], _r1;
671 1 : _o1[0] = captures[1];
672 1 : _o1[1] = captures[2];
673 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
674 1 : res_op0 = _r1;
675 : }
676 1 : tree _r;
677 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
678 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 190, __FILE__, __LINE__, true);
679 : return _r;
680 : }
681 0 : next_after_fail228:;
682 0 : return NULL_TREE;
683 : }
684 :
685 : tree
686 21 : generic_simplify_141 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
687 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
688 : const enum tree_code ARG_UNUSED (bitop),
689 : const enum tree_code ARG_UNUSED (rbitop))
690 : {
691 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
692 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail242;
693 21 : {
694 21 : tree _r;
695 21 : _r = captures[0];
696 21 : if (TREE_SIDE_EFFECTS (captures[1]))
697 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
698 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 196, __FILE__, __LINE__, true);
699 : return _r;
700 : }
701 0 : next_after_fail242:;
702 0 : return NULL_TREE;
703 : }
704 :
705 : tree
706 0 : generic_simplify_145 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
707 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
708 : const enum tree_code ARG_UNUSED (bitop),
709 : const enum tree_code ARG_UNUSED (rbitop))
710 : {
711 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
712 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail246;
713 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail246;
714 0 : {
715 0 : tree res_op0;
716 0 : res_op0 = captures[0];
717 0 : tree res_op1;
718 0 : res_op1 = captures[2];
719 0 : tree _r;
720 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 198, __FILE__, __LINE__, true);
722 : return _r;
723 : }
724 : next_after_fail246:;
725 : return NULL_TREE;
726 : }
727 :
728 : tree
729 0 : generic_simplify_152 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
730 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
731 : const enum tree_code ARG_UNUSED (cmp),
732 : const enum tree_code ARG_UNUSED (icmp))
733 : {
734 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
735 0 : if (integer_zerop (captures[5])
736 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
737 : )
738 : {
739 0 : if (integer_onep (captures[4])
740 : )
741 : {
742 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail254;
743 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail254;
744 0 : {
745 0 : tree res_op0;
746 0 : {
747 0 : tree _o1[3], _r1;
748 0 : _o1[0] = captures[1];
749 0 : _o1[1] = captures[6];
750 0 : _o1[2] = captures[9];
751 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
752 0 : res_op0 = _r1;
753 : }
754 0 : tree res_op1;
755 0 : res_op1 = captures[4];
756 0 : tree _r;
757 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
758 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 203, __FILE__, __LINE__, true);
759 0 : return _r;
760 : }
761 : next_after_fail254:;
762 : }
763 : else
764 : {
765 0 : if (integer_minus_onep (captures[4])
766 : )
767 : {
768 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail255;
769 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail255;
770 0 : {
771 0 : tree res_op0;
772 0 : res_op0 = captures[1];
773 0 : tree res_op1;
774 0 : res_op1 = captures[6];
775 0 : tree res_op2;
776 0 : res_op2 = captures[9];
777 0 : tree _r;
778 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
779 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 204, __FILE__, __LINE__, true);
780 0 : return _r;
781 : }
782 : next_after_fail255:;
783 : }
784 : }
785 : }
786 : else
787 : {
788 0 : if (integer_zerop (captures[4])
789 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
790 : )
791 : {
792 0 : if (integer_onep (captures[5])
793 : )
794 : {
795 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail256;
796 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail256;
797 0 : {
798 0 : tree res_op0;
799 0 : {
800 0 : tree _o1[3], _r1;
801 0 : _o1[0] = captures[1];
802 0 : _o1[1] = captures[9];
803 0 : _o1[2] = captures[6];
804 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
805 0 : res_op0 = _r1;
806 : }
807 0 : tree res_op1;
808 0 : res_op1 = captures[5];
809 0 : tree _r;
810 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 205, __FILE__, __LINE__, true);
812 0 : return _r;
813 : }
814 : next_after_fail256:;
815 : }
816 : else
817 : {
818 0 : if (integer_minus_onep (captures[5])
819 : )
820 : {
821 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail257;
822 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail257;
823 0 : {
824 0 : tree res_op0;
825 0 : res_op0 = captures[1];
826 0 : tree res_op1;
827 0 : res_op1 = captures[9];
828 0 : tree res_op2;
829 0 : res_op2 = captures[6];
830 0 : tree _r;
831 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
832 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 206, __FILE__, __LINE__, true);
833 0 : return _r;
834 : }
835 : next_after_fail257:;
836 : }
837 : }
838 : }
839 : }
840 : return NULL_TREE;
841 : }
842 :
843 : tree
844 0 : generic_simplify_175 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
845 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
846 : {
847 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
848 0 : if (type_has_mode_precision_p (type)
849 0 : && tree_fits_uhwi_p (captures[1])
850 0 : && tree_fits_uhwi_p (captures[3])
851 0 : && tree_fits_uhwi_p (captures[4])
852 0 : && ((~((HOST_WIDE_INT_1U << tree_to_uhwi (captures[1])) - 1)) & tree_to_uhwi (captures[4])) == 0
853 0 : && (tree_to_uhwi (captures[1]) + tree_to_uhwi (captures[3])) == TYPE_PRECISION (type)
854 0 : && TYPE_UNSIGNED (type)
855 0 : && captures[0] == captures[2]
856 : )
857 : {
858 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail312;
859 0 : {
860 0 : tree res_op0;
861 0 : {
862 0 : tree _o1[2], _r1;
863 0 : _o1[0] = captures[0];
864 0 : _o1[1] = captures[3];
865 0 : _r1 = fold_build2_loc (loc, RROTATE_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
866 0 : res_op0 = _r1;
867 : }
868 0 : tree res_op1;
869 0 : res_op1 = captures[4];
870 0 : tree _r;
871 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
872 0 : if (TREE_SIDE_EFFECTS (captures[1]))
873 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
874 0 : if (TREE_SIDE_EFFECTS (captures[2]))
875 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
876 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 233, __FILE__, __LINE__, true);
877 0 : return _r;
878 : }
879 0 : next_after_fail312:;
880 : }
881 : return NULL_TREE;
882 : }
883 :
884 : tree
885 0 : generic_simplify_182 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
886 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
887 : const combined_fn ARG_UNUSED (copysigns))
888 : {
889 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
890 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail319;
891 0 : {
892 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail319;
893 0 : tree res_op0;
894 0 : res_op0 = unshare_expr (captures[1]);
895 0 : tree res_op1;
896 0 : res_op1 = captures[1];
897 0 : tree _r;
898 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
899 0 : if (TREE_SIDE_EFFECTS (captures[2]))
900 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
901 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 238, __FILE__, __LINE__, true);
902 : return _r;
903 : }
904 : next_after_fail319:;
905 : return NULL_TREE;
906 : }
907 :
908 : tree
909 1206 : generic_simplify_189 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
910 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
911 : const enum tree_code ARG_UNUSED (cmp))
912 : {
913 1206 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
914 1206 : if (fold_before_rtl_expansion_p ()
915 : )
916 : {
917 0 : if (INTEGRAL_TYPE_P (type)
918 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
919 : )
920 : {
921 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail328;
922 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail328;
923 0 : {
924 0 : tree res_op0;
925 0 : res_op0 = captures[0];
926 0 : tree res_op1;
927 0 : res_op1 = captures[3];
928 0 : tree res_op2;
929 0 : res_op2 = build_zero_cst (type);
930 0 : tree _r;
931 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
932 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 244, __FILE__, __LINE__, true);
933 0 : return _r;
934 : }
935 : next_after_fail328:;
936 : }
937 : }
938 : return NULL_TREE;
939 : }
940 :
941 : tree
942 170544 : generic_simplify_193 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
943 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
944 : {
945 170544 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
946 170544 : {
947 170544 : poly_widest_int factor;
948 170544 : if (multiple_p (wi::to_poly_widest (captures[2]), wi::to_widest (captures[1]), &factor)
949 : )
950 : {
951 52132 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail332;
952 52132 : {
953 52132 : tree res_op0;
954 52132 : {
955 52132 : tree _o1[1], _r1;
956 52132 : _o1[0] = captures[0];
957 52132 : if (TREE_TYPE (_o1[0]) != type)
958 : {
959 9803 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
960 : }
961 : else
962 : _r1 = _o1[0];
963 52132 : res_op0 = _r1;
964 : }
965 52132 : tree res_op1;
966 52132 : res_op1 = wide_int_to_tree (type, factor);
967 52132 : tree _r;
968 52132 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
969 52132 : if (TREE_SIDE_EFFECTS (captures[1]))
970 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
971 52132 : if (TREE_SIDE_EFFECTS (captures[2]))
972 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
973 52132 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 247, __FILE__, __LINE__, true);
974 52132 : return _r;
975 : }
976 0 : next_after_fail332:;
977 : }
978 170544 : }
979 118412 : return NULL_TREE;
980 : }
981 :
982 : tree
983 2 : generic_simplify_202 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
984 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
985 : const combined_fn ARG_UNUSED (POW))
986 : {
987 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
988 2 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
989 : )
990 : {
991 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail342;
992 2 : {
993 2 : tree res_op0;
994 2 : {
995 2 : tree _o1[2], _r1;
996 2 : _o1[0] = captures[1];
997 2 : _o1[1] = captures[4];
998 2 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
999 2 : res_op0 = _r1;
1000 : }
1001 2 : tree res_op1;
1002 2 : res_op1 = captures[2];
1003 2 : tree _r;
1004 2 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1005 2 : if (!_r)
1006 0 : goto next_after_fail342;
1007 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 257, __FILE__, __LINE__, true);
1008 2 : return _r;
1009 : }
1010 : next_after_fail342:;
1011 : }
1012 : return NULL_TREE;
1013 : }
1014 :
1015 : tree
1016 0 : generic_simplify_209 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1017 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1018 : const enum tree_code ARG_UNUSED (op))
1019 : {
1020 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1021 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail352;
1022 0 : {
1023 0 : tree _r;
1024 0 : _r = constant_boolean_node (op == NE_EXPR ? true : false, type);
1025 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1026 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1027 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 266, __FILE__, __LINE__, true);
1028 : return _r;
1029 : }
1030 0 : next_after_fail352:;
1031 0 : return NULL_TREE;
1032 : }
1033 :
1034 : tree
1035 2518 : generic_simplify_214 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1036 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1037 : const enum tree_code ARG_UNUSED (cmp))
1038 : {
1039 2518 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1040 5036 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1041 3242 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1042 4160 : && tree_expr_nonzero_p (captures[1])
1043 : )
1044 : {
1045 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail357;
1046 12 : {
1047 12 : tree res_op0;
1048 12 : res_op0 = captures[0];
1049 12 : tree res_op1;
1050 12 : res_op1 = captures[2];
1051 12 : tree _r;
1052 12 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1053 12 : if (TREE_SIDE_EFFECTS (captures[1]))
1054 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1055 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 271, __FILE__, __LINE__, true);
1056 12 : return _r;
1057 : }
1058 0 : next_after_fail357:;
1059 : }
1060 : return NULL_TREE;
1061 : }
1062 :
1063 : tree
1064 0 : generic_simplify_221 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1065 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1066 : const enum tree_code ARG_UNUSED (op))
1067 : {
1068 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1069 0 : if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
1070 : )
1071 : {
1072 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail377;
1073 0 : {
1074 0 : tree res_op0;
1075 0 : res_op0 = captures[3];
1076 0 : tree res_op1;
1077 0 : res_op1 = captures[2];
1078 0 : tree _r;
1079 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1080 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1081 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1082 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 291, __FILE__, __LINE__, true);
1083 0 : return _r;
1084 : }
1085 0 : next_after_fail377:;
1086 : }
1087 : return NULL_TREE;
1088 : }
1089 :
1090 : tree
1091 1063 : generic_simplify_229 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1092 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1093 : const enum tree_code ARG_UNUSED (minmax),
1094 : const enum tree_code ARG_UNUSED (cmp),
1095 : const enum tree_code ARG_UNUSED (out))
1096 : {
1097 1063 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1098 2126 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1099 1208 : && (!VECTOR_TYPE_P (TREE_TYPE (captures[0]))
1100 1 : || (VECTOR_TYPE_P (type)
1101 0 : && (!expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, cmp)
1102 0 : || expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, out))))
1103 : )
1104 : {
1105 144 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail385;
1106 144 : {
1107 144 : tree res_op0;
1108 144 : res_op0 = captures[0];
1109 144 : tree res_op1;
1110 144 : res_op1 = captures[1];
1111 144 : tree _r;
1112 144 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
1113 144 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 298, __FILE__, __LINE__, true);
1114 144 : return _r;
1115 : }
1116 0 : next_after_fail385:;
1117 : }
1118 : return NULL_TREE;
1119 : }
1120 :
1121 : tree
1122 698 : generic_simplify_237 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1123 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1124 : const enum tree_code ARG_UNUSED (cmp))
1125 : {
1126 698 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1127 698 : if (tree_fits_shwi_p (captures[3])
1128 698 : && tree_to_shwi (captures[3]) > 0
1129 1382 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
1130 : )
1131 : {
1132 684 : {
1133 684 : tree t0 = TREE_TYPE (captures[2]);
1134 684 : unsigned int prec = TYPE_PRECISION (t0);
1135 684 : wide_int c1 = wi::to_wide (captures[3]);
1136 684 : wide_int c2 = wi::to_wide (captures[4]);
1137 684 : wide_int c3 = wi::to_wide (captures[5]);
1138 684 : wide_int sb = wi::set_bit_in_zero (prec - 1, prec);
1139 684 : if ((c2 & c3) != c3
1140 : )
1141 : {
1142 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail398;
1143 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail398;
1144 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail398;
1145 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail398;
1146 0 : {
1147 0 : tree _r;
1148 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1149 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1150 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1151 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 311, __FILE__, __LINE__, true);
1152 0 : return _r;
1153 : }
1154 0 : next_after_fail398:;
1155 : }
1156 : else
1157 : {
1158 684 : if (TYPE_UNSIGNED (t0)
1159 : )
1160 : {
1161 562 : if ((c3 & wi::arshift (sb, c1 - 1)) != 0
1162 : )
1163 : {
1164 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail399;
1165 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail399;
1166 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail399;
1167 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail399;
1168 0 : {
1169 0 : tree _r;
1170 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1171 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1172 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1173 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 312, __FILE__, __LINE__, true);
1174 0 : return _r;
1175 : }
1176 0 : next_after_fail399:;
1177 : }
1178 : else
1179 : {
1180 562 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail400;
1181 562 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail400;
1182 562 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail400;
1183 562 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail400;
1184 562 : {
1185 562 : tree res_op0;
1186 562 : {
1187 562 : tree _o1[2], _r1;
1188 562 : _o1[0] = captures[2];
1189 562 : _o1[1] = wide_int_to_tree (t0, c2 << c1);
1190 562 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1191 562 : res_op0 = _r1;
1192 : }
1193 562 : tree res_op1;
1194 562 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1195 562 : tree _r;
1196 562 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1197 562 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 313, __FILE__, __LINE__, true);
1198 562 : return _r;
1199 : }
1200 0 : next_after_fail400:;
1201 : }
1202 : }
1203 : else
1204 : {
1205 122 : {
1206 122 : wide_int smask = wi::arshift (sb, c1);
1207 122 : if ((c2 & smask) == 0
1208 : )
1209 : {
1210 120 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail401;
1211 120 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail401;
1212 120 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail401;
1213 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail401;
1214 120 : {
1215 120 : tree res_op0;
1216 120 : {
1217 120 : tree _o1[2], _r1;
1218 120 : _o1[0] = captures[2];
1219 120 : _o1[1] = wide_int_to_tree (t0, c2 << c1);
1220 120 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1221 120 : res_op0 = _r1;
1222 : }
1223 120 : tree res_op1;
1224 120 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1225 120 : tree _r;
1226 120 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1227 120 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 314, __FILE__, __LINE__, true);
1228 120 : return _r;
1229 : }
1230 0 : next_after_fail401:;
1231 : }
1232 : else
1233 : {
1234 2 : if ((c3 & smask) == 0
1235 : )
1236 : {
1237 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail402;
1238 2 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail402;
1239 2 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail402;
1240 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail402;
1241 2 : {
1242 2 : tree res_op0;
1243 2 : {
1244 2 : tree _o1[2], _r1;
1245 2 : _o1[0] = captures[2];
1246 2 : _o1[1] = wide_int_to_tree (t0, (c2 << c1) | sb);
1247 2 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1248 2 : res_op0 = _r1;
1249 : }
1250 2 : tree res_op1;
1251 2 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1252 2 : tree _r;
1253 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1254 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 315, __FILE__, __LINE__, true);
1255 2 : return _r;
1256 : }
1257 0 : next_after_fail402:;
1258 : }
1259 : else
1260 : {
1261 0 : if ((c2 & smask) != (c3 & smask)
1262 : )
1263 : {
1264 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail403;
1265 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail403;
1266 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail403;
1267 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail403;
1268 0 : {
1269 0 : tree _r;
1270 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1271 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1272 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1273 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 316, __FILE__, __LINE__, true);
1274 0 : return _r;
1275 : }
1276 0 : next_after_fail403:;
1277 : }
1278 : else
1279 : {
1280 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail404;
1281 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail404;
1282 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail404;
1283 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail404;
1284 0 : {
1285 0 : tree res_op0;
1286 0 : {
1287 0 : tree _o1[2], _r1;
1288 0 : _o1[0] = captures[2];
1289 0 : _o1[1] = wide_int_to_tree (t0, (c2 << c1) | sb);
1290 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1291 0 : res_op0 = _r1;
1292 : }
1293 0 : tree res_op1;
1294 0 : res_op1 = wide_int_to_tree (t0, (c3 << c1) | sb);
1295 0 : tree _r;
1296 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1297 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 317, __FILE__, __LINE__, true);
1298 0 : return _r;
1299 : }
1300 0 : next_after_fail404:;
1301 : }
1302 : }
1303 : }
1304 122 : }
1305 : }
1306 : }
1307 684 : }
1308 : }
1309 : return NULL_TREE;
1310 : }
1311 :
1312 : tree
1313 1101704 : generic_simplify_269 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1314 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1315 : const enum tree_code ARG_UNUSED (cmp))
1316 : {
1317 1101704 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1318 1101704 : {
1319 1101704 : poly_int64 off; tree base;
1320 1101704 : tree addr = (TREE_CODE (captures[1]) == SSA_NAME
1321 1101704 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[1])) : captures[1]);
1322 1101704 : if (SSA_NAME_IS_DEFAULT_DEF (captures[0])
1323 46844 : && TREE_CODE (SSA_NAME_VAR (captures[0])) == PARM_DECL
1324 46686 : && (base = get_base_address (TREE_OPERAND (addr, 0)))
1325 46686 : && TREE_CODE (base) == VAR_DECL
1326 1104910 : && auto_var_in_fn_p (base, current_function_decl)
1327 : )
1328 : {
1329 0 : if (cmp == NE_EXPR
1330 : )
1331 : {
1332 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail498;
1333 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail498;
1334 0 : {
1335 0 : tree _r;
1336 0 : _r = constant_boolean_node (true, type);
1337 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1338 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1339 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 401, __FILE__, __LINE__, true);
1340 2 : return _r;
1341 : }
1342 1101702 : next_after_fail498:;
1343 : }
1344 : else
1345 : {
1346 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail499;
1347 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail499;
1348 0 : {
1349 0 : tree _r;
1350 0 : _r = constant_boolean_node (false, type);
1351 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1352 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1353 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 402, __FILE__, __LINE__, true);
1354 0 : return _r;
1355 : }
1356 1101702 : next_after_fail499:;
1357 : }
1358 : }
1359 : else
1360 : {
1361 1101704 : if ((base = get_addr_base_and_unit_offset (TREE_OPERAND (addr, 0), &off))
1362 1100359 : && TREE_CODE (base) == MEM_REF
1363 1264252 : && TREE_OPERAND (base, 0) == captures[0]
1364 : )
1365 : {
1366 2 : {
1367 2 : off += mem_ref_offset (base).force_shwi ();
1368 2 : if (known_ne (off, 0)
1369 : )
1370 : {
1371 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail500;
1372 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail500;
1373 2 : {
1374 2 : tree _r;
1375 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1376 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1377 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1378 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 403, __FILE__, __LINE__, true);
1379 2 : return _r;
1380 : }
1381 1101702 : next_after_fail500:;
1382 : }
1383 : else
1384 : {
1385 0 : if (known_eq (off, 0)
1386 : )
1387 : {
1388 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail501;
1389 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail501;
1390 0 : {
1391 0 : tree _r;
1392 0 : _r = constant_boolean_node (cmp == EQ_EXPR, type);
1393 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1394 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1395 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 404, __FILE__, __LINE__, true);
1396 0 : return _r;
1397 : }
1398 1101702 : next_after_fail501:;
1399 : }
1400 : }
1401 : }
1402 : }
1403 : }
1404 : }
1405 1101702 : return NULL_TREE;
1406 : }
1407 :
1408 : tree
1409 4 : generic_simplify_282 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1410 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1411 : const enum tree_code ARG_UNUSED (cmp),
1412 : const enum tree_code ARG_UNUSED (ncmp))
1413 : {
1414 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1415 8 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1416 4 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1417 8 : && types_match (captures[0], captures[2])
1418 : )
1419 : {
1420 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail514;
1421 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail514;
1422 4 : {
1423 4 : tree res_op0;
1424 4 : {
1425 4 : tree _o1[2], _r1;
1426 4 : _o1[0] = captures[0];
1427 4 : _o1[1] = captures[2];
1428 4 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1429 4 : res_op0 = _r1;
1430 : }
1431 4 : tree res_op1;
1432 4 : res_op1 = captures[1];
1433 4 : tree _r;
1434 4 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1435 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 416, __FILE__, __LINE__, true);
1436 4 : return _r;
1437 : }
1438 : next_after_fail514:;
1439 : }
1440 : return NULL_TREE;
1441 : }
1442 :
1443 : tree
1444 1067776 : generic_simplify_288 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1445 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1446 : const enum tree_code ARG_UNUSED (cmp))
1447 : {
1448 1067776 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1449 1631996 : if (((POINTER_TYPE_P (TREE_TYPE (captures[0]))
1450 505431 : && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[0])))
1451 468182 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1452 9294 : && !(
1453 : 1
1454 9226 : && TREE_CODE (TREE_TYPE (captures[0])) == REFERENCE_TYPE
1455 68 : && (flag_sanitize & (SANITIZE_NULL | SANITIZE_ALIGNMENT))))
1456 1058562 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1457 562216 : && POINTER_TYPE_P (TREE_TYPE (captures[1]))
1458 2255 : && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1])))))
1459 1078757 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))
1460 : )
1461 : {
1462 9883 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail534;
1463 9883 : {
1464 9883 : tree res_op0;
1465 9883 : res_op0 = captures[0];
1466 9883 : tree res_op1;
1467 9883 : {
1468 9883 : tree _o1[1], _r1;
1469 9883 : _o1[0] = captures[1];
1470 9883 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1471 : {
1472 9883 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1473 : }
1474 : else
1475 : _r1 = _o1[0];
1476 9883 : res_op1 = _r1;
1477 : }
1478 9883 : tree _r;
1479 9883 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1480 9883 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
1481 9883 : return _r;
1482 : }
1483 0 : next_after_fail534:;
1484 : }
1485 : return NULL_TREE;
1486 : }
1487 :
1488 : tree
1489 591650 : generic_simplify_292 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1490 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1491 : const enum tree_code ARG_UNUSED (cmp),
1492 : const enum tree_code ARG_UNUSED (rcmp))
1493 : {
1494 591650 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1495 1183300 : if (!TREE_OVERFLOW (captures[0]) && !TREE_OVERFLOW (captures[2])
1496 1183300 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1497 : )
1498 : {
1499 4398 : {
1500 4398 : tree res = int_const_binop (MINUS_EXPR, captures[0], captures[2]);
1501 4398 : if (TREE_OVERFLOW (res)
1502 : )
1503 : {
1504 48 : if (cmp == NE_EXPR
1505 : )
1506 : {
1507 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail543;
1508 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail543;
1509 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail543;
1510 0 : {
1511 0 : tree _r;
1512 0 : _r = constant_boolean_node (true, type);
1513 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1514 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1515 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 436, __FILE__, __LINE__, true);
1516 0 : return _r;
1517 : }
1518 : next_after_fail543:;
1519 : }
1520 : else
1521 : {
1522 48 : if (cmp == EQ_EXPR
1523 : )
1524 : {
1525 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail544;
1526 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail544;
1527 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail544;
1528 0 : {
1529 0 : tree _r;
1530 0 : _r = constant_boolean_node (false, type);
1531 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1532 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1533 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 437, __FILE__, __LINE__, true);
1534 0 : return _r;
1535 : }
1536 : next_after_fail544:;
1537 : }
1538 : else
1539 : {
1540 48 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail545;
1541 48 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail545;
1542 48 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail545;
1543 48 : {
1544 48 : tree _r;
1545 48 : bool less = cmp == LE_EXPR || cmp == LT_EXPR;
1546 48 : bool ovf_high = wi::lt_p (wi::to_wide (captures[0]), 0,
1547 48 : TYPE_SIGN (TREE_TYPE (captures[0]))); _r =
1548 48 : constant_boolean_node (less == ovf_high, type);
1549 48 : if (TREE_SIDE_EFFECTS (captures[1]))
1550 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1551 48 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 438, __FILE__, __LINE__, true);
1552 48 : return _r;
1553 : }
1554 : next_after_fail545:;
1555 : }
1556 : }
1557 : }
1558 : else
1559 : {
1560 4350 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail546;
1561 4350 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail546;
1562 4350 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail546;
1563 4350 : {
1564 4350 : tree res_op0;
1565 4350 : res_op0 = captures[1];
1566 4350 : tree res_op1;
1567 4350 : res_op1 = res;
1568 4350 : tree _r;
1569 4350 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
1570 4350 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 439, __FILE__, __LINE__, true);
1571 4350 : return _r;
1572 : }
1573 : next_after_fail546:;
1574 : }
1575 : }
1576 : }
1577 : else
1578 : {
1579 587252 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1580 : )
1581 : {
1582 587146 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1583 : )
1584 : {
1585 37425 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail547;
1586 37425 : {
1587 37425 : tree res_op0;
1588 37425 : res_op0 = captures[1];
1589 37425 : tree res_op1;
1590 37425 : {
1591 37425 : tree _o1[2], _r1;
1592 37425 : _o1[0] = captures[0];
1593 37425 : _o1[1] = captures[2];
1594 37425 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1595 37425 : res_op1 = _r1;
1596 : }
1597 37425 : tree _r;
1598 37425 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1599 37425 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 440, __FILE__, __LINE__, true);
1600 37425 : return _r;
1601 : }
1602 0 : next_after_fail547:;
1603 : }
1604 : else
1605 : {
1606 549721 : if (cmp == LE_EXPR || cmp == GT_EXPR
1607 : )
1608 : {
1609 549721 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail548;
1610 549721 : {
1611 549721 : if (! tree_invariant_p (captures[2])) goto next_after_fail548;
1612 549721 : tree res_op0;
1613 549721 : {
1614 549721 : tree _o1[2], _r1;
1615 549721 : _o1[0] = captures[1];
1616 549721 : {
1617 549721 : tree _o2[2], _r2;
1618 549721 : _o2[0] = unshare_expr (captures[2]);
1619 549721 : _o2[1] = captures[0];
1620 549721 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1621 549721 : _o1[1] = _r2;
1622 : }
1623 549721 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1624 549721 : res_op0 = _r1;
1625 : }
1626 549721 : tree res_op1;
1627 549721 : res_op1 = captures[2];
1628 549721 : tree _r;
1629 549721 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1630 549721 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 441, __FILE__, __LINE__, true);
1631 549721 : return _r;
1632 : }
1633 : next_after_fail548:;
1634 : }
1635 : else
1636 : {
1637 0 : if (cmp == LT_EXPR || cmp == GE_EXPR
1638 : )
1639 : {
1640 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail549;
1641 0 : {
1642 0 : if (! tree_invariant_p (captures[2])) goto next_after_fail549;
1643 0 : tree res_op0;
1644 0 : {
1645 0 : tree _o1[2], _r1;
1646 0 : _o1[0] = captures[1];
1647 0 : {
1648 0 : tree _o2[2], _r2;
1649 0 : _o2[0] = unshare_expr (captures[2]);
1650 0 : {
1651 0 : tree _o3[2], _r3;
1652 0 : _o3[0] = captures[0];
1653 0 : _o3[1] = build_one_cst (TREE_TYPE (captures[1]));
1654 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
1655 0 : _o2[1] = _r3;
1656 : }
1657 0 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1658 0 : _o1[1] = _r2;
1659 : }
1660 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1661 0 : res_op0 = _r1;
1662 : }
1663 0 : tree res_op1;
1664 0 : res_op1 = captures[2];
1665 0 : tree _r;
1666 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1667 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 442, __FILE__, __LINE__, true);
1668 0 : return _r;
1669 : }
1670 : next_after_fail549:;
1671 : }
1672 : }
1673 : }
1674 : }
1675 : else
1676 : {
1677 106 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1678 106 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
1679 : )
1680 : {
1681 106 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1682 : )
1683 : {
1684 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail550;
1685 0 : {
1686 0 : tree res_op0;
1687 0 : res_op0 = captures[1];
1688 0 : tree res_op1;
1689 0 : {
1690 0 : tree _o1[2], _r1;
1691 0 : _o1[0] = captures[0];
1692 0 : _o1[1] = captures[2];
1693 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1694 0 : res_op1 = _r1;
1695 : }
1696 0 : tree _r;
1697 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1698 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 443, __FILE__, __LINE__, true);
1699 0 : return _r;
1700 : }
1701 0 : next_after_fail550:;
1702 : }
1703 : else
1704 : {
1705 106 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail551;
1706 106 : {
1707 106 : tree res_op0;
1708 106 : {
1709 106 : tree _o1[2], _r1;
1710 106 : _o1[0] = captures[1];
1711 106 : {
1712 106 : tree _o2[2], _r2;
1713 106 : _o2[0] = captures[0];
1714 106 : _o2[1] = build_one_cst (TREE_TYPE (captures[1]));
1715 106 : _r2 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1716 106 : _o1[1] = _r2;
1717 : }
1718 106 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1719 106 : res_op0 = _r1;
1720 : }
1721 106 : tree res_op1;
1722 106 : {
1723 106 : tree _o1[1], _r1;
1724 106 : _o1[0] = captures[2];
1725 106 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
1726 106 : res_op1 = _r1;
1727 : }
1728 106 : tree _r;
1729 106 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
1730 106 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 444, __FILE__, __LINE__, true);
1731 106 : return _r;
1732 : }
1733 0 : next_after_fail551:;
1734 : }
1735 : }
1736 : }
1737 : }
1738 : return NULL_TREE;
1739 : }
1740 :
1741 : tree
1742 2 : generic_simplify_330 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1743 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1744 : {
1745 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1746 0 : if (FLOAT_TYPE_P (type)
1747 2 : && ! HONOR_NANS (type)
1748 2 : && ! HONOR_INFINITIES (type)
1749 : )
1750 : {
1751 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail599;
1752 0 : {
1753 0 : tree _r;
1754 0 : _r = build_minus_one_cst (type);
1755 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1756 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1757 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 490, __FILE__, __LINE__, true);
1758 0 : return _r;
1759 : }
1760 0 : next_after_fail599:;
1761 : }
1762 : return NULL_TREE;
1763 : }
1764 :
1765 : tree
1766 6 : generic_simplify_338 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1767 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1768 : const combined_fn ARG_UNUSED (TAN),
1769 : const combined_fn ARG_UNUSED (SIN),
1770 : const combined_fn ARG_UNUSED (COS))
1771 : {
1772 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1773 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1774 : )
1775 : {
1776 6 : if (! HONOR_NANS (captures[1])
1777 6 : && ! HONOR_INFINITIES (captures[1])
1778 : )
1779 : {
1780 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail609;
1781 6 : {
1782 6 : tree res_op0;
1783 6 : res_op0 = build_one_cst (type);
1784 6 : tree res_op1;
1785 6 : {
1786 6 : tree _o1[1], _r1;
1787 6 : _o1[0] = captures[1];
1788 6 : _r1 = maybe_build_call_expr_loc (loc, COS, TREE_TYPE (_o1[0]), 1, _o1[0]);
1789 6 : if (!_r1)
1790 0 : goto next_after_fail609;
1791 6 : res_op1 = _r1;
1792 : }
1793 6 : tree _r;
1794 6 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1795 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 500, __FILE__, __LINE__, true);
1796 6 : return _r;
1797 : }
1798 : next_after_fail609:;
1799 : }
1800 : }
1801 : return NULL_TREE;
1802 : }
1803 :
1804 : tree
1805 9 : generic_simplify_348 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1806 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1807 : {
1808 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1809 9 : if (INTEGRAL_TYPE_P (type)
1810 9 : && !TYPE_UNSIGNED (type)
1811 : )
1812 : {
1813 9 : {
1814 9 : tree utype = unsigned_type_for (type);
1815 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail625;
1816 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail625;
1817 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail625;
1818 9 : {
1819 9 : tree res_op0;
1820 9 : {
1821 9 : tree _o1[2], _r1;
1822 9 : {
1823 9 : tree _o2[1], _r2;
1824 9 : _o2[0] = captures[0];
1825 9 : if (TREE_TYPE (_o2[0]) != utype)
1826 : {
1827 9 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1828 : }
1829 : else
1830 : _r2 = _o2[0];
1831 9 : _o1[0] = _r2;
1832 : }
1833 9 : {
1834 9 : tree _o2[1], _r2;
1835 9 : _o2[0] = captures[1];
1836 9 : if (TREE_TYPE (_o2[0]) != utype)
1837 : {
1838 9 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1839 : }
1840 : else
1841 : _r2 = _o2[0];
1842 9 : _o1[1] = _r2;
1843 : }
1844 9 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1845 9 : res_op0 = _r1;
1846 : }
1847 9 : tree _r;
1848 9 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1849 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 516, __FILE__, __LINE__, true);
1850 9 : return _r;
1851 : }
1852 : next_after_fail625:;
1853 : }
1854 : }
1855 : return NULL_TREE;
1856 : }
1857 :
1858 : tree
1859 0 : generic_simplify_355 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1860 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1861 : const enum tree_code ARG_UNUSED (op))
1862 : {
1863 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1864 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail632;
1865 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail632;
1866 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail632;
1867 0 : {
1868 0 : tree _r;
1869 0 : _r = captures[2];
1870 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 523, __FILE__, __LINE__, true);
1871 : return _r;
1872 : }
1873 : next_after_fail632:;
1874 : return NULL_TREE;
1875 : }
1876 :
1877 : tree
1878 36 : generic_simplify_361 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1879 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1880 : const enum tree_code ARG_UNUSED (op))
1881 : {
1882 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1883 36 : {
1884 36 : auto c1 = wi::to_wide (captures[1]);
1885 36 : auto c2 = wi::to_wide (captures[2]);
1886 36 : if (wi::popcount (c1) == 1
1887 120 : && ((op == PLUS_EXPR && wi::eq_p (wi::neg (c2), c1))
1888 48 : || (op == BIT_AND_EXPR && wi::eq_p (wi::bit_not (c2), c1)))
1889 : )
1890 : {
1891 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail638;
1892 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail638;
1893 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail638;
1894 24 : {
1895 24 : tree res_op0;
1896 24 : res_op0 = captures[0];
1897 24 : tree res_op1;
1898 24 : res_op1 = captures[1];
1899 24 : tree _r;
1900 24 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1901 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 529, __FILE__, __LINE__, true);
1902 24 : return _r;
1903 : }
1904 12 : next_after_fail638:;
1905 : }
1906 : }
1907 12 : return NULL_TREE;
1908 : }
1909 :
1910 : tree
1911 1995 : generic_simplify_372 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1912 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1913 : {
1914 1995 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1915 1995 : if (INTEGRAL_TYPE_P (type)
1916 : )
1917 : {
1918 1995 : {
1919 1995 : tree itype = TREE_TYPE (captures[2]);
1920 1995 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail650;
1921 1995 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail650;
1922 1995 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail650;
1923 1995 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail650;
1924 1995 : {
1925 1995 : tree res_op0;
1926 1995 : {
1927 1995 : tree _o1[2], _r1;
1928 1995 : _o1[0] = captures[2];
1929 1995 : {
1930 1995 : tree _o2[1], _r2;
1931 1995 : _o2[0] = captures[0];
1932 1995 : if (TREE_TYPE (_o2[0]) != itype)
1933 : {
1934 1995 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
1935 : }
1936 : else
1937 : _r2 = _o2[0];
1938 1995 : _o1[1] = _r2;
1939 : }
1940 1995 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1941 1995 : res_op0 = _r1;
1942 : }
1943 1995 : tree _r;
1944 1995 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1945 1995 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 539, __FILE__, __LINE__, true);
1946 1995 : return _r;
1947 : }
1948 : next_after_fail650:;
1949 : }
1950 : }
1951 : return NULL_TREE;
1952 : }
1953 :
1954 : tree
1955 948 : generic_simplify_381 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1956 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1957 : const enum tree_code ARG_UNUSED (op))
1958 : {
1959 948 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1960 1896 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1961 1896 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1962 : )
1963 : {
1964 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail663;
1965 0 : {
1966 0 : tree res_op0;
1967 0 : res_op0 = captures[0];
1968 0 : tree res_op1;
1969 0 : res_op1 = captures[2];
1970 0 : tree _r;
1971 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1972 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1973 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1974 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 552, __FILE__, __LINE__, true);
1975 0 : return _r;
1976 : }
1977 0 : next_after_fail663:;
1978 : }
1979 : return NULL_TREE;
1980 : }
1981 :
1982 : tree
1983 6 : generic_simplify_386 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1984 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1985 : const enum tree_code ARG_UNUSED (minmax),
1986 : const enum tree_code ARG_UNUSED (cmp))
1987 : {
1988 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1989 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail669;
1990 6 : {
1991 6 : tree _r;
1992 6 : _r = constant_boolean_node (cmp == GE_EXPR || cmp == LE_EXPR, type);
1993 6 : if (TREE_SIDE_EFFECTS (captures[0]))
1994 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1995 6 : if (TREE_SIDE_EFFECTS (captures[1]))
1996 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1997 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 558, __FILE__, __LINE__, true);
1998 : return _r;
1999 : }
2000 0 : next_after_fail669:;
2001 0 : return NULL_TREE;
2002 : }
2003 :
2004 : tree
2005 10115 : generic_simplify_396 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2006 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2007 : const enum tree_code ARG_UNUSED (cmp))
2008 : {
2009 10115 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2010 10115 : if (single_use (captures[0])
2011 10115 : && ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2012 10099 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2013 : )
2014 : {
2015 7721 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail711;
2016 7721 : {
2017 7721 : tree res_op0;
2018 7721 : res_op0 = captures[2];
2019 7721 : tree res_op1;
2020 7721 : res_op1 = captures[1];
2021 7721 : tree _r;
2022 7721 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2023 7721 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 583, __FILE__, __LINE__, true);
2024 7721 : return _r;
2025 : }
2026 0 : next_after_fail711:;
2027 : }
2028 : return NULL_TREE;
2029 : }
2030 :
2031 : tree
2032 1475 : generic_simplify_401 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2033 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2034 : const enum tree_code ARG_UNUSED (cmp),
2035 : const enum tree_code ARG_UNUSED (neg_cmp))
2036 : {
2037 1475 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2038 1475 : if (flag_unsafe_math_optimizations
2039 : )
2040 : {
2041 9 : {
2042 9 : tree tem = const_binop (RDIV_EXPR, type, captures[2], captures[1]);
2043 9 : if (tem
2044 27 : && !(REAL_VALUE_ISINF (TREE_REAL_CST (tem))
2045 15 : || (real_zerop (tem) && !real_zerop (captures[1])))
2046 : )
2047 : {
2048 3 : if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[1]))
2049 : )
2050 : {
2051 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail716;
2052 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail716;
2053 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail716;
2054 2 : {
2055 2 : tree res_op0;
2056 2 : res_op0 = captures[0];
2057 2 : tree res_op1;
2058 2 : res_op1 = tem;
2059 2 : tree _r;
2060 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2061 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 588, __FILE__, __LINE__, true);
2062 2 : return _r;
2063 : }
2064 : next_after_fail716:;
2065 : }
2066 : else
2067 : {
2068 1 : if (real_less (TREE_REAL_CST_PTR (captures[1]), &dconst0)
2069 : )
2070 : {
2071 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail717;
2072 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail717;
2073 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail717;
2074 1 : {
2075 1 : tree res_op0;
2076 1 : res_op0 = captures[0];
2077 1 : tree res_op1;
2078 1 : res_op1 = tem;
2079 1 : tree _r;
2080 1 : _r = fold_build2_loc (loc, neg_cmp, type, res_op0, res_op1);
2081 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 589, __FILE__, __LINE__, true);
2082 1 : return _r;
2083 : }
2084 : next_after_fail717:;
2085 : }
2086 : }
2087 : }
2088 : }
2089 : }
2090 : return NULL_TREE;
2091 : }
2092 :
2093 : tree
2094 0 : generic_simplify_410 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2095 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2096 : const enum tree_code ARG_UNUSED (cmp),
2097 : const enum tree_code ARG_UNUSED (out))
2098 : {
2099 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2100 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2101 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2102 : )
2103 : {
2104 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail732;
2105 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail732;
2106 0 : {
2107 0 : tree res_op0;
2108 0 : {
2109 0 : tree _o1[1], _r1;
2110 0 : _o1[0] = captures[0];
2111 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2112 0 : res_op0 = _r1;
2113 : }
2114 0 : tree res_op1;
2115 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2116 0 : tree _r;
2117 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2118 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 586, __FILE__, __LINE__, true);
2119 0 : return _r;
2120 : }
2121 : next_after_fail732:;
2122 : }
2123 : return NULL_TREE;
2124 : }
2125 :
2126 : tree
2127 94 : generic_simplify_415 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2128 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2129 : {
2130 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2131 188 : if (INTEGRAL_TYPE_P (type)
2132 93 : && !TYPE_UNSIGNED (type)
2133 93 : && !TYPE_OVERFLOW_TRAPS (type)
2134 93 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
2135 281 : && (expr_not_equal_to (captures[0], wi::to_wide (TYPE_MIN_VALUE (type)))
2136 187 : || expr_not_equal_to (captures[2], wi::minus_one (TYPE_PRECISION
2137 : (TREE_TYPE (captures[2]))),
2138 : gimple_match_ctx (captures[1])))
2139 : )
2140 : {
2141 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail741;
2142 0 : {
2143 0 : tree res_op0;
2144 0 : res_op0 = captures[0];
2145 0 : tree res_op1;
2146 0 : {
2147 0 : tree _o1[1], _r1;
2148 0 : _o1[0] = captures[2];
2149 0 : if (TREE_TYPE (_o1[0]) != type)
2150 : {
2151 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2152 : }
2153 : else
2154 : _r1 = _o1[0];
2155 0 : res_op1 = _r1;
2156 : }
2157 0 : tree _r;
2158 0 : _r = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, res_op0, res_op1);
2159 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 609, __FILE__, __LINE__, true);
2160 0 : return _r;
2161 : }
2162 0 : next_after_fail741:;
2163 : }
2164 : return NULL_TREE;
2165 : }
2166 :
2167 : tree
2168 0 : generic_simplify_422 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2169 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2170 : const enum tree_code ARG_UNUSED (shiftrotate))
2171 : {
2172 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2173 0 : {
2174 0 : tree tem = uniform_vector_p (captures[1]);
2175 0 : if (tem
2176 : )
2177 : {
2178 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail748;
2179 0 : {
2180 0 : tree res_op0;
2181 0 : res_op0 = captures[0];
2182 0 : tree res_op1;
2183 0 : res_op1 = tem;
2184 0 : tree _r;
2185 0 : _r = fold_build2_loc (loc, shiftrotate, type, res_op0, res_op1);
2186 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2187 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2188 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 615, __FILE__, __LINE__, true);
2189 0 : return _r;
2190 : }
2191 0 : next_after_fail748:;
2192 : }
2193 : }
2194 : return NULL_TREE;
2195 : }
2196 :
2197 : tree
2198 3580935 : generic_simplify_429 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2199 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2200 : const enum tree_code ARG_UNUSED (bitop))
2201 : {
2202 3580935 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2203 3580935 : if (0
2204 : && INTEGRAL_TYPE_P (type)
2205 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2206 : && TREE_CODE (captures[3]) != INTEGER_CST
2207 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2208 : && TYPE_PRECISION (TREE_TYPE (captures[2])) > TYPE_PRECISION (type)
2209 : )
2210 : {
2211 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail762;
2212 : {
2213 : tree res_op0;
2214 : {
2215 : tree _o1[1], _r1;
2216 : _o1[0] = captures[2];
2217 : if (TREE_TYPE (_o1[0]) != type)
2218 : {
2219 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2220 : }
2221 : else
2222 : _r1 = _o1[0];
2223 : res_op0 = _r1;
2224 : }
2225 : tree res_op1;
2226 : {
2227 : tree _o1[1], _r1;
2228 : _o1[0] = captures[3];
2229 : if (TREE_TYPE (_o1[0]) != type)
2230 : {
2231 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2232 : }
2233 : else
2234 : _r1 = _o1[0];
2235 : res_op1 = _r1;
2236 : }
2237 : tree _r;
2238 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2239 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 628, __FILE__, __LINE__, true);
2240 : return _r;
2241 : }
2242 : next_after_fail762:;
2243 : }
2244 : else
2245 : {
2246 3580935 : if (0
2247 : && INTEGRAL_TYPE_P (type)
2248 : && types_match (type, TREE_TYPE (captures[2]))
2249 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2250 : )
2251 : {
2252 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail763;
2253 : {
2254 : tree res_op0;
2255 : res_op0 = captures[2];
2256 : tree res_op1;
2257 : {
2258 : tree _o1[1], _r1;
2259 : _o1[0] = captures[3];
2260 : if (TREE_TYPE (_o1[0]) != type)
2261 : {
2262 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2263 : }
2264 : else
2265 : _r1 = _o1[0];
2266 : res_op1 = _r1;
2267 : }
2268 : tree _r;
2269 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2270 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 629, __FILE__, __LINE__, true);
2271 : return _r;
2272 : }
2273 : next_after_fail763:;
2274 : }
2275 : }
2276 3580935 : return NULL_TREE;
2277 : }
2278 :
2279 : tree
2280 21379718 : generic_simplify_435 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2281 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2282 : const enum tree_code ARG_UNUSED (op))
2283 : {
2284 21379718 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2285 21379718 : if (INTEGRAL_TYPE_P (type)
2286 19945809 : && op != MULT_EXPR
2287 19945809 : && op != RDIV_EXPR
2288 11098177 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2289 11098177 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2290 11098177 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2291 11096869 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2292 11096869 : && type_has_mode_precision_p (type)
2293 11062714 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2294 0 : && types_match (captures[2], type)
2295 21379718 : && (types_match (captures[2], captures[4])
2296 0 : || poly_int_tree_p (captures[3]))
2297 : )
2298 : {
2299 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2300 : )
2301 : {
2302 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail779;
2303 0 : {
2304 0 : tree res_op0;
2305 0 : res_op0 = captures[2];
2306 0 : tree res_op1;
2307 0 : {
2308 0 : tree _o1[1], _r1;
2309 0 : _o1[0] = captures[4];
2310 0 : if (TREE_TYPE (_o1[0]) != type)
2311 : {
2312 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2313 : }
2314 : else
2315 : _r1 = _o1[0];
2316 0 : res_op1 = _r1;
2317 : }
2318 0 : tree _r;
2319 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2320 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 633, __FILE__, __LINE__, true);
2321 0 : return _r;
2322 : }
2323 0 : next_after_fail779:;
2324 : }
2325 : else
2326 : {
2327 0 : {
2328 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2329 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail780;
2330 0 : {
2331 0 : tree res_op0;
2332 0 : {
2333 0 : tree _o1[2], _r1;
2334 0 : {
2335 0 : tree _o2[1], _r2;
2336 0 : _o2[0] = captures[2];
2337 0 : if (TREE_TYPE (_o2[0]) != utype)
2338 : {
2339 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2340 : }
2341 : else
2342 : _r2 = _o2[0];
2343 0 : _o1[0] = _r2;
2344 : }
2345 0 : {
2346 0 : tree _o2[1], _r2;
2347 0 : _o2[0] = captures[4];
2348 0 : if (TREE_TYPE (_o2[0]) != utype)
2349 : {
2350 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2351 : }
2352 : else
2353 : _r2 = _o2[0];
2354 0 : _o1[1] = _r2;
2355 : }
2356 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2357 0 : res_op0 = _r1;
2358 : }
2359 0 : tree _r;
2360 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2361 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 634, __FILE__, __LINE__, true);
2362 0 : return _r;
2363 : }
2364 0 : next_after_fail780:;
2365 : }
2366 : }
2367 : }
2368 : else
2369 : {
2370 21332505 : if (FLOAT_TYPE_P (type)
2371 21426931 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2372 47213 : == DECIMAL_FLOAT_TYPE_P (type)
2373 : )
2374 : {
2375 47173 : {
2376 47173 : tree arg0 = strip_float_extensions (captures[2]);
2377 47173 : tree arg1 = strip_float_extensions (captures[4]);
2378 47173 : tree itype = TREE_TYPE (captures[0]);
2379 47173 : tree ty1 = TREE_TYPE (arg0);
2380 47173 : tree ty2 = TREE_TYPE (arg1);
2381 47173 : enum tree_code code = TREE_CODE (itype);
2382 0 : if (FLOAT_TYPE_P (ty1)
2383 47173 : && FLOAT_TYPE_P (ty2)
2384 : )
2385 : {
2386 47173 : {
2387 47173 : tree newtype = type;
2388 47173 : if (TYPE_MODE (ty1) == SDmode
2389 46905 : || TYPE_MODE (ty2) == SDmode
2390 94078 : || TYPE_MODE (type) == SDmode)
2391 283 : newtype = dfloat32_type_node;
2392 47173 : if (TYPE_MODE (ty1) == DDmode
2393 47027 : || TYPE_MODE (ty2) == DDmode
2394 94073 : || TYPE_MODE (type) == DDmode)
2395 275 : newtype = dfloat64_type_node;
2396 47173 : if (TYPE_MODE (ty1) == TDmode
2397 47172 : || TYPE_MODE (ty2) == TDmode
2398 94093 : || TYPE_MODE (type) == TDmode)
2399 268 : newtype = dfloat128_type_node;
2400 47173 : if ((newtype == dfloat32_type_node
2401 47169 : || newtype == dfloat64_type_node
2402 47026 : || newtype == dfloat128_type_node)
2403 415 : && newtype == type
2404 47184 : && types_match (newtype, type)
2405 : )
2406 : {
2407 11 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail781;
2408 5 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail781;
2409 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail781;
2410 5 : {
2411 5 : tree res_op0;
2412 5 : {
2413 5 : tree _o1[1], _r1;
2414 5 : _o1[0] = captures[2];
2415 5 : if (TREE_TYPE (_o1[0]) != newtype)
2416 : {
2417 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2418 : }
2419 : else
2420 : _r1 = _o1[0];
2421 5 : res_op0 = _r1;
2422 : }
2423 5 : tree res_op1;
2424 5 : {
2425 5 : tree _o1[1], _r1;
2426 5 : _o1[0] = captures[4];
2427 5 : if (TREE_TYPE (_o1[0]) != newtype)
2428 : {
2429 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2430 : }
2431 : else
2432 : _r1 = _o1[0];
2433 5 : res_op1 = _r1;
2434 : }
2435 5 : tree _r;
2436 5 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2437 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 635, __FILE__, __LINE__, true);
2438 5 : return _r;
2439 : }
2440 : next_after_fail781:;
2441 : }
2442 : else
2443 : {
2444 47162 : {
2445 47162 : if (element_precision (ty1) > element_precision (newtype))
2446 9740 : newtype = ty1;
2447 47162 : if (element_precision (ty2) > element_precision (newtype))
2448 4295 : newtype = ty2;
2449 47162 : if (element_precision (newtype) < element_precision (itype)
2450 12511 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2451 0 : || target_supports_op_p (newtype, op, optab_default))
2452 12511 : && (flag_unsafe_math_optimizations
2453 12503 : || (element_precision (newtype) == element_precision (type)
2454 12474 : && real_can_shorten_arithmetic (element_mode (itype),
2455 : element_mode (type))
2456 3555 : && !excess_precision_type (newtype)))
2457 47317 : && !types_match (itype, newtype)
2458 : )
2459 : {
2460 155 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail782;
2461 154 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail782;
2462 136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail782;
2463 136 : {
2464 136 : tree res_op0;
2465 136 : {
2466 136 : tree _o1[2], _r1;
2467 136 : {
2468 136 : tree _o2[1], _r2;
2469 136 : _o2[0] = captures[2];
2470 136 : if (TREE_TYPE (_o2[0]) != newtype)
2471 : {
2472 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2473 : }
2474 : else
2475 : _r2 = _o2[0];
2476 136 : _o1[0] = _r2;
2477 : }
2478 136 : {
2479 136 : tree _o2[1], _r2;
2480 136 : _o2[0] = captures[4];
2481 136 : if (TREE_TYPE (_o2[0]) != newtype)
2482 : {
2483 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2484 : }
2485 : else
2486 : _r2 = _o2[0];
2487 136 : _o1[1] = _r2;
2488 : }
2489 136 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2490 136 : res_op0 = _r1;
2491 : }
2492 136 : tree _r;
2493 136 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2494 136 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2495 136 : return _r;
2496 : }
2497 : next_after_fail782:;
2498 : }
2499 : }
2500 : }
2501 : }
2502 : }
2503 : }
2504 : }
2505 : }
2506 : return NULL_TREE;
2507 : }
2508 :
2509 : tree
2510 0 : generic_simplify_467 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2511 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2512 : const enum tree_code ARG_UNUSED (cmp))
2513 : {
2514 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2515 0 : if (fold_before_rtl_expansion_p ()
2516 : )
2517 : {
2518 0 : if (INTEGRAL_TYPE_P (type)
2519 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2520 : )
2521 : {
2522 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail814;
2523 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail814;
2524 0 : {
2525 0 : tree res_op0;
2526 0 : res_op0 = captures[0];
2527 0 : tree res_op1;
2528 0 : res_op1 = captures[3];
2529 0 : tree res_op2;
2530 0 : res_op2 = build_zero_cst (type);
2531 0 : tree _r;
2532 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2533 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 667, __FILE__, __LINE__, true);
2534 0 : return _r;
2535 : }
2536 : next_after_fail814:;
2537 : }
2538 : }
2539 : return NULL_TREE;
2540 : }
2541 :
2542 : tree
2543 0 : generic_simplify_477 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2544 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2545 : const enum tree_code ARG_UNUSED (eqne))
2546 : {
2547 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2548 0 : if (eqne == EQ_EXPR
2549 : )
2550 : {
2551 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail845;
2552 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail845;
2553 0 : {
2554 0 : tree _r;
2555 0 : _r = constant_boolean_node (false, type);
2556 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2557 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2558 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 671, __FILE__, __LINE__, true);
2559 0 : return _r;
2560 : }
2561 : next_after_fail845:;
2562 : }
2563 : else
2564 : {
2565 0 : if (eqne == NE_EXPR
2566 : )
2567 : {
2568 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail846;
2569 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail846;
2570 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail846;
2571 0 : {
2572 0 : tree _r;
2573 0 : _r = captures[0];
2574 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 672, __FILE__, __LINE__, true);
2575 0 : return _r;
2576 : }
2577 : next_after_fail846:;
2578 : }
2579 : }
2580 : return NULL_TREE;
2581 : }
2582 :
2583 : tree
2584 4 : generic_simplify_485 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2585 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2586 : {
2587 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2588 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail866;
2589 4 : {
2590 4 : tree res_op0;
2591 4 : res_op0 = captures[1];
2592 4 : tree res_op1;
2593 4 : {
2594 4 : tree _o1[2], _r1;
2595 4 : _o1[0] = captures[2];
2596 4 : _o1[1] = captures[3];
2597 4 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2598 4 : if (EXPR_P (_r1))
2599 2 : goto next_after_fail866;
2600 2 : res_op1 = _r1;
2601 : }
2602 2 : tree _r;
2603 2 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2604 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
2605 : return _r;
2606 : }
2607 : next_after_fail866:;
2608 : return NULL_TREE;
2609 : }
2610 :
2611 : tree
2612 234 : generic_simplify_490 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2613 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2614 : const combined_fn ARG_UNUSED (bswap))
2615 : {
2616 234 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2617 234 : if (BITS_PER_UNIT == 8
2618 234 : && tree_fits_uhwi_p (captures[3])
2619 234 : && tree_fits_uhwi_p (captures[4])
2620 : )
2621 : {
2622 234 : {
2623 234 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
2624 234 : unsigned HOST_WIDE_INT bits = tree_to_uhwi (captures[3]);
2625 234 : unsigned HOST_WIDE_INT mask = tree_to_uhwi (captures[4]);
2626 234 : unsigned HOST_WIDE_INT lo = bits & 7;
2627 234 : unsigned HOST_WIDE_INT hi = bits - lo;
2628 234 : if (bits < prec
2629 234 : && mask < (256u>>lo)
2630 468 : && bits < TYPE_PRECISION (TREE_TYPE(captures[0]))
2631 : )
2632 : {
2633 234 : {
2634 234 : unsigned HOST_WIDE_INT ns = (prec - (hi + 8)) + lo;
2635 234 : if (ns == 0
2636 : )
2637 : {
2638 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail879;
2639 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail879;
2640 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail879;
2641 1 : {
2642 1 : tree res_op0;
2643 1 : {
2644 1 : tree _o1[1], _r1;
2645 1 : _o1[0] = captures[2];
2646 1 : if (TREE_TYPE (_o1[0]) != type)
2647 : {
2648 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2649 : }
2650 : else
2651 : _r1 = _o1[0];
2652 1 : res_op0 = _r1;
2653 : }
2654 1 : tree res_op1;
2655 1 : res_op1 = captures[4];
2656 1 : tree _r;
2657 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2658 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 694, __FILE__, __LINE__, true);
2659 1 : return _r;
2660 : }
2661 : next_after_fail879:;
2662 : }
2663 : else
2664 : {
2665 233 : {
2666 233 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2667 233 : tree nst = build_int_cst (integer_type_node, ns);
2668 233 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail880;
2669 233 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail880;
2670 233 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail880;
2671 233 : {
2672 233 : tree res_op0;
2673 233 : {
2674 233 : tree _o1[1], _r1;
2675 233 : {
2676 233 : tree _o2[2], _r2;
2677 233 : {
2678 233 : tree _o3[1], _r3;
2679 233 : _o3[0] = captures[2];
2680 233 : if (TREE_TYPE (_o3[0]) != utype)
2681 : {
2682 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2683 : }
2684 : else
2685 : _r3 = _o3[0];
2686 233 : _o2[0] = _r3;
2687 : }
2688 233 : _o2[1] = nst;
2689 233 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, utype, _o2[0], _o2[1]);
2690 233 : _o1[0] = _r2;
2691 : }
2692 233 : if (TREE_TYPE (_o1[0]) != type)
2693 : {
2694 101 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2695 : }
2696 : else
2697 : _r1 = _o1[0];
2698 233 : res_op0 = _r1;
2699 : }
2700 233 : tree res_op1;
2701 233 : res_op1 = captures[4];
2702 233 : tree _r;
2703 233 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2704 233 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 695, __FILE__, __LINE__, true);
2705 233 : return _r;
2706 : }
2707 : next_after_fail880:;
2708 : }
2709 : }
2710 : }
2711 : }
2712 : }
2713 : }
2714 : return NULL_TREE;
2715 : }
2716 :
2717 : tree
2718 0 : generic_simplify_492 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2719 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2720 : {
2721 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2722 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail882;
2723 0 : {
2724 0 : tree res_op0;
2725 0 : res_op0 = captures[0];
2726 0 : tree res_op1;
2727 0 : res_op1 = captures[1];
2728 0 : tree _r;
2729 0 : _r = fold_build2_loc (loc, LTGT_EXPR, type, res_op0, res_op1);
2730 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 697, __FILE__, __LINE__, true);
2731 : return _r;
2732 : }
2733 0 : next_after_fail882:;
2734 0 : return NULL_TREE;
2735 : }
2736 :
2737 : tree
2738 0 : generic_simplify_493 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2739 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2740 : {
2741 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2742 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail883;
2743 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail883;
2744 0 : {
2745 0 : tree _r;
2746 0 : _r = captures[1];
2747 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 698, __FILE__, __LINE__, true);
2748 : return _r;
2749 : }
2750 : next_after_fail883:;
2751 : return NULL_TREE;
2752 : }
2753 :
2754 : tree
2755 3 : generic_simplify_496 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2756 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2757 : const combined_fn ARG_UNUSED (POPCOUNT),
2758 : const combined_fn ARG_UNUSED (PARITY))
2759 : {
2760 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2761 3 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail887;
2762 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail887;
2763 3 : {
2764 3 : tree res_op0;
2765 3 : res_op0 = captures[0];
2766 3 : tree _r;
2767 3 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
2768 3 : if (!_r)
2769 0 : goto next_after_fail887;
2770 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 701, __FILE__, __LINE__, true);
2771 : return _r;
2772 : }
2773 : next_after_fail887:;
2774 : return NULL_TREE;
2775 : }
2776 :
2777 : tree
2778 3792 : generic_simplify_501 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2779 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2780 : {
2781 3792 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2782 3792 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
2783 3792 : || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2784 : )
2785 : {
2786 3350 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail892;
2787 3350 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail892;
2788 3350 : {
2789 3350 : tree res_op0;
2790 3350 : {
2791 3350 : tree _o1[1], _r1;
2792 3350 : _o1[0] = captures[0];
2793 3350 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2794 3350 : res_op0 = _r1;
2795 : }
2796 3350 : tree _r;
2797 3350 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2798 3350 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 706, __FILE__, __LINE__, true);
2799 3350 : return _r;
2800 : }
2801 : next_after_fail892:;
2802 : }
2803 : return NULL_TREE;
2804 : }
2805 :
2806 : tree
2807 2 : generic_simplify_509 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2808 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2809 : const enum tree_code ARG_UNUSED (rotate))
2810 : {
2811 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2812 2 : if ((element_precision (TREE_TYPE (captures[2]))
2813 2 : <= element_precision (TREE_TYPE (captures[3]))
2814 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2815 2 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
2816 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))
2817 : )
2818 : {
2819 2 : {
2820 2 : tree rotate_type = TREE_TYPE (captures[2]);
2821 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail900;
2822 2 : {
2823 2 : tree res_op0;
2824 2 : {
2825 2 : tree _o1[2], _r1;
2826 2 : {
2827 2 : tree _o2[1], _r2;
2828 2 : _o2[0] = captures[3];
2829 2 : if (TREE_TYPE (_o2[0]) != rotate_type)
2830 : {
2831 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, rotate_type, _o2[0]);
2832 : }
2833 : else
2834 : _r2 = _o2[0];
2835 2 : _o1[0] = _r2;
2836 : }
2837 2 : _o1[1] = captures[4];
2838 2 : _r1 = fold_build2_loc (loc, rotate, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2839 2 : res_op0 = _r1;
2840 : }
2841 2 : tree _r;
2842 2 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2843 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 711, __FILE__, __LINE__, true);
2844 2 : return _r;
2845 : }
2846 0 : next_after_fail900:;
2847 : }
2848 : }
2849 : return NULL_TREE;
2850 : }
2851 :
2852 : tree
2853 2 : generic_simplify_522 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2854 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2855 : {
2856 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2857 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2858 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2859 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2860 : )
2861 : {
2862 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail915;
2863 2 : {
2864 2 : tree res_op0;
2865 2 : {
2866 2 : tree _o1[1], _r1;
2867 2 : _o1[0] = captures[0];
2868 2 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2869 2 : res_op0 = _r1;
2870 : }
2871 2 : tree _r;
2872 2 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
2873 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 726, __FILE__, __LINE__, true);
2874 2 : return _r;
2875 : }
2876 0 : next_after_fail915:;
2877 : }
2878 : return NULL_TREE;
2879 : }
2880 :
2881 : tree
2882 0 : generic_simplify_531 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2883 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2884 : const enum tree_code ARG_UNUSED (minmax),
2885 : const enum tree_code ARG_UNUSED (maxmin))
2886 : {
2887 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2888 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail938;
2889 0 : {
2890 0 : tree res_op0;
2891 0 : {
2892 0 : tree _o1[2], _r1;
2893 0 : _o1[0] = captures[1];
2894 0 : _o1[1] = captures[3];
2895 0 : _r1 = fold_build2_loc (loc, maxmin, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2896 0 : res_op0 = _r1;
2897 : }
2898 0 : tree _r;
2899 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2900 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 737, __FILE__, __LINE__, true);
2901 : return _r;
2902 : }
2903 0 : next_after_fail938:;
2904 0 : return NULL_TREE;
2905 : }
2906 :
2907 : tree
2908 0 : generic_simplify_536 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2909 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2910 : const combined_fn ARG_UNUSED (minmax))
2911 : {
2912 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2913 0 : if (real_isnan (TREE_REAL_CST_PTR (captures[1]))
2914 0 : && (!HONOR_SNANS (captures[1]) || !TREE_REAL_CST (captures[1]).signalling)
2915 0 : && !tree_expr_maybe_signaling_nan_p (captures[0])
2916 : )
2917 : {
2918 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail943;
2919 0 : {
2920 0 : tree _r;
2921 0 : _r = captures[0];
2922 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2923 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2924 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 742, __FILE__, __LINE__, true);
2925 0 : return _r;
2926 : }
2927 0 : next_after_fail943:;
2928 : }
2929 : return NULL_TREE;
2930 : }
2931 :
2932 : tree
2933 0 : generic_simplify_545 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2934 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2935 : const combined_fn ARG_UNUSED (cond_op))
2936 : {
2937 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2938 0 : {
2939 0 : tree op_type = TREE_TYPE (captures[5]);
2940 0 : if (inverse_conditions_p (captures[0], captures[2])
2941 0 : && element_precision (type) == element_precision (op_type)
2942 : )
2943 : {
2944 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail952;
2945 0 : {
2946 0 : tree res_op0;
2947 0 : {
2948 0 : tree _o1[4], _r1;
2949 0 : _o1[0] = captures[2];
2950 0 : _o1[1] = captures[3];
2951 0 : _o1[2] = captures[4];
2952 0 : {
2953 0 : tree _o2[1], _r2;
2954 0 : _o2[0] = captures[1];
2955 0 : if (TREE_TYPE (_o2[0]) != op_type)
2956 : {
2957 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2958 : }
2959 : else
2960 : _r2 = _o2[0];
2961 0 : _o1[3] = _r2;
2962 : }
2963 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 4, _o1[0], _o1[1], _o1[2], _o1[3]);
2964 0 : if (!_r1)
2965 0 : goto next_after_fail952;
2966 0 : res_op0 = _r1;
2967 : }
2968 0 : tree _r;
2969 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2970 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2971 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2972 0 : if (TREE_SIDE_EFFECTS (captures[5]))
2973 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
2974 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 746, __FILE__, __LINE__, true);
2975 0 : return _r;
2976 : }
2977 : next_after_fail952:;
2978 : }
2979 : }
2980 : return NULL_TREE;
2981 : }
2982 :
2983 : tree
2984 5786 : generic_simplify_556 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2985 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2986 : {
2987 5786 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2988 11572 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2989 5786 : && TYPE_MAX_VALUE (TREE_TYPE (captures[1]))
2990 5786 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (TREE_TYPE (captures[0])))
2991 8082 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
2992 : )
2993 : {
2994 1904 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2995 : )
2996 : {
2997 929 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail964;
2998 929 : {
2999 929 : tree res_op0;
3000 929 : {
3001 929 : tree _o1[2], _r1;
3002 929 : _o1[0] = captures[1];
3003 929 : {
3004 929 : tree _o2[2], _r2;
3005 929 : _o2[0] = TYPE_MAX_VALUE (TREE_TYPE (captures[1]));
3006 929 : _o2[1] = captures[2];
3007 929 : _r2 = fold_build2_loc (loc, TRUNC_DIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3008 929 : if (EXPR_P (_r2))
3009 0 : goto next_after_fail964;
3010 929 : _o1[1] = _r2;
3011 : }
3012 929 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3013 929 : res_op0 = _r1;
3014 : }
3015 929 : tree _r;
3016 929 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3017 929 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 758, __FILE__, __LINE__, true);
3018 929 : return _r;
3019 : }
3020 : next_after_fail964:;
3021 : }
3022 : else
3023 : {
3024 975 : if (TYPE_MIN_VALUE (TREE_TYPE (captures[1]))
3025 : )
3026 : {
3027 975 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && integer_minus_onep (captures[2])
3028 : )
3029 : {
3030 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail965;
3031 56 : {
3032 56 : tree res_op0;
3033 56 : {
3034 56 : tree _o1[2], _r1;
3035 56 : _o1[0] = captures[1];
3036 56 : _o1[1] = TYPE_MIN_VALUE (TREE_TYPE (captures[1]));
3037 56 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
3038 56 : res_op0 = _r1;
3039 : }
3040 56 : tree _r;
3041 56 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3042 56 : if (TREE_SIDE_EFFECTS (captures[2]))
3043 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3044 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 759, __FILE__, __LINE__, true);
3045 56 : return _r;
3046 : }
3047 0 : next_after_fail965:;
3048 : }
3049 : else
3050 : {
3051 919 : {
3052 919 : tree div = fold_convert (TREE_TYPE (captures[1]), captures[2]);
3053 1838 : tree lo = int_const_binop (TRUNC_DIV_EXPR,
3054 919 : TYPE_MIN_VALUE (TREE_TYPE (captures[1])), div);
3055 1838 : tree hi = int_const_binop (TRUNC_DIV_EXPR,
3056 919 : TYPE_MAX_VALUE (TREE_TYPE (captures[1])), div);
3057 919 : tree etype = range_check_type (TREE_TYPE (captures[1]));
3058 919 : if (etype)
3059 : {
3060 919 : if (wi::neg_p (wi::to_wide (div)))
3061 88 : std::swap (lo, hi);
3062 919 : lo = fold_convert (etype, lo);
3063 919 : hi = fold_convert (etype, hi);
3064 919 : hi = int_const_binop (MINUS_EXPR, hi, lo);
3065 : }
3066 919 : if (etype
3067 : )
3068 : {
3069 919 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail966;
3070 919 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail966;
3071 919 : {
3072 919 : tree res_op0;
3073 919 : {
3074 919 : tree _o1[2], _r1;
3075 919 : {
3076 919 : tree _o2[2], _r2;
3077 919 : {
3078 919 : tree _o3[1], _r3;
3079 919 : _o3[0] = captures[1];
3080 919 : if (TREE_TYPE (_o3[0]) != etype)
3081 : {
3082 919 : _r3 = fold_build1_loc (loc, NOP_EXPR, etype, _o3[0]);
3083 : }
3084 : else
3085 : _r3 = _o3[0];
3086 919 : _o2[0] = _r3;
3087 : }
3088 919 : _o2[1] = lo;
3089 919 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3090 919 : _o1[0] = _r2;
3091 : }
3092 919 : _o1[1] = hi;
3093 919 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3094 919 : res_op0 = _r1;
3095 : }
3096 919 : tree _r;
3097 919 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3098 919 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 760, __FILE__, __LINE__, true);
3099 919 : return _r;
3100 : }
3101 : next_after_fail966:;
3102 : }
3103 : }
3104 : }
3105 : }
3106 : }
3107 : }
3108 : return NULL_TREE;
3109 : }
3110 :
3111 : tree
3112 0 : generic_simplify_596 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3113 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3114 : {
3115 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3116 0 : if (canonicalize_math_after_vectorization_p ()
3117 : )
3118 : {
3119 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1006;
3120 : {
3121 : tree res_op0;
3122 : res_op0 = captures[0];
3123 : tree res_op1;
3124 : res_op1 = captures[1];
3125 : tree res_op2;
3126 : res_op2 = captures[2];
3127 : tree _r;
3128 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3129 : if (!_r)
3130 : goto next_after_fail1006;
3131 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
3132 : return _r;
3133 : }
3134 0 : next_after_fail1006:;
3135 : }
3136 0 : return NULL_TREE;
3137 : }
3138 :
3139 : tree
3140 0 : generic_simplify_605 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3141 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3142 : {
3143 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3144 0 : if (canonicalize_math_after_vectorization_p ()
3145 : )
3146 : {
3147 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1015;
3148 : {
3149 : tree res_op0;
3150 : res_op0 = captures[0];
3151 : tree res_op1;
3152 : res_op1 = captures[1];
3153 : tree res_op2;
3154 : res_op2 = captures[2];
3155 : tree res_op3;
3156 : res_op3 = captures[3];
3157 : tree res_op4;
3158 : res_op4 = captures[4];
3159 : tree _r;
3160 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3161 : if (!_r)
3162 : goto next_after_fail1015;
3163 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
3164 : return _r;
3165 : }
3166 0 : next_after_fail1015:;
3167 : }
3168 0 : return NULL_TREE;
3169 : }
3170 :
3171 : tree
3172 0 : generic_simplify_616 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3173 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3174 : const combined_fn ARG_UNUSED (PARITY))
3175 : {
3176 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3177 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1027;
3178 0 : {
3179 0 : tree res_op0;
3180 0 : res_op0 = captures[0];
3181 0 : tree _r;
3182 0 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
3183 0 : if (!_r)
3184 0 : goto next_after_fail1027;
3185 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 816, __FILE__, __LINE__, true);
3186 : return _r;
3187 : }
3188 : next_after_fail1027:;
3189 : return NULL_TREE;
3190 : }
3191 :
3192 : tree
3193 0 : generic_simplify_620 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3194 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3195 : const enum tree_code ARG_UNUSED (rot),
3196 : const combined_fn ARG_UNUSED (parity))
3197 : {
3198 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3199 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3200 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3201 0 : && (
3202 :
3203 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3204 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3205 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3206 : )
3207 : {
3208 0 : {
3209 0 : tree type0 = TREE_TYPE (captures[0]);
3210 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1031;
3211 0 : {
3212 0 : tree res_op0;
3213 0 : {
3214 0 : tree _o1[1], _r1;
3215 0 : _o1[0] = captures[2];
3216 0 : if (TREE_TYPE (_o1[0]) != type0)
3217 : {
3218 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3219 : }
3220 : else
3221 : _r1 = _o1[0];
3222 0 : res_op0 = _r1;
3223 : }
3224 0 : tree _r;
3225 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3226 0 : if (!_r)
3227 0 : goto next_after_fail1031;
3228 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3229 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3230 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
3231 0 : return _r;
3232 : }
3233 : next_after_fail1031:;
3234 : }
3235 : }
3236 : return NULL_TREE;
3237 : }
3238 :
3239 : tree
3240 470802013 : generic_simplify_VIEW_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3241 : {
3242 470802013 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3243 470802013 : {
3244 470802013 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3245 941604026 : if ((
3246 :
3247 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3248 : || (
3249 : 1
3250 470802013 : && type == TREE_TYPE (captures[0]))
3251 : )
3252 : {
3253 208229980 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1092;
3254 208229980 : {
3255 208229980 : tree _r;
3256 208229980 : _r = captures[0];
3257 208229980 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 834, __FILE__, __LINE__, true);
3258 208229980 : return _r;
3259 : }
3260 0 : next_after_fail1092:;
3261 : }
3262 : }
3263 262572033 : switch (TREE_CODE (_p0))
3264 : {
3265 28889136 : case VIEW_CONVERT_EXPR:
3266 28889136 : {
3267 28889136 : tree _q20 = TREE_OPERAND (_p0, 0);
3268 28889136 : {
3269 28889136 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3270 28889136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1093;
3271 28889136 : {
3272 28889136 : tree res_op0;
3273 28889136 : res_op0 = captures[0];
3274 28889136 : tree _r;
3275 28889136 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3276 28889136 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 868, __FILE__, __LINE__, true);
3277 470802013 : return _r;
3278 : }
3279 0 : next_after_fail1093:;
3280 : }
3281 0 : break;
3282 : }
3283 0 : case BIT_FIELD_REF:
3284 0 : {
3285 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3286 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3287 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3288 0 : {
3289 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3290 0 : if (is_gimple_reg_type (type)
3291 0 : && (!INTEGRAL_TYPE_P (type)
3292 0 : || type_has_mode_precision_p (type))
3293 0 : && (!INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3294 0 : || type_has_mode_precision_p (TREE_TYPE (captures[0])))
3295 : )
3296 : {
3297 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1094;
3298 0 : {
3299 0 : tree res_op0;
3300 0 : res_op0 = captures[1];
3301 0 : tree res_op1;
3302 0 : res_op1 = captures[2];
3303 0 : tree res_op2;
3304 0 : res_op2 = captures[3];
3305 0 : tree _r;
3306 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
3307 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 869, __FILE__, __LINE__, true);
3308 0 : return _r;
3309 : }
3310 0 : next_after_fail1094:;
3311 : }
3312 : }
3313 0 : break;
3314 : }
3315 233682897 : default:;
3316 : }
3317 233682897 : {
3318 233682897 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3319 231875954 : if ((INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
3320 3239644 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3321 236644751 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3322 : )
3323 : {
3324 2608338 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1095;
3325 2608338 : {
3326 2608338 : tree res_op0;
3327 2608338 : res_op0 = captures[0];
3328 2608338 : tree _r;
3329 2608338 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3330 2608338 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 870, __FILE__, __LINE__, true);
3331 2608338 : return _r;
3332 : }
3333 0 : next_after_fail1095:;
3334 : }
3335 : }
3336 231074559 : switch (TREE_CODE (_p0))
3337 : {
3338 3427 : CASE_CONVERT:
3339 3427 : {
3340 3427 : tree _q20 = TREE_OPERAND (_p0, 0);
3341 3427 : {
3342 3427 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3343 3427 : {
3344 3427 : bool extended_bitint = false;
3345 3427 : if (BITINT_TYPE_P (TREE_TYPE (captures[0])))
3346 : {
3347 0 : struct bitint_info info;
3348 0 : extended_bitint
3349 0 : = targetm.c.bitint_type_info (TYPE_PRECISION (TREE_TYPE (captures[0])),
3350 : &info);
3351 0 : extended_bitint = extended_bitint && info.extended;
3352 : }
3353 6854 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3354 71 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) || POINTER_TYPE_P (TREE_TYPE (captures[1])))
3355 71 : && !extended_bitint
3356 71 : && TYPE_SIZE (TREE_TYPE (captures[0])) == TYPE_SIZE (TREE_TYPE (captures[1]))
3357 3427 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))
3358 0 : || (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
3359 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
3360 : )
3361 : {
3362 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
3363 0 : {
3364 0 : tree res_op0;
3365 0 : res_op0 = captures[1];
3366 0 : tree _r;
3367 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3368 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 871, __FILE__, __LINE__, true);
3369 0 : return _r;
3370 : }
3371 0 : next_after_fail1096:;
3372 : }
3373 : }
3374 : }
3375 3427 : break;
3376 : }
3377 83597 : case CONSTRUCTOR:
3378 83597 : {
3379 83597 : {
3380 83597 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3381 83597 : {
3382 83597 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3383 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3384 83597 : if (CONSTRUCTOR_NELTS (ctor) == 0
3385 : )
3386 : {
3387 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1097;
3388 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1097;
3389 6 : {
3390 6 : tree _r;
3391 6 : _r = build_zero_cst (type);
3392 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
3393 6 : return _r;
3394 : }
3395 : next_after_fail1097:;
3396 : }
3397 : else
3398 : {
3399 83591 : if (CONSTRUCTOR_NELTS (ctor) == 1
3400 40 : && VECTOR_TYPE_P (TREE_TYPE (ctor))
3401 83626 : && operand_equal_p (TYPE_SIZE (type),
3402 35 : TYPE_SIZE (TREE_TYPE
3403 : (CONSTRUCTOR_ELT (ctor, 0)->value)))
3404 : )
3405 : {
3406 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1098;
3407 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1098;
3408 0 : {
3409 0 : tree res_op0;
3410 0 : res_op0 = CONSTRUCTOR_ELT (ctor, 0)->value;
3411 0 : tree _r;
3412 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3413 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 873, __FILE__, __LINE__, true);
3414 0 : return _r;
3415 : }
3416 : next_after_fail1098:;
3417 : }
3418 : }
3419 : }
3420 : }
3421 : break;
3422 : }
3423 289511 : case VEC_COND_EXPR:
3424 289511 : {
3425 289511 : tree _q20 = TREE_OPERAND (_p0, 0);
3426 289511 : tree _q21 = TREE_OPERAND (_p0, 1);
3427 289511 : tree _q22 = TREE_OPERAND (_p0, 2);
3428 289511 : {
3429 289511 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3430 289462 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[2]))
3431 289868 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
3432 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[2])))
3433 42087 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[2])))
3434 331241 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
3435 347 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
3436 : )
3437 : {
3438 41730 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1099;
3439 41730 : {
3440 41730 : tree res_op0;
3441 41730 : res_op0 = captures[1];
3442 41730 : tree res_op1;
3443 41730 : {
3444 41730 : tree _o1[1], _r1;
3445 41730 : _o1[0] = captures[2];
3446 41730 : if (TREE_TYPE (_o1[0]) != type)
3447 : {
3448 41730 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3449 41730 : if (EXPR_P (_r1))
3450 82 : goto next_after_fail1099;
3451 : }
3452 : else
3453 : _r1 = _o1[0];
3454 41648 : res_op1 = _r1;
3455 : }
3456 41648 : tree res_op2;
3457 41648 : {
3458 41648 : tree _o1[1], _r1;
3459 41648 : _o1[0] = captures[3];
3460 41648 : if (TREE_TYPE (_o1[0]) != type)
3461 : {
3462 41648 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3463 41648 : if (EXPR_P (_r1))
3464 0 : goto next_after_fail1099;
3465 : }
3466 : else
3467 : _r1 = _o1[0];
3468 41648 : res_op2 = _r1;
3469 : }
3470 41648 : tree _r;
3471 41648 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3472 41648 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 874, __FILE__, __LINE__, true);
3473 41648 : return _r;
3474 : }
3475 247863 : next_after_fail1099:;
3476 : }
3477 : }
3478 247863 : break;
3479 : }
3480 : default:;
3481 : }
3482 : return NULL_TREE;
3483 : }
3484 :
3485 : tree
3486 1567580795 : generic_simplify (location_t loc, enum tree_code code, const tree type ATTRIBUTE_UNUSED, tree _p0)
3487 : {
3488 1567580795 : switch (code)
3489 : {
3490 2141781 : case ABS_EXPR:
3491 2141781 : return generic_simplify_ABS_EXPR (loc, code, type, _p0);
3492 714288288 : CASE_CONVERT:
3493 714288288 : return generic_simplify_CONVERT_EXPR (loc, code, type, _p0);
3494 2770267 : case BIT_NOT_EXPR:
3495 2770267 : return generic_simplify_BIT_NOT_EXPR (loc, code, type, _p0);
3496 942 : case ABSU_EXPR:
3497 942 : return generic_simplify_ABSU_EXPR (loc, code, type, _p0);
3498 4196002 : case NEGATE_EXPR:
3499 4196002 : return generic_simplify_NEGATE_EXPR (loc, code, type, _p0);
3500 470802013 : case VIEW_CONVERT_EXPR:
3501 470802013 : return generic_simplify_VIEW_CONVERT_EXPR (loc, code, type, _p0);
3502 6409896 : case FLOAT_EXPR:
3503 6409896 : return generic_simplify_FLOAT_EXPR (loc, code, type, _p0);
3504 498723 : case FIX_TRUNC_EXPR:
3505 498723 : return generic_simplify_FIX_TRUNC_EXPR (loc, code, type, _p0);
3506 3678 : case PAREN_EXPR:
3507 3678 : return generic_simplify_PAREN_EXPR (loc, code, type, _p0);
3508 1654530 : case REALPART_EXPR:
3509 1654530 : return generic_simplify_REALPART_EXPR (loc, code, type, _p0);
3510 1918374 : case IMAGPART_EXPR:
3511 1918374 : return generic_simplify_IMAGPART_EXPR (loc, code, type, _p0);
3512 1330 : case CONJ_EXPR:
3513 1330 : return generic_simplify_CONJ_EXPR (loc, code, type, _p0);
3514 : default:;
3515 : }
3516 : return NULL_TREE;
3517 : }
3518 :
3519 : tree
3520 49580352 : generic_simplify_POINTER_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3521 : {
3522 49580352 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3523 49580352 : if (integer_zerop (_p1))
3524 : {
3525 2329887 : {
3526 2329887 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3527 2329887 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1256;
3528 2329887 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1256;
3529 2329887 : {
3530 2329887 : tree res_op0;
3531 2329887 : res_op0 = captures[0];
3532 2329887 : tree _r;
3533 2329887 : _r = non_lvalue_loc (loc, res_op0);
3534 2329887 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3535 2329887 : return _r;
3536 : }
3537 : next_after_fail1256:;
3538 : }
3539 : }
3540 47250465 : switch (TREE_CODE (_p0))
3541 : {
3542 3739049 : case POINTER_PLUS_EXPR:
3543 3739049 : {
3544 3739049 : tree _q20 = TREE_OPERAND (_p0, 0);
3545 3739049 : tree _q21 = TREE_OPERAND (_p0, 1);
3546 3739049 : {
3547 3739049 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3548 3739049 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1257;
3549 3739049 : {
3550 3739049 : tree res_op0;
3551 3739049 : res_op0 = captures[1];
3552 3739049 : tree res_op1;
3553 3739049 : {
3554 3739049 : tree _o1[2], _r1;
3555 3739049 : _o1[0] = captures[2];
3556 3739049 : _o1[1] = captures[3];
3557 3739049 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3558 3739049 : res_op1 = _r1;
3559 : }
3560 3739049 : tree _r;
3561 3739049 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3562 3739049 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
3563 3739049 : return _r;
3564 : }
3565 0 : next_after_fail1257:;
3566 : }
3567 0 : break;
3568 : }
3569 20331370 : CASE_CONVERT:
3570 20331370 : {
3571 20331370 : tree _q20 = TREE_OPERAND (_p0, 0);
3572 20331370 : switch (TREE_CODE (_q20))
3573 : {
3574 27513 : case POINTER_PLUS_EXPR:
3575 27513 : {
3576 27513 : tree _q30 = TREE_OPERAND (_q20, 0);
3577 27513 : tree _q31 = TREE_OPERAND (_q20, 1);
3578 27513 : {
3579 27513 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
3580 27513 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1258;
3581 27513 : {
3582 27513 : tree res_op0;
3583 27513 : {
3584 27513 : tree _o1[1], _r1;
3585 27513 : _o1[0] = captures[2];
3586 27513 : if (TREE_TYPE (_o1[0]) != type)
3587 : {
3588 27405 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3589 : }
3590 : else
3591 : _r1 = _o1[0];
3592 27513 : res_op0 = _r1;
3593 : }
3594 27513 : tree res_op1;
3595 27513 : {
3596 27513 : tree _o1[2], _r1;
3597 27513 : _o1[0] = captures[3];
3598 27513 : _o1[1] = captures[4];
3599 27513 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3600 27513 : res_op1 = _r1;
3601 : }
3602 27513 : tree _r;
3603 27513 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3604 27513 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 903, __FILE__, __LINE__, true);
3605 27513 : return _r;
3606 : }
3607 0 : next_after_fail1258:;
3608 : }
3609 0 : break;
3610 : }
3611 : default:;
3612 : }
3613 : break;
3614 : }
3615 43483903 : default:;
3616 : }
3617 43483903 : if (integer_zerop (_p0))
3618 : {
3619 646 : {
3620 646 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
3621 646 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1259;
3622 646 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1259;
3623 646 : {
3624 646 : tree res_op0;
3625 646 : {
3626 646 : tree _o1[1], _r1;
3627 646 : _o1[0] = captures[0];
3628 646 : if (TREE_TYPE (_o1[0]) != type)
3629 : {
3630 646 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3631 : }
3632 : else
3633 : _r1 = _o1[0];
3634 646 : res_op0 = _r1;
3635 : }
3636 646 : tree _r;
3637 646 : _r = non_lvalue_loc (loc, res_op0);
3638 646 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 904, __FILE__, __LINE__, true);
3639 646 : return _r;
3640 : }
3641 : next_after_fail1259:;
3642 : }
3643 : }
3644 43483257 : switch (TREE_CODE (_p1))
3645 : {
3646 8998061 : CASE_CONVERT:
3647 8998061 : {
3648 8998061 : tree _q30 = TREE_OPERAND (_p1, 0);
3649 8998061 : switch (TREE_CODE (_q30))
3650 : {
3651 197883 : case MINUS_EXPR:
3652 197883 : {
3653 197883 : tree _q40 = TREE_OPERAND (_q30, 0);
3654 197883 : tree _q41 = TREE_OPERAND (_q30, 1);
3655 197883 : switch (TREE_CODE (_q40))
3656 : {
3657 91076 : CASE_CONVERT:
3658 91076 : {
3659 91076 : tree _q50 = TREE_OPERAND (_q40, 0);
3660 91076 : switch (TREE_CODE (_q41))
3661 : {
3662 7031 : CASE_CONVERT:
3663 7031 : {
3664 7031 : tree _q70 = TREE_OPERAND (_q41, 0);
3665 7031 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3666 : {
3667 4261 : {
3668 4261 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q50 };
3669 4261 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3670 4261 : && ((
3671 :
3672 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3673 : || (
3674 : 1
3675 4261 : && type == TREE_TYPE (captures[3])))
3676 : )
3677 : {
3678 2723 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1260;
3679 2723 : {
3680 2723 : tree _r;
3681 2723 : _r = captures[3];
3682 2723 : if (TREE_SIDE_EFFECTS (captures[0]))
3683 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3684 2723 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
3685 2723 : return _r;
3686 : }
3687 0 : next_after_fail1260:;
3688 : }
3689 : }
3690 : }
3691 : break;
3692 : }
3693 : default:;
3694 : }
3695 : break;
3696 : }
3697 : default:;
3698 : }
3699 : break;
3700 : }
3701 568 : case POINTER_DIFF_EXPR:
3702 568 : {
3703 568 : tree _q40 = TREE_OPERAND (_q30, 0);
3704 568 : tree _q41 = TREE_OPERAND (_q30, 1);
3705 568 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
3706 : {
3707 7 : {
3708 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
3709 7 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3710 : )
3711 : {
3712 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1261;
3713 7 : {
3714 7 : tree res_op0;
3715 7 : res_op0 = captures[3];
3716 7 : tree _r;
3717 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3718 7 : if (TREE_SIDE_EFFECTS (captures[4]))
3719 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3720 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
3721 7 : return _r;
3722 : }
3723 0 : next_after_fail1261:;
3724 : }
3725 : }
3726 : }
3727 : break;
3728 : }
3729 : default:;
3730 : }
3731 : break;
3732 : }
3733 28516 : case MINUS_EXPR:
3734 28516 : {
3735 28516 : tree _q30 = TREE_OPERAND (_p1, 0);
3736 28516 : tree _q31 = TREE_OPERAND (_p1, 1);
3737 28516 : switch (TREE_CODE (_q30))
3738 : {
3739 24290 : CASE_CONVERT:
3740 24290 : {
3741 24290 : tree _q40 = TREE_OPERAND (_q30, 0);
3742 24290 : switch (TREE_CODE (_q31))
3743 : {
3744 7504 : CASE_CONVERT:
3745 7504 : {
3746 7504 : tree _q60 = TREE_OPERAND (_q31, 0);
3747 7504 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3748 : {
3749 20 : {
3750 20 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p1, _q40 };
3751 20 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3752 20 : && ((
3753 :
3754 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3755 : || (
3756 : 1
3757 20 : && type == TREE_TYPE (captures[3])))
3758 : )
3759 : {
3760 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1262;
3761 0 : {
3762 0 : tree _r;
3763 0 : _r = captures[3];
3764 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3765 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3766 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
3767 0 : return _r;
3768 : }
3769 0 : next_after_fail1262:;
3770 : }
3771 : }
3772 : }
3773 : break;
3774 : }
3775 : default:;
3776 : }
3777 : break;
3778 : }
3779 977 : case INTEGER_CST:
3780 977 : {
3781 977 : switch (TREE_CODE (_q31))
3782 : {
3783 16 : case BIT_AND_EXPR:
3784 16 : {
3785 16 : tree _q50 = TREE_OPERAND (_q31, 0);
3786 16 : tree _q51 = TREE_OPERAND (_q31, 1);
3787 16 : switch (TREE_CODE (_q50))
3788 : {
3789 16 : CASE_CONVERT:
3790 16 : {
3791 16 : tree _q60 = TREE_OPERAND (_q50, 0);
3792 16 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3793 : {
3794 0 : switch (TREE_CODE (_q51))
3795 : {
3796 0 : case INTEGER_CST:
3797 0 : {
3798 0 : {
3799 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q51 };
3800 0 : if (tree_int_cst_min_precision (captures[3], UNSIGNED) <= tree_ctz (captures[2])
3801 : )
3802 : {
3803 0 : {
3804 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[3]));
3805 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1263;
3806 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1263;
3807 0 : {
3808 0 : tree res_op0;
3809 0 : {
3810 0 : tree _o1[2], _r1;
3811 0 : _o1[0] = captures[0];
3812 0 : _o1[1] = algn;
3813 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3814 0 : res_op0 = _r1;
3815 : }
3816 0 : tree res_op1;
3817 0 : res_op1 = captures[2];
3818 0 : tree _r;
3819 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3820 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
3821 0 : return _r;
3822 : }
3823 0 : next_after_fail1263:;
3824 : }
3825 : }
3826 : }
3827 0 : break;
3828 : }
3829 : default:;
3830 : }
3831 : }
3832 16 : switch (TREE_CODE (_q60))
3833 : {
3834 0 : case POINTER_PLUS_EXPR:
3835 0 : {
3836 0 : tree _q70 = TREE_OPERAND (_q60, 0);
3837 0 : tree _q71 = TREE_OPERAND (_q60, 1);
3838 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3839 : {
3840 0 : switch (TREE_CODE (_q71))
3841 : {
3842 0 : case INTEGER_CST:
3843 0 : {
3844 0 : switch (TREE_CODE (_q51))
3845 : {
3846 0 : case INTEGER_CST:
3847 0 : {
3848 0 : {
3849 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q71, _q51 };
3850 0 : {
3851 0 : auto mask_width = tree_int_cst_min_precision (captures[4], UNSIGNED);
3852 0 : if (mask_width <= tree_ctz (captures[2]) && mask_width <= tree_ctz (captures[3])
3853 : )
3854 : {
3855 0 : {
3856 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[4]));
3857 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1264;
3858 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1264;
3859 0 : {
3860 0 : tree res_op0;
3861 0 : {
3862 0 : tree _o1[2], _r1;
3863 0 : _o1[0] = captures[0];
3864 0 : _o1[1] = algn;
3865 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3866 0 : res_op0 = _r1;
3867 : }
3868 0 : tree res_op1;
3869 0 : res_op1 = captures[2];
3870 0 : tree _r;
3871 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3872 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3873 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3874 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
3875 0 : return _r;
3876 : }
3877 0 : next_after_fail1264:;
3878 : }
3879 : }
3880 : }
3881 : }
3882 0 : break;
3883 : }
3884 : default:;
3885 : }
3886 : break;
3887 : }
3888 : default:;
3889 : }
3890 : }
3891 : break;
3892 : }
3893 : default:;
3894 : }
3895 : break;
3896 : }
3897 : default:;
3898 : }
3899 : break;
3900 : }
3901 : default:;
3902 : }
3903 : break;
3904 : }
3905 : default:;
3906 : }
3907 : break;
3908 : }
3909 0 : case POINTER_DIFF_EXPR:
3910 0 : {
3911 0 : tree _q30 = TREE_OPERAND (_p1, 0);
3912 0 : tree _q31 = TREE_OPERAND (_p1, 1);
3913 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
3914 : {
3915 0 : {
3916 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
3917 0 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3918 : )
3919 : {
3920 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1265;
3921 0 : {
3922 0 : tree res_op0;
3923 0 : res_op0 = captures[3];
3924 0 : tree _r;
3925 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3926 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3927 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3928 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
3929 0 : return _r;
3930 : }
3931 0 : next_after_fail1265:;
3932 : }
3933 : }
3934 : }
3935 : break;
3936 : }
3937 343536 : case NEGATE_EXPR:
3938 343536 : {
3939 343536 : tree _q30 = TREE_OPERAND (_p1, 0);
3940 343536 : switch (TREE_CODE (_q30))
3941 : {
3942 22 : case BIT_AND_EXPR:
3943 22 : {
3944 22 : tree _q40 = TREE_OPERAND (_q30, 0);
3945 22 : tree _q41 = TREE_OPERAND (_q30, 1);
3946 22 : switch (TREE_CODE (_q40))
3947 : {
3948 22 : CASE_CONVERT:
3949 22 : {
3950 22 : tree _q50 = TREE_OPERAND (_q40, 0);
3951 22 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
3952 : {
3953 1 : switch (TREE_CODE (_q41))
3954 : {
3955 1 : case INTEGER_CST:
3956 1 : {
3957 1 : {
3958 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
3959 1 : {
3960 1 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1]));
3961 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1266;
3962 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1266;
3963 1 : {
3964 1 : tree res_op0;
3965 1 : res_op0 = captures[0];
3966 1 : tree res_op1;
3967 1 : res_op1 = algn;
3968 1 : tree _r;
3969 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
3970 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 909, __FILE__, __LINE__, true);
3971 1 : return _r;
3972 : }
3973 0 : next_after_fail1266:;
3974 : }
3975 : }
3976 0 : break;
3977 : }
3978 : default:;
3979 : }
3980 : }
3981 21 : switch (TREE_CODE (_q50))
3982 : {
3983 0 : case POINTER_PLUS_EXPR:
3984 0 : {
3985 0 : tree _q60 = TREE_OPERAND (_q50, 0);
3986 0 : tree _q61 = TREE_OPERAND (_q50, 1);
3987 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3988 : {
3989 0 : switch (TREE_CODE (_q61))
3990 : {
3991 0 : case INTEGER_CST:
3992 0 : {
3993 0 : switch (TREE_CODE (_q41))
3994 : {
3995 0 : case INTEGER_CST:
3996 0 : {
3997 0 : {
3998 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q61, _q41 };
3999 0 : if (tree_int_cst_min_precision (captures[2], UNSIGNED) <= tree_ctz (captures[1])
4000 : )
4001 : {
4002 0 : {
4003 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[2]));
4004 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1267;
4005 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1267;
4006 0 : {
4007 0 : tree res_op0;
4008 0 : res_op0 = captures[0];
4009 0 : tree res_op1;
4010 0 : res_op1 = algn;
4011 0 : tree _r;
4012 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4013 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4014 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4015 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
4016 0 : return _r;
4017 : }
4018 0 : next_after_fail1267:;
4019 : }
4020 : }
4021 : }
4022 0 : break;
4023 : }
4024 : default:;
4025 : }
4026 : break;
4027 : }
4028 : default:;
4029 : }
4030 : }
4031 : break;
4032 : }
4033 : default:;
4034 : }
4035 : break;
4036 : }
4037 : default:;
4038 : }
4039 : break;
4040 : }
4041 : default:;
4042 : }
4043 : break;
4044 : }
4045 : default:;
4046 : }
4047 : return NULL_TREE;
4048 : }
4049 :
4050 : tree
4051 36146400 : generic_simplify_NE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4052 : {
4053 36146400 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4054 36146400 : switch (TREE_CODE (_p1))
4055 : {
4056 2247 : case NEGATE_EXPR:
4057 2247 : {
4058 2247 : tree _q30 = TREE_OPERAND (_p1, 0);
4059 2247 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4060 : {
4061 0 : {
4062 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4063 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, NE_EXPR);
4064 0 : if (res) return res;
4065 : }
4066 : }
4067 : break;
4068 : }
4069 36146400 : default:;
4070 : }
4071 36146400 : switch (TREE_CODE (_p0))
4072 : {
4073 6102 : case NEGATE_EXPR:
4074 6102 : {
4075 6102 : tree _q20 = TREE_OPERAND (_p0, 0);
4076 6102 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4077 : {
4078 88 : {
4079 88 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4080 88 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, NE_EXPR);
4081 88 : if (res) return res;
4082 : }
4083 : }
4084 : break;
4085 : }
4086 0 : case CEIL_MOD_EXPR:
4087 0 : {
4088 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4089 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4090 0 : if (integer_pow2p (_q21))
4091 : {
4092 0 : if (integer_zerop (_p1))
4093 : {
4094 0 : {
4095 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4096 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR, CEIL_MOD_EXPR);
4097 0 : if (res) return res;
4098 : }
4099 : }
4100 : }
4101 : break;
4102 : }
4103 1623 : case FLOOR_MOD_EXPR:
4104 1623 : {
4105 1623 : tree _q20 = TREE_OPERAND (_p0, 0);
4106 1623 : tree _q21 = TREE_OPERAND (_p0, 1);
4107 1623 : if (integer_pow2p (_q21))
4108 : {
4109 20 : if (integer_zerop (_p1))
4110 : {
4111 20 : {
4112 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4113 20 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR, FLOOR_MOD_EXPR);
4114 20 : if (res) return res;
4115 : }
4116 : }
4117 : }
4118 : break;
4119 : }
4120 0 : case ROUND_MOD_EXPR:
4121 0 : {
4122 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4123 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4124 0 : if (integer_pow2p (_q21))
4125 : {
4126 0 : if (integer_zerop (_p1))
4127 : {
4128 0 : {
4129 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4130 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR, ROUND_MOD_EXPR);
4131 0 : if (res) return res;
4132 : }
4133 : }
4134 : }
4135 : break;
4136 : }
4137 81134 : case TRUNC_MOD_EXPR:
4138 81134 : {
4139 81134 : tree _q20 = TREE_OPERAND (_p0, 0);
4140 81134 : tree _q21 = TREE_OPERAND (_p0, 1);
4141 81134 : if (integer_pow2p (_q21))
4142 : {
4143 21010 : if (integer_zerop (_p1))
4144 : {
4145 19568 : {
4146 19568 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4147 19568 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR, TRUNC_MOD_EXPR);
4148 19568 : if (res) return res;
4149 : }
4150 : }
4151 : }
4152 : break;
4153 : }
4154 6949957 : CASE_CONVERT:
4155 6949957 : {
4156 6949957 : tree _q20 = TREE_OPERAND (_p0, 0);
4157 6949957 : switch (TREE_CODE (_p1))
4158 : {
4159 69 : case LSHIFT_EXPR:
4160 69 : {
4161 69 : tree _q40 = TREE_OPERAND (_p1, 0);
4162 69 : tree _q41 = TREE_OPERAND (_p1, 1);
4163 69 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4164 : {
4165 0 : {
4166 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4167 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4168 0 : if (res) return res;
4169 : }
4170 : }
4171 : break;
4172 : }
4173 6949957 : default:;
4174 : }
4175 6949957 : {
4176 6949957 : tree _p1_pops[1];
4177 6949957 : if (tree_nop_convert (_p1, _p1_pops))
4178 : {
4179 2993184 : tree _q40 = _p1_pops[0];
4180 2993184 : switch (TREE_CODE (_q40))
4181 : {
4182 0 : case LSHIFT_EXPR:
4183 0 : {
4184 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4185 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4186 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4187 : {
4188 0 : {
4189 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
4190 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4191 0 : if (res) return res;
4192 : }
4193 : }
4194 : break;
4195 : }
4196 : default:;
4197 : }
4198 : }
4199 : }
4200 6949957 : switch (TREE_CODE (_q20))
4201 : {
4202 0 : case EXACT_DIV_EXPR:
4203 0 : {
4204 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4205 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4206 0 : switch (TREE_CODE (_q31))
4207 : {
4208 0 : case INTEGER_CST:
4209 0 : {
4210 0 : switch (TREE_CODE (_p1))
4211 : {
4212 0 : CASE_CONVERT:
4213 0 : {
4214 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4215 0 : switch (TREE_CODE (_q60))
4216 : {
4217 0 : case EXACT_DIV_EXPR:
4218 0 : {
4219 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4220 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4221 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4222 : {
4223 0 : {
4224 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
4225 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
4226 0 : if (res) return res;
4227 : }
4228 : }
4229 : break;
4230 : }
4231 : default:;
4232 : }
4233 : break;
4234 : }
4235 : default:;
4236 : }
4237 : break;
4238 : }
4239 : default:;
4240 : }
4241 : break;
4242 : }
4243 6949957 : default:;
4244 : }
4245 6949957 : switch (TREE_CODE (_p1))
4246 : {
4247 20299 : case PLUS_EXPR:
4248 20299 : {
4249 20299 : tree _q40 = TREE_OPERAND (_p1, 0);
4250 20299 : tree _q41 = TREE_OPERAND (_p1, 1);
4251 20299 : switch (TREE_CODE (_q41))
4252 : {
4253 203 : CASE_CONVERT:
4254 203 : {
4255 203 : tree _q60 = TREE_OPERAND (_q41, 0);
4256 203 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4257 : {
4258 0 : {
4259 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4260 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4261 0 : if (res) return res;
4262 : }
4263 : }
4264 : break;
4265 : }
4266 20299 : default:;
4267 : }
4268 20299 : switch (TREE_CODE (_q40))
4269 : {
4270 800 : CASE_CONVERT:
4271 800 : {
4272 800 : tree _q50 = TREE_OPERAND (_q40, 0);
4273 800 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4274 : {
4275 15 : {
4276 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4277 15 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4278 15 : if (res) return res;
4279 : }
4280 : }
4281 : break;
4282 : }
4283 20292 : default:;
4284 : }
4285 20292 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4286 : {
4287 0 : {
4288 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4289 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4290 0 : if (res) return res;
4291 : }
4292 : }
4293 20292 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4294 : {
4295 0 : {
4296 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4297 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4298 0 : if (res) return res;
4299 : }
4300 : }
4301 : break;
4302 : }
4303 6949950 : default:;
4304 : }
4305 6949950 : {
4306 6949950 : tree _p1_pops[1];
4307 6949950 : if (tree_nop_convert (_p1, _p1_pops))
4308 : {
4309 2993184 : tree _q40 = _p1_pops[0];
4310 2993184 : switch (TREE_CODE (_q40))
4311 : {
4312 144 : case PLUS_EXPR:
4313 144 : {
4314 144 : tree _q50 = TREE_OPERAND (_q40, 0);
4315 144 : tree _q51 = TREE_OPERAND (_q40, 1);
4316 144 : switch (TREE_CODE (_q51))
4317 : {
4318 0 : CASE_CONVERT:
4319 0 : {
4320 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4321 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4322 : {
4323 0 : {
4324 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4325 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4326 0 : if (res) return res;
4327 : }
4328 : }
4329 : break;
4330 : }
4331 144 : default:;
4332 : }
4333 144 : switch (TREE_CODE (_q50))
4334 : {
4335 77 : CASE_CONVERT:
4336 77 : {
4337 77 : tree _q60 = TREE_OPERAND (_q50, 0);
4338 77 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4339 : {
4340 0 : {
4341 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4342 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4343 0 : if (res) return res;
4344 : }
4345 : }
4346 : break;
4347 : }
4348 144 : default:;
4349 : }
4350 144 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4351 : {
4352 0 : {
4353 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4354 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4355 0 : if (res) return res;
4356 : }
4357 : }
4358 144 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4359 : {
4360 0 : {
4361 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4362 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4363 0 : if (res) return res;
4364 : }
4365 : }
4366 : break;
4367 : }
4368 : default:;
4369 : }
4370 : }
4371 : }
4372 6949950 : break;
4373 : }
4374 36126805 : default:;
4375 : }
4376 36126805 : {
4377 36126805 : tree _p0_pops[1];
4378 36126805 : if (tree_nop_convert (_p0, _p0_pops))
4379 : {
4380 4763531 : tree _q20 = _p0_pops[0];
4381 4763531 : switch (TREE_CODE (_q20))
4382 : {
4383 15 : case LSHIFT_EXPR:
4384 15 : {
4385 15 : tree _q30 = TREE_OPERAND (_q20, 0);
4386 15 : tree _q31 = TREE_OPERAND (_q20, 1);
4387 15 : switch (TREE_CODE (_p1))
4388 : {
4389 1 : CASE_CONVERT:
4390 1 : {
4391 1 : tree _q60 = TREE_OPERAND (_p1, 0);
4392 1 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4393 : {
4394 0 : {
4395 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4396 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4397 0 : if (res) return res;
4398 : }
4399 : }
4400 : break;
4401 : }
4402 15 : default:;
4403 : }
4404 15 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4405 : {
4406 1 : {
4407 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4408 1 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4409 1 : if (res) return res;
4410 : }
4411 : }
4412 : break;
4413 : }
4414 32397 : case PLUS_EXPR:
4415 32397 : {
4416 32397 : tree _q30 = TREE_OPERAND (_q20, 0);
4417 32397 : tree _q31 = TREE_OPERAND (_q20, 1);
4418 32397 : switch (TREE_CODE (_q31))
4419 : {
4420 37 : CASE_CONVERT:
4421 37 : {
4422 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4423 37 : switch (TREE_CODE (_p1))
4424 : {
4425 0 : CASE_CONVERT:
4426 0 : {
4427 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4428 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
4429 : {
4430 0 : {
4431 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4432 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4433 0 : if (res) return res;
4434 : }
4435 : }
4436 : break;
4437 : }
4438 : default:;
4439 : }
4440 : break;
4441 : }
4442 32397 : default:;
4443 : }
4444 32397 : switch (TREE_CODE (_q30))
4445 : {
4446 26914 : CASE_CONVERT:
4447 26914 : {
4448 26914 : tree _q40 = TREE_OPERAND (_q30, 0);
4449 26914 : switch (TREE_CODE (_p1))
4450 : {
4451 426 : CASE_CONVERT:
4452 426 : {
4453 426 : tree _q70 = TREE_OPERAND (_p1, 0);
4454 426 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4455 : {
4456 90 : {
4457 90 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4458 90 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4459 90 : if (res) return res;
4460 : }
4461 : }
4462 : break;
4463 : }
4464 26824 : default:;
4465 : }
4466 26824 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4467 : {
4468 11 : {
4469 11 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4470 11 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4471 11 : if (res) return res;
4472 : }
4473 : }
4474 : break;
4475 : }
4476 32296 : default:;
4477 : }
4478 32296 : switch (TREE_CODE (_q31))
4479 : {
4480 37 : CASE_CONVERT:
4481 37 : {
4482 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4483 37 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4484 : {
4485 0 : {
4486 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4487 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4488 0 : if (res) return res;
4489 : }
4490 : }
4491 : break;
4492 : }
4493 32296 : default:;
4494 : }
4495 32296 : switch (TREE_CODE (_p1))
4496 : {
4497 411 : CASE_CONVERT:
4498 411 : {
4499 411 : tree _q60 = TREE_OPERAND (_p1, 0);
4500 411 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4501 : {
4502 0 : {
4503 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4504 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4505 0 : if (res) return res;
4506 : }
4507 : }
4508 411 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4509 : {
4510 68 : {
4511 68 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4512 68 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4513 68 : if (res) return res;
4514 : }
4515 : }
4516 : break;
4517 : }
4518 32228 : default:;
4519 : }
4520 32228 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4521 : {
4522 0 : {
4523 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4524 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4525 0 : if (res) return res;
4526 : }
4527 : }
4528 32228 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4529 : {
4530 0 : {
4531 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4532 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4533 0 : if (res) return res;
4534 : }
4535 : }
4536 : break;
4537 : }
4538 : default:;
4539 : }
4540 : }
4541 : }
4542 36126635 : {
4543 36126635 : tree _p1_pops[1];
4544 36126635 : if (tree_nop_convert (_p1, _p1_pops))
4545 : {
4546 3359580 : tree _q30 = _p1_pops[0];
4547 3359580 : switch (TREE_CODE (_q30))
4548 : {
4549 0 : case LSHIFT_EXPR:
4550 0 : {
4551 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4552 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4553 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
4554 : {
4555 0 : {
4556 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
4557 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4558 0 : if (res) return res;
4559 : }
4560 : }
4561 : break;
4562 : }
4563 : default:;
4564 : }
4565 : }
4566 : }
4567 36126635 : switch (TREE_CODE (_p0))
4568 : {
4569 5171 : case LSHIFT_EXPR:
4570 5171 : {
4571 5171 : tree _q20 = TREE_OPERAND (_p0, 0);
4572 5171 : tree _q21 = TREE_OPERAND (_p0, 1);
4573 5171 : switch (TREE_CODE (_p1))
4574 : {
4575 35 : CASE_CONVERT:
4576 35 : {
4577 35 : tree _q50 = TREE_OPERAND (_p1, 0);
4578 35 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4579 : {
4580 4 : {
4581 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4582 4 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4583 4 : if (res) return res;
4584 : }
4585 : }
4586 : break;
4587 : }
4588 5170 : default:;
4589 : }
4590 5170 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4591 : {
4592 27 : {
4593 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4594 27 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4595 27 : if (res) return res;
4596 : }
4597 : }
4598 5166 : if (tree_zero_one_valued_p (_q20))
4599 : {
4600 476 : switch (TREE_CODE (_q21))
4601 : {
4602 116 : case INTEGER_CST:
4603 116 : {
4604 116 : if (integer_zerop (_p1))
4605 : {
4606 5 : {
4607 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4608 5 : if (tree_fits_shwi_p (captures[1])
4609 5 : && tree_to_shwi (captures[1]) > 0
4610 10 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
4611 : )
4612 : {
4613 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1520;
4614 5 : {
4615 5 : tree res_op0;
4616 5 : res_op0 = captures[0];
4617 5 : tree _r;
4618 5 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4619 5 : if (TREE_SIDE_EFFECTS (captures[1]))
4620 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4621 5 : if (TREE_SIDE_EFFECTS (captures[2]))
4622 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4623 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
4624 5 : return _r;
4625 : }
4626 0 : next_after_fail1520:;
4627 : }
4628 : }
4629 : }
4630 : break;
4631 : }
4632 : default:;
4633 : }
4634 : }
4635 : break;
4636 : }
4637 36126625 : default:;
4638 : }
4639 36126625 : switch (TREE_CODE (_p1))
4640 : {
4641 267 : case LSHIFT_EXPR:
4642 267 : {
4643 267 : tree _q30 = TREE_OPERAND (_p1, 0);
4644 267 : tree _q31 = TREE_OPERAND (_p1, 1);
4645 267 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4646 : {
4647 0 : {
4648 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
4649 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
4650 0 : if (res) return res;
4651 : }
4652 : }
4653 : break;
4654 : }
4655 36126625 : default:;
4656 : }
4657 36126625 : switch (TREE_CODE (_p0))
4658 : {
4659 155 : case VIEW_CONVERT_EXPR:
4660 155 : {
4661 155 : tree _q20 = TREE_OPERAND (_p0, 0);
4662 155 : if (tree_zero_one_valued_p (_q20))
4663 : {
4664 0 : if (integer_zerop (_p1))
4665 : {
4666 0 : {
4667 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4668 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4669 0 : if (res) return res;
4670 : }
4671 : }
4672 : }
4673 : break;
4674 : }
4675 20461 : case RSHIFT_EXPR:
4676 20461 : {
4677 20461 : tree _q20 = TREE_OPERAND (_p0, 0);
4678 20461 : tree _q21 = TREE_OPERAND (_p0, 1);
4679 20461 : switch (TREE_CODE (_q21))
4680 : {
4681 18143 : case INTEGER_CST:
4682 18143 : {
4683 18143 : switch (TREE_CODE (_p1))
4684 : {
4685 210 : case RSHIFT_EXPR:
4686 210 : {
4687 210 : tree _q50 = TREE_OPERAND (_p1, 0);
4688 210 : tree _q51 = TREE_OPERAND (_p1, 1);
4689 210 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4690 : {
4691 15 : switch (TREE_CODE (_q51))
4692 : {
4693 15 : case INTEGER_CST:
4694 15 : {
4695 15 : {
4696 15 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4697 15 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
4698 15 : if (res) return res;
4699 : }
4700 3 : break;
4701 : }
4702 : default:;
4703 : }
4704 : }
4705 : break;
4706 : }
4707 18131 : default:;
4708 : }
4709 18131 : if (integer_zerop (_p1))
4710 : {
4711 7623 : {
4712 7623 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4713 7623 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
4714 7623 : if (res) return res;
4715 : }
4716 : }
4717 : break;
4718 : }
4719 : default:;
4720 : }
4721 : break;
4722 : }
4723 93753 : case MULT_EXPR:
4724 93753 : {
4725 93753 : tree _q20 = TREE_OPERAND (_p0, 0);
4726 93753 : tree _q21 = TREE_OPERAND (_p0, 1);
4727 93753 : switch (TREE_CODE (_p1))
4728 : {
4729 2857 : case MULT_EXPR:
4730 2857 : {
4731 2857 : tree _q50 = TREE_OPERAND (_p1, 0);
4732 2857 : tree _q51 = TREE_OPERAND (_p1, 1);
4733 2857 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4734 : {
4735 1599 : {
4736 1599 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4737 1599 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4738 1599 : if (res) return res;
4739 : }
4740 : }
4741 2853 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4742 : {
4743 53 : {
4744 53 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4745 53 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4746 53 : if (res) return res;
4747 : }
4748 : }
4749 2853 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4750 : {
4751 22 : {
4752 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4753 22 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4754 22 : if (res) return res;
4755 : }
4756 : }
4757 2853 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4758 : {
4759 257 : {
4760 257 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4761 257 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4762 257 : if (res) return res;
4763 : }
4764 : }
4765 : break;
4766 : }
4767 93749 : default:;
4768 : }
4769 93749 : switch (TREE_CODE (_q21))
4770 : {
4771 76280 : case INTEGER_CST:
4772 76280 : {
4773 76280 : switch (TREE_CODE (_p1))
4774 : {
4775 1998 : case MULT_EXPR:
4776 1998 : {
4777 1998 : tree _q50 = TREE_OPERAND (_p1, 0);
4778 1998 : tree _q51 = TREE_OPERAND (_p1, 1);
4779 1998 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4780 : {
4781 1070 : {
4782 1070 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4783 1070 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
4784 1070 : if (res) return res;
4785 : }
4786 : }
4787 : break;
4788 : }
4789 : default:;
4790 : }
4791 : break;
4792 : }
4793 : default:;
4794 : }
4795 : break;
4796 : }
4797 2057 : case EXACT_DIV_EXPR:
4798 2057 : {
4799 2057 : tree _q20 = TREE_OPERAND (_p0, 0);
4800 2057 : tree _q21 = TREE_OPERAND (_p0, 1);
4801 2057 : switch (TREE_CODE (_q21))
4802 : {
4803 2057 : case INTEGER_CST:
4804 2057 : {
4805 2057 : switch (TREE_CODE (_p1))
4806 : {
4807 22 : case EXACT_DIV_EXPR:
4808 22 : {
4809 22 : tree _q50 = TREE_OPERAND (_p1, 0);
4810 22 : tree _q51 = TREE_OPERAND (_p1, 1);
4811 22 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4812 : {
4813 12 : {
4814 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
4815 12 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
4816 12 : if (res) return res;
4817 : }
4818 : }
4819 : break;
4820 : }
4821 : default:;
4822 : }
4823 : break;
4824 : }
4825 : default:;
4826 : }
4827 : break;
4828 : }
4829 11328 : case TRUNC_DIV_EXPR:
4830 11328 : {
4831 11328 : tree _q20 = TREE_OPERAND (_p0, 0);
4832 11328 : tree _q21 = TREE_OPERAND (_p0, 1);
4833 11328 : switch (TREE_CODE (_q21))
4834 : {
4835 8594 : case INTEGER_CST:
4836 8594 : {
4837 8594 : switch (TREE_CODE (_p1))
4838 : {
4839 2440 : case INTEGER_CST:
4840 2440 : {
4841 2440 : {
4842 2440 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4843 2440 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, NE_EXPR);
4844 2440 : if (res) return res;
4845 : }
4846 325 : break;
4847 : }
4848 : default:;
4849 : }
4850 : break;
4851 : }
4852 : default:;
4853 : }
4854 : break;
4855 : }
4856 1518424 : case PLUS_EXPR:
4857 1518424 : {
4858 1518424 : tree _q20 = TREE_OPERAND (_p0, 0);
4859 1518424 : tree _q21 = TREE_OPERAND (_p0, 1);
4860 1518424 : switch (TREE_CODE (_p1))
4861 : {
4862 188833 : case PLUS_EXPR:
4863 188833 : {
4864 188833 : tree _q50 = TREE_OPERAND (_p1, 0);
4865 188833 : tree _q51 = TREE_OPERAND (_p1, 1);
4866 188833 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4867 : {
4868 963 : {
4869 963 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4870 1926 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4871 1895 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4872 849 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4873 : )
4874 : {
4875 932 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1521;
4876 932 : {
4877 932 : tree res_op0;
4878 932 : res_op0 = captures[0];
4879 932 : tree res_op1;
4880 932 : res_op1 = captures[2];
4881 932 : tree _r;
4882 932 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4883 932 : if (TREE_SIDE_EFFECTS (captures[1]))
4884 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4885 932 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 925, __FILE__, __LINE__, true);
4886 932 : return _r;
4887 : }
4888 0 : next_after_fail1521:;
4889 : }
4890 : }
4891 : }
4892 187901 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4893 : {
4894 0 : {
4895 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4896 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4897 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4898 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4899 : )
4900 : {
4901 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1522;
4902 0 : {
4903 0 : tree res_op0;
4904 0 : res_op0 = captures[0];
4905 0 : tree res_op1;
4906 0 : res_op1 = captures[2];
4907 0 : tree _r;
4908 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4909 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4910 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4911 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 925, __FILE__, __LINE__, true);
4912 0 : return _r;
4913 : }
4914 0 : next_after_fail1522:;
4915 : }
4916 : }
4917 : }
4918 187901 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4919 : {
4920 94 : {
4921 94 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4922 188 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4923 188 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4924 94 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4925 : )
4926 : {
4927 94 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1523;
4928 94 : {
4929 94 : tree res_op0;
4930 94 : res_op0 = captures[0];
4931 94 : tree res_op1;
4932 94 : res_op1 = captures[2];
4933 94 : tree _r;
4934 94 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4935 94 : if (TREE_SIDE_EFFECTS (captures[1]))
4936 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4937 94 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 925, __FILE__, __LINE__, true);
4938 94 : return _r;
4939 : }
4940 0 : next_after_fail1523:;
4941 : }
4942 : }
4943 : }
4944 187807 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4945 : {
4946 107264 : {
4947 107264 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4948 214528 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4949 214505 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4950 107241 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4951 : )
4952 : {
4953 107241 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1524;
4954 107241 : {
4955 107241 : tree res_op0;
4956 107241 : res_op0 = captures[0];
4957 107241 : tree res_op1;
4958 107241 : res_op1 = captures[2];
4959 107241 : tree _r;
4960 107241 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4961 107241 : if (TREE_SIDE_EFFECTS (captures[1]))
4962 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4963 107241 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 925, __FILE__, __LINE__, true);
4964 107241 : return _r;
4965 : }
4966 0 : next_after_fail1524:;
4967 : }
4968 : }
4969 : }
4970 : break;
4971 : }
4972 1410157 : default:;
4973 : }
4974 1410157 : switch (TREE_CODE (_q21))
4975 : {
4976 749 : CASE_CONVERT:
4977 749 : {
4978 749 : tree _q40 = TREE_OPERAND (_q21, 0);
4979 749 : switch (TREE_CODE (_p1))
4980 : {
4981 88 : CASE_CONVERT:
4982 88 : {
4983 88 : tree _q60 = TREE_OPERAND (_p1, 0);
4984 88 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
4985 : {
4986 0 : {
4987 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
4988 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4989 0 : if (res) return res;
4990 : }
4991 : }
4992 : break;
4993 : }
4994 : default:;
4995 : }
4996 : break;
4997 : }
4998 1410157 : default:;
4999 : }
5000 1410157 : switch (TREE_CODE (_q20))
5001 : {
5002 142475 : CASE_CONVERT:
5003 142475 : {
5004 142475 : tree _q30 = TREE_OPERAND (_q20, 0);
5005 142475 : switch (TREE_CODE (_p1))
5006 : {
5007 3862 : CASE_CONVERT:
5008 3862 : {
5009 3862 : tree _q60 = TREE_OPERAND (_p1, 0);
5010 3862 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5011 : {
5012 398 : {
5013 398 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5014 398 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5015 398 : if (res) return res;
5016 : }
5017 : }
5018 : break;
5019 : }
5020 142077 : default:;
5021 : }
5022 142077 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5023 : {
5024 0 : {
5025 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5026 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5027 0 : if (res) return res;
5028 : }
5029 : }
5030 : break;
5031 : }
5032 1409759 : default:;
5033 : }
5034 1409759 : switch (TREE_CODE (_q21))
5035 : {
5036 749 : CASE_CONVERT:
5037 749 : {
5038 749 : tree _q40 = TREE_OPERAND (_q21, 0);
5039 749 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5040 : {
5041 0 : {
5042 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5043 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5044 0 : if (res) return res;
5045 : }
5046 : }
5047 : break;
5048 : }
5049 1409759 : default:;
5050 : }
5051 1409759 : switch (TREE_CODE (_p1))
5052 : {
5053 43700 : CASE_CONVERT:
5054 43700 : {
5055 43700 : tree _q50 = TREE_OPERAND (_p1, 0);
5056 43700 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5057 : {
5058 0 : {
5059 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5060 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5061 0 : if (res) return res;
5062 : }
5063 : }
5064 43700 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5065 : {
5066 0 : {
5067 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5068 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5069 0 : if (res) return res;
5070 : }
5071 : }
5072 : break;
5073 : }
5074 1409759 : default:;
5075 : }
5076 1409759 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5077 : {
5078 76054 : {
5079 76054 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5080 76054 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5081 76054 : if (res) return res;
5082 : }
5083 : }
5084 1334409 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5085 : {
5086 19217 : {
5087 19217 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5088 19217 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5089 19217 : if (res) return res;
5090 : }
5091 : }
5092 : break;
5093 : }
5094 517446 : case POINTER_PLUS_EXPR:
5095 517446 : {
5096 517446 : tree _q20 = TREE_OPERAND (_p0, 0);
5097 517446 : tree _q21 = TREE_OPERAND (_p0, 1);
5098 517446 : switch (TREE_CODE (_p1))
5099 : {
5100 33034 : case POINTER_PLUS_EXPR:
5101 33034 : {
5102 33034 : tree _q50 = TREE_OPERAND (_p1, 0);
5103 33034 : tree _q51 = TREE_OPERAND (_p1, 1);
5104 33034 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5105 : {
5106 7397 : {
5107 7397 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5108 7397 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR);
5109 7397 : if (res) return res;
5110 : }
5111 : }
5112 : break;
5113 : }
5114 510049 : default:;
5115 : }
5116 510049 : switch (TREE_CODE (_q20))
5117 : {
5118 72918 : CASE_CONVERT:
5119 72918 : {
5120 72918 : tree _q30 = TREE_OPERAND (_q20, 0);
5121 72918 : switch (TREE_CODE (_p1))
5122 : {
5123 192 : CASE_CONVERT:
5124 192 : {
5125 192 : tree _q60 = TREE_OPERAND (_p1, 0);
5126 192 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5127 : {
5128 0 : {
5129 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5130 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5131 0 : if (res) return res;
5132 : }
5133 : }
5134 : break;
5135 : }
5136 72918 : default:;
5137 : }
5138 72918 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5139 : {
5140 55 : {
5141 55 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5142 55 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5143 55 : if (res) return res;
5144 : }
5145 : }
5146 : break;
5147 : }
5148 509994 : default:;
5149 : }
5150 509994 : switch (TREE_CODE (_p1))
5151 : {
5152 3207 : CASE_CONVERT:
5153 3207 : {
5154 3207 : tree _q50 = TREE_OPERAND (_p1, 0);
5155 3207 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5156 : {
5157 0 : {
5158 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5159 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5160 0 : if (res) return res;
5161 : }
5162 : }
5163 : break;
5164 : }
5165 509994 : default:;
5166 : }
5167 509994 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5168 : {
5169 10079 : {
5170 10079 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5171 10079 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5172 10079 : if (res) return res;
5173 : }
5174 : }
5175 : break;
5176 : }
5177 105967 : case MINUS_EXPR:
5178 105967 : {
5179 105967 : tree _q20 = TREE_OPERAND (_p0, 0);
5180 105967 : tree _q21 = TREE_OPERAND (_p0, 1);
5181 105967 : switch (TREE_CODE (_p1))
5182 : {
5183 5878 : case MINUS_EXPR:
5184 5878 : {
5185 5878 : tree _q50 = TREE_OPERAND (_p1, 0);
5186 5878 : tree _q51 = TREE_OPERAND (_p1, 1);
5187 5878 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5188 : {
5189 170 : {
5190 170 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5191 340 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5192 173 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5193 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5194 : )
5195 : {
5196 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1525;
5197 3 : {
5198 3 : tree res_op0;
5199 3 : res_op0 = captures[0];
5200 3 : tree res_op1;
5201 3 : res_op1 = captures[2];
5202 3 : tree _r;
5203 3 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5204 3 : if (TREE_SIDE_EFFECTS (captures[1]))
5205 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5206 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 926, __FILE__, __LINE__, true);
5207 3 : return _r;
5208 : }
5209 0 : next_after_fail1525:;
5210 : }
5211 : }
5212 : }
5213 5875 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5214 : {
5215 166 : {
5216 166 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5217 332 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5218 166 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5219 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5220 : )
5221 : {
5222 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1526;
5223 0 : {
5224 0 : tree res_op0;
5225 0 : res_op0 = captures[2];
5226 0 : tree res_op1;
5227 0 : res_op1 = captures[1];
5228 0 : tree _r;
5229 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5230 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5231 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5232 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 927, __FILE__, __LINE__, true);
5233 0 : return _r;
5234 : }
5235 0 : next_after_fail1526:;
5236 : }
5237 : }
5238 : }
5239 : break;
5240 : }
5241 105964 : default:;
5242 : }
5243 105964 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5244 : {
5245 1752 : {
5246 1752 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5247 1752 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
5248 1752 : if (res) return res;
5249 : }
5250 : }
5251 : break;
5252 : }
5253 25233 : case POINTER_DIFF_EXPR:
5254 25233 : {
5255 25233 : tree _q20 = TREE_OPERAND (_p0, 0);
5256 25233 : tree _q21 = TREE_OPERAND (_p0, 1);
5257 25233 : switch (TREE_CODE (_p1))
5258 : {
5259 2263 : case POINTER_DIFF_EXPR:
5260 2263 : {
5261 2263 : tree _q50 = TREE_OPERAND (_p1, 0);
5262 2263 : tree _q51 = TREE_OPERAND (_p1, 1);
5263 2263 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5264 : {
5265 0 : {
5266 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5267 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
5268 0 : if (res) return res;
5269 : }
5270 : }
5271 2263 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5272 : {
5273 0 : {
5274 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5275 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5276 0 : if (res) return res;
5277 : }
5278 : }
5279 : break;
5280 : }
5281 : default:;
5282 : }
5283 : break;
5284 : }
5285 35901836 : default:;
5286 : }
5287 35901836 : {
5288 35901836 : tree _p0_pops[1];
5289 35901836 : if (tree_logical_inverted_value (_p0, _p0_pops))
5290 : {
5291 537078 : tree _q20 = _p0_pops[0];
5292 537078 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5293 : {
5294 24 : if (tree_truth_valued_p (_p1))
5295 : {
5296 0 : {
5297 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5298 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
5299 0 : if (res) return res;
5300 : }
5301 : }
5302 : }
5303 : }
5304 : }
5305 35901836 : if (tree_truth_valued_p (_p0))
5306 : {
5307 5378022 : {
5308 5378022 : tree _p1_pops[1];
5309 5378022 : if (tree_logical_inverted_value (_p1, _p1_pops))
5310 : {
5311 1129 : tree _q30 = _p1_pops[0];
5312 1129 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5313 : {
5314 0 : {
5315 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5316 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
5317 0 : if (res) return res;
5318 : }
5319 : }
5320 : }
5321 : }
5322 : }
5323 35901836 : switch (TREE_CODE (_p1))
5324 : {
5325 121369 : case PLUS_EXPR:
5326 121369 : {
5327 121369 : tree _q30 = TREE_OPERAND (_p1, 0);
5328 121369 : tree _q31 = TREE_OPERAND (_p1, 1);
5329 121369 : switch (TREE_CODE (_q31))
5330 : {
5331 342 : CASE_CONVERT:
5332 342 : {
5333 342 : tree _q50 = TREE_OPERAND (_q31, 0);
5334 342 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5335 : {
5336 0 : {
5337 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5338 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5339 0 : if (res) return res;
5340 : }
5341 : }
5342 : break;
5343 : }
5344 121369 : default:;
5345 : }
5346 121369 : switch (TREE_CODE (_q30))
5347 : {
5348 5537 : CASE_CONVERT:
5349 5537 : {
5350 5537 : tree _q40 = TREE_OPERAND (_q30, 0);
5351 5537 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5352 : {
5353 0 : {
5354 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5355 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5356 0 : if (res) return res;
5357 : }
5358 : }
5359 : break;
5360 : }
5361 121369 : default:;
5362 : }
5363 121369 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5364 : {
5365 0 : {
5366 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5367 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5368 0 : if (res) return res;
5369 : }
5370 : }
5371 121369 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5372 : {
5373 8 : {
5374 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5375 8 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5376 8 : if (res) return res;
5377 : }
5378 : }
5379 : break;
5380 : }
5381 35901828 : default:;
5382 : }
5383 35901828 : {
5384 35901828 : tree _p1_pops[1];
5385 35901828 : if (tree_nop_convert (_p1, _p1_pops))
5386 : {
5387 3359180 : tree _q30 = _p1_pops[0];
5388 3359180 : switch (TREE_CODE (_q30))
5389 : {
5390 1663 : case PLUS_EXPR:
5391 1663 : {
5392 1663 : tree _q40 = TREE_OPERAND (_q30, 0);
5393 1663 : tree _q41 = TREE_OPERAND (_q30, 1);
5394 1663 : switch (TREE_CODE (_q41))
5395 : {
5396 3 : CASE_CONVERT:
5397 3 : {
5398 3 : tree _q60 = TREE_OPERAND (_q41, 0);
5399 3 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5400 : {
5401 0 : {
5402 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5403 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
5404 0 : if (res) return res;
5405 : }
5406 : }
5407 : break;
5408 : }
5409 1663 : default:;
5410 : }
5411 1663 : switch (TREE_CODE (_q40))
5412 : {
5413 1107 : CASE_CONVERT:
5414 1107 : {
5415 1107 : tree _q50 = TREE_OPERAND (_q40, 0);
5416 1107 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5417 : {
5418 0 : {
5419 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5420 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
5421 0 : if (res) return res;
5422 : }
5423 : }
5424 : break;
5425 : }
5426 1663 : default:;
5427 : }
5428 1663 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5429 : {
5430 0 : {
5431 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5432 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
5433 0 : if (res) return res;
5434 : }
5435 : }
5436 1663 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5437 : {
5438 0 : {
5439 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5440 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
5441 0 : if (res) return res;
5442 : }
5443 : }
5444 : break;
5445 : }
5446 : default:;
5447 : }
5448 : }
5449 : }
5450 35901828 : switch (TREE_CODE (_p0))
5451 : {
5452 6949772 : CASE_CONVERT:
5453 6949772 : {
5454 6949772 : tree _q20 = TREE_OPERAND (_p0, 0);
5455 6949772 : switch (TREE_CODE (_p1))
5456 : {
5457 173 : case POINTER_PLUS_EXPR:
5458 173 : {
5459 173 : tree _q40 = TREE_OPERAND (_p1, 0);
5460 173 : tree _q41 = TREE_OPERAND (_p1, 1);
5461 173 : switch (TREE_CODE (_q40))
5462 : {
5463 48 : CASE_CONVERT:
5464 48 : {
5465 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5466 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5467 : {
5468 0 : {
5469 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5470 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5471 0 : if (res) return res;
5472 : }
5473 : }
5474 : break;
5475 : }
5476 173 : default:;
5477 : }
5478 173 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5479 : {
5480 0 : {
5481 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5482 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5483 0 : if (res) return res;
5484 : }
5485 : }
5486 : break;
5487 : }
5488 6949772 : default:;
5489 : }
5490 6949772 : {
5491 6949772 : tree _p1_pops[1];
5492 6949772 : if (tree_nop_convert (_p1, _p1_pops))
5493 : {
5494 2993026 : tree _q40 = _p1_pops[0];
5495 2993026 : switch (TREE_CODE (_q40))
5496 : {
5497 48 : case POINTER_PLUS_EXPR:
5498 48 : {
5499 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5500 48 : tree _q51 = TREE_OPERAND (_q40, 1);
5501 48 : switch (TREE_CODE (_q50))
5502 : {
5503 8 : CASE_CONVERT:
5504 8 : {
5505 8 : tree _q60 = TREE_OPERAND (_q50, 0);
5506 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5507 : {
5508 0 : {
5509 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5510 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5511 0 : if (res) return res;
5512 : }
5513 : }
5514 : break;
5515 : }
5516 48 : default:;
5517 : }
5518 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5519 : {
5520 0 : {
5521 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5522 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5523 0 : if (res) return res;
5524 : }
5525 : }
5526 : break;
5527 : }
5528 : default:;
5529 : }
5530 : }
5531 : }
5532 6949772 : break;
5533 : }
5534 35901828 : default:;
5535 : }
5536 35901828 : {
5537 35901828 : tree _p0_pops[1];
5538 35901828 : if (tree_nop_convert (_p0, _p0_pops))
5539 : {
5540 4763361 : tree _q20 = _p0_pops[0];
5541 4763361 : switch (TREE_CODE (_q20))
5542 : {
5543 185 : case POINTER_PLUS_EXPR:
5544 185 : {
5545 185 : tree _q30 = TREE_OPERAND (_q20, 0);
5546 185 : tree _q31 = TREE_OPERAND (_q20, 1);
5547 185 : switch (TREE_CODE (_q30))
5548 : {
5549 24 : CASE_CONVERT:
5550 24 : {
5551 24 : tree _q40 = TREE_OPERAND (_q30, 0);
5552 24 : switch (TREE_CODE (_p1))
5553 : {
5554 8 : CASE_CONVERT:
5555 8 : {
5556 8 : tree _q70 = TREE_OPERAND (_p1, 0);
5557 8 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5558 : {
5559 0 : {
5560 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5561 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5562 0 : if (res) return res;
5563 : }
5564 : }
5565 : break;
5566 : }
5567 24 : default:;
5568 : }
5569 24 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5570 : {
5571 0 : {
5572 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5573 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5574 0 : if (res) return res;
5575 : }
5576 : }
5577 : break;
5578 : }
5579 185 : default:;
5580 : }
5581 185 : switch (TREE_CODE (_p1))
5582 : {
5583 50 : CASE_CONVERT:
5584 50 : {
5585 50 : tree _q60 = TREE_OPERAND (_p1, 0);
5586 50 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5587 : {
5588 0 : {
5589 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5590 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5591 0 : if (res) return res;
5592 : }
5593 : }
5594 : break;
5595 : }
5596 185 : default:;
5597 : }
5598 185 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5599 : {
5600 0 : {
5601 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5602 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5603 0 : if (res) return res;
5604 : }
5605 : }
5606 : break;
5607 : }
5608 : default:;
5609 : }
5610 : }
5611 : }
5612 35901828 : switch (TREE_CODE (_p1))
5613 : {
5614 29626 : case POINTER_PLUS_EXPR:
5615 29626 : {
5616 29626 : tree _q30 = TREE_OPERAND (_p1, 0);
5617 29626 : tree _q31 = TREE_OPERAND (_p1, 1);
5618 29626 : switch (TREE_CODE (_q30))
5619 : {
5620 2754 : CASE_CONVERT:
5621 2754 : {
5622 2754 : tree _q40 = TREE_OPERAND (_q30, 0);
5623 2754 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5624 : {
5625 0 : {
5626 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5627 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5628 0 : if (res) return res;
5629 : }
5630 : }
5631 : break;
5632 : }
5633 29626 : default:;
5634 : }
5635 29626 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5636 : {
5637 0 : {
5638 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5639 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
5640 0 : if (res) return res;
5641 : }
5642 : }
5643 : break;
5644 : }
5645 35901828 : default:;
5646 : }
5647 35901828 : {
5648 35901828 : tree _p1_pops[1];
5649 35901828 : if (tree_nop_convert (_p1, _p1_pops))
5650 : {
5651 3359180 : tree _q30 = _p1_pops[0];
5652 3359180 : switch (TREE_CODE (_q30))
5653 : {
5654 387 : case POINTER_PLUS_EXPR:
5655 387 : {
5656 387 : tree _q40 = TREE_OPERAND (_q30, 0);
5657 387 : tree _q41 = TREE_OPERAND (_q30, 1);
5658 387 : switch (TREE_CODE (_q40))
5659 : {
5660 8 : CASE_CONVERT:
5661 8 : {
5662 8 : tree _q50 = TREE_OPERAND (_q40, 0);
5663 8 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5664 : {
5665 0 : {
5666 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5667 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5668 0 : if (res) return res;
5669 : }
5670 : }
5671 : break;
5672 : }
5673 387 : default:;
5674 : }
5675 387 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5676 : {
5677 0 : {
5678 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5679 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5680 0 : if (res) return res;
5681 : }
5682 : }
5683 : break;
5684 : }
5685 : default:;
5686 : }
5687 : }
5688 : }
5689 35901828 : switch (TREE_CODE (_p0))
5690 : {
5691 499915 : case POINTER_PLUS_EXPR:
5692 499915 : {
5693 499915 : tree _q20 = TREE_OPERAND (_p0, 0);
5694 499915 : tree _q21 = TREE_OPERAND (_p0, 1);
5695 499915 : switch (TREE_CODE (_p1))
5696 : {
5697 47935 : case ADDR_EXPR:
5698 47935 : {
5699 47935 : {
5700 47935 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5701 47935 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5702 47935 : if (res) return res;
5703 : }
5704 32895 : break;
5705 : }
5706 484875 : default:;
5707 : }
5708 484875 : switch (TREE_CODE (_q20))
5709 : {
5710 4916 : case ADDR_EXPR:
5711 4916 : {
5712 4916 : switch (TREE_CODE (_p1))
5713 : {
5714 269 : case POINTER_PLUS_EXPR:
5715 269 : {
5716 269 : tree _q50 = TREE_OPERAND (_p1, 0);
5717 269 : tree _q51 = TREE_OPERAND (_p1, 1);
5718 269 : switch (TREE_CODE (_q50))
5719 : {
5720 0 : case ADDR_EXPR:
5721 0 : {
5722 0 : {
5723 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
5724 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5725 0 : if (res) return res;
5726 : }
5727 0 : break;
5728 : }
5729 : default:;
5730 : }
5731 : break;
5732 : }
5733 : default:;
5734 : }
5735 : break;
5736 : }
5737 : default:;
5738 : }
5739 : break;
5740 : }
5741 196121 : case ADDR_EXPR:
5742 196121 : {
5743 196121 : switch (TREE_CODE (_p1))
5744 : {
5745 0 : case POINTER_PLUS_EXPR:
5746 0 : {
5747 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5748 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5749 0 : {
5750 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
5751 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5752 0 : if (res) return res;
5753 : }
5754 0 : break;
5755 : }
5756 : default:;
5757 : }
5758 : break;
5759 : }
5760 35886788 : default:;
5761 : }
5762 35886788 : switch (TREE_CODE (_p1))
5763 : {
5764 30243 : case MINUS_EXPR:
5765 30243 : {
5766 30243 : tree _q30 = TREE_OPERAND (_p1, 0);
5767 30243 : tree _q31 = TREE_OPERAND (_p1, 1);
5768 30243 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5769 : {
5770 0 : {
5771 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5772 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
5773 0 : if (res) return res;
5774 : }
5775 : }
5776 : break;
5777 : }
5778 35886788 : default:;
5779 : }
5780 35886788 : switch (TREE_CODE (_p0))
5781 : {
5782 9213 : case TRUNC_DIV_EXPR:
5783 9213 : {
5784 9213 : tree _q20 = TREE_OPERAND (_p0, 0);
5785 9213 : tree _q21 = TREE_OPERAND (_p0, 1);
5786 9213 : if (integer_zerop (_p1))
5787 : {
5788 1035 : {
5789 1035 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5790 1035 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
5791 1035 : if (res) return res;
5792 : }
5793 : }
5794 : break;
5795 : }
5796 6949772 : CASE_CONVERT:
5797 6949772 : {
5798 6949772 : tree _q20 = TREE_OPERAND (_p0, 0);
5799 6949772 : switch (TREE_CODE (_p1))
5800 : {
5801 3132607 : CASE_CONVERT:
5802 3132607 : {
5803 3132607 : tree _q40 = TREE_OPERAND (_p1, 0);
5804 3132607 : switch (TREE_CODE (_q40))
5805 : {
5806 0 : case MINUS_EXPR:
5807 0 : {
5808 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5809 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5810 0 : switch (TREE_CODE (_q50))
5811 : {
5812 0 : case INTEGER_CST:
5813 0 : {
5814 0 : switch (TREE_CODE (_q51))
5815 : {
5816 0 : CASE_CONVERT:
5817 0 : {
5818 0 : tree _q70 = TREE_OPERAND (_q51, 0);
5819 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
5820 : {
5821 0 : {
5822 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5823 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5824 0 : if (res) return res;
5825 : }
5826 : }
5827 : break;
5828 : }
5829 : default:;
5830 : }
5831 : break;
5832 : }
5833 : default:;
5834 : }
5835 : break;
5836 : }
5837 : default:;
5838 : }
5839 : break;
5840 : }
5841 6949772 : default:;
5842 : }
5843 6949772 : switch (TREE_CODE (_q20))
5844 : {
5845 99 : case MINUS_EXPR:
5846 99 : {
5847 99 : tree _q30 = TREE_OPERAND (_q20, 0);
5848 99 : tree _q31 = TREE_OPERAND (_q20, 1);
5849 99 : switch (TREE_CODE (_q30))
5850 : {
5851 49 : case INTEGER_CST:
5852 49 : {
5853 49 : switch (TREE_CODE (_q31))
5854 : {
5855 0 : CASE_CONVERT:
5856 0 : {
5857 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5858 0 : switch (TREE_CODE (_p1))
5859 : {
5860 0 : CASE_CONVERT:
5861 0 : {
5862 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5863 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
5864 : {
5865 0 : {
5866 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5867 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5868 0 : if (res) return res;
5869 : }
5870 : }
5871 : break;
5872 : }
5873 0 : default:;
5874 : }
5875 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
5876 : {
5877 0 : {
5878 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5879 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5880 0 : if (res) return res;
5881 : }
5882 : }
5883 : break;
5884 : }
5885 49 : default:;
5886 : }
5887 49 : switch (TREE_CODE (_p1))
5888 : {
5889 0 : CASE_CONVERT:
5890 0 : {
5891 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5892 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
5893 : {
5894 0 : {
5895 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5896 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5897 0 : if (res) return res;
5898 : }
5899 : }
5900 : break;
5901 : }
5902 49 : default:;
5903 : }
5904 49 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5905 : {
5906 0 : {
5907 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5908 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5909 0 : if (res) return res;
5910 : }
5911 : }
5912 : break;
5913 : }
5914 : default:;
5915 : }
5916 : break;
5917 : }
5918 6949772 : default:;
5919 : }
5920 6949772 : switch (TREE_CODE (_p1))
5921 : {
5922 3132607 : CASE_CONVERT:
5923 3132607 : {
5924 3132607 : tree _q40 = TREE_OPERAND (_p1, 0);
5925 3132607 : switch (TREE_CODE (_q40))
5926 : {
5927 0 : case MINUS_EXPR:
5928 0 : {
5929 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5930 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5931 0 : switch (TREE_CODE (_q50))
5932 : {
5933 0 : case INTEGER_CST:
5934 0 : {
5935 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5936 : {
5937 0 : {
5938 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5939 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5940 0 : if (res) return res;
5941 : }
5942 : }
5943 : break;
5944 : }
5945 : default:;
5946 : }
5947 : break;
5948 : }
5949 : default:;
5950 : }
5951 : break;
5952 : }
5953 21676 : case MINUS_EXPR:
5954 21676 : {
5955 21676 : tree _q40 = TREE_OPERAND (_p1, 0);
5956 21676 : tree _q41 = TREE_OPERAND (_p1, 1);
5957 21676 : switch (TREE_CODE (_q40))
5958 : {
5959 401 : case INTEGER_CST:
5960 401 : {
5961 401 : switch (TREE_CODE (_q41))
5962 : {
5963 20 : CASE_CONVERT:
5964 20 : {
5965 20 : tree _q60 = TREE_OPERAND (_q41, 0);
5966 20 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5967 : {
5968 0 : {
5969 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
5970 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5971 0 : if (res) return res;
5972 : }
5973 : }
5974 : break;
5975 : }
5976 401 : default:;
5977 : }
5978 401 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
5979 : {
5980 0 : {
5981 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
5982 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5983 0 : if (res) return res;
5984 : }
5985 : }
5986 : break;
5987 : }
5988 : default:;
5989 : }
5990 : break;
5991 : }
5992 : default:;
5993 : }
5994 : break;
5995 : }
5996 104252 : case MINUS_EXPR:
5997 104252 : {
5998 104252 : tree _q20 = TREE_OPERAND (_p0, 0);
5999 104252 : tree _q21 = TREE_OPERAND (_p0, 1);
6000 104252 : switch (TREE_CODE (_q20))
6001 : {
6002 2082 : case INTEGER_CST:
6003 2082 : {
6004 2082 : switch (TREE_CODE (_q21))
6005 : {
6006 182 : CASE_CONVERT:
6007 182 : {
6008 182 : tree _q40 = TREE_OPERAND (_q21, 0);
6009 182 : switch (TREE_CODE (_p1))
6010 : {
6011 0 : CASE_CONVERT:
6012 0 : {
6013 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6014 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6015 : {
6016 0 : {
6017 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6018 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6019 0 : if (res) return res;
6020 : }
6021 : }
6022 : break;
6023 : }
6024 182 : default:;
6025 : }
6026 182 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6027 : {
6028 0 : {
6029 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6030 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6031 0 : if (res) return res;
6032 : }
6033 : }
6034 : break;
6035 : }
6036 2082 : default:;
6037 : }
6038 2082 : switch (TREE_CODE (_p1))
6039 : {
6040 306 : CASE_CONVERT:
6041 306 : {
6042 306 : tree _q50 = TREE_OPERAND (_p1, 0);
6043 306 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6044 : {
6045 0 : {
6046 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6047 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6048 0 : if (res) return res;
6049 : }
6050 : }
6051 : break;
6052 : }
6053 2082 : default:;
6054 : }
6055 2082 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6056 : {
6057 19 : {
6058 19 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6059 19 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6060 19 : if (res) return res;
6061 : }
6062 : }
6063 : break;
6064 : }
6065 : default:;
6066 : }
6067 : break;
6068 : }
6069 35886672 : default:;
6070 : }
6071 35886672 : switch (TREE_CODE (_p1))
6072 : {
6073 3526174 : CASE_CONVERT:
6074 3526174 : {
6075 3526174 : tree _q30 = TREE_OPERAND (_p1, 0);
6076 3526174 : switch (TREE_CODE (_q30))
6077 : {
6078 556 : case MINUS_EXPR:
6079 556 : {
6080 556 : tree _q40 = TREE_OPERAND (_q30, 0);
6081 556 : tree _q41 = TREE_OPERAND (_q30, 1);
6082 556 : switch (TREE_CODE (_q40))
6083 : {
6084 17 : case INTEGER_CST:
6085 17 : {
6086 17 : switch (TREE_CODE (_q41))
6087 : {
6088 0 : CASE_CONVERT:
6089 0 : {
6090 0 : tree _q60 = TREE_OPERAND (_q41, 0);
6091 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6092 : {
6093 0 : {
6094 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6095 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6096 0 : if (res) return res;
6097 : }
6098 : }
6099 : break;
6100 : }
6101 17 : default:;
6102 : }
6103 17 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6104 : {
6105 0 : {
6106 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6107 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6108 0 : if (res) return res;
6109 : }
6110 : }
6111 : break;
6112 : }
6113 : default:;
6114 : }
6115 : break;
6116 : }
6117 : default:;
6118 : }
6119 : break;
6120 : }
6121 30243 : case MINUS_EXPR:
6122 30243 : {
6123 30243 : tree _q30 = TREE_OPERAND (_p1, 0);
6124 30243 : tree _q31 = TREE_OPERAND (_p1, 1);
6125 30243 : switch (TREE_CODE (_q30))
6126 : {
6127 612 : case INTEGER_CST:
6128 612 : {
6129 612 : switch (TREE_CODE (_q31))
6130 : {
6131 32 : CASE_CONVERT:
6132 32 : {
6133 32 : tree _q50 = TREE_OPERAND (_q31, 0);
6134 32 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6135 : {
6136 0 : {
6137 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6138 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6139 0 : if (res) return res;
6140 : }
6141 : }
6142 : break;
6143 : }
6144 612 : default:;
6145 : }
6146 612 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6147 : {
6148 0 : {
6149 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6150 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
6151 0 : if (res) return res;
6152 : }
6153 : }
6154 : break;
6155 : }
6156 : default:;
6157 : }
6158 : break;
6159 : }
6160 35886672 : default:;
6161 : }
6162 35886672 : switch (TREE_CODE (_p0))
6163 : {
6164 18225 : case LT_EXPR:
6165 18225 : {
6166 18225 : tree _q20 = TREE_OPERAND (_p0, 0);
6167 18225 : tree _q21 = TREE_OPERAND (_p0, 1);
6168 18225 : switch (TREE_CODE (_p1))
6169 : {
6170 18 : case GT_EXPR:
6171 18 : {
6172 18 : tree _q50 = TREE_OPERAND (_p1, 0);
6173 18 : tree _q51 = TREE_OPERAND (_p1, 1);
6174 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6175 : {
6176 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6177 : {
6178 0 : {
6179 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6180 0 : const enum tree_code cmp1 = LT_EXPR;
6181 0 : const enum tree_code cmp2 = GT_EXPR;
6182 0 : const enum tree_code rcmp = NE_EXPR;
6183 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6184 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6185 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6186 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6187 : )
6188 : {
6189 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1527;
6190 0 : {
6191 0 : tree res_op0;
6192 0 : res_op0 = captures[0];
6193 0 : tree res_op1;
6194 0 : res_op1 = captures[1];
6195 0 : tree _r;
6196 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6197 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6198 0 : return _r;
6199 : }
6200 0 : next_after_fail1527:;
6201 : }
6202 : }
6203 : }
6204 : }
6205 : break;
6206 : }
6207 23 : case EQ_EXPR:
6208 23 : {
6209 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6210 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6211 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6212 : {
6213 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6214 : {
6215 0 : {
6216 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6217 0 : const enum tree_code cmp1 = LT_EXPR;
6218 0 : const enum tree_code cmp2 = EQ_EXPR;
6219 0 : const enum tree_code rcmp = LE_EXPR;
6220 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6221 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6222 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6223 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6224 : )
6225 : {
6226 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1528;
6227 0 : {
6228 0 : tree res_op0;
6229 0 : res_op0 = captures[0];
6230 0 : tree res_op1;
6231 0 : res_op1 = captures[1];
6232 0 : tree _r;
6233 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6234 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6235 0 : return _r;
6236 : }
6237 0 : next_after_fail1528:;
6238 : }
6239 : }
6240 : }
6241 : }
6242 : break;
6243 : }
6244 23 : case NE_EXPR:
6245 23 : {
6246 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6247 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6248 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6249 : {
6250 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6251 : {
6252 0 : {
6253 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6254 0 : const enum tree_code cmp1 = LT_EXPR;
6255 0 : const enum tree_code cmp2 = NE_EXPR;
6256 0 : const enum tree_code rcmp = GT_EXPR;
6257 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6258 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6259 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6260 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6261 : )
6262 : {
6263 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1529;
6264 0 : {
6265 0 : tree res_op0;
6266 0 : res_op0 = captures[0];
6267 0 : tree res_op1;
6268 0 : res_op1 = captures[1];
6269 0 : tree _r;
6270 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6271 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6272 0 : return _r;
6273 : }
6274 0 : next_after_fail1529:;
6275 : }
6276 : }
6277 : }
6278 : }
6279 : break;
6280 : }
6281 : default:;
6282 : }
6283 : break;
6284 : }
6285 11965 : case LE_EXPR:
6286 11965 : {
6287 11965 : tree _q20 = TREE_OPERAND (_p0, 0);
6288 11965 : tree _q21 = TREE_OPERAND (_p0, 1);
6289 11965 : switch (TREE_CODE (_p1))
6290 : {
6291 25 : case GE_EXPR:
6292 25 : {
6293 25 : tree _q50 = TREE_OPERAND (_p1, 0);
6294 25 : tree _q51 = TREE_OPERAND (_p1, 1);
6295 25 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6296 : {
6297 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6298 : {
6299 0 : {
6300 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6301 0 : const enum tree_code cmp1 = LE_EXPR;
6302 0 : const enum tree_code cmp2 = GE_EXPR;
6303 0 : const enum tree_code rcmp = NE_EXPR;
6304 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6305 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6306 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6307 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6308 : )
6309 : {
6310 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1530;
6311 0 : {
6312 0 : tree res_op0;
6313 0 : res_op0 = captures[0];
6314 0 : tree res_op1;
6315 0 : res_op1 = captures[1];
6316 0 : tree _r;
6317 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6318 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6319 0 : return _r;
6320 : }
6321 0 : next_after_fail1530:;
6322 : }
6323 : }
6324 : }
6325 : }
6326 : break;
6327 : }
6328 41 : case EQ_EXPR:
6329 41 : {
6330 41 : tree _q50 = TREE_OPERAND (_p1, 0);
6331 41 : tree _q51 = TREE_OPERAND (_p1, 1);
6332 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6333 : {
6334 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6335 : {
6336 0 : {
6337 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6338 0 : const enum tree_code cmp1 = LE_EXPR;
6339 0 : const enum tree_code cmp2 = EQ_EXPR;
6340 0 : const enum tree_code rcmp = LT_EXPR;
6341 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6342 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6343 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6344 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6345 : )
6346 : {
6347 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1531;
6348 0 : {
6349 0 : tree res_op0;
6350 0 : res_op0 = captures[0];
6351 0 : tree res_op1;
6352 0 : res_op1 = captures[1];
6353 0 : tree _r;
6354 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6355 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6356 0 : return _r;
6357 : }
6358 0 : next_after_fail1531:;
6359 : }
6360 : }
6361 : }
6362 : }
6363 : break;
6364 : }
6365 13 : case NE_EXPR:
6366 13 : {
6367 13 : tree _q50 = TREE_OPERAND (_p1, 0);
6368 13 : tree _q51 = TREE_OPERAND (_p1, 1);
6369 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6370 : {
6371 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6372 : {
6373 0 : {
6374 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6375 0 : const enum tree_code cmp1 = LE_EXPR;
6376 0 : const enum tree_code cmp2 = NE_EXPR;
6377 0 : const enum tree_code rcmp = GE_EXPR;
6378 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6379 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6380 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6381 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6382 : )
6383 : {
6384 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1532;
6385 0 : {
6386 0 : tree res_op0;
6387 0 : res_op0 = captures[0];
6388 0 : tree res_op1;
6389 0 : res_op1 = captures[1];
6390 0 : tree _r;
6391 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6392 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6393 0 : return _r;
6394 : }
6395 0 : next_after_fail1532:;
6396 : }
6397 : }
6398 : }
6399 : }
6400 : break;
6401 : }
6402 : default:;
6403 : }
6404 : break;
6405 : }
6406 35577 : case GT_EXPR:
6407 35577 : {
6408 35577 : tree _q20 = TREE_OPERAND (_p0, 0);
6409 35577 : tree _q21 = TREE_OPERAND (_p0, 1);
6410 35577 : switch (TREE_CODE (_p1))
6411 : {
6412 77 : case GT_EXPR:
6413 77 : {
6414 77 : tree _q50 = TREE_OPERAND (_p1, 0);
6415 77 : tree _q51 = TREE_OPERAND (_p1, 1);
6416 77 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6417 : {
6418 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6419 : {
6420 0 : {
6421 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6422 0 : const enum tree_code cmp1 = LT_EXPR;
6423 0 : const enum tree_code cmp2 = GT_EXPR;
6424 0 : const enum tree_code rcmp = NE_EXPR;
6425 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6426 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6427 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6428 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6429 : )
6430 : {
6431 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1533;
6432 0 : {
6433 0 : tree res_op0;
6434 0 : res_op0 = captures[0];
6435 0 : tree res_op1;
6436 0 : res_op1 = captures[1];
6437 0 : tree _r;
6438 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6439 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6440 0 : return _r;
6441 : }
6442 0 : next_after_fail1533:;
6443 : }
6444 : }
6445 0 : {
6446 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6447 0 : const enum tree_code cmp1 = LT_EXPR;
6448 0 : const enum tree_code cmp2 = GT_EXPR;
6449 0 : const enum tree_code rcmp = NE_EXPR;
6450 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6451 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6452 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6453 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6454 : )
6455 : {
6456 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1534;
6457 0 : {
6458 0 : tree res_op0;
6459 0 : res_op0 = captures[0];
6460 0 : tree res_op1;
6461 0 : res_op1 = captures[1];
6462 0 : tree _r;
6463 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6464 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6465 0 : return _r;
6466 : }
6467 0 : next_after_fail1534:;
6468 : }
6469 : }
6470 : }
6471 : }
6472 : break;
6473 : }
6474 29 : case EQ_EXPR:
6475 29 : {
6476 29 : tree _q50 = TREE_OPERAND (_p1, 0);
6477 29 : tree _q51 = TREE_OPERAND (_p1, 1);
6478 29 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6479 : {
6480 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6481 : {
6482 0 : {
6483 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6484 0 : const enum tree_code cmp1 = LT_EXPR;
6485 0 : const enum tree_code cmp2 = EQ_EXPR;
6486 0 : const enum tree_code rcmp = LE_EXPR;
6487 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6488 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6489 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6490 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6491 : )
6492 : {
6493 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1535;
6494 0 : {
6495 0 : tree res_op0;
6496 0 : res_op0 = captures[0];
6497 0 : tree res_op1;
6498 0 : res_op1 = captures[1];
6499 0 : tree _r;
6500 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6501 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6502 0 : return _r;
6503 : }
6504 0 : next_after_fail1535:;
6505 : }
6506 : }
6507 : }
6508 : }
6509 : break;
6510 : }
6511 53 : case NE_EXPR:
6512 53 : {
6513 53 : tree _q50 = TREE_OPERAND (_p1, 0);
6514 53 : tree _q51 = TREE_OPERAND (_p1, 1);
6515 53 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6516 : {
6517 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6518 : {
6519 0 : {
6520 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6521 0 : const enum tree_code cmp1 = LT_EXPR;
6522 0 : const enum tree_code cmp2 = NE_EXPR;
6523 0 : const enum tree_code rcmp = GT_EXPR;
6524 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6525 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6526 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6527 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6528 : )
6529 : {
6530 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1536;
6531 0 : {
6532 0 : tree res_op0;
6533 0 : res_op0 = captures[0];
6534 0 : tree res_op1;
6535 0 : res_op1 = captures[1];
6536 0 : tree _r;
6537 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6538 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6539 0 : return _r;
6540 : }
6541 0 : next_after_fail1536:;
6542 : }
6543 : }
6544 : }
6545 : }
6546 : break;
6547 : }
6548 32 : case LT_EXPR:
6549 32 : {
6550 32 : tree _q50 = TREE_OPERAND (_p1, 0);
6551 32 : tree _q51 = TREE_OPERAND (_p1, 1);
6552 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6553 : {
6554 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6555 : {
6556 0 : {
6557 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6558 0 : const enum tree_code cmp1 = LT_EXPR;
6559 0 : const enum tree_code cmp2 = GT_EXPR;
6560 0 : const enum tree_code rcmp = NE_EXPR;
6561 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6562 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6563 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6564 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6565 : )
6566 : {
6567 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1537;
6568 0 : {
6569 0 : tree res_op0;
6570 0 : res_op0 = captures[0];
6571 0 : tree res_op1;
6572 0 : res_op1 = captures[1];
6573 0 : tree _r;
6574 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6575 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6576 0 : return _r;
6577 : }
6578 0 : next_after_fail1537:;
6579 : }
6580 : }
6581 : }
6582 : }
6583 : break;
6584 : }
6585 : default:;
6586 : }
6587 : break;
6588 : }
6589 6117 : case GE_EXPR:
6590 6117 : {
6591 6117 : tree _q20 = TREE_OPERAND (_p0, 0);
6592 6117 : tree _q21 = TREE_OPERAND (_p0, 1);
6593 6117 : switch (TREE_CODE (_p1))
6594 : {
6595 76 : case GE_EXPR:
6596 76 : {
6597 76 : tree _q50 = TREE_OPERAND (_p1, 0);
6598 76 : tree _q51 = TREE_OPERAND (_p1, 1);
6599 76 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6600 : {
6601 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6602 : {
6603 0 : {
6604 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6605 0 : const enum tree_code cmp1 = LE_EXPR;
6606 0 : const enum tree_code cmp2 = GE_EXPR;
6607 0 : const enum tree_code rcmp = NE_EXPR;
6608 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6609 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6610 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6611 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6612 : )
6613 : {
6614 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1538;
6615 0 : {
6616 0 : tree res_op0;
6617 0 : res_op0 = captures[0];
6618 0 : tree res_op1;
6619 0 : res_op1 = captures[1];
6620 0 : tree _r;
6621 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6622 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6623 0 : return _r;
6624 : }
6625 0 : next_after_fail1538:;
6626 : }
6627 : }
6628 0 : {
6629 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6630 0 : const enum tree_code cmp1 = LE_EXPR;
6631 0 : const enum tree_code cmp2 = GE_EXPR;
6632 0 : const enum tree_code rcmp = NE_EXPR;
6633 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6634 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6635 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6636 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6637 : )
6638 : {
6639 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1539;
6640 0 : {
6641 0 : tree res_op0;
6642 0 : res_op0 = captures[0];
6643 0 : tree res_op1;
6644 0 : res_op1 = captures[1];
6645 0 : tree _r;
6646 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6647 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6648 0 : return _r;
6649 : }
6650 0 : next_after_fail1539:;
6651 : }
6652 : }
6653 : }
6654 : }
6655 : break;
6656 : }
6657 52 : case EQ_EXPR:
6658 52 : {
6659 52 : tree _q50 = TREE_OPERAND (_p1, 0);
6660 52 : tree _q51 = TREE_OPERAND (_p1, 1);
6661 52 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6662 : {
6663 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6664 : {
6665 0 : {
6666 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6667 0 : const enum tree_code cmp1 = LE_EXPR;
6668 0 : const enum tree_code cmp2 = EQ_EXPR;
6669 0 : const enum tree_code rcmp = LT_EXPR;
6670 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6671 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6672 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6673 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6674 : )
6675 : {
6676 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1540;
6677 0 : {
6678 0 : tree res_op0;
6679 0 : res_op0 = captures[0];
6680 0 : tree res_op1;
6681 0 : res_op1 = captures[1];
6682 0 : tree _r;
6683 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6684 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6685 0 : return _r;
6686 : }
6687 0 : next_after_fail1540:;
6688 : }
6689 : }
6690 : }
6691 : }
6692 : break;
6693 : }
6694 11 : case NE_EXPR:
6695 11 : {
6696 11 : tree _q50 = TREE_OPERAND (_p1, 0);
6697 11 : tree _q51 = TREE_OPERAND (_p1, 1);
6698 11 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6699 : {
6700 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6701 : {
6702 0 : {
6703 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6704 0 : const enum tree_code cmp1 = LE_EXPR;
6705 0 : const enum tree_code cmp2 = NE_EXPR;
6706 0 : const enum tree_code rcmp = GE_EXPR;
6707 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6708 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6709 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6710 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6711 : )
6712 : {
6713 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1541;
6714 0 : {
6715 0 : tree res_op0;
6716 0 : res_op0 = captures[0];
6717 0 : tree res_op1;
6718 0 : res_op1 = captures[1];
6719 0 : tree _r;
6720 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6722 0 : return _r;
6723 : }
6724 0 : next_after_fail1541:;
6725 : }
6726 : }
6727 : }
6728 : }
6729 : break;
6730 : }
6731 16 : case LE_EXPR:
6732 16 : {
6733 16 : tree _q50 = TREE_OPERAND (_p1, 0);
6734 16 : tree _q51 = TREE_OPERAND (_p1, 1);
6735 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6736 : {
6737 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6738 : {
6739 0 : {
6740 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6741 0 : const enum tree_code cmp1 = LE_EXPR;
6742 0 : const enum tree_code cmp2 = GE_EXPR;
6743 0 : const enum tree_code rcmp = NE_EXPR;
6744 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6745 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6746 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6747 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6748 : )
6749 : {
6750 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1542;
6751 0 : {
6752 0 : tree res_op0;
6753 0 : res_op0 = captures[0];
6754 0 : tree res_op1;
6755 0 : res_op1 = captures[1];
6756 0 : tree _r;
6757 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6758 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6759 0 : return _r;
6760 : }
6761 0 : next_after_fail1542:;
6762 : }
6763 : }
6764 : }
6765 : }
6766 : break;
6767 : }
6768 : default:;
6769 : }
6770 : break;
6771 : }
6772 63639 : case EQ_EXPR:
6773 63639 : {
6774 63639 : tree _q20 = TREE_OPERAND (_p0, 0);
6775 63639 : tree _q21 = TREE_OPERAND (_p0, 1);
6776 63639 : switch (TREE_CODE (_p1))
6777 : {
6778 5 : case LT_EXPR:
6779 5 : {
6780 5 : tree _q50 = TREE_OPERAND (_p1, 0);
6781 5 : tree _q51 = TREE_OPERAND (_p1, 1);
6782 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6783 : {
6784 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6785 : {
6786 0 : {
6787 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6788 0 : const enum tree_code cmp1 = LT_EXPR;
6789 0 : const enum tree_code cmp2 = EQ_EXPR;
6790 0 : const enum tree_code rcmp = LE_EXPR;
6791 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6792 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6793 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6794 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6795 : )
6796 : {
6797 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1543;
6798 0 : {
6799 0 : tree res_op0;
6800 0 : res_op0 = captures[0];
6801 0 : tree res_op1;
6802 0 : res_op1 = captures[1];
6803 0 : tree _r;
6804 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6805 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6806 0 : return _r;
6807 : }
6808 0 : next_after_fail1543:;
6809 : }
6810 : }
6811 : }
6812 : }
6813 : break;
6814 : }
6815 42 : case LE_EXPR:
6816 42 : {
6817 42 : tree _q50 = TREE_OPERAND (_p1, 0);
6818 42 : tree _q51 = TREE_OPERAND (_p1, 1);
6819 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6820 : {
6821 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6822 : {
6823 0 : {
6824 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6825 0 : const enum tree_code cmp1 = LE_EXPR;
6826 0 : const enum tree_code cmp2 = EQ_EXPR;
6827 0 : const enum tree_code rcmp = LT_EXPR;
6828 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6829 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6830 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6831 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6832 : )
6833 : {
6834 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1544;
6835 0 : {
6836 0 : tree res_op0;
6837 0 : res_op0 = captures[0];
6838 0 : tree res_op1;
6839 0 : res_op1 = captures[1];
6840 0 : tree _r;
6841 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6842 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6843 0 : return _r;
6844 : }
6845 0 : next_after_fail1544:;
6846 : }
6847 : }
6848 : }
6849 : }
6850 : break;
6851 : }
6852 7 : case GT_EXPR:
6853 7 : {
6854 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6855 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6856 7 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6857 : {
6858 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6859 : {
6860 0 : {
6861 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6862 0 : const enum tree_code cmp1 = LT_EXPR;
6863 0 : const enum tree_code cmp2 = EQ_EXPR;
6864 0 : const enum tree_code rcmp = LE_EXPR;
6865 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6866 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6867 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6868 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6869 : )
6870 : {
6871 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1545;
6872 0 : {
6873 0 : tree res_op0;
6874 0 : res_op0 = captures[0];
6875 0 : tree res_op1;
6876 0 : res_op1 = captures[1];
6877 0 : tree _r;
6878 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6879 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6880 0 : return _r;
6881 : }
6882 0 : next_after_fail1545:;
6883 : }
6884 : }
6885 : }
6886 : }
6887 : break;
6888 : }
6889 14 : case GE_EXPR:
6890 14 : {
6891 14 : tree _q50 = TREE_OPERAND (_p1, 0);
6892 14 : tree _q51 = TREE_OPERAND (_p1, 1);
6893 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6894 : {
6895 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6896 : {
6897 0 : {
6898 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6899 0 : const enum tree_code cmp1 = LE_EXPR;
6900 0 : const enum tree_code cmp2 = EQ_EXPR;
6901 0 : const enum tree_code rcmp = LT_EXPR;
6902 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6903 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6904 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6905 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6906 : )
6907 : {
6908 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1546;
6909 0 : {
6910 0 : tree res_op0;
6911 0 : res_op0 = captures[0];
6912 0 : tree res_op1;
6913 0 : res_op1 = captures[1];
6914 0 : tree _r;
6915 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6916 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6917 0 : return _r;
6918 : }
6919 0 : next_after_fail1546:;
6920 : }
6921 : }
6922 : }
6923 : }
6924 : break;
6925 : }
6926 : default:;
6927 : }
6928 : break;
6929 : }
6930 69135 : case NE_EXPR:
6931 69135 : {
6932 69135 : tree _q20 = TREE_OPERAND (_p0, 0);
6933 69135 : tree _q21 = TREE_OPERAND (_p0, 1);
6934 69135 : switch (TREE_CODE (_p1))
6935 : {
6936 7 : case LT_EXPR:
6937 7 : {
6938 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6939 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6940 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6941 : {
6942 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6943 : {
6944 0 : {
6945 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6946 0 : const enum tree_code cmp1 = LT_EXPR;
6947 0 : const enum tree_code cmp2 = NE_EXPR;
6948 0 : const enum tree_code rcmp = GT_EXPR;
6949 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6950 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6951 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6952 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6953 : )
6954 : {
6955 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1547;
6956 0 : {
6957 0 : tree res_op0;
6958 0 : res_op0 = captures[0];
6959 0 : tree res_op1;
6960 0 : res_op1 = captures[1];
6961 0 : tree _r;
6962 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6963 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
6964 0 : return _r;
6965 : }
6966 0 : next_after_fail1547:;
6967 : }
6968 : }
6969 : }
6970 : }
6971 : break;
6972 : }
6973 302 : case LE_EXPR:
6974 302 : {
6975 302 : tree _q50 = TREE_OPERAND (_p1, 0);
6976 302 : tree _q51 = TREE_OPERAND (_p1, 1);
6977 302 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6978 : {
6979 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6980 : {
6981 0 : {
6982 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6983 0 : const enum tree_code cmp1 = LE_EXPR;
6984 0 : const enum tree_code cmp2 = NE_EXPR;
6985 0 : const enum tree_code rcmp = GE_EXPR;
6986 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6987 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6988 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6989 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6990 : )
6991 : {
6992 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1548;
6993 0 : {
6994 0 : tree res_op0;
6995 0 : res_op0 = captures[0];
6996 0 : tree res_op1;
6997 0 : res_op1 = captures[1];
6998 0 : tree _r;
6999 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7000 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
7001 0 : return _r;
7002 : }
7003 0 : next_after_fail1548:;
7004 : }
7005 : }
7006 : }
7007 : }
7008 : break;
7009 : }
7010 323 : case GT_EXPR:
7011 323 : {
7012 323 : tree _q50 = TREE_OPERAND (_p1, 0);
7013 323 : tree _q51 = TREE_OPERAND (_p1, 1);
7014 323 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7015 : {
7016 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7017 : {
7018 0 : {
7019 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7020 0 : const enum tree_code cmp1 = LT_EXPR;
7021 0 : const enum tree_code cmp2 = NE_EXPR;
7022 0 : const enum tree_code rcmp = GT_EXPR;
7023 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7024 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7025 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7026 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7027 : )
7028 : {
7029 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1549;
7030 0 : {
7031 0 : tree res_op0;
7032 0 : res_op0 = captures[0];
7033 0 : tree res_op1;
7034 0 : res_op1 = captures[1];
7035 0 : tree _r;
7036 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7037 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
7038 0 : return _r;
7039 : }
7040 0 : next_after_fail1549:;
7041 : }
7042 : }
7043 : }
7044 : }
7045 : break;
7046 : }
7047 2 : case GE_EXPR:
7048 2 : {
7049 2 : tree _q50 = TREE_OPERAND (_p1, 0);
7050 2 : tree _q51 = TREE_OPERAND (_p1, 1);
7051 2 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7052 : {
7053 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7054 : {
7055 0 : {
7056 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7057 0 : const enum tree_code cmp1 = LE_EXPR;
7058 0 : const enum tree_code cmp2 = NE_EXPR;
7059 0 : const enum tree_code rcmp = GE_EXPR;
7060 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7061 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7062 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7063 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7064 : )
7065 : {
7066 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1550;
7067 0 : {
7068 0 : tree res_op0;
7069 0 : res_op0 = captures[0];
7070 0 : tree res_op1;
7071 0 : res_op1 = captures[1];
7072 0 : tree _r;
7073 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7074 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
7075 0 : return _r;
7076 : }
7077 0 : next_after_fail1550:;
7078 : }
7079 : }
7080 : }
7081 : }
7082 : break;
7083 : }
7084 : default:;
7085 : }
7086 : break;
7087 : }
7088 8276 : case MIN_EXPR:
7089 8276 : {
7090 8276 : tree _q20 = TREE_OPERAND (_p0, 0);
7091 8276 : tree _q21 = TREE_OPERAND (_p0, 1);
7092 8276 : switch (TREE_CODE (_p1))
7093 : {
7094 0 : case MAX_EXPR:
7095 0 : {
7096 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7097 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7098 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7099 : {
7100 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7101 : {
7102 0 : {
7103 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7104 0 : if (!HONOR_NANS (captures[0])
7105 : )
7106 : {
7107 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1551;
7108 0 : {
7109 0 : tree res_op0;
7110 0 : res_op0 = captures[0];
7111 0 : tree res_op1;
7112 0 : res_op1 = captures[1];
7113 0 : tree _r;
7114 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7115 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7116 0 : return _r;
7117 : }
7118 0 : next_after_fail1551:;
7119 : }
7120 : }
7121 : }
7122 : }
7123 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7124 : {
7125 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7126 : {
7127 0 : {
7128 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7129 0 : if (!HONOR_NANS (captures[0])
7130 : )
7131 : {
7132 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1552;
7133 0 : {
7134 0 : tree res_op0;
7135 0 : res_op0 = captures[0];
7136 0 : tree res_op1;
7137 0 : res_op1 = captures[1];
7138 0 : tree _r;
7139 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7140 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7141 0 : return _r;
7142 : }
7143 0 : next_after_fail1552:;
7144 : }
7145 : }
7146 : }
7147 : }
7148 : break;
7149 : }
7150 8276 : default:;
7151 : }
7152 8276 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7153 : {
7154 0 : {
7155 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7156 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7157 0 : if (res) return res;
7158 : }
7159 : }
7160 8276 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7161 : {
7162 616 : {
7163 616 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7164 616 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7165 616 : if (res) return res;
7166 : }
7167 : }
7168 : break;
7169 : }
7170 7895 : case MAX_EXPR:
7171 7895 : {
7172 7895 : tree _q20 = TREE_OPERAND (_p0, 0);
7173 7895 : tree _q21 = TREE_OPERAND (_p0, 1);
7174 7895 : switch (TREE_CODE (_p1))
7175 : {
7176 0 : case MIN_EXPR:
7177 0 : {
7178 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7179 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7180 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7181 : {
7182 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7183 : {
7184 0 : {
7185 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7186 0 : if (!HONOR_NANS (captures[0])
7187 : )
7188 : {
7189 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1553;
7190 0 : {
7191 0 : tree res_op0;
7192 0 : res_op0 = captures[0];
7193 0 : tree res_op1;
7194 0 : res_op1 = captures[1];
7195 0 : tree _r;
7196 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7197 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7198 0 : return _r;
7199 : }
7200 0 : next_after_fail1553:;
7201 : }
7202 : }
7203 : }
7204 : }
7205 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7206 : {
7207 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7208 : {
7209 0 : {
7210 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7211 0 : if (!HONOR_NANS (captures[0])
7212 : )
7213 : {
7214 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1554;
7215 0 : {
7216 0 : tree res_op0;
7217 0 : res_op0 = captures[0];
7218 0 : tree res_op1;
7219 0 : res_op1 = captures[1];
7220 0 : tree _r;
7221 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7222 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7223 0 : return _r;
7224 : }
7225 0 : next_after_fail1554:;
7226 : }
7227 : }
7228 : }
7229 : }
7230 : break;
7231 : }
7232 7895 : default:;
7233 : }
7234 7895 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7235 : {
7236 0 : {
7237 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7238 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7239 0 : if (res) return res;
7240 : }
7241 : }
7242 7895 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7243 : {
7244 425 : {
7245 425 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7246 425 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7247 425 : if (res) return res;
7248 : }
7249 : }
7250 : break;
7251 : }
7252 35886543 : default:;
7253 : }
7254 35886543 : if (tree_with_possible_nonzero_bits (_p0))
7255 : {
7256 15450715 : if (tree_with_known_nonzero_bits (_p1))
7257 : {
7258 13988057 : {
7259 13988057 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7260 13988057 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR);
7261 13988057 : if (res) return res;
7262 : }
7263 : }
7264 : }
7265 35826838 : if (tree_with_known_nonzero_bits (_p0))
7266 : {
7267 11354378 : if (tree_with_possible_nonzero_bits (_p1))
7268 : {
7269 11303766 : {
7270 11303766 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
7271 11303766 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR);
7272 11303766 : if (res) return res;
7273 : }
7274 : }
7275 : }
7276 35825424 : switch (TREE_CODE (_p1))
7277 : {
7278 146 : case MIN_EXPR:
7279 146 : {
7280 146 : tree _q30 = TREE_OPERAND (_p1, 0);
7281 146 : tree _q31 = TREE_OPERAND (_p1, 1);
7282 146 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7283 : {
7284 0 : {
7285 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7286 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7287 0 : if (res) return res;
7288 : }
7289 : }
7290 146 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7291 : {
7292 0 : {
7293 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7294 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7295 0 : if (res) return res;
7296 : }
7297 : }
7298 : break;
7299 : }
7300 1584 : case MAX_EXPR:
7301 1584 : {
7302 1584 : tree _q30 = TREE_OPERAND (_p1, 0);
7303 1584 : tree _q31 = TREE_OPERAND (_p1, 1);
7304 1584 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7305 : {
7306 0 : {
7307 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7308 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7309 0 : if (res) return res;
7310 : }
7311 : }
7312 1584 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7313 : {
7314 0 : {
7315 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7316 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7317 0 : if (res) return res;
7318 : }
7319 : }
7320 : break;
7321 : }
7322 35825424 : default:;
7323 : }
7324 35825424 : switch (TREE_CODE (_p0))
7325 : {
7326 8276 : case MIN_EXPR:
7327 8276 : {
7328 8276 : tree _q20 = TREE_OPERAND (_p0, 0);
7329 8276 : tree _q21 = TREE_OPERAND (_p0, 1);
7330 8276 : switch (TREE_CODE (_q21))
7331 : {
7332 680 : case INTEGER_CST:
7333 680 : {
7334 680 : switch (TREE_CODE (_p1))
7335 : {
7336 0 : case INTEGER_CST:
7337 0 : {
7338 0 : {
7339 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7340 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
7341 0 : if (res) return res;
7342 : }
7343 0 : break;
7344 : }
7345 : default:;
7346 : }
7347 : break;
7348 : }
7349 : default:;
7350 : }
7351 : break;
7352 : }
7353 7766 : case MAX_EXPR:
7354 7766 : {
7355 7766 : tree _q20 = TREE_OPERAND (_p0, 0);
7356 7766 : tree _q21 = TREE_OPERAND (_p0, 1);
7357 7766 : switch (TREE_CODE (_q21))
7358 : {
7359 6716 : case INTEGER_CST:
7360 6716 : {
7361 6716 : switch (TREE_CODE (_p1))
7362 : {
7363 684 : case INTEGER_CST:
7364 684 : {
7365 684 : {
7366 684 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7367 684 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, NE_EXPR);
7368 684 : if (res) return res;
7369 : }
7370 0 : break;
7371 : }
7372 : default:;
7373 : }
7374 : break;
7375 : }
7376 7082 : default:;
7377 : }
7378 7082 : if (integer_zerop (_p1))
7379 : {
7380 34 : {
7381 34 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7382 34 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
7383 34 : if (res) return res;
7384 : }
7385 : }
7386 : break;
7387 : }
7388 1263277 : case BIT_AND_EXPR:
7389 1263277 : {
7390 1263277 : tree _q20 = TREE_OPERAND (_p0, 0);
7391 1263277 : tree _q21 = TREE_OPERAND (_p0, 1);
7392 1263277 : switch (TREE_CODE (_q20))
7393 : {
7394 3603 : case LSHIFT_EXPR:
7395 3603 : {
7396 3603 : tree _q30 = TREE_OPERAND (_q20, 0);
7397 3603 : tree _q31 = TREE_OPERAND (_q20, 1);
7398 3603 : if (integer_pow2p (_q30))
7399 : {
7400 3583 : if (integer_pow2p (_q21))
7401 : {
7402 5 : if (integer_zerop (_p1))
7403 : {
7404 5 : {
7405 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7406 5 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7407 5 : if (res) return res;
7408 : }
7409 : }
7410 : }
7411 : }
7412 3598 : switch (TREE_CODE (_q31))
7413 : {
7414 13 : case INTEGER_CST:
7415 13 : {
7416 13 : switch (TREE_CODE (_q21))
7417 : {
7418 13 : case INTEGER_CST:
7419 13 : {
7420 13 : switch (TREE_CODE (_p1))
7421 : {
7422 13 : case INTEGER_CST:
7423 13 : {
7424 13 : {
7425 13 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7426 13 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, NE_EXPR);
7427 13 : if (res) return res;
7428 : }
7429 0 : break;
7430 : }
7431 : default:;
7432 : }
7433 : break;
7434 : }
7435 : default:;
7436 : }
7437 : break;
7438 : }
7439 3585 : default:;
7440 : }
7441 3585 : if (integer_onep (_q30))
7442 : {
7443 3577 : if (integer_pow2p (_q21))
7444 : {
7445 0 : if (integer_zerop (_p1))
7446 : {
7447 0 : {
7448 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
7449 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7450 0 : if (res) return res;
7451 : }
7452 : }
7453 : }
7454 : }
7455 : break;
7456 : }
7457 4784 : case RSHIFT_EXPR:
7458 4784 : {
7459 4784 : tree _q30 = TREE_OPERAND (_q20, 0);
7460 4784 : tree _q31 = TREE_OPERAND (_q20, 1);
7461 4784 : if (integer_pow2p (_q30))
7462 : {
7463 33 : if (integer_pow2p (_q21))
7464 : {
7465 1 : if (integer_zerop (_p1))
7466 : {
7467 1 : {
7468 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7469 1 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7470 1 : if (res) return res;
7471 : }
7472 : }
7473 : }
7474 : }
7475 4783 : switch (TREE_CODE (_q31))
7476 : {
7477 329 : case INTEGER_CST:
7478 329 : {
7479 329 : switch (TREE_CODE (_q21))
7480 : {
7481 305 : case INTEGER_CST:
7482 305 : {
7483 305 : switch (TREE_CODE (_p1))
7484 : {
7485 280 : case INTEGER_CST:
7486 280 : {
7487 280 : {
7488 280 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7489 280 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR);
7490 280 : if (res) return res;
7491 : }
7492 14 : break;
7493 : }
7494 : default:;
7495 : }
7496 : break;
7497 : }
7498 : default:;
7499 : }
7500 : break;
7501 : }
7502 : default:;
7503 : }
7504 : break;
7505 : }
7506 1262992 : default:;
7507 : }
7508 1262992 : {
7509 1262992 : tree _q20_pops[1];
7510 1262992 : if (tree_nop_convert (_q20, _q20_pops))
7511 : {
7512 138798 : tree _q30 = _q20_pops[0];
7513 138798 : switch (TREE_CODE (_q30))
7514 : {
7515 37188 : case LSHIFT_EXPR:
7516 37188 : {
7517 37188 : tree _q40 = TREE_OPERAND (_q30, 0);
7518 37188 : tree _q41 = TREE_OPERAND (_q30, 1);
7519 37188 : if (integer_onep (_q40))
7520 : {
7521 37188 : if (integer_pow2p (_q21))
7522 : {
7523 0 : if (integer_zerop (_p1))
7524 : {
7525 0 : {
7526 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
7527 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7528 0 : if (res) return res;
7529 : }
7530 : }
7531 : }
7532 : }
7533 : break;
7534 : }
7535 : default:;
7536 : }
7537 : }
7538 : }
7539 1262992 : break;
7540 : }
7541 5161 : case LSHIFT_EXPR:
7542 5161 : {
7543 5161 : tree _q20 = TREE_OPERAND (_p0, 0);
7544 5161 : tree _q21 = TREE_OPERAND (_p0, 1);
7545 5161 : switch (TREE_CODE (_q20))
7546 : {
7547 534 : case INTEGER_CST:
7548 534 : {
7549 534 : switch (TREE_CODE (_p1))
7550 : {
7551 159 : case INTEGER_CST:
7552 159 : {
7553 159 : {
7554 159 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7555 159 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, NE_EXPR);
7556 159 : if (res) return res;
7557 : }
7558 88 : break;
7559 : }
7560 : default:;
7561 : }
7562 : break;
7563 : }
7564 : default:;
7565 : }
7566 : break;
7567 : }
7568 397 : case LROTATE_EXPR:
7569 397 : {
7570 397 : tree _q20 = TREE_OPERAND (_p0, 0);
7571 397 : tree _q21 = TREE_OPERAND (_p0, 1);
7572 397 : switch (TREE_CODE (_p1))
7573 : {
7574 0 : case LROTATE_EXPR:
7575 0 : {
7576 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7577 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7578 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7579 : {
7580 0 : {
7581 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7582 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7583 0 : if (res) return res;
7584 : }
7585 : }
7586 : break;
7587 : }
7588 397 : default:;
7589 : }
7590 397 : switch (TREE_CODE (_q21))
7591 : {
7592 112 : case INTEGER_CST:
7593 112 : {
7594 112 : switch (TREE_CODE (_p1))
7595 : {
7596 112 : case INTEGER_CST:
7597 112 : {
7598 112 : {
7599 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7600 112 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7601 112 : if (res) return res;
7602 : }
7603 0 : break;
7604 : }
7605 : default:;
7606 : }
7607 : break;
7608 : }
7609 285 : default:;
7610 : }
7611 285 : switch (TREE_CODE (_p1))
7612 : {
7613 197 : case INTEGER_CST:
7614 197 : {
7615 197 : {
7616 197 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7617 197 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7618 197 : if (res) return res;
7619 : }
7620 197 : break;
7621 : }
7622 : default:;
7623 : }
7624 : break;
7625 : }
7626 443 : case RROTATE_EXPR:
7627 443 : {
7628 443 : tree _q20 = TREE_OPERAND (_p0, 0);
7629 443 : tree _q21 = TREE_OPERAND (_p0, 1);
7630 443 : switch (TREE_CODE (_p1))
7631 : {
7632 0 : case RROTATE_EXPR:
7633 0 : {
7634 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7635 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7636 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7637 : {
7638 0 : {
7639 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7640 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7641 0 : if (res) return res;
7642 : }
7643 : }
7644 : break;
7645 : }
7646 443 : default:;
7647 : }
7648 443 : switch (TREE_CODE (_q21))
7649 : {
7650 233 : case INTEGER_CST:
7651 233 : {
7652 233 : switch (TREE_CODE (_p1))
7653 : {
7654 12 : case INTEGER_CST:
7655 12 : {
7656 12 : {
7657 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7658 12 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7659 12 : if (res) return res;
7660 : }
7661 0 : break;
7662 : }
7663 : default:;
7664 : }
7665 : break;
7666 : }
7667 431 : default:;
7668 : }
7669 431 : switch (TREE_CODE (_p1))
7670 : {
7671 194 : case INTEGER_CST:
7672 194 : {
7673 194 : {
7674 194 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7675 194 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7676 194 : if (res) return res;
7677 : }
7678 194 : break;
7679 : }
7680 : default:;
7681 : }
7682 : break;
7683 : }
7684 268 : case VEC_COND_EXPR:
7685 268 : {
7686 268 : tree _q20 = TREE_OPERAND (_p0, 0);
7687 268 : tree _q21 = TREE_OPERAND (_p0, 1);
7688 268 : tree _q22 = TREE_OPERAND (_p0, 2);
7689 268 : switch (TREE_CODE (_p1))
7690 : {
7691 8 : case VEC_COND_EXPR:
7692 8 : {
7693 8 : tree _q60 = TREE_OPERAND (_p1, 0);
7694 8 : tree _q61 = TREE_OPERAND (_p1, 1);
7695 8 : tree _q62 = TREE_OPERAND (_p1, 2);
7696 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7697 : {
7698 0 : {
7699 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7700 0 : if (VECTOR_TYPE_P (type)
7701 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7702 0 : || types_match (type, TREE_TYPE (captures[2]))
7703 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7704 : || (optimize_vectors_before_lowering_p ()
7705 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7706 : )
7707 : {
7708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1555;
7709 0 : {
7710 0 : tree res_op0;
7711 0 : res_op0 = captures[1];
7712 0 : tree res_op1;
7713 0 : {
7714 0 : tree _o1[2], _r1;
7715 0 : _o1[0] = captures[2];
7716 0 : _o1[1] = captures[5];
7717 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7718 0 : if (EXPR_P (_r1))
7719 0 : goto next_after_fail1555;
7720 0 : res_op1 = _r1;
7721 : }
7722 0 : tree res_op2;
7723 0 : {
7724 0 : tree _o1[2], _r1;
7725 0 : _o1[0] = captures[3];
7726 0 : _o1[1] = captures[6];
7727 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7728 0 : if (EXPR_P (_r1))
7729 0 : goto next_after_fail1555;
7730 0 : res_op2 = _r1;
7731 : }
7732 0 : tree _r;
7733 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7734 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
7735 0 : return _r;
7736 : }
7737 0 : next_after_fail1555:;
7738 : }
7739 : }
7740 : }
7741 : break;
7742 : }
7743 268 : default:;
7744 : }
7745 268 : {
7746 268 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7747 268 : if (VECTOR_TYPE_P (type)
7748 268 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7749 266 : || types_match (type, TREE_TYPE (captures[2]))
7750 266 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7751 : || (optimize_vectors_before_lowering_p ()
7752 27 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7753 : )
7754 : {
7755 266 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1556;
7756 266 : {
7757 266 : if (! tree_invariant_p (captures[4])) goto next_after_fail1556;
7758 80 : tree res_op0;
7759 80 : res_op0 = captures[1];
7760 80 : tree res_op1;
7761 80 : {
7762 80 : tree _o1[2], _r1;
7763 80 : _o1[0] = captures[2];
7764 80 : _o1[1] = unshare_expr (captures[4]);
7765 80 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7766 80 : if (EXPR_P (_r1))
7767 8 : goto next_after_fail1556;
7768 72 : res_op1 = _r1;
7769 : }
7770 72 : tree res_op2;
7771 72 : {
7772 72 : tree _o1[2], _r1;
7773 72 : _o1[0] = captures[3];
7774 72 : _o1[1] = captures[4];
7775 72 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7776 72 : if (EXPR_P (_r1))
7777 0 : goto next_after_fail1556;
7778 72 : res_op2 = _r1;
7779 : }
7780 72 : tree _r;
7781 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7782 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
7783 72 : return _r;
7784 : }
7785 196 : next_after_fail1556:;
7786 : }
7787 : }
7788 196 : break;
7789 : }
7790 2317413 : case CALL_EXPR:
7791 2317413 : switch (get_call_combined_fn (_p0))
7792 : {
7793 0 : case CFN_BUILT_IN_BITREVERSE128:
7794 0 : if (call_expr_nargs (_p0) == 1)
7795 : {
7796 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7797 0 : switch (TREE_CODE (_p1))
7798 : {
7799 0 : case INTEGER_CST:
7800 0 : {
7801 0 : {
7802 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7803 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7804 0 : if (res) return res;
7805 : }
7806 0 : break;
7807 : }
7808 0 : case CALL_EXPR:
7809 0 : switch (get_call_combined_fn (_p1))
7810 : {
7811 0 : case CFN_BUILT_IN_BITREVERSE128:
7812 0 : if (call_expr_nargs (_p1) == 1)
7813 : {
7814 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7815 0 : {
7816 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7817 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7818 0 : if (res) return res;
7819 : }
7820 : }
7821 : break;
7822 : default:;
7823 : }
7824 : break;
7825 : default:;
7826 : }
7827 : }
7828 : break;
7829 0 : case CFN_BUILT_IN_BITREVERSE16:
7830 0 : if (call_expr_nargs (_p0) == 1)
7831 : {
7832 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7833 0 : switch (TREE_CODE (_p1))
7834 : {
7835 0 : case INTEGER_CST:
7836 0 : {
7837 0 : {
7838 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7839 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7840 0 : if (res) return res;
7841 : }
7842 0 : break;
7843 : }
7844 0 : case CALL_EXPR:
7845 0 : switch (get_call_combined_fn (_p1))
7846 : {
7847 0 : case CFN_BUILT_IN_BITREVERSE16:
7848 0 : if (call_expr_nargs (_p1) == 1)
7849 : {
7850 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7851 0 : {
7852 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7853 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7854 0 : if (res) return res;
7855 : }
7856 : }
7857 : break;
7858 : default:;
7859 : }
7860 : break;
7861 : default:;
7862 : }
7863 : }
7864 : break;
7865 0 : case CFN_BUILT_IN_BITREVERSE32:
7866 0 : if (call_expr_nargs (_p0) == 1)
7867 : {
7868 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7869 0 : switch (TREE_CODE (_p1))
7870 : {
7871 0 : case INTEGER_CST:
7872 0 : {
7873 0 : {
7874 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7875 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7876 0 : if (res) return res;
7877 : }
7878 0 : break;
7879 : }
7880 0 : case CALL_EXPR:
7881 0 : switch (get_call_combined_fn (_p1))
7882 : {
7883 0 : case CFN_BUILT_IN_BITREVERSE32:
7884 0 : if (call_expr_nargs (_p1) == 1)
7885 : {
7886 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7887 0 : {
7888 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7889 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7890 0 : if (res) return res;
7891 : }
7892 : }
7893 : break;
7894 : default:;
7895 : }
7896 : break;
7897 : default:;
7898 : }
7899 : }
7900 : break;
7901 0 : case CFN_BUILT_IN_BITREVERSE64:
7902 0 : if (call_expr_nargs (_p0) == 1)
7903 : {
7904 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7905 0 : switch (TREE_CODE (_p1))
7906 : {
7907 0 : case INTEGER_CST:
7908 0 : {
7909 0 : {
7910 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7911 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
7912 0 : if (res) return res;
7913 : }
7914 0 : break;
7915 : }
7916 0 : case CALL_EXPR:
7917 0 : switch (get_call_combined_fn (_p1))
7918 : {
7919 0 : case CFN_BUILT_IN_BITREVERSE64:
7920 0 : if (call_expr_nargs (_p1) == 1)
7921 : {
7922 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7923 0 : {
7924 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7925 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
7926 0 : if (res) return res;
7927 : }
7928 : }
7929 : break;
7930 : default:;
7931 : }
7932 : break;
7933 : default:;
7934 : }
7935 : }
7936 : break;
7937 2 : case CFN_BUILT_IN_BSWAP128:
7938 2 : if (call_expr_nargs (_p0) == 1)
7939 : {
7940 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7941 2 : switch (TREE_CODE (_p1))
7942 : {
7943 0 : case INTEGER_CST:
7944 0 : {
7945 0 : {
7946 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7947 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
7948 0 : if (res) return res;
7949 : }
7950 0 : break;
7951 : }
7952 1 : case CALL_EXPR:
7953 1 : switch (get_call_combined_fn (_p1))
7954 : {
7955 0 : case CFN_BUILT_IN_BSWAP128:
7956 0 : if (call_expr_nargs (_p1) == 1)
7957 : {
7958 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7959 0 : {
7960 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7961 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
7962 0 : if (res) return res;
7963 : }
7964 : }
7965 : break;
7966 : default:;
7967 : }
7968 : break;
7969 : default:;
7970 : }
7971 : }
7972 : break;
7973 0 : case CFN_BUILT_IN_BITREVERSE8:
7974 0 : if (call_expr_nargs (_p0) == 1)
7975 : {
7976 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7977 0 : switch (TREE_CODE (_p1))
7978 : {
7979 0 : case INTEGER_CST:
7980 0 : {
7981 0 : {
7982 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7983 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
7984 0 : if (res) return res;
7985 : }
7986 0 : break;
7987 : }
7988 0 : case CALL_EXPR:
7989 0 : switch (get_call_combined_fn (_p1))
7990 : {
7991 0 : case CFN_BUILT_IN_BITREVERSE8:
7992 0 : if (call_expr_nargs (_p1) == 1)
7993 : {
7994 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7995 0 : {
7996 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7997 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
7998 0 : if (res) return res;
7999 : }
8000 : }
8001 : break;
8002 : default:;
8003 : }
8004 : break;
8005 : default:;
8006 : }
8007 : }
8008 : break;
8009 11 : case CFN_BUILT_IN_BSWAP16:
8010 11 : if (call_expr_nargs (_p0) == 1)
8011 : {
8012 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8013 11 : switch (TREE_CODE (_p1))
8014 : {
8015 9 : case INTEGER_CST:
8016 9 : {
8017 9 : {
8018 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8019 9 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8020 9 : if (res) return res;
8021 : }
8022 9 : break;
8023 : }
8024 1 : case CALL_EXPR:
8025 1 : switch (get_call_combined_fn (_p1))
8026 : {
8027 1 : case CFN_BUILT_IN_BSWAP16:
8028 1 : if (call_expr_nargs (_p1) == 1)
8029 : {
8030 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8031 1 : {
8032 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8033 1 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8034 1 : if (res) return res;
8035 : }
8036 : }
8037 : break;
8038 : default:;
8039 : }
8040 : break;
8041 : default:;
8042 : }
8043 : }
8044 : break;
8045 7 : case CFN_BUILT_IN_BSWAP32:
8046 7 : if (call_expr_nargs (_p0) == 1)
8047 : {
8048 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8049 7 : switch (TREE_CODE (_p1))
8050 : {
8051 3 : case INTEGER_CST:
8052 3 : {
8053 3 : {
8054 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8055 3 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8056 3 : if (res) return res;
8057 : }
8058 3 : break;
8059 : }
8060 3 : case CALL_EXPR:
8061 3 : switch (get_call_combined_fn (_p1))
8062 : {
8063 3 : case CFN_BUILT_IN_BSWAP32:
8064 3 : if (call_expr_nargs (_p1) == 1)
8065 : {
8066 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8067 3 : {
8068 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8069 3 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8070 3 : if (res) return res;
8071 : }
8072 : }
8073 : break;
8074 : default:;
8075 : }
8076 : break;
8077 : default:;
8078 : }
8079 : }
8080 : break;
8081 7 : case CFN_BUILT_IN_BSWAP64:
8082 7 : if (call_expr_nargs (_p0) == 1)
8083 : {
8084 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8085 7 : switch (TREE_CODE (_p1))
8086 : {
8087 3 : case INTEGER_CST:
8088 3 : {
8089 3 : {
8090 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8091 3 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8092 3 : if (res) return res;
8093 : }
8094 3 : break;
8095 : }
8096 3 : case CALL_EXPR:
8097 3 : switch (get_call_combined_fn (_p1))
8098 : {
8099 3 : case CFN_BUILT_IN_BSWAP64:
8100 3 : if (call_expr_nargs (_p1) == 1)
8101 : {
8102 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8103 3 : {
8104 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8105 3 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8106 3 : if (res) return res;
8107 : }
8108 : }
8109 : break;
8110 : default:;
8111 : }
8112 : break;
8113 : default:;
8114 : }
8115 : }
8116 : break;
8117 : default:;
8118 : }
8119 : break;
8120 35824181 : default:;
8121 : }
8122 35824181 : switch (TREE_CODE (_p1))
8123 : {
8124 24 : case VEC_COND_EXPR:
8125 24 : {
8126 24 : tree _q30 = TREE_OPERAND (_p1, 0);
8127 24 : tree _q31 = TREE_OPERAND (_p1, 1);
8128 24 : tree _q32 = TREE_OPERAND (_p1, 2);
8129 24 : {
8130 24 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8131 24 : if (VECTOR_TYPE_P (type)
8132 24 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8133 24 : || types_match (type, TREE_TYPE (captures[3]))
8134 24 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8135 : || (optimize_vectors_before_lowering_p ()
8136 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8137 : )
8138 : {
8139 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1557;
8140 24 : {
8141 24 : if (! tree_invariant_p (captures[0])) goto next_after_fail1557;
8142 0 : tree res_op0;
8143 0 : res_op0 = captures[2];
8144 0 : tree res_op1;
8145 0 : {
8146 0 : tree _o1[2], _r1;
8147 0 : _o1[0] = unshare_expr (captures[0]);
8148 0 : _o1[1] = captures[3];
8149 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8150 0 : if (EXPR_P (_r1))
8151 0 : goto next_after_fail1557;
8152 0 : res_op1 = _r1;
8153 : }
8154 0 : tree res_op2;
8155 0 : {
8156 0 : tree _o1[2], _r1;
8157 0 : _o1[0] = captures[0];
8158 0 : _o1[1] = captures[4];
8159 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8160 0 : if (EXPR_P (_r1))
8161 0 : goto next_after_fail1557;
8162 0 : res_op2 = _r1;
8163 : }
8164 0 : tree _r;
8165 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8166 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8167 0 : return _r;
8168 : }
8169 24 : next_after_fail1557:;
8170 : }
8171 : }
8172 24 : break;
8173 : }
8174 35824181 : default:;
8175 : }
8176 35824181 : switch (TREE_CODE (_p0))
8177 : {
8178 97012 : case COND_EXPR:
8179 97012 : {
8180 97012 : tree _q20 = TREE_OPERAND (_p0, 0);
8181 97012 : tree _q21 = TREE_OPERAND (_p0, 1);
8182 97012 : tree _q22 = TREE_OPERAND (_p0, 2);
8183 97012 : switch (TREE_CODE (_p1))
8184 : {
8185 276 : case COND_EXPR:
8186 276 : {
8187 276 : tree _q60 = TREE_OPERAND (_p1, 0);
8188 276 : tree _q61 = TREE_OPERAND (_p1, 1);
8189 276 : tree _q62 = TREE_OPERAND (_p1, 2);
8190 276 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8191 : {
8192 72 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8193 : {
8194 72 : {
8195 72 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8196 72 : const enum tree_code eqne = NE_EXPR;
8197 72 : if (!HONOR_NANS (captures[1])
8198 56 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8199 49 : && types_match (type, TREE_TYPE (captures[0]))
8200 49 : && expr_no_side_effects_p (captures[1])
8201 114 : && expr_no_side_effects_p (captures[2])
8202 : )
8203 : {
8204 42 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1558;
8205 42 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1558;
8206 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1558;
8207 42 : {
8208 42 : tree res_op0;
8209 42 : {
8210 42 : tree _o1[2], _r1;
8211 42 : {
8212 42 : tree _o2[2], _r2;
8213 42 : _o2[0] = captures[0];
8214 42 : _o2[1] = captures[3];
8215 42 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8216 42 : _o1[0] = _r2;
8217 : }
8218 42 : {
8219 42 : tree _o2[2], _r2;
8220 42 : _o2[0] = captures[1];
8221 42 : _o2[1] = captures[2];
8222 42 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8223 42 : _o1[1] = _r2;
8224 : }
8225 42 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8226 42 : res_op0 = _r1;
8227 : }
8228 42 : tree res_op1;
8229 42 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8230 42 : tree res_op2;
8231 42 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8232 42 : tree _r;
8233 42 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8234 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
8235 42 : return _r;
8236 : }
8237 30 : next_after_fail1558:;
8238 : }
8239 : }
8240 : }
8241 : }
8242 234 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8243 : {
8244 0 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8245 : {
8246 0 : {
8247 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8248 0 : const enum tree_code eqne = NE_EXPR;
8249 0 : if (!HONOR_NANS (captures[1])
8250 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8251 0 : && types_match (type, TREE_TYPE (captures[0]))
8252 0 : && expr_no_side_effects_p (captures[1])
8253 0 : && expr_no_side_effects_p (captures[2])
8254 : )
8255 : {
8256 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1559;
8257 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1559;
8258 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1559;
8259 0 : {
8260 0 : tree res_op0;
8261 0 : {
8262 0 : tree _o1[2], _r1;
8263 0 : {
8264 0 : tree _o2[2], _r2;
8265 0 : _o2[0] = captures[0];
8266 0 : _o2[1] = captures[3];
8267 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8268 0 : _o1[0] = _r2;
8269 : }
8270 0 : {
8271 0 : tree _o2[2], _r2;
8272 0 : _o2[0] = captures[1];
8273 0 : _o2[1] = captures[2];
8274 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8275 0 : _o1[1] = _r2;
8276 : }
8277 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8278 0 : res_op0 = _r1;
8279 : }
8280 0 : tree res_op1;
8281 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8282 0 : tree res_op2;
8283 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8284 0 : tree _r;
8285 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8286 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
8287 0 : return _r;
8288 : }
8289 0 : next_after_fail1559:;
8290 : }
8291 : }
8292 : }
8293 : }
8294 : break;
8295 : }
8296 : default:;
8297 : }
8298 : break;
8299 : }
8300 196 : case VEC_COND_EXPR:
8301 196 : {
8302 196 : tree _q20 = TREE_OPERAND (_p0, 0);
8303 196 : tree _q21 = TREE_OPERAND (_p0, 1);
8304 196 : tree _q22 = TREE_OPERAND (_p0, 2);
8305 196 : switch (TREE_CODE (_p1))
8306 : {
8307 8 : case VEC_COND_EXPR:
8308 8 : {
8309 8 : tree _q60 = TREE_OPERAND (_p1, 0);
8310 8 : tree _q61 = TREE_OPERAND (_p1, 1);
8311 8 : tree _q62 = TREE_OPERAND (_p1, 2);
8312 8 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8313 : {
8314 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8315 : {
8316 0 : {
8317 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8318 0 : const enum tree_code eqne = NE_EXPR;
8319 0 : if (!HONOR_NANS (captures[1])
8320 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8321 0 : && types_match (type, TREE_TYPE (captures[0]))
8322 0 : && expr_no_side_effects_p (captures[1])
8323 0 : && expr_no_side_effects_p (captures[2])
8324 : )
8325 : {
8326 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1560;
8327 0 : {
8328 0 : tree res_op0;
8329 0 : {
8330 0 : tree _o1[2], _r1;
8331 0 : {
8332 0 : tree _o2[2], _r2;
8333 0 : _o2[0] = captures[0];
8334 0 : _o2[1] = captures[3];
8335 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8336 0 : _o1[0] = _r2;
8337 : }
8338 0 : {
8339 0 : tree _o2[2], _r2;
8340 0 : _o2[0] = captures[1];
8341 0 : _o2[1] = captures[2];
8342 0 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8343 0 : _o1[1] = _r2;
8344 : }
8345 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8346 0 : res_op0 = _r1;
8347 : }
8348 0 : tree res_op1;
8349 0 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8350 0 : tree res_op2;
8351 0 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8352 0 : tree _r;
8353 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8354 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
8355 0 : return _r;
8356 : }
8357 0 : next_after_fail1560:;
8358 : }
8359 : }
8360 : }
8361 : }
8362 8 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8363 : {
8364 8 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8365 : {
8366 8 : {
8367 8 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8368 8 : const enum tree_code eqne = NE_EXPR;
8369 8 : if (!HONOR_NANS (captures[1])
8370 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8371 0 : && types_match (type, TREE_TYPE (captures[0]))
8372 0 : && expr_no_side_effects_p (captures[1])
8373 8 : && expr_no_side_effects_p (captures[2])
8374 : )
8375 : {
8376 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1561;
8377 0 : {
8378 0 : tree res_op0;
8379 0 : {
8380 0 : tree _o1[2], _r1;
8381 0 : {
8382 0 : tree _o2[2], _r2;
8383 0 : _o2[0] = captures[0];
8384 0 : _o2[1] = captures[3];
8385 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8386 0 : _o1[0] = _r2;
8387 : }
8388 0 : {
8389 0 : tree _o2[2], _r2;
8390 0 : _o2[0] = captures[1];
8391 0 : _o2[1] = captures[2];
8392 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8393 0 : _o1[1] = _r2;
8394 : }
8395 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8396 0 : res_op0 = _r1;
8397 : }
8398 0 : tree res_op1;
8399 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8400 0 : tree res_op2;
8401 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8402 0 : tree _r;
8403 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8404 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
8405 0 : return _r;
8406 : }
8407 0 : next_after_fail1561:;
8408 : }
8409 : }
8410 : }
8411 : }
8412 : break;
8413 : }
8414 : default:;
8415 : }
8416 : break;
8417 : }
8418 18225 : case LT_EXPR:
8419 18225 : {
8420 18225 : tree _q20 = TREE_OPERAND (_p0, 0);
8421 18225 : tree _q21 = TREE_OPERAND (_p0, 1);
8422 18225 : if (integer_zerop (_p1))
8423 : {
8424 16717 : {
8425 16717 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8426 16717 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8427 16717 : if (res) return res;
8428 : }
8429 : }
8430 15291 : if (integer_truep (_p1))
8431 : {
8432 559 : {
8433 559 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8434 559 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8435 559 : if (res) return res;
8436 : }
8437 : }
8438 : break;
8439 : }
8440 11965 : case LE_EXPR:
8441 11965 : {
8442 11965 : tree _q20 = TREE_OPERAND (_p0, 0);
8443 11965 : tree _q21 = TREE_OPERAND (_p0, 1);
8444 11965 : if (integer_zerop (_p1))
8445 : {
8446 9405 : {
8447 9405 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8448 9405 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8449 9405 : if (res) return res;
8450 : }
8451 : }
8452 11173 : if (integer_truep (_p1))
8453 : {
8454 461 : {
8455 461 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8456 461 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8457 461 : if (res) return res;
8458 : }
8459 : }
8460 : break;
8461 : }
8462 63639 : case EQ_EXPR:
8463 63639 : {
8464 63639 : tree _q20 = TREE_OPERAND (_p0, 0);
8465 63639 : tree _q21 = TREE_OPERAND (_p0, 1);
8466 63639 : if (integer_zerop (_p1))
8467 : {
8468 36008 : {
8469 36008 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8470 36008 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8471 36008 : if (res) return res;
8472 : }
8473 : }
8474 62518 : if (integer_truep (_p1))
8475 : {
8476 21941 : {
8477 21941 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8478 21941 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8479 21941 : if (res) return res;
8480 : }
8481 : }
8482 : break;
8483 : }
8484 69135 : case NE_EXPR:
8485 69135 : {
8486 69135 : tree _q20 = TREE_OPERAND (_p0, 0);
8487 69135 : tree _q21 = TREE_OPERAND (_p0, 1);
8488 69135 : if (integer_zerop (_p1))
8489 : {
8490 57297 : {
8491 57297 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8492 57297 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8493 57297 : if (res) return res;
8494 : }
8495 : }
8496 34589 : if (integer_truep (_p1))
8497 : {
8498 141 : {
8499 141 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8500 141 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8501 141 : if (res) return res;
8502 : }
8503 : }
8504 : break;
8505 : }
8506 6117 : case GE_EXPR:
8507 6117 : {
8508 6117 : tree _q20 = TREE_OPERAND (_p0, 0);
8509 6117 : tree _q21 = TREE_OPERAND (_p0, 1);
8510 6117 : if (integer_zerop (_p1))
8511 : {
8512 4176 : {
8513 4176 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8514 4176 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8515 4176 : if (res) return res;
8516 : }
8517 : }
8518 5459 : if (integer_truep (_p1))
8519 : {
8520 477 : {
8521 477 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8522 477 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8523 477 : if (res) return res;
8524 : }
8525 : }
8526 : break;
8527 : }
8528 35577 : case GT_EXPR:
8529 35577 : {
8530 35577 : tree _q20 = TREE_OPERAND (_p0, 0);
8531 35577 : tree _q21 = TREE_OPERAND (_p0, 1);
8532 35577 : if (integer_zerop (_p1))
8533 : {
8534 33518 : {
8535 33518 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8536 33518 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8537 33518 : if (res) return res;
8538 : }
8539 : }
8540 29567 : if (integer_truep (_p1))
8541 : {
8542 320 : {
8543 320 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8544 320 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8545 320 : if (res) return res;
8546 : }
8547 : }
8548 : break;
8549 : }
8550 129789 : case UNORDERED_EXPR:
8551 129789 : {
8552 129789 : tree _q20 = TREE_OPERAND (_p0, 0);
8553 129789 : tree _q21 = TREE_OPERAND (_p0, 1);
8554 129789 : if (integer_zerop (_p1))
8555 : {
8556 127641 : {
8557 127641 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8558 127641 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8559 127641 : if (res) return res;
8560 : }
8561 : }
8562 129399 : if (integer_truep (_p1))
8563 : {
8564 42 : {
8565 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8566 42 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8567 42 : if (res) return res;
8568 : }
8569 : }
8570 : break;
8571 : }
8572 113 : case ORDERED_EXPR:
8573 113 : {
8574 113 : tree _q20 = TREE_OPERAND (_p0, 0);
8575 113 : tree _q21 = TREE_OPERAND (_p0, 1);
8576 113 : if (integer_zerop (_p1))
8577 : {
8578 42 : {
8579 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8580 42 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8581 42 : if (res) return res;
8582 : }
8583 : }
8584 71 : if (integer_truep (_p1))
8585 : {
8586 0 : {
8587 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8588 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8589 0 : if (res) return res;
8590 : }
8591 : }
8592 : break;
8593 : }
8594 213 : case UNLT_EXPR:
8595 213 : {
8596 213 : tree _q20 = TREE_OPERAND (_p0, 0);
8597 213 : tree _q21 = TREE_OPERAND (_p0, 1);
8598 213 : if (integer_zerop (_p1))
8599 : {
8600 28 : {
8601 28 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8602 28 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8603 28 : if (res) return res;
8604 : }
8605 : }
8606 185 : if (integer_truep (_p1))
8607 : {
8608 161 : {
8609 161 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8610 161 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8611 161 : if (res) return res;
8612 : }
8613 : }
8614 : break;
8615 : }
8616 1442 : case UNLE_EXPR:
8617 1442 : {
8618 1442 : tree _q20 = TREE_OPERAND (_p0, 0);
8619 1442 : tree _q21 = TREE_OPERAND (_p0, 1);
8620 1442 : if (integer_zerop (_p1))
8621 : {
8622 104 : {
8623 104 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8624 104 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8625 104 : if (res) return res;
8626 : }
8627 : }
8628 1338 : if (integer_truep (_p1))
8629 : {
8630 1314 : {
8631 1314 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8632 1314 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8633 1314 : if (res) return res;
8634 : }
8635 : }
8636 : break;
8637 : }
8638 2009 : case UNGT_EXPR:
8639 2009 : {
8640 2009 : tree _q20 = TREE_OPERAND (_p0, 0);
8641 2009 : tree _q21 = TREE_OPERAND (_p0, 1);
8642 2009 : if (integer_zerop (_p1))
8643 : {
8644 96 : {
8645 96 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8646 96 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8647 96 : if (res) return res;
8648 : }
8649 : }
8650 1913 : if (integer_truep (_p1))
8651 : {
8652 1778 : {
8653 1778 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8654 1778 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8655 1778 : if (res) return res;
8656 : }
8657 : }
8658 : break;
8659 : }
8660 391 : case UNGE_EXPR:
8661 391 : {
8662 391 : tree _q20 = TREE_OPERAND (_p0, 0);
8663 391 : tree _q21 = TREE_OPERAND (_p0, 1);
8664 391 : if (integer_zerop (_p1))
8665 : {
8666 16 : {
8667 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8668 16 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8669 16 : if (res) return res;
8670 : }
8671 : }
8672 375 : if (integer_truep (_p1))
8673 : {
8674 211 : {
8675 211 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8676 211 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8677 211 : if (res) return res;
8678 : }
8679 : }
8680 : break;
8681 : }
8682 161 : case UNEQ_EXPR:
8683 161 : {
8684 161 : tree _q20 = TREE_OPERAND (_p0, 0);
8685 161 : tree _q21 = TREE_OPERAND (_p0, 1);
8686 161 : if (integer_zerop (_p1))
8687 : {
8688 0 : {
8689 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8690 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8691 0 : if (res) return res;
8692 : }
8693 : }
8694 161 : if (integer_truep (_p1))
8695 : {
8696 124 : {
8697 124 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8698 124 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8699 124 : if (res) return res;
8700 : }
8701 : }
8702 : break;
8703 : }
8704 24 : case LTGT_EXPR:
8705 24 : {
8706 24 : tree _q20 = TREE_OPERAND (_p0, 0);
8707 24 : tree _q21 = TREE_OPERAND (_p0, 1);
8708 24 : if (integer_zerop (_p1))
8709 : {
8710 6 : {
8711 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8712 6 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8713 6 : if (res) return res;
8714 : }
8715 : }
8716 24 : if (integer_truep (_p1))
8717 : {
8718 0 : {
8719 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8720 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8721 0 : if (res) return res;
8722 : }
8723 : }
8724 : break;
8725 : }
8726 104251 : case MINUS_EXPR:
8727 104251 : {
8728 104251 : tree _q20 = TREE_OPERAND (_p0, 0);
8729 104251 : tree _q21 = TREE_OPERAND (_p0, 1);
8730 104251 : if (integer_zerop (_p1))
8731 : {
8732 35741 : {
8733 35741 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8734 35741 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR);
8735 35741 : if (res) return res;
8736 : }
8737 : }
8738 : break;
8739 : }
8740 25233 : case POINTER_DIFF_EXPR:
8741 25233 : {
8742 25233 : tree _q20 = TREE_OPERAND (_p0, 0);
8743 25233 : tree _q21 = TREE_OPERAND (_p0, 1);
8744 25233 : if (integer_zerop (_p1))
8745 : {
8746 12788 : {
8747 12788 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8748 12788 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR);
8749 12788 : if (res) return res;
8750 : }
8751 : }
8752 : break;
8753 : }
8754 93739 : case MULT_EXPR:
8755 93739 : {
8756 93739 : tree _q20 = TREE_OPERAND (_p0, 0);
8757 93739 : tree _q21 = TREE_OPERAND (_p0, 1);
8758 93739 : switch (TREE_CODE (_q21))
8759 : {
8760 76270 : case INTEGER_CST:
8761 76270 : {
8762 76270 : switch (TREE_CODE (_p1))
8763 : {
8764 50267 : case INTEGER_CST:
8765 50267 : {
8766 50267 : {
8767 50267 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8768 50267 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR);
8769 50267 : if (res) return res;
8770 : }
8771 33726 : break;
8772 : }
8773 59729 : default:;
8774 : }
8775 59729 : if (integer_zerop (_p1))
8776 : {
8777 10623 : {
8778 10623 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8779 10623 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
8780 10623 : if (res) return res;
8781 : }
8782 : }
8783 : break;
8784 : }
8785 : default:;
8786 : }
8787 : break;
8788 : }
8789 35690296 : default:;
8790 : }
8791 35690296 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8792 : {
8793 106675 : {
8794 106675 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8795 106675 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR);
8796 106675 : if (res) return res;
8797 : }
8798 : }
8799 35590334 : switch (TREE_CODE (_p0))
8800 : {
8801 6869847 : CASE_CONVERT:
8802 6869847 : {
8803 6869847 : tree _q20 = TREE_OPERAND (_p0, 0);
8804 6869847 : switch (TREE_CODE (_p1))
8805 : {
8806 3052743 : CASE_CONVERT:
8807 3052743 : {
8808 3052743 : tree _q40 = TREE_OPERAND (_p1, 0);
8809 3052743 : {
8810 3052743 : tree _q40_pops[1];
8811 3052743 : if (tree_maybe_bit_not (_q40, _q40_pops))
8812 : {
8813 0 : tree _q50 = _q40_pops[0];
8814 0 : {
8815 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
8816 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR);
8817 0 : if (res) return res;
8818 : }
8819 : }
8820 : }
8821 3052743 : break;
8822 : }
8823 6869847 : default:;
8824 : }
8825 6869847 : {
8826 6869847 : tree _q20_pops[1];
8827 6869847 : if (tree_maybe_bit_not (_q20, _q20_pops))
8828 : {
8829 12921 : tree _q30 = _q20_pops[0];
8830 12921 : switch (TREE_CODE (_p1))
8831 : {
8832 0 : CASE_CONVERT:
8833 0 : {
8834 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8835 0 : {
8836 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
8837 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR);
8838 0 : if (res) return res;
8839 : }
8840 0 : break;
8841 : }
8842 : default:;
8843 : }
8844 : }
8845 : }
8846 6869847 : break;
8847 : }
8848 35590334 : default:;
8849 : }
8850 35590334 : {
8851 35590334 : tree _p1_pops[1];
8852 35590334 : if (tree_maybe_bit_not (_p1, _p1_pops))
8853 : {
8854 25847306 : tree _q30 = _p1_pops[0];
8855 25847306 : {
8856 25847306 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8857 25847306 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR);
8858 25847306 : if (res) return res;
8859 : }
8860 : }
8861 : }
8862 35590334 : switch (TREE_CODE (_p0))
8863 : {
8864 13398 : case BIT_NOT_EXPR:
8865 13398 : {
8866 13398 : tree _q20 = TREE_OPERAND (_p0, 0);
8867 13398 : switch (TREE_CODE (_p1))
8868 : {
8869 1 : case BIT_NOT_EXPR:
8870 1 : {
8871 1 : tree _q40 = TREE_OPERAND (_p1, 0);
8872 1 : {
8873 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
8874 1 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR);
8875 1 : if (res) return res;
8876 : }
8877 0 : break;
8878 : }
8879 13397 : default:;
8880 : }
8881 13397 : {
8882 13397 : tree _p1_pops[1];
8883 13397 : if (tree_nop_convert (_p1, _p1_pops))
8884 : {
8885 80 : tree _q40 = _p1_pops[0];
8886 80 : switch (TREE_CODE (_q40))
8887 : {
8888 0 : case BIT_NOT_EXPR:
8889 0 : {
8890 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8891 0 : {
8892 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
8893 0 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR);
8894 0 : if (res) return res;
8895 : }
8896 0 : break;
8897 : }
8898 : default:;
8899 : }
8900 : }
8901 : }
8902 13397 : if (CONSTANT_CLASS_P (_p1))
8903 : {
8904 12231 : {
8905 12231 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8906 12231 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
8907 12231 : if (res) return res;
8908 : }
8909 : }
8910 : break;
8911 : }
8912 35578102 : default:;
8913 : }
8914 35578102 : {
8915 35578102 : tree _p0_pops[1];
8916 35578102 : if (tree_maybe_bit_not (_p0, _p0_pops))
8917 : {
8918 285415 : tree _q20 = _p0_pops[0];
8919 285415 : {
8920 285415 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
8921 285415 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR);
8922 285415 : if (res) return res;
8923 : }
8924 : }
8925 : }
8926 35578100 : {
8927 35578100 : tree _p0_pops[1];
8928 35578100 : if (tree_nop_convert (_p0, _p0_pops))
8929 : {
8930 4683494 : tree _q20 = _p0_pops[0];
8931 4683494 : switch (TREE_CODE (_q20))
8932 : {
8933 1 : case BIT_NOT_EXPR:
8934 1 : {
8935 1 : tree _q30 = TREE_OPERAND (_q20, 0);
8936 1 : switch (TREE_CODE (_p1))
8937 : {
8938 0 : case BIT_NOT_EXPR:
8939 0 : {
8940 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8941 0 : {
8942 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
8943 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, NE_EXPR);
8944 0 : if (res) return res;
8945 : }
8946 0 : break;
8947 : }
8948 1 : default:;
8949 : }
8950 1 : {
8951 1 : tree _p1_pops[1];
8952 1 : if (tree_nop_convert (_p1, _p1_pops))
8953 : {
8954 0 : tree _q50 = _p1_pops[0];
8955 0 : switch (TREE_CODE (_q50))
8956 : {
8957 0 : case BIT_NOT_EXPR:
8958 0 : {
8959 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8960 0 : {
8961 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
8962 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, NE_EXPR);
8963 0 : if (res) return res;
8964 : }
8965 0 : break;
8966 : }
8967 : default:;
8968 : }
8969 : }
8970 : }
8971 1 : if (CONSTANT_CLASS_P (_p1))
8972 : {
8973 1 : {
8974 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
8975 1 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
8976 1 : if (res) return res;
8977 : }
8978 : }
8979 : break;
8980 : }
8981 : default:;
8982 : }
8983 : }
8984 : }
8985 35578099 : switch (TREE_CODE (_p1))
8986 : {
8987 698317 : case REAL_CST:
8988 698317 : {
8989 698317 : {
8990 698317 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8991 698317 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
8992 698317 : if (res) return res;
8993 : }
8994 630219 : break;
8995 : }
8996 35510001 : default:;
8997 : }
8998 35510001 : switch (TREE_CODE (_p0))
8999 : {
9000 1315195 : case PLUS_EXPR:
9001 1315195 : {
9002 1315195 : tree _q20 = TREE_OPERAND (_p0, 0);
9003 1315195 : tree _q21 = TREE_OPERAND (_p0, 1);
9004 1315195 : switch (TREE_CODE (_q21))
9005 : {
9006 3843 : case REAL_CST:
9007 3843 : {
9008 3843 : switch (TREE_CODE (_p1))
9009 : {
9010 3067 : case REAL_CST:
9011 3067 : {
9012 3067 : {
9013 3067 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9014 3067 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR);
9015 3067 : if (res) return res;
9016 : }
9017 3067 : break;
9018 : }
9019 : default:;
9020 : }
9021 : break;
9022 : }
9023 : default:;
9024 : }
9025 : break;
9026 : }
9027 68506 : case MINUS_EXPR:
9028 68506 : {
9029 68506 : tree _q20 = TREE_OPERAND (_p0, 0);
9030 68506 : tree _q21 = TREE_OPERAND (_p0, 1);
9031 68506 : switch (TREE_CODE (_q21))
9032 : {
9033 3215 : case REAL_CST:
9034 3215 : {
9035 3215 : switch (TREE_CODE (_p1))
9036 : {
9037 2849 : case REAL_CST:
9038 2849 : {
9039 2849 : {
9040 2849 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9041 2849 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, MINUS_EXPR, NE_EXPR);
9042 2849 : if (res) return res;
9043 : }
9044 2849 : break;
9045 : }
9046 : default:;
9047 : }
9048 : break;
9049 : }
9050 68506 : default:;
9051 : }
9052 68506 : switch (TREE_CODE (_q20))
9053 : {
9054 87 : case REAL_CST:
9055 87 : {
9056 87 : switch (TREE_CODE (_p1))
9057 : {
9058 44 : case REAL_CST:
9059 44 : {
9060 44 : {
9061 44 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9062 44 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR);
9063 44 : if (res) return res;
9064 : }
9065 44 : break;
9066 : }
9067 : default:;
9068 : }
9069 : break;
9070 : }
9071 : default:;
9072 : }
9073 : break;
9074 : }
9075 9957 : case FLOAT_EXPR:
9076 9957 : {
9077 9957 : tree _q20 = TREE_OPERAND (_p0, 0);
9078 9957 : switch (TREE_CODE (_p1))
9079 : {
9080 1115 : case FLOAT_EXPR:
9081 1115 : {
9082 1115 : tree _q40 = TREE_OPERAND (_p1, 0);
9083 1115 : {
9084 1115 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9085 1115 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9086 1115 : if (res) return res;
9087 : }
9088 971 : break;
9089 : }
9090 1808 : case REAL_CST:
9091 1808 : {
9092 1808 : {
9093 1808 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9094 1808 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9095 1808 : if (res) return res;
9096 : }
9097 1687 : break;
9098 : }
9099 : default:;
9100 : }
9101 : break;
9102 : }
9103 2045 : case EXACT_DIV_EXPR:
9104 2045 : {
9105 2045 : tree _q20 = TREE_OPERAND (_p0, 0);
9106 2045 : tree _q21 = TREE_OPERAND (_p0, 1);
9107 2045 : switch (TREE_CODE (_p1))
9108 : {
9109 36 : case INTEGER_CST:
9110 36 : {
9111 36 : {
9112 36 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9113 36 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, NE_EXPR);
9114 36 : if (res) return res;
9115 : }
9116 0 : break;
9117 : }
9118 : default:;
9119 : }
9120 : break;
9121 : }
9122 6102 : case NEGATE_EXPR:
9123 6102 : {
9124 6102 : tree _q20 = TREE_OPERAND (_p0, 0);
9125 6102 : switch (TREE_CODE (_p1))
9126 : {
9127 4 : case NEGATE_EXPR:
9128 4 : {
9129 4 : tree _q40 = TREE_OPERAND (_p1, 0);
9130 4 : {
9131 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9132 4 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9133 4 : if (res) return res;
9134 : }
9135 0 : break;
9136 : }
9137 6098 : default:;
9138 : }
9139 6098 : if (CONSTANT_CLASS_P (_p1))
9140 : {
9141 577 : {
9142 577 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9143 577 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9144 577 : if (res) return res;
9145 : }
9146 : }
9147 : break;
9148 : }
9149 1940 : case ABS_EXPR:
9150 1940 : {
9151 1940 : tree _q20 = TREE_OPERAND (_p0, 0);
9152 1940 : if (zerop (_p1))
9153 : {
9154 72 : {
9155 72 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9156 72 : const enum tree_code eqne = NE_EXPR;
9157 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1562;
9158 72 : {
9159 72 : tree res_op0;
9160 72 : res_op0 = captures[0];
9161 72 : tree res_op1;
9162 72 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9163 72 : tree _r;
9164 72 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9165 72 : if (TREE_SIDE_EFFECTS (captures[1]))
9166 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9167 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
9168 72 : return _r;
9169 : }
9170 0 : next_after_fail1562:;
9171 : }
9172 : }
9173 : break;
9174 : }
9175 1698 : case ABSU_EXPR:
9176 1698 : {
9177 1698 : tree _q20 = TREE_OPERAND (_p0, 0);
9178 1698 : if (zerop (_p1))
9179 : {
9180 65 : {
9181 65 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9182 65 : const enum tree_code eqne = NE_EXPR;
9183 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1563;
9184 65 : {
9185 65 : tree res_op0;
9186 65 : res_op0 = captures[0];
9187 65 : tree res_op1;
9188 65 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9189 65 : tree _r;
9190 65 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9191 65 : if (TREE_SIDE_EFFECTS (captures[1]))
9192 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9193 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
9194 65 : return _r;
9195 : }
9196 0 : next_after_fail1563:;
9197 : }
9198 : }
9199 : break;
9200 : }
9201 6869767 : CASE_CONVERT:
9202 6869767 : {
9203 6869767 : tree _q20 = TREE_OPERAND (_p0, 0);
9204 6869767 : switch (TREE_CODE (_p1))
9205 : {
9206 3052743 : CASE_CONVERT:
9207 3052743 : {
9208 3052743 : tree _q40 = TREE_OPERAND (_p1, 0);
9209 3052743 : {
9210 3052743 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9211 3052743 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, NE_EXPR);
9212 3052743 : if (res) return res;
9213 : }
9214 2850199 : break;
9215 : }
9216 6667223 : default:;
9217 : }
9218 6667223 : {
9219 6667223 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9220 6667223 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR);
9221 6667223 : if (res) return res;
9222 : }
9223 4579918 : switch (TREE_CODE (_q20))
9224 : {
9225 12 : case BIT_IOR_EXPR:
9226 12 : {
9227 12 : tree _q30 = TREE_OPERAND (_q20, 0);
9228 12 : tree _q31 = TREE_OPERAND (_q20, 1);
9229 12 : switch (TREE_CODE (_q31))
9230 : {
9231 0 : case INTEGER_CST:
9232 0 : {
9233 0 : switch (TREE_CODE (_p1))
9234 : {
9235 0 : case INTEGER_CST:
9236 0 : {
9237 0 : {
9238 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9239 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR);
9240 0 : if (res) return res;
9241 : }
9242 0 : break;
9243 : }
9244 : default:;
9245 : }
9246 : break;
9247 : }
9248 : default:;
9249 : }
9250 : break;
9251 : }
9252 : default:;
9253 : }
9254 : break;
9255 : }
9256 14775940 : case SSA_NAME:
9257 14775940 : {
9258 14775940 : switch (TREE_CODE (_p1))
9259 : {
9260 301769 : case ADDR_EXPR:
9261 301769 : {
9262 301769 : {
9263 301769 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9264 301769 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, NE_EXPR);
9265 301769 : if (res) return res;
9266 : }
9267 301767 : break;
9268 : }
9269 : default:;
9270 : }
9271 : break;
9272 : }
9273 239463 : case BIT_IOR_EXPR:
9274 239463 : {
9275 239463 : tree _q20 = TREE_OPERAND (_p0, 0);
9276 239463 : tree _q21 = TREE_OPERAND (_p0, 1);
9277 239463 : switch (TREE_CODE (_q21))
9278 : {
9279 970 : case INTEGER_CST:
9280 970 : {
9281 970 : switch (TREE_CODE (_p1))
9282 : {
9283 233 : case INTEGER_CST:
9284 233 : {
9285 233 : {
9286 233 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9287 233 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR);
9288 233 : if (res) return res;
9289 : }
9290 233 : break;
9291 : }
9292 : default:;
9293 : }
9294 : break;
9295 : }
9296 : default:;
9297 : }
9298 : break;
9299 : }
9300 29776 : case BIT_XOR_EXPR:
9301 29776 : {
9302 29776 : tree _q20 = TREE_OPERAND (_p0, 0);
9303 29776 : tree _q21 = TREE_OPERAND (_p0, 1);
9304 29776 : if (integer_zerop (_p1))
9305 : {
9306 25444 : {
9307 25444 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9308 25444 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
9309 25444 : if (res) return res;
9310 : }
9311 : }
9312 4332 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9313 : {
9314 1 : {
9315 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9316 1 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9317 1 : if (res) return res;
9318 : }
9319 : }
9320 4331 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9321 : {
9322 2 : {
9323 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9324 2 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9325 2 : if (res) return res;
9326 : }
9327 : }
9328 : break;
9329 : }
9330 2311321 : case CALL_EXPR:
9331 2311321 : switch (get_call_combined_fn (_p0))
9332 : {
9333 42 : case CFN_BUILT_IN_SQRTF:
9334 42 : if (call_expr_nargs (_p0) == 1)
9335 : {
9336 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9337 42 : switch (TREE_CODE (_p1))
9338 : {
9339 0 : case REAL_CST:
9340 0 : {
9341 0 : {
9342 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9343 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9344 0 : if (res) return res;
9345 : }
9346 0 : break;
9347 : }
9348 42 : case CALL_EXPR:
9349 42 : switch (get_call_combined_fn (_p1))
9350 : {
9351 0 : case CFN_BUILT_IN_SQRTF:
9352 0 : if (call_expr_nargs (_p1) == 1)
9353 : {
9354 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9355 0 : {
9356 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9357 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9358 0 : if (res) return res;
9359 : }
9360 : }
9361 : break;
9362 : default:;
9363 : }
9364 : break;
9365 : default:;
9366 : }
9367 : }
9368 : break;
9369 42 : case CFN_BUILT_IN_SQRTL:
9370 42 : if (call_expr_nargs (_p0) == 1)
9371 : {
9372 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9373 42 : switch (TREE_CODE (_p1))
9374 : {
9375 0 : case REAL_CST:
9376 0 : {
9377 0 : {
9378 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9379 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9380 0 : if (res) return res;
9381 : }
9382 0 : break;
9383 : }
9384 42 : case CALL_EXPR:
9385 42 : switch (get_call_combined_fn (_p1))
9386 : {
9387 0 : case CFN_BUILT_IN_SQRTL:
9388 0 : if (call_expr_nargs (_p1) == 1)
9389 : {
9390 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9391 0 : {
9392 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9393 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9394 0 : if (res) return res;
9395 : }
9396 : }
9397 : break;
9398 : default:;
9399 : }
9400 : break;
9401 : default:;
9402 : }
9403 : }
9404 : break;
9405 46 : case CFN_BUILT_IN_SQRT:
9406 46 : if (call_expr_nargs (_p0) == 1)
9407 : {
9408 46 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9409 46 : switch (TREE_CODE (_p1))
9410 : {
9411 2 : case REAL_CST:
9412 2 : {
9413 2 : {
9414 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9415 2 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9416 2 : if (res) return res;
9417 : }
9418 2 : break;
9419 : }
9420 43 : case CALL_EXPR:
9421 43 : switch (get_call_combined_fn (_p1))
9422 : {
9423 0 : case CFN_BUILT_IN_SQRT:
9424 0 : if (call_expr_nargs (_p1) == 1)
9425 : {
9426 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9427 0 : {
9428 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9429 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9430 0 : if (res) return res;
9431 : }
9432 : }
9433 : break;
9434 : default:;
9435 : }
9436 : break;
9437 : default:;
9438 : }
9439 : }
9440 : break;
9441 0 : case CFN_SQRT:
9442 0 : if (call_expr_nargs (_p0) == 1)
9443 : {
9444 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9445 0 : switch (TREE_CODE (_p1))
9446 : {
9447 0 : case REAL_CST:
9448 0 : {
9449 0 : {
9450 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9451 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9452 0 : if (res) return res;
9453 : }
9454 0 : break;
9455 : }
9456 0 : case CALL_EXPR:
9457 0 : switch (get_call_combined_fn (_p1))
9458 : {
9459 0 : case CFN_SQRT:
9460 0 : if (call_expr_nargs (_p1) == 1)
9461 : {
9462 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9463 0 : {
9464 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9465 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9466 0 : if (res) return res;
9467 : }
9468 : }
9469 : break;
9470 : default:;
9471 : }
9472 : break;
9473 : default:;
9474 : }
9475 : }
9476 : break;
9477 : default:;
9478 : }
9479 : break;
9480 33193702 : default:;
9481 : }
9482 33193702 : switch (TREE_CODE (_p1))
9483 : {
9484 840 : case BIT_XOR_EXPR:
9485 840 : {
9486 840 : tree _q30 = TREE_OPERAND (_p1, 0);
9487 840 : tree _q31 = TREE_OPERAND (_p1, 1);
9488 840 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9489 : {
9490 0 : {
9491 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9492 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9493 0 : if (res) return res;
9494 : }
9495 : }
9496 840 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9497 : {
9498 0 : {
9499 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9500 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9501 0 : if (res) return res;
9502 : }
9503 : }
9504 : break;
9505 : }
9506 33193702 : default:;
9507 : }
9508 33193702 : switch (TREE_CODE (_p0))
9509 : {
9510 1262980 : case BIT_AND_EXPR:
9511 1262980 : {
9512 1262980 : tree _q20 = TREE_OPERAND (_p0, 0);
9513 1262980 : tree _q21 = TREE_OPERAND (_p0, 1);
9514 1262980 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9515 : {
9516 179 : {
9517 179 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9518 179 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9519 179 : if (res) return res;
9520 : }
9521 : }
9522 1262952 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9523 : {
9524 4466 : {
9525 4466 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9526 4466 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9527 4466 : if (res) return res;
9528 : }
9529 : }
9530 : break;
9531 : }
9532 33193674 : default:;
9533 : }
9534 33193674 : switch (TREE_CODE (_p1))
9535 : {
9536 15935 : case BIT_AND_EXPR:
9537 15935 : {
9538 15935 : tree _q30 = TREE_OPERAND (_p1, 0);
9539 15935 : tree _q31 = TREE_OPERAND (_p1, 1);
9540 15935 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9541 : {
9542 0 : {
9543 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9544 0 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9545 0 : if (res) return res;
9546 : }
9547 : }
9548 15935 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9549 : {
9550 0 : {
9551 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9552 0 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9553 0 : if (res) return res;
9554 : }
9555 : }
9556 : break;
9557 : }
9558 33193674 : default:;
9559 : }
9560 33193674 : switch (TREE_CODE (_p0))
9561 : {
9562 4579918 : CASE_CONVERT:
9563 4579918 : {
9564 4579918 : tree _q20 = TREE_OPERAND (_p0, 0);
9565 4579918 : switch (TREE_CODE (_q20))
9566 : {
9567 0 : case BIT_AND_EXPR:
9568 0 : {
9569 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9570 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9571 0 : switch (TREE_CODE (_q30))
9572 : {
9573 0 : CASE_CONVERT:
9574 0 : {
9575 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9576 0 : switch (TREE_CODE (_q31))
9577 : {
9578 0 : case INTEGER_CST:
9579 0 : {
9580 0 : switch (TREE_CODE (_p1))
9581 : {
9582 0 : CASE_CONVERT:
9583 0 : {
9584 0 : tree _q70 = TREE_OPERAND (_p1, 0);
9585 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
9586 : {
9587 0 : {
9588 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
9589 0 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR);
9590 0 : if (res) return res;
9591 : }
9592 : }
9593 : break;
9594 : }
9595 : default:;
9596 : }
9597 : break;
9598 : }
9599 : default:;
9600 : }
9601 : break;
9602 : }
9603 : default:;
9604 : }
9605 : break;
9606 : }
9607 4579918 : default:;
9608 : }
9609 4579918 : switch (TREE_CODE (_p1))
9610 : {
9611 2850199 : CASE_CONVERT:
9612 2850199 : {
9613 2850199 : tree _q40 = TREE_OPERAND (_p1, 0);
9614 2850199 : switch (TREE_CODE (_q40))
9615 : {
9616 0 : case BIT_AND_EXPR:
9617 0 : {
9618 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9619 0 : tree _q51 = TREE_OPERAND (_q40, 1);
9620 0 : switch (TREE_CODE (_q50))
9621 : {
9622 0 : CASE_CONVERT:
9623 0 : {
9624 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9625 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9626 : {
9627 0 : switch (TREE_CODE (_q51))
9628 : {
9629 0 : case INTEGER_CST:
9630 0 : {
9631 0 : {
9632 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
9633 0 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR);
9634 0 : if (res) return res;
9635 : }
9636 0 : break;
9637 : }
9638 : default:;
9639 : }
9640 : }
9641 : break;
9642 : }
9643 : default:;
9644 : }
9645 : break;
9646 : }
9647 : default:;
9648 : }
9649 : break;
9650 : }
9651 : default:;
9652 : }
9653 : break;
9654 : }
9655 239463 : case BIT_IOR_EXPR:
9656 239463 : {
9657 239463 : tree _q20 = TREE_OPERAND (_p0, 0);
9658 239463 : tree _q21 = TREE_OPERAND (_p0, 1);
9659 239463 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9660 : {
9661 128 : {
9662 128 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9663 128 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9664 128 : if (res) return res;
9665 : }
9666 : }
9667 239455 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9668 : {
9669 253 : {
9670 253 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9671 253 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9672 253 : if (res) return res;
9673 : }
9674 : }
9675 : break;
9676 : }
9677 33193666 : default:;
9678 : }
9679 33193666 : switch (TREE_CODE (_p1))
9680 : {
9681 564 : case BIT_IOR_EXPR:
9682 564 : {
9683 564 : tree _q30 = TREE_OPERAND (_p1, 0);
9684 564 : tree _q31 = TREE_OPERAND (_p1, 1);
9685 564 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9686 : {
9687 0 : {
9688 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
9689 0 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9690 0 : if (res) return res;
9691 : }
9692 : }
9693 564 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9694 : {
9695 0 : {
9696 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
9697 0 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9698 0 : if (res) return res;
9699 : }
9700 : }
9701 : break;
9702 : }
9703 33193666 : default:;
9704 : }
9705 33193666 : switch (TREE_CODE (_p0))
9706 : {
9707 4579918 : CASE_CONVERT:
9708 4579918 : {
9709 4579918 : tree _q20 = TREE_OPERAND (_p0, 0);
9710 4579918 : switch (TREE_CODE (_q20))
9711 : {
9712 661 : case BIT_XOR_EXPR:
9713 661 : {
9714 661 : tree _q30 = TREE_OPERAND (_q20, 0);
9715 661 : tree _q31 = TREE_OPERAND (_q20, 1);
9716 661 : switch (TREE_CODE (_q31))
9717 : {
9718 0 : case INTEGER_CST:
9719 0 : {
9720 0 : switch (TREE_CODE (_p1))
9721 : {
9722 0 : case INTEGER_CST:
9723 0 : {
9724 0 : {
9725 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9726 0 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9727 0 : if (res) return res;
9728 : }
9729 0 : break;
9730 : }
9731 : default:;
9732 : }
9733 : break;
9734 : }
9735 : default:;
9736 : }
9737 : break;
9738 : }
9739 : default:;
9740 : }
9741 : break;
9742 : }
9743 4329 : case BIT_XOR_EXPR:
9744 4329 : {
9745 4329 : tree _q20 = TREE_OPERAND (_p0, 0);
9746 4329 : tree _q21 = TREE_OPERAND (_p0, 1);
9747 4329 : switch (TREE_CODE (_q21))
9748 : {
9749 884 : case INTEGER_CST:
9750 884 : {
9751 884 : switch (TREE_CODE (_p1))
9752 : {
9753 10 : case INTEGER_CST:
9754 10 : {
9755 10 : {
9756 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9757 10 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9758 10 : if (res) return res;
9759 : }
9760 0 : break;
9761 : }
9762 : default:;
9763 : }
9764 : break;
9765 : }
9766 : default:;
9767 : }
9768 : break;
9769 : }
9770 33193656 : default:;
9771 : }
9772 33193656 : {
9773 33193656 : tree _p0_pops[1];
9774 33193656 : if (tree_nop_convert (_p0, _p0_pops))
9775 : {
9776 3869167 : tree _q20 = _p0_pops[0];
9777 3869167 : if (integer_zerop (_p1))
9778 : {
9779 924900 : {
9780 924900 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9781 924900 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9782 924900 : if (res) return res;
9783 : }
9784 : }
9785 : }
9786 : }
9787 32622473 : if (integer_zerop (_p1))
9788 : {
9789 18157959 : {
9790 18157959 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9791 18157959 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9792 18157959 : if (res) return res;
9793 : }
9794 : }
9795 32447386 : switch (TREE_CODE (_p0))
9796 : {
9797 1262952 : case BIT_AND_EXPR:
9798 1262952 : {
9799 1262952 : tree _q20 = TREE_OPERAND (_p0, 0);
9800 1262952 : tree _q21 = TREE_OPERAND (_p0, 1);
9801 1262952 : switch (TREE_CODE (_p1))
9802 : {
9803 14506 : case BIT_AND_EXPR:
9804 14506 : {
9805 14506 : tree _q50 = TREE_OPERAND (_p1, 0);
9806 14506 : tree _q51 = TREE_OPERAND (_p1, 1);
9807 14506 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9808 : {
9809 14261 : {
9810 14261 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9811 14261 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9812 14261 : if (res) return res;
9813 : }
9814 : }
9815 245 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9816 : {
9817 2 : {
9818 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9819 2 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9820 2 : if (res) return res;
9821 : }
9822 : }
9823 243 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9824 : {
9825 1 : {
9826 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
9827 1 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9828 1 : if (res) return res;
9829 : }
9830 : }
9831 242 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9832 : {
9833 7 : {
9834 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
9835 7 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9836 7 : if (res) return res;
9837 : }
9838 : }
9839 : break;
9840 : }
9841 1248681 : default:;
9842 : }
9843 1248681 : if (integer_pow2p (_q21))
9844 : {
9845 644845 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9846 : {
9847 579 : {
9848 579 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9849 579 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
9850 579 : if (res) return res;
9851 : }
9852 : }
9853 : }
9854 1248106 : switch (TREE_CODE (_q20))
9855 : {
9856 194044 : CASE_CONVERT:
9857 194044 : {
9858 194044 : tree _q30 = TREE_OPERAND (_q20, 0);
9859 194044 : if (integer_pow2p (_q21))
9860 : {
9861 96184 : if (integer_zerop (_p1))
9862 : {
9863 96089 : {
9864 96089 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
9865 96089 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
9866 96089 : if (res) return res;
9867 : }
9868 : }
9869 : }
9870 : break;
9871 : }
9872 1244156 : default:;
9873 : }
9874 1244156 : if (integer_pow2p (_q21))
9875 : {
9876 640320 : if (integer_zerop (_p1))
9877 : {
9878 636895 : {
9879 636895 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
9880 636895 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
9881 636895 : if (res) return res;
9882 : }
9883 : }
9884 : }
9885 : break;
9886 : }
9887 5406 : case GE_EXPR:
9888 5406 : {
9889 5406 : tree _q20 = TREE_OPERAND (_p0, 0);
9890 5406 : tree _q21 = TREE_OPERAND (_p0, 1);
9891 5406 : if (integer_zerop (_q21))
9892 : {
9893 963 : switch (TREE_CODE (_p1))
9894 : {
9895 1 : case GE_EXPR:
9896 1 : {
9897 1 : tree _q50 = TREE_OPERAND (_p1, 0);
9898 1 : tree _q51 = TREE_OPERAND (_p1, 1);
9899 1 : if (integer_zerop (_q51))
9900 : {
9901 1 : {
9902 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9903 1 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, GE_EXPR, NE_EXPR, LT_EXPR);
9904 1 : if (res) return res;
9905 : }
9906 : }
9907 : break;
9908 : }
9909 3 : case LT_EXPR:
9910 3 : {
9911 3 : tree _q50 = TREE_OPERAND (_p1, 0);
9912 3 : tree _q51 = TREE_OPERAND (_p1, 1);
9913 3 : if (integer_zerop (_q51))
9914 : {
9915 3 : {
9916 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
9917 3 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
9918 3 : if (res) return res;
9919 : }
9920 : }
9921 : break;
9922 : }
9923 : default:;
9924 : }
9925 : }
9926 : break;
9927 : }
9928 15235 : case LT_EXPR:
9929 15235 : {
9930 15235 : tree _q20 = TREE_OPERAND (_p0, 0);
9931 15235 : tree _q21 = TREE_OPERAND (_p0, 1);
9932 15235 : if (integer_zerop (_q21))
9933 : {
9934 8595 : switch (TREE_CODE (_p1))
9935 : {
9936 69 : case LT_EXPR:
9937 69 : {
9938 69 : tree _q50 = TREE_OPERAND (_p1, 0);
9939 69 : tree _q51 = TREE_OPERAND (_p1, 1);
9940 69 : if (integer_zerop (_q51))
9941 : {
9942 69 : {
9943 69 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9944 69 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LT_EXPR);
9945 69 : if (res) return res;
9946 : }
9947 : }
9948 : break;
9949 : }
9950 17 : case GE_EXPR:
9951 17 : {
9952 17 : tree _q50 = TREE_OPERAND (_p1, 0);
9953 17 : tree _q51 = TREE_OPERAND (_p1, 1);
9954 17 : if (integer_zerop (_q51))
9955 : {
9956 17 : {
9957 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9958 17 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
9959 17 : if (res) return res;
9960 : }
9961 : }
9962 : break;
9963 : }
9964 : default:;
9965 : }
9966 : }
9967 : break;
9968 : }
9969 239455 : case BIT_IOR_EXPR:
9970 239455 : {
9971 239455 : tree _q20 = TREE_OPERAND (_p0, 0);
9972 239455 : tree _q21 = TREE_OPERAND (_p0, 1);
9973 239455 : switch (TREE_CODE (_q21))
9974 : {
9975 261 : CASE_CONVERT:
9976 261 : {
9977 261 : tree _q40 = TREE_OPERAND (_q21, 0);
9978 261 : switch (TREE_CODE (_q40))
9979 : {
9980 0 : case NE_EXPR:
9981 0 : {
9982 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9983 0 : tree _q51 = TREE_OPERAND (_q40, 1);
9984 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9985 : {
9986 0 : if (integer_zerop (_q51))
9987 : {
9988 0 : if (integer_zerop (_p1))
9989 : {
9990 0 : {
9991 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9992 0 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR);
9993 0 : if (res) return res;
9994 : }
9995 : }
9996 : }
9997 : }
9998 : break;
9999 : }
10000 : default:;
10001 : }
10002 : break;
10003 : }
10004 239455 : default:;
10005 : }
10006 239455 : switch (TREE_CODE (_q20))
10007 : {
10008 800 : CASE_CONVERT:
10009 800 : {
10010 800 : tree _q30 = TREE_OPERAND (_q20, 0);
10011 800 : switch (TREE_CODE (_q30))
10012 : {
10013 0 : case NE_EXPR:
10014 0 : {
10015 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10016 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10017 0 : if (integer_zerop (_q41))
10018 : {
10019 0 : if ((_q21 == _q40 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q40, 0) && types_match (_q21, _q40)))
10020 : {
10021 0 : if (integer_zerop (_p1))
10022 : {
10023 0 : {
10024 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
10025 0 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR);
10026 0 : if (res) return res;
10027 : }
10028 : }
10029 : }
10030 : }
10031 : break;
10032 : }
10033 : default:;
10034 : }
10035 : break;
10036 : }
10037 239455 : default:;
10038 : }
10039 239455 : switch (TREE_CODE (_q21))
10040 : {
10041 24 : case NE_EXPR:
10042 24 : {
10043 24 : tree _q40 = TREE_OPERAND (_q21, 0);
10044 24 : tree _q41 = TREE_OPERAND (_q21, 1);
10045 24 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10046 : {
10047 0 : if (integer_zerop (_q41))
10048 : {
10049 0 : if (integer_zerop (_p1))
10050 : {
10051 0 : {
10052 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10053 0 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR);
10054 0 : if (res) return res;
10055 : }
10056 : }
10057 : }
10058 : }
10059 : break;
10060 : }
10061 239455 : default:;
10062 : }
10063 239455 : switch (TREE_CODE (_q20))
10064 : {
10065 2 : case NE_EXPR:
10066 2 : {
10067 2 : tree _q30 = TREE_OPERAND (_q20, 0);
10068 2 : tree _q31 = TREE_OPERAND (_q20, 1);
10069 2 : if (integer_zerop (_q31))
10070 : {
10071 1 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
10072 : {
10073 0 : if (integer_zerop (_p1))
10074 : {
10075 0 : {
10076 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10077 0 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR);
10078 0 : if (res) return res;
10079 : }
10080 : }
10081 : }
10082 : }
10083 : break;
10084 : }
10085 : default:;
10086 : }
10087 : break;
10088 : }
10089 4008735 : CASE_CONVERT:
10090 4008735 : {
10091 4008735 : tree _q20 = TREE_OPERAND (_p0, 0);
10092 4008735 : switch (TREE_CODE (_q20))
10093 : {
10094 2755301 : case ADDR_EXPR:
10095 2755301 : {
10096 2755301 : switch (TREE_CODE (_p1))
10097 : {
10098 2725952 : CASE_CONVERT:
10099 2725952 : {
10100 2725952 : tree _q40 = TREE_OPERAND (_p1, 0);
10101 2725952 : switch (TREE_CODE (_q40))
10102 : {
10103 2725952 : case ADDR_EXPR:
10104 2725952 : {
10105 2725952 : {
10106 2725952 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10107 2725952 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR);
10108 2725952 : if (res) return res;
10109 : }
10110 33 : break;
10111 : }
10112 : default:;
10113 : }
10114 : break;
10115 : }
10116 21277 : case ADDR_EXPR:
10117 21277 : {
10118 21277 : {
10119 21277 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10120 21277 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR);
10121 21277 : if (res) return res;
10122 : }
10123 7935 : break;
10124 : }
10125 : default:;
10126 : }
10127 : break;
10128 : }
10129 : default:;
10130 : }
10131 : break;
10132 : }
10133 60242 : case ADDR_EXPR:
10134 60242 : {
10135 60242 : switch (TREE_CODE (_p1))
10136 : {
10137 205 : CASE_CONVERT:
10138 205 : {
10139 205 : tree _q30 = TREE_OPERAND (_p1, 0);
10140 205 : switch (TREE_CODE (_q30))
10141 : {
10142 205 : case ADDR_EXPR:
10143 205 : {
10144 205 : {
10145 205 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10146 205 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR);
10147 205 : if (res) return res;
10148 : }
10149 143 : break;
10150 : }
10151 : default:;
10152 : }
10153 : break;
10154 : }
10155 51876 : case ADDR_EXPR:
10156 51876 : {
10157 51876 : {
10158 51876 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10159 51876 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR);
10160 51876 : if (res) return res;
10161 : }
10162 4079 : break;
10163 : }
10164 : default:;
10165 : }
10166 : break;
10167 : }
10168 29628719 : default:;
10169 : }
10170 29628719 : {
10171 29628719 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10172 29628719 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR);
10173 29628719 : if (res) return res;
10174 : }
10175 29619901 : switch (TREE_CODE (_p0))
10176 : {
10177 1269474 : CASE_CONVERT:
10178 1269474 : {
10179 1269474 : tree _q20 = TREE_OPERAND (_p0, 0);
10180 1269474 : switch (TREE_CODE (_p1))
10181 : {
10182 816208 : case INTEGER_CST:
10183 816208 : {
10184 816208 : {
10185 816208 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10186 816208 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10187 816208 : if (res) return res;
10188 : }
10189 807696 : break;
10190 : }
10191 1260962 : default:;
10192 : }
10193 1260962 : switch (TREE_CODE (_q20))
10194 : {
10195 8 : case NE_EXPR:
10196 8 : {
10197 8 : tree _q30 = TREE_OPERAND (_q20, 0);
10198 8 : tree _q31 = TREE_OPERAND (_q20, 1);
10199 8 : switch (TREE_CODE (_q31))
10200 : {
10201 8 : case INTEGER_CST:
10202 8 : {
10203 8 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10204 : {
10205 0 : {
10206 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10207 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10208 0 : if (res) return res;
10209 : }
10210 : }
10211 : break;
10212 : }
10213 : default:;
10214 : }
10215 : break;
10216 : }
10217 0 : case EQ_EXPR:
10218 0 : {
10219 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10220 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10221 0 : switch (TREE_CODE (_q31))
10222 : {
10223 0 : case INTEGER_CST:
10224 0 : {
10225 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10226 : {
10227 0 : {
10228 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10229 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10230 0 : if (res) return res;
10231 : }
10232 : }
10233 : break;
10234 : }
10235 : default:;
10236 : }
10237 : break;
10238 : }
10239 : default:;
10240 : }
10241 : break;
10242 : }
10243 29611389 : default:;
10244 : }
10245 29611389 : switch (TREE_CODE (_p1))
10246 : {
10247 517785 : CASE_CONVERT:
10248 517785 : {
10249 517785 : tree _q30 = TREE_OPERAND (_p1, 0);
10250 517785 : switch (TREE_CODE (_q30))
10251 : {
10252 0 : case NE_EXPR:
10253 0 : {
10254 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10255 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10256 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10257 : {
10258 0 : switch (TREE_CODE (_q41))
10259 : {
10260 0 : case INTEGER_CST:
10261 0 : {
10262 0 : {
10263 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10264 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10265 0 : if (res) return res;
10266 : }
10267 0 : break;
10268 : }
10269 : default:;
10270 : }
10271 : }
10272 : break;
10273 : }
10274 0 : case EQ_EXPR:
10275 0 : {
10276 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10277 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10278 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10279 : {
10280 0 : switch (TREE_CODE (_q41))
10281 : {
10282 0 : case INTEGER_CST:
10283 0 : {
10284 0 : {
10285 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10286 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10287 0 : if (res) return res;
10288 : }
10289 0 : break;
10290 : }
10291 : default:;
10292 : }
10293 : }
10294 : break;
10295 : }
10296 : default:;
10297 : }
10298 : break;
10299 : }
10300 29611389 : default:;
10301 : }
10302 29611389 : if (integer_zerop (_p1))
10303 : {
10304 17957389 : {
10305 17957389 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10306 17957389 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10307 17957389 : && types_match (type, TREE_TYPE (captures[0]))
10308 : )
10309 : {
10310 3337097 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1564;
10311 3337097 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1564;
10312 3337097 : {
10313 3337097 : tree res_op0;
10314 3337097 : res_op0 = captures[0];
10315 3337097 : tree _r;
10316 3337097 : _r = non_lvalue_loc (loc, res_op0);
10317 3337097 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
10318 3337097 : return _r;
10319 : }
10320 : next_after_fail1564:;
10321 : }
10322 : }
10323 : }
10324 26274292 : switch (TREE_CODE (_p0))
10325 : {
10326 962491 : case BIT_AND_EXPR:
10327 962491 : {
10328 962491 : tree _q20 = TREE_OPERAND (_p0, 0);
10329 962491 : tree _q21 = TREE_OPERAND (_p0, 1);
10330 962491 : switch (TREE_CODE (_q21))
10331 : {
10332 2054 : case VECTOR_CST:
10333 2054 : {
10334 2054 : if (integer_zerop (_p1))
10335 : {
10336 2054 : {
10337 2054 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10338 2054 : const enum tree_code cmp = NE_EXPR;
10339 2054 : const enum tree_code icmp = GT_EXPR;
10340 2054 : {
10341 2054 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10342 2054 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10343 : )
10344 : {
10345 13 : {
10346 13 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10347 13 : ? optab_vector : optab_default;
10348 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10349 13 : if (target_supports_op_p (utype, icmp, optab)
10350 13 : || (optimize_vectors_before_lowering_p ()
10351 7 : && (!target_supports_op_p (type, cmp, optab)
10352 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10353 : )
10354 : {
10355 7 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10356 : )
10357 : {
10358 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1565;
10359 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1565;
10360 0 : {
10361 0 : tree res_op0;
10362 0 : res_op0 = captures[1];
10363 0 : tree res_op1;
10364 0 : res_op1 = csts;
10365 0 : tree _r;
10366 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10367 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10368 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10369 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10370 0 : return _r;
10371 : }
10372 2047 : next_after_fail1565:;
10373 : }
10374 : else
10375 : {
10376 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1566;
10377 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1566;
10378 7 : {
10379 7 : tree res_op0;
10380 7 : {
10381 7 : tree _o1[1], _r1;
10382 7 : _o1[0] = captures[1];
10383 7 : if (TREE_TYPE (_o1[0]) != utype)
10384 : {
10385 7 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10386 : }
10387 : else
10388 : _r1 = _o1[0];
10389 7 : res_op0 = _r1;
10390 : }
10391 7 : tree res_op1;
10392 7 : res_op1 = csts;
10393 7 : tree _r;
10394 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10395 7 : if (TREE_SIDE_EFFECTS (captures[2]))
10396 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10397 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
10398 7 : return _r;
10399 : }
10400 2047 : next_after_fail1566:;
10401 : }
10402 : }
10403 : }
10404 : }
10405 : }
10406 : }
10407 : }
10408 : break;
10409 : }
10410 766797 : case INTEGER_CST:
10411 766797 : {
10412 766797 : if (integer_zerop (_p1))
10413 : {
10414 731331 : {
10415 731331 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10416 731331 : const enum tree_code cmp = NE_EXPR;
10417 731331 : const enum tree_code icmp = GT_EXPR;
10418 731331 : {
10419 731331 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10420 731331 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10421 : )
10422 : {
10423 1261 : {
10424 1261 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10425 1261 : ? optab_vector : optab_default;
10426 1261 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10427 1261 : if (target_supports_op_p (utype, icmp, optab)
10428 1261 : || (optimize_vectors_before_lowering_p ()
10429 1092 : && (!target_supports_op_p (type, cmp, optab)
10430 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10431 : )
10432 : {
10433 1092 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10434 : )
10435 : {
10436 989 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1567;
10437 989 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1567;
10438 989 : {
10439 989 : tree res_op0;
10440 989 : res_op0 = captures[1];
10441 989 : tree res_op1;
10442 989 : res_op1 = csts;
10443 989 : tree _r;
10444 989 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10445 989 : if (TREE_SIDE_EFFECTS (captures[2]))
10446 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10447 989 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10448 989 : return _r;
10449 : }
10450 730239 : next_after_fail1567:;
10451 : }
10452 : else
10453 : {
10454 103 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1568;
10455 103 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1568;
10456 103 : {
10457 103 : tree res_op0;
10458 103 : {
10459 103 : tree _o1[1], _r1;
10460 103 : _o1[0] = captures[1];
10461 103 : if (TREE_TYPE (_o1[0]) != utype)
10462 : {
10463 103 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10464 : }
10465 : else
10466 : _r1 = _o1[0];
10467 103 : res_op0 = _r1;
10468 : }
10469 103 : tree res_op1;
10470 103 : res_op1 = csts;
10471 103 : tree _r;
10472 103 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10473 103 : if (TREE_SIDE_EFFECTS (captures[2]))
10474 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10475 103 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
10476 103 : return _r;
10477 : }
10478 730239 : next_after_fail1568:;
10479 : }
10480 : }
10481 : }
10482 : }
10483 : }
10484 : }
10485 : }
10486 : break;
10487 : }
10488 961392 : default:;
10489 : }
10490 961392 : switch (TREE_CODE (_q20))
10491 : {
10492 0 : case VECTOR_CST:
10493 0 : {
10494 0 : if (integer_zerop (_p1))
10495 : {
10496 0 : {
10497 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10498 0 : const enum tree_code cmp = NE_EXPR;
10499 0 : const enum tree_code icmp = GT_EXPR;
10500 0 : {
10501 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10502 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10503 : )
10504 : {
10505 0 : {
10506 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10507 0 : ? optab_vector : optab_default;
10508 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10509 0 : if (target_supports_op_p (utype, icmp, optab)
10510 0 : || (optimize_vectors_before_lowering_p ()
10511 0 : && (!target_supports_op_p (type, cmp, optab)
10512 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10513 : )
10514 : {
10515 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10516 : )
10517 : {
10518 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1569;
10519 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1569;
10520 0 : {
10521 0 : tree res_op0;
10522 0 : res_op0 = captures[1];
10523 0 : tree res_op1;
10524 0 : res_op1 = csts;
10525 0 : tree _r;
10526 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10527 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10528 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10529 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10530 0 : return _r;
10531 : }
10532 0 : next_after_fail1569:;
10533 : }
10534 : else
10535 : {
10536 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1570;
10537 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1570;
10538 0 : {
10539 0 : tree res_op0;
10540 0 : {
10541 0 : tree _o1[1], _r1;
10542 0 : _o1[0] = captures[1];
10543 0 : if (TREE_TYPE (_o1[0]) != utype)
10544 : {
10545 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10546 : }
10547 : else
10548 : _r1 = _o1[0];
10549 0 : res_op0 = _r1;
10550 : }
10551 0 : tree res_op1;
10552 0 : res_op1 = csts;
10553 0 : tree _r;
10554 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10555 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10556 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10557 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
10558 0 : return _r;
10559 : }
10560 0 : next_after_fail1570:;
10561 : }
10562 : }
10563 : }
10564 : }
10565 : }
10566 : }
10567 : }
10568 : break;
10569 : }
10570 0 : case INTEGER_CST:
10571 0 : {
10572 0 : if (integer_zerop (_p1))
10573 : {
10574 0 : {
10575 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10576 0 : const enum tree_code cmp = NE_EXPR;
10577 0 : const enum tree_code icmp = GT_EXPR;
10578 0 : {
10579 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10580 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10581 : )
10582 : {
10583 0 : {
10584 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10585 0 : ? optab_vector : optab_default;
10586 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10587 0 : if (target_supports_op_p (utype, icmp, optab)
10588 0 : || (optimize_vectors_before_lowering_p ()
10589 0 : && (!target_supports_op_p (type, cmp, optab)
10590 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10591 : )
10592 : {
10593 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10594 : )
10595 : {
10596 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1571;
10597 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1571;
10598 0 : {
10599 0 : tree res_op0;
10600 0 : res_op0 = captures[1];
10601 0 : tree res_op1;
10602 0 : res_op1 = csts;
10603 0 : tree _r;
10604 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10605 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10606 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10607 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10608 0 : return _r;
10609 : }
10610 0 : next_after_fail1571:;
10611 : }
10612 : else
10613 : {
10614 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1572;
10615 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1572;
10616 0 : {
10617 0 : tree res_op0;
10618 0 : {
10619 0 : tree _o1[1], _r1;
10620 0 : _o1[0] = captures[1];
10621 0 : if (TREE_TYPE (_o1[0]) != utype)
10622 : {
10623 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10624 : }
10625 : else
10626 : _r1 = _o1[0];
10627 0 : res_op0 = _r1;
10628 : }
10629 0 : tree res_op1;
10630 0 : res_op1 = csts;
10631 0 : tree _r;
10632 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10633 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10634 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10635 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
10636 0 : return _r;
10637 : }
10638 0 : next_after_fail1572:;
10639 : }
10640 : }
10641 : }
10642 : }
10643 : }
10644 : }
10645 : }
10646 : break;
10647 : }
10648 : default:;
10649 : }
10650 : break;
10651 : }
10652 20270 : case RSHIFT_EXPR:
10653 20270 : {
10654 20270 : tree _q20 = TREE_OPERAND (_p0, 0);
10655 20270 : tree _q21 = TREE_OPERAND (_p0, 1);
10656 20270 : switch (TREE_CODE (_q20))
10657 : {
10658 1 : case MULT_EXPR:
10659 1 : {
10660 1 : tree _q30 = TREE_OPERAND (_q20, 0);
10661 1 : tree _q31 = TREE_OPERAND (_q20, 1);
10662 1 : switch (TREE_CODE (_q30))
10663 : {
10664 1 : CASE_CONVERT:
10665 1 : {
10666 1 : tree _q40 = TREE_OPERAND (_q30, 0);
10667 1 : switch (TREE_CODE (_q31))
10668 : {
10669 1 : CASE_CONVERT:
10670 1 : {
10671 1 : tree _q60 = TREE_OPERAND (_q31, 0);
10672 1 : switch (TREE_CODE (_q21))
10673 : {
10674 1 : case INTEGER_CST:
10675 1 : {
10676 1 : if (integer_zerop (_p1))
10677 : {
10678 1 : {
10679 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
10680 1 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10681 1 : if (res) return res;
10682 : }
10683 : }
10684 : break;
10685 : }
10686 : default:;
10687 : }
10688 : break;
10689 : }
10690 : default:;
10691 : }
10692 : break;
10693 : }
10694 : default:;
10695 : }
10696 : break;
10697 : }
10698 : default:;
10699 : }
10700 : break;
10701 : }
10702 1315142 : case PLUS_EXPR:
10703 1315142 : {
10704 1315142 : tree _q20 = TREE_OPERAND (_p0, 0);
10705 1315142 : tree _q21 = TREE_OPERAND (_p0, 1);
10706 1315142 : switch (TREE_CODE (_q21))
10707 : {
10708 1192405 : case INTEGER_CST:
10709 1192405 : {
10710 1192405 : switch (TREE_CODE (_p1))
10711 : {
10712 705702 : case INTEGER_CST:
10713 705702 : {
10714 705702 : {
10715 705702 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10716 705702 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR);
10717 705702 : if (res) return res;
10718 : }
10719 355 : break;
10720 : }
10721 : default:;
10722 : }
10723 : break;
10724 : }
10725 : default:;
10726 : }
10727 : break;
10728 : }
10729 68506 : case MINUS_EXPR:
10730 68506 : {
10731 68506 : tree _q20 = TREE_OPERAND (_p0, 0);
10732 68506 : tree _q21 = TREE_OPERAND (_p0, 1);
10733 68506 : switch (TREE_CODE (_q21))
10734 : {
10735 193 : case INTEGER_CST:
10736 193 : {
10737 193 : switch (TREE_CODE (_p1))
10738 : {
10739 72 : case INTEGER_CST:
10740 72 : {
10741 72 : {
10742 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10743 72 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR);
10744 72 : if (res) return res;
10745 : }
10746 72 : break;
10747 : }
10748 : default:;
10749 : }
10750 : break;
10751 : }
10752 68506 : default:;
10753 : }
10754 68506 : switch (TREE_CODE (_q20))
10755 : {
10756 1717 : case INTEGER_CST:
10757 1717 : {
10758 1717 : switch (TREE_CODE (_p1))
10759 : {
10760 61 : case INTEGER_CST:
10761 61 : {
10762 61 : {
10763 61 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10764 61 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10765 61 : if (res) return res;
10766 : }
10767 0 : break;
10768 : }
10769 : default:;
10770 : }
10771 : break;
10772 : }
10773 : default:;
10774 : }
10775 : break;
10776 : }
10777 2309117 : case CALL_EXPR:
10778 2309117 : switch (get_call_combined_fn (_p0))
10779 : {
10780 224 : case CFN_BUILT_IN_CLZ:
10781 224 : if (call_expr_nargs (_p0) == 1)
10782 : {
10783 224 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10784 224 : switch (TREE_CODE (_p1))
10785 : {
10786 210 : case INTEGER_CST:
10787 210 : {
10788 210 : {
10789 210 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10790 210 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZ);
10791 210 : if (res) return res;
10792 : }
10793 135 : break;
10794 : }
10795 : default:;
10796 : }
10797 : }
10798 : break;
10799 246 : case CFN_BUILT_IN_CTZ:
10800 246 : if (call_expr_nargs (_p0) == 1)
10801 : {
10802 246 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10803 246 : switch (TREE_CODE (_p1))
10804 : {
10805 200 : case INTEGER_CST:
10806 200 : {
10807 200 : {
10808 200 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10809 200 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZ);
10810 200 : if (res) return res;
10811 : }
10812 0 : break;
10813 : }
10814 : default:;
10815 : }
10816 : }
10817 : break;
10818 31 : case CFN_BUILT_IN_FFS:
10819 31 : if (call_expr_nargs (_p0) == 1)
10820 : {
10821 31 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10822 31 : switch (TREE_CODE (_p1))
10823 : {
10824 11 : case INTEGER_CST:
10825 11 : {
10826 11 : {
10827 11 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10828 11 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFS);
10829 11 : if (res) return res;
10830 : }
10831 0 : break;
10832 : }
10833 : default:;
10834 : }
10835 : }
10836 : break;
10837 0 : case CFN_REDUC_IOR:
10838 0 : if (call_expr_nargs (_p0) == 1)
10839 : {
10840 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10841 0 : if (integer_zerop (_p1))
10842 : {
10843 0 : {
10844 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10845 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR);
10846 0 : if (res) return res;
10847 : }
10848 : }
10849 : }
10850 : break;
10851 0 : case CFN_BUILT_IN_FFSIMAX:
10852 0 : if (call_expr_nargs (_p0) == 1)
10853 : {
10854 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10855 0 : switch (TREE_CODE (_p1))
10856 : {
10857 0 : case INTEGER_CST:
10858 0 : {
10859 0 : {
10860 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10861 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSIMAX);
10862 0 : if (res) return res;
10863 : }
10864 0 : break;
10865 : }
10866 : default:;
10867 : }
10868 : }
10869 : break;
10870 13 : case CFN_BUILT_IN_POPCOUNT:
10871 13 : if (call_expr_nargs (_p0) == 1)
10872 : {
10873 13 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10874 13 : if (integer_zerop (_p1))
10875 : {
10876 1 : {
10877 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10878 1 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT);
10879 1 : if (res) return res;
10880 : }
10881 : }
10882 : }
10883 : break;
10884 87 : case CFN_BUILT_IN_CLZL:
10885 87 : if (call_expr_nargs (_p0) == 1)
10886 : {
10887 87 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10888 87 : switch (TREE_CODE (_p1))
10889 : {
10890 79 : case INTEGER_CST:
10891 79 : {
10892 79 : {
10893 79 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10894 79 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZL);
10895 79 : if (res) return res;
10896 : }
10897 43 : break;
10898 : }
10899 : default:;
10900 : }
10901 : }
10902 : break;
10903 85 : case CFN_BUILT_IN_CTZL:
10904 85 : if (call_expr_nargs (_p0) == 1)
10905 : {
10906 85 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10907 85 : switch (TREE_CODE (_p1))
10908 : {
10909 77 : case INTEGER_CST:
10910 77 : {
10911 77 : {
10912 77 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10913 77 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZL);
10914 77 : if (res) return res;
10915 : }
10916 16 : break;
10917 : }
10918 : default:;
10919 : }
10920 : }
10921 : break;
10922 8 : case CFN_BUILT_IN_FFSL:
10923 8 : if (call_expr_nargs (_p0) == 1)
10924 : {
10925 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10926 8 : switch (TREE_CODE (_p1))
10927 : {
10928 0 : case INTEGER_CST:
10929 0 : {
10930 0 : {
10931 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10932 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSL);
10933 0 : if (res) return res;
10934 : }
10935 0 : break;
10936 : }
10937 : default:;
10938 : }
10939 : }
10940 : break;
10941 11 : case CFN_BUILT_IN_POPCOUNTLL:
10942 11 : if (call_expr_nargs (_p0) == 1)
10943 : {
10944 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10945 11 : if (integer_zerop (_p1))
10946 : {
10947 1 : {
10948 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10949 1 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL);
10950 1 : if (res) return res;
10951 : }
10952 : }
10953 : }
10954 : break;
10955 0 : case CFN_BUILT_IN_CTZIMAX:
10956 0 : if (call_expr_nargs (_p0) == 1)
10957 : {
10958 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10959 0 : switch (TREE_CODE (_p1))
10960 : {
10961 0 : case INTEGER_CST:
10962 0 : {
10963 0 : {
10964 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10965 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
10966 0 : if (res) return res;
10967 : }
10968 0 : break;
10969 : }
10970 : default:;
10971 : }
10972 : }
10973 : break;
10974 0 : case CFN_POPCOUNT:
10975 0 : if (call_expr_nargs (_p0) == 1)
10976 : {
10977 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10978 0 : if (integer_zerop (_p1))
10979 : {
10980 0 : {
10981 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10982 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_POPCOUNT);
10983 0 : if (res) return res;
10984 : }
10985 : }
10986 : }
10987 : break;
10988 0 : case CFN_CLZ:
10989 0 : if (call_expr_nargs (_p0) == 1)
10990 : {
10991 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10992 0 : switch (TREE_CODE (_p1))
10993 : {
10994 0 : case INTEGER_CST:
10995 0 : {
10996 0 : {
10997 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10998 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_CLZ);
10999 0 : if (res) return res;
11000 : }
11001 0 : break;
11002 : }
11003 : default:;
11004 : }
11005 : }
11006 0 : if (call_expr_nargs (_p0) == 2)
11007 : {
11008 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11009 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11010 0 : switch (TREE_CODE (_p1))
11011 : {
11012 0 : case INTEGER_CST:
11013 0 : {
11014 0 : {
11015 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11016 0 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
11017 0 : if (res) return res;
11018 : }
11019 0 : break;
11020 : }
11021 : default:;
11022 : }
11023 : }
11024 : break;
11025 0 : case CFN_CTZ:
11026 0 : if (call_expr_nargs (_p0) == 1)
11027 : {
11028 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11029 0 : switch (TREE_CODE (_p1))
11030 : {
11031 0 : case INTEGER_CST:
11032 0 : {
11033 0 : {
11034 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11035 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_CTZ);
11036 0 : if (res) return res;
11037 : }
11038 0 : break;
11039 : }
11040 : default:;
11041 : }
11042 : }
11043 0 : if (call_expr_nargs (_p0) == 2)
11044 : {
11045 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11046 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11047 0 : switch (TREE_CODE (_p1))
11048 : {
11049 0 : case INTEGER_CST:
11050 0 : {
11051 0 : {
11052 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11053 0 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR);
11054 0 : if (res) return res;
11055 : }
11056 0 : break;
11057 : }
11058 : default:;
11059 : }
11060 : }
11061 : break;
11062 0 : case CFN_FFS:
11063 0 : if (call_expr_nargs (_p0) == 1)
11064 : {
11065 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11066 0 : switch (TREE_CODE (_p1))
11067 : {
11068 0 : case INTEGER_CST:
11069 0 : {
11070 0 : {
11071 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11072 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_FFS);
11073 0 : if (res) return res;
11074 : }
11075 0 : break;
11076 : }
11077 : default:;
11078 : }
11079 : }
11080 : break;
11081 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
11082 0 : if (call_expr_nargs (_p0) == 1)
11083 : {
11084 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11085 0 : if (integer_zerop (_p1))
11086 : {
11087 0 : {
11088 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11089 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
11090 0 : if (res) return res;
11091 : }
11092 : }
11093 : }
11094 : break;
11095 0 : case CFN_BUILT_IN_CLZIMAX:
11096 0 : if (call_expr_nargs (_p0) == 1)
11097 : {
11098 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11099 0 : switch (TREE_CODE (_p1))
11100 : {
11101 0 : case INTEGER_CST:
11102 0 : {
11103 0 : {
11104 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11105 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZIMAX);
11106 0 : if (res) return res;
11107 : }
11108 0 : break;
11109 : }
11110 : default:;
11111 : }
11112 : }
11113 : break;
11114 12 : case CFN_BUILT_IN_POPCOUNTL:
11115 12 : if (call_expr_nargs (_p0) == 1)
11116 : {
11117 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11118 12 : if (integer_zerop (_p1))
11119 : {
11120 1 : {
11121 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11122 1 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL);
11123 1 : if (res) return res;
11124 : }
11125 : }
11126 : }
11127 : break;
11128 52 : case CFN_BUILT_IN_CLZLL:
11129 52 : if (call_expr_nargs (_p0) == 1)
11130 : {
11131 52 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11132 52 : switch (TREE_CODE (_p1))
11133 : {
11134 42 : case INTEGER_CST:
11135 42 : {
11136 42 : {
11137 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11138 42 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZLL);
11139 42 : if (res) return res;
11140 : }
11141 18 : break;
11142 : }
11143 : default:;
11144 : }
11145 : }
11146 : break;
11147 74 : case CFN_BUILT_IN_CTZLL:
11148 74 : if (call_expr_nargs (_p0) == 1)
11149 : {
11150 74 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11151 74 : switch (TREE_CODE (_p1))
11152 : {
11153 64 : case INTEGER_CST:
11154 64 : {
11155 64 : {
11156 64 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11157 64 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZLL);
11158 64 : if (res) return res;
11159 : }
11160 16 : break;
11161 : }
11162 : default:;
11163 : }
11164 : }
11165 : break;
11166 11 : case CFN_BUILT_IN_FFSLL:
11167 11 : if (call_expr_nargs (_p0) == 1)
11168 : {
11169 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11170 11 : switch (TREE_CODE (_p1))
11171 : {
11172 1 : case INTEGER_CST:
11173 1 : {
11174 1 : {
11175 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11176 1 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSLL);
11177 1 : if (res) return res;
11178 : }
11179 0 : break;
11180 : }
11181 : default:;
11182 : }
11183 : }
11184 : break;
11185 : default:;
11186 : }
11187 : break;
11188 : default:;
11189 : }
11190 : return NULL_TREE;
11191 : }
11192 :
11193 : tree
11194 14844 : generic_simplify_BIT_INSERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
11195 : {
11196 14844 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11197 14844 : switch (TREE_CODE (_p1))
11198 : {
11199 0 : case BIT_FIELD_REF:
11200 0 : {
11201 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11202 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11203 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11204 0 : {
11205 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
11206 0 : if (VECTOR_TYPE_P (type)
11207 0 : && (VECTOR_MODE_P (TYPE_MODE (type))
11208 : || optimize_vectors_before_lowering_p ())
11209 0 : && operand_equal_p (TYPE_SIZE (TREE_TYPE (captures[0])),
11210 0 : TYPE_SIZE (TREE_TYPE (captures[2])), 0)
11211 0 : && types_match (TREE_TYPE (TREE_TYPE (captures[0])), TREE_TYPE (captures[1]))
11212 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
11213 0 : && multiple_p (wi::to_poly_offset (captures[4]),
11214 0 : wi::to_poly_offset (TYPE_SIZE (TREE_TYPE (type))))
11215 : )
11216 : {
11217 0 : {
11218 0 : unsigned HOST_WIDE_INT elsz
11219 0 : = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))));
11220 0 : poly_uint64 relt = exact_div (tree_to_poly_uint64 (captures[4]), elsz);
11221 0 : poly_uint64 ielt = exact_div (tree_to_poly_uint64 (captures[5]), elsz);
11222 0 : unsigned nunits = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11223 0 : vec_perm_builder builder;
11224 0 : builder.new_vector (nunits, nunits, 1);
11225 0 : for (unsigned i = 0; i < nunits; ++i)
11226 0 : builder.quick_push (known_eq (ielt, i) ? nunits + relt : i);
11227 0 : vec_perm_indices sel (builder, 2, nunits);
11228 0 : if (!VECTOR_MODE_P (TYPE_MODE (type))
11229 0 : || can_vec_perm_const_p (TYPE_MODE (type),
11230 0 : TYPE_MODE (type), sel, false)
11231 : )
11232 : {
11233 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1970;
11234 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1970;
11235 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1970;
11236 0 : {
11237 0 : tree res_op0;
11238 0 : res_op0 = captures[0];
11239 0 : tree res_op1;
11240 0 : {
11241 0 : tree _o1[1], _r1;
11242 0 : _o1[0] = captures[2];
11243 0 : if (TREE_TYPE (_o1[0]) != type)
11244 : {
11245 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
11246 : }
11247 : else
11248 : _r1 = _o1[0];
11249 0 : res_op1 = _r1;
11250 : }
11251 0 : tree res_op2;
11252 0 : res_op2 = vec_perm_indices_to_tree (build_vector_type (ssizetype, nunits),
11253 : sel);
11254 0 : tree _r;
11255 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11256 0 : if (TREE_SIDE_EFFECTS (captures[3]))
11257 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
11258 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1099, __FILE__, __LINE__, true);
11259 0 : return _r;
11260 : }
11261 0 : next_after_fail1970:;
11262 : }
11263 0 : }
11264 : }
11265 : }
11266 0 : break;
11267 : }
11268 : default:;
11269 : }
11270 : return NULL_TREE;
11271 : }
11272 :
11273 : tree
11274 773506 : 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)
11275 : {
11276 773506 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11277 773506 : switch (TREE_CODE (_p0))
11278 : {
11279 0 : case PLUS_EXPR:
11280 0 : {
11281 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11282 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11283 0 : switch (TREE_CODE (_p1))
11284 : {
11285 0 : case MINUS_EXPR:
11286 0 : {
11287 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11288 0 : tree _q51 = TREE_OPERAND (_p1, 1);
11289 0 : switch (TREE_CODE (_p2))
11290 : {
11291 0 : case VECTOR_CST:
11292 0 : {
11293 0 : {
11294 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51, _p2 };
11295 0 : tree res = generic_simplify_623 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR, MINUS_EXPR);
11296 0 : if (res) return res;
11297 : }
11298 0 : break;
11299 : }
11300 : default:;
11301 : }
11302 : break;
11303 : }
11304 : default:;
11305 : }
11306 : break;
11307 : }
11308 0 : case MINUS_EXPR:
11309 0 : {
11310 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11311 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11312 0 : switch (TREE_CODE (_p1))
11313 : {
11314 0 : case PLUS_EXPR:
11315 0 : {
11316 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11317 0 : tree _q51 = TREE_OPERAND (_p1, 1);
11318 0 : switch (TREE_CODE (_p2))
11319 : {
11320 0 : case VECTOR_CST:
11321 0 : {
11322 0 : {
11323 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51, _p2 };
11324 0 : tree res = generic_simplify_623 (loc, type, _p0, _p1, _p2, captures, MINUS_EXPR, PLUS_EXPR);
11325 0 : if (res) return res;
11326 : }
11327 0 : break;
11328 : }
11329 : default:;
11330 : }
11331 : break;
11332 : }
11333 : default:;
11334 : }
11335 : break;
11336 : }
11337 773506 : default:;
11338 : }
11339 773506 : switch (TREE_CODE (_p2))
11340 : {
11341 762038 : case VECTOR_CST:
11342 762038 : {
11343 762038 : {
11344 762038 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11345 762038 : {
11346 762038 : tree op0 = captures[0], op1 = captures[1], op2 = captures[2];
11347 762038 : machine_mode result_mode = TYPE_MODE (type);
11348 762038 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (op0));
11349 762038 : vec_perm_builder builder;
11350 762038 : if (tree_to_vec_perm_builder (&builder, op2)
11351 : )
11352 : {
11353 762026 : {
11354 762026 : poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
11355 762026 : poly_uint64 nelts_in = TYPE_VECTOR_SUBPARTS (TREE_TYPE (op0));
11356 762026 : bool single_arg = (op0 == op1);
11357 1328348 : vec_perm_indices sel (builder, single_arg ? 1 : 2, nelts_in);
11358 762026 : if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, 0, 1)
11359 : )
11360 : {
11361 8426 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1971;
11362 8426 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1971;
11363 8426 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1971;
11364 8426 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1971;
11365 8426 : {
11366 8426 : tree res_op0;
11367 8426 : res_op0 = captures[0];
11368 8426 : tree _r;
11369 8426 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11370 8426 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1100, __FILE__, __LINE__, true);
11371 8426 : return _r;
11372 : }
11373 736134 : next_after_fail1971:;
11374 : }
11375 : else
11376 : {
11377 753600 : if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, nelts_in, 1)
11378 : )
11379 : {
11380 13 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1972;
11381 13 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1972;
11382 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1972;
11383 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1972;
11384 13 : {
11385 13 : tree res_op0;
11386 13 : res_op0 = captures[1];
11387 13 : tree _r;
11388 13 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11389 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1101, __FILE__, __LINE__, true);
11390 13 : return _r;
11391 : }
11392 736134 : next_after_fail1972:;
11393 : }
11394 : else
11395 : {
11396 753587 : {
11397 753587 : if (!single_arg)
11398 : {
11399 558559 : if (sel.all_from_input_p (0))
11400 : op1 = op0;
11401 551536 : else if (sel.all_from_input_p (1))
11402 : {
11403 32 : op0 = op1;
11404 32 : sel.rotate_inputs (1);
11405 : }
11406 551504 : else if (known_ge (poly_uint64 (sel[0]), nelts_in))
11407 : {
11408 153 : std::swap (op0, op1);
11409 153 : sel.rotate_inputs (1);
11410 : }
11411 : }
11412 753587 : gassign *def;
11413 753587 : tree cop0 = op0, cop1 = op1;
11414 753587 : if (TREE_CODE (op0) == SSA_NAME
11415 720590 : && (def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op0)))
11416 1439857 : && gimple_assign_rhs_code (def) == CONSTRUCTOR)
11417 6861 : cop0 = gimple_assign_rhs1 (def);
11418 753587 : if (TREE_CODE (op1) == SSA_NAME
11419 707033 : && (def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op1)))
11420 1427529 : && gimple_assign_rhs_code (def) == CONSTRUCTOR)
11421 13483 : cop1 = gimple_assign_rhs1 (def);
11422 753587 : tree t;
11423 753587 : if ((TREE_CODE (cop0) == VECTOR_CST
11424 724080 : || TREE_CODE (cop0) == CONSTRUCTOR)
11425 37215 : && (TREE_CODE (cop1) == VECTOR_CST
11426 18418 : || TREE_CODE (cop1) == CONSTRUCTOR)
11427 778396 : && (t = fold_vec_perm (type, cop0, cop1, sel))
11428 : )
11429 : {
11430 15021 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1973;
11431 15021 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1973;
11432 15021 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1973;
11433 15021 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1973;
11434 15021 : {
11435 15021 : tree _r;
11436 15021 : _r = t;
11437 15021 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1102, __FILE__, __LINE__, true);
11438 15021 : return _r;
11439 : }
11440 736134 : next_after_fail1973:;
11441 : }
11442 : else
11443 : {
11444 738566 : {
11445 738566 : bool changed = (op0 == op1 && !single_arg);
11446 738566 : tree ins = NULL_TREE;
11447 738566 : unsigned at = 0;
11448 738566 : if (op_mode != BLKmode
11449 729561 : && known_eq (nelts, nelts_in)
11450 1467974 : && (TREE_CODE (cop0) == VECTOR_CST
11451 713999 : || TREE_CODE (cop0) == CONSTRUCTOR
11452 709558 : || TREE_CODE (cop1) == VECTOR_CST
11453 685219 : || TREE_CODE (cop1) == CONSTRUCTOR))
11454 : {
11455 51920 : bool insert_first_p = sel.series_p (1, 1, nelts + 1, 1);
11456 51920 : if (insert_first_p)
11457 : {
11458 778 : at = 0;
11459 778 : if ((ins = fold_read_from_vector (cop0, sel[0])))
11460 115 : op0 = op1;
11461 : }
11462 778 : if (!insert_first_p || (!ins && maybe_eq (nelts, 2u)))
11463 : {
11464 51606 : unsigned int encoded_nelts = sel.encoding ().encoded_nelts ();
11465 105748 : for (at = 0; at < encoded_nelts; ++at)
11466 105622 : if (maybe_ne (sel[at], at))
11467 : break;
11468 51606 : if (at < encoded_nelts
11469 51606 : && (known_eq (at + 1, nelts)
11470 50400 : || sel.series_p (at + 1, 1, at + 1, 1)))
11471 : {
11472 1787 : if (known_lt (poly_uint64 (sel[at]), nelts))
11473 0 : ins = fold_read_from_vector (cop0, sel[at]);
11474 : else
11475 1787 : ins = fold_read_from_vector (cop1, sel[at] - nelts);
11476 : }
11477 : }
11478 : }
11479 738566 : if (!ins && sel.encoding () != builder)
11480 : {
11481 1128 : tree oldop2 = op2;
11482 1128 : if (sel.ninputs () == 2
11483 1128 : || can_vec_perm_const_p (result_mode, op_mode, sel, false))
11484 689 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel);
11485 : else
11486 : {
11487 439 : vec_perm_indices sel2 (builder, 2, nelts);
11488 439 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false))
11489 164 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel2);
11490 : else
11491 275 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel);
11492 439 : }
11493 1128 : if (!operand_equal_p (op2, oldop2, 0))
11494 964 : changed = true;
11495 : }
11496 738566 : if (ins
11497 : )
11498 : {
11499 1467 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1974;
11500 1467 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1974;
11501 1467 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1974;
11502 1467 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1974;
11503 1467 : {
11504 1467 : tree res_op0;
11505 1467 : res_op0 = op0;
11506 1467 : tree res_op1;
11507 1467 : res_op1 = ins;
11508 1467 : tree res_op2;
11509 1467 : res_op2 = bitsize_int (at * vector_element_bits (type));
11510 1467 : tree _r;
11511 1467 : _r = fold_build3_loc (loc, BIT_INSERT_EXPR, type, res_op0, res_op1, res_op2);
11512 1467 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1103, __FILE__, __LINE__, true);
11513 25892 : return _r;
11514 : }
11515 : next_after_fail1974:;
11516 : }
11517 : else
11518 : {
11519 737099 : if (changed
11520 : )
11521 : {
11522 965 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1975;
11523 965 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1975;
11524 965 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1975;
11525 965 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1975;
11526 965 : {
11527 965 : tree res_op0;
11528 965 : res_op0 = op0;
11529 965 : tree res_op1;
11530 965 : res_op1 = op1;
11531 965 : tree res_op2;
11532 965 : res_op2 = op2;
11533 965 : tree _r;
11534 965 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11535 965 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1104, __FILE__, __LINE__, true);
11536 965 : return _r;
11537 : }
11538 : next_after_fail1975:;
11539 : }
11540 : }
11541 : }
11542 : }
11543 : }
11544 : }
11545 : }
11546 762026 : }
11547 : }
11548 25892 : }
11549 : }
11550 736146 : break;
11551 : }
11552 747614 : default:;
11553 : }
11554 747614 : switch (TREE_CODE (_p0))
11555 : {
11556 0 : case VIEW_CONVERT_EXPR:
11557 0 : {
11558 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11559 0 : switch (TREE_CODE (_q20))
11560 : {
11561 0 : case VEC_PERM_EXPR:
11562 0 : {
11563 0 : tree _q30 = TREE_OPERAND (_q20, 0);
11564 0 : tree _q31 = TREE_OPERAND (_q20, 1);
11565 0 : tree _q32 = TREE_OPERAND (_q20, 2);
11566 0 : switch (TREE_CODE (_q32))
11567 : {
11568 0 : case VECTOR_CST:
11569 0 : {
11570 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11571 : {
11572 0 : switch (TREE_CODE (_p2))
11573 : {
11574 0 : case VECTOR_CST:
11575 0 : {
11576 0 : {
11577 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q32, _p2 };
11578 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11579 : )
11580 : {
11581 0 : {
11582 0 : machine_mode result_mode = TYPE_MODE (type);
11583 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11584 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11585 0 : vec_perm_builder builder0;
11586 0 : vec_perm_builder builder1;
11587 0 : vec_perm_builder builder2 (nelts, nelts, 1);
11588 0 : if (tree_to_vec_perm_builder (&builder0, captures[4])
11589 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
11590 0 : && TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))
11591 0 : == TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[1])))
11592 : )
11593 : {
11594 0 : {
11595 0 : vec_perm_indices sel0 (builder0, 2, nelts);
11596 0 : vec_perm_indices sel1 (builder1, 2, nelts);
11597 0 : for (int i = 0; i < nelts; i++)
11598 0 : builder2.quick_push (sel0[sel1[i].to_constant ()]);
11599 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11600 0 : tree op0 = NULL_TREE;
11601 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11602 0 : || (single_use (captures[0])
11603 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
11604 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
11605 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
11606 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11607 0 : if (op0
11608 : )
11609 : {
11610 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1976;
11611 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1976;
11612 0 : {
11613 0 : tree res_op0;
11614 0 : {
11615 0 : tree _o1[3], _r1;
11616 0 : _o1[0] = captures[2];
11617 0 : _o1[1] = captures[3];
11618 0 : _o1[2] = op0;
11619 0 : _r1 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1], _o1[2]);
11620 0 : res_op0 = _r1;
11621 : }
11622 0 : tree _r;
11623 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11624 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11625 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11626 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11627 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11628 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1105, __FILE__, __LINE__, true);
11629 0 : return _r;
11630 : }
11631 0 : next_after_fail1976:;
11632 : }
11633 0 : }
11634 : }
11635 0 : }
11636 : }
11637 : }
11638 0 : break;
11639 : }
11640 : default:;
11641 : }
11642 : }
11643 : break;
11644 : }
11645 : default:;
11646 : }
11647 : break;
11648 : }
11649 : default:;
11650 : }
11651 : break;
11652 : }
11653 0 : case VEC_PERM_EXPR:
11654 0 : {
11655 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11656 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11657 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11658 0 : switch (TREE_CODE (_q22))
11659 : {
11660 0 : case VECTOR_CST:
11661 0 : {
11662 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11663 : {
11664 0 : switch (TREE_CODE (_p2))
11665 : {
11666 0 : case VECTOR_CST:
11667 0 : {
11668 0 : {
11669 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _q22, _p2 };
11670 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11671 : )
11672 : {
11673 0 : {
11674 0 : machine_mode result_mode = TYPE_MODE (type);
11675 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11676 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11677 0 : vec_perm_builder builder0;
11678 0 : vec_perm_builder builder1;
11679 0 : vec_perm_builder builder2 (nelts, nelts, 1);
11680 0 : if (tree_to_vec_perm_builder (&builder0, captures[4])
11681 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
11682 0 : && TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))
11683 0 : == TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[1])))
11684 : )
11685 : {
11686 0 : {
11687 0 : vec_perm_indices sel0 (builder0, 2, nelts);
11688 0 : vec_perm_indices sel1 (builder1, 2, nelts);
11689 0 : for (int i = 0; i < nelts; i++)
11690 0 : builder2.quick_push (sel0[sel1[i].to_constant ()]);
11691 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11692 0 : tree op0 = NULL_TREE;
11693 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11694 0 : || (single_use (captures[0])
11695 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
11696 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
11697 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
11698 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11699 0 : if (op0
11700 : )
11701 : {
11702 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1977;
11703 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1977;
11704 0 : {
11705 0 : tree res_op0;
11706 0 : {
11707 0 : tree _o1[3], _r1;
11708 0 : _o1[0] = captures[2];
11709 0 : _o1[1] = captures[3];
11710 0 : _o1[2] = op0;
11711 0 : _r1 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1], _o1[2]);
11712 0 : res_op0 = _r1;
11713 : }
11714 0 : tree _r;
11715 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11716 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11717 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11718 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11719 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11720 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1105, __FILE__, __LINE__, true);
11721 0 : return _r;
11722 : }
11723 0 : next_after_fail1977:;
11724 : }
11725 0 : }
11726 : }
11727 0 : }
11728 : }
11729 : }
11730 0 : break;
11731 : }
11732 : default:;
11733 : }
11734 : }
11735 : break;
11736 : }
11737 : default:;
11738 : }
11739 : break;
11740 : }
11741 747614 : default:;
11742 : }
11743 747614 : if (tree_vec_same_elem_p (_p0))
11744 : {
11745 13913 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11746 : {
11747 0 : {
11748 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p2 };
11749 0 : if (types_match (type, TREE_TYPE (captures[0]))
11750 : )
11751 : {
11752 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1978;
11753 0 : {
11754 0 : tree _r;
11755 0 : _r = captures[0];
11756 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11757 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11758 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1106, __FILE__, __LINE__, true);
11759 0 : return _r;
11760 : }
11761 0 : next_after_fail1978:;
11762 : }
11763 : else
11764 : {
11765 0 : {
11766 0 : tree elem = uniform_vector_p (captures[0]);
11767 0 : if (elem
11768 : )
11769 : {
11770 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1979;
11771 0 : {
11772 0 : tree _r;
11773 0 : _r = build_vector_from_val (type, elem);
11774 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11775 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11776 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11777 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11778 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1107, __FILE__, __LINE__, true);
11779 0 : return _r;
11780 : }
11781 0 : next_after_fail1979:;
11782 : }
11783 : }
11784 : }
11785 : }
11786 : }
11787 : }
11788 747614 : switch (TREE_CODE (_p1))
11789 : {
11790 0 : case VEC_PERM_EXPR:
11791 0 : {
11792 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11793 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11794 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11795 0 : switch (TREE_CODE (_q32))
11796 : {
11797 0 : case VECTOR_CST:
11798 0 : {
11799 0 : switch (TREE_CODE (_p2))
11800 : {
11801 0 : case VECTOR_CST:
11802 0 : {
11803 0 : {
11804 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
11805 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11806 : )
11807 : {
11808 0 : {
11809 0 : machine_mode result_mode = TYPE_MODE (type);
11810 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11811 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11812 0 : vec_perm_builder builder0;
11813 0 : vec_perm_builder builder1;
11814 0 : vec_perm_builder builder2 (nelts, nelts, 2);
11815 0 : if (tree_to_vec_perm_builder (&builder0, captures[4])
11816 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
11817 : )
11818 : {
11819 0 : {
11820 0 : vec_perm_indices sel0 (builder0, 2, nelts);
11821 0 : vec_perm_indices sel1 (builder1, 2, nelts);
11822 0 : bool use_1 = false, use_2 = false;
11823 0 : for (int i = 0; i < nelts; i++)
11824 : {
11825 0 : if (known_lt ((poly_uint64)sel1[i], sel1.nelts_per_input ()))
11826 0 : builder2.quick_push (sel1[i]);
11827 : else
11828 : {
11829 0 : poly_uint64 j = sel0[(sel1[i] - sel1.nelts_per_input ())
11830 0 : .to_constant ()];
11831 0 : if (known_lt (j, sel0.nelts_per_input ()))
11832 : use_1 = true;
11833 : else
11834 : {
11835 0 : use_2 = true;
11836 0 : j -= sel0.nelts_per_input ();
11837 : }
11838 0 : builder2.quick_push (j + sel1.nelts_per_input ());
11839 : }
11840 : }
11841 0 : if (use_1 ^ use_2
11842 : )
11843 : {
11844 0 : {
11845 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11846 0 : tree op0 = NULL_TREE;
11847 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11848 0 : || (single_use (captures[1])
11849 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
11850 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
11851 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
11852 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11853 0 : if (op0
11854 : )
11855 : {
11856 0 : if (use_1
11857 : )
11858 : {
11859 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1980;
11860 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1980;
11861 0 : {
11862 0 : tree res_op0;
11863 0 : res_op0 = captures[0];
11864 0 : tree res_op1;
11865 0 : res_op1 = captures[2];
11866 0 : tree res_op2;
11867 0 : res_op2 = op0;
11868 0 : tree _r;
11869 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11870 0 : if (TREE_SIDE_EFFECTS (captures[3]))
11871 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
11872 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11873 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11874 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11875 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11876 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1108, __FILE__, __LINE__, true);
11877 0 : return _r;
11878 : }
11879 0 : next_after_fail1980:;
11880 : }
11881 : else
11882 : {
11883 0 : if (use_2
11884 : )
11885 : {
11886 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1981;
11887 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1981;
11888 0 : {
11889 0 : tree res_op0;
11890 0 : res_op0 = captures[0];
11891 0 : tree res_op1;
11892 0 : res_op1 = captures[3];
11893 0 : tree res_op2;
11894 0 : res_op2 = op0;
11895 0 : tree _r;
11896 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11897 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11898 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11899 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11900 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11901 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11902 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11903 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1109, __FILE__, __LINE__, true);
11904 0 : return _r;
11905 : }
11906 0 : next_after_fail1981:;
11907 : }
11908 : }
11909 : }
11910 0 : }
11911 : }
11912 0 : }
11913 : }
11914 0 : }
11915 : }
11916 : }
11917 0 : break;
11918 : }
11919 : default:;
11920 : }
11921 : break;
11922 : }
11923 : default:;
11924 : }
11925 : break;
11926 : }
11927 747614 : default:;
11928 : }
11929 747614 : switch (TREE_CODE (_p0))
11930 : {
11931 0 : case VEC_PERM_EXPR:
11932 0 : {
11933 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11934 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11935 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11936 0 : switch (TREE_CODE (_q22))
11937 : {
11938 0 : case VECTOR_CST:
11939 0 : {
11940 0 : switch (TREE_CODE (_p2))
11941 : {
11942 0 : case VECTOR_CST:
11943 0 : {
11944 0 : {
11945 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _p2 };
11946 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11947 : )
11948 : {
11949 0 : {
11950 0 : machine_mode result_mode = TYPE_MODE (type);
11951 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[1]));
11952 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11953 0 : vec_perm_builder builder0;
11954 0 : vec_perm_builder builder1;
11955 0 : vec_perm_builder builder2 (nelts, nelts, 2);
11956 0 : if (tree_to_vec_perm_builder (&builder0, captures[3])
11957 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
11958 : )
11959 : {
11960 0 : {
11961 0 : vec_perm_indices sel0 (builder0, 2, nelts);
11962 0 : vec_perm_indices sel1 (builder1, 2, nelts);
11963 0 : bool use_1 = false, use_2 = false;
11964 0 : for (int i = 0; i < nelts; i++)
11965 : {
11966 0 : if (known_ge ((poly_uint64)sel1[i], sel1.nelts_per_input ()))
11967 0 : builder2.quick_push (sel1[i]);
11968 : else
11969 : {
11970 0 : poly_uint64 j = sel0[sel1[i].to_constant ()];
11971 0 : if (known_lt (j, sel0.nelts_per_input ()))
11972 : use_1 = true;
11973 : else
11974 : {
11975 0 : use_2 = true;
11976 0 : j -= sel0.nelts_per_input ();
11977 : }
11978 0 : builder2.quick_push (j);
11979 : }
11980 : }
11981 0 : if (use_1 ^ use_2
11982 : )
11983 : {
11984 0 : {
11985 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11986 0 : tree op0 = NULL_TREE;
11987 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11988 0 : || (single_use (captures[0])
11989 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
11990 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
11991 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
11992 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11993 0 : if (op0
11994 : )
11995 : {
11996 0 : if (use_1
11997 : )
11998 : {
11999 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1982;
12000 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1982;
12001 0 : {
12002 0 : tree res_op0;
12003 0 : res_op0 = captures[1];
12004 0 : tree res_op1;
12005 0 : res_op1 = captures[4];
12006 0 : tree res_op2;
12007 0 : res_op2 = op0;
12008 0 : tree _r;
12009 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12010 0 : if (TREE_SIDE_EFFECTS (captures[2]))
12011 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
12012 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12013 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12014 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12015 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12016 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1110, __FILE__, __LINE__, true);
12017 0 : return _r;
12018 : }
12019 0 : next_after_fail1982:;
12020 : }
12021 : else
12022 : {
12023 0 : if (use_2
12024 : )
12025 : {
12026 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1983;
12027 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1983;
12028 0 : {
12029 0 : tree res_op0;
12030 0 : res_op0 = captures[2];
12031 0 : tree res_op1;
12032 0 : res_op1 = captures[4];
12033 0 : tree res_op2;
12034 0 : res_op2 = op0;
12035 0 : tree _r;
12036 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12037 0 : if (TREE_SIDE_EFFECTS (captures[1]))
12038 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
12039 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12040 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12041 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12042 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12043 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1111, __FILE__, __LINE__, true);
12044 0 : return _r;
12045 : }
12046 0 : next_after_fail1983:;
12047 : }
12048 : }
12049 : }
12050 0 : }
12051 : }
12052 0 : }
12053 : }
12054 0 : }
12055 : }
12056 : }
12057 0 : break;
12058 : }
12059 0 : default:;
12060 : }
12061 0 : switch (TREE_CODE (_p1))
12062 : {
12063 0 : case VEC_PERM_EXPR:
12064 0 : {
12065 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12066 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12067 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12068 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12069 : {
12070 0 : switch (TREE_CODE (_q62))
12071 : {
12072 0 : case VECTOR_CST:
12073 0 : {
12074 0 : switch (TREE_CODE (_p2))
12075 : {
12076 0 : case VECTOR_CST:
12077 0 : {
12078 0 : {
12079 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60, _q61, _p2 };
12080 0 : tree res = generic_simplify_624 (loc, type, _p0, _p1, _p2, captures);
12081 0 : if (res) return res;
12082 : }
12083 0 : break;
12084 : }
12085 : default:;
12086 : }
12087 : break;
12088 : }
12089 : default:;
12090 : }
12091 : }
12092 : break;
12093 : }
12094 : default:;
12095 : }
12096 : break;
12097 : }
12098 : default:;
12099 : }
12100 : break;
12101 : }
12102 0 : case VIEW_CONVERT_EXPR:
12103 0 : {
12104 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12105 0 : switch (TREE_CODE (_q20))
12106 : {
12107 0 : case VEC_PERM_EXPR:
12108 0 : {
12109 0 : tree _q30 = TREE_OPERAND (_q20, 0);
12110 0 : tree _q31 = TREE_OPERAND (_q20, 1);
12111 0 : tree _q32 = TREE_OPERAND (_q20, 2);
12112 0 : switch (TREE_CODE (_q32))
12113 : {
12114 0 : case VECTOR_CST:
12115 0 : {
12116 0 : switch (TREE_CODE (_p1))
12117 : {
12118 0 : case VIEW_CONVERT_EXPR:
12119 0 : {
12120 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12121 0 : switch (TREE_CODE (_q70))
12122 : {
12123 0 : case VEC_PERM_EXPR:
12124 0 : {
12125 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12126 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12127 0 : tree _q82 = TREE_OPERAND (_q70, 2);
12128 0 : if ((_q82 == _q32 && ! TREE_SIDE_EFFECTS (_q82)) || (operand_equal_p (_q82, _q32, 0) && types_match (_q82, _q32)))
12129 : {
12130 0 : switch (TREE_CODE (_q82))
12131 : {
12132 0 : case VECTOR_CST:
12133 0 : {
12134 0 : switch (TREE_CODE (_p2))
12135 : {
12136 0 : case VECTOR_CST:
12137 0 : {
12138 0 : {
12139 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q30, _q31, _q32, _q80, _q81, _p2 };
12140 0 : tree res = generic_simplify_624 (loc, type, _p0, _p1, _p2, captures);
12141 0 : if (res) return res;
12142 : }
12143 0 : break;
12144 : }
12145 : default:;
12146 : }
12147 : break;
12148 : }
12149 : default:;
12150 : }
12151 : }
12152 : break;
12153 : }
12154 : default:;
12155 : }
12156 : break;
12157 : }
12158 : default:;
12159 : }
12160 : break;
12161 : }
12162 : default:;
12163 : }
12164 : break;
12165 : }
12166 : default:;
12167 : }
12168 : break;
12169 : }
12170 : default:;
12171 : }
12172 : return NULL_TREE;
12173 : }
12174 : #pragma GCC diagnostic pop
|