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 103595164 : tree_logical_inverted_value (tree t, tree *res_ops)
11 : {
12 103595164 : const tree type = TREE_TYPE (t);
13 103595164 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 103595164 : if (TREE_SIDE_EFFECTS (t)) return false;
15 95043957 : switch (TREE_CODE (t))
16 : {
17 477773 : case TRUTH_NOT_EXPR:
18 477773 : {
19 477773 : tree _p0 = TREE_OPERAND (t, 0);
20 477773 : {
21 477773 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 477773 : {
23 477773 : res_ops[0] = captures[0];
24 477773 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 23, __FILE__, __LINE__, false);
25 : return true;
26 : }
27 : }
28 156270 : break;
29 : }
30 156270 : case BIT_NOT_EXPR:
31 156270 : {
32 156270 : tree _p0 = TREE_OPERAND (t, 0);
33 156270 : if (tree_truth_valued_p (_p0))
34 : {
35 12030 : {
36 12030 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
37 12030 : {
38 12030 : res_ops[0] = captures[0];
39 12030 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 24, __FILE__, __LINE__, false);
40 12030 : return true;
41 : }
42 : }
43 : }
44 : break;
45 : }
46 1312782 : case EQ_EXPR:
47 1312782 : {
48 1312782 : tree _p0 = TREE_OPERAND (t, 0);
49 1312782 : tree _p1 = TREE_OPERAND (t, 1);
50 1312782 : if (integer_zerop (_p1))
51 : {
52 525334 : {
53 525334 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
54 525334 : {
55 525334 : res_ops[0] = captures[0];
56 525334 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 25, __FILE__, __LINE__, false);
57 525334 : return true;
58 : }
59 : }
60 : }
61 : break;
62 : }
63 2051356 : case NE_EXPR:
64 2051356 : {
65 2051356 : tree _p0 = TREE_OPERAND (t, 0);
66 2051356 : tree _p1 = TREE_OPERAND (t, 1);
67 2051356 : if (tree_truth_valued_p (_p0))
68 : {
69 2706 : if (integer_truep (_p1))
70 : {
71 0 : {
72 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
73 0 : {
74 0 : res_ops[0] = captures[0];
75 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 26, __FILE__, __LINE__, false);
76 0 : return true;
77 : }
78 : }
79 : }
80 : }
81 : break;
82 : }
83 104824 : case BIT_XOR_EXPR:
84 104824 : {
85 104824 : tree _p0 = TREE_OPERAND (t, 0);
86 104824 : tree _p1 = TREE_OPERAND (t, 1);
87 104824 : if (tree_truth_valued_p (_p0))
88 : {
89 15046 : if (integer_truep (_p1))
90 : {
91 0 : {
92 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
93 0 : {
94 0 : res_ops[0] = captures[0];
95 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 27, __FILE__, __LINE__, false);
96 0 : return true;
97 : }
98 : }
99 : }
100 : }
101 : break;
102 : }
103 : default:;
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 3 : generic_simplify_3 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), 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 (INTEGRAL_TYPE_P (type)
115 : )
116 : {
117 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail74;
118 3 : {
119 3 : tree res_op0;
120 3 : {
121 3 : tree _o1[2], _r1;
122 3 : _o1[0] = captures[1];
123 3 : _o1[1] = captures[4];
124 3 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
125 3 : res_op0 = _r1;
126 : }
127 3 : tree res_op1;
128 3 : res_op1 = captures[2];
129 3 : tree _r;
130 3 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
131 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 51, __FILE__, __LINE__, true);
132 3 : return _r;
133 : }
134 0 : next_after_fail74:;
135 : }
136 : return NULL_TREE;
137 : }
138 :
139 : tree
140 0 : generic_simplify_11 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
141 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
142 : const enum tree_code ARG_UNUSED (bit_op))
143 : {
144 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
145 0 : if (bit_op == BIT_AND_EXPR
146 : )
147 : {
148 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail85;
149 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail85;
150 0 : {
151 0 : tree _r;
152 0 : _r = build_zero_cst (type);
153 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 58, __FILE__, __LINE__, true);
154 0 : return _r;
155 : }
156 : next_after_fail85:;
157 : }
158 : else
159 : {
160 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail86;
161 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail86;
162 0 : {
163 0 : tree _r;
164 0 : _r = build_minus_one_cst (type);
165 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 59, __FILE__, __LINE__, true);
166 0 : return _r;
167 : }
168 : next_after_fail86:;
169 : }
170 : return NULL_TREE;
171 : }
172 :
173 : tree
174 0 : generic_simplify_20 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
175 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
176 : {
177 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
178 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail95;
179 0 : {
180 0 : tree res_op0;
181 0 : res_op0 = captures[0];
182 0 : tree res_op1;
183 0 : res_op1 = captures[1];
184 0 : tree _r;
185 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
186 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 68, __FILE__, __LINE__, true);
187 : return _r;
188 : }
189 0 : next_after_fail95:;
190 0 : return NULL_TREE;
191 : }
192 :
193 : tree
194 57 : generic_simplify_27 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
195 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
196 : {
197 57 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
198 57 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
199 : )
200 : {
201 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail102;
202 33 : {
203 33 : tree res_op0;
204 33 : {
205 33 : tree _o1[1], _r1;
206 33 : _o1[0] = captures[0];
207 33 : if (TREE_TYPE (_o1[0]) != type)
208 : {
209 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
210 : }
211 : else
212 : _r1 = _o1[0];
213 33 : res_op0 = _r1;
214 : }
215 33 : tree res_op1;
216 33 : {
217 33 : tree _o1[1], _r1;
218 33 : _o1[0] = captures[1];
219 33 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
220 33 : res_op1 = _r1;
221 : }
222 33 : tree _r;
223 33 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
224 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 75, __FILE__, __LINE__, true);
225 33 : return _r;
226 : }
227 0 : next_after_fail102:;
228 : }
229 : return NULL_TREE;
230 : }
231 :
232 : tree
233 599 : generic_simplify_35 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
234 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
235 : const enum tree_code ARG_UNUSED (bitop))
236 : {
237 599 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
238 599 : if (!CONSTANT_CLASS_P (captures[0])
239 : )
240 : {
241 599 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail110;
242 599 : {
243 599 : tree res_op0;
244 599 : res_op0 = captures[0];
245 599 : tree res_op1;
246 599 : {
247 599 : tree _o1[2], _r1;
248 599 : _o1[0] = captures[1];
249 599 : _o1[1] = captures[2];
250 599 : _r1 = fold_build2_loc (loc, bitop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
251 599 : if (EXPR_P (_r1))
252 0 : goto next_after_fail110;
253 599 : res_op1 = _r1;
254 : }
255 599 : tree _r;
256 599 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
257 599 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 82, __FILE__, __LINE__, true);
258 599 : return _r;
259 : }
260 : next_after_fail110:;
261 : }
262 : else
263 : {
264 0 : {
265 0 : tree cst1 = const_binop (bitop, type, captures[0], captures[2]);
266 0 : if (cst1
267 : )
268 : {
269 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail111;
270 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail111;
271 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail111;
272 0 : {
273 0 : tree res_op0;
274 0 : res_op0 = captures[1];
275 0 : tree res_op1;
276 0 : res_op1 = cst1;
277 0 : tree _r;
278 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
279 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 83, __FILE__, __LINE__, true);
280 0 : return _r;
281 : }
282 : next_after_fail111:;
283 : }
284 : else
285 : {
286 0 : {
287 0 : tree cst2 = const_binop (bitop, type, captures[1], captures[2]);
288 0 : if (cst2
289 : )
290 : {
291 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail112;
292 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail112;
293 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail112;
294 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail112;
295 0 : {
296 0 : tree res_op0;
297 0 : res_op0 = captures[0];
298 0 : tree res_op1;
299 0 : res_op1 = cst2;
300 0 : tree _r;
301 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
302 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 84, __FILE__, __LINE__, true);
303 0 : return _r;
304 : }
305 : next_after_fail112:;
306 : }
307 : }
308 : }
309 : }
310 : }
311 : return NULL_TREE;
312 : }
313 :
314 : tree
315 534 : generic_simplify_49 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
316 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
317 : const enum tree_code ARG_UNUSED (op))
318 : {
319 534 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
320 1068 : if (INTEGRAL_TYPE_P (type)
321 532 : && tree_int_cst_sgn (captures[2]) > 0
322 2132 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[1])) == 0
323 : )
324 : {
325 6 : {
326 6 : tree t = type;
327 6 : if (!TYPE_OVERFLOW_WRAPS (t))
328 6 : t = unsigned_type_for (t);
329 6 : wide_int wone = wi::one (TYPE_PRECISION (t));
330 6 : wide_int c = wi::add (wi::lshift (wone, wi::to_wide (captures[2])), wone);
331 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail127;
332 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail127;
333 6 : {
334 6 : tree res_op0;
335 6 : {
336 6 : tree _o1[2], _r1;
337 6 : {
338 6 : tree _o2[1], _r2;
339 6 : _o2[0] = captures[1];
340 6 : if (TREE_TYPE (_o2[0]) != t)
341 : {
342 6 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
343 : }
344 : else
345 : _r2 = _o2[0];
346 6 : _o1[0] = _r2;
347 : }
348 6 : _o1[1] = wide_int_to_tree (t, c);
349 6 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
350 6 : res_op0 = _r1;
351 : }
352 6 : tree _r;
353 6 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
354 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 95, __FILE__, __LINE__, true);
355 6 : return _r;
356 : }
357 0 : next_after_fail127:;
358 6 : }
359 : }
360 : return NULL_TREE;
361 : }
362 :
363 : tree
364 3060341 : generic_simplify_63 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
365 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
366 : const enum tree_code ARG_UNUSED (inner_op),
367 : const enum tree_code ARG_UNUSED (neg_inner_op),
368 : const enum tree_code ARG_UNUSED (outer_op))
369 : {
370 3060341 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
371 3060341 : if (!TYPE_SATURATING (type)
372 : )
373 : {
374 3060341 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
375 6120437 : && !FIXED_POINT_TYPE_P (type)
376 : )
377 : {
378 3060096 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
379 : )
380 : {
381 2037095 : if (!CONSTANT_CLASS_P (captures[0])
382 : )
383 : {
384 2037088 : if (outer_op == PLUS_EXPR
385 : )
386 : {
387 2037088 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail144;
388 2037088 : {
389 2037088 : tree res_op0;
390 2037088 : {
391 2037088 : tree _o1[1], _r1;
392 2037088 : _o1[0] = captures[0];
393 2037088 : if (TREE_TYPE (_o1[0]) != type)
394 : {
395 852300 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
396 : }
397 : else
398 : _r1 = _o1[0];
399 2037088 : res_op0 = _r1;
400 : }
401 2037088 : tree res_op1;
402 2037088 : {
403 2037088 : tree _o1[2], _r1;
404 2037088 : _o1[0] = captures[2];
405 2037088 : {
406 2037088 : tree _o2[1], _r2;
407 2037088 : _o2[0] = captures[1];
408 2037088 : if (TREE_TYPE (_o2[0]) != type)
409 : {
410 843256 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
411 : }
412 : else
413 : _r2 = _o2[0];
414 2037088 : _o1[1] = _r2;
415 : }
416 2037088 : _r1 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
417 2037088 : if (EXPR_P (_r1))
418 0 : goto next_after_fail144;
419 2037088 : res_op1 = _r1;
420 : }
421 2037088 : tree _r;
422 2037088 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
423 2037088 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 112, __FILE__, __LINE__, true);
424 2037088 : return _r;
425 : }
426 : next_after_fail144:;
427 : }
428 : else
429 : {
430 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail145;
431 0 : {
432 0 : tree res_op0;
433 0 : {
434 0 : tree _o1[1], _r1;
435 0 : _o1[0] = captures[0];
436 0 : if (TREE_TYPE (_o1[0]) != type)
437 : {
438 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
439 : }
440 : else
441 : _r1 = _o1[0];
442 0 : res_op0 = _r1;
443 : }
444 0 : tree res_op1;
445 0 : {
446 0 : tree _o1[2], _r1;
447 0 : _o1[0] = captures[2];
448 0 : {
449 0 : tree _o2[1], _r2;
450 0 : _o2[0] = captures[1];
451 0 : if (TREE_TYPE (_o2[0]) != type)
452 : {
453 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
454 : }
455 : else
456 : _r2 = _o2[0];
457 0 : _o1[1] = _r2;
458 : }
459 0 : _r1 = fold_build2_loc (loc, neg_inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
460 0 : if (EXPR_P (_r1))
461 0 : goto next_after_fail145;
462 0 : res_op1 = _r1;
463 : }
464 0 : tree _r;
465 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
466 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 113, __FILE__, __LINE__, true);
467 0 : return _r;
468 : }
469 : next_after_fail145:;
470 : }
471 : }
472 : }
473 : else
474 : {
475 2046002 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
476 2046002 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
477 : )
478 : {
479 200301 : if (outer_op == PLUS_EXPR
480 : )
481 : {
482 200274 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail146;
483 200274 : {
484 200274 : tree res_op0;
485 200274 : {
486 200274 : tree _o1[2], _r1;
487 200274 : _o1[0] = captures[0];
488 200274 : {
489 200274 : tree _o2[2], _r2;
490 200274 : {
491 200274 : tree _o3[1], _r3;
492 200274 : _o3[0] = captures[2];
493 200274 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
494 : {
495 200274 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
496 : }
497 : else
498 : _r3 = _o3[0];
499 200274 : _o2[0] = _r3;
500 : }
501 200274 : _o2[1] = captures[1];
502 200274 : _r2 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
503 200274 : if (EXPR_P (_r2))
504 0 : goto next_after_fail146;
505 200274 : _o1[1] = _r2;
506 : }
507 200274 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
508 200274 : res_op0 = _r1;
509 : }
510 200274 : tree _r;
511 200274 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
512 200274 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 114, __FILE__, __LINE__, true);
513 200274 : return _r;
514 : }
515 : next_after_fail146:;
516 : }
517 : else
518 : {
519 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail147;
520 27 : {
521 27 : tree res_op0;
522 27 : {
523 27 : tree _o1[2], _r1;
524 27 : _o1[0] = captures[0];
525 27 : {
526 27 : tree _o2[2], _r2;
527 27 : {
528 27 : tree _o3[1], _r3;
529 27 : _o3[0] = captures[2];
530 27 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
531 : {
532 27 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
533 : }
534 : else
535 : _r3 = _o3[0];
536 27 : _o2[0] = _r3;
537 : }
538 27 : _o2[1] = captures[1];
539 27 : _r2 = fold_build2_loc (loc, neg_inner_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
540 27 : if (EXPR_P (_r2))
541 0 : goto next_after_fail147;
542 27 : _o1[1] = _r2;
543 : }
544 27 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
545 27 : res_op0 = _r1;
546 : }
547 27 : tree _r;
548 27 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
549 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 115, __FILE__, __LINE__, true);
550 27 : return _r;
551 : }
552 : next_after_fail147:;
553 : }
554 : }
555 : else
556 : {
557 822700 : if (types_match (type, captures[0]) && !TYPE_OVERFLOW_SANITIZED (type)
558 : )
559 : {
560 821480 : {
561 821480 : tree cst = const_binop (outer_op == inner_op
562 : ? PLUS_EXPR : MINUS_EXPR,
563 : type, captures[1], captures[2]);
564 821480 : if (cst
565 : )
566 : {
567 821480 : if (INTEGRAL_TYPE_P (type) && !TREE_OVERFLOW (cst)
568 : )
569 : {
570 821466 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail148;
571 821466 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail148;
572 821466 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail148;
573 821466 : {
574 821466 : tree res_op0;
575 821466 : res_op0 = captures[0];
576 821466 : tree res_op1;
577 821466 : res_op1 = cst;
578 821466 : tree _r;
579 821466 : _r = fold_build2_loc (loc, inner_op, type, res_op0, res_op1);
580 821466 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 116, __FILE__, __LINE__, true);
581 821466 : return _r;
582 : }
583 : next_after_fail148:;
584 : }
585 : else
586 : {
587 28 : if (INTEGRAL_TYPE_P (type)
588 28 : && wi::to_wide (cst) == wi::min_value (type)
589 : )
590 : {
591 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail149;
592 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail149;
593 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail149;
594 7 : {
595 7 : tree res_op0;
596 7 : res_op0 = captures[0];
597 7 : tree res_op1;
598 7 : res_op1 = wide_int_to_tree (type, wi::to_wide (cst));
599 7 : tree _r;
600 7 : _r = fold_build2_loc (loc, neg_inner_op, type, res_op0, res_op1);
601 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 117, __FILE__, __LINE__, true);
602 7 : return _r;
603 : }
604 : next_after_fail149:;
605 : }
606 : else
607 : {
608 7 : {
609 7 : tree utype = unsigned_type_for (type);
610 7 : if (utype
611 : )
612 : {
613 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail150;
614 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail150;
615 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail150;
616 7 : {
617 7 : tree res_op0;
618 7 : {
619 7 : tree _o1[2], _r1;
620 7 : {
621 7 : tree _o2[1], _r2;
622 7 : _o2[0] = captures[0];
623 7 : if (TREE_TYPE (_o2[0]) != utype)
624 : {
625 7 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o2[0]);
626 : }
627 : else
628 : _r2 = _o2[0];
629 7 : _o1[0] = _r2;
630 : }
631 7 : {
632 7 : tree _o2[1], _r2;
633 7 : _o2[0] = TREE_OVERFLOW (cst)
634 7 : ? drop_tree_overflow (cst) : cst;
635 7 : if (TREE_TYPE (_o2[0]) != utype)
636 : {
637 7 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o2[0]);
638 : }
639 : else
640 : _r2 = _o2[0];
641 7 : _o1[1] = _r2;
642 : }
643 7 : _r1 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
644 7 : res_op0 = _r1;
645 : }
646 7 : tree _r;
647 7 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
648 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 118, __FILE__, __LINE__, true);
649 7 : return _r;
650 : }
651 : next_after_fail150:;
652 : }
653 : }
654 : }
655 : }
656 : }
657 : }
658 : }
659 : }
660 : }
661 : }
662 : }
663 : return NULL_TREE;
664 : }
665 :
666 : tree
667 0 : generic_simplify_120 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
668 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
669 : const enum tree_code ARG_UNUSED (op))
670 : {
671 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
672 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail217;
673 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail217;
674 0 : {
675 0 : tree _r;
676 0 : _r = captures[0];
677 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 183, __FILE__, __LINE__, true);
678 : return _r;
679 : }
680 : next_after_fail217:;
681 : return NULL_TREE;
682 : }
683 :
684 : tree
685 2 : generic_simplify_125 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
686 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
687 : {
688 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
689 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail222;
690 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail222;
691 2 : {
692 2 : tree res_op0;
693 2 : res_op0 = captures[0];
694 2 : tree res_op1;
695 2 : res_op1 = captures[3];
696 2 : tree _r;
697 2 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
698 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 187, __FILE__, __LINE__, true);
699 : return _r;
700 : }
701 : next_after_fail222:;
702 : return NULL_TREE;
703 : }
704 :
705 : tree
706 0 : generic_simplify_136 (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 (op))
709 : {
710 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
711 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail233;
712 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail233;
713 0 : {
714 0 : tree _r;
715 0 : _r = captures[0];
716 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 184, __FILE__, __LINE__, true);
717 : return _r;
718 : }
719 : next_after_fail233:;
720 : return NULL_TREE;
721 : }
722 :
723 : tree
724 0 : generic_simplify_145 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
725 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
726 : const enum tree_code ARG_UNUSED (bitop),
727 : const enum tree_code ARG_UNUSED (rbitop))
728 : {
729 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
730 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail246;
731 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail246;
732 0 : {
733 0 : tree _r;
734 0 : _r = captures[2];
735 0 : if (TREE_SIDE_EFFECTS (captures[1]))
736 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
737 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 198, __FILE__, __LINE__, true);
738 : return _r;
739 : }
740 : next_after_fail246:;
741 : return NULL_TREE;
742 : }
743 :
744 : tree
745 0 : generic_simplify_151 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
746 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
747 : const enum tree_code ARG_UNUSED (op))
748 : {
749 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
750 0 : if (bitwise_equal_p (captures[4], captures[7])
751 : )
752 : {
753 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail253;
754 0 : {
755 0 : tree res_op0;
756 0 : {
757 0 : tree _o1[2], _r1;
758 0 : {
759 0 : tree _o2[2], _r2;
760 0 : _o2[0] = captures[5];
761 0 : {
762 0 : tree _o3[1], _r3;
763 0 : _o3[0] = captures[6];
764 0 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
765 : {
766 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
767 : }
768 : else
769 : _r3 = _o3[0];
770 0 : _o2[1] = _r3;
771 : }
772 0 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
773 0 : _o1[0] = _r2;
774 : }
775 0 : {
776 0 : tree _o2[1], _r2;
777 0 : _o2[0] = captures[4];
778 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
779 : {
780 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
781 : }
782 : else
783 : _r2 = _o2[0];
784 0 : _o1[1] = _r2;
785 : }
786 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
787 0 : res_op0 = _r1;
788 : }
789 0 : tree _r;
790 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
791 0 : if (TREE_SIDE_EFFECTS (captures[7]))
792 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
793 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 202, __FILE__, __LINE__, true);
794 0 : return _r;
795 : }
796 0 : next_after_fail253:;
797 : }
798 : return NULL_TREE;
799 : }
800 :
801 : tree
802 0 : generic_simplify_163 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
803 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
804 : {
805 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
806 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail286;
807 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail286;
808 0 : {
809 0 : tree _r;
810 0 : _r = captures[2];
811 0 : if (TREE_SIDE_EFFECTS (captures[1]))
812 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
813 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 209, __FILE__, __LINE__, true);
814 : return _r;
815 : }
816 : next_after_fail286:;
817 : return NULL_TREE;
818 : }
819 :
820 : tree
821 0 : generic_simplify_167 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
822 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
823 : const enum tree_code ARG_UNUSED (code2),
824 : const enum tree_code ARG_UNUSED (code1))
825 : {
826 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
827 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
828 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
829 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
830 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
831 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
832 0 : && bitwise_equal_p (captures[2], captures[5]))
833 : )
834 : {
835 0 : {
836 0 : bool one_before = false;
837 0 : bool one_after = false;
838 0 : int cmp = 0;
839 0 : bool allbits = true;
840 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
841 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
842 : {
843 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
844 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
845 0 : auto t2 = wi::to_wide (captures[5]);
846 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
847 0 : if (cmp < 0
848 0 : && t1 == t2 - 1)
849 : one_before = true;
850 0 : if (cmp > 0
851 0 : && t1 == t2 + 1)
852 : one_after = true;
853 : }
854 0 : bool val;
855 0 : switch (code2)
856 : {
857 0 : case EQ_EXPR: val = (cmp == 0); break;
858 0 : case NE_EXPR: val = (cmp != 0); break;
859 0 : case LT_EXPR: val = (cmp < 0); break;
860 0 : case GT_EXPR: val = (cmp > 0); break;
861 0 : case LE_EXPR: val = (cmp <= 0); break;
862 0 : case GE_EXPR: val = (cmp >= 0); break;
863 0 : default: gcc_unreachable ();
864 : }
865 0 : if (code1 == EQ_EXPR && val
866 : )
867 : {
868 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail291;
869 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail291;
870 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail291;
871 0 : {
872 0 : tree _r;
873 0 : _r = captures[3];
874 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
875 0 : return _r;
876 : }
877 : next_after_fail291:;
878 : }
879 : else
880 : {
881 0 : if (code1 == NE_EXPR && val && allbits
882 : )
883 : {
884 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail292;
885 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail292;
886 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail292;
887 0 : {
888 0 : tree _r;
889 0 : _r = constant_boolean_node (true, type);
890 0 : if (TREE_SIDE_EFFECTS (captures[1]))
891 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
892 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
893 0 : return _r;
894 : }
895 : next_after_fail292:;
896 : }
897 : else
898 : {
899 0 : if (code1 == NE_EXPR && !val && allbits
900 : )
901 : {
902 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail293;
903 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail293;
904 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail293;
905 0 : {
906 0 : tree _r;
907 0 : _r = captures[0];
908 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
909 0 : return _r;
910 : }
911 : next_after_fail293:;
912 : }
913 : else
914 : {
915 0 : if (code1 == EQ_EXPR
916 0 : && code2 == GT_EXPR
917 0 : && cmp == 0
918 0 : && allbits
919 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
920 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
921 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
922 : )
923 : {
924 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail294;
925 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail294;
926 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail294;
927 0 : {
928 0 : tree res_op0;
929 0 : res_op0 = captures[4];
930 0 : tree res_op1;
931 0 : res_op1 = captures[5];
932 0 : tree _r;
933 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
934 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
935 0 : return _r;
936 : }
937 : next_after_fail294:;
938 : }
939 : else
940 : {
941 0 : if (code1 == EQ_EXPR
942 0 : && code2 == LT_EXPR
943 0 : && cmp == 0
944 0 : && allbits
945 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
946 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
947 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
948 : )
949 : {
950 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail295;
951 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail295;
952 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail295;
953 0 : {
954 0 : tree res_op0;
955 0 : res_op0 = captures[4];
956 0 : tree res_op1;
957 0 : res_op1 = captures[5];
958 0 : tree _r;
959 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
960 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
961 0 : return _r;
962 : }
963 : next_after_fail295:;
964 : }
965 : else
966 : {
967 0 : if (code1 == EQ_EXPR
968 0 : && code2 == GE_EXPR
969 : && one_before
970 0 : && allbits
971 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
972 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
973 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
974 : )
975 : {
976 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail296;
977 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail296;
978 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail296;
979 0 : {
980 0 : tree res_op0;
981 0 : res_op0 = captures[4];
982 0 : tree res_op1;
983 0 : {
984 0 : tree _o1[1], _r1;
985 0 : _o1[0] = captures[2];
986 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
987 : {
988 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
989 : }
990 : else
991 : _r1 = _o1[0];
992 0 : res_op1 = _r1;
993 : }
994 0 : tree _r;
995 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
996 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
997 0 : return _r;
998 : }
999 : next_after_fail296:;
1000 : }
1001 : else
1002 : {
1003 0 : if (code1 == EQ_EXPR
1004 0 : && code2 == LE_EXPR
1005 : && one_after
1006 0 : && allbits
1007 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1008 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1009 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1010 : )
1011 : {
1012 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail297;
1013 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail297;
1014 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail297;
1015 0 : {
1016 0 : tree res_op0;
1017 0 : res_op0 = captures[4];
1018 0 : tree res_op1;
1019 0 : {
1020 0 : tree _o1[1], _r1;
1021 0 : _o1[0] = captures[2];
1022 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1023 : {
1024 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1025 : }
1026 : else
1027 : _r1 = _o1[0];
1028 0 : res_op1 = _r1;
1029 : }
1030 0 : tree _r;
1031 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1032 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 218, __FILE__, __LINE__, true);
1033 0 : return _r;
1034 : }
1035 : next_after_fail297:;
1036 : }
1037 : }
1038 : }
1039 : }
1040 : }
1041 : }
1042 : }
1043 : }
1044 : }
1045 : return NULL_TREE;
1046 : }
1047 :
1048 : tree
1049 64 : generic_simplify_208 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1050 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1051 : const enum tree_code ARG_UNUSED (cmp))
1052 : {
1053 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1054 120 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1055 120 : && tree_expr_nonzero_p (captures[0])
1056 : )
1057 : {
1058 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail348;
1059 12 : {
1060 12 : tree _r;
1061 12 : _r = constant_boolean_node (cmp != EQ_EXPR, type);
1062 12 : if (TREE_SIDE_EFFECTS (captures[0]))
1063 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1064 12 : if (TREE_SIDE_EFFECTS (captures[1]))
1065 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1066 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 263, __FILE__, __LINE__, true);
1067 12 : return _r;
1068 : }
1069 0 : next_after_fail348:;
1070 : }
1071 : return NULL_TREE;
1072 : }
1073 :
1074 : tree
1075 9149 : generic_simplify_216 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1076 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1077 : const enum tree_code ARG_UNUSED (neeq),
1078 : const enum tree_code ARG_UNUSED (ltge))
1079 : {
1080 9149 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1081 9149 : {
1082 9149 : tree itype = signed_type_for (TREE_TYPE (captures[1]));
1083 18085 : if (wi::to_wide (captures[2]) == element_precision (itype) - 1
1084 9149 : && (!VECTOR_TYPE_P (itype)
1085 13 : || (cfun
1086 13 : && cfun->after_inlining
1087 5 : && VECTOR_BOOLEAN_TYPE_P (type)
1088 2 : && (expand_vec_cmp_expr_p (itype, type, ltge)
1089 2 : || !expand_vec_cmp_expr_p (TREE_TYPE (captures[0]),
1090 : type, neeq))))
1091 : )
1092 : {
1093 213 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail359;
1094 213 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail359;
1095 213 : {
1096 213 : tree res_op0;
1097 213 : {
1098 213 : tree _o1[1], _r1;
1099 213 : _o1[0] = captures[1];
1100 213 : if (TREE_TYPE (_o1[0]) != itype)
1101 : {
1102 161 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
1103 : }
1104 : else
1105 : _r1 = _o1[0];
1106 213 : res_op0 = _r1;
1107 : }
1108 213 : tree res_op1;
1109 213 : res_op1 = build_zero_cst (itype);
1110 213 : tree _r;
1111 213 : _r = fold_build2_loc (loc, ltge, type, res_op0, res_op1);
1112 213 : if (TREE_SIDE_EFFECTS (captures[2]))
1113 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1114 213 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 273, __FILE__, __LINE__, true);
1115 213 : return _r;
1116 : }
1117 : next_after_fail359:;
1118 : }
1119 : }
1120 : return NULL_TREE;
1121 : }
1122 :
1123 : tree
1124 21 : generic_simplify_229 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1125 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1126 : const enum tree_code ARG_UNUSED (cmp))
1127 : {
1128 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1129 21 : if (TREE_INT_CST_LOW (captures[1]) & 1
1130 : )
1131 : {
1132 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail385;
1133 2 : {
1134 2 : tree _r;
1135 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1136 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1137 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1138 2 : if (TREE_SIDE_EFFECTS (captures[1]))
1139 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1140 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 298, __FILE__, __LINE__, true);
1141 2 : return _r;
1142 : }
1143 0 : next_after_fail385:;
1144 : }
1145 : return NULL_TREE;
1146 : }
1147 :
1148 : tree
1149 45 : generic_simplify_235 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1150 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1151 : const enum tree_code ARG_UNUSED (cmp))
1152 : {
1153 45 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1154 45 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1155 : )
1156 : {
1157 0 : {
1158 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1159 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail393;
1160 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail393;
1161 0 : {
1162 0 : tree res_op0;
1163 0 : {
1164 0 : tree _o1[2], _r1;
1165 0 : {
1166 0 : tree _o2[1], _r2;
1167 0 : _o2[0] = captures[0];
1168 0 : if (TREE_TYPE (_o2[0]) != utype)
1169 : {
1170 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1171 : }
1172 : else
1173 : _r2 = _o2[0];
1174 0 : _o1[0] = _r2;
1175 : }
1176 0 : {
1177 0 : tree _o2[1], _r2;
1178 0 : _o2[0] = captures[1];
1179 0 : if (TREE_TYPE (_o2[0]) != utype)
1180 : {
1181 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1182 : }
1183 : else
1184 : _r2 = _o2[0];
1185 0 : _o1[1] = _r2;
1186 : }
1187 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1188 0 : res_op0 = _r1;
1189 : }
1190 0 : tree res_op1;
1191 0 : res_op1 = build_zero_cst (utype);
1192 0 : tree _r;
1193 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1194 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 306, __FILE__, __LINE__, true);
1195 0 : return _r;
1196 : }
1197 : next_after_fail393:;
1198 : }
1199 : }
1200 : return NULL_TREE;
1201 : }
1202 :
1203 : tree
1204 124 : generic_simplify_243 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1205 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1206 : const enum tree_code ARG_UNUSED (rotate),
1207 : const enum tree_code ARG_UNUSED (invrot),
1208 : const enum tree_code ARG_UNUSED (cmp))
1209 : {
1210 124 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1211 124 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail411;
1212 124 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail411;
1213 124 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail411;
1214 124 : {
1215 124 : tree res_op0;
1216 124 : res_op0 = captures[0];
1217 124 : tree res_op1;
1218 124 : res_op1 = const_binop (invrot, TREE_TYPE (captures[0]), captures[2], captures[1]);
1219 124 : tree _r;
1220 124 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1221 124 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 324, __FILE__, __LINE__, true);
1222 : return _r;
1223 : }
1224 : next_after_fail411:;
1225 : return NULL_TREE;
1226 : }
1227 :
1228 : tree
1229 25682 : generic_simplify_249 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1230 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1231 : const enum tree_code ARG_UNUSED (cmp),
1232 : const enum tree_code ARG_UNUSED (icmp),
1233 : const enum tree_code ARG_UNUSED (ncmp))
1234 : {
1235 25682 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1236 25682 : if (types_match (type, TREE_TYPE (captures[0]))
1237 : )
1238 : {
1239 25017 : {
1240 25017 : enum tree_code ic = invert_tree_comparison
1241 25017 : (cmp, HONOR_NANS (captures[1]));
1242 25017 : if (ic == icmp
1243 : )
1244 : {
1245 24778 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail417;
1246 24778 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail417;
1247 24778 : {
1248 24778 : tree res_op0;
1249 24778 : res_op0 = captures[1];
1250 24778 : tree res_op1;
1251 24778 : res_op1 = captures[2];
1252 24778 : tree _r;
1253 24778 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1254 24778 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 330, __FILE__, __LINE__, true);
1255 24778 : return _r;
1256 : }
1257 : next_after_fail417:;
1258 : }
1259 : else
1260 : {
1261 239 : if (ic == ncmp
1262 : )
1263 : {
1264 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail418;
1265 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail418;
1266 0 : {
1267 0 : tree res_op0;
1268 0 : res_op0 = captures[1];
1269 0 : tree res_op1;
1270 0 : res_op1 = captures[2];
1271 0 : tree _r;
1272 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1273 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 331, __FILE__, __LINE__, true);
1274 0 : return _r;
1275 : }
1276 : next_after_fail418:;
1277 : }
1278 : }
1279 : }
1280 : }
1281 : return NULL_TREE;
1282 : }
1283 :
1284 : tree
1285 6193562 : generic_simplify_259 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1286 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1287 : const enum tree_code ARG_UNUSED (cmp))
1288 : {
1289 6193562 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1290 6193562 : if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[1]))
1291 : )
1292 : {
1293 1708 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail433;
1294 1708 : {
1295 1708 : tree res_op0;
1296 1708 : res_op0 = captures[0];
1297 1708 : tree res_op1;
1298 1708 : res_op1 = build_real (TREE_TYPE (captures[1]), dconst0);
1299 1708 : tree _r;
1300 1708 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1301 1708 : if (TREE_SIDE_EFFECTS (captures[1]))
1302 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1303 1708 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 344, __FILE__, __LINE__, true);
1304 1708 : return _r;
1305 : }
1306 0 : next_after_fail433:;
1307 : }
1308 : else
1309 : {
1310 6191854 : if (TREE_CODE (captures[0]) == REAL_CST
1311 6191854 : && REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[0]))
1312 : )
1313 : {
1314 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail434;
1315 0 : {
1316 0 : tree res_op0;
1317 0 : res_op0 = build_real (TREE_TYPE (captures[0]), dconst0);
1318 0 : tree res_op1;
1319 0 : res_op1 = captures[1];
1320 0 : tree _r;
1321 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1322 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1323 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1324 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 345, __FILE__, __LINE__, true);
1325 0 : return _r;
1326 : }
1327 0 : next_after_fail434:;
1328 : }
1329 : else
1330 : {
1331 6191854 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
1332 834 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1333 258 : && !tree_expr_signaling_nan_p (captures[1])
1334 6192082 : && !tree_expr_maybe_signaling_nan_p (captures[0])
1335 : )
1336 : {
1337 228 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail435;
1338 228 : {
1339 228 : tree _r;
1340 228 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1341 228 : if (TREE_SIDE_EFFECTS (captures[0]))
1342 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1343 228 : if (TREE_SIDE_EFFECTS (captures[1]))
1344 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1345 228 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 346, __FILE__, __LINE__, true);
1346 228 : return _r;
1347 : }
1348 0 : next_after_fail435:;
1349 : }
1350 : else
1351 : {
1352 6191626 : if (TREE_CODE (captures[0]) == REAL_CST
1353 2011 : && REAL_VALUE_ISNAN (TREE_REAL_CST (captures[0]))
1354 1817 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1355 0 : && !tree_expr_signaling_nan_p (captures[0])
1356 6191626 : && !tree_expr_signaling_nan_p (captures[1])
1357 : )
1358 : {
1359 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail436;
1360 0 : {
1361 0 : tree _r;
1362 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1363 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1364 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1365 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1366 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1367 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 347, __FILE__, __LINE__, true);
1368 0 : return _r;
1369 : }
1370 0 : next_after_fail436:;
1371 : }
1372 : else
1373 : {
1374 6191626 : if (REAL_VALUE_ISINF (TREE_REAL_CST (captures[1]))
1375 6896984 : && MODE_HAS_INFINITIES (TYPE_MODE (TREE_TYPE (captures[1])))
1376 : )
1377 : {
1378 235147 : {
1379 235147 : REAL_VALUE_TYPE max;
1380 235147 : enum tree_code code = cmp;
1381 235147 : bool neg = REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]));
1382 235147 : if (neg)
1383 33213 : code = swap_tree_comparison (code);
1384 235147 : if (code == GT_EXPR
1385 235147 : && !(HONOR_NANS (captures[0]) && flag_trapping_math)
1386 : )
1387 : {
1388 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail437;
1389 7 : {
1390 7 : tree _r;
1391 7 : _r = constant_boolean_node (false, type);
1392 7 : if (TREE_SIDE_EFFECTS (captures[0]))
1393 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1394 7 : if (TREE_SIDE_EFFECTS (captures[1]))
1395 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1396 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 348, __FILE__, __LINE__, true);
1397 67172 : return _r;
1398 : }
1399 0 : next_after_fail437:;
1400 : }
1401 : else
1402 : {
1403 235140 : if (code == LE_EXPR
1404 : )
1405 : {
1406 32143 : if (! HONOR_NANS (captures[0])
1407 : )
1408 : {
1409 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail438;
1410 0 : {
1411 0 : tree _r;
1412 0 : _r = constant_boolean_node (true, type);
1413 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1414 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1415 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1416 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1417 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 349, __FILE__, __LINE__, true);
1418 0 : return _r;
1419 : }
1420 0 : next_after_fail438:;
1421 : }
1422 : else
1423 : {
1424 32143 : if (!flag_trapping_math
1425 : )
1426 : {
1427 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail439;
1428 2 : {
1429 2 : if (! tree_invariant_p (captures[0])) goto next_after_fail439;
1430 0 : tree res_op0;
1431 0 : res_op0 = unshare_expr (captures[0]);
1432 0 : tree res_op1;
1433 0 : res_op1 = captures[0];
1434 0 : tree _r;
1435 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1436 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1437 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1438 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 350, __FILE__, __LINE__, true);
1439 0 : return _r;
1440 : }
1441 167975 : next_after_fail439:;
1442 : }
1443 : }
1444 : }
1445 : else
1446 : {
1447 135631 : if ((code == EQ_EXPR && !(HONOR_NANS (captures[0]) && flag_trapping_math))
1448 338592 : || code == GE_EXPR
1449 : )
1450 : {
1451 140 : {
1452 140 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1453 140 : if (neg
1454 : )
1455 : {
1456 55 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail440;
1457 55 : {
1458 55 : tree res_op0;
1459 55 : res_op0 = captures[0];
1460 55 : tree res_op1;
1461 55 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1462 55 : tree _r;
1463 55 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1464 55 : if (TREE_SIDE_EFFECTS (captures[1]))
1465 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1466 55 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 351, __FILE__, __LINE__, true);
1467 55 : return _r;
1468 : }
1469 0 : next_after_fail440:;
1470 : }
1471 : else
1472 : {
1473 85 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail441;
1474 85 : {
1475 85 : tree res_op0;
1476 85 : res_op0 = captures[0];
1477 85 : tree res_op1;
1478 85 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1479 85 : tree _r;
1480 85 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1481 85 : if (TREE_SIDE_EFFECTS (captures[1]))
1482 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1483 85 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 352, __FILE__, __LINE__, true);
1484 85 : return _r;
1485 : }
1486 0 : next_after_fail441:;
1487 : }
1488 : }
1489 : }
1490 : else
1491 : {
1492 202857 : if (code == LT_EXPR
1493 : )
1494 : {
1495 90 : {
1496 90 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1497 90 : if (neg
1498 : )
1499 : {
1500 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail442;
1501 26 : {
1502 26 : tree res_op0;
1503 26 : res_op0 = captures[0];
1504 26 : tree res_op1;
1505 26 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1506 26 : tree _r;
1507 26 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1508 26 : if (TREE_SIDE_EFFECTS (captures[1]))
1509 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1510 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 353, __FILE__, __LINE__, true);
1511 26 : return _r;
1512 : }
1513 0 : next_after_fail442:;
1514 : }
1515 : else
1516 : {
1517 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail443;
1518 64 : {
1519 64 : tree res_op0;
1520 64 : res_op0 = captures[0];
1521 64 : tree res_op1;
1522 64 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1523 64 : tree _r;
1524 64 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1525 64 : if (TREE_SIDE_EFFECTS (captures[1]))
1526 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1527 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 354, __FILE__, __LINE__, true);
1528 64 : return _r;
1529 : }
1530 0 : next_after_fail443:;
1531 : }
1532 : }
1533 : }
1534 : else
1535 : {
1536 202767 : if (code == NE_EXPR
1537 : )
1538 : {
1539 66935 : {
1540 66935 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1541 66935 : if (! HONOR_NANS (captures[0])
1542 : )
1543 : {
1544 0 : if (neg
1545 : )
1546 : {
1547 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail444;
1548 0 : {
1549 0 : tree res_op0;
1550 0 : res_op0 = captures[0];
1551 0 : tree res_op1;
1552 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1553 0 : tree _r;
1554 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1555 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1556 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1557 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 355, __FILE__, __LINE__, true);
1558 0 : return _r;
1559 : }
1560 0 : next_after_fail444:;
1561 : }
1562 : else
1563 : {
1564 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail445;
1565 0 : {
1566 0 : tree res_op0;
1567 0 : res_op0 = captures[0];
1568 0 : tree res_op1;
1569 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1570 0 : tree _r;
1571 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1572 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1573 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1574 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 356, __FILE__, __LINE__, true);
1575 0 : return _r;
1576 : }
1577 0 : next_after_fail445:;
1578 : }
1579 : }
1580 : else
1581 : {
1582 66935 : if (neg
1583 : )
1584 : {
1585 560 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail446;
1586 560 : {
1587 560 : tree res_op0;
1588 560 : res_op0 = captures[0];
1589 560 : tree res_op1;
1590 560 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1591 560 : tree _r;
1592 560 : _r = fold_build2_loc (loc, UNGE_EXPR, type, res_op0, res_op1);
1593 560 : if (TREE_SIDE_EFFECTS (captures[1]))
1594 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1595 560 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 357, __FILE__, __LINE__, true);
1596 560 : return _r;
1597 : }
1598 0 : next_after_fail446:;
1599 : }
1600 : else
1601 : {
1602 66375 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail447;
1603 66375 : {
1604 66375 : tree res_op0;
1605 66375 : res_op0 = captures[0];
1606 66375 : tree res_op1;
1607 66375 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1608 66375 : tree _r;
1609 66375 : _r = fold_build2_loc (loc, UNLE_EXPR, type, res_op0, res_op1);
1610 66375 : if (TREE_SIDE_EFFECTS (captures[1]))
1611 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1612 66375 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 358, __FILE__, __LINE__, true);
1613 66375 : return _r;
1614 : }
1615 0 : next_after_fail447:;
1616 : }
1617 : }
1618 : }
1619 : }
1620 : }
1621 : }
1622 : }
1623 : }
1624 : }
1625 : }
1626 : }
1627 : }
1628 : }
1629 : }
1630 : return NULL_TREE;
1631 : }
1632 :
1633 : tree
1634 45 : generic_simplify_300 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1635 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1636 : const enum tree_code ARG_UNUSED (cmp),
1637 : const enum tree_code ARG_UNUSED (rep),
1638 : const combined_fn ARG_UNUSED (popcount))
1639 : {
1640 45 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1641 45 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail563;
1642 45 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail563;
1643 45 : {
1644 45 : tree res_op0;
1645 45 : res_op0 = captures[0];
1646 45 : tree res_op1;
1647 45 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1648 45 : tree _r;
1649 45 : _r = fold_build2_loc (loc, rep, type, res_op0, res_op1);
1650 45 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 456, __FILE__, __LINE__, true);
1651 : return _r;
1652 : }
1653 : next_after_fail563:;
1654 : return NULL_TREE;
1655 : }
1656 :
1657 : tree
1658 235236 : generic_simplify_305 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1659 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1660 : const enum tree_code ARG_UNUSED (cmp))
1661 : {
1662 235236 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1663 235236 : if (cmp != NE_EXPR
1664 230071 : || ! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1665 247774 : || ! tree_expr_maybe_nan_p (captures[0])
1666 : )
1667 : {
1668 228512 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail571;
1669 228512 : {
1670 228512 : tree _r;
1671 228512 : _r = constant_boolean_node (false, type);
1672 228512 : if (TREE_SIDE_EFFECTS (captures[0]))
1673 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1674 228512 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 464, __FILE__, __LINE__, true);
1675 228512 : return _r;
1676 : }
1677 0 : next_after_fail571:;
1678 : }
1679 : return NULL_TREE;
1680 : }
1681 :
1682 : tree
1683 0 : generic_simplify_309 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1684 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1685 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1686 : {
1687 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1688 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail575;
1689 0 : {
1690 0 : tree _r;
1691 0 : _r = captures[0];
1692 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 468, __FILE__, __LINE__, true);
1693 : return _r;
1694 : }
1695 0 : next_after_fail575:;
1696 0 : return NULL_TREE;
1697 : }
1698 :
1699 : tree
1700 14407 : generic_simplify_316 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1701 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1702 : const enum tree_code ARG_UNUSED (div))
1703 : {
1704 14407 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1705 14407 : if (INTEGRAL_TYPE_P (type)
1706 14379 : && ssa_name_has_boolean_range (captures[1])
1707 14407 : && !flag_non_call_exceptions
1708 : )
1709 : {
1710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail584;
1711 0 : {
1712 0 : tree _r;
1713 0 : _r = captures[0];
1714 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1715 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1716 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 475, __FILE__, __LINE__, true);
1717 0 : return _r;
1718 : }
1719 0 : next_after_fail584:;
1720 : }
1721 : return NULL_TREE;
1722 : }
1723 :
1724 : tree
1725 25266 : generic_simplify_322 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1726 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1727 : const enum tree_code ARG_UNUSED (div))
1728 : {
1729 25266 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1730 25266 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1731 : )
1732 : {
1733 25118 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail591;
1734 25118 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail591;
1735 25118 : {
1736 25118 : tree res_op0;
1737 25118 : res_op0 = captures[0];
1738 25118 : tree res_op1;
1739 25118 : res_op1 = wide_int_to_tree
1740 50236 : (type, wi::mask (TYPE_PRECISION (type)
1741 25118 : - wi::exact_log2 (wi::to_wide (captures[1])),
1742 25118 : false, TYPE_PRECISION (type)));
1743 25118 : tree _r;
1744 25118 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
1745 25118 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 482, __FILE__, __LINE__, true);
1746 25118 : return _r;
1747 : }
1748 : next_after_fail591:;
1749 : }
1750 : return NULL_TREE;
1751 : }
1752 :
1753 : tree
1754 924 : generic_simplify_326 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1755 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1756 : const enum tree_code ARG_UNUSED (mod))
1757 : {
1758 924 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1759 924 : if (!integer_zerop (captures[1])
1760 : )
1761 : {
1762 785 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail595;
1763 785 : {
1764 785 : tree _r;
1765 785 : _r = captures[0];
1766 785 : if (TREE_SIDE_EFFECTS (captures[1]))
1767 74 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1768 785 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 486, __FILE__, __LINE__, true);
1769 785 : return _r;
1770 : }
1771 0 : next_after_fail595:;
1772 : }
1773 : return NULL_TREE;
1774 : }
1775 :
1776 : tree
1777 6 : generic_simplify_336 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1778 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1779 : const combined_fn ARG_UNUSED (SIN),
1780 : const combined_fn ARG_UNUSED (COS),
1781 : const combined_fn ARG_UNUSED (TAN))
1782 : {
1783 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1784 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1785 : )
1786 : {
1787 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail607;
1788 6 : {
1789 6 : tree res_op0;
1790 6 : res_op0 = captures[1];
1791 6 : tree _r;
1792 6 : _r = maybe_build_call_expr_loc (loc, TAN, type, 1, res_op0);
1793 6 : if (!_r)
1794 0 : goto next_after_fail607;
1795 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 498, __FILE__, __LINE__, true);
1796 6 : return _r;
1797 : }
1798 : next_after_fail607:;
1799 : }
1800 : return NULL_TREE;
1801 : }
1802 :
1803 : tree
1804 24 : generic_simplify_343 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1805 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1806 : const combined_fn ARG_UNUSED (POW))
1807 : {
1808 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1809 24 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1810 : )
1811 : {
1812 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail614;
1813 6 : {
1814 6 : tree res_op0;
1815 6 : res_op0 = captures[0];
1816 6 : tree res_op1;
1817 6 : {
1818 6 : tree _o1[2], _r1;
1819 6 : _o1[0] = captures[2];
1820 6 : {
1821 6 : tree _o2[1], _r2;
1822 6 : _o2[0] = captures[3];
1823 6 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1824 6 : _o1[1] = _r2;
1825 : }
1826 6 : _r1 = maybe_build_call_expr_loc (loc, POW, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
1827 6 : if (!_r1)
1828 0 : goto next_after_fail614;
1829 6 : res_op1 = _r1;
1830 : }
1831 6 : tree _r;
1832 6 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1833 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 505, __FILE__, __LINE__, true);
1834 6 : return _r;
1835 : }
1836 : next_after_fail614:;
1837 : }
1838 : return NULL_TREE;
1839 : }
1840 :
1841 : tree
1842 0 : generic_simplify_352 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1843 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1844 : const enum tree_code ARG_UNUSED (cmp))
1845 : {
1846 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1847 0 : if (INTEGRAL_TYPE_P (type)
1848 : )
1849 : {
1850 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail629;
1851 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail629;
1852 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail629;
1853 0 : {
1854 0 : tree res_op0;
1855 0 : res_op0 = captures[0];
1856 0 : tree res_op1;
1857 0 : res_op1 = captures[1];
1858 0 : tree _r;
1859 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
1860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 520, __FILE__, __LINE__, true);
1861 0 : return _r;
1862 : }
1863 : next_after_fail629:;
1864 : }
1865 : return NULL_TREE;
1866 : }
1867 :
1868 : tree
1869 0 : generic_simplify_356 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1870 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1871 : const enum tree_code ARG_UNUSED (op))
1872 : {
1873 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1874 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail633;
1875 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail633;
1876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail633;
1877 0 : {
1878 0 : tree _r;
1879 0 : _r = captures[2];
1880 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 524, __FILE__, __LINE__, true);
1881 : return _r;
1882 : }
1883 : next_after_fail633:;
1884 : return NULL_TREE;
1885 : }
1886 :
1887 : tree
1888 51 : generic_simplify_361 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1889 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1890 : const enum tree_code ARG_UNUSED (op))
1891 : {
1892 51 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1893 51 : if (bitwise_equal_p (captures[0], captures[2])
1894 1 : && tree_expr_nonzero_p (captures[3])
1895 52 : && expr_no_side_effects_p (captures[2])
1896 : )
1897 : {
1898 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail638;
1899 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail638;
1900 1 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail638;
1901 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail638;
1902 1 : {
1903 1 : tree _r;
1904 1 : _r = captures[1];
1905 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 529, __FILE__, __LINE__, true);
1906 1 : return _r;
1907 : }
1908 : next_after_fail638:;
1909 : }
1910 : return NULL_TREE;
1911 : }
1912 :
1913 : tree
1914 6 : generic_simplify_368 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1915 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1916 : const enum tree_code ARG_UNUSED (neeq),
1917 : const combined_fn ARG_UNUSED (sign))
1918 : {
1919 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1920 6 : if (neeq == NE_EXPR
1921 : )
1922 : {
1923 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail645;
1924 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail645;
1925 3 : {
1926 3 : tree res_op0;
1927 3 : res_op0 = captures[0];
1928 3 : tree _r;
1929 3 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1930 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 536, __FILE__, __LINE__, true);
1931 3 : return _r;
1932 : }
1933 : next_after_fail645:;
1934 : }
1935 : else
1936 : {
1937 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail646;
1938 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail646;
1939 3 : {
1940 3 : tree res_op0;
1941 3 : {
1942 3 : tree _o1[1], _r1;
1943 3 : _o1[0] = captures[0];
1944 3 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
1945 3 : res_op0 = _r1;
1946 : }
1947 3 : tree _r;
1948 3 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
1949 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 537, __FILE__, __LINE__, true);
1950 3 : return _r;
1951 : }
1952 : next_after_fail646:;
1953 : }
1954 : return NULL_TREE;
1955 : }
1956 :
1957 : tree
1958 83965 : generic_simplify_381 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1959 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1960 : const enum tree_code ARG_UNUSED (op))
1961 : {
1962 83965 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1963 167930 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1964 83965 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1965 167930 : && wi::only_sign_bit_p (wi::to_wide (captures[1]))
1966 : )
1967 : {
1968 5 : {
1969 5 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1970 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail663;
1971 5 : {
1972 5 : tree res_op0;
1973 5 : {
1974 5 : tree _o1[1], _r1;
1975 5 : _o1[0] = captures[0];
1976 5 : if (TREE_TYPE (_o1[0]) != stype)
1977 : {
1978 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1979 : }
1980 : else
1981 : _r1 = _o1[0];
1982 5 : res_op0 = _r1;
1983 : }
1984 5 : tree res_op1;
1985 5 : {
1986 5 : tree _o1[1], _r1;
1987 5 : _o1[0] = captures[2];
1988 5 : if (TREE_TYPE (_o1[0]) != stype)
1989 : {
1990 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1991 : }
1992 : else
1993 : _r1 = _o1[0];
1994 5 : res_op1 = _r1;
1995 : }
1996 5 : tree _r;
1997 5 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1998 5 : if (TREE_SIDE_EFFECTS (captures[1]))
1999 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2000 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 552, __FILE__, __LINE__, true);
2001 5 : return _r;
2002 : }
2003 0 : next_after_fail663:;
2004 : }
2005 : }
2006 : return NULL_TREE;
2007 : }
2008 :
2009 : tree
2010 37261 : generic_simplify_392 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2011 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2012 : const enum tree_code ARG_UNUSED (cmp),
2013 : const enum tree_code ARG_UNUSED (out))
2014 : {
2015 37261 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2016 37261 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2017 37245 : && types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[0]))
2018 37245 : && tree_nop_conversion_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[3]))
2019 37261 : && wi::to_wide (captures[4]) != 0
2020 0 : && single_use (captures[1])
2021 : )
2022 : {
2023 37245 : {
2024 37245 : unsigned int prec = TYPE_PRECISION (TREE_TYPE (captures[3]));
2025 37245 : signop sign = TYPE_SIGN (TREE_TYPE (captures[3]));
2026 37245 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail675;
2027 37245 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail675;
2028 37245 : {
2029 37245 : tree res_op0;
2030 37245 : res_op0 = captures[3];
2031 37245 : tree res_op1;
2032 37245 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[3]),
2033 37245 : wi::max_value (prec, sign)
2034 111735 : - wi::to_wide (captures[4]));
2035 37245 : tree _r;
2036 37245 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2037 37245 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 564, __FILE__, __LINE__, true);
2038 37245 : return _r;
2039 : }
2040 : next_after_fail675:;
2041 : }
2042 : }
2043 : return NULL_TREE;
2044 : }
2045 :
2046 : tree
2047 1091 : generic_simplify_402 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2048 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2049 : const enum tree_code ARG_UNUSED (cmp),
2050 : const enum tree_code ARG_UNUSED (out))
2051 : {
2052 1091 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2053 1091 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2054 : )
2055 : {
2056 1073 : {
2057 1073 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2058 1073 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail717;
2059 1061 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail717;
2060 1061 : {
2061 1061 : tree res_op0;
2062 1061 : {
2063 1061 : tree _o1[1], _r1;
2064 1061 : {
2065 1061 : tree _o2[2], _r2;
2066 1061 : _o2[0] = captures[2];
2067 1061 : _o2[1] = captures[1];
2068 1061 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2069 1061 : if (!_r2)
2070 0 : goto next_after_fail717;
2071 1061 : _o1[0] = _r2;
2072 : }
2073 1061 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2074 1061 : res_op0 = _r1;
2075 : }
2076 1061 : tree res_op1;
2077 1061 : res_op1 = build_zero_cst (t);
2078 1061 : tree _r;
2079 1061 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2080 1061 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 589, __FILE__, __LINE__, true);
2081 1061 : return _r;
2082 : }
2083 : next_after_fail717:;
2084 : }
2085 : }
2086 : return NULL_TREE;
2087 : }
2088 :
2089 : tree
2090 13220 : generic_simplify_409 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2091 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2092 : const enum tree_code ARG_UNUSED (cmp),
2093 : const enum tree_code ARG_UNUSED (eqcmp))
2094 : {
2095 13220 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2096 13220 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2097 : )
2098 : {
2099 13220 : {
2100 13220 : tree ty = TREE_TYPE (captures[0]);
2101 13220 : unsigned prec = TYPE_PRECISION (ty);
2102 13220 : wide_int mask = wi::to_wide (captures[2], prec);
2103 13220 : wide_int rhs = wi::to_wide (captures[3], prec);
2104 13220 : signop sgn = TYPE_SIGN (ty);
2105 37454 : if ((mask & (mask + 1)) == 0 && wi::gt_p (rhs, 0, sgn)
2106 48300 : && (rhs & (rhs + 1)) == 0 && wi::ge_p (mask, rhs, sgn)
2107 : )
2108 : {
2109 845 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail731;
2110 845 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail731;
2111 845 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail731;
2112 845 : {
2113 845 : tree res_op0;
2114 845 : {
2115 845 : tree _o1[2], _r1;
2116 845 : _o1[0] = captures[1];
2117 845 : _o1[1] = wide_int_to_tree (ty, mask - rhs);
2118 845 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2119 845 : res_op0 = _r1;
2120 : }
2121 845 : tree res_op1;
2122 845 : res_op1 = build_zero_cst (ty);
2123 845 : tree _r;
2124 845 : _r = fold_build2_loc (loc, eqcmp, type, res_op0, res_op1);
2125 845 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 603, __FILE__, __LINE__, true);
2126 845 : return _r;
2127 : }
2128 12375 : next_after_fail731:;
2129 : }
2130 13220 : }
2131 : }
2132 : return NULL_TREE;
2133 : }
2134 :
2135 : tree
2136 1 : generic_simplify_415 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2137 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2138 : const combined_fn ARG_UNUSED (logs),
2139 : const combined_fn ARG_UNUSED (exps),
2140 : const enum tree_code ARG_UNUSED (cmp))
2141 : {
2142 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2143 1 : if (flag_unsafe_math_optimizations
2144 : )
2145 : {
2146 1 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
2147 1 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
2148 1 : && ! flag_trapping_math
2149 2 : && ! flag_errno_math
2150 : )
2151 : {
2152 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail737;
2153 1 : {
2154 1 : tree res_op0;
2155 1 : res_op0 = captures[1];
2156 1 : tree res_op1;
2157 1 : {
2158 1 : tree _o1[1], _r1;
2159 1 : _o1[0] = captures[2];
2160 1 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
2161 1 : if (!_r1)
2162 0 : goto next_after_fail737;
2163 1 : if (EXPR_P (_r1))
2164 1 : goto next_after_fail737;
2165 0 : res_op1 = _r1;
2166 : }
2167 0 : tree _r;
2168 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2169 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 605, __FILE__, __LINE__, true);
2170 0 : return _r;
2171 : }
2172 : next_after_fail737:;
2173 : }
2174 : }
2175 : return NULL_TREE;
2176 : }
2177 :
2178 : tree
2179 0 : generic_simplify_423 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2180 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2181 : const enum tree_code ARG_UNUSED (shiftrotate))
2182 : {
2183 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2184 0 : {
2185 0 : tree tem = uniform_vector_p (captures[1]);
2186 0 : if (tem
2187 : )
2188 : {
2189 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail749;
2190 0 : {
2191 0 : tree res_op0;
2192 0 : res_op0 = captures[0];
2193 0 : tree res_op1;
2194 0 : res_op1 = tem;
2195 0 : tree _r;
2196 0 : _r = fold_build2_loc (loc, shiftrotate, type, res_op0, res_op1);
2197 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2198 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2199 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 617, __FILE__, __LINE__, true);
2200 0 : return _r;
2201 : }
2202 0 : next_after_fail749:;
2203 : }
2204 : }
2205 : return NULL_TREE;
2206 : }
2207 :
2208 : tree
2209 3394487 : generic_simplify_430 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2210 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2211 : const enum tree_code ARG_UNUSED (bitop))
2212 : {
2213 3394487 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2214 3394487 : if (0
2215 : && TREE_CODE (captures[3]) != INTEGER_CST
2216 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2217 : && types_match (type, captures[2])
2218 : && !POINTER_TYPE_P (TREE_TYPE (captures[2]))
2219 : && TREE_CODE (TREE_TYPE (captures[2])) != OFFSET_TYPE
2220 : )
2221 : {
2222 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail763;
2223 : {
2224 : tree res_op0;
2225 : res_op0 = captures[2];
2226 : tree res_op1;
2227 : {
2228 : tree _o1[1], _r1;
2229 : _o1[0] = captures[3];
2230 : if (TREE_TYPE (_o1[0]) != type)
2231 : {
2232 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2233 : }
2234 : else
2235 : _r1 = _o1[0];
2236 : res_op1 = _r1;
2237 : }
2238 : tree _r;
2239 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2240 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 629, __FILE__, __LINE__, true);
2241 : return _r;
2242 : }
2243 : next_after_fail763:;
2244 : }
2245 3394487 : return NULL_TREE;
2246 : }
2247 :
2248 : tree
2249 7347 : generic_simplify_434 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2250 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2251 : const enum tree_code ARG_UNUSED (minmax))
2252 : {
2253 7347 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2254 7347 : if (INTEGRAL_TYPE_P (type)
2255 7347 : && types_match (captures[1], type) && int_fits_type_p (captures[2], type)
2256 636 : && TYPE_SIGN (TREE_TYPE (captures[0])) == TYPE_SIGN (type)
2257 7347 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2258 : )
2259 : {
2260 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail769;
2261 0 : {
2262 0 : tree res_op0;
2263 0 : res_op0 = captures[1];
2264 0 : tree res_op1;
2265 0 : {
2266 0 : tree _o1[1], _r1;
2267 0 : _o1[0] = captures[2];
2268 0 : if (TREE_TYPE (_o1[0]) != type)
2269 : {
2270 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2271 : }
2272 : else
2273 : _r1 = _o1[0];
2274 0 : res_op1 = _r1;
2275 : }
2276 0 : tree _r;
2277 0 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
2278 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 635, __FILE__, __LINE__, true);
2279 0 : return _r;
2280 : }
2281 0 : next_after_fail769:;
2282 : }
2283 : return NULL_TREE;
2284 : }
2285 :
2286 : tree
2287 2057963 : generic_simplify_437 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2288 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2289 : const enum tree_code ARG_UNUSED (op))
2290 : {
2291 2057963 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2292 2057963 : if (INTEGRAL_TYPE_P (type)
2293 1903078 : && op != MULT_EXPR
2294 1903078 : && op != RDIV_EXPR
2295 1167201 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2296 1167201 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2297 1167201 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2298 1166822 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2299 1166050 : && type_has_mode_precision_p (type)
2300 1162197 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2301 0 : && types_match (captures[2], type)
2302 2057963 : && (types_match (captures[2], captures[4])
2303 0 : || poly_int_tree_p (captures[3]))
2304 : )
2305 : {
2306 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2307 : )
2308 : {
2309 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail778;
2310 0 : {
2311 0 : tree res_op0;
2312 0 : res_op0 = captures[2];
2313 0 : tree res_op1;
2314 0 : {
2315 0 : tree _o1[1], _r1;
2316 0 : _o1[0] = captures[4];
2317 0 : if (TREE_TYPE (_o1[0]) != type)
2318 : {
2319 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2320 : }
2321 : else
2322 : _r1 = _o1[0];
2323 0 : res_op1 = _r1;
2324 : }
2325 0 : tree _r;
2326 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2327 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2328 0 : return _r;
2329 : }
2330 0 : next_after_fail778:;
2331 : }
2332 : else
2333 : {
2334 0 : {
2335 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2336 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail779;
2337 0 : {
2338 0 : tree res_op0;
2339 0 : {
2340 0 : tree _o1[2], _r1;
2341 0 : {
2342 0 : tree _o2[1], _r2;
2343 0 : _o2[0] = captures[2];
2344 0 : if (TREE_TYPE (_o2[0]) != utype)
2345 : {
2346 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2347 : }
2348 : else
2349 : _r2 = _o2[0];
2350 0 : _o1[0] = _r2;
2351 : }
2352 0 : {
2353 0 : tree _o2[1], _r2;
2354 0 : _o2[0] = captures[4];
2355 0 : if (TREE_TYPE (_o2[0]) != utype)
2356 : {
2357 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2358 : }
2359 : else
2360 : _r2 = _o2[0];
2361 0 : _o1[1] = _r2;
2362 : }
2363 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2364 0 : res_op0 = _r1;
2365 : }
2366 0 : tree _r;
2367 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2368 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2369 0 : return _r;
2370 : }
2371 0 : next_after_fail779:;
2372 : }
2373 : }
2374 : }
2375 : else
2376 : {
2377 2045427 : if (FLOAT_TYPE_P (type)
2378 2070499 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2379 12536 : == DECIMAL_FLOAT_TYPE_P (type)
2380 : )
2381 : {
2382 12513 : {
2383 12513 : tree arg0 = strip_float_extensions (captures[2]);
2384 12513 : tree arg1 = strip_float_extensions (captures[4]);
2385 12513 : tree itype = TREE_TYPE (captures[0]);
2386 12513 : tree ty1 = TREE_TYPE (arg0);
2387 12513 : tree ty2 = TREE_TYPE (arg1);
2388 12513 : enum tree_code code = TREE_CODE (itype);
2389 0 : if (FLOAT_TYPE_P (ty1)
2390 12513 : && FLOAT_TYPE_P (ty2)
2391 : )
2392 : {
2393 12513 : {
2394 12513 : tree newtype = type;
2395 12513 : if (TYPE_MODE (ty1) == SDmode
2396 12504 : || TYPE_MODE (ty2) == SDmode
2397 25017 : || TYPE_MODE (type) == SDmode)
2398 9 : newtype = dfloat32_type_node;
2399 12513 : if (TYPE_MODE (ty1) == DDmode
2400 12507 : || TYPE_MODE (ty2) == DDmode
2401 25020 : || TYPE_MODE (type) == DDmode)
2402 6 : newtype = dfloat64_type_node;
2403 12513 : if (TYPE_MODE (ty1) == TDmode
2404 12513 : || TYPE_MODE (ty2) == TDmode
2405 25026 : || TYPE_MODE (type) == TDmode)
2406 15 : newtype = dfloat128_type_node;
2407 12513 : if ((newtype == dfloat32_type_node
2408 12513 : || newtype == dfloat64_type_node
2409 12513 : || newtype == dfloat128_type_node)
2410 15 : && newtype == type
2411 12519 : && types_match (newtype, type)
2412 : )
2413 : {
2414 6 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail780;
2415 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail780;
2416 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail780;
2417 0 : {
2418 0 : tree res_op0;
2419 0 : {
2420 0 : tree _o1[1], _r1;
2421 0 : _o1[0] = captures[2];
2422 0 : if (TREE_TYPE (_o1[0]) != newtype)
2423 : {
2424 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2425 : }
2426 : else
2427 : _r1 = _o1[0];
2428 0 : res_op0 = _r1;
2429 : }
2430 0 : tree res_op1;
2431 0 : {
2432 0 : tree _o1[1], _r1;
2433 0 : _o1[0] = captures[4];
2434 0 : if (TREE_TYPE (_o1[0]) != newtype)
2435 : {
2436 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2437 : }
2438 : else
2439 : _r1 = _o1[0];
2440 0 : res_op1 = _r1;
2441 : }
2442 0 : tree _r;
2443 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2444 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 638, __FILE__, __LINE__, true);
2445 0 : return _r;
2446 : }
2447 : next_after_fail780:;
2448 : }
2449 : else
2450 : {
2451 12507 : {
2452 12507 : if (element_precision (ty1) > element_precision (newtype))
2453 749 : newtype = ty1;
2454 12507 : if (element_precision (ty2) > element_precision (newtype))
2455 2 : newtype = ty2;
2456 12507 : if (element_precision (newtype) < element_precision (itype)
2457 11204 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2458 0 : || target_supports_op_p (newtype, op, optab_default))
2459 11204 : && (flag_unsafe_math_optimizations
2460 11192 : || (element_precision (newtype) == element_precision (type)
2461 11188 : && real_can_shorten_arithmetic (element_mode (itype),
2462 : element_mode (type))
2463 4114 : && !excess_precision_type (newtype)))
2464 13180 : && !types_match (itype, newtype)
2465 : )
2466 : {
2467 673 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail781;
2468 673 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail781;
2469 655 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail781;
2470 655 : {
2471 655 : tree res_op0;
2472 655 : {
2473 655 : tree _o1[2], _r1;
2474 655 : {
2475 655 : tree _o2[1], _r2;
2476 655 : _o2[0] = captures[2];
2477 655 : if (TREE_TYPE (_o2[0]) != newtype)
2478 : {
2479 655 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2480 : }
2481 : else
2482 : _r2 = _o2[0];
2483 655 : _o1[0] = _r2;
2484 : }
2485 655 : {
2486 655 : tree _o2[1], _r2;
2487 655 : _o2[0] = captures[4];
2488 655 : if (TREE_TYPE (_o2[0]) != newtype)
2489 : {
2490 604 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2491 : }
2492 : else
2493 : _r2 = _o2[0];
2494 655 : _o1[1] = _r2;
2495 : }
2496 655 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2497 655 : res_op0 = _r1;
2498 : }
2499 655 : tree _r;
2500 655 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2501 655 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 639, __FILE__, __LINE__, true);
2502 655 : return _r;
2503 : }
2504 : next_after_fail781:;
2505 : }
2506 : }
2507 : }
2508 : }
2509 : }
2510 : }
2511 : }
2512 : }
2513 : return NULL_TREE;
2514 : }
2515 :
2516 : tree
2517 13 : generic_simplify_469 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2518 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2519 : {
2520 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2521 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail816;
2522 13 : {
2523 13 : tree _r;
2524 13 : _r = build_zero_cst (type);
2525 13 : if (TREE_SIDE_EFFECTS (captures[0]))
2526 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2527 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 669, __FILE__, __LINE__, true);
2528 : return _r;
2529 : }
2530 0 : next_after_fail816:;
2531 0 : return NULL_TREE;
2532 : }
2533 :
2534 : tree
2535 5339332 : generic_simplify_472 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2536 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2537 : {
2538 5339332 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2539 10497582 : if (POINTER_TYPE_P (TREE_TYPE (captures[0]))
2540 5339352 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2541 : )
2542 : {
2543 181102 : {
2544 181102 : unsigned int align;
2545 181102 : unsigned HOST_WIDE_INT bitpos;
2546 181102 : get_pointer_alignment_1 (captures[0], &align, &bitpos);
2547 181102 : if (wi::ltu_p (wi::to_wide (captures[1]), align / BITS_PER_UNIT)
2548 : )
2549 : {
2550 5471 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail819;
2551 5471 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail819;
2552 5471 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail819;
2553 5471 : {
2554 5471 : tree _r;
2555 10942 : _r = wide_int_to_tree (type, (wi::to_wide (captures[1])
2556 10942 : & (bitpos / BITS_PER_UNIT)));
2557 5471 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 671, __FILE__, __LINE__, true);
2558 5471 : return _r;
2559 : }
2560 175631 : next_after_fail819:;
2561 : }
2562 : }
2563 : }
2564 : return NULL_TREE;
2565 : }
2566 :
2567 : tree
2568 0 : generic_simplify_482 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2569 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2570 : const enum tree_code ARG_UNUSED (code2),
2571 : const enum tree_code ARG_UNUSED (code1))
2572 : {
2573 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2574 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2575 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2576 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2577 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2578 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2579 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2580 0 : && bitwise_equal_p (captures[2], captures[5]))
2581 : )
2582 : {
2583 0 : {
2584 0 : bool one_before = false;
2585 0 : bool one_after = false;
2586 0 : int cmp = 0;
2587 0 : bool allbits = true;
2588 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
2589 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2590 : {
2591 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2592 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2593 0 : auto t2 = wi::to_wide (captures[5]);
2594 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2595 0 : if (cmp < 0
2596 0 : && t1 == t2 - 1)
2597 : one_before = true;
2598 0 : if (cmp > 0
2599 0 : && t1 == t2 + 1)
2600 : one_after = true;
2601 : }
2602 0 : bool val;
2603 0 : switch (code2)
2604 : {
2605 0 : case EQ_EXPR: val = (cmp == 0); break;
2606 0 : case NE_EXPR: val = (cmp != 0); break;
2607 0 : case LT_EXPR: val = (cmp < 0); break;
2608 0 : case GT_EXPR: val = (cmp > 0); break;
2609 0 : case LE_EXPR: val = (cmp <= 0); break;
2610 0 : case GE_EXPR: val = (cmp >= 0); break;
2611 0 : default: gcc_unreachable ();
2612 : }
2613 0 : if (code1 == EQ_EXPR && val
2614 : )
2615 : {
2616 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail851;
2617 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail851;
2618 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail851;
2619 0 : {
2620 0 : tree _r;
2621 0 : _r = captures[0];
2622 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2623 0 : return _r;
2624 : }
2625 : next_after_fail851:;
2626 : }
2627 : else
2628 : {
2629 0 : if (code1 == EQ_EXPR && !val
2630 : )
2631 : {
2632 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail852;
2633 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail852;
2634 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail852;
2635 0 : {
2636 0 : tree _r;
2637 0 : _r = constant_boolean_node (false, type);
2638 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2639 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2640 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2641 0 : return _r;
2642 : }
2643 : next_after_fail852:;
2644 : }
2645 : else
2646 : {
2647 0 : if (code1 == NE_EXPR && !val && allbits
2648 : )
2649 : {
2650 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail853;
2651 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail853;
2652 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail853;
2653 0 : {
2654 0 : tree _r;
2655 0 : _r = captures[3];
2656 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2657 0 : return _r;
2658 : }
2659 : next_after_fail853:;
2660 : }
2661 : else
2662 : {
2663 0 : if ((code1 == NE_EXPR
2664 0 : && code2 == GE_EXPR
2665 0 : && cmp == 0
2666 0 : && allbits)
2667 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2668 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2669 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2670 : )
2671 : {
2672 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail854;
2673 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail854;
2674 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail854;
2675 0 : {
2676 0 : tree res_op0;
2677 0 : res_op0 = captures[4];
2678 0 : tree res_op1;
2679 0 : {
2680 0 : tree _o1[1], _r1;
2681 0 : _o1[0] = captures[2];
2682 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2683 : {
2684 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2685 : }
2686 : else
2687 : _r1 = _o1[0];
2688 0 : res_op1 = _r1;
2689 : }
2690 0 : tree _r;
2691 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2692 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2693 0 : return _r;
2694 : }
2695 : next_after_fail854:;
2696 : }
2697 : else
2698 : {
2699 0 : if ((code1 == NE_EXPR
2700 0 : && code2 == LE_EXPR
2701 0 : && cmp == 0
2702 0 : && allbits)
2703 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2704 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2705 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2706 : )
2707 : {
2708 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail855;
2709 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail855;
2710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail855;
2711 0 : {
2712 0 : tree res_op0;
2713 0 : res_op0 = captures[4];
2714 0 : tree res_op1;
2715 0 : {
2716 0 : tree _o1[1], _r1;
2717 0 : _o1[0] = captures[2];
2718 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2719 : {
2720 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2721 : }
2722 : else
2723 : _r1 = _o1[0];
2724 0 : res_op1 = _r1;
2725 : }
2726 0 : tree _r;
2727 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2728 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 680, __FILE__, __LINE__, true);
2729 0 : return _r;
2730 : }
2731 : next_after_fail855:;
2732 : }
2733 : else
2734 : {
2735 0 : if ((code1 == NE_EXPR
2736 0 : && code2 == GT_EXPR
2737 : && one_after
2738 0 : && allbits)
2739 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2740 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2741 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2742 : )
2743 : {
2744 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail856;
2745 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail856;
2746 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail856;
2747 0 : {
2748 0 : tree res_op0;
2749 0 : res_op0 = captures[4];
2750 0 : tree res_op1;
2751 0 : {
2752 0 : tree _o1[1], _r1;
2753 0 : _o1[0] = captures[2];
2754 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2755 : {
2756 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2757 : }
2758 : else
2759 : _r1 = _o1[0];
2760 0 : res_op1 = _r1;
2761 : }
2762 0 : tree _r;
2763 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2764 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 681, __FILE__, __LINE__, true);
2765 0 : return _r;
2766 : }
2767 : next_after_fail856:;
2768 : }
2769 : else
2770 : {
2771 0 : if ((code1 == NE_EXPR
2772 0 : && code2 == LT_EXPR
2773 : && one_before
2774 0 : && allbits)
2775 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2776 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2777 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2778 : )
2779 : {
2780 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail857;
2781 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail857;
2782 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail857;
2783 0 : {
2784 0 : tree res_op0;
2785 0 : res_op0 = captures[4];
2786 0 : tree res_op1;
2787 0 : {
2788 0 : tree _o1[1], _r1;
2789 0 : _o1[0] = captures[2];
2790 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2791 : {
2792 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2793 : }
2794 : else
2795 : _r1 = _o1[0];
2796 0 : res_op1 = _r1;
2797 : }
2798 0 : tree _r;
2799 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2800 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2801 0 : return _r;
2802 : }
2803 : next_after_fail857:;
2804 : }
2805 : }
2806 : }
2807 : }
2808 : }
2809 : }
2810 : }
2811 : }
2812 : }
2813 : return NULL_TREE;
2814 : }
2815 :
2816 : tree
2817 2 : generic_simplify_512 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2818 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2819 : const enum tree_code ARG_UNUSED (rotate))
2820 : {
2821 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2822 2 : if ((element_precision (TREE_TYPE (captures[2]))
2823 2 : <= element_precision (TREE_TYPE (captures[3]))
2824 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2825 2 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
2826 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))
2827 : )
2828 : {
2829 2 : {
2830 2 : tree rotate_type = TREE_TYPE (captures[2]);
2831 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail903;
2832 2 : {
2833 2 : tree res_op0;
2834 2 : {
2835 2 : tree _o1[2], _r1;
2836 2 : {
2837 2 : tree _o2[1], _r2;
2838 2 : _o2[0] = captures[3];
2839 2 : if (TREE_TYPE (_o2[0]) != rotate_type)
2840 : {
2841 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, rotate_type, _o2[0]);
2842 : }
2843 : else
2844 : _r2 = _o2[0];
2845 2 : _o1[0] = _r2;
2846 : }
2847 2 : _o1[1] = captures[4];
2848 2 : _r1 = fold_build2_loc (loc, rotate, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2849 2 : res_op0 = _r1;
2850 : }
2851 2 : tree _r;
2852 2 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2853 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 714, __FILE__, __LINE__, true);
2854 2 : return _r;
2855 : }
2856 0 : next_after_fail903:;
2857 : }
2858 : }
2859 : return NULL_TREE;
2860 : }
2861 :
2862 : tree
2863 2 : generic_simplify_525 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2864 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2865 : {
2866 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2867 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2868 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2869 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2870 : )
2871 : {
2872 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail918;
2873 2 : {
2874 2 : tree res_op0;
2875 2 : {
2876 2 : tree _o1[1], _r1;
2877 2 : _o1[0] = captures[0];
2878 2 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2879 2 : res_op0 = _r1;
2880 : }
2881 2 : tree _r;
2882 2 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
2883 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 729, __FILE__, __LINE__, true);
2884 2 : return _r;
2885 : }
2886 0 : next_after_fail918:;
2887 : }
2888 : return NULL_TREE;
2889 : }
2890 :
2891 : tree
2892 0 : generic_simplify_534 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2893 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2894 : const enum tree_code ARG_UNUSED (minmax),
2895 : const enum tree_code ARG_UNUSED (maxmin))
2896 : {
2897 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2898 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail941;
2899 0 : {
2900 0 : tree res_op0;
2901 0 : {
2902 0 : tree _o1[2], _r1;
2903 0 : _o1[0] = captures[1];
2904 0 : _o1[1] = captures[3];
2905 0 : _r1 = fold_build2_loc (loc, maxmin, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2906 0 : res_op0 = _r1;
2907 : }
2908 0 : tree _r;
2909 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2910 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 740, __FILE__, __LINE__, true);
2911 : return _r;
2912 : }
2913 0 : next_after_fail941:;
2914 0 : return NULL_TREE;
2915 : }
2916 :
2917 : tree
2918 0 : generic_simplify_539 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2919 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2920 : const combined_fn ARG_UNUSED (minmax))
2921 : {
2922 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2923 0 : if (real_isnan (TREE_REAL_CST_PTR (captures[1]))
2924 0 : && (!HONOR_SNANS (captures[1]) || !TREE_REAL_CST (captures[1]).signalling)
2925 0 : && !tree_expr_maybe_signaling_nan_p (captures[0])
2926 : )
2927 : {
2928 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail946;
2929 0 : {
2930 0 : tree _r;
2931 0 : _r = captures[0];
2932 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2933 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2934 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 745, __FILE__, __LINE__, true);
2935 0 : return _r;
2936 : }
2937 0 : next_after_fail946:;
2938 : }
2939 : return NULL_TREE;
2940 : }
2941 :
2942 : tree
2943 0 : generic_simplify_548 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2944 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2945 : const combined_fn ARG_UNUSED (cond_op))
2946 : {
2947 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2948 0 : {
2949 0 : tree op_type = TREE_TYPE (captures[5]);
2950 0 : if (inverse_conditions_p (captures[0], captures[2])
2951 0 : && element_precision (type) == element_precision (op_type)
2952 : )
2953 : {
2954 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail955;
2955 0 : {
2956 0 : tree res_op0;
2957 0 : {
2958 0 : tree _o1[4], _r1;
2959 0 : _o1[0] = captures[2];
2960 0 : _o1[1] = captures[3];
2961 0 : _o1[2] = captures[4];
2962 0 : {
2963 0 : tree _o2[1], _r2;
2964 0 : _o2[0] = captures[1];
2965 0 : if (TREE_TYPE (_o2[0]) != op_type)
2966 : {
2967 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2968 : }
2969 : else
2970 : _r2 = _o2[0];
2971 0 : _o1[3] = _r2;
2972 : }
2973 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 4, _o1[0], _o1[1], _o1[2], _o1[3]);
2974 0 : if (!_r1)
2975 0 : goto next_after_fail955;
2976 0 : res_op0 = _r1;
2977 : }
2978 0 : tree _r;
2979 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2980 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2981 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2982 0 : if (TREE_SIDE_EFFECTS (captures[5]))
2983 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
2984 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 749, __FILE__, __LINE__, true);
2985 0 : return _r;
2986 : }
2987 : next_after_fail955:;
2988 : }
2989 : }
2990 : return NULL_TREE;
2991 : }
2992 :
2993 : tree
2994 5786 : generic_simplify_559 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2995 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2996 : {
2997 5786 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2998 11572 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2999 5786 : && TYPE_MAX_VALUE (TREE_TYPE (captures[1]))
3000 5786 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (TREE_TYPE (captures[0])))
3001 8082 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
3002 : )
3003 : {
3004 1904 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3005 : )
3006 : {
3007 929 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail967;
3008 929 : {
3009 929 : tree res_op0;
3010 929 : {
3011 929 : tree _o1[2], _r1;
3012 929 : _o1[0] = captures[1];
3013 929 : {
3014 929 : tree _o2[2], _r2;
3015 929 : _o2[0] = TYPE_MAX_VALUE (TREE_TYPE (captures[1]));
3016 929 : _o2[1] = captures[2];
3017 929 : _r2 = fold_build2_loc (loc, TRUNC_DIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3018 929 : if (EXPR_P (_r2))
3019 0 : goto next_after_fail967;
3020 929 : _o1[1] = _r2;
3021 : }
3022 929 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3023 929 : res_op0 = _r1;
3024 : }
3025 929 : tree _r;
3026 929 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3027 929 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 761, __FILE__, __LINE__, true);
3028 929 : return _r;
3029 : }
3030 : next_after_fail967:;
3031 : }
3032 : else
3033 : {
3034 975 : if (TYPE_MIN_VALUE (TREE_TYPE (captures[1]))
3035 : )
3036 : {
3037 975 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && integer_minus_onep (captures[2])
3038 : )
3039 : {
3040 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail968;
3041 56 : {
3042 56 : tree res_op0;
3043 56 : {
3044 56 : tree _o1[2], _r1;
3045 56 : _o1[0] = captures[1];
3046 56 : _o1[1] = TYPE_MIN_VALUE (TREE_TYPE (captures[1]));
3047 56 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
3048 56 : res_op0 = _r1;
3049 : }
3050 56 : tree _r;
3051 56 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3052 56 : if (TREE_SIDE_EFFECTS (captures[2]))
3053 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3054 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 762, __FILE__, __LINE__, true);
3055 56 : return _r;
3056 : }
3057 0 : next_after_fail968:;
3058 : }
3059 : else
3060 : {
3061 919 : {
3062 919 : tree div = fold_convert (TREE_TYPE (captures[1]), captures[2]);
3063 1838 : tree lo = int_const_binop (TRUNC_DIV_EXPR,
3064 919 : TYPE_MIN_VALUE (TREE_TYPE (captures[1])), div);
3065 1838 : tree hi = int_const_binop (TRUNC_DIV_EXPR,
3066 919 : TYPE_MAX_VALUE (TREE_TYPE (captures[1])), div);
3067 919 : tree etype = range_check_type (TREE_TYPE (captures[1]));
3068 919 : if (etype)
3069 : {
3070 919 : if (wi::neg_p (wi::to_wide (div)))
3071 88 : std::swap (lo, hi);
3072 919 : lo = fold_convert (etype, lo);
3073 919 : hi = fold_convert (etype, hi);
3074 919 : hi = int_const_binop (MINUS_EXPR, hi, lo);
3075 : }
3076 919 : if (etype
3077 : )
3078 : {
3079 919 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail969;
3080 919 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail969;
3081 919 : {
3082 919 : tree res_op0;
3083 919 : {
3084 919 : tree _o1[2], _r1;
3085 919 : {
3086 919 : tree _o2[2], _r2;
3087 919 : {
3088 919 : tree _o3[1], _r3;
3089 919 : _o3[0] = captures[1];
3090 919 : if (TREE_TYPE (_o3[0]) != etype)
3091 : {
3092 919 : _r3 = fold_build1_loc (loc, NOP_EXPR, etype, _o3[0]);
3093 : }
3094 : else
3095 : _r3 = _o3[0];
3096 919 : _o2[0] = _r3;
3097 : }
3098 919 : _o2[1] = lo;
3099 919 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3100 919 : _o1[0] = _r2;
3101 : }
3102 919 : _o1[1] = hi;
3103 919 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3104 919 : res_op0 = _r1;
3105 : }
3106 919 : tree _r;
3107 919 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3108 919 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 763, __FILE__, __LINE__, true);
3109 919 : return _r;
3110 : }
3111 : next_after_fail969:;
3112 : }
3113 : }
3114 : }
3115 : }
3116 : }
3117 : }
3118 : return NULL_TREE;
3119 : }
3120 :
3121 : tree
3122 0 : generic_simplify_599 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3123 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3124 : {
3125 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3126 0 : if (canonicalize_math_after_vectorization_p ()
3127 : )
3128 : {
3129 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1009;
3130 : {
3131 : tree res_op0;
3132 : res_op0 = captures[0];
3133 : tree res_op1;
3134 : res_op1 = captures[1];
3135 : tree res_op2;
3136 : res_op2 = captures[2];
3137 : tree _r;
3138 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3139 : if (!_r)
3140 : goto next_after_fail1009;
3141 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 803, __FILE__, __LINE__, true);
3142 : return _r;
3143 : }
3144 0 : next_after_fail1009:;
3145 : }
3146 0 : return NULL_TREE;
3147 : }
3148 :
3149 : tree
3150 0 : generic_simplify_608 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3151 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3152 : {
3153 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3154 0 : if (canonicalize_math_after_vectorization_p ()
3155 : )
3156 : {
3157 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1018;
3158 : {
3159 : tree res_op0;
3160 : res_op0 = captures[0];
3161 : tree res_op1;
3162 : res_op1 = captures[1];
3163 : tree res_op2;
3164 : res_op2 = captures[2];
3165 : tree res_op3;
3166 : res_op3 = captures[3];
3167 : tree res_op4;
3168 : res_op4 = captures[4];
3169 : tree _r;
3170 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3171 : if (!_r)
3172 : goto next_after_fail1018;
3173 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 812, __FILE__, __LINE__, true);
3174 : return _r;
3175 : }
3176 0 : next_after_fail1018:;
3177 : }
3178 0 : return NULL_TREE;
3179 : }
3180 :
3181 : tree
3182 0 : generic_simplify_619 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3183 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3184 : const combined_fn ARG_UNUSED (PARITY))
3185 : {
3186 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3187 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1030;
3188 0 : {
3189 0 : tree res_op0;
3190 0 : res_op0 = captures[0];
3191 0 : tree _r;
3192 0 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
3193 0 : if (!_r)
3194 0 : goto next_after_fail1030;
3195 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
3196 : return _r;
3197 : }
3198 : next_after_fail1030:;
3199 : return NULL_TREE;
3200 : }
3201 :
3202 : tree
3203 0 : generic_simplify_623 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3204 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3205 : const enum tree_code ARG_UNUSED (rot),
3206 : const combined_fn ARG_UNUSED (parity))
3207 : {
3208 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3209 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3210 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3211 0 : && (
3212 :
3213 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3214 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3215 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3216 : )
3217 : {
3218 0 : {
3219 0 : tree type0 = TREE_TYPE (captures[0]);
3220 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1034;
3221 0 : {
3222 0 : tree res_op0;
3223 0 : {
3224 0 : tree _o1[1], _r1;
3225 0 : _o1[0] = captures[2];
3226 0 : if (TREE_TYPE (_o1[0]) != type0)
3227 : {
3228 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3229 : }
3230 : else
3231 : _r1 = _o1[0];
3232 0 : res_op0 = _r1;
3233 : }
3234 0 : tree _r;
3235 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3236 0 : if (!_r)
3237 0 : goto next_after_fail1034;
3238 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3239 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3240 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
3241 0 : return _r;
3242 : }
3243 : next_after_fail1034:;
3244 : }
3245 : }
3246 : return NULL_TREE;
3247 : }
3248 :
3249 : tree
3250 470546959 : generic_simplify_VIEW_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3251 : {
3252 470546959 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3253 470546959 : {
3254 470546959 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3255 941093918 : if ((
3256 :
3257 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3258 : || (
3259 : 1
3260 470546959 : && type == TREE_TYPE (captures[0]))
3261 : )
3262 : {
3263 208261885 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1095;
3264 208261885 : {
3265 208261885 : tree _r;
3266 208261885 : _r = captures[0];
3267 208261885 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 837, __FILE__, __LINE__, true);
3268 208261885 : return _r;
3269 : }
3270 0 : next_after_fail1095:;
3271 : }
3272 : }
3273 262285074 : switch (TREE_CODE (_p0))
3274 : {
3275 28889150 : case VIEW_CONVERT_EXPR:
3276 28889150 : {
3277 28889150 : tree _q20 = TREE_OPERAND (_p0, 0);
3278 28889150 : {
3279 28889150 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3280 28889150 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
3281 28889150 : {
3282 28889150 : tree res_op0;
3283 28889150 : res_op0 = captures[0];
3284 28889150 : tree _r;
3285 28889150 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3286 28889150 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 871, __FILE__, __LINE__, true);
3287 470546959 : return _r;
3288 : }
3289 0 : next_after_fail1096:;
3290 : }
3291 0 : break;
3292 : }
3293 0 : case BIT_FIELD_REF:
3294 0 : {
3295 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3296 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3297 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3298 0 : {
3299 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3300 0 : if (is_gimple_reg_type (type)
3301 0 : && (!INTEGRAL_TYPE_P (type)
3302 0 : || type_has_mode_precision_p (type))
3303 0 : && (!INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3304 0 : || type_has_mode_precision_p (TREE_TYPE (captures[0])))
3305 : )
3306 : {
3307 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1097;
3308 0 : {
3309 0 : tree res_op0;
3310 0 : res_op0 = captures[1];
3311 0 : tree res_op1;
3312 0 : res_op1 = captures[2];
3313 0 : tree res_op2;
3314 0 : res_op2 = captures[3];
3315 0 : tree _r;
3316 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
3317 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
3318 0 : return _r;
3319 : }
3320 0 : next_after_fail1097:;
3321 : }
3322 : }
3323 0 : break;
3324 : }
3325 233395924 : default:;
3326 : }
3327 233395924 : {
3328 233395924 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3329 231608828 : if ((INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
3330 2943282 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3331 236061353 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3332 : )
3333 : {
3334 2311857 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1098;
3335 2311857 : {
3336 2311857 : tree res_op0;
3337 2311857 : res_op0 = captures[0];
3338 2311857 : tree _r;
3339 2311857 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3340 2311857 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 873, __FILE__, __LINE__, true);
3341 2311857 : return _r;
3342 : }
3343 0 : next_after_fail1098:;
3344 : }
3345 : }
3346 231084067 : switch (TREE_CODE (_p0))
3347 : {
3348 3427 : CASE_CONVERT:
3349 3427 : {
3350 3427 : tree _q20 = TREE_OPERAND (_p0, 0);
3351 3427 : {
3352 3427 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3353 3427 : {
3354 3427 : bool extended_bitint = false;
3355 3427 : if (BITINT_TYPE_P (TREE_TYPE (captures[0])))
3356 : {
3357 0 : struct bitint_info info;
3358 0 : extended_bitint
3359 0 : = targetm.c.bitint_type_info (TYPE_PRECISION (TREE_TYPE (captures[0])),
3360 : &info);
3361 0 : extended_bitint = extended_bitint && info.extended;
3362 : }
3363 6854 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3364 71 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) || POINTER_TYPE_P (TREE_TYPE (captures[1])))
3365 71 : && !extended_bitint
3366 71 : && TYPE_SIZE (TREE_TYPE (captures[0])) == TYPE_SIZE (TREE_TYPE (captures[1]))
3367 3427 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))
3368 0 : || (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
3369 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
3370 : )
3371 : {
3372 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1099;
3373 0 : {
3374 0 : tree res_op0;
3375 0 : res_op0 = captures[1];
3376 0 : tree _r;
3377 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3378 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 874, __FILE__, __LINE__, true);
3379 0 : return _r;
3380 : }
3381 0 : next_after_fail1099:;
3382 : }
3383 : }
3384 : }
3385 3427 : break;
3386 : }
3387 83597 : case CONSTRUCTOR:
3388 83597 : {
3389 83597 : {
3390 83597 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3391 83597 : {
3392 83597 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3393 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3394 83597 : if (CONSTRUCTOR_NELTS (ctor) == 0
3395 : )
3396 : {
3397 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1100;
3398 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1100;
3399 6 : {
3400 6 : tree _r;
3401 6 : _r = build_zero_cst (type);
3402 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 875, __FILE__, __LINE__, true);
3403 6 : return _r;
3404 : }
3405 : next_after_fail1100:;
3406 : }
3407 : else
3408 : {
3409 83591 : if (CONSTRUCTOR_NELTS (ctor) == 1
3410 40 : && VECTOR_TYPE_P (TREE_TYPE (ctor))
3411 83626 : && operand_equal_p (TYPE_SIZE (type),
3412 35 : TYPE_SIZE (TREE_TYPE
3413 : (CONSTRUCTOR_ELT (ctor, 0)->value)))
3414 : )
3415 : {
3416 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1101;
3417 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1101;
3418 0 : {
3419 0 : tree res_op0;
3420 0 : res_op0 = CONSTRUCTOR_ELT (ctor, 0)->value;
3421 0 : tree _r;
3422 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3423 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3424 0 : return _r;
3425 : }
3426 : next_after_fail1101:;
3427 : }
3428 : }
3429 : }
3430 : }
3431 : break;
3432 : }
3433 289535 : case VEC_COND_EXPR:
3434 289535 : {
3435 289535 : tree _q20 = TREE_OPERAND (_p0, 0);
3436 289535 : tree _q21 = TREE_OPERAND (_p0, 1);
3437 289535 : tree _q22 = TREE_OPERAND (_p0, 2);
3438 289535 : {
3439 289535 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3440 289486 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[2]))
3441 289892 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
3442 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[2])))
3443 42111 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[2])))
3444 331289 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
3445 371 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
3446 : )
3447 : {
3448 41754 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1102;
3449 41754 : {
3450 41754 : tree res_op0;
3451 41754 : res_op0 = captures[1];
3452 41754 : tree res_op1;
3453 41754 : {
3454 41754 : tree _o1[1], _r1;
3455 41754 : _o1[0] = captures[2];
3456 41754 : if (TREE_TYPE (_o1[0]) != type)
3457 : {
3458 41754 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3459 41754 : if (EXPR_P (_r1))
3460 82 : goto next_after_fail1102;
3461 : }
3462 : else
3463 : _r1 = _o1[0];
3464 41672 : res_op1 = _r1;
3465 : }
3466 41672 : tree res_op2;
3467 41672 : {
3468 41672 : tree _o1[1], _r1;
3469 41672 : _o1[0] = captures[3];
3470 41672 : if (TREE_TYPE (_o1[0]) != type)
3471 : {
3472 41672 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3473 41672 : if (EXPR_P (_r1))
3474 0 : goto next_after_fail1102;
3475 : }
3476 : else
3477 : _r1 = _o1[0];
3478 41672 : res_op2 = _r1;
3479 : }
3480 41672 : tree _r;
3481 41672 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3482 41672 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
3483 41672 : return _r;
3484 : }
3485 247863 : next_after_fail1102:;
3486 : }
3487 : }
3488 247863 : break;
3489 : }
3490 : default:;
3491 : }
3492 : return NULL_TREE;
3493 : }
3494 :
3495 : tree
3496 1653357247 : generic_simplify (location_t loc, enum tree_code code, const tree type ATTRIBUTE_UNUSED, tree _p0)
3497 : {
3498 1653357247 : switch (code)
3499 : {
3500 2161745 : case ABS_EXPR:
3501 2161745 : return generic_simplify_ABS_EXPR (loc, code, type, _p0);
3502 800429573 : CASE_CONVERT:
3503 800429573 : return generic_simplify_CONVERT_EXPR (loc, code, type, _p0);
3504 2775958 : case BIT_NOT_EXPR:
3505 2775958 : return generic_simplify_BIT_NOT_EXPR (loc, code, type, _p0);
3506 943 : case ABSU_EXPR:
3507 943 : return generic_simplify_ABSU_EXPR (loc, code, type, _p0);
3508 4343318 : case NEGATE_EXPR:
3509 4343318 : return generic_simplify_NEGATE_EXPR (loc, code, type, _p0);
3510 470546959 : case VIEW_CONVERT_EXPR:
3511 470546959 : return generic_simplify_VIEW_CONVERT_EXPR (loc, code, type, _p0);
3512 6368254 : case FLOAT_EXPR:
3513 6368254 : return generic_simplify_FLOAT_EXPR (loc, code, type, _p0);
3514 496926 : case FIX_TRUNC_EXPR:
3515 496926 : return generic_simplify_FIX_TRUNC_EXPR (loc, code, type, _p0);
3516 3678 : case PAREN_EXPR:
3517 3678 : return generic_simplify_PAREN_EXPR (loc, code, type, _p0);
3518 1655890 : case REALPART_EXPR:
3519 1655890 : return generic_simplify_REALPART_EXPR (loc, code, type, _p0);
3520 1919771 : case IMAGPART_EXPR:
3521 1919771 : return generic_simplify_IMAGPART_EXPR (loc, code, type, _p0);
3522 1330 : case CONJ_EXPR:
3523 1330 : return generic_simplify_CONJ_EXPR (loc, code, type, _p0);
3524 : default:;
3525 : }
3526 : return NULL_TREE;
3527 : }
3528 :
3529 : tree
3530 78669719 : 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)
3531 : {
3532 78669719 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3533 78669719 : if (integer_zerop (_p1))
3534 : {
3535 4122881 : {
3536 4122881 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3537 4122881 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1259;
3538 4122881 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1259;
3539 4122881 : {
3540 4122881 : tree res_op0;
3541 4122881 : res_op0 = captures[0];
3542 4122881 : tree _r;
3543 4122881 : _r = non_lvalue_loc (loc, res_op0);
3544 4122881 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
3545 4122881 : return _r;
3546 : }
3547 : next_after_fail1259:;
3548 : }
3549 : }
3550 74546838 : switch (TREE_CODE (_p0))
3551 : {
3552 5680473 : case POINTER_PLUS_EXPR:
3553 5680473 : {
3554 5680473 : tree _q20 = TREE_OPERAND (_p0, 0);
3555 5680473 : tree _q21 = TREE_OPERAND (_p0, 1);
3556 5680473 : {
3557 5680473 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3558 5680473 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1260;
3559 5680473 : {
3560 5680473 : tree res_op0;
3561 5680473 : res_op0 = captures[1];
3562 5680473 : tree res_op1;
3563 5680473 : {
3564 5680473 : tree _o1[2], _r1;
3565 5680473 : _o1[0] = captures[2];
3566 5680473 : _o1[1] = captures[3];
3567 5680473 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3568 5680473 : res_op1 = _r1;
3569 : }
3570 5680473 : tree _r;
3571 5680473 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3572 5680473 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
3573 5680473 : return _r;
3574 : }
3575 0 : next_after_fail1260:;
3576 : }
3577 0 : break;
3578 : }
3579 44640248 : CASE_CONVERT:
3580 44640248 : {
3581 44640248 : tree _q20 = TREE_OPERAND (_p0, 0);
3582 44640248 : switch (TREE_CODE (_q20))
3583 : {
3584 28064 : case POINTER_PLUS_EXPR:
3585 28064 : {
3586 28064 : tree _q30 = TREE_OPERAND (_q20, 0);
3587 28064 : tree _q31 = TREE_OPERAND (_q20, 1);
3588 28064 : {
3589 28064 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
3590 28064 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1261;
3591 28064 : {
3592 28064 : tree res_op0;
3593 28064 : {
3594 28064 : tree _o1[1], _r1;
3595 28064 : _o1[0] = captures[2];
3596 28064 : if (TREE_TYPE (_o1[0]) != type)
3597 : {
3598 27956 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3599 : }
3600 : else
3601 : _r1 = _o1[0];
3602 28064 : res_op0 = _r1;
3603 : }
3604 28064 : tree res_op1;
3605 28064 : {
3606 28064 : tree _o1[2], _r1;
3607 28064 : _o1[0] = captures[3];
3608 28064 : _o1[1] = captures[4];
3609 28064 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3610 28064 : res_op1 = _r1;
3611 : }
3612 28064 : tree _r;
3613 28064 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3614 28064 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
3615 28064 : return _r;
3616 : }
3617 0 : next_after_fail1261:;
3618 : }
3619 0 : break;
3620 : }
3621 : default:;
3622 : }
3623 : break;
3624 : }
3625 68838301 : default:;
3626 : }
3627 68838301 : if (integer_zerop (_p0))
3628 : {
3629 646 : {
3630 646 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
3631 646 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1262;
3632 646 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1262;
3633 646 : {
3634 646 : tree res_op0;
3635 646 : {
3636 646 : tree _o1[1], _r1;
3637 646 : _o1[0] = captures[0];
3638 646 : if (TREE_TYPE (_o1[0]) != type)
3639 : {
3640 646 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3641 : }
3642 : else
3643 : _r1 = _o1[0];
3644 646 : res_op0 = _r1;
3645 : }
3646 646 : tree _r;
3647 646 : _r = non_lvalue_loc (loc, res_op0);
3648 646 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
3649 646 : return _r;
3650 : }
3651 : next_after_fail1262:;
3652 : }
3653 : }
3654 68837655 : switch (TREE_CODE (_p1))
3655 : {
3656 9075782 : CASE_CONVERT:
3657 9075782 : {
3658 9075782 : tree _q30 = TREE_OPERAND (_p1, 0);
3659 9075782 : switch (TREE_CODE (_q30))
3660 : {
3661 200229 : case MINUS_EXPR:
3662 200229 : {
3663 200229 : tree _q40 = TREE_OPERAND (_q30, 0);
3664 200229 : tree _q41 = TREE_OPERAND (_q30, 1);
3665 200229 : switch (TREE_CODE (_q40))
3666 : {
3667 90509 : CASE_CONVERT:
3668 90509 : {
3669 90509 : tree _q50 = TREE_OPERAND (_q40, 0);
3670 90509 : switch (TREE_CODE (_q41))
3671 : {
3672 7019 : CASE_CONVERT:
3673 7019 : {
3674 7019 : tree _q70 = TREE_OPERAND (_q41, 0);
3675 7019 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3676 : {
3677 4251 : {
3678 4251 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q50 };
3679 4251 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3680 4251 : && ((
3681 :
3682 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3683 : || (
3684 : 1
3685 4251 : && type == TREE_TYPE (captures[3])))
3686 : )
3687 : {
3688 2719 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1263;
3689 2719 : {
3690 2719 : tree _r;
3691 2719 : _r = captures[3];
3692 2719 : if (TREE_SIDE_EFFECTS (captures[0]))
3693 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3694 2719 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
3695 2719 : return _r;
3696 : }
3697 0 : next_after_fail1263:;
3698 : }
3699 : }
3700 : }
3701 : break;
3702 : }
3703 : default:;
3704 : }
3705 : break;
3706 : }
3707 : default:;
3708 : }
3709 : break;
3710 : }
3711 584 : case POINTER_DIFF_EXPR:
3712 584 : {
3713 584 : tree _q40 = TREE_OPERAND (_q30, 0);
3714 584 : tree _q41 = TREE_OPERAND (_q30, 1);
3715 584 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
3716 : {
3717 7 : {
3718 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
3719 7 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3720 : )
3721 : {
3722 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1264;
3723 7 : {
3724 7 : tree res_op0;
3725 7 : res_op0 = captures[3];
3726 7 : tree _r;
3727 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3728 7 : if (TREE_SIDE_EFFECTS (captures[4]))
3729 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3730 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 909, __FILE__, __LINE__, true);
3731 7 : return _r;
3732 : }
3733 0 : next_after_fail1264:;
3734 : }
3735 : }
3736 : }
3737 : break;
3738 : }
3739 : default:;
3740 : }
3741 : break;
3742 : }
3743 28639 : case MINUS_EXPR:
3744 28639 : {
3745 28639 : tree _q30 = TREE_OPERAND (_p1, 0);
3746 28639 : tree _q31 = TREE_OPERAND (_p1, 1);
3747 28639 : switch (TREE_CODE (_q30))
3748 : {
3749 24479 : CASE_CONVERT:
3750 24479 : {
3751 24479 : tree _q40 = TREE_OPERAND (_q30, 0);
3752 24479 : switch (TREE_CODE (_q31))
3753 : {
3754 7697 : CASE_CONVERT:
3755 7697 : {
3756 7697 : tree _q60 = TREE_OPERAND (_q31, 0);
3757 7697 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3758 : {
3759 20 : {
3760 20 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p1, _q40 };
3761 20 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3762 20 : && ((
3763 :
3764 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3765 : || (
3766 : 1
3767 20 : && type == TREE_TYPE (captures[3])))
3768 : )
3769 : {
3770 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1265;
3771 0 : {
3772 0 : tree _r;
3773 0 : _r = captures[3];
3774 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3775 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3776 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
3777 0 : return _r;
3778 : }
3779 0 : next_after_fail1265:;
3780 : }
3781 : }
3782 : }
3783 : break;
3784 : }
3785 : default:;
3786 : }
3787 : break;
3788 : }
3789 966 : case INTEGER_CST:
3790 966 : {
3791 966 : switch (TREE_CODE (_q31))
3792 : {
3793 16 : case BIT_AND_EXPR:
3794 16 : {
3795 16 : tree _q50 = TREE_OPERAND (_q31, 0);
3796 16 : tree _q51 = TREE_OPERAND (_q31, 1);
3797 16 : switch (TREE_CODE (_q50))
3798 : {
3799 16 : CASE_CONVERT:
3800 16 : {
3801 16 : tree _q60 = TREE_OPERAND (_q50, 0);
3802 16 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3803 : {
3804 0 : switch (TREE_CODE (_q51))
3805 : {
3806 0 : case INTEGER_CST:
3807 0 : {
3808 0 : {
3809 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q51 };
3810 0 : if (tree_int_cst_min_precision (captures[3], UNSIGNED) <= tree_ctz (captures[2])
3811 : )
3812 : {
3813 0 : {
3814 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[3]));
3815 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1266;
3816 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1266;
3817 0 : {
3818 0 : tree res_op0;
3819 0 : {
3820 0 : tree _o1[2], _r1;
3821 0 : _o1[0] = captures[0];
3822 0 : _o1[1] = algn;
3823 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3824 0 : res_op0 = _r1;
3825 : }
3826 0 : tree res_op1;
3827 0 : res_op1 = captures[2];
3828 0 : tree _r;
3829 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3830 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
3831 0 : return _r;
3832 : }
3833 0 : next_after_fail1266:;
3834 : }
3835 : }
3836 : }
3837 0 : break;
3838 : }
3839 : default:;
3840 : }
3841 : }
3842 16 : switch (TREE_CODE (_q60))
3843 : {
3844 0 : case POINTER_PLUS_EXPR:
3845 0 : {
3846 0 : tree _q70 = TREE_OPERAND (_q60, 0);
3847 0 : tree _q71 = TREE_OPERAND (_q60, 1);
3848 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3849 : {
3850 0 : switch (TREE_CODE (_q71))
3851 : {
3852 0 : case INTEGER_CST:
3853 0 : {
3854 0 : switch (TREE_CODE (_q51))
3855 : {
3856 0 : case INTEGER_CST:
3857 0 : {
3858 0 : {
3859 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q71, _q51 };
3860 0 : {
3861 0 : auto mask_width = tree_int_cst_min_precision (captures[4], UNSIGNED);
3862 0 : if (mask_width <= tree_ctz (captures[2]) && mask_width <= tree_ctz (captures[3])
3863 : )
3864 : {
3865 0 : {
3866 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[4]));
3867 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1267;
3868 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1267;
3869 0 : {
3870 0 : tree res_op0;
3871 0 : {
3872 0 : tree _o1[2], _r1;
3873 0 : _o1[0] = captures[0];
3874 0 : _o1[1] = algn;
3875 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3876 0 : res_op0 = _r1;
3877 : }
3878 0 : tree res_op1;
3879 0 : res_op1 = captures[2];
3880 0 : tree _r;
3881 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3882 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3883 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3884 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
3885 0 : return _r;
3886 : }
3887 0 : next_after_fail1267:;
3888 : }
3889 : }
3890 : }
3891 : }
3892 0 : break;
3893 : }
3894 : default:;
3895 : }
3896 : break;
3897 : }
3898 : default:;
3899 : }
3900 : }
3901 : break;
3902 : }
3903 : default:;
3904 : }
3905 : break;
3906 : }
3907 : default:;
3908 : }
3909 : break;
3910 : }
3911 : default:;
3912 : }
3913 : break;
3914 : }
3915 : default:;
3916 : }
3917 : break;
3918 : }
3919 0 : case POINTER_DIFF_EXPR:
3920 0 : {
3921 0 : tree _q30 = TREE_OPERAND (_p1, 0);
3922 0 : tree _q31 = TREE_OPERAND (_p1, 1);
3923 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
3924 : {
3925 0 : {
3926 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
3927 0 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3928 : )
3929 : {
3930 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1268;
3931 0 : {
3932 0 : tree res_op0;
3933 0 : res_op0 = captures[3];
3934 0 : tree _r;
3935 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3936 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3937 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3938 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 909, __FILE__, __LINE__, true);
3939 0 : return _r;
3940 : }
3941 0 : next_after_fail1268:;
3942 : }
3943 : }
3944 : }
3945 : break;
3946 : }
3947 346396 : case NEGATE_EXPR:
3948 346396 : {
3949 346396 : tree _q30 = TREE_OPERAND (_p1, 0);
3950 346396 : switch (TREE_CODE (_q30))
3951 : {
3952 22 : case BIT_AND_EXPR:
3953 22 : {
3954 22 : tree _q40 = TREE_OPERAND (_q30, 0);
3955 22 : tree _q41 = TREE_OPERAND (_q30, 1);
3956 22 : switch (TREE_CODE (_q40))
3957 : {
3958 22 : CASE_CONVERT:
3959 22 : {
3960 22 : tree _q50 = TREE_OPERAND (_q40, 0);
3961 22 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
3962 : {
3963 1 : switch (TREE_CODE (_q41))
3964 : {
3965 1 : case INTEGER_CST:
3966 1 : {
3967 1 : {
3968 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
3969 1 : {
3970 1 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1]));
3971 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1269;
3972 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1269;
3973 1 : {
3974 1 : tree res_op0;
3975 1 : res_op0 = captures[0];
3976 1 : tree res_op1;
3977 1 : res_op1 = algn;
3978 1 : tree _r;
3979 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
3980 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 912, __FILE__, __LINE__, true);
3981 1 : return _r;
3982 : }
3983 0 : next_after_fail1269:;
3984 : }
3985 : }
3986 0 : break;
3987 : }
3988 : default:;
3989 : }
3990 : }
3991 21 : switch (TREE_CODE (_q50))
3992 : {
3993 0 : case POINTER_PLUS_EXPR:
3994 0 : {
3995 0 : tree _q60 = TREE_OPERAND (_q50, 0);
3996 0 : tree _q61 = TREE_OPERAND (_q50, 1);
3997 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3998 : {
3999 0 : switch (TREE_CODE (_q61))
4000 : {
4001 0 : case INTEGER_CST:
4002 0 : {
4003 0 : switch (TREE_CODE (_q41))
4004 : {
4005 0 : case INTEGER_CST:
4006 0 : {
4007 0 : {
4008 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q61, _q41 };
4009 0 : if (tree_int_cst_min_precision (captures[2], UNSIGNED) <= tree_ctz (captures[1])
4010 : )
4011 : {
4012 0 : {
4013 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[2]));
4014 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1270;
4015 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1270;
4016 0 : {
4017 0 : tree res_op0;
4018 0 : res_op0 = captures[0];
4019 0 : tree res_op1;
4020 0 : res_op1 = algn;
4021 0 : tree _r;
4022 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4023 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4024 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4025 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
4026 0 : return _r;
4027 : }
4028 0 : next_after_fail1270:;
4029 : }
4030 : }
4031 : }
4032 0 : break;
4033 : }
4034 : default:;
4035 : }
4036 : break;
4037 : }
4038 : default:;
4039 : }
4040 : }
4041 : break;
4042 : }
4043 : default:;
4044 : }
4045 : break;
4046 : }
4047 : default:;
4048 : }
4049 : break;
4050 : }
4051 : default:;
4052 : }
4053 : break;
4054 : }
4055 : default:;
4056 : }
4057 : return NULL_TREE;
4058 : }
4059 :
4060 : tree
4061 37474601 : generic_simplify_NE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4062 : {
4063 37474601 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4064 37474601 : switch (TREE_CODE (_p1))
4065 : {
4066 2259 : case NEGATE_EXPR:
4067 2259 : {
4068 2259 : tree _q30 = TREE_OPERAND (_p1, 0);
4069 2259 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4070 : {
4071 0 : {
4072 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4073 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4074 0 : if (res) return res;
4075 : }
4076 : }
4077 : break;
4078 : }
4079 37474601 : default:;
4080 : }
4081 37474601 : switch (TREE_CODE (_p0))
4082 : {
4083 6148 : case NEGATE_EXPR:
4084 6148 : {
4085 6148 : tree _q20 = TREE_OPERAND (_p0, 0);
4086 6148 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4087 : {
4088 88 : {
4089 88 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4090 88 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
4091 88 : if (res) return res;
4092 : }
4093 : }
4094 : break;
4095 : }
4096 0 : case CEIL_MOD_EXPR:
4097 0 : {
4098 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4099 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4100 0 : if (integer_pow2p (_q21))
4101 : {
4102 0 : if (integer_zerop (_p1))
4103 : {
4104 0 : {
4105 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4106 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR, CEIL_MOD_EXPR);
4107 0 : if (res) return res;
4108 : }
4109 : }
4110 : }
4111 : break;
4112 : }
4113 1623 : case FLOOR_MOD_EXPR:
4114 1623 : {
4115 1623 : tree _q20 = TREE_OPERAND (_p0, 0);
4116 1623 : tree _q21 = TREE_OPERAND (_p0, 1);
4117 1623 : if (integer_pow2p (_q21))
4118 : {
4119 20 : if (integer_zerop (_p1))
4120 : {
4121 20 : {
4122 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4123 20 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR, FLOOR_MOD_EXPR);
4124 20 : if (res) return res;
4125 : }
4126 : }
4127 : }
4128 : break;
4129 : }
4130 0 : case ROUND_MOD_EXPR:
4131 0 : {
4132 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4133 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4134 0 : if (integer_pow2p (_q21))
4135 : {
4136 0 : if (integer_zerop (_p1))
4137 : {
4138 0 : {
4139 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4140 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR, ROUND_MOD_EXPR);
4141 0 : if (res) return res;
4142 : }
4143 : }
4144 : }
4145 : break;
4146 : }
4147 80569 : case TRUNC_MOD_EXPR:
4148 80569 : {
4149 80569 : tree _q20 = TREE_OPERAND (_p0, 0);
4150 80569 : tree _q21 = TREE_OPERAND (_p0, 1);
4151 80569 : if (integer_pow2p (_q21))
4152 : {
4153 20994 : if (integer_zerop (_p1))
4154 : {
4155 19552 : {
4156 19552 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4157 19552 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR, TRUNC_MOD_EXPR);
4158 19552 : if (res) return res;
4159 : }
4160 : }
4161 : }
4162 : break;
4163 : }
4164 8268339 : CASE_CONVERT:
4165 8268339 : {
4166 8268339 : tree _q20 = TREE_OPERAND (_p0, 0);
4167 8268339 : switch (TREE_CODE (_p1))
4168 : {
4169 69 : case LSHIFT_EXPR:
4170 69 : {
4171 69 : tree _q40 = TREE_OPERAND (_p1, 0);
4172 69 : tree _q41 = TREE_OPERAND (_p1, 1);
4173 69 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4174 : {
4175 0 : {
4176 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4177 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4178 0 : if (res) return res;
4179 : }
4180 : }
4181 : break;
4182 : }
4183 8268339 : default:;
4184 : }
4185 8268339 : {
4186 8268339 : tree _p1_pops[1];
4187 8268339 : if (tree_nop_convert (_p1, _p1_pops))
4188 : {
4189 4438466 : tree _q40 = _p1_pops[0];
4190 4438466 : switch (TREE_CODE (_q40))
4191 : {
4192 0 : case LSHIFT_EXPR:
4193 0 : {
4194 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4195 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4196 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4197 : {
4198 0 : {
4199 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
4200 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4201 0 : if (res) return res;
4202 : }
4203 : }
4204 : break;
4205 : }
4206 : default:;
4207 : }
4208 : }
4209 : }
4210 8268339 : switch (TREE_CODE (_q20))
4211 : {
4212 0 : case EXACT_DIV_EXPR:
4213 0 : {
4214 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4215 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4216 0 : switch (TREE_CODE (_q31))
4217 : {
4218 0 : case INTEGER_CST:
4219 0 : {
4220 0 : switch (TREE_CODE (_p1))
4221 : {
4222 0 : CASE_CONVERT:
4223 0 : {
4224 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4225 0 : switch (TREE_CODE (_q60))
4226 : {
4227 0 : case EXACT_DIV_EXPR:
4228 0 : {
4229 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4230 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4231 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4232 : {
4233 0 : {
4234 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
4235 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4236 0 : if (res) return res;
4237 : }
4238 : }
4239 : break;
4240 : }
4241 : default:;
4242 : }
4243 : break;
4244 : }
4245 : default:;
4246 : }
4247 : break;
4248 : }
4249 : default:;
4250 : }
4251 : break;
4252 : }
4253 8268339 : default:;
4254 : }
4255 8268339 : switch (TREE_CODE (_p1))
4256 : {
4257 20290 : case PLUS_EXPR:
4258 20290 : {
4259 20290 : tree _q40 = TREE_OPERAND (_p1, 0);
4260 20290 : tree _q41 = TREE_OPERAND (_p1, 1);
4261 20290 : switch (TREE_CODE (_q41))
4262 : {
4263 203 : CASE_CONVERT:
4264 203 : {
4265 203 : tree _q60 = TREE_OPERAND (_q41, 0);
4266 203 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4267 : {
4268 0 : {
4269 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4270 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4271 0 : if (res) return res;
4272 : }
4273 : }
4274 : break;
4275 : }
4276 20290 : default:;
4277 : }
4278 20290 : switch (TREE_CODE (_q40))
4279 : {
4280 800 : CASE_CONVERT:
4281 800 : {
4282 800 : tree _q50 = TREE_OPERAND (_q40, 0);
4283 800 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4284 : {
4285 15 : {
4286 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4287 15 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4288 15 : if (res) return res;
4289 : }
4290 : }
4291 : break;
4292 : }
4293 20283 : default:;
4294 : }
4295 20283 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4296 : {
4297 0 : {
4298 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4299 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4300 0 : if (res) return res;
4301 : }
4302 : }
4303 20283 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4304 : {
4305 0 : {
4306 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4307 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4308 0 : if (res) return res;
4309 : }
4310 : }
4311 : break;
4312 : }
4313 8268332 : default:;
4314 : }
4315 8268332 : {
4316 8268332 : tree _p1_pops[1];
4317 8268332 : if (tree_nop_convert (_p1, _p1_pops))
4318 : {
4319 4438466 : tree _q40 = _p1_pops[0];
4320 4438466 : switch (TREE_CODE (_q40))
4321 : {
4322 144 : case PLUS_EXPR:
4323 144 : {
4324 144 : tree _q50 = TREE_OPERAND (_q40, 0);
4325 144 : tree _q51 = TREE_OPERAND (_q40, 1);
4326 144 : switch (TREE_CODE (_q51))
4327 : {
4328 0 : CASE_CONVERT:
4329 0 : {
4330 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4331 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4332 : {
4333 0 : {
4334 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4335 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4336 0 : if (res) return res;
4337 : }
4338 : }
4339 : break;
4340 : }
4341 144 : default:;
4342 : }
4343 144 : switch (TREE_CODE (_q50))
4344 : {
4345 77 : CASE_CONVERT:
4346 77 : {
4347 77 : tree _q60 = TREE_OPERAND (_q50, 0);
4348 77 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4349 : {
4350 0 : {
4351 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4352 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4353 0 : if (res) return res;
4354 : }
4355 : }
4356 : break;
4357 : }
4358 144 : default:;
4359 : }
4360 144 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4361 : {
4362 0 : {
4363 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4364 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4365 0 : if (res) return res;
4366 : }
4367 : }
4368 144 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4369 : {
4370 0 : {
4371 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4372 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4373 0 : if (res) return res;
4374 : }
4375 : }
4376 : break;
4377 : }
4378 : default:;
4379 : }
4380 : }
4381 : }
4382 8268332 : break;
4383 : }
4384 37455022 : default:;
4385 : }
4386 37455022 : {
4387 37455022 : tree _p0_pops[1];
4388 37455022 : if (tree_nop_convert (_p0, _p0_pops))
4389 : {
4390 6078267 : tree _q20 = _p0_pops[0];
4391 6078267 : switch (TREE_CODE (_q20))
4392 : {
4393 15 : case LSHIFT_EXPR:
4394 15 : {
4395 15 : tree _q30 = TREE_OPERAND (_q20, 0);
4396 15 : tree _q31 = TREE_OPERAND (_q20, 1);
4397 15 : switch (TREE_CODE (_p1))
4398 : {
4399 1 : CASE_CONVERT:
4400 1 : {
4401 1 : tree _q60 = TREE_OPERAND (_p1, 0);
4402 1 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4403 : {
4404 0 : {
4405 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4406 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4407 0 : if (res) return res;
4408 : }
4409 : }
4410 : break;
4411 : }
4412 15 : default:;
4413 : }
4414 15 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4415 : {
4416 1 : {
4417 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4418 1 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4419 1 : if (res) return res;
4420 : }
4421 : }
4422 : break;
4423 : }
4424 31769 : case PLUS_EXPR:
4425 31769 : {
4426 31769 : tree _q30 = TREE_OPERAND (_q20, 0);
4427 31769 : tree _q31 = TREE_OPERAND (_q20, 1);
4428 31769 : switch (TREE_CODE (_q31))
4429 : {
4430 37 : CASE_CONVERT:
4431 37 : {
4432 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4433 37 : switch (TREE_CODE (_p1))
4434 : {
4435 0 : CASE_CONVERT:
4436 0 : {
4437 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4438 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
4439 : {
4440 0 : {
4441 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4442 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4443 0 : if (res) return res;
4444 : }
4445 : }
4446 : break;
4447 : }
4448 : default:;
4449 : }
4450 : break;
4451 : }
4452 31769 : default:;
4453 : }
4454 31769 : switch (TREE_CODE (_q30))
4455 : {
4456 26390 : CASE_CONVERT:
4457 26390 : {
4458 26390 : tree _q40 = TREE_OPERAND (_q30, 0);
4459 26390 : switch (TREE_CODE (_p1))
4460 : {
4461 457 : CASE_CONVERT:
4462 457 : {
4463 457 : tree _q70 = TREE_OPERAND (_p1, 0);
4464 457 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4465 : {
4466 90 : {
4467 90 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4468 90 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4469 90 : if (res) return res;
4470 : }
4471 : }
4472 : break;
4473 : }
4474 26300 : default:;
4475 : }
4476 26300 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4477 : {
4478 10 : {
4479 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4480 10 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4481 10 : if (res) return res;
4482 : }
4483 : }
4484 : break;
4485 : }
4486 31669 : default:;
4487 : }
4488 31669 : switch (TREE_CODE (_q31))
4489 : {
4490 37 : CASE_CONVERT:
4491 37 : {
4492 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4493 37 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4494 : {
4495 0 : {
4496 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4497 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4498 0 : if (res) return res;
4499 : }
4500 : }
4501 : break;
4502 : }
4503 31669 : default:;
4504 : }
4505 31669 : switch (TREE_CODE (_p1))
4506 : {
4507 441 : CASE_CONVERT:
4508 441 : {
4509 441 : tree _q60 = TREE_OPERAND (_p1, 0);
4510 441 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4511 : {
4512 0 : {
4513 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4514 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4515 0 : if (res) return res;
4516 : }
4517 : }
4518 441 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4519 : {
4520 66 : {
4521 66 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4522 66 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4523 66 : if (res) return res;
4524 : }
4525 : }
4526 : break;
4527 : }
4528 31603 : default:;
4529 : }
4530 31603 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4531 : {
4532 0 : {
4533 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4534 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4535 0 : if (res) return res;
4536 : }
4537 : }
4538 31603 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4539 : {
4540 0 : {
4541 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4542 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4543 0 : if (res) return res;
4544 : }
4545 : }
4546 : break;
4547 : }
4548 : default:;
4549 : }
4550 : }
4551 : }
4552 37454855 : {
4553 37454855 : tree _p1_pops[1];
4554 37454855 : if (tree_nop_convert (_p1, _p1_pops))
4555 : {
4556 4803907 : tree _q30 = _p1_pops[0];
4557 4803907 : switch (TREE_CODE (_q30))
4558 : {
4559 0 : case LSHIFT_EXPR:
4560 0 : {
4561 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4562 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4563 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
4564 : {
4565 0 : {
4566 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
4567 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4568 0 : if (res) return res;
4569 : }
4570 : }
4571 : break;
4572 : }
4573 : default:;
4574 : }
4575 : }
4576 : }
4577 37454855 : switch (TREE_CODE (_p0))
4578 : {
4579 5144 : case LSHIFT_EXPR:
4580 5144 : {
4581 5144 : tree _q20 = TREE_OPERAND (_p0, 0);
4582 5144 : tree _q21 = TREE_OPERAND (_p0, 1);
4583 5144 : switch (TREE_CODE (_p1))
4584 : {
4585 35 : CASE_CONVERT:
4586 35 : {
4587 35 : tree _q50 = TREE_OPERAND (_p1, 0);
4588 35 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4589 : {
4590 4 : {
4591 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4592 4 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4593 4 : if (res) return res;
4594 : }
4595 : }
4596 : break;
4597 : }
4598 5143 : default:;
4599 : }
4600 5143 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4601 : {
4602 27 : {
4603 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4604 27 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4605 27 : if (res) return res;
4606 : }
4607 : }
4608 5139 : if (tree_zero_one_valued_p (_q20))
4609 : {
4610 478 : switch (TREE_CODE (_q21))
4611 : {
4612 116 : case INTEGER_CST:
4613 116 : {
4614 116 : if (integer_zerop (_p1))
4615 : {
4616 5 : {
4617 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4618 5 : if (tree_fits_shwi_p (captures[1])
4619 5 : && tree_to_shwi (captures[1]) > 0
4620 10 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
4621 : )
4622 : {
4623 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1524;
4624 5 : {
4625 5 : tree res_op0;
4626 5 : res_op0 = captures[0];
4627 5 : tree _r;
4628 5 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4629 5 : if (TREE_SIDE_EFFECTS (captures[1]))
4630 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4631 5 : if (TREE_SIDE_EFFECTS (captures[2]))
4632 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4633 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
4634 5 : return _r;
4635 : }
4636 0 : next_after_fail1524:;
4637 : }
4638 : }
4639 : }
4640 : break;
4641 : }
4642 : default:;
4643 : }
4644 : }
4645 : break;
4646 : }
4647 37454845 : default:;
4648 : }
4649 37454845 : switch (TREE_CODE (_p1))
4650 : {
4651 263 : case LSHIFT_EXPR:
4652 263 : {
4653 263 : tree _q30 = TREE_OPERAND (_p1, 0);
4654 263 : tree _q31 = TREE_OPERAND (_p1, 1);
4655 263 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4656 : {
4657 0 : {
4658 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
4659 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
4660 0 : if (res) return res;
4661 : }
4662 : }
4663 : break;
4664 : }
4665 37454845 : default:;
4666 : }
4667 37454845 : switch (TREE_CODE (_p0))
4668 : {
4669 155 : case VIEW_CONVERT_EXPR:
4670 155 : {
4671 155 : tree _q20 = TREE_OPERAND (_p0, 0);
4672 155 : if (tree_zero_one_valued_p (_q20))
4673 : {
4674 0 : if (integer_zerop (_p1))
4675 : {
4676 0 : {
4677 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4678 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4679 0 : if (res) return res;
4680 : }
4681 : }
4682 : }
4683 : break;
4684 : }
4685 20572 : case RSHIFT_EXPR:
4686 20572 : {
4687 20572 : tree _q20 = TREE_OPERAND (_p0, 0);
4688 20572 : tree _q21 = TREE_OPERAND (_p0, 1);
4689 20572 : switch (TREE_CODE (_q21))
4690 : {
4691 18247 : case INTEGER_CST:
4692 18247 : {
4693 18247 : switch (TREE_CODE (_p1))
4694 : {
4695 210 : case RSHIFT_EXPR:
4696 210 : {
4697 210 : tree _q50 = TREE_OPERAND (_p1, 0);
4698 210 : tree _q51 = TREE_OPERAND (_p1, 1);
4699 210 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4700 : {
4701 15 : switch (TREE_CODE (_q51))
4702 : {
4703 15 : case INTEGER_CST:
4704 15 : {
4705 15 : {
4706 15 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4707 15 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
4708 15 : if (res) return res;
4709 : }
4710 3 : break;
4711 : }
4712 : default:;
4713 : }
4714 : }
4715 : break;
4716 : }
4717 18235 : default:;
4718 : }
4719 18235 : if (integer_zerop (_p1))
4720 : {
4721 7637 : {
4722 7637 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4723 7637 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
4724 7637 : if (res) return res;
4725 : }
4726 : }
4727 : break;
4728 : }
4729 : default:;
4730 : }
4731 : break;
4732 : }
4733 95070 : case MULT_EXPR:
4734 95070 : {
4735 95070 : tree _q20 = TREE_OPERAND (_p0, 0);
4736 95070 : tree _q21 = TREE_OPERAND (_p0, 1);
4737 95070 : switch (TREE_CODE (_p1))
4738 : {
4739 3164 : case MULT_EXPR:
4740 3164 : {
4741 3164 : tree _q50 = TREE_OPERAND (_p1, 0);
4742 3164 : tree _q51 = TREE_OPERAND (_p1, 1);
4743 3164 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4744 : {
4745 1901 : {
4746 1901 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4747 1901 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR);
4748 1901 : if (res) return res;
4749 : }
4750 : }
4751 3160 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4752 : {
4753 53 : {
4754 53 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4755 53 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR);
4756 53 : if (res) return res;
4757 : }
4758 : }
4759 3160 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4760 : {
4761 22 : {
4762 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4763 22 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR);
4764 22 : if (res) return res;
4765 : }
4766 : }
4767 3160 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4768 : {
4769 260 : {
4770 260 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4771 260 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR);
4772 260 : if (res) return res;
4773 : }
4774 : }
4775 : break;
4776 : }
4777 95066 : default:;
4778 : }
4779 95066 : switch (TREE_CODE (_q21))
4780 : {
4781 77597 : case INTEGER_CST:
4782 77597 : {
4783 77597 : switch (TREE_CODE (_p1))
4784 : {
4785 2302 : case MULT_EXPR:
4786 2302 : {
4787 2302 : tree _q50 = TREE_OPERAND (_p1, 0);
4788 2302 : tree _q51 = TREE_OPERAND (_p1, 1);
4789 2302 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4790 : {
4791 1369 : {
4792 1369 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4793 1369 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
4794 1369 : if (res) return res;
4795 : }
4796 : }
4797 : break;
4798 : }
4799 : default:;
4800 : }
4801 : break;
4802 : }
4803 : default:;
4804 : }
4805 : break;
4806 : }
4807 2029 : case EXACT_DIV_EXPR:
4808 2029 : {
4809 2029 : tree _q20 = TREE_OPERAND (_p0, 0);
4810 2029 : tree _q21 = TREE_OPERAND (_p0, 1);
4811 2029 : switch (TREE_CODE (_q21))
4812 : {
4813 2029 : case INTEGER_CST:
4814 2029 : {
4815 2029 : switch (TREE_CODE (_p1))
4816 : {
4817 22 : case EXACT_DIV_EXPR:
4818 22 : {
4819 22 : tree _q50 = TREE_OPERAND (_p1, 0);
4820 22 : tree _q51 = TREE_OPERAND (_p1, 1);
4821 22 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4822 : {
4823 12 : {
4824 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
4825 12 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4826 12 : if (res) return res;
4827 : }
4828 : }
4829 : break;
4830 : }
4831 : default:;
4832 : }
4833 : break;
4834 : }
4835 : default:;
4836 : }
4837 : break;
4838 : }
4839 11330 : case TRUNC_DIV_EXPR:
4840 11330 : {
4841 11330 : tree _q20 = TREE_OPERAND (_p0, 0);
4842 11330 : tree _q21 = TREE_OPERAND (_p0, 1);
4843 11330 : switch (TREE_CODE (_q21))
4844 : {
4845 8594 : case INTEGER_CST:
4846 8594 : {
4847 8594 : switch (TREE_CODE (_p1))
4848 : {
4849 2440 : case INTEGER_CST:
4850 2440 : {
4851 2440 : {
4852 2440 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4853 2440 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
4854 2440 : if (res) return res;
4855 : }
4856 325 : break;
4857 : }
4858 : default:;
4859 : }
4860 : break;
4861 : }
4862 : default:;
4863 : }
4864 : break;
4865 : }
4866 1531102 : case PLUS_EXPR:
4867 1531102 : {
4868 1531102 : tree _q20 = TREE_OPERAND (_p0, 0);
4869 1531102 : tree _q21 = TREE_OPERAND (_p0, 1);
4870 1531102 : switch (TREE_CODE (_p1))
4871 : {
4872 189836 : case PLUS_EXPR:
4873 189836 : {
4874 189836 : tree _q50 = TREE_OPERAND (_p1, 0);
4875 189836 : tree _q51 = TREE_OPERAND (_p1, 1);
4876 189836 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4877 : {
4878 984 : {
4879 984 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4880 1968 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4881 1937 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4882 870 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4883 : )
4884 : {
4885 953 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1525;
4886 953 : {
4887 953 : tree res_op0;
4888 953 : res_op0 = captures[0];
4889 953 : tree res_op1;
4890 953 : res_op1 = captures[2];
4891 953 : tree _r;
4892 953 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4893 953 : if (TREE_SIDE_EFFECTS (captures[1]))
4894 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4895 953 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
4896 953 : return _r;
4897 : }
4898 0 : next_after_fail1525:;
4899 : }
4900 : }
4901 : }
4902 188883 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4903 : {
4904 0 : {
4905 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4906 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4907 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4908 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4909 : )
4910 : {
4911 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1526;
4912 0 : {
4913 0 : tree res_op0;
4914 0 : res_op0 = captures[0];
4915 0 : tree res_op1;
4916 0 : res_op1 = captures[2];
4917 0 : tree _r;
4918 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4919 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4920 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4921 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
4922 0 : return _r;
4923 : }
4924 0 : next_after_fail1526:;
4925 : }
4926 : }
4927 : }
4928 188883 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4929 : {
4930 88 : {
4931 88 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4932 176 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4933 176 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4934 88 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4935 : )
4936 : {
4937 88 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1527;
4938 88 : {
4939 88 : tree res_op0;
4940 88 : res_op0 = captures[0];
4941 88 : tree res_op1;
4942 88 : res_op1 = captures[2];
4943 88 : tree _r;
4944 88 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4945 88 : if (TREE_SIDE_EFFECTS (captures[1]))
4946 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4947 88 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
4948 88 : return _r;
4949 : }
4950 0 : next_after_fail1527:;
4951 : }
4952 : }
4953 : }
4954 188795 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4955 : {
4956 107406 : {
4957 107406 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4958 214812 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4959 214789 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4960 107383 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4961 : )
4962 : {
4963 107383 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1528;
4964 107383 : {
4965 107383 : tree res_op0;
4966 107383 : res_op0 = captures[0];
4967 107383 : tree res_op1;
4968 107383 : res_op1 = captures[2];
4969 107383 : tree _r;
4970 107383 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4971 107383 : if (TREE_SIDE_EFFECTS (captures[1]))
4972 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4973 107383 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
4974 107383 : return _r;
4975 : }
4976 0 : next_after_fail1528:;
4977 : }
4978 : }
4979 : }
4980 : break;
4981 : }
4982 1422678 : default:;
4983 : }
4984 1422678 : switch (TREE_CODE (_q21))
4985 : {
4986 813 : CASE_CONVERT:
4987 813 : {
4988 813 : tree _q40 = TREE_OPERAND (_q21, 0);
4989 813 : switch (TREE_CODE (_p1))
4990 : {
4991 88 : CASE_CONVERT:
4992 88 : {
4993 88 : tree _q60 = TREE_OPERAND (_p1, 0);
4994 88 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
4995 : {
4996 0 : {
4997 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
4998 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4999 0 : if (res) return res;
5000 : }
5001 : }
5002 : break;
5003 : }
5004 : default:;
5005 : }
5006 : break;
5007 : }
5008 1422678 : default:;
5009 : }
5010 1422678 : switch (TREE_CODE (_q20))
5011 : {
5012 143592 : CASE_CONVERT:
5013 143592 : {
5014 143592 : tree _q30 = TREE_OPERAND (_q20, 0);
5015 143592 : switch (TREE_CODE (_p1))
5016 : {
5017 3889 : CASE_CONVERT:
5018 3889 : {
5019 3889 : tree _q60 = TREE_OPERAND (_p1, 0);
5020 3889 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5021 : {
5022 404 : {
5023 404 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5024 404 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5025 404 : if (res) return res;
5026 : }
5027 : }
5028 : break;
5029 : }
5030 143189 : default:;
5031 : }
5032 143189 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5033 : {
5034 0 : {
5035 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5036 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5037 0 : if (res) return res;
5038 : }
5039 : }
5040 : break;
5041 : }
5042 1422275 : default:;
5043 : }
5044 1422275 : switch (TREE_CODE (_q21))
5045 : {
5046 813 : CASE_CONVERT:
5047 813 : {
5048 813 : tree _q40 = TREE_OPERAND (_q21, 0);
5049 813 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5050 : {
5051 0 : {
5052 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5053 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5054 0 : if (res) return res;
5055 : }
5056 : }
5057 : break;
5058 : }
5059 1422275 : default:;
5060 : }
5061 1422275 : switch (TREE_CODE (_p1))
5062 : {
5063 43128 : CASE_CONVERT:
5064 43128 : {
5065 43128 : tree _q50 = TREE_OPERAND (_p1, 0);
5066 43128 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5067 : {
5068 0 : {
5069 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5070 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5071 0 : if (res) return res;
5072 : }
5073 : }
5074 43128 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5075 : {
5076 0 : {
5077 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5078 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5079 0 : if (res) return res;
5080 : }
5081 : }
5082 : break;
5083 : }
5084 1422275 : default:;
5085 : }
5086 1422275 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5087 : {
5088 77143 : {
5089 77143 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5090 77143 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5091 77143 : if (res) return res;
5092 : }
5093 : }
5094 1345836 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5095 : {
5096 19796 : {
5097 19796 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5098 19796 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5099 19796 : if (res) return res;
5100 : }
5101 : }
5102 : break;
5103 : }
5104 518277 : case POINTER_PLUS_EXPR:
5105 518277 : {
5106 518277 : tree _q20 = TREE_OPERAND (_p0, 0);
5107 518277 : tree _q21 = TREE_OPERAND (_p0, 1);
5108 518277 : switch (TREE_CODE (_p1))
5109 : {
5110 34452 : case POINTER_PLUS_EXPR:
5111 34452 : {
5112 34452 : tree _q50 = TREE_OPERAND (_p1, 0);
5113 34452 : tree _q51 = TREE_OPERAND (_p1, 1);
5114 34452 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5115 : {
5116 7915 : {
5117 7915 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5118 7915 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
5119 7915 : if (res) return res;
5120 : }
5121 : }
5122 : break;
5123 : }
5124 510362 : default:;
5125 : }
5126 510362 : switch (TREE_CODE (_q20))
5127 : {
5128 73211 : CASE_CONVERT:
5129 73211 : {
5130 73211 : tree _q30 = TREE_OPERAND (_q20, 0);
5131 73211 : switch (TREE_CODE (_p1))
5132 : {
5133 195 : CASE_CONVERT:
5134 195 : {
5135 195 : tree _q60 = TREE_OPERAND (_p1, 0);
5136 195 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5137 : {
5138 0 : {
5139 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5140 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5141 0 : if (res) return res;
5142 : }
5143 : }
5144 : break;
5145 : }
5146 73211 : default:;
5147 : }
5148 73211 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5149 : {
5150 56 : {
5151 56 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5152 56 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5153 56 : if (res) return res;
5154 : }
5155 : }
5156 : break;
5157 : }
5158 510306 : default:;
5159 : }
5160 510306 : switch (TREE_CODE (_p1))
5161 : {
5162 3250 : CASE_CONVERT:
5163 3250 : {
5164 3250 : tree _q50 = TREE_OPERAND (_p1, 0);
5165 3250 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5166 : {
5167 0 : {
5168 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5169 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5170 0 : if (res) return res;
5171 : }
5172 : }
5173 : break;
5174 : }
5175 510306 : default:;
5176 : }
5177 510306 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5178 : {
5179 10100 : {
5180 10100 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5181 10100 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5182 10100 : if (res) return res;
5183 : }
5184 : }
5185 : break;
5186 : }
5187 105299 : case MINUS_EXPR:
5188 105299 : {
5189 105299 : tree _q20 = TREE_OPERAND (_p0, 0);
5190 105299 : tree _q21 = TREE_OPERAND (_p0, 1);
5191 105299 : switch (TREE_CODE (_p1))
5192 : {
5193 5878 : case MINUS_EXPR:
5194 5878 : {
5195 5878 : tree _q50 = TREE_OPERAND (_p1, 0);
5196 5878 : tree _q51 = TREE_OPERAND (_p1, 1);
5197 5878 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5198 : {
5199 170 : {
5200 170 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5201 340 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5202 173 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5203 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5204 : )
5205 : {
5206 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1529;
5207 3 : {
5208 3 : tree res_op0;
5209 3 : res_op0 = captures[0];
5210 3 : tree res_op1;
5211 3 : res_op1 = captures[2];
5212 3 : tree _r;
5213 3 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5214 3 : if (TREE_SIDE_EFFECTS (captures[1]))
5215 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5216 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 929, __FILE__, __LINE__, true);
5217 3 : return _r;
5218 : }
5219 0 : next_after_fail1529:;
5220 : }
5221 : }
5222 : }
5223 5875 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5224 : {
5225 166 : {
5226 166 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5227 332 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5228 166 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5229 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5230 : )
5231 : {
5232 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1530;
5233 0 : {
5234 0 : tree res_op0;
5235 0 : res_op0 = captures[2];
5236 0 : tree res_op1;
5237 0 : res_op1 = captures[1];
5238 0 : tree _r;
5239 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5240 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5241 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5242 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
5243 0 : return _r;
5244 : }
5245 0 : next_after_fail1530:;
5246 : }
5247 : }
5248 : }
5249 : break;
5250 : }
5251 105296 : default:;
5252 : }
5253 105296 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5254 : {
5255 1752 : {
5256 1752 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5257 1752 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5258 1752 : if (res) return res;
5259 : }
5260 : }
5261 : break;
5262 : }
5263 24684 : case POINTER_DIFF_EXPR:
5264 24684 : {
5265 24684 : tree _q20 = TREE_OPERAND (_p0, 0);
5266 24684 : tree _q21 = TREE_OPERAND (_p0, 1);
5267 24684 : switch (TREE_CODE (_p1))
5268 : {
5269 2263 : case POINTER_DIFF_EXPR:
5270 2263 : {
5271 2263 : tree _q50 = TREE_OPERAND (_p1, 0);
5272 2263 : tree _q51 = TREE_OPERAND (_p1, 1);
5273 2263 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5274 : {
5275 0 : {
5276 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5277 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5278 0 : if (res) return res;
5279 : }
5280 : }
5281 2263 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5282 : {
5283 0 : {
5284 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5285 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5286 0 : if (res) return res;
5287 : }
5288 : }
5289 : break;
5290 : }
5291 : default:;
5292 : }
5293 : break;
5294 : }
5295 37227686 : default:;
5296 : }
5297 37227686 : {
5298 37227686 : tree _p0_pops[1];
5299 37227686 : if (tree_logical_inverted_value (_p0, _p0_pops))
5300 : {
5301 535931 : tree _q20 = _p0_pops[0];
5302 535931 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5303 : {
5304 24 : if (tree_truth_valued_p (_p1))
5305 : {
5306 0 : {
5307 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5308 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5309 0 : if (res) return res;
5310 : }
5311 : }
5312 : }
5313 : }
5314 : }
5315 37227686 : if (tree_truth_valued_p (_p0))
5316 : {
5317 5379736 : {
5318 5379736 : tree _p1_pops[1];
5319 5379736 : if (tree_logical_inverted_value (_p1, _p1_pops))
5320 : {
5321 1141 : tree _q30 = _p1_pops[0];
5322 1141 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5323 : {
5324 0 : {
5325 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5326 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5327 0 : if (res) return res;
5328 : }
5329 : }
5330 : }
5331 : }
5332 : }
5333 37227686 : switch (TREE_CODE (_p1))
5334 : {
5335 122433 : case PLUS_EXPR:
5336 122433 : {
5337 122433 : tree _q30 = TREE_OPERAND (_p1, 0);
5338 122433 : tree _q31 = TREE_OPERAND (_p1, 1);
5339 122433 : switch (TREE_CODE (_q31))
5340 : {
5341 346 : CASE_CONVERT:
5342 346 : {
5343 346 : tree _q50 = TREE_OPERAND (_q31, 0);
5344 346 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5345 : {
5346 0 : {
5347 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5348 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5349 0 : if (res) return res;
5350 : }
5351 : }
5352 : break;
5353 : }
5354 122433 : default:;
5355 : }
5356 122433 : switch (TREE_CODE (_q30))
5357 : {
5358 5428 : CASE_CONVERT:
5359 5428 : {
5360 5428 : tree _q40 = TREE_OPERAND (_q30, 0);
5361 5428 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5362 : {
5363 0 : {
5364 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5365 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5366 0 : if (res) return res;
5367 : }
5368 : }
5369 : break;
5370 : }
5371 122433 : default:;
5372 : }
5373 122433 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5374 : {
5375 0 : {
5376 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5377 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5378 0 : if (res) return res;
5379 : }
5380 : }
5381 122433 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5382 : {
5383 8 : {
5384 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5385 8 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
5386 8 : if (res) return res;
5387 : }
5388 : }
5389 : break;
5390 : }
5391 37227678 : default:;
5392 : }
5393 37227678 : {
5394 37227678 : tree _p1_pops[1];
5395 37227678 : if (tree_nop_convert (_p1, _p1_pops))
5396 : {
5397 4803502 : tree _q30 = _p1_pops[0];
5398 4803502 : switch (TREE_CODE (_q30))
5399 : {
5400 1701 : case PLUS_EXPR:
5401 1701 : {
5402 1701 : tree _q40 = TREE_OPERAND (_q30, 0);
5403 1701 : tree _q41 = TREE_OPERAND (_q30, 1);
5404 1701 : switch (TREE_CODE (_q41))
5405 : {
5406 3 : CASE_CONVERT:
5407 3 : {
5408 3 : tree _q60 = TREE_OPERAND (_q41, 0);
5409 3 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5410 : {
5411 0 : {
5412 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5413 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
5414 0 : if (res) return res;
5415 : }
5416 : }
5417 : break;
5418 : }
5419 1701 : default:;
5420 : }
5421 1701 : switch (TREE_CODE (_q40))
5422 : {
5423 1145 : CASE_CONVERT:
5424 1145 : {
5425 1145 : tree _q50 = TREE_OPERAND (_q40, 0);
5426 1145 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5427 : {
5428 0 : {
5429 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5430 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
5431 0 : if (res) return res;
5432 : }
5433 : }
5434 : break;
5435 : }
5436 1701 : default:;
5437 : }
5438 1701 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5439 : {
5440 0 : {
5441 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5442 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
5443 0 : if (res) return res;
5444 : }
5445 : }
5446 1701 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5447 : {
5448 0 : {
5449 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5450 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
5451 0 : if (res) return res;
5452 : }
5453 : }
5454 : break;
5455 : }
5456 : default:;
5457 : }
5458 : }
5459 : }
5460 37227678 : switch (TREE_CODE (_p0))
5461 : {
5462 8268157 : CASE_CONVERT:
5463 8268157 : {
5464 8268157 : tree _q20 = TREE_OPERAND (_p0, 0);
5465 8268157 : switch (TREE_CODE (_p1))
5466 : {
5467 169 : case POINTER_PLUS_EXPR:
5468 169 : {
5469 169 : tree _q40 = TREE_OPERAND (_p1, 0);
5470 169 : tree _q41 = TREE_OPERAND (_p1, 1);
5471 169 : switch (TREE_CODE (_q40))
5472 : {
5473 48 : CASE_CONVERT:
5474 48 : {
5475 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5476 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5477 : {
5478 0 : {
5479 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5480 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5481 0 : if (res) return res;
5482 : }
5483 : }
5484 : break;
5485 : }
5486 169 : default:;
5487 : }
5488 169 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5489 : {
5490 0 : {
5491 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5492 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5493 0 : if (res) return res;
5494 : }
5495 : }
5496 : break;
5497 : }
5498 8268157 : default:;
5499 : }
5500 8268157 : {
5501 8268157 : tree _p1_pops[1];
5502 8268157 : if (tree_nop_convert (_p1, _p1_pops))
5503 : {
5504 4438310 : tree _q40 = _p1_pops[0];
5505 4438310 : switch (TREE_CODE (_q40))
5506 : {
5507 48 : case POINTER_PLUS_EXPR:
5508 48 : {
5509 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5510 48 : tree _q51 = TREE_OPERAND (_q40, 1);
5511 48 : switch (TREE_CODE (_q50))
5512 : {
5513 8 : CASE_CONVERT:
5514 8 : {
5515 8 : tree _q60 = TREE_OPERAND (_q50, 0);
5516 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5517 : {
5518 0 : {
5519 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5520 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5521 0 : if (res) return res;
5522 : }
5523 : }
5524 : break;
5525 : }
5526 48 : default:;
5527 : }
5528 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5529 : {
5530 0 : {
5531 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5532 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5533 0 : if (res) return res;
5534 : }
5535 : }
5536 : break;
5537 : }
5538 : default:;
5539 : }
5540 : }
5541 : }
5542 8268157 : break;
5543 : }
5544 37227678 : default:;
5545 : }
5546 37227678 : {
5547 37227678 : tree _p0_pops[1];
5548 37227678 : if (tree_nop_convert (_p0, _p0_pops))
5549 : {
5550 6078100 : tree _q20 = _p0_pops[0];
5551 6078100 : switch (TREE_CODE (_q20))
5552 : {
5553 185 : case POINTER_PLUS_EXPR:
5554 185 : {
5555 185 : tree _q30 = TREE_OPERAND (_q20, 0);
5556 185 : tree _q31 = TREE_OPERAND (_q20, 1);
5557 185 : switch (TREE_CODE (_q30))
5558 : {
5559 24 : CASE_CONVERT:
5560 24 : {
5561 24 : tree _q40 = TREE_OPERAND (_q30, 0);
5562 24 : switch (TREE_CODE (_p1))
5563 : {
5564 8 : CASE_CONVERT:
5565 8 : {
5566 8 : tree _q70 = TREE_OPERAND (_p1, 0);
5567 8 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5568 : {
5569 0 : {
5570 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5571 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5572 0 : if (res) return res;
5573 : }
5574 : }
5575 : break;
5576 : }
5577 24 : default:;
5578 : }
5579 24 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5580 : {
5581 0 : {
5582 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5583 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5584 0 : if (res) return res;
5585 : }
5586 : }
5587 : break;
5588 : }
5589 185 : default:;
5590 : }
5591 185 : switch (TREE_CODE (_p1))
5592 : {
5593 50 : CASE_CONVERT:
5594 50 : {
5595 50 : tree _q60 = TREE_OPERAND (_p1, 0);
5596 50 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5597 : {
5598 0 : {
5599 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5600 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5601 0 : if (res) return res;
5602 : }
5603 : }
5604 : break;
5605 : }
5606 185 : default:;
5607 : }
5608 185 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5609 : {
5610 0 : {
5611 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5612 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5613 0 : if (res) return res;
5614 : }
5615 : }
5616 : break;
5617 : }
5618 : default:;
5619 : }
5620 : }
5621 : }
5622 37227678 : switch (TREE_CODE (_p1))
5623 : {
5624 30536 : case POINTER_PLUS_EXPR:
5625 30536 : {
5626 30536 : tree _q30 = TREE_OPERAND (_p1, 0);
5627 30536 : tree _q31 = TREE_OPERAND (_p1, 1);
5628 30536 : switch (TREE_CODE (_q30))
5629 : {
5630 2768 : CASE_CONVERT:
5631 2768 : {
5632 2768 : tree _q40 = TREE_OPERAND (_q30, 0);
5633 2768 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5634 : {
5635 0 : {
5636 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5637 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5638 0 : if (res) return res;
5639 : }
5640 : }
5641 : break;
5642 : }
5643 30536 : default:;
5644 : }
5645 30536 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5646 : {
5647 0 : {
5648 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5649 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5650 0 : if (res) return res;
5651 : }
5652 : }
5653 : break;
5654 : }
5655 37227678 : default:;
5656 : }
5657 37227678 : {
5658 37227678 : tree _p1_pops[1];
5659 37227678 : if (tree_nop_convert (_p1, _p1_pops))
5660 : {
5661 4803502 : tree _q30 = _p1_pops[0];
5662 4803502 : switch (TREE_CODE (_q30))
5663 : {
5664 387 : case POINTER_PLUS_EXPR:
5665 387 : {
5666 387 : tree _q40 = TREE_OPERAND (_q30, 0);
5667 387 : tree _q41 = TREE_OPERAND (_q30, 1);
5668 387 : switch (TREE_CODE (_q40))
5669 : {
5670 8 : CASE_CONVERT:
5671 8 : {
5672 8 : tree _q50 = TREE_OPERAND (_q40, 0);
5673 8 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5674 : {
5675 0 : {
5676 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5677 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5678 0 : if (res) return res;
5679 : }
5680 : }
5681 : break;
5682 : }
5683 387 : default:;
5684 : }
5685 387 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5686 : {
5687 0 : {
5688 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5689 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5690 0 : if (res) return res;
5691 : }
5692 : }
5693 : break;
5694 : }
5695 : default:;
5696 : }
5697 : }
5698 : }
5699 37227678 : switch (TREE_CODE (_p0))
5700 : {
5701 500206 : case POINTER_PLUS_EXPR:
5702 500206 : {
5703 500206 : tree _q20 = TREE_OPERAND (_p0, 0);
5704 500206 : tree _q21 = TREE_OPERAND (_p0, 1);
5705 500206 : switch (TREE_CODE (_p1))
5706 : {
5707 49200 : case ADDR_EXPR:
5708 49200 : {
5709 49200 : {
5710 49200 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5711 49200 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5712 49200 : if (res) return res;
5713 : }
5714 33564 : break;
5715 : }
5716 484570 : default:;
5717 : }
5718 484570 : switch (TREE_CODE (_q20))
5719 : {
5720 4900 : case ADDR_EXPR:
5721 4900 : {
5722 4900 : switch (TREE_CODE (_p1))
5723 : {
5724 256 : case POINTER_PLUS_EXPR:
5725 256 : {
5726 256 : tree _q50 = TREE_OPERAND (_p1, 0);
5727 256 : tree _q51 = TREE_OPERAND (_p1, 1);
5728 256 : switch (TREE_CODE (_q50))
5729 : {
5730 0 : case ADDR_EXPR:
5731 0 : {
5732 0 : {
5733 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
5734 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR);
5735 0 : if (res) return res;
5736 : }
5737 0 : break;
5738 : }
5739 : default:;
5740 : }
5741 : break;
5742 : }
5743 : default:;
5744 : }
5745 : break;
5746 : }
5747 : default:;
5748 : }
5749 : break;
5750 : }
5751 197486 : case ADDR_EXPR:
5752 197486 : {
5753 197486 : switch (TREE_CODE (_p1))
5754 : {
5755 0 : case POINTER_PLUS_EXPR:
5756 0 : {
5757 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5758 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5759 0 : {
5760 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
5761 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5762 0 : if (res) return res;
5763 : }
5764 0 : break;
5765 : }
5766 : default:;
5767 : }
5768 : break;
5769 : }
5770 37212042 : default:;
5771 : }
5772 37212042 : switch (TREE_CODE (_p1))
5773 : {
5774 30204 : case MINUS_EXPR:
5775 30204 : {
5776 30204 : tree _q30 = TREE_OPERAND (_p1, 0);
5777 30204 : tree _q31 = TREE_OPERAND (_p1, 1);
5778 30204 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5779 : {
5780 0 : {
5781 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5782 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5783 0 : if (res) return res;
5784 : }
5785 : }
5786 : break;
5787 : }
5788 37212042 : default:;
5789 : }
5790 37212042 : switch (TREE_CODE (_p0))
5791 : {
5792 9215 : case TRUNC_DIV_EXPR:
5793 9215 : {
5794 9215 : tree _q20 = TREE_OPERAND (_p0, 0);
5795 9215 : tree _q21 = TREE_OPERAND (_p0, 1);
5796 9215 : if (integer_zerop (_p1))
5797 : {
5798 1035 : {
5799 1035 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5800 1035 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
5801 1035 : if (res) return res;
5802 : }
5803 : }
5804 : break;
5805 : }
5806 8268157 : CASE_CONVERT:
5807 8268157 : {
5808 8268157 : tree _q20 = TREE_OPERAND (_p0, 0);
5809 8268157 : switch (TREE_CODE (_p1))
5810 : {
5811 4577619 : CASE_CONVERT:
5812 4577619 : {
5813 4577619 : tree _q40 = TREE_OPERAND (_p1, 0);
5814 4577619 : switch (TREE_CODE (_q40))
5815 : {
5816 0 : case MINUS_EXPR:
5817 0 : {
5818 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5819 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5820 0 : switch (TREE_CODE (_q50))
5821 : {
5822 0 : case INTEGER_CST:
5823 0 : {
5824 0 : switch (TREE_CODE (_q51))
5825 : {
5826 0 : CASE_CONVERT:
5827 0 : {
5828 0 : tree _q70 = TREE_OPERAND (_q51, 0);
5829 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
5830 : {
5831 0 : {
5832 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5833 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5834 0 : if (res) return res;
5835 : }
5836 : }
5837 : break;
5838 : }
5839 : default:;
5840 : }
5841 : break;
5842 : }
5843 : default:;
5844 : }
5845 : break;
5846 : }
5847 : default:;
5848 : }
5849 : break;
5850 : }
5851 8268157 : default:;
5852 : }
5853 8268157 : switch (TREE_CODE (_q20))
5854 : {
5855 99 : case MINUS_EXPR:
5856 99 : {
5857 99 : tree _q30 = TREE_OPERAND (_q20, 0);
5858 99 : tree _q31 = TREE_OPERAND (_q20, 1);
5859 99 : switch (TREE_CODE (_q30))
5860 : {
5861 49 : case INTEGER_CST:
5862 49 : {
5863 49 : switch (TREE_CODE (_q31))
5864 : {
5865 0 : CASE_CONVERT:
5866 0 : {
5867 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5868 0 : switch (TREE_CODE (_p1))
5869 : {
5870 0 : CASE_CONVERT:
5871 0 : {
5872 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5873 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
5874 : {
5875 0 : {
5876 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5877 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5878 0 : if (res) return res;
5879 : }
5880 : }
5881 : break;
5882 : }
5883 0 : default:;
5884 : }
5885 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
5886 : {
5887 0 : {
5888 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5889 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5890 0 : if (res) return res;
5891 : }
5892 : }
5893 : break;
5894 : }
5895 49 : default:;
5896 : }
5897 49 : switch (TREE_CODE (_p1))
5898 : {
5899 0 : CASE_CONVERT:
5900 0 : {
5901 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5902 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
5903 : {
5904 0 : {
5905 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5906 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5907 0 : if (res) return res;
5908 : }
5909 : }
5910 : break;
5911 : }
5912 49 : default:;
5913 : }
5914 49 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5915 : {
5916 0 : {
5917 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5918 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5919 0 : if (res) return res;
5920 : }
5921 : }
5922 : break;
5923 : }
5924 : default:;
5925 : }
5926 : break;
5927 : }
5928 8268157 : default:;
5929 : }
5930 8268157 : switch (TREE_CODE (_p1))
5931 : {
5932 4577619 : CASE_CONVERT:
5933 4577619 : {
5934 4577619 : tree _q40 = TREE_OPERAND (_p1, 0);
5935 4577619 : switch (TREE_CODE (_q40))
5936 : {
5937 0 : case MINUS_EXPR:
5938 0 : {
5939 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5940 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5941 0 : switch (TREE_CODE (_q50))
5942 : {
5943 0 : case INTEGER_CST:
5944 0 : {
5945 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5946 : {
5947 0 : {
5948 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5949 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5950 0 : if (res) return res;
5951 : }
5952 : }
5953 : break;
5954 : }
5955 : default:;
5956 : }
5957 : break;
5958 : }
5959 : default:;
5960 : }
5961 : break;
5962 : }
5963 21675 : case MINUS_EXPR:
5964 21675 : {
5965 21675 : tree _q40 = TREE_OPERAND (_p1, 0);
5966 21675 : tree _q41 = TREE_OPERAND (_p1, 1);
5967 21675 : switch (TREE_CODE (_q40))
5968 : {
5969 400 : case INTEGER_CST:
5970 400 : {
5971 400 : switch (TREE_CODE (_q41))
5972 : {
5973 20 : CASE_CONVERT:
5974 20 : {
5975 20 : tree _q60 = TREE_OPERAND (_q41, 0);
5976 20 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5977 : {
5978 0 : {
5979 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
5980 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5981 0 : if (res) return res;
5982 : }
5983 : }
5984 : break;
5985 : }
5986 400 : default:;
5987 : }
5988 400 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
5989 : {
5990 0 : {
5991 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
5992 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5993 0 : if (res) return res;
5994 : }
5995 : }
5996 : break;
5997 : }
5998 : default:;
5999 : }
6000 : break;
6001 : }
6002 : default:;
6003 : }
6004 : break;
6005 : }
6006 103584 : case MINUS_EXPR:
6007 103584 : {
6008 103584 : tree _q20 = TREE_OPERAND (_p0, 0);
6009 103584 : tree _q21 = TREE_OPERAND (_p0, 1);
6010 103584 : switch (TREE_CODE (_q20))
6011 : {
6012 2041 : case INTEGER_CST:
6013 2041 : {
6014 2041 : switch (TREE_CODE (_q21))
6015 : {
6016 180 : CASE_CONVERT:
6017 180 : {
6018 180 : tree _q40 = TREE_OPERAND (_q21, 0);
6019 180 : switch (TREE_CODE (_p1))
6020 : {
6021 0 : CASE_CONVERT:
6022 0 : {
6023 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6024 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6025 : {
6026 0 : {
6027 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6028 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6029 0 : if (res) return res;
6030 : }
6031 : }
6032 : break;
6033 : }
6034 180 : default:;
6035 : }
6036 180 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6037 : {
6038 0 : {
6039 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6040 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6041 0 : if (res) return res;
6042 : }
6043 : }
6044 : break;
6045 : }
6046 2041 : default:;
6047 : }
6048 2041 : switch (TREE_CODE (_p1))
6049 : {
6050 307 : CASE_CONVERT:
6051 307 : {
6052 307 : tree _q50 = TREE_OPERAND (_p1, 0);
6053 307 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6054 : {
6055 0 : {
6056 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6057 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6058 0 : if (res) return res;
6059 : }
6060 : }
6061 : break;
6062 : }
6063 2041 : default:;
6064 : }
6065 2041 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6066 : {
6067 19 : {
6068 19 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6069 19 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6070 19 : if (res) return res;
6071 : }
6072 : }
6073 : break;
6074 : }
6075 : default:;
6076 : }
6077 : break;
6078 : }
6079 37211926 : default:;
6080 : }
6081 37211926 : switch (TREE_CODE (_p1))
6082 : {
6083 4970100 : CASE_CONVERT:
6084 4970100 : {
6085 4970100 : tree _q30 = TREE_OPERAND (_p1, 0);
6086 4970100 : switch (TREE_CODE (_q30))
6087 : {
6088 556 : case MINUS_EXPR:
6089 556 : {
6090 556 : tree _q40 = TREE_OPERAND (_q30, 0);
6091 556 : tree _q41 = TREE_OPERAND (_q30, 1);
6092 556 : switch (TREE_CODE (_q40))
6093 : {
6094 17 : case INTEGER_CST:
6095 17 : {
6096 17 : switch (TREE_CODE (_q41))
6097 : {
6098 0 : CASE_CONVERT:
6099 0 : {
6100 0 : tree _q60 = TREE_OPERAND (_q41, 0);
6101 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6102 : {
6103 0 : {
6104 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6105 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6106 0 : if (res) return res;
6107 : }
6108 : }
6109 : break;
6110 : }
6111 17 : default:;
6112 : }
6113 17 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6114 : {
6115 0 : {
6116 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6117 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6118 0 : if (res) return res;
6119 : }
6120 : }
6121 : break;
6122 : }
6123 : default:;
6124 : }
6125 : break;
6126 : }
6127 : default:;
6128 : }
6129 : break;
6130 : }
6131 30204 : case MINUS_EXPR:
6132 30204 : {
6133 30204 : tree _q30 = TREE_OPERAND (_p1, 0);
6134 30204 : tree _q31 = TREE_OPERAND (_p1, 1);
6135 30204 : switch (TREE_CODE (_q30))
6136 : {
6137 602 : case INTEGER_CST:
6138 602 : {
6139 602 : switch (TREE_CODE (_q31))
6140 : {
6141 28 : CASE_CONVERT:
6142 28 : {
6143 28 : tree _q50 = TREE_OPERAND (_q31, 0);
6144 28 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6145 : {
6146 0 : {
6147 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6148 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6149 0 : if (res) return res;
6150 : }
6151 : }
6152 : break;
6153 : }
6154 602 : default:;
6155 : }
6156 602 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6157 : {
6158 0 : {
6159 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6160 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
6161 0 : if (res) return res;
6162 : }
6163 : }
6164 : break;
6165 : }
6166 : default:;
6167 : }
6168 : break;
6169 : }
6170 37211926 : default:;
6171 : }
6172 37211926 : switch (TREE_CODE (_p0))
6173 : {
6174 18271 : case LT_EXPR:
6175 18271 : {
6176 18271 : tree _q20 = TREE_OPERAND (_p0, 0);
6177 18271 : tree _q21 = TREE_OPERAND (_p0, 1);
6178 18271 : switch (TREE_CODE (_p1))
6179 : {
6180 18 : case GT_EXPR:
6181 18 : {
6182 18 : tree _q50 = TREE_OPERAND (_p1, 0);
6183 18 : tree _q51 = TREE_OPERAND (_p1, 1);
6184 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6185 : {
6186 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6187 : {
6188 0 : {
6189 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6190 0 : const enum tree_code cmp1 = LT_EXPR;
6191 0 : const enum tree_code cmp2 = GT_EXPR;
6192 0 : const enum tree_code rcmp = NE_EXPR;
6193 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6194 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6195 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6196 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6197 : )
6198 : {
6199 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1531;
6200 0 : {
6201 0 : tree res_op0;
6202 0 : res_op0 = captures[0];
6203 0 : tree res_op1;
6204 0 : res_op1 = captures[1];
6205 0 : tree _r;
6206 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6207 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6208 0 : return _r;
6209 : }
6210 0 : next_after_fail1531:;
6211 : }
6212 : }
6213 : }
6214 : }
6215 : break;
6216 : }
6217 23 : case EQ_EXPR:
6218 23 : {
6219 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6220 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6221 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6222 : {
6223 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6224 : {
6225 0 : {
6226 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6227 0 : const enum tree_code cmp1 = LT_EXPR;
6228 0 : const enum tree_code cmp2 = EQ_EXPR;
6229 0 : const enum tree_code rcmp = LE_EXPR;
6230 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6231 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6232 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6233 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6234 : )
6235 : {
6236 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1532;
6237 0 : {
6238 0 : tree res_op0;
6239 0 : res_op0 = captures[0];
6240 0 : tree res_op1;
6241 0 : res_op1 = captures[1];
6242 0 : tree _r;
6243 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6244 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6245 0 : return _r;
6246 : }
6247 0 : next_after_fail1532:;
6248 : }
6249 : }
6250 : }
6251 : }
6252 : break;
6253 : }
6254 23 : case NE_EXPR:
6255 23 : {
6256 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6257 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6258 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6259 : {
6260 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6261 : {
6262 0 : {
6263 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6264 0 : const enum tree_code cmp1 = LT_EXPR;
6265 0 : const enum tree_code cmp2 = NE_EXPR;
6266 0 : const enum tree_code rcmp = GT_EXPR;
6267 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6268 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6269 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6270 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6271 : )
6272 : {
6273 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1533;
6274 0 : {
6275 0 : tree res_op0;
6276 0 : res_op0 = captures[0];
6277 0 : tree res_op1;
6278 0 : res_op1 = captures[1];
6279 0 : tree _r;
6280 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6281 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6282 0 : return _r;
6283 : }
6284 0 : next_after_fail1533:;
6285 : }
6286 : }
6287 : }
6288 : }
6289 : break;
6290 : }
6291 : default:;
6292 : }
6293 : break;
6294 : }
6295 12003 : case LE_EXPR:
6296 12003 : {
6297 12003 : tree _q20 = TREE_OPERAND (_p0, 0);
6298 12003 : tree _q21 = TREE_OPERAND (_p0, 1);
6299 12003 : switch (TREE_CODE (_p1))
6300 : {
6301 25 : case GE_EXPR:
6302 25 : {
6303 25 : tree _q50 = TREE_OPERAND (_p1, 0);
6304 25 : tree _q51 = TREE_OPERAND (_p1, 1);
6305 25 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6306 : {
6307 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6308 : {
6309 0 : {
6310 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6311 0 : const enum tree_code cmp1 = LE_EXPR;
6312 0 : const enum tree_code cmp2 = GE_EXPR;
6313 0 : const enum tree_code rcmp = NE_EXPR;
6314 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6315 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6316 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6317 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6318 : )
6319 : {
6320 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1534;
6321 0 : {
6322 0 : tree res_op0;
6323 0 : res_op0 = captures[0];
6324 0 : tree res_op1;
6325 0 : res_op1 = captures[1];
6326 0 : tree _r;
6327 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6328 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6329 0 : return _r;
6330 : }
6331 0 : next_after_fail1534:;
6332 : }
6333 : }
6334 : }
6335 : }
6336 : break;
6337 : }
6338 41 : case EQ_EXPR:
6339 41 : {
6340 41 : tree _q50 = TREE_OPERAND (_p1, 0);
6341 41 : tree _q51 = TREE_OPERAND (_p1, 1);
6342 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6343 : {
6344 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6345 : {
6346 0 : {
6347 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6348 0 : const enum tree_code cmp1 = LE_EXPR;
6349 0 : const enum tree_code cmp2 = EQ_EXPR;
6350 0 : const enum tree_code rcmp = LT_EXPR;
6351 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6352 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6353 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6354 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6355 : )
6356 : {
6357 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1535;
6358 0 : {
6359 0 : tree res_op0;
6360 0 : res_op0 = captures[0];
6361 0 : tree res_op1;
6362 0 : res_op1 = captures[1];
6363 0 : tree _r;
6364 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6365 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6366 0 : return _r;
6367 : }
6368 0 : next_after_fail1535:;
6369 : }
6370 : }
6371 : }
6372 : }
6373 : break;
6374 : }
6375 13 : case NE_EXPR:
6376 13 : {
6377 13 : tree _q50 = TREE_OPERAND (_p1, 0);
6378 13 : tree _q51 = TREE_OPERAND (_p1, 1);
6379 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6380 : {
6381 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6382 : {
6383 0 : {
6384 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6385 0 : const enum tree_code cmp1 = LE_EXPR;
6386 0 : const enum tree_code cmp2 = NE_EXPR;
6387 0 : const enum tree_code rcmp = GE_EXPR;
6388 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6389 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6390 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6391 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6392 : )
6393 : {
6394 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1536;
6395 0 : {
6396 0 : tree res_op0;
6397 0 : res_op0 = captures[0];
6398 0 : tree res_op1;
6399 0 : res_op1 = captures[1];
6400 0 : tree _r;
6401 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6402 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6403 0 : return _r;
6404 : }
6405 0 : next_after_fail1536:;
6406 : }
6407 : }
6408 : }
6409 : }
6410 : break;
6411 : }
6412 : default:;
6413 : }
6414 : break;
6415 : }
6416 35796 : case GT_EXPR:
6417 35796 : {
6418 35796 : tree _q20 = TREE_OPERAND (_p0, 0);
6419 35796 : tree _q21 = TREE_OPERAND (_p0, 1);
6420 35796 : switch (TREE_CODE (_p1))
6421 : {
6422 77 : case GT_EXPR:
6423 77 : {
6424 77 : tree _q50 = TREE_OPERAND (_p1, 0);
6425 77 : tree _q51 = TREE_OPERAND (_p1, 1);
6426 77 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6427 : {
6428 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6429 : {
6430 0 : {
6431 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6432 0 : const enum tree_code cmp1 = LT_EXPR;
6433 0 : const enum tree_code cmp2 = GT_EXPR;
6434 0 : const enum tree_code rcmp = NE_EXPR;
6435 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6436 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6437 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6438 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6439 : )
6440 : {
6441 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1537;
6442 0 : {
6443 0 : tree res_op0;
6444 0 : res_op0 = captures[0];
6445 0 : tree res_op1;
6446 0 : res_op1 = captures[1];
6447 0 : tree _r;
6448 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6449 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6450 0 : return _r;
6451 : }
6452 0 : next_after_fail1537:;
6453 : }
6454 : }
6455 0 : {
6456 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6457 0 : const enum tree_code cmp1 = LT_EXPR;
6458 0 : const enum tree_code cmp2 = GT_EXPR;
6459 0 : const enum tree_code rcmp = NE_EXPR;
6460 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6461 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6462 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6463 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6464 : )
6465 : {
6466 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1538;
6467 0 : {
6468 0 : tree res_op0;
6469 0 : res_op0 = captures[0];
6470 0 : tree res_op1;
6471 0 : res_op1 = captures[1];
6472 0 : tree _r;
6473 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6474 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6475 0 : return _r;
6476 : }
6477 0 : next_after_fail1538:;
6478 : }
6479 : }
6480 : }
6481 : }
6482 : break;
6483 : }
6484 29 : case EQ_EXPR:
6485 29 : {
6486 29 : tree _q50 = TREE_OPERAND (_p1, 0);
6487 29 : tree _q51 = TREE_OPERAND (_p1, 1);
6488 29 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6489 : {
6490 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6491 : {
6492 0 : {
6493 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6494 0 : const enum tree_code cmp1 = LT_EXPR;
6495 0 : const enum tree_code cmp2 = EQ_EXPR;
6496 0 : const enum tree_code rcmp = LE_EXPR;
6497 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6498 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6499 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6500 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6501 : )
6502 : {
6503 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1539;
6504 0 : {
6505 0 : tree res_op0;
6506 0 : res_op0 = captures[0];
6507 0 : tree res_op1;
6508 0 : res_op1 = captures[1];
6509 0 : tree _r;
6510 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6511 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6512 0 : return _r;
6513 : }
6514 0 : next_after_fail1539:;
6515 : }
6516 : }
6517 : }
6518 : }
6519 : break;
6520 : }
6521 53 : case NE_EXPR:
6522 53 : {
6523 53 : tree _q50 = TREE_OPERAND (_p1, 0);
6524 53 : tree _q51 = TREE_OPERAND (_p1, 1);
6525 53 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6526 : {
6527 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6528 : {
6529 0 : {
6530 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6531 0 : const enum tree_code cmp1 = LT_EXPR;
6532 0 : const enum tree_code cmp2 = NE_EXPR;
6533 0 : const enum tree_code rcmp = GT_EXPR;
6534 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6535 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6536 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6537 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6538 : )
6539 : {
6540 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1540;
6541 0 : {
6542 0 : tree res_op0;
6543 0 : res_op0 = captures[0];
6544 0 : tree res_op1;
6545 0 : res_op1 = captures[1];
6546 0 : tree _r;
6547 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6548 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6549 0 : return _r;
6550 : }
6551 0 : next_after_fail1540:;
6552 : }
6553 : }
6554 : }
6555 : }
6556 : break;
6557 : }
6558 32 : case LT_EXPR:
6559 32 : {
6560 32 : tree _q50 = TREE_OPERAND (_p1, 0);
6561 32 : tree _q51 = TREE_OPERAND (_p1, 1);
6562 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6563 : {
6564 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6565 : {
6566 0 : {
6567 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6568 0 : const enum tree_code cmp1 = LT_EXPR;
6569 0 : const enum tree_code cmp2 = GT_EXPR;
6570 0 : const enum tree_code rcmp = NE_EXPR;
6571 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6572 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6573 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6574 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6575 : )
6576 : {
6577 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1541;
6578 0 : {
6579 0 : tree res_op0;
6580 0 : res_op0 = captures[0];
6581 0 : tree res_op1;
6582 0 : res_op1 = captures[1];
6583 0 : tree _r;
6584 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6585 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6586 0 : return _r;
6587 : }
6588 0 : next_after_fail1541:;
6589 : }
6590 : }
6591 : }
6592 : }
6593 : break;
6594 : }
6595 : default:;
6596 : }
6597 : break;
6598 : }
6599 6127 : case GE_EXPR:
6600 6127 : {
6601 6127 : tree _q20 = TREE_OPERAND (_p0, 0);
6602 6127 : tree _q21 = TREE_OPERAND (_p0, 1);
6603 6127 : switch (TREE_CODE (_p1))
6604 : {
6605 76 : case GE_EXPR:
6606 76 : {
6607 76 : tree _q50 = TREE_OPERAND (_p1, 0);
6608 76 : tree _q51 = TREE_OPERAND (_p1, 1);
6609 76 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6610 : {
6611 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6612 : {
6613 0 : {
6614 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6615 0 : const enum tree_code cmp1 = LE_EXPR;
6616 0 : const enum tree_code cmp2 = GE_EXPR;
6617 0 : const enum tree_code rcmp = NE_EXPR;
6618 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6619 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6620 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6621 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6622 : )
6623 : {
6624 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1542;
6625 0 : {
6626 0 : tree res_op0;
6627 0 : res_op0 = captures[0];
6628 0 : tree res_op1;
6629 0 : res_op1 = captures[1];
6630 0 : tree _r;
6631 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6632 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6633 0 : return _r;
6634 : }
6635 0 : next_after_fail1542:;
6636 : }
6637 : }
6638 0 : {
6639 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6640 0 : const enum tree_code cmp1 = LE_EXPR;
6641 0 : const enum tree_code cmp2 = GE_EXPR;
6642 0 : const enum tree_code rcmp = NE_EXPR;
6643 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6644 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6645 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6646 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6647 : )
6648 : {
6649 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1543;
6650 0 : {
6651 0 : tree res_op0;
6652 0 : res_op0 = captures[0];
6653 0 : tree res_op1;
6654 0 : res_op1 = captures[1];
6655 0 : tree _r;
6656 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6657 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6658 0 : return _r;
6659 : }
6660 0 : next_after_fail1543:;
6661 : }
6662 : }
6663 : }
6664 : }
6665 : break;
6666 : }
6667 52 : case EQ_EXPR:
6668 52 : {
6669 52 : tree _q50 = TREE_OPERAND (_p1, 0);
6670 52 : tree _q51 = TREE_OPERAND (_p1, 1);
6671 52 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6672 : {
6673 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6674 : {
6675 0 : {
6676 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6677 0 : const enum tree_code cmp1 = LE_EXPR;
6678 0 : const enum tree_code cmp2 = EQ_EXPR;
6679 0 : const enum tree_code rcmp = LT_EXPR;
6680 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6681 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6682 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6683 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6684 : )
6685 : {
6686 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1544;
6687 0 : {
6688 0 : tree res_op0;
6689 0 : res_op0 = captures[0];
6690 0 : tree res_op1;
6691 0 : res_op1 = captures[1];
6692 0 : tree _r;
6693 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6695 0 : return _r;
6696 : }
6697 0 : next_after_fail1544:;
6698 : }
6699 : }
6700 : }
6701 : }
6702 : break;
6703 : }
6704 11 : case NE_EXPR:
6705 11 : {
6706 11 : tree _q50 = TREE_OPERAND (_p1, 0);
6707 11 : tree _q51 = TREE_OPERAND (_p1, 1);
6708 11 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6709 : {
6710 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6711 : {
6712 0 : {
6713 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6714 0 : const enum tree_code cmp1 = LE_EXPR;
6715 0 : const enum tree_code cmp2 = NE_EXPR;
6716 0 : const enum tree_code rcmp = GE_EXPR;
6717 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6718 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6719 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6720 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6721 : )
6722 : {
6723 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1545;
6724 0 : {
6725 0 : tree res_op0;
6726 0 : res_op0 = captures[0];
6727 0 : tree res_op1;
6728 0 : res_op1 = captures[1];
6729 0 : tree _r;
6730 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6731 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6732 0 : return _r;
6733 : }
6734 0 : next_after_fail1545:;
6735 : }
6736 : }
6737 : }
6738 : }
6739 : break;
6740 : }
6741 16 : case LE_EXPR:
6742 16 : {
6743 16 : tree _q50 = TREE_OPERAND (_p1, 0);
6744 16 : tree _q51 = TREE_OPERAND (_p1, 1);
6745 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6746 : {
6747 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6748 : {
6749 0 : {
6750 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6751 0 : const enum tree_code cmp1 = LE_EXPR;
6752 0 : const enum tree_code cmp2 = GE_EXPR;
6753 0 : const enum tree_code rcmp = NE_EXPR;
6754 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6755 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6756 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6757 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6758 : )
6759 : {
6760 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1546;
6761 0 : {
6762 0 : tree res_op0;
6763 0 : res_op0 = captures[0];
6764 0 : tree res_op1;
6765 0 : res_op1 = captures[1];
6766 0 : tree _r;
6767 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6768 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6769 0 : return _r;
6770 : }
6771 0 : next_after_fail1546:;
6772 : }
6773 : }
6774 : }
6775 : }
6776 : break;
6777 : }
6778 : default:;
6779 : }
6780 : break;
6781 : }
6782 63865 : case EQ_EXPR:
6783 63865 : {
6784 63865 : tree _q20 = TREE_OPERAND (_p0, 0);
6785 63865 : tree _q21 = TREE_OPERAND (_p0, 1);
6786 63865 : switch (TREE_CODE (_p1))
6787 : {
6788 5 : case LT_EXPR:
6789 5 : {
6790 5 : tree _q50 = TREE_OPERAND (_p1, 0);
6791 5 : tree _q51 = TREE_OPERAND (_p1, 1);
6792 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6793 : {
6794 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6795 : {
6796 0 : {
6797 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6798 0 : const enum tree_code cmp1 = LT_EXPR;
6799 0 : const enum tree_code cmp2 = EQ_EXPR;
6800 0 : const enum tree_code rcmp = LE_EXPR;
6801 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6802 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6803 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6804 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6805 : )
6806 : {
6807 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1547;
6808 0 : {
6809 0 : tree res_op0;
6810 0 : res_op0 = captures[0];
6811 0 : tree res_op1;
6812 0 : res_op1 = captures[1];
6813 0 : tree _r;
6814 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6815 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6816 0 : return _r;
6817 : }
6818 0 : next_after_fail1547:;
6819 : }
6820 : }
6821 : }
6822 : }
6823 : break;
6824 : }
6825 42 : case LE_EXPR:
6826 42 : {
6827 42 : tree _q50 = TREE_OPERAND (_p1, 0);
6828 42 : tree _q51 = TREE_OPERAND (_p1, 1);
6829 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6830 : {
6831 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6832 : {
6833 0 : {
6834 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6835 0 : const enum tree_code cmp1 = LE_EXPR;
6836 0 : const enum tree_code cmp2 = EQ_EXPR;
6837 0 : const enum tree_code rcmp = LT_EXPR;
6838 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6839 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6840 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6841 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6842 : )
6843 : {
6844 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1548;
6845 0 : {
6846 0 : tree res_op0;
6847 0 : res_op0 = captures[0];
6848 0 : tree res_op1;
6849 0 : res_op1 = captures[1];
6850 0 : tree _r;
6851 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6852 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6853 0 : return _r;
6854 : }
6855 0 : next_after_fail1548:;
6856 : }
6857 : }
6858 : }
6859 : }
6860 : break;
6861 : }
6862 7 : case GT_EXPR:
6863 7 : {
6864 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6865 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6866 7 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6867 : {
6868 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6869 : {
6870 0 : {
6871 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6872 0 : const enum tree_code cmp1 = LT_EXPR;
6873 0 : const enum tree_code cmp2 = EQ_EXPR;
6874 0 : const enum tree_code rcmp = LE_EXPR;
6875 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6876 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6877 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6878 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6879 : )
6880 : {
6881 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1549;
6882 0 : {
6883 0 : tree res_op0;
6884 0 : res_op0 = captures[0];
6885 0 : tree res_op1;
6886 0 : res_op1 = captures[1];
6887 0 : tree _r;
6888 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6889 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6890 0 : return _r;
6891 : }
6892 0 : next_after_fail1549:;
6893 : }
6894 : }
6895 : }
6896 : }
6897 : break;
6898 : }
6899 14 : case GE_EXPR:
6900 14 : {
6901 14 : tree _q50 = TREE_OPERAND (_p1, 0);
6902 14 : tree _q51 = TREE_OPERAND (_p1, 1);
6903 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6904 : {
6905 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6906 : {
6907 0 : {
6908 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6909 0 : const enum tree_code cmp1 = LE_EXPR;
6910 0 : const enum tree_code cmp2 = EQ_EXPR;
6911 0 : const enum tree_code rcmp = LT_EXPR;
6912 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6913 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6914 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6915 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6916 : )
6917 : {
6918 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1550;
6919 0 : {
6920 0 : tree res_op0;
6921 0 : res_op0 = captures[0];
6922 0 : tree res_op1;
6923 0 : res_op1 = captures[1];
6924 0 : tree _r;
6925 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6926 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6927 0 : return _r;
6928 : }
6929 0 : next_after_fail1550:;
6930 : }
6931 : }
6932 : }
6933 : }
6934 : break;
6935 : }
6936 : default:;
6937 : }
6938 : break;
6939 : }
6940 69294 : case NE_EXPR:
6941 69294 : {
6942 69294 : tree _q20 = TREE_OPERAND (_p0, 0);
6943 69294 : tree _q21 = TREE_OPERAND (_p0, 1);
6944 69294 : switch (TREE_CODE (_p1))
6945 : {
6946 7 : case LT_EXPR:
6947 7 : {
6948 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6949 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6950 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6951 : {
6952 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6953 : {
6954 0 : {
6955 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6956 0 : const enum tree_code cmp1 = LT_EXPR;
6957 0 : const enum tree_code cmp2 = NE_EXPR;
6958 0 : const enum tree_code rcmp = GT_EXPR;
6959 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6960 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6961 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6962 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6963 : )
6964 : {
6965 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1551;
6966 0 : {
6967 0 : tree res_op0;
6968 0 : res_op0 = captures[0];
6969 0 : tree res_op1;
6970 0 : res_op1 = captures[1];
6971 0 : tree _r;
6972 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6973 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6974 0 : return _r;
6975 : }
6976 0 : next_after_fail1551:;
6977 : }
6978 : }
6979 : }
6980 : }
6981 : break;
6982 : }
6983 302 : case LE_EXPR:
6984 302 : {
6985 302 : tree _q50 = TREE_OPERAND (_p1, 0);
6986 302 : tree _q51 = TREE_OPERAND (_p1, 1);
6987 302 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6988 : {
6989 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6990 : {
6991 0 : {
6992 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6993 0 : const enum tree_code cmp1 = LE_EXPR;
6994 0 : const enum tree_code cmp2 = NE_EXPR;
6995 0 : const enum tree_code rcmp = GE_EXPR;
6996 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6997 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6998 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6999 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7000 : )
7001 : {
7002 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1552;
7003 0 : {
7004 0 : tree res_op0;
7005 0 : res_op0 = captures[0];
7006 0 : tree res_op1;
7007 0 : res_op1 = captures[1];
7008 0 : tree _r;
7009 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7010 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
7011 0 : return _r;
7012 : }
7013 0 : next_after_fail1552:;
7014 : }
7015 : }
7016 : }
7017 : }
7018 : break;
7019 : }
7020 323 : case GT_EXPR:
7021 323 : {
7022 323 : tree _q50 = TREE_OPERAND (_p1, 0);
7023 323 : tree _q51 = TREE_OPERAND (_p1, 1);
7024 323 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7025 : {
7026 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7027 : {
7028 0 : {
7029 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7030 0 : const enum tree_code cmp1 = LT_EXPR;
7031 0 : const enum tree_code cmp2 = NE_EXPR;
7032 0 : const enum tree_code rcmp = GT_EXPR;
7033 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7034 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7035 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7036 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7037 : )
7038 : {
7039 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1553;
7040 0 : {
7041 0 : tree res_op0;
7042 0 : res_op0 = captures[0];
7043 0 : tree res_op1;
7044 0 : res_op1 = captures[1];
7045 0 : tree _r;
7046 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7047 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
7048 0 : return _r;
7049 : }
7050 0 : next_after_fail1553:;
7051 : }
7052 : }
7053 : }
7054 : }
7055 : break;
7056 : }
7057 2 : case GE_EXPR:
7058 2 : {
7059 2 : tree _q50 = TREE_OPERAND (_p1, 0);
7060 2 : tree _q51 = TREE_OPERAND (_p1, 1);
7061 2 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7062 : {
7063 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7064 : {
7065 0 : {
7066 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7067 0 : const enum tree_code cmp1 = LE_EXPR;
7068 0 : const enum tree_code cmp2 = NE_EXPR;
7069 0 : const enum tree_code rcmp = GE_EXPR;
7070 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7071 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7072 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7073 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7074 : )
7075 : {
7076 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1554;
7077 0 : {
7078 0 : tree res_op0;
7079 0 : res_op0 = captures[0];
7080 0 : tree res_op1;
7081 0 : res_op1 = captures[1];
7082 0 : tree _r;
7083 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7084 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
7085 0 : return _r;
7086 : }
7087 0 : next_after_fail1554:;
7088 : }
7089 : }
7090 : }
7091 : }
7092 : break;
7093 : }
7094 : default:;
7095 : }
7096 : break;
7097 : }
7098 8267 : case MIN_EXPR:
7099 8267 : {
7100 8267 : tree _q20 = TREE_OPERAND (_p0, 0);
7101 8267 : tree _q21 = TREE_OPERAND (_p0, 1);
7102 8267 : switch (TREE_CODE (_p1))
7103 : {
7104 0 : case MAX_EXPR:
7105 0 : {
7106 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7107 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7108 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7109 : {
7110 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7111 : {
7112 0 : {
7113 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7114 0 : if (!HONOR_NANS (captures[0])
7115 : )
7116 : {
7117 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1555;
7118 0 : {
7119 0 : tree res_op0;
7120 0 : res_op0 = captures[0];
7121 0 : tree res_op1;
7122 0 : res_op1 = captures[1];
7123 0 : tree _r;
7124 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7125 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
7126 0 : return _r;
7127 : }
7128 0 : next_after_fail1555:;
7129 : }
7130 : }
7131 : }
7132 : }
7133 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7134 : {
7135 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7136 : {
7137 0 : {
7138 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7139 0 : if (!HONOR_NANS (captures[0])
7140 : )
7141 : {
7142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1556;
7143 0 : {
7144 0 : tree res_op0;
7145 0 : res_op0 = captures[0];
7146 0 : tree res_op1;
7147 0 : res_op1 = captures[1];
7148 0 : tree _r;
7149 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7150 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
7151 0 : return _r;
7152 : }
7153 0 : next_after_fail1556:;
7154 : }
7155 : }
7156 : }
7157 : }
7158 : break;
7159 : }
7160 8267 : default:;
7161 : }
7162 8267 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7163 : {
7164 0 : {
7165 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7166 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7167 0 : if (res) return res;
7168 : }
7169 : }
7170 8267 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7171 : {
7172 616 : {
7173 616 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7174 616 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7175 616 : if (res) return res;
7176 : }
7177 : }
7178 : break;
7179 : }
7180 7840 : case MAX_EXPR:
7181 7840 : {
7182 7840 : tree _q20 = TREE_OPERAND (_p0, 0);
7183 7840 : tree _q21 = TREE_OPERAND (_p0, 1);
7184 7840 : switch (TREE_CODE (_p1))
7185 : {
7186 0 : case MIN_EXPR:
7187 0 : {
7188 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7189 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7190 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7191 : {
7192 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7193 : {
7194 0 : {
7195 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7196 0 : if (!HONOR_NANS (captures[0])
7197 : )
7198 : {
7199 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1557;
7200 0 : {
7201 0 : tree res_op0;
7202 0 : res_op0 = captures[0];
7203 0 : tree res_op1;
7204 0 : res_op1 = captures[1];
7205 0 : tree _r;
7206 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7207 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
7208 0 : return _r;
7209 : }
7210 0 : next_after_fail1557:;
7211 : }
7212 : }
7213 : }
7214 : }
7215 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7216 : {
7217 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7218 : {
7219 0 : {
7220 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7221 0 : if (!HONOR_NANS (captures[0])
7222 : )
7223 : {
7224 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1558;
7225 0 : {
7226 0 : tree res_op0;
7227 0 : res_op0 = captures[0];
7228 0 : tree res_op1;
7229 0 : res_op1 = captures[1];
7230 0 : tree _r;
7231 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7232 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
7233 0 : return _r;
7234 : }
7235 0 : next_after_fail1558:;
7236 : }
7237 : }
7238 : }
7239 : }
7240 : break;
7241 : }
7242 7840 : default:;
7243 : }
7244 7840 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7245 : {
7246 0 : {
7247 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7248 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7249 0 : if (res) return res;
7250 : }
7251 : }
7252 7840 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7253 : {
7254 425 : {
7255 425 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7256 425 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7257 425 : if (res) return res;
7258 : }
7259 : }
7260 : break;
7261 : }
7262 37211797 : default:;
7263 : }
7264 37211797 : if (tree_with_possible_nonzero_bits (_p0))
7265 : {
7266 15413172 : if (tree_with_known_nonzero_bits (_p1))
7267 : {
7268 13970640 : {
7269 13970640 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7270 13970640 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
7271 13970640 : if (res) return res;
7272 : }
7273 : }
7274 : }
7275 37154855 : if (tree_with_known_nonzero_bits (_p0))
7276 : {
7277 11350952 : if (tree_with_possible_nonzero_bits (_p1))
7278 : {
7279 11300673 : {
7280 11300673 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
7281 11300673 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
7282 11300673 : if (res) return res;
7283 : }
7284 : }
7285 : }
7286 37153469 : switch (TREE_CODE (_p1))
7287 : {
7288 144 : case MIN_EXPR:
7289 144 : {
7290 144 : tree _q30 = TREE_OPERAND (_p1, 0);
7291 144 : tree _q31 = TREE_OPERAND (_p1, 1);
7292 144 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7293 : {
7294 0 : {
7295 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7296 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7297 0 : if (res) return res;
7298 : }
7299 : }
7300 144 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7301 : {
7302 0 : {
7303 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7304 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7305 0 : if (res) return res;
7306 : }
7307 : }
7308 : break;
7309 : }
7310 1632 : case MAX_EXPR:
7311 1632 : {
7312 1632 : tree _q30 = TREE_OPERAND (_p1, 0);
7313 1632 : tree _q31 = TREE_OPERAND (_p1, 1);
7314 1632 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7315 : {
7316 0 : {
7317 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7318 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7319 0 : if (res) return res;
7320 : }
7321 : }
7322 1632 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7323 : {
7324 0 : {
7325 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7326 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7327 0 : if (res) return res;
7328 : }
7329 : }
7330 : break;
7331 : }
7332 37153469 : default:;
7333 : }
7334 37153469 : switch (TREE_CODE (_p0))
7335 : {
7336 8267 : case MIN_EXPR:
7337 8267 : {
7338 8267 : tree _q20 = TREE_OPERAND (_p0, 0);
7339 8267 : tree _q21 = TREE_OPERAND (_p0, 1);
7340 8267 : switch (TREE_CODE (_q21))
7341 : {
7342 674 : case INTEGER_CST:
7343 674 : {
7344 674 : switch (TREE_CODE (_p1))
7345 : {
7346 0 : case INTEGER_CST:
7347 0 : {
7348 0 : {
7349 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7350 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
7351 0 : if (res) return res;
7352 : }
7353 0 : break;
7354 : }
7355 : default:;
7356 : }
7357 : break;
7358 : }
7359 : default:;
7360 : }
7361 : break;
7362 : }
7363 7711 : case MAX_EXPR:
7364 7711 : {
7365 7711 : tree _q20 = TREE_OPERAND (_p0, 0);
7366 7711 : tree _q21 = TREE_OPERAND (_p0, 1);
7367 7711 : switch (TREE_CODE (_q21))
7368 : {
7369 6658 : case INTEGER_CST:
7370 6658 : {
7371 6658 : switch (TREE_CODE (_p1))
7372 : {
7373 684 : case INTEGER_CST:
7374 684 : {
7375 684 : {
7376 684 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7377 684 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, NE_EXPR);
7378 684 : if (res) return res;
7379 : }
7380 0 : break;
7381 : }
7382 : default:;
7383 : }
7384 : break;
7385 : }
7386 7027 : default:;
7387 : }
7388 7027 : if (integer_zerop (_p1))
7389 : {
7390 34 : {
7391 34 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7392 34 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, NE_EXPR);
7393 34 : if (res) return res;
7394 : }
7395 : }
7396 : break;
7397 : }
7398 1261508 : case BIT_AND_EXPR:
7399 1261508 : {
7400 1261508 : tree _q20 = TREE_OPERAND (_p0, 0);
7401 1261508 : tree _q21 = TREE_OPERAND (_p0, 1);
7402 1261508 : switch (TREE_CODE (_q20))
7403 : {
7404 3607 : case LSHIFT_EXPR:
7405 3607 : {
7406 3607 : tree _q30 = TREE_OPERAND (_q20, 0);
7407 3607 : tree _q31 = TREE_OPERAND (_q20, 1);
7408 3607 : if (integer_pow2p (_q30))
7409 : {
7410 3587 : if (integer_pow2p (_q21))
7411 : {
7412 5 : if (integer_zerop (_p1))
7413 : {
7414 5 : {
7415 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7416 5 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7417 5 : if (res) return res;
7418 : }
7419 : }
7420 : }
7421 : }
7422 3602 : switch (TREE_CODE (_q31))
7423 : {
7424 13 : case INTEGER_CST:
7425 13 : {
7426 13 : switch (TREE_CODE (_q21))
7427 : {
7428 13 : case INTEGER_CST:
7429 13 : {
7430 13 : switch (TREE_CODE (_p1))
7431 : {
7432 13 : case INTEGER_CST:
7433 13 : {
7434 13 : {
7435 13 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7436 13 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR);
7437 13 : if (res) return res;
7438 : }
7439 0 : break;
7440 : }
7441 : default:;
7442 : }
7443 : break;
7444 : }
7445 : default:;
7446 : }
7447 : break;
7448 : }
7449 3589 : default:;
7450 : }
7451 3589 : if (integer_onep (_q30))
7452 : {
7453 3581 : if (integer_pow2p (_q21))
7454 : {
7455 0 : if (integer_zerop (_p1))
7456 : {
7457 0 : {
7458 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
7459 0 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7460 0 : if (res) return res;
7461 : }
7462 : }
7463 : }
7464 : }
7465 : break;
7466 : }
7467 4796 : case RSHIFT_EXPR:
7468 4796 : {
7469 4796 : tree _q30 = TREE_OPERAND (_q20, 0);
7470 4796 : tree _q31 = TREE_OPERAND (_q20, 1);
7471 4796 : if (integer_pow2p (_q30))
7472 : {
7473 33 : if (integer_pow2p (_q21))
7474 : {
7475 1 : if (integer_zerop (_p1))
7476 : {
7477 1 : {
7478 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7479 1 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7480 1 : if (res) return res;
7481 : }
7482 : }
7483 : }
7484 : }
7485 4795 : switch (TREE_CODE (_q31))
7486 : {
7487 329 : case INTEGER_CST:
7488 329 : {
7489 329 : switch (TREE_CODE (_q21))
7490 : {
7491 305 : case INTEGER_CST:
7492 305 : {
7493 305 : switch (TREE_CODE (_p1))
7494 : {
7495 280 : case INTEGER_CST:
7496 280 : {
7497 280 : {
7498 280 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7499 280 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, NE_EXPR);
7500 280 : if (res) return res;
7501 : }
7502 14 : break;
7503 : }
7504 : default:;
7505 : }
7506 : break;
7507 : }
7508 : default:;
7509 : }
7510 : break;
7511 : }
7512 : default:;
7513 : }
7514 : break;
7515 : }
7516 1261223 : default:;
7517 : }
7518 1261223 : {
7519 1261223 : tree _q20_pops[1];
7520 1261223 : if (tree_nop_convert (_q20, _q20_pops))
7521 : {
7522 137519 : tree _q30 = _q20_pops[0];
7523 137519 : switch (TREE_CODE (_q30))
7524 : {
7525 37188 : case LSHIFT_EXPR:
7526 37188 : {
7527 37188 : tree _q40 = TREE_OPERAND (_q30, 0);
7528 37188 : tree _q41 = TREE_OPERAND (_q30, 1);
7529 37188 : if (integer_onep (_q40))
7530 : {
7531 37188 : if (integer_pow2p (_q21))
7532 : {
7533 0 : if (integer_zerop (_p1))
7534 : {
7535 0 : {
7536 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
7537 0 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7538 0 : if (res) return res;
7539 : }
7540 : }
7541 : }
7542 : }
7543 : break;
7544 : }
7545 : default:;
7546 : }
7547 : }
7548 : }
7549 1261223 : break;
7550 : }
7551 5134 : case LSHIFT_EXPR:
7552 5134 : {
7553 5134 : tree _q20 = TREE_OPERAND (_p0, 0);
7554 5134 : tree _q21 = TREE_OPERAND (_p0, 1);
7555 5134 : switch (TREE_CODE (_q20))
7556 : {
7557 536 : case INTEGER_CST:
7558 536 : {
7559 536 : switch (TREE_CODE (_p1))
7560 : {
7561 159 : case INTEGER_CST:
7562 159 : {
7563 159 : {
7564 159 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7565 159 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR);
7566 159 : if (res) return res;
7567 : }
7568 88 : break;
7569 : }
7570 : default:;
7571 : }
7572 : break;
7573 : }
7574 : default:;
7575 : }
7576 : break;
7577 : }
7578 393 : case LROTATE_EXPR:
7579 393 : {
7580 393 : tree _q20 = TREE_OPERAND (_p0, 0);
7581 393 : tree _q21 = TREE_OPERAND (_p0, 1);
7582 393 : switch (TREE_CODE (_p1))
7583 : {
7584 0 : case LROTATE_EXPR:
7585 0 : {
7586 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7587 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7588 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7589 : {
7590 0 : {
7591 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7592 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7593 0 : if (res) return res;
7594 : }
7595 : }
7596 : break;
7597 : }
7598 393 : default:;
7599 : }
7600 393 : switch (TREE_CODE (_q21))
7601 : {
7602 112 : case INTEGER_CST:
7603 112 : {
7604 112 : switch (TREE_CODE (_p1))
7605 : {
7606 112 : case INTEGER_CST:
7607 112 : {
7608 112 : {
7609 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7610 112 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7611 112 : if (res) return res;
7612 : }
7613 0 : break;
7614 : }
7615 : default:;
7616 : }
7617 : break;
7618 : }
7619 281 : default:;
7620 : }
7621 281 : switch (TREE_CODE (_p1))
7622 : {
7623 193 : case INTEGER_CST:
7624 193 : {
7625 193 : {
7626 193 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7627 193 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7628 193 : if (res) return res;
7629 : }
7630 193 : break;
7631 : }
7632 : default:;
7633 : }
7634 : break;
7635 : }
7636 439 : case RROTATE_EXPR:
7637 439 : {
7638 439 : tree _q20 = TREE_OPERAND (_p0, 0);
7639 439 : tree _q21 = TREE_OPERAND (_p0, 1);
7640 439 : switch (TREE_CODE (_p1))
7641 : {
7642 0 : case RROTATE_EXPR:
7643 0 : {
7644 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7645 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7646 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7647 : {
7648 0 : {
7649 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7650 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7651 0 : if (res) return res;
7652 : }
7653 : }
7654 : break;
7655 : }
7656 439 : default:;
7657 : }
7658 439 : switch (TREE_CODE (_q21))
7659 : {
7660 233 : case INTEGER_CST:
7661 233 : {
7662 233 : switch (TREE_CODE (_p1))
7663 : {
7664 12 : case INTEGER_CST:
7665 12 : {
7666 12 : {
7667 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7668 12 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7669 12 : if (res) return res;
7670 : }
7671 0 : break;
7672 : }
7673 : default:;
7674 : }
7675 : break;
7676 : }
7677 427 : default:;
7678 : }
7679 427 : switch (TREE_CODE (_p1))
7680 : {
7681 190 : case INTEGER_CST:
7682 190 : {
7683 190 : {
7684 190 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7685 190 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7686 190 : if (res) return res;
7687 : }
7688 190 : break;
7689 : }
7690 : default:;
7691 : }
7692 : break;
7693 : }
7694 268 : case VEC_COND_EXPR:
7695 268 : {
7696 268 : tree _q20 = TREE_OPERAND (_p0, 0);
7697 268 : tree _q21 = TREE_OPERAND (_p0, 1);
7698 268 : tree _q22 = TREE_OPERAND (_p0, 2);
7699 268 : switch (TREE_CODE (_p1))
7700 : {
7701 8 : case VEC_COND_EXPR:
7702 8 : {
7703 8 : tree _q60 = TREE_OPERAND (_p1, 0);
7704 8 : tree _q61 = TREE_OPERAND (_p1, 1);
7705 8 : tree _q62 = TREE_OPERAND (_p1, 2);
7706 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7707 : {
7708 0 : {
7709 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7710 0 : if (VECTOR_TYPE_P (type)
7711 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7712 0 : || types_match (type, TREE_TYPE (captures[2]))
7713 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7714 : || (optimize_vectors_before_lowering_p ()
7715 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7716 : )
7717 : {
7718 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1559;
7719 0 : {
7720 0 : tree res_op0;
7721 0 : res_op0 = captures[1];
7722 0 : tree res_op1;
7723 0 : {
7724 0 : tree _o1[2], _r1;
7725 0 : _o1[0] = captures[2];
7726 0 : _o1[1] = captures[5];
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_fail1559;
7730 0 : res_op1 = _r1;
7731 : }
7732 0 : tree res_op2;
7733 0 : {
7734 0 : tree _o1[2], _r1;
7735 0 : _o1[0] = captures[3];
7736 0 : _o1[1] = captures[6];
7737 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7738 0 : if (EXPR_P (_r1))
7739 0 : goto next_after_fail1559;
7740 0 : res_op2 = _r1;
7741 : }
7742 0 : tree _r;
7743 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7744 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
7745 0 : return _r;
7746 : }
7747 0 : next_after_fail1559:;
7748 : }
7749 : }
7750 : }
7751 : break;
7752 : }
7753 268 : default:;
7754 : }
7755 268 : {
7756 268 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7757 268 : if (VECTOR_TYPE_P (type)
7758 268 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7759 266 : || types_match (type, TREE_TYPE (captures[2]))
7760 266 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7761 : || (optimize_vectors_before_lowering_p ()
7762 27 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7763 : )
7764 : {
7765 266 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1560;
7766 266 : {
7767 266 : if (! tree_invariant_p (captures[4])) goto next_after_fail1560;
7768 80 : tree res_op0;
7769 80 : res_op0 = captures[1];
7770 80 : tree res_op1;
7771 80 : {
7772 80 : tree _o1[2], _r1;
7773 80 : _o1[0] = captures[2];
7774 80 : _o1[1] = unshare_expr (captures[4]);
7775 80 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7776 80 : if (EXPR_P (_r1))
7777 8 : goto next_after_fail1560;
7778 72 : res_op1 = _r1;
7779 : }
7780 72 : tree res_op2;
7781 72 : {
7782 72 : tree _o1[2], _r1;
7783 72 : _o1[0] = captures[3];
7784 72 : _o1[1] = captures[4];
7785 72 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7786 72 : if (EXPR_P (_r1))
7787 0 : goto next_after_fail1560;
7788 72 : res_op2 = _r1;
7789 : }
7790 72 : tree _r;
7791 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7792 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
7793 72 : return _r;
7794 : }
7795 196 : next_after_fail1560:;
7796 : }
7797 : }
7798 196 : break;
7799 : }
7800 2345978 : case CALL_EXPR:
7801 2345978 : switch (get_call_combined_fn (_p0))
7802 : {
7803 0 : case CFN_BUILT_IN_BITREVERSE128:
7804 0 : if (call_expr_nargs (_p0) == 1)
7805 : {
7806 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7807 0 : switch (TREE_CODE (_p1))
7808 : {
7809 0 : case INTEGER_CST:
7810 0 : {
7811 0 : {
7812 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7813 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7814 0 : if (res) return res;
7815 : }
7816 0 : break;
7817 : }
7818 0 : case CALL_EXPR:
7819 0 : switch (get_call_combined_fn (_p1))
7820 : {
7821 0 : case CFN_BUILT_IN_BITREVERSE128:
7822 0 : if (call_expr_nargs (_p1) == 1)
7823 : {
7824 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7825 0 : {
7826 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7827 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7828 0 : if (res) return res;
7829 : }
7830 : }
7831 : break;
7832 : default:;
7833 : }
7834 : break;
7835 : default:;
7836 : }
7837 : }
7838 : break;
7839 0 : case CFN_BUILT_IN_BITREVERSE16:
7840 0 : if (call_expr_nargs (_p0) == 1)
7841 : {
7842 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7843 0 : switch (TREE_CODE (_p1))
7844 : {
7845 0 : case INTEGER_CST:
7846 0 : {
7847 0 : {
7848 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7849 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7850 0 : if (res) return res;
7851 : }
7852 0 : break;
7853 : }
7854 0 : case CALL_EXPR:
7855 0 : switch (get_call_combined_fn (_p1))
7856 : {
7857 0 : case CFN_BUILT_IN_BITREVERSE16:
7858 0 : if (call_expr_nargs (_p1) == 1)
7859 : {
7860 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7861 0 : {
7862 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7863 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7864 0 : if (res) return res;
7865 : }
7866 : }
7867 : break;
7868 : default:;
7869 : }
7870 : break;
7871 : default:;
7872 : }
7873 : }
7874 : break;
7875 0 : case CFN_BUILT_IN_BITREVERSE32:
7876 0 : if (call_expr_nargs (_p0) == 1)
7877 : {
7878 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7879 0 : switch (TREE_CODE (_p1))
7880 : {
7881 0 : case INTEGER_CST:
7882 0 : {
7883 0 : {
7884 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7885 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7886 0 : if (res) return res;
7887 : }
7888 0 : break;
7889 : }
7890 0 : case CALL_EXPR:
7891 0 : switch (get_call_combined_fn (_p1))
7892 : {
7893 0 : case CFN_BUILT_IN_BITREVERSE32:
7894 0 : if (call_expr_nargs (_p1) == 1)
7895 : {
7896 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7897 0 : {
7898 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7899 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7900 0 : if (res) return res;
7901 : }
7902 : }
7903 : break;
7904 : default:;
7905 : }
7906 : break;
7907 : default:;
7908 : }
7909 : }
7910 : break;
7911 0 : case CFN_BUILT_IN_BITREVERSE64:
7912 0 : if (call_expr_nargs (_p0) == 1)
7913 : {
7914 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7915 0 : switch (TREE_CODE (_p1))
7916 : {
7917 0 : case INTEGER_CST:
7918 0 : {
7919 0 : {
7920 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7921 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
7922 0 : if (res) return res;
7923 : }
7924 0 : break;
7925 : }
7926 0 : case CALL_EXPR:
7927 0 : switch (get_call_combined_fn (_p1))
7928 : {
7929 0 : case CFN_BUILT_IN_BITREVERSE64:
7930 0 : if (call_expr_nargs (_p1) == 1)
7931 : {
7932 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7933 0 : {
7934 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7935 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
7936 0 : if (res) return res;
7937 : }
7938 : }
7939 : break;
7940 : default:;
7941 : }
7942 : break;
7943 : default:;
7944 : }
7945 : }
7946 : break;
7947 0 : case CFN_BITREVERSE:
7948 0 : if (call_expr_nargs (_p0) == 1)
7949 : {
7950 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7951 0 : switch (TREE_CODE (_p1))
7952 : {
7953 0 : case INTEGER_CST:
7954 0 : {
7955 0 : {
7956 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7957 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
7958 0 : if (res) return res;
7959 : }
7960 0 : break;
7961 : }
7962 0 : case CALL_EXPR:
7963 0 : switch (get_call_combined_fn (_p1))
7964 : {
7965 0 : case CFN_BITREVERSE:
7966 0 : if (call_expr_nargs (_p1) == 1)
7967 : {
7968 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7969 0 : {
7970 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7971 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
7972 0 : if (res) return res;
7973 : }
7974 : }
7975 : break;
7976 : default:;
7977 : }
7978 : break;
7979 : default:;
7980 : }
7981 : }
7982 : break;
7983 0 : case CFN_BSWAP:
7984 0 : if (call_expr_nargs (_p0) == 1)
7985 : {
7986 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7987 0 : switch (TREE_CODE (_p1))
7988 : {
7989 0 : case INTEGER_CST:
7990 0 : {
7991 0 : {
7992 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7993 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
7994 0 : if (res) return res;
7995 : }
7996 0 : break;
7997 : }
7998 0 : case CALL_EXPR:
7999 0 : switch (get_call_combined_fn (_p1))
8000 : {
8001 0 : case CFN_BSWAP:
8002 0 : if (call_expr_nargs (_p1) == 1)
8003 : {
8004 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8005 0 : {
8006 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8007 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
8008 0 : if (res) return res;
8009 : }
8010 : }
8011 : break;
8012 : default:;
8013 : }
8014 : break;
8015 : default:;
8016 : }
8017 : }
8018 : break;
8019 2 : case CFN_BUILT_IN_BSWAP128:
8020 2 : if (call_expr_nargs (_p0) == 1)
8021 : {
8022 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8023 2 : switch (TREE_CODE (_p1))
8024 : {
8025 0 : case INTEGER_CST:
8026 0 : {
8027 0 : {
8028 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8029 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8030 0 : if (res) return res;
8031 : }
8032 0 : break;
8033 : }
8034 1 : case CALL_EXPR:
8035 1 : switch (get_call_combined_fn (_p1))
8036 : {
8037 0 : case CFN_BUILT_IN_BSWAP128:
8038 0 : if (call_expr_nargs (_p1) == 1)
8039 : {
8040 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8041 0 : {
8042 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8043 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8044 0 : if (res) return res;
8045 : }
8046 : }
8047 : break;
8048 : default:;
8049 : }
8050 : break;
8051 : default:;
8052 : }
8053 : }
8054 : break;
8055 0 : case CFN_BUILT_IN_BITREVERSE8:
8056 0 : if (call_expr_nargs (_p0) == 1)
8057 : {
8058 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8059 0 : switch (TREE_CODE (_p1))
8060 : {
8061 0 : case INTEGER_CST:
8062 0 : {
8063 0 : {
8064 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8065 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
8066 0 : if (res) return res;
8067 : }
8068 0 : break;
8069 : }
8070 0 : case CALL_EXPR:
8071 0 : switch (get_call_combined_fn (_p1))
8072 : {
8073 0 : case CFN_BUILT_IN_BITREVERSE8:
8074 0 : if (call_expr_nargs (_p1) == 1)
8075 : {
8076 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8077 0 : {
8078 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8079 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
8080 0 : if (res) return res;
8081 : }
8082 : }
8083 : break;
8084 : default:;
8085 : }
8086 : break;
8087 : default:;
8088 : }
8089 : }
8090 : break;
8091 11 : case CFN_BUILT_IN_BSWAP16:
8092 11 : if (call_expr_nargs (_p0) == 1)
8093 : {
8094 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8095 11 : switch (TREE_CODE (_p1))
8096 : {
8097 9 : case INTEGER_CST:
8098 9 : {
8099 9 : {
8100 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8101 9 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8102 9 : if (res) return res;
8103 : }
8104 9 : break;
8105 : }
8106 1 : case CALL_EXPR:
8107 1 : switch (get_call_combined_fn (_p1))
8108 : {
8109 1 : case CFN_BUILT_IN_BSWAP16:
8110 1 : if (call_expr_nargs (_p1) == 1)
8111 : {
8112 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8113 1 : {
8114 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8115 1 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8116 1 : if (res) return res;
8117 : }
8118 : }
8119 : break;
8120 : default:;
8121 : }
8122 : break;
8123 : default:;
8124 : }
8125 : }
8126 : break;
8127 7 : case CFN_BUILT_IN_BSWAP32:
8128 7 : if (call_expr_nargs (_p0) == 1)
8129 : {
8130 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8131 7 : switch (TREE_CODE (_p1))
8132 : {
8133 3 : case INTEGER_CST:
8134 3 : {
8135 3 : {
8136 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8137 3 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8138 3 : if (res) return res;
8139 : }
8140 3 : break;
8141 : }
8142 3 : case CALL_EXPR:
8143 3 : switch (get_call_combined_fn (_p1))
8144 : {
8145 3 : case CFN_BUILT_IN_BSWAP32:
8146 3 : if (call_expr_nargs (_p1) == 1)
8147 : {
8148 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8149 3 : {
8150 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8151 3 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8152 3 : if (res) return res;
8153 : }
8154 : }
8155 : break;
8156 : default:;
8157 : }
8158 : break;
8159 : default:;
8160 : }
8161 : }
8162 : break;
8163 7 : case CFN_BUILT_IN_BSWAP64:
8164 7 : if (call_expr_nargs (_p0) == 1)
8165 : {
8166 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8167 7 : switch (TREE_CODE (_p1))
8168 : {
8169 3 : case INTEGER_CST:
8170 3 : {
8171 3 : {
8172 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8173 3 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8174 3 : if (res) return res;
8175 : }
8176 3 : break;
8177 : }
8178 3 : case CALL_EXPR:
8179 3 : switch (get_call_combined_fn (_p1))
8180 : {
8181 3 : case CFN_BUILT_IN_BSWAP64:
8182 3 : if (call_expr_nargs (_p1) == 1)
8183 : {
8184 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8185 3 : {
8186 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8187 3 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8188 3 : if (res) return res;
8189 : }
8190 : }
8191 : break;
8192 : default:;
8193 : }
8194 : break;
8195 : default:;
8196 : }
8197 : }
8198 : break;
8199 : default:;
8200 : }
8201 : break;
8202 37152226 : default:;
8203 : }
8204 37152226 : switch (TREE_CODE (_p1))
8205 : {
8206 24 : case VEC_COND_EXPR:
8207 24 : {
8208 24 : tree _q30 = TREE_OPERAND (_p1, 0);
8209 24 : tree _q31 = TREE_OPERAND (_p1, 1);
8210 24 : tree _q32 = TREE_OPERAND (_p1, 2);
8211 24 : {
8212 24 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8213 24 : if (VECTOR_TYPE_P (type)
8214 24 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8215 24 : || types_match (type, TREE_TYPE (captures[3]))
8216 24 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8217 : || (optimize_vectors_before_lowering_p ()
8218 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8219 : )
8220 : {
8221 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1561;
8222 24 : {
8223 24 : if (! tree_invariant_p (captures[0])) goto next_after_fail1561;
8224 0 : tree res_op0;
8225 0 : res_op0 = captures[2];
8226 0 : tree res_op1;
8227 0 : {
8228 0 : tree _o1[2], _r1;
8229 0 : _o1[0] = unshare_expr (captures[0]);
8230 0 : _o1[1] = captures[3];
8231 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8232 0 : if (EXPR_P (_r1))
8233 0 : goto next_after_fail1561;
8234 0 : res_op1 = _r1;
8235 : }
8236 0 : tree res_op2;
8237 0 : {
8238 0 : tree _o1[2], _r1;
8239 0 : _o1[0] = captures[0];
8240 0 : _o1[1] = captures[4];
8241 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8242 0 : if (EXPR_P (_r1))
8243 0 : goto next_after_fail1561;
8244 0 : res_op2 = _r1;
8245 : }
8246 0 : tree _r;
8247 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8248 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
8249 0 : return _r;
8250 : }
8251 24 : next_after_fail1561:;
8252 : }
8253 : }
8254 24 : break;
8255 : }
8256 37152226 : default:;
8257 : }
8258 37152226 : switch (TREE_CODE (_p0))
8259 : {
8260 96885 : case COND_EXPR:
8261 96885 : {
8262 96885 : tree _q20 = TREE_OPERAND (_p0, 0);
8263 96885 : tree _q21 = TREE_OPERAND (_p0, 1);
8264 96885 : tree _q22 = TREE_OPERAND (_p0, 2);
8265 96885 : switch (TREE_CODE (_p1))
8266 : {
8267 276 : case COND_EXPR:
8268 276 : {
8269 276 : tree _q60 = TREE_OPERAND (_p1, 0);
8270 276 : tree _q61 = TREE_OPERAND (_p1, 1);
8271 276 : tree _q62 = TREE_OPERAND (_p1, 2);
8272 276 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8273 : {
8274 72 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8275 : {
8276 72 : {
8277 72 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8278 72 : const enum tree_code eqne = NE_EXPR;
8279 72 : if (!HONOR_NANS (captures[1])
8280 56 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8281 49 : && types_match (type, TREE_TYPE (captures[0]))
8282 49 : && expr_no_side_effects_p (captures[1])
8283 114 : && expr_no_side_effects_p (captures[2])
8284 : )
8285 : {
8286 42 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1562;
8287 42 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1562;
8288 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1562;
8289 42 : {
8290 42 : tree res_op0;
8291 42 : {
8292 42 : tree _o1[2], _r1;
8293 42 : {
8294 42 : tree _o2[2], _r2;
8295 42 : _o2[0] = captures[0];
8296 42 : _o2[1] = captures[3];
8297 42 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8298 42 : _o1[0] = _r2;
8299 : }
8300 42 : {
8301 42 : tree _o2[2], _r2;
8302 42 : _o2[0] = captures[1];
8303 42 : _o2[1] = captures[2];
8304 42 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8305 42 : _o1[1] = _r2;
8306 : }
8307 42 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8308 42 : res_op0 = _r1;
8309 : }
8310 42 : tree res_op1;
8311 42 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8312 42 : tree res_op2;
8313 42 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8314 42 : tree _r;
8315 42 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8316 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
8317 42 : return _r;
8318 : }
8319 30 : next_after_fail1562:;
8320 : }
8321 : }
8322 : }
8323 : }
8324 234 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8325 : {
8326 0 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8327 : {
8328 0 : {
8329 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8330 0 : const enum tree_code eqne = NE_EXPR;
8331 0 : if (!HONOR_NANS (captures[1])
8332 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8333 0 : && types_match (type, TREE_TYPE (captures[0]))
8334 0 : && expr_no_side_effects_p (captures[1])
8335 0 : && expr_no_side_effects_p (captures[2])
8336 : )
8337 : {
8338 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1563;
8339 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1563;
8340 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1563;
8341 0 : {
8342 0 : tree res_op0;
8343 0 : {
8344 0 : tree _o1[2], _r1;
8345 0 : {
8346 0 : tree _o2[2], _r2;
8347 0 : _o2[0] = captures[0];
8348 0 : _o2[1] = captures[3];
8349 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8350 0 : _o1[0] = _r2;
8351 : }
8352 0 : {
8353 0 : tree _o2[2], _r2;
8354 0 : _o2[0] = captures[1];
8355 0 : _o2[1] = captures[2];
8356 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8357 0 : _o1[1] = _r2;
8358 : }
8359 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8360 0 : res_op0 = _r1;
8361 : }
8362 0 : tree res_op1;
8363 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8364 0 : tree res_op2;
8365 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8366 0 : tree _r;
8367 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8368 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
8369 0 : return _r;
8370 : }
8371 0 : next_after_fail1563:;
8372 : }
8373 : }
8374 : }
8375 : }
8376 : break;
8377 : }
8378 : default:;
8379 : }
8380 : break;
8381 : }
8382 196 : case VEC_COND_EXPR:
8383 196 : {
8384 196 : tree _q20 = TREE_OPERAND (_p0, 0);
8385 196 : tree _q21 = TREE_OPERAND (_p0, 1);
8386 196 : tree _q22 = TREE_OPERAND (_p0, 2);
8387 196 : switch (TREE_CODE (_p1))
8388 : {
8389 8 : case VEC_COND_EXPR:
8390 8 : {
8391 8 : tree _q60 = TREE_OPERAND (_p1, 0);
8392 8 : tree _q61 = TREE_OPERAND (_p1, 1);
8393 8 : tree _q62 = TREE_OPERAND (_p1, 2);
8394 8 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8395 : {
8396 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8397 : {
8398 0 : {
8399 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8400 0 : const enum tree_code eqne = NE_EXPR;
8401 0 : if (!HONOR_NANS (captures[1])
8402 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8403 0 : && types_match (type, TREE_TYPE (captures[0]))
8404 0 : && expr_no_side_effects_p (captures[1])
8405 0 : && expr_no_side_effects_p (captures[2])
8406 : )
8407 : {
8408 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1564;
8409 0 : {
8410 0 : tree res_op0;
8411 0 : {
8412 0 : tree _o1[2], _r1;
8413 0 : {
8414 0 : tree _o2[2], _r2;
8415 0 : _o2[0] = captures[0];
8416 0 : _o2[1] = captures[3];
8417 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8418 0 : _o1[0] = _r2;
8419 : }
8420 0 : {
8421 0 : tree _o2[2], _r2;
8422 0 : _o2[0] = captures[1];
8423 0 : _o2[1] = captures[2];
8424 0 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8425 0 : _o1[1] = _r2;
8426 : }
8427 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8428 0 : res_op0 = _r1;
8429 : }
8430 0 : tree res_op1;
8431 0 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8432 0 : tree res_op2;
8433 0 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8434 0 : tree _r;
8435 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8436 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
8437 0 : return _r;
8438 : }
8439 0 : next_after_fail1564:;
8440 : }
8441 : }
8442 : }
8443 : }
8444 8 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8445 : {
8446 8 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8447 : {
8448 8 : {
8449 8 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8450 8 : const enum tree_code eqne = NE_EXPR;
8451 8 : if (!HONOR_NANS (captures[1])
8452 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8453 0 : && types_match (type, TREE_TYPE (captures[0]))
8454 0 : && expr_no_side_effects_p (captures[1])
8455 8 : && expr_no_side_effects_p (captures[2])
8456 : )
8457 : {
8458 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1565;
8459 0 : {
8460 0 : tree res_op0;
8461 0 : {
8462 0 : tree _o1[2], _r1;
8463 0 : {
8464 0 : tree _o2[2], _r2;
8465 0 : _o2[0] = captures[0];
8466 0 : _o2[1] = captures[3];
8467 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8468 0 : _o1[0] = _r2;
8469 : }
8470 0 : {
8471 0 : tree _o2[2], _r2;
8472 0 : _o2[0] = captures[1];
8473 0 : _o2[1] = captures[2];
8474 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8475 0 : _o1[1] = _r2;
8476 : }
8477 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8478 0 : res_op0 = _r1;
8479 : }
8480 0 : tree res_op1;
8481 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8482 0 : tree res_op2;
8483 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8484 0 : tree _r;
8485 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8486 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
8487 0 : return _r;
8488 : }
8489 0 : next_after_fail1565:;
8490 : }
8491 : }
8492 : }
8493 : }
8494 : break;
8495 : }
8496 : default:;
8497 : }
8498 : break;
8499 : }
8500 18271 : case LT_EXPR:
8501 18271 : {
8502 18271 : tree _q20 = TREE_OPERAND (_p0, 0);
8503 18271 : tree _q21 = TREE_OPERAND (_p0, 1);
8504 18271 : if (integer_zerop (_p1))
8505 : {
8506 16754 : {
8507 16754 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8508 16754 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8509 16754 : if (res) return res;
8510 : }
8511 : }
8512 15319 : if (integer_truep (_p1))
8513 : {
8514 563 : {
8515 563 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8516 563 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8517 563 : if (res) return res;
8518 : }
8519 : }
8520 : break;
8521 : }
8522 12003 : case LE_EXPR:
8523 12003 : {
8524 12003 : tree _q20 = TREE_OPERAND (_p0, 0);
8525 12003 : tree _q21 = TREE_OPERAND (_p0, 1);
8526 12003 : if (integer_zerop (_p1))
8527 : {
8528 9431 : {
8529 9431 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8530 9431 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8531 9431 : if (res) return res;
8532 : }
8533 : }
8534 11213 : if (integer_truep (_p1))
8535 : {
8536 473 : {
8537 473 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8538 473 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8539 473 : if (res) return res;
8540 : }
8541 : }
8542 : break;
8543 : }
8544 63865 : case EQ_EXPR:
8545 63865 : {
8546 63865 : tree _q20 = TREE_OPERAND (_p0, 0);
8547 63865 : tree _q21 = TREE_OPERAND (_p0, 1);
8548 63865 : if (integer_zerop (_p1))
8549 : {
8550 36198 : {
8551 36198 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8552 36198 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8553 36198 : if (res) return res;
8554 : }
8555 : }
8556 62744 : if (integer_truep (_p1))
8557 : {
8558 21941 : {
8559 21941 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8560 21941 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8561 21941 : if (res) return res;
8562 : }
8563 : }
8564 : break;
8565 : }
8566 69294 : case NE_EXPR:
8567 69294 : {
8568 69294 : tree _q20 = TREE_OPERAND (_p0, 0);
8569 69294 : tree _q21 = TREE_OPERAND (_p0, 1);
8570 69294 : if (integer_zerop (_p1))
8571 : {
8572 57448 : {
8573 57448 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8574 57448 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8575 57448 : if (res) return res;
8576 : }
8577 : }
8578 34592 : if (integer_truep (_p1))
8579 : {
8580 141 : {
8581 141 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8582 141 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8583 141 : if (res) return res;
8584 : }
8585 : }
8586 : break;
8587 : }
8588 6127 : case GE_EXPR:
8589 6127 : {
8590 6127 : tree _q20 = TREE_OPERAND (_p0, 0);
8591 6127 : tree _q21 = TREE_OPERAND (_p0, 1);
8592 6127 : if (integer_zerop (_p1))
8593 : {
8594 4174 : {
8595 4174 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8596 4174 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8597 4174 : if (res) return res;
8598 : }
8599 : }
8600 5469 : if (integer_truep (_p1))
8601 : {
8602 489 : {
8603 489 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8604 489 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8605 489 : if (res) return res;
8606 : }
8607 : }
8608 : break;
8609 : }
8610 35796 : case GT_EXPR:
8611 35796 : {
8612 35796 : tree _q20 = TREE_OPERAND (_p0, 0);
8613 35796 : tree _q21 = TREE_OPERAND (_p0, 1);
8614 35796 : if (integer_zerop (_p1))
8615 : {
8616 33733 : {
8617 33733 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8618 33733 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8619 33733 : if (res) return res;
8620 : }
8621 : }
8622 29749 : if (integer_truep (_p1))
8623 : {
8624 324 : {
8625 324 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8626 324 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8627 324 : if (res) return res;
8628 : }
8629 : }
8630 : break;
8631 : }
8632 129277 : case UNORDERED_EXPR:
8633 129277 : {
8634 129277 : tree _q20 = TREE_OPERAND (_p0, 0);
8635 129277 : tree _q21 = TREE_OPERAND (_p0, 1);
8636 129277 : if (integer_zerop (_p1))
8637 : {
8638 127129 : {
8639 127129 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8640 127129 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8641 127129 : if (res) return res;
8642 : }
8643 : }
8644 128887 : if (integer_truep (_p1))
8645 : {
8646 42 : {
8647 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8648 42 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8649 42 : if (res) return res;
8650 : }
8651 : }
8652 : break;
8653 : }
8654 113 : case ORDERED_EXPR:
8655 113 : {
8656 113 : tree _q20 = TREE_OPERAND (_p0, 0);
8657 113 : tree _q21 = TREE_OPERAND (_p0, 1);
8658 113 : if (integer_zerop (_p1))
8659 : {
8660 42 : {
8661 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8662 42 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8663 42 : if (res) return res;
8664 : }
8665 : }
8666 71 : if (integer_truep (_p1))
8667 : {
8668 0 : {
8669 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8670 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8671 0 : if (res) return res;
8672 : }
8673 : }
8674 : break;
8675 : }
8676 213 : case UNLT_EXPR:
8677 213 : {
8678 213 : tree _q20 = TREE_OPERAND (_p0, 0);
8679 213 : tree _q21 = TREE_OPERAND (_p0, 1);
8680 213 : if (integer_zerop (_p1))
8681 : {
8682 28 : {
8683 28 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8684 28 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8685 28 : if (res) return res;
8686 : }
8687 : }
8688 185 : if (integer_truep (_p1))
8689 : {
8690 161 : {
8691 161 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8692 161 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8693 161 : if (res) return res;
8694 : }
8695 : }
8696 : break;
8697 : }
8698 1442 : case UNLE_EXPR:
8699 1442 : {
8700 1442 : tree _q20 = TREE_OPERAND (_p0, 0);
8701 1442 : tree _q21 = TREE_OPERAND (_p0, 1);
8702 1442 : if (integer_zerop (_p1))
8703 : {
8704 104 : {
8705 104 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8706 104 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8707 104 : if (res) return res;
8708 : }
8709 : }
8710 1338 : if (integer_truep (_p1))
8711 : {
8712 1314 : {
8713 1314 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8714 1314 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8715 1314 : if (res) return res;
8716 : }
8717 : }
8718 : break;
8719 : }
8720 2009 : case UNGT_EXPR:
8721 2009 : {
8722 2009 : tree _q20 = TREE_OPERAND (_p0, 0);
8723 2009 : tree _q21 = TREE_OPERAND (_p0, 1);
8724 2009 : if (integer_zerop (_p1))
8725 : {
8726 96 : {
8727 96 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8728 96 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8729 96 : if (res) return res;
8730 : }
8731 : }
8732 1913 : if (integer_truep (_p1))
8733 : {
8734 1778 : {
8735 1778 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8736 1778 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8737 1778 : if (res) return res;
8738 : }
8739 : }
8740 : break;
8741 : }
8742 391 : case UNGE_EXPR:
8743 391 : {
8744 391 : tree _q20 = TREE_OPERAND (_p0, 0);
8745 391 : tree _q21 = TREE_OPERAND (_p0, 1);
8746 391 : if (integer_zerop (_p1))
8747 : {
8748 16 : {
8749 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8750 16 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8751 16 : if (res) return res;
8752 : }
8753 : }
8754 375 : if (integer_truep (_p1))
8755 : {
8756 211 : {
8757 211 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8758 211 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8759 211 : if (res) return res;
8760 : }
8761 : }
8762 : break;
8763 : }
8764 161 : case UNEQ_EXPR:
8765 161 : {
8766 161 : tree _q20 = TREE_OPERAND (_p0, 0);
8767 161 : tree _q21 = TREE_OPERAND (_p0, 1);
8768 161 : if (integer_zerop (_p1))
8769 : {
8770 0 : {
8771 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8772 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8773 0 : if (res) return res;
8774 : }
8775 : }
8776 161 : if (integer_truep (_p1))
8777 : {
8778 124 : {
8779 124 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8780 124 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8781 124 : if (res) return res;
8782 : }
8783 : }
8784 : break;
8785 : }
8786 24 : case LTGT_EXPR:
8787 24 : {
8788 24 : tree _q20 = TREE_OPERAND (_p0, 0);
8789 24 : tree _q21 = TREE_OPERAND (_p0, 1);
8790 24 : if (integer_zerop (_p1))
8791 : {
8792 6 : {
8793 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8794 6 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8795 6 : if (res) return res;
8796 : }
8797 : }
8798 24 : if (integer_truep (_p1))
8799 : {
8800 0 : {
8801 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8802 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8803 0 : if (res) return res;
8804 : }
8805 : }
8806 : break;
8807 : }
8808 103583 : case MINUS_EXPR:
8809 103583 : {
8810 103583 : tree _q20 = TREE_OPERAND (_p0, 0);
8811 103583 : tree _q21 = TREE_OPERAND (_p0, 1);
8812 103583 : if (integer_zerop (_p1))
8813 : {
8814 35110 : {
8815 35110 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8816 35110 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR);
8817 35110 : if (res) return res;
8818 : }
8819 : }
8820 : break;
8821 : }
8822 24684 : case POINTER_DIFF_EXPR:
8823 24684 : {
8824 24684 : tree _q20 = TREE_OPERAND (_p0, 0);
8825 24684 : tree _q21 = TREE_OPERAND (_p0, 1);
8826 24684 : if (integer_zerop (_p1))
8827 : {
8828 12314 : {
8829 12314 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8830 12314 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, NE_EXPR);
8831 12314 : if (res) return res;
8832 : }
8833 : }
8834 : break;
8835 : }
8836 95056 : case MULT_EXPR:
8837 95056 : {
8838 95056 : tree _q20 = TREE_OPERAND (_p0, 0);
8839 95056 : tree _q21 = TREE_OPERAND (_p0, 1);
8840 95056 : switch (TREE_CODE (_q21))
8841 : {
8842 77587 : case INTEGER_CST:
8843 77587 : {
8844 77587 : switch (TREE_CODE (_p1))
8845 : {
8846 50495 : case INTEGER_CST:
8847 50495 : {
8848 50495 : {
8849 50495 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8850 50495 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, NE_EXPR);
8851 50495 : if (res) return res;
8852 : }
8853 33711 : break;
8854 : }
8855 60803 : default:;
8856 : }
8857 60803 : if (integer_zerop (_p1))
8858 : {
8859 10626 : {
8860 10626 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8861 10626 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
8862 10626 : if (res) return res;
8863 : }
8864 : }
8865 : break;
8866 : }
8867 : default:;
8868 : }
8869 : break;
8870 : }
8871 37018994 : default:;
8872 : }
8873 37018994 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8874 : {
8875 230071 : {
8876 230071 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8877 230071 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, NE_EXPR);
8878 230071 : if (res) return res;
8879 : }
8880 : }
8881 36795647 : switch (TREE_CODE (_p0))
8882 : {
8883 8063648 : CASE_CONVERT:
8884 8063648 : {
8885 8063648 : tree _q20 = TREE_OPERAND (_p0, 0);
8886 8063648 : switch (TREE_CODE (_p1))
8887 : {
8888 4373171 : CASE_CONVERT:
8889 4373171 : {
8890 4373171 : tree _q40 = TREE_OPERAND (_p1, 0);
8891 4373171 : {
8892 4373171 : tree _q40_pops[1];
8893 4373171 : if (tree_maybe_bit_not (_q40, _q40_pops))
8894 : {
8895 0 : tree _q50 = _q40_pops[0];
8896 0 : {
8897 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
8898 0 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR);
8899 0 : if (res) return res;
8900 : }
8901 : }
8902 : }
8903 4373171 : break;
8904 : }
8905 8063648 : default:;
8906 : }
8907 8063648 : {
8908 8063648 : tree _q20_pops[1];
8909 8063648 : if (tree_maybe_bit_not (_q20, _q20_pops))
8910 : {
8911 13057 : tree _q30 = _q20_pops[0];
8912 13057 : switch (TREE_CODE (_p1))
8913 : {
8914 0 : CASE_CONVERT:
8915 0 : {
8916 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8917 0 : {
8918 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
8919 0 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR);
8920 0 : if (res) return res;
8921 : }
8922 0 : break;
8923 : }
8924 : default:;
8925 : }
8926 : }
8927 : }
8928 8063648 : break;
8929 : }
8930 36795647 : default:;
8931 : }
8932 36795647 : {
8933 36795647 : tree _p1_pops[1];
8934 36795647 : if (tree_maybe_bit_not (_p1, _p1_pops))
8935 : {
8936 25752489 : tree _q30 = _p1_pops[0];
8937 25752489 : {
8938 25752489 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8939 25752489 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR);
8940 25752489 : if (res) return res;
8941 : }
8942 : }
8943 : }
8944 36795647 : switch (TREE_CODE (_p0))
8945 : {
8946 13345 : case BIT_NOT_EXPR:
8947 13345 : {
8948 13345 : tree _q20 = TREE_OPERAND (_p0, 0);
8949 13345 : switch (TREE_CODE (_p1))
8950 : {
8951 1 : case BIT_NOT_EXPR:
8952 1 : {
8953 1 : tree _q40 = TREE_OPERAND (_p1, 0);
8954 1 : {
8955 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
8956 1 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR);
8957 1 : if (res) return res;
8958 : }
8959 0 : break;
8960 : }
8961 13344 : default:;
8962 : }
8963 13344 : {
8964 13344 : tree _p1_pops[1];
8965 13344 : if (tree_nop_convert (_p1, _p1_pops))
8966 : {
8967 80 : tree _q40 = _p1_pops[0];
8968 80 : switch (TREE_CODE (_q40))
8969 : {
8970 0 : case BIT_NOT_EXPR:
8971 0 : {
8972 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8973 0 : {
8974 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
8975 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR);
8976 0 : if (res) return res;
8977 : }
8978 0 : break;
8979 : }
8980 : default:;
8981 : }
8982 : }
8983 : }
8984 13344 : if (CONSTANT_CLASS_P (_p1))
8985 : {
8986 12185 : {
8987 12185 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8988 12185 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
8989 12185 : if (res) return res;
8990 : }
8991 : }
8992 : break;
8993 : }
8994 36783461 : default:;
8995 : }
8996 36783461 : {
8997 36783461 : tree _p0_pops[1];
8998 36783461 : if (tree_maybe_bit_not (_p0, _p0_pops))
8999 : {
9000 285457 : tree _q20 = _p0_pops[0];
9001 285457 : {
9002 285457 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
9003 285457 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR);
9004 285457 : if (res) return res;
9005 : }
9006 : }
9007 : }
9008 36783459 : {
9009 36783459 : tree _p0_pops[1];
9010 36783459 : if (tree_nop_convert (_p0, _p0_pops))
9011 : {
9012 5873649 : tree _q20 = _p0_pops[0];
9013 5873649 : switch (TREE_CODE (_q20))
9014 : {
9015 1 : case BIT_NOT_EXPR:
9016 1 : {
9017 1 : tree _q30 = TREE_OPERAND (_q20, 0);
9018 1 : switch (TREE_CODE (_p1))
9019 : {
9020 0 : case BIT_NOT_EXPR:
9021 0 : {
9022 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9023 0 : {
9024 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
9025 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
9026 0 : if (res) return res;
9027 : }
9028 0 : break;
9029 : }
9030 1 : default:;
9031 : }
9032 1 : {
9033 1 : tree _p1_pops[1];
9034 1 : if (tree_nop_convert (_p1, _p1_pops))
9035 : {
9036 0 : tree _q50 = _p1_pops[0];
9037 0 : switch (TREE_CODE (_q50))
9038 : {
9039 0 : case BIT_NOT_EXPR:
9040 0 : {
9041 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9042 0 : {
9043 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
9044 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
9045 0 : if (res) return res;
9046 : }
9047 0 : break;
9048 : }
9049 : default:;
9050 : }
9051 : }
9052 : }
9053 1 : if (CONSTANT_CLASS_P (_p1))
9054 : {
9055 1 : {
9056 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9057 1 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9058 1 : if (res) return res;
9059 : }
9060 : }
9061 : break;
9062 : }
9063 : default:;
9064 : }
9065 : }
9066 : }
9067 36783458 : switch (TREE_CODE (_p1))
9068 : {
9069 699967 : case REAL_CST:
9070 699967 : {
9071 699967 : {
9072 699967 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9073 699967 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, NE_EXPR);
9074 699967 : if (res) return res;
9075 : }
9076 632123 : break;
9077 : }
9078 36715614 : default:;
9079 : }
9080 36715614 : switch (TREE_CODE (_p0))
9081 : {
9082 1326043 : case PLUS_EXPR:
9083 1326043 : {
9084 1326043 : tree _q20 = TREE_OPERAND (_p0, 0);
9085 1326043 : tree _q21 = TREE_OPERAND (_p0, 1);
9086 1326043 : switch (TREE_CODE (_q21))
9087 : {
9088 3843 : case REAL_CST:
9089 3843 : {
9090 3843 : switch (TREE_CODE (_p1))
9091 : {
9092 3067 : case REAL_CST:
9093 3067 : {
9094 3067 : {
9095 3067 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9096 3067 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR);
9097 3067 : if (res) return res;
9098 : }
9099 3067 : break;
9100 : }
9101 : default:;
9102 : }
9103 : break;
9104 : }
9105 : default:;
9106 : }
9107 : break;
9108 : }
9109 68469 : case MINUS_EXPR:
9110 68469 : {
9111 68469 : tree _q20 = TREE_OPERAND (_p0, 0);
9112 68469 : tree _q21 = TREE_OPERAND (_p0, 1);
9113 68469 : switch (TREE_CODE (_q21))
9114 : {
9115 3215 : case REAL_CST:
9116 3215 : {
9117 3215 : switch (TREE_CODE (_p1))
9118 : {
9119 2849 : case REAL_CST:
9120 2849 : {
9121 2849 : {
9122 2849 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9123 2849 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, MINUS_EXPR, NE_EXPR);
9124 2849 : if (res) return res;
9125 : }
9126 2849 : break;
9127 : }
9128 : default:;
9129 : }
9130 : break;
9131 : }
9132 68469 : default:;
9133 : }
9134 68469 : switch (TREE_CODE (_q20))
9135 : {
9136 87 : case REAL_CST:
9137 87 : {
9138 87 : switch (TREE_CODE (_p1))
9139 : {
9140 44 : case REAL_CST:
9141 44 : {
9142 44 : {
9143 44 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9144 44 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR);
9145 44 : if (res) return res;
9146 : }
9147 44 : break;
9148 : }
9149 : default:;
9150 : }
9151 : break;
9152 : }
9153 : default:;
9154 : }
9155 : break;
9156 : }
9157 10055 : case FLOAT_EXPR:
9158 10055 : {
9159 10055 : tree _q20 = TREE_OPERAND (_p0, 0);
9160 10055 : switch (TREE_CODE (_p1))
9161 : {
9162 1115 : case FLOAT_EXPR:
9163 1115 : {
9164 1115 : tree _q40 = TREE_OPERAND (_p1, 0);
9165 1115 : {
9166 1115 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9167 1115 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9168 1115 : if (res) return res;
9169 : }
9170 971 : break;
9171 : }
9172 1808 : case REAL_CST:
9173 1808 : {
9174 1808 : {
9175 1808 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9176 1808 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9177 1808 : if (res) return res;
9178 : }
9179 1687 : break;
9180 : }
9181 : default:;
9182 : }
9183 : break;
9184 : }
9185 2017 : case EXACT_DIV_EXPR:
9186 2017 : {
9187 2017 : tree _q20 = TREE_OPERAND (_p0, 0);
9188 2017 : tree _q21 = TREE_OPERAND (_p0, 1);
9189 2017 : switch (TREE_CODE (_p1))
9190 : {
9191 36 : case INTEGER_CST:
9192 36 : {
9193 36 : {
9194 36 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9195 36 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, NE_EXPR);
9196 36 : if (res) return res;
9197 : }
9198 0 : break;
9199 : }
9200 : default:;
9201 : }
9202 : break;
9203 : }
9204 6148 : case NEGATE_EXPR:
9205 6148 : {
9206 6148 : tree _q20 = TREE_OPERAND (_p0, 0);
9207 6148 : switch (TREE_CODE (_p1))
9208 : {
9209 4 : case NEGATE_EXPR:
9210 4 : {
9211 4 : tree _q40 = TREE_OPERAND (_p1, 0);
9212 4 : {
9213 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9214 4 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9215 4 : if (res) return res;
9216 : }
9217 0 : break;
9218 : }
9219 6144 : default:;
9220 : }
9221 6144 : if (CONSTANT_CLASS_P (_p1))
9222 : {
9223 577 : {
9224 577 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9225 577 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9226 577 : if (res) return res;
9227 : }
9228 : }
9229 : break;
9230 : }
9231 1940 : case ABS_EXPR:
9232 1940 : {
9233 1940 : tree _q20 = TREE_OPERAND (_p0, 0);
9234 1940 : if (zerop (_p1))
9235 : {
9236 72 : {
9237 72 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9238 72 : const enum tree_code eqne = NE_EXPR;
9239 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1566;
9240 72 : {
9241 72 : tree res_op0;
9242 72 : res_op0 = captures[0];
9243 72 : tree res_op1;
9244 72 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9245 72 : tree _r;
9246 72 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9247 72 : if (TREE_SIDE_EFFECTS (captures[1]))
9248 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9249 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
9250 72 : return _r;
9251 : }
9252 0 : next_after_fail1566:;
9253 : }
9254 : }
9255 : break;
9256 : }
9257 1698 : case ABSU_EXPR:
9258 1698 : {
9259 1698 : tree _q20 = TREE_OPERAND (_p0, 0);
9260 1698 : if (zerop (_p1))
9261 : {
9262 65 : {
9263 65 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9264 65 : const enum tree_code eqne = NE_EXPR;
9265 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1567;
9266 65 : {
9267 65 : tree res_op0;
9268 65 : res_op0 = captures[0];
9269 65 : tree res_op1;
9270 65 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9271 65 : tree _r;
9272 65 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9273 65 : if (TREE_SIDE_EFFECTS (captures[1]))
9274 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9275 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
9276 65 : return _r;
9277 : }
9278 0 : next_after_fail1567:;
9279 : }
9280 : }
9281 : break;
9282 : }
9283 8063568 : CASE_CONVERT:
9284 8063568 : {
9285 8063568 : tree _q20 = TREE_OPERAND (_p0, 0);
9286 8063568 : switch (TREE_CODE (_p1))
9287 : {
9288 4373171 : CASE_CONVERT:
9289 4373171 : {
9290 4373171 : tree _q40 = TREE_OPERAND (_p1, 0);
9291 4373171 : {
9292 4373171 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9293 4373171 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, NE_EXPR);
9294 4373171 : if (res) return res;
9295 : }
9296 4170196 : break;
9297 : }
9298 7860593 : default:;
9299 : }
9300 7860593 : {
9301 7860593 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9302 7860593 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
9303 7860593 : if (res) return res;
9304 : }
9305 5776656 : switch (TREE_CODE (_q20))
9306 : {
9307 12 : case BIT_IOR_EXPR:
9308 12 : {
9309 12 : tree _q30 = TREE_OPERAND (_q20, 0);
9310 12 : tree _q31 = TREE_OPERAND (_q20, 1);
9311 12 : switch (TREE_CODE (_q31))
9312 : {
9313 0 : case INTEGER_CST:
9314 0 : {
9315 0 : switch (TREE_CODE (_p1))
9316 : {
9317 0 : case INTEGER_CST:
9318 0 : {
9319 0 : {
9320 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9321 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9322 0 : if (res) return res;
9323 : }
9324 0 : break;
9325 : }
9326 : default:;
9327 : }
9328 : break;
9329 : }
9330 : default:;
9331 : }
9332 : break;
9333 : }
9334 : default:;
9335 : }
9336 : break;
9337 : }
9338 14743522 : case SSA_NAME:
9339 14743522 : {
9340 14743522 : switch (TREE_CODE (_p1))
9341 : {
9342 295907 : case ADDR_EXPR:
9343 295907 : {
9344 295907 : {
9345 295907 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9346 295907 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9347 295907 : if (res) return res;
9348 : }
9349 295905 : break;
9350 : }
9351 : default:;
9352 : }
9353 : break;
9354 : }
9355 239031 : case BIT_IOR_EXPR:
9356 239031 : {
9357 239031 : tree _q20 = TREE_OPERAND (_p0, 0);
9358 239031 : tree _q21 = TREE_OPERAND (_p0, 1);
9359 239031 : switch (TREE_CODE (_q21))
9360 : {
9361 970 : case INTEGER_CST:
9362 970 : {
9363 970 : switch (TREE_CODE (_p1))
9364 : {
9365 233 : case INTEGER_CST:
9366 233 : {
9367 233 : {
9368 233 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9369 233 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9370 233 : if (res) return res;
9371 : }
9372 233 : break;
9373 : }
9374 : default:;
9375 : }
9376 : break;
9377 : }
9378 : default:;
9379 : }
9380 : break;
9381 : }
9382 30048 : case BIT_XOR_EXPR:
9383 30048 : {
9384 30048 : tree _q20 = TREE_OPERAND (_p0, 0);
9385 30048 : tree _q21 = TREE_OPERAND (_p0, 1);
9386 30048 : if (integer_zerop (_p1))
9387 : {
9388 25716 : {
9389 25716 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9390 25716 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR);
9391 25716 : if (res) return res;
9392 : }
9393 : }
9394 4332 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9395 : {
9396 1 : {
9397 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9398 1 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9399 1 : if (res) return res;
9400 : }
9401 : }
9402 4331 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9403 : {
9404 2 : {
9405 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9406 2 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9407 2 : if (res) return res;
9408 : }
9409 : }
9410 : break;
9411 : }
9412 2339884 : case CALL_EXPR:
9413 2339884 : switch (get_call_combined_fn (_p0))
9414 : {
9415 42 : case CFN_BUILT_IN_SQRTF:
9416 42 : if (call_expr_nargs (_p0) == 1)
9417 : {
9418 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9419 42 : switch (TREE_CODE (_p1))
9420 : {
9421 0 : case REAL_CST:
9422 0 : {
9423 0 : {
9424 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9425 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9426 0 : if (res) return res;
9427 : }
9428 0 : break;
9429 : }
9430 42 : case CALL_EXPR:
9431 42 : switch (get_call_combined_fn (_p1))
9432 : {
9433 0 : case CFN_BUILT_IN_SQRTF:
9434 0 : if (call_expr_nargs (_p1) == 1)
9435 : {
9436 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9437 0 : {
9438 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9439 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9440 0 : if (res) return res;
9441 : }
9442 : }
9443 : break;
9444 : default:;
9445 : }
9446 : break;
9447 : default:;
9448 : }
9449 : }
9450 : break;
9451 42 : case CFN_BUILT_IN_SQRTL:
9452 42 : if (call_expr_nargs (_p0) == 1)
9453 : {
9454 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9455 42 : switch (TREE_CODE (_p1))
9456 : {
9457 0 : case REAL_CST:
9458 0 : {
9459 0 : {
9460 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9461 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9462 0 : if (res) return res;
9463 : }
9464 0 : break;
9465 : }
9466 42 : case CALL_EXPR:
9467 42 : switch (get_call_combined_fn (_p1))
9468 : {
9469 0 : case CFN_BUILT_IN_SQRTL:
9470 0 : if (call_expr_nargs (_p1) == 1)
9471 : {
9472 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9473 0 : {
9474 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9475 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9476 0 : if (res) return res;
9477 : }
9478 : }
9479 : break;
9480 : default:;
9481 : }
9482 : break;
9483 : default:;
9484 : }
9485 : }
9486 : break;
9487 46 : case CFN_BUILT_IN_SQRT:
9488 46 : if (call_expr_nargs (_p0) == 1)
9489 : {
9490 46 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9491 46 : switch (TREE_CODE (_p1))
9492 : {
9493 2 : case REAL_CST:
9494 2 : {
9495 2 : {
9496 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9497 2 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9498 2 : if (res) return res;
9499 : }
9500 2 : break;
9501 : }
9502 43 : case CALL_EXPR:
9503 43 : switch (get_call_combined_fn (_p1))
9504 : {
9505 0 : case CFN_BUILT_IN_SQRT:
9506 0 : if (call_expr_nargs (_p1) == 1)
9507 : {
9508 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9509 0 : {
9510 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9511 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9512 0 : if (res) return res;
9513 : }
9514 : }
9515 : break;
9516 : default:;
9517 : }
9518 : break;
9519 : default:;
9520 : }
9521 : }
9522 : break;
9523 0 : case CFN_SQRT:
9524 0 : if (call_expr_nargs (_p0) == 1)
9525 : {
9526 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9527 0 : switch (TREE_CODE (_p1))
9528 : {
9529 0 : case REAL_CST:
9530 0 : {
9531 0 : {
9532 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9533 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9534 0 : if (res) return res;
9535 : }
9536 0 : break;
9537 : }
9538 0 : case CALL_EXPR:
9539 0 : switch (get_call_combined_fn (_p1))
9540 : {
9541 0 : case CFN_SQRT:
9542 0 : if (call_expr_nargs (_p1) == 1)
9543 : {
9544 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9545 0 : {
9546 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9547 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9548 0 : if (res) return res;
9549 : }
9550 : }
9551 : break;
9552 : default:;
9553 : }
9554 : break;
9555 : default:;
9556 : }
9557 : }
9558 : break;
9559 : default:;
9560 : }
9561 : break;
9562 34401980 : default:;
9563 : }
9564 34401980 : switch (TREE_CODE (_p1))
9565 : {
9566 840 : case BIT_XOR_EXPR:
9567 840 : {
9568 840 : tree _q30 = TREE_OPERAND (_p1, 0);
9569 840 : tree _q31 = TREE_OPERAND (_p1, 1);
9570 840 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9571 : {
9572 0 : {
9573 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9574 0 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9575 0 : if (res) return res;
9576 : }
9577 : }
9578 840 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9579 : {
9580 0 : {
9581 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9582 0 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9583 0 : if (res) return res;
9584 : }
9585 : }
9586 : break;
9587 : }
9588 34401980 : default:;
9589 : }
9590 34401980 : switch (TREE_CODE (_p0))
9591 : {
9592 1261211 : case BIT_AND_EXPR:
9593 1261211 : {
9594 1261211 : tree _q20 = TREE_OPERAND (_p0, 0);
9595 1261211 : tree _q21 = TREE_OPERAND (_p0, 1);
9596 1261211 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9597 : {
9598 179 : {
9599 179 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9600 179 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9601 179 : if (res) return res;
9602 : }
9603 : }
9604 1261183 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9605 : {
9606 4493 : {
9607 4493 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9608 4493 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9609 4493 : if (res) return res;
9610 : }
9611 : }
9612 : break;
9613 : }
9614 34401952 : default:;
9615 : }
9616 34401952 : switch (TREE_CODE (_p1))
9617 : {
9618 15626 : case BIT_AND_EXPR:
9619 15626 : {
9620 15626 : tree _q30 = TREE_OPERAND (_p1, 0);
9621 15626 : tree _q31 = TREE_OPERAND (_p1, 1);
9622 15626 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9623 : {
9624 0 : {
9625 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9626 0 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9627 0 : if (res) return res;
9628 : }
9629 : }
9630 15626 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9631 : {
9632 0 : {
9633 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9634 0 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9635 0 : if (res) return res;
9636 : }
9637 : }
9638 : break;
9639 : }
9640 34401952 : default:;
9641 : }
9642 34401952 : switch (TREE_CODE (_p0))
9643 : {
9644 5776656 : CASE_CONVERT:
9645 5776656 : {
9646 5776656 : tree _q20 = TREE_OPERAND (_p0, 0);
9647 5776656 : switch (TREE_CODE (_q20))
9648 : {
9649 0 : case BIT_AND_EXPR:
9650 0 : {
9651 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9652 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9653 0 : switch (TREE_CODE (_q30))
9654 : {
9655 0 : CASE_CONVERT:
9656 0 : {
9657 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9658 0 : switch (TREE_CODE (_q31))
9659 : {
9660 0 : case INTEGER_CST:
9661 0 : {
9662 0 : switch (TREE_CODE (_p1))
9663 : {
9664 0 : CASE_CONVERT:
9665 0 : {
9666 0 : tree _q70 = TREE_OPERAND (_p1, 0);
9667 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
9668 : {
9669 0 : {
9670 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
9671 0 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9672 0 : if (res) return res;
9673 : }
9674 : }
9675 : break;
9676 : }
9677 : default:;
9678 : }
9679 : break;
9680 : }
9681 : default:;
9682 : }
9683 : break;
9684 : }
9685 : default:;
9686 : }
9687 : break;
9688 : }
9689 5776656 : default:;
9690 : }
9691 5776656 : switch (TREE_CODE (_p1))
9692 : {
9693 4170196 : CASE_CONVERT:
9694 4170196 : {
9695 4170196 : tree _q40 = TREE_OPERAND (_p1, 0);
9696 4170196 : switch (TREE_CODE (_q40))
9697 : {
9698 0 : case BIT_AND_EXPR:
9699 0 : {
9700 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9701 0 : tree _q51 = TREE_OPERAND (_q40, 1);
9702 0 : switch (TREE_CODE (_q50))
9703 : {
9704 0 : CASE_CONVERT:
9705 0 : {
9706 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9707 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9708 : {
9709 0 : switch (TREE_CODE (_q51))
9710 : {
9711 0 : case INTEGER_CST:
9712 0 : {
9713 0 : {
9714 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
9715 0 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9716 0 : if (res) return res;
9717 : }
9718 0 : break;
9719 : }
9720 : default:;
9721 : }
9722 : }
9723 : break;
9724 : }
9725 : default:;
9726 : }
9727 : break;
9728 : }
9729 : default:;
9730 : }
9731 : break;
9732 : }
9733 : default:;
9734 : }
9735 : break;
9736 : }
9737 239031 : case BIT_IOR_EXPR:
9738 239031 : {
9739 239031 : tree _q20 = TREE_OPERAND (_p0, 0);
9740 239031 : tree _q21 = TREE_OPERAND (_p0, 1);
9741 239031 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9742 : {
9743 126 : {
9744 126 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9745 126 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9746 126 : if (res) return res;
9747 : }
9748 : }
9749 239023 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9750 : {
9751 255 : {
9752 255 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9753 255 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9754 255 : if (res) return res;
9755 : }
9756 : }
9757 : break;
9758 : }
9759 34401944 : default:;
9760 : }
9761 34401944 : switch (TREE_CODE (_p1))
9762 : {
9763 566 : case BIT_IOR_EXPR:
9764 566 : {
9765 566 : tree _q30 = TREE_OPERAND (_p1, 0);
9766 566 : tree _q31 = TREE_OPERAND (_p1, 1);
9767 566 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9768 : {
9769 0 : {
9770 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
9771 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9772 0 : if (res) return res;
9773 : }
9774 : }
9775 566 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9776 : {
9777 0 : {
9778 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
9779 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9780 0 : if (res) return res;
9781 : }
9782 : }
9783 : break;
9784 : }
9785 34401944 : default:;
9786 : }
9787 34401944 : switch (TREE_CODE (_p0))
9788 : {
9789 5776656 : CASE_CONVERT:
9790 5776656 : {
9791 5776656 : tree _q20 = TREE_OPERAND (_p0, 0);
9792 5776656 : switch (TREE_CODE (_q20))
9793 : {
9794 661 : case BIT_XOR_EXPR:
9795 661 : {
9796 661 : tree _q30 = TREE_OPERAND (_q20, 0);
9797 661 : tree _q31 = TREE_OPERAND (_q20, 1);
9798 661 : switch (TREE_CODE (_q31))
9799 : {
9800 0 : case INTEGER_CST:
9801 0 : {
9802 0 : switch (TREE_CODE (_p1))
9803 : {
9804 0 : case INTEGER_CST:
9805 0 : {
9806 0 : {
9807 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9808 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9809 0 : if (res) return res;
9810 : }
9811 0 : break;
9812 : }
9813 : default:;
9814 : }
9815 : break;
9816 : }
9817 : default:;
9818 : }
9819 : break;
9820 : }
9821 : default:;
9822 : }
9823 : break;
9824 : }
9825 4329 : case BIT_XOR_EXPR:
9826 4329 : {
9827 4329 : tree _q20 = TREE_OPERAND (_p0, 0);
9828 4329 : tree _q21 = TREE_OPERAND (_p0, 1);
9829 4329 : switch (TREE_CODE (_q21))
9830 : {
9831 884 : case INTEGER_CST:
9832 884 : {
9833 884 : switch (TREE_CODE (_p1))
9834 : {
9835 10 : case INTEGER_CST:
9836 10 : {
9837 10 : {
9838 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9839 10 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9840 10 : if (res) return res;
9841 : }
9842 0 : break;
9843 : }
9844 : default:;
9845 : }
9846 : break;
9847 : }
9848 : default:;
9849 : }
9850 : break;
9851 : }
9852 34401934 : default:;
9853 : }
9854 34401934 : {
9855 34401934 : tree _p0_pops[1];
9856 34401934 : if (tree_nop_convert (_p0, _p0_pops))
9857 : {
9858 5064702 : tree _q20 = _p0_pops[0];
9859 5064702 : if (integer_zerop (_p1))
9860 : {
9861 801886 : {
9862 801886 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9863 801886 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR);
9864 801886 : if (res) return res;
9865 : }
9866 : }
9867 : }
9868 : }
9869 33955996 : if (integer_zerop (_p1))
9870 : {
9871 18170742 : {
9872 18170742 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9873 18170742 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR);
9874 18170742 : if (res) return res;
9875 : }
9876 : }
9877 33779214 : switch (TREE_CODE (_p0))
9878 : {
9879 1261183 : case BIT_AND_EXPR:
9880 1261183 : {
9881 1261183 : tree _q20 = TREE_OPERAND (_p0, 0);
9882 1261183 : tree _q21 = TREE_OPERAND (_p0, 1);
9883 1261183 : switch (TREE_CODE (_p1))
9884 : {
9885 14220 : case BIT_AND_EXPR:
9886 14220 : {
9887 14220 : tree _q50 = TREE_OPERAND (_p1, 0);
9888 14220 : tree _q51 = TREE_OPERAND (_p1, 1);
9889 14220 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9890 : {
9891 13975 : {
9892 13975 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9893 13975 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9894 13975 : if (res) return res;
9895 : }
9896 : }
9897 245 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9898 : {
9899 2 : {
9900 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9901 2 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9902 2 : if (res) return res;
9903 : }
9904 : }
9905 243 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9906 : {
9907 1 : {
9908 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
9909 1 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9910 1 : if (res) return res;
9911 : }
9912 : }
9913 242 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9914 : {
9915 7 : {
9916 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
9917 7 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9918 7 : if (res) return res;
9919 : }
9920 : }
9921 : break;
9922 : }
9923 1247198 : default:;
9924 : }
9925 1247198 : if (integer_pow2p (_q21))
9926 : {
9927 643745 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9928 : {
9929 579 : {
9930 579 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9931 579 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
9932 579 : if (res) return res;
9933 : }
9934 : }
9935 : }
9936 1246623 : switch (TREE_CODE (_q20))
9937 : {
9938 192427 : CASE_CONVERT:
9939 192427 : {
9940 192427 : tree _q30 = TREE_OPERAND (_q20, 0);
9941 192427 : if (integer_pow2p (_q21))
9942 : {
9943 95582 : if (integer_zerop (_p1))
9944 : {
9945 95487 : {
9946 95487 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
9947 95487 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
9948 95487 : if (res) return res;
9949 : }
9950 : }
9951 : }
9952 : break;
9953 : }
9954 1242625 : default:;
9955 : }
9956 1242625 : if (integer_pow2p (_q21))
9957 : {
9958 639172 : if (integer_zerop (_p1))
9959 : {
9960 635782 : {
9961 635782 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
9962 635782 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
9963 635782 : if (res) return res;
9964 : }
9965 : }
9966 : }
9967 : break;
9968 : }
9969 5416 : case GE_EXPR:
9970 5416 : {
9971 5416 : tree _q20 = TREE_OPERAND (_p0, 0);
9972 5416 : tree _q21 = TREE_OPERAND (_p0, 1);
9973 5416 : if (integer_zerop (_q21))
9974 : {
9975 954 : switch (TREE_CODE (_p1))
9976 : {
9977 1 : case GE_EXPR:
9978 1 : {
9979 1 : tree _q50 = TREE_OPERAND (_p1, 0);
9980 1 : tree _q51 = TREE_OPERAND (_p1, 1);
9981 1 : if (integer_zerop (_q51))
9982 : {
9983 1 : {
9984 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9985 1 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, GE_EXPR, NE_EXPR, LT_EXPR);
9986 1 : if (res) return res;
9987 : }
9988 : }
9989 : break;
9990 : }
9991 3 : case LT_EXPR:
9992 3 : {
9993 3 : tree _q50 = TREE_OPERAND (_p1, 0);
9994 3 : tree _q51 = TREE_OPERAND (_p1, 1);
9995 3 : if (integer_zerop (_q51))
9996 : {
9997 3 : {
9998 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
9999 3 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10000 3 : if (res) return res;
10001 : }
10002 : }
10003 : break;
10004 : }
10005 : default:;
10006 : }
10007 : }
10008 : break;
10009 : }
10010 15263 : case LT_EXPR:
10011 15263 : {
10012 15263 : tree _q20 = TREE_OPERAND (_p0, 0);
10013 15263 : tree _q21 = TREE_OPERAND (_p0, 1);
10014 15263 : if (integer_zerop (_q21))
10015 : {
10016 8604 : switch (TREE_CODE (_p1))
10017 : {
10018 72 : case LT_EXPR:
10019 72 : {
10020 72 : tree _q50 = TREE_OPERAND (_p1, 0);
10021 72 : tree _q51 = TREE_OPERAND (_p1, 1);
10022 72 : if (integer_zerop (_q51))
10023 : {
10024 72 : {
10025 72 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10026 72 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LT_EXPR);
10027 72 : if (res) return res;
10028 : }
10029 : }
10030 : break;
10031 : }
10032 17 : case GE_EXPR:
10033 17 : {
10034 17 : tree _q50 = TREE_OPERAND (_p1, 0);
10035 17 : tree _q51 = TREE_OPERAND (_p1, 1);
10036 17 : if (integer_zerop (_q51))
10037 : {
10038 17 : {
10039 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10040 17 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10041 17 : if (res) return res;
10042 : }
10043 : }
10044 : break;
10045 : }
10046 : default:;
10047 : }
10048 : }
10049 : break;
10050 : }
10051 239023 : case BIT_IOR_EXPR:
10052 239023 : {
10053 239023 : tree _q20 = TREE_OPERAND (_p0, 0);
10054 239023 : tree _q21 = TREE_OPERAND (_p0, 1);
10055 239023 : switch (TREE_CODE (_q21))
10056 : {
10057 261 : CASE_CONVERT:
10058 261 : {
10059 261 : tree _q40 = TREE_OPERAND (_q21, 0);
10060 261 : switch (TREE_CODE (_q40))
10061 : {
10062 0 : case NE_EXPR:
10063 0 : {
10064 0 : tree _q50 = TREE_OPERAND (_q40, 0);
10065 0 : tree _q51 = TREE_OPERAND (_q40, 1);
10066 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10067 : {
10068 0 : if (integer_zerop (_q51))
10069 : {
10070 0 : if (integer_zerop (_p1))
10071 : {
10072 0 : {
10073 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10074 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR);
10075 0 : if (res) return res;
10076 : }
10077 : }
10078 : }
10079 : }
10080 : break;
10081 : }
10082 : default:;
10083 : }
10084 : break;
10085 : }
10086 239023 : default:;
10087 : }
10088 239023 : switch (TREE_CODE (_q20))
10089 : {
10090 800 : CASE_CONVERT:
10091 800 : {
10092 800 : tree _q30 = TREE_OPERAND (_q20, 0);
10093 800 : switch (TREE_CODE (_q30))
10094 : {
10095 0 : case NE_EXPR:
10096 0 : {
10097 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10098 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10099 0 : if (integer_zerop (_q41))
10100 : {
10101 0 : if ((_q21 == _q40 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q40, 0) && types_match (_q21, _q40)))
10102 : {
10103 0 : if (integer_zerop (_p1))
10104 : {
10105 0 : {
10106 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
10107 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR);
10108 0 : if (res) return res;
10109 : }
10110 : }
10111 : }
10112 : }
10113 : break;
10114 : }
10115 : default:;
10116 : }
10117 : break;
10118 : }
10119 239023 : default:;
10120 : }
10121 239023 : switch (TREE_CODE (_q21))
10122 : {
10123 24 : case NE_EXPR:
10124 24 : {
10125 24 : tree _q40 = TREE_OPERAND (_q21, 0);
10126 24 : tree _q41 = TREE_OPERAND (_q21, 1);
10127 24 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10128 : {
10129 0 : if (integer_zerop (_q41))
10130 : {
10131 0 : if (integer_zerop (_p1))
10132 : {
10133 0 : {
10134 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10135 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR);
10136 0 : if (res) return res;
10137 : }
10138 : }
10139 : }
10140 : }
10141 : break;
10142 : }
10143 239023 : default:;
10144 : }
10145 239023 : switch (TREE_CODE (_q20))
10146 : {
10147 2 : case NE_EXPR:
10148 2 : {
10149 2 : tree _q30 = TREE_OPERAND (_q20, 0);
10150 2 : tree _q31 = TREE_OPERAND (_q20, 1);
10151 2 : if (integer_zerop (_q31))
10152 : {
10153 1 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
10154 : {
10155 0 : if (integer_zerop (_p1))
10156 : {
10157 0 : {
10158 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10159 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR);
10160 0 : if (res) return res;
10161 : }
10162 : }
10163 : }
10164 : }
10165 : break;
10166 : }
10167 : default:;
10168 : }
10169 : break;
10170 : }
10171 5330718 : CASE_CONVERT:
10172 5330718 : {
10173 5330718 : tree _q20 = TREE_OPERAND (_p0, 0);
10174 5330718 : switch (TREE_CODE (_q20))
10175 : {
10176 4076249 : case ADDR_EXPR:
10177 4076249 : {
10178 4076249 : switch (TREE_CODE (_p1))
10179 : {
10180 4046904 : CASE_CONVERT:
10181 4046904 : {
10182 4046904 : tree _q40 = TREE_OPERAND (_p1, 0);
10183 4046904 : switch (TREE_CODE (_q40))
10184 : {
10185 4046904 : case ADDR_EXPR:
10186 4046904 : {
10187 4046904 : {
10188 4046904 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10189 4046904 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10190 4046904 : if (res) return res;
10191 : }
10192 33 : break;
10193 : }
10194 : default:;
10195 : }
10196 : break;
10197 : }
10198 21251 : case ADDR_EXPR:
10199 21251 : {
10200 21251 : {
10201 21251 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10202 21251 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10203 21251 : if (res) return res;
10204 : }
10205 7935 : break;
10206 : }
10207 : default:;
10208 : }
10209 : break;
10210 : }
10211 : default:;
10212 : }
10213 : break;
10214 : }
10215 60399 : case ADDR_EXPR:
10216 60399 : {
10217 60399 : switch (TREE_CODE (_p1))
10218 : {
10219 294 : CASE_CONVERT:
10220 294 : {
10221 294 : tree _q30 = TREE_OPERAND (_p1, 0);
10222 294 : switch (TREE_CODE (_q30))
10223 : {
10224 294 : case ADDR_EXPR:
10225 294 : {
10226 294 : {
10227 294 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10228 294 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10229 294 : if (res) return res;
10230 : }
10231 143 : break;
10232 : }
10233 : default:;
10234 : }
10235 : break;
10236 : }
10237 51882 : case ADDR_EXPR:
10238 51882 : {
10239 51882 : {
10240 51882 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10241 51882 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10242 51882 : if (res) return res;
10243 : }
10244 3442 : break;
10245 : }
10246 : default:;
10247 : }
10248 : break;
10249 : }
10250 29639136 : default:;
10251 : }
10252 29639136 : {
10253 29639136 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10254 29639136 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10255 29639136 : if (res) return res;
10256 : }
10257 29630384 : switch (TREE_CODE (_p0))
10258 : {
10259 1270531 : CASE_CONVERT:
10260 1270531 : {
10261 1270531 : tree _q20 = TREE_OPERAND (_p0, 0);
10262 1270531 : switch (TREE_CODE (_p1))
10263 : {
10264 820070 : case INTEGER_CST:
10265 820070 : {
10266 820070 : {
10267 820070 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10268 820070 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, NE_EXPR);
10269 820070 : if (res) return res;
10270 : }
10271 811529 : break;
10272 : }
10273 1261990 : default:;
10274 : }
10275 1261990 : switch (TREE_CODE (_q20))
10276 : {
10277 8 : case NE_EXPR:
10278 8 : {
10279 8 : tree _q30 = TREE_OPERAND (_q20, 0);
10280 8 : tree _q31 = TREE_OPERAND (_q20, 1);
10281 8 : switch (TREE_CODE (_q31))
10282 : {
10283 8 : case INTEGER_CST:
10284 8 : {
10285 8 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10286 : {
10287 0 : {
10288 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10289 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10290 0 : if (res) return res;
10291 : }
10292 : }
10293 : break;
10294 : }
10295 : default:;
10296 : }
10297 : break;
10298 : }
10299 0 : case EQ_EXPR:
10300 0 : {
10301 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10302 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10303 0 : switch (TREE_CODE (_q31))
10304 : {
10305 0 : case INTEGER_CST:
10306 0 : {
10307 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10308 : {
10309 0 : {
10310 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10311 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10312 0 : if (res) return res;
10313 : }
10314 : }
10315 : break;
10316 : }
10317 : default:;
10318 : }
10319 : break;
10320 : }
10321 : default:;
10322 : }
10323 : break;
10324 : }
10325 29621843 : default:;
10326 : }
10327 29621843 : switch (TREE_CODE (_p1))
10328 : {
10329 515655 : CASE_CONVERT:
10330 515655 : {
10331 515655 : tree _q30 = TREE_OPERAND (_p1, 0);
10332 515655 : switch (TREE_CODE (_q30))
10333 : {
10334 0 : case NE_EXPR:
10335 0 : {
10336 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10337 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10338 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10339 : {
10340 0 : switch (TREE_CODE (_q41))
10341 : {
10342 0 : case INTEGER_CST:
10343 0 : {
10344 0 : {
10345 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10346 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10347 0 : if (res) return res;
10348 : }
10349 0 : break;
10350 : }
10351 : default:;
10352 : }
10353 : }
10354 : break;
10355 : }
10356 0 : case EQ_EXPR:
10357 0 : {
10358 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10359 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10360 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10361 : {
10362 0 : switch (TREE_CODE (_q41))
10363 : {
10364 0 : case INTEGER_CST:
10365 0 : {
10366 0 : {
10367 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10368 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10369 0 : if (res) return res;
10370 : }
10371 0 : break;
10372 : }
10373 : default:;
10374 : }
10375 : }
10376 : break;
10377 : }
10378 : default:;
10379 : }
10380 : break;
10381 : }
10382 29621843 : default:;
10383 : }
10384 29621843 : if (integer_zerop (_p1))
10385 : {
10386 17968491 : {
10387 17968491 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10388 17968491 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10389 17968491 : && types_match (type, TREE_TYPE (captures[0]))
10390 : )
10391 : {
10392 3335070 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1568;
10393 3335070 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1568;
10394 3335070 : {
10395 3335070 : tree res_op0;
10396 3335070 : res_op0 = captures[0];
10397 3335070 : tree _r;
10398 3335070 : _r = non_lvalue_loc (loc, res_op0);
10399 3335070 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10400 3335070 : return _r;
10401 : }
10402 : next_after_fail1568:;
10403 : }
10404 : }
10405 : }
10406 26286773 : switch (TREE_CODE (_p0))
10407 : {
10408 961587 : case BIT_AND_EXPR:
10409 961587 : {
10410 961587 : tree _q20 = TREE_OPERAND (_p0, 0);
10411 961587 : tree _q21 = TREE_OPERAND (_p0, 1);
10412 961587 : switch (TREE_CODE (_q21))
10413 : {
10414 2059 : case VECTOR_CST:
10415 2059 : {
10416 2059 : if (integer_zerop (_p1))
10417 : {
10418 2059 : {
10419 2059 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10420 2059 : const enum tree_code cmp = NE_EXPR;
10421 2059 : const enum tree_code icmp = GT_EXPR;
10422 2059 : {
10423 2059 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10424 2059 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10425 : )
10426 : {
10427 13 : {
10428 13 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10429 13 : ? optab_vector : optab_default;
10430 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10431 13 : if (target_supports_op_p (utype, icmp, optab)
10432 13 : || (optimize_vectors_before_lowering_p ()
10433 7 : && (!target_supports_op_p (type, cmp, optab)
10434 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10435 : )
10436 : {
10437 7 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10438 : )
10439 : {
10440 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1569;
10441 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1569;
10442 0 : {
10443 0 : tree res_op0;
10444 0 : res_op0 = captures[1];
10445 0 : tree res_op1;
10446 0 : res_op1 = csts;
10447 0 : tree _r;
10448 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10449 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10450 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10451 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
10452 0 : return _r;
10453 : }
10454 2052 : next_after_fail1569:;
10455 : }
10456 : else
10457 : {
10458 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1570;
10459 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1570;
10460 7 : {
10461 7 : tree res_op0;
10462 7 : {
10463 7 : tree _o1[1], _r1;
10464 7 : _o1[0] = captures[1];
10465 7 : if (TREE_TYPE (_o1[0]) != utype)
10466 : {
10467 7 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10468 : }
10469 : else
10470 : _r1 = _o1[0];
10471 7 : res_op0 = _r1;
10472 : }
10473 7 : tree res_op1;
10474 7 : res_op1 = csts;
10475 7 : tree _r;
10476 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10477 7 : if (TREE_SIDE_EFFECTS (captures[2]))
10478 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10479 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
10480 7 : return _r;
10481 : }
10482 2052 : next_after_fail1570:;
10483 : }
10484 : }
10485 : }
10486 : }
10487 : }
10488 : }
10489 : }
10490 : break;
10491 : }
10492 766275 : case INTEGER_CST:
10493 766275 : {
10494 766275 : if (integer_zerop (_p1))
10495 : {
10496 730781 : {
10497 730781 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10498 730781 : const enum tree_code cmp = NE_EXPR;
10499 730781 : const enum tree_code icmp = GT_EXPR;
10500 730781 : {
10501 730781 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10502 730781 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10503 : )
10504 : {
10505 1261 : {
10506 1261 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10507 1261 : ? optab_vector : optab_default;
10508 1261 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10509 1261 : if (target_supports_op_p (utype, icmp, optab)
10510 1261 : || (optimize_vectors_before_lowering_p ()
10511 1092 : && (!target_supports_op_p (type, cmp, optab)
10512 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10513 : )
10514 : {
10515 1092 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10516 : )
10517 : {
10518 989 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1571;
10519 989 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1571;
10520 989 : {
10521 989 : tree res_op0;
10522 989 : res_op0 = captures[1];
10523 989 : tree res_op1;
10524 989 : res_op1 = csts;
10525 989 : tree _r;
10526 989 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10527 989 : if (TREE_SIDE_EFFECTS (captures[2]))
10528 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10529 989 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
10530 989 : return _r;
10531 : }
10532 729689 : next_after_fail1571:;
10533 : }
10534 : else
10535 : {
10536 103 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1572;
10537 103 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1572;
10538 103 : {
10539 103 : tree res_op0;
10540 103 : {
10541 103 : tree _o1[1], _r1;
10542 103 : _o1[0] = captures[1];
10543 103 : if (TREE_TYPE (_o1[0]) != utype)
10544 : {
10545 103 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10546 : }
10547 : else
10548 : _r1 = _o1[0];
10549 103 : res_op0 = _r1;
10550 : }
10551 103 : tree res_op1;
10552 103 : res_op1 = csts;
10553 103 : tree _r;
10554 103 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10555 103 : if (TREE_SIDE_EFFECTS (captures[2]))
10556 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10557 103 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
10558 103 : return _r;
10559 : }
10560 729689 : next_after_fail1572:;
10561 : }
10562 : }
10563 : }
10564 : }
10565 : }
10566 : }
10567 : }
10568 : break;
10569 : }
10570 960488 : default:;
10571 : }
10572 960488 : switch (TREE_CODE (_q20))
10573 : {
10574 0 : case VECTOR_CST:
10575 0 : {
10576 0 : if (integer_zerop (_p1))
10577 : {
10578 0 : {
10579 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10580 0 : const enum tree_code cmp = NE_EXPR;
10581 0 : const enum tree_code icmp = GT_EXPR;
10582 0 : {
10583 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10584 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10585 : )
10586 : {
10587 0 : {
10588 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10589 0 : ? optab_vector : optab_default;
10590 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10591 0 : if (target_supports_op_p (utype, icmp, optab)
10592 0 : || (optimize_vectors_before_lowering_p ()
10593 0 : && (!target_supports_op_p (type, cmp, optab)
10594 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10595 : )
10596 : {
10597 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10598 : )
10599 : {
10600 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1573;
10601 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1573;
10602 0 : {
10603 0 : tree res_op0;
10604 0 : res_op0 = captures[1];
10605 0 : tree res_op1;
10606 0 : res_op1 = csts;
10607 0 : tree _r;
10608 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10609 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10610 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10611 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
10612 0 : return _r;
10613 : }
10614 0 : next_after_fail1573:;
10615 : }
10616 : else
10617 : {
10618 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1574;
10619 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1574;
10620 0 : {
10621 0 : tree res_op0;
10622 0 : {
10623 0 : tree _o1[1], _r1;
10624 0 : _o1[0] = captures[1];
10625 0 : if (TREE_TYPE (_o1[0]) != utype)
10626 : {
10627 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10628 : }
10629 : else
10630 : _r1 = _o1[0];
10631 0 : res_op0 = _r1;
10632 : }
10633 0 : tree res_op1;
10634 0 : res_op1 = csts;
10635 0 : tree _r;
10636 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10637 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10638 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10639 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
10640 0 : return _r;
10641 : }
10642 0 : next_after_fail1574:;
10643 : }
10644 : }
10645 : }
10646 : }
10647 : }
10648 : }
10649 : }
10650 : break;
10651 : }
10652 0 : case INTEGER_CST:
10653 0 : {
10654 0 : if (integer_zerop (_p1))
10655 : {
10656 0 : {
10657 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10658 0 : const enum tree_code cmp = NE_EXPR;
10659 0 : const enum tree_code icmp = GT_EXPR;
10660 0 : {
10661 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10662 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10663 : )
10664 : {
10665 0 : {
10666 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10667 0 : ? optab_vector : optab_default;
10668 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10669 0 : if (target_supports_op_p (utype, icmp, optab)
10670 0 : || (optimize_vectors_before_lowering_p ()
10671 0 : && (!target_supports_op_p (type, cmp, optab)
10672 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10673 : )
10674 : {
10675 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10676 : )
10677 : {
10678 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1575;
10679 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1575;
10680 0 : {
10681 0 : tree res_op0;
10682 0 : res_op0 = captures[1];
10683 0 : tree res_op1;
10684 0 : res_op1 = csts;
10685 0 : tree _r;
10686 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10687 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10688 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10689 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
10690 0 : return _r;
10691 : }
10692 0 : next_after_fail1575:;
10693 : }
10694 : else
10695 : {
10696 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1576;
10697 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1576;
10698 0 : {
10699 0 : tree res_op0;
10700 0 : {
10701 0 : tree _o1[1], _r1;
10702 0 : _o1[0] = captures[1];
10703 0 : if (TREE_TYPE (_o1[0]) != utype)
10704 : {
10705 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10706 : }
10707 : else
10708 : _r1 = _o1[0];
10709 0 : res_op0 = _r1;
10710 : }
10711 0 : tree res_op1;
10712 0 : res_op1 = csts;
10713 0 : tree _r;
10714 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10715 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10716 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10717 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
10718 0 : return _r;
10719 : }
10720 0 : next_after_fail1576:;
10721 : }
10722 : }
10723 : }
10724 : }
10725 : }
10726 : }
10727 : }
10728 : break;
10729 : }
10730 : default:;
10731 : }
10732 : break;
10733 : }
10734 20381 : case RSHIFT_EXPR:
10735 20381 : {
10736 20381 : tree _q20 = TREE_OPERAND (_p0, 0);
10737 20381 : tree _q21 = TREE_OPERAND (_p0, 1);
10738 20381 : switch (TREE_CODE (_q20))
10739 : {
10740 1 : case MULT_EXPR:
10741 1 : {
10742 1 : tree _q30 = TREE_OPERAND (_q20, 0);
10743 1 : tree _q31 = TREE_OPERAND (_q20, 1);
10744 1 : switch (TREE_CODE (_q30))
10745 : {
10746 1 : CASE_CONVERT:
10747 1 : {
10748 1 : tree _q40 = TREE_OPERAND (_q30, 0);
10749 1 : switch (TREE_CODE (_q31))
10750 : {
10751 1 : CASE_CONVERT:
10752 1 : {
10753 1 : tree _q60 = TREE_OPERAND (_q31, 0);
10754 1 : switch (TREE_CODE (_q21))
10755 : {
10756 1 : case INTEGER_CST:
10757 1 : {
10758 1 : if (integer_zerop (_p1))
10759 : {
10760 1 : {
10761 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
10762 1 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR);
10763 1 : if (res) return res;
10764 : }
10765 : }
10766 : break;
10767 : }
10768 : default:;
10769 : }
10770 : break;
10771 : }
10772 : default:;
10773 : }
10774 : break;
10775 : }
10776 : default:;
10777 : }
10778 : break;
10779 : }
10780 : default:;
10781 : }
10782 : break;
10783 : }
10784 1325990 : case PLUS_EXPR:
10785 1325990 : {
10786 1325990 : tree _q20 = TREE_OPERAND (_p0, 0);
10787 1325990 : tree _q21 = TREE_OPERAND (_p0, 1);
10788 1325990 : switch (TREE_CODE (_q21))
10789 : {
10790 1202090 : case INTEGER_CST:
10791 1202090 : {
10792 1202090 : switch (TREE_CODE (_p1))
10793 : {
10794 711851 : case INTEGER_CST:
10795 711851 : {
10796 711851 : {
10797 711851 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10798 711851 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR);
10799 711851 : if (res) return res;
10800 : }
10801 361 : break;
10802 : }
10803 : default:;
10804 : }
10805 : break;
10806 : }
10807 : default:;
10808 : }
10809 : break;
10810 : }
10811 68469 : case MINUS_EXPR:
10812 68469 : {
10813 68469 : tree _q20 = TREE_OPERAND (_p0, 0);
10814 68469 : tree _q21 = TREE_OPERAND (_p0, 1);
10815 68469 : switch (TREE_CODE (_q21))
10816 : {
10817 193 : case INTEGER_CST:
10818 193 : {
10819 193 : switch (TREE_CODE (_p1))
10820 : {
10821 72 : case INTEGER_CST:
10822 72 : {
10823 72 : {
10824 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10825 72 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR);
10826 72 : if (res) return res;
10827 : }
10828 72 : break;
10829 : }
10830 : default:;
10831 : }
10832 : break;
10833 : }
10834 68469 : default:;
10835 : }
10836 68469 : switch (TREE_CODE (_q20))
10837 : {
10838 1682 : case INTEGER_CST:
10839 1682 : {
10840 1682 : switch (TREE_CODE (_p1))
10841 : {
10842 61 : case INTEGER_CST:
10843 61 : {
10844 61 : {
10845 61 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10846 61 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10847 61 : if (res) return res;
10848 : }
10849 0 : break;
10850 : }
10851 : default:;
10852 : }
10853 : break;
10854 : }
10855 : default:;
10856 : }
10857 : break;
10858 : }
10859 2337680 : case CALL_EXPR:
10860 2337680 : switch (get_call_combined_fn (_p0))
10861 : {
10862 224 : case CFN_BUILT_IN_CLZ:
10863 224 : if (call_expr_nargs (_p0) == 1)
10864 : {
10865 224 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10866 224 : switch (TREE_CODE (_p1))
10867 : {
10868 210 : case INTEGER_CST:
10869 210 : {
10870 210 : {
10871 210 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10872 210 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZ);
10873 210 : if (res) return res;
10874 : }
10875 135 : break;
10876 : }
10877 : default:;
10878 : }
10879 : }
10880 : break;
10881 246 : case CFN_BUILT_IN_CTZ:
10882 246 : if (call_expr_nargs (_p0) == 1)
10883 : {
10884 246 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10885 246 : switch (TREE_CODE (_p1))
10886 : {
10887 200 : case INTEGER_CST:
10888 200 : {
10889 200 : {
10890 200 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10891 200 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZ);
10892 200 : if (res) return res;
10893 : }
10894 0 : break;
10895 : }
10896 : default:;
10897 : }
10898 : }
10899 : break;
10900 31 : case CFN_BUILT_IN_FFS:
10901 31 : if (call_expr_nargs (_p0) == 1)
10902 : {
10903 31 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10904 31 : switch (TREE_CODE (_p1))
10905 : {
10906 11 : case INTEGER_CST:
10907 11 : {
10908 11 : {
10909 11 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10910 11 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFS);
10911 11 : if (res) return res;
10912 : }
10913 0 : break;
10914 : }
10915 : default:;
10916 : }
10917 : }
10918 : break;
10919 0 : case CFN_REDUC_IOR:
10920 0 : if (call_expr_nargs (_p0) == 1)
10921 : {
10922 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10923 0 : if (integer_zerop (_p1))
10924 : {
10925 0 : {
10926 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10927 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR);
10928 0 : if (res) return res;
10929 : }
10930 : }
10931 : }
10932 : break;
10933 0 : case CFN_BUILT_IN_FFSIMAX:
10934 0 : if (call_expr_nargs (_p0) == 1)
10935 : {
10936 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10937 0 : switch (TREE_CODE (_p1))
10938 : {
10939 0 : case INTEGER_CST:
10940 0 : {
10941 0 : {
10942 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10943 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSIMAX);
10944 0 : if (res) return res;
10945 : }
10946 0 : break;
10947 : }
10948 : default:;
10949 : }
10950 : }
10951 : break;
10952 13 : case CFN_BUILT_IN_POPCOUNT:
10953 13 : if (call_expr_nargs (_p0) == 1)
10954 : {
10955 13 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10956 13 : if (integer_zerop (_p1))
10957 : {
10958 1 : {
10959 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10960 1 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT);
10961 1 : if (res) return res;
10962 : }
10963 : }
10964 : }
10965 : break;
10966 87 : case CFN_BUILT_IN_CLZL:
10967 87 : if (call_expr_nargs (_p0) == 1)
10968 : {
10969 87 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10970 87 : switch (TREE_CODE (_p1))
10971 : {
10972 79 : case INTEGER_CST:
10973 79 : {
10974 79 : {
10975 79 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10976 79 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZL);
10977 79 : if (res) return res;
10978 : }
10979 43 : break;
10980 : }
10981 : default:;
10982 : }
10983 : }
10984 : break;
10985 85 : case CFN_BUILT_IN_CTZL:
10986 85 : if (call_expr_nargs (_p0) == 1)
10987 : {
10988 85 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10989 85 : switch (TREE_CODE (_p1))
10990 : {
10991 77 : case INTEGER_CST:
10992 77 : {
10993 77 : {
10994 77 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10995 77 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZL);
10996 77 : if (res) return res;
10997 : }
10998 16 : break;
10999 : }
11000 : default:;
11001 : }
11002 : }
11003 : break;
11004 8 : case CFN_BUILT_IN_FFSL:
11005 8 : if (call_expr_nargs (_p0) == 1)
11006 : {
11007 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11008 8 : switch (TREE_CODE (_p1))
11009 : {
11010 0 : case INTEGER_CST:
11011 0 : {
11012 0 : {
11013 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11014 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSL);
11015 0 : if (res) return res;
11016 : }
11017 0 : break;
11018 : }
11019 : default:;
11020 : }
11021 : }
11022 : break;
11023 11 : case CFN_BUILT_IN_POPCOUNTLL:
11024 11 : if (call_expr_nargs (_p0) == 1)
11025 : {
11026 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11027 11 : if (integer_zerop (_p1))
11028 : {
11029 1 : {
11030 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11031 1 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL);
11032 1 : if (res) return res;
11033 : }
11034 : }
11035 : }
11036 : break;
11037 0 : case CFN_BUILT_IN_CTZIMAX:
11038 0 : if (call_expr_nargs (_p0) == 1)
11039 : {
11040 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11041 0 : switch (TREE_CODE (_p1))
11042 : {
11043 0 : case INTEGER_CST:
11044 0 : {
11045 0 : {
11046 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11047 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
11048 0 : if (res) return res;
11049 : }
11050 0 : break;
11051 : }
11052 : default:;
11053 : }
11054 : }
11055 : break;
11056 0 : case CFN_POPCOUNT:
11057 0 : if (call_expr_nargs (_p0) == 1)
11058 : {
11059 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11060 0 : if (integer_zerop (_p1))
11061 : {
11062 0 : {
11063 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11064 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_POPCOUNT);
11065 0 : if (res) return res;
11066 : }
11067 : }
11068 : }
11069 : break;
11070 0 : case CFN_CLZ:
11071 0 : if (call_expr_nargs (_p0) == 1)
11072 : {
11073 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11074 0 : switch (TREE_CODE (_p1))
11075 : {
11076 0 : case INTEGER_CST:
11077 0 : {
11078 0 : {
11079 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11080 0 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_CLZ);
11081 0 : if (res) return res;
11082 : }
11083 0 : break;
11084 : }
11085 : default:;
11086 : }
11087 : }
11088 0 : if (call_expr_nargs (_p0) == 2)
11089 : {
11090 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11091 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11092 0 : switch (TREE_CODE (_p1))
11093 : {
11094 0 : case INTEGER_CST:
11095 0 : {
11096 0 : {
11097 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11098 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
11099 0 : if (res) return res;
11100 : }
11101 0 : break;
11102 : }
11103 : default:;
11104 : }
11105 : }
11106 : break;
11107 0 : case CFN_CTZ:
11108 0 : if (call_expr_nargs (_p0) == 1)
11109 : {
11110 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11111 0 : switch (TREE_CODE (_p1))
11112 : {
11113 0 : case INTEGER_CST:
11114 0 : {
11115 0 : {
11116 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11117 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_CTZ);
11118 0 : if (res) return res;
11119 : }
11120 0 : break;
11121 : }
11122 : default:;
11123 : }
11124 : }
11125 0 : if (call_expr_nargs (_p0) == 2)
11126 : {
11127 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11128 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11129 0 : switch (TREE_CODE (_p1))
11130 : {
11131 0 : case INTEGER_CST:
11132 0 : {
11133 0 : {
11134 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11135 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR);
11136 0 : if (res) return res;
11137 : }
11138 0 : break;
11139 : }
11140 : default:;
11141 : }
11142 : }
11143 : break;
11144 0 : case CFN_FFS:
11145 0 : if (call_expr_nargs (_p0) == 1)
11146 : {
11147 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11148 0 : switch (TREE_CODE (_p1))
11149 : {
11150 0 : case INTEGER_CST:
11151 0 : {
11152 0 : {
11153 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11154 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_FFS);
11155 0 : if (res) return res;
11156 : }
11157 0 : break;
11158 : }
11159 : default:;
11160 : }
11161 : }
11162 : break;
11163 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
11164 0 : if (call_expr_nargs (_p0) == 1)
11165 : {
11166 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11167 0 : if (integer_zerop (_p1))
11168 : {
11169 0 : {
11170 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11171 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
11172 0 : if (res) return res;
11173 : }
11174 : }
11175 : }
11176 : break;
11177 0 : case CFN_BUILT_IN_CLZIMAX:
11178 0 : if (call_expr_nargs (_p0) == 1)
11179 : {
11180 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11181 0 : switch (TREE_CODE (_p1))
11182 : {
11183 0 : case INTEGER_CST:
11184 0 : {
11185 0 : {
11186 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11187 0 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZIMAX);
11188 0 : if (res) return res;
11189 : }
11190 0 : break;
11191 : }
11192 : default:;
11193 : }
11194 : }
11195 : break;
11196 12 : case CFN_BUILT_IN_POPCOUNTL:
11197 12 : if (call_expr_nargs (_p0) == 1)
11198 : {
11199 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11200 12 : if (integer_zerop (_p1))
11201 : {
11202 1 : {
11203 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11204 1 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL);
11205 1 : if (res) return res;
11206 : }
11207 : }
11208 : }
11209 : break;
11210 52 : case CFN_BUILT_IN_CLZLL:
11211 52 : if (call_expr_nargs (_p0) == 1)
11212 : {
11213 52 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11214 52 : switch (TREE_CODE (_p1))
11215 : {
11216 42 : case INTEGER_CST:
11217 42 : {
11218 42 : {
11219 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11220 42 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZLL);
11221 42 : if (res) return res;
11222 : }
11223 18 : break;
11224 : }
11225 : default:;
11226 : }
11227 : }
11228 : break;
11229 74 : case CFN_BUILT_IN_CTZLL:
11230 74 : if (call_expr_nargs (_p0) == 1)
11231 : {
11232 74 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11233 74 : switch (TREE_CODE (_p1))
11234 : {
11235 64 : case INTEGER_CST:
11236 64 : {
11237 64 : {
11238 64 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11239 64 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZLL);
11240 64 : if (res) return res;
11241 : }
11242 16 : break;
11243 : }
11244 : default:;
11245 : }
11246 : }
11247 : break;
11248 11 : case CFN_BUILT_IN_FFSLL:
11249 11 : if (call_expr_nargs (_p0) == 1)
11250 : {
11251 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11252 11 : switch (TREE_CODE (_p1))
11253 : {
11254 1 : case INTEGER_CST:
11255 1 : {
11256 1 : {
11257 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11258 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSLL);
11259 1 : if (res) return res;
11260 : }
11261 0 : break;
11262 : }
11263 : default:;
11264 : }
11265 : }
11266 : break;
11267 : default:;
11268 : }
11269 : break;
11270 : default:;
11271 : }
11272 : return NULL_TREE;
11273 : }
11274 :
11275 : tree
11276 14778 : 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)
11277 : {
11278 14778 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11279 14778 : switch (TREE_CODE (_p1))
11280 : {
11281 0 : case BIT_FIELD_REF:
11282 0 : {
11283 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11284 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11285 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11286 0 : {
11287 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
11288 0 : if (VECTOR_TYPE_P (type)
11289 0 : && (VECTOR_MODE_P (TYPE_MODE (type))
11290 : || optimize_vectors_before_lowering_p ())
11291 0 : && operand_equal_p (TYPE_SIZE (TREE_TYPE (captures[0])),
11292 0 : TYPE_SIZE (TREE_TYPE (captures[2])), 0)
11293 0 : && types_match (TREE_TYPE (TREE_TYPE (captures[0])), TREE_TYPE (captures[1]))
11294 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
11295 0 : && multiple_p (wi::to_poly_offset (captures[4]),
11296 0 : wi::to_poly_offset (TYPE_SIZE (TREE_TYPE (type))))
11297 : )
11298 : {
11299 0 : {
11300 0 : unsigned HOST_WIDE_INT elsz
11301 0 : = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))));
11302 0 : poly_uint64 relt = exact_div (tree_to_poly_uint64 (captures[4]), elsz);
11303 0 : poly_uint64 ielt = exact_div (tree_to_poly_uint64 (captures[5]), elsz);
11304 0 : unsigned nunits = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11305 0 : vec_perm_builder builder;
11306 0 : builder.new_vector (nunits, nunits, 1);
11307 0 : for (unsigned i = 0; i < nunits; ++i)
11308 0 : builder.quick_push (known_eq (ielt, i) ? nunits + relt : i);
11309 0 : vec_perm_indices sel (builder, 2, nunits);
11310 0 : if (!VECTOR_MODE_P (TYPE_MODE (type))
11311 0 : || can_vec_perm_const_p (TYPE_MODE (type),
11312 0 : TYPE_MODE (type), sel, false)
11313 : )
11314 : {
11315 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1974;
11316 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1974;
11317 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1974;
11318 0 : {
11319 0 : tree res_op0;
11320 0 : res_op0 = captures[0];
11321 0 : tree res_op1;
11322 0 : {
11323 0 : tree _o1[1], _r1;
11324 0 : _o1[0] = captures[2];
11325 0 : if (TREE_TYPE (_o1[0]) != type)
11326 : {
11327 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
11328 : }
11329 : else
11330 : _r1 = _o1[0];
11331 0 : res_op1 = _r1;
11332 : }
11333 0 : tree res_op2;
11334 0 : res_op2 = vec_perm_indices_to_tree (build_vector_type (ssizetype, nunits),
11335 : sel);
11336 0 : tree _r;
11337 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11338 0 : if (TREE_SIDE_EFFECTS (captures[3]))
11339 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
11340 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1103, __FILE__, __LINE__, true);
11341 0 : return _r;
11342 : }
11343 0 : next_after_fail1974:;
11344 : }
11345 0 : }
11346 : }
11347 : }
11348 0 : break;
11349 : }
11350 : default:;
11351 : }
11352 : return NULL_TREE;
11353 : }
11354 :
11355 : tree
11356 776548 : 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)
11357 : {
11358 776548 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11359 776548 : switch (TREE_CODE (_p0))
11360 : {
11361 0 : case PLUS_EXPR:
11362 0 : {
11363 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11364 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11365 0 : switch (TREE_CODE (_p1))
11366 : {
11367 0 : case MINUS_EXPR:
11368 0 : {
11369 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11370 0 : tree _q51 = TREE_OPERAND (_p1, 1);
11371 0 : switch (TREE_CODE (_p2))
11372 : {
11373 0 : case VECTOR_CST:
11374 0 : {
11375 0 : {
11376 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51, _p2 };
11377 0 : tree res = generic_simplify_626 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR, MINUS_EXPR);
11378 0 : if (res) return res;
11379 : }
11380 0 : break;
11381 : }
11382 : default:;
11383 : }
11384 : break;
11385 : }
11386 : default:;
11387 : }
11388 : break;
11389 : }
11390 0 : case MINUS_EXPR:
11391 0 : {
11392 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11393 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11394 0 : switch (TREE_CODE (_p1))
11395 : {
11396 0 : case PLUS_EXPR:
11397 0 : {
11398 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11399 0 : tree _q51 = TREE_OPERAND (_p1, 1);
11400 0 : switch (TREE_CODE (_p2))
11401 : {
11402 0 : case VECTOR_CST:
11403 0 : {
11404 0 : {
11405 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51, _p2 };
11406 0 : tree res = generic_simplify_626 (loc, type, _p0, _p1, _p2, captures, MINUS_EXPR, PLUS_EXPR);
11407 0 : if (res) return res;
11408 : }
11409 0 : break;
11410 : }
11411 : default:;
11412 : }
11413 : break;
11414 : }
11415 : default:;
11416 : }
11417 : break;
11418 : }
11419 776548 : default:;
11420 : }
11421 776548 : switch (TREE_CODE (_p2))
11422 : {
11423 765075 : case VECTOR_CST:
11424 765075 : {
11425 765075 : {
11426 765075 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11427 765075 : {
11428 765075 : tree op0 = captures[0], op1 = captures[1], op2 = captures[2];
11429 765075 : machine_mode result_mode = TYPE_MODE (type);
11430 765075 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (op0));
11431 765075 : vec_perm_builder builder;
11432 765075 : if (tree_to_vec_perm_builder (&builder, op2)
11433 : )
11434 : {
11435 765063 : {
11436 765063 : poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
11437 765063 : poly_uint64 nelts_in = TYPE_VECTOR_SUBPARTS (TREE_TYPE (op0));
11438 765063 : bool single_arg = (op0 == op1);
11439 1334987 : vec_perm_indices sel (builder, single_arg ? 1 : 2, nelts_in);
11440 765063 : if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, 0, 1)
11441 : )
11442 : {
11443 8426 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1975;
11444 8426 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1975;
11445 8426 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1975;
11446 8426 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1975;
11447 8426 : {
11448 8426 : tree res_op0;
11449 8426 : res_op0 = captures[0];
11450 8426 : tree _r;
11451 8426 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11452 8426 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1104, __FILE__, __LINE__, true);
11453 8426 : return _r;
11454 : }
11455 739033 : next_after_fail1975:;
11456 : }
11457 : else
11458 : {
11459 756637 : if (known_eq (nelts, nelts_in) && sel.series_p (0, 1, nelts_in, 1)
11460 : )
11461 : {
11462 13 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1976;
11463 13 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1976;
11464 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1976;
11465 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1976;
11466 13 : {
11467 13 : tree res_op0;
11468 13 : res_op0 = captures[1];
11469 13 : tree _r;
11470 13 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11471 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1105, __FILE__, __LINE__, true);
11472 13 : return _r;
11473 : }
11474 739033 : next_after_fail1976:;
11475 : }
11476 : else
11477 : {
11478 756624 : {
11479 756624 : if (!single_arg)
11480 : {
11481 562161 : if (sel.all_from_input_p (0))
11482 : op1 = op0;
11483 555138 : else if (sel.all_from_input_p (1))
11484 : {
11485 32 : op0 = op1;
11486 32 : sel.rotate_inputs (1);
11487 : }
11488 555106 : else if (known_ge (poly_uint64 (sel[0]), nelts_in))
11489 : {
11490 158 : std::swap (op0, op1);
11491 158 : sel.rotate_inputs (1);
11492 : }
11493 : }
11494 756624 : gassign *def;
11495 756624 : tree cop0 = op0, cop1 = op1;
11496 756624 : if (TREE_CODE (op0) == SSA_NAME
11497 723515 : && (def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op0)))
11498 1445851 : && gimple_assign_rhs_code (def) == CONSTRUCTOR)
11499 8480 : cop0 = gimple_assign_rhs1 (def);
11500 756624 : if (TREE_CODE (op1) == SSA_NAME
11501 709951 : && (def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op1)))
11502 1433454 : && gimple_assign_rhs_code (def) == CONSTRUCTOR)
11503 15098 : cop1 = gimple_assign_rhs1 (def);
11504 756624 : tree t;
11505 756624 : if ((TREE_CODE (cop0) == VECTOR_CST
11506 727005 : || TREE_CODE (cop0) == CONSTRUCTOR)
11507 38946 : && (TREE_CODE (cop1) == VECTOR_CST
11508 20021 : || TREE_CODE (cop1) == CONSTRUCTOR)
11509 783163 : && (t = fold_vec_perm (type, cop0, cop1, sel))
11510 : )
11511 : {
11512 15146 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1977;
11513 15146 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1977;
11514 15146 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1977;
11515 15146 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1977;
11516 15146 : {
11517 15146 : tree _r;
11518 15146 : _r = t;
11519 15146 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1106, __FILE__, __LINE__, true);
11520 15146 : return _r;
11521 : }
11522 739033 : next_after_fail1977:;
11523 : }
11524 : else
11525 : {
11526 741478 : {
11527 741478 : bool changed = (op0 == op1 && !single_arg);
11528 741478 : tree ins = NULL_TREE;
11529 741478 : unsigned at = 0;
11530 741478 : if (op_mode != BLKmode
11531 732473 : && known_eq (nelts, nelts_in)
11532 1473798 : && (TREE_CODE (cop0) == VECTOR_CST
11533 716911 : || TREE_CODE (cop0) == CONSTRUCTOR
11534 710864 : || TREE_CODE (cop1) == VECTOR_CST
11535 686534 : || TREE_CODE (cop1) == CONSTRUCTOR))
11536 : {
11537 53530 : bool insert_first_p = sel.series_p (1, 1, nelts + 1, 1);
11538 53530 : if (insert_first_p)
11539 : {
11540 778 : at = 0;
11541 778 : if ((ins = fold_read_from_vector (cop0, sel[0])))
11542 115 : op0 = op1;
11543 : }
11544 778 : if (!insert_first_p || (!ins && maybe_eq (nelts, 2u)))
11545 : {
11546 53216 : unsigned int encoded_nelts = sel.encoding ().encoded_nelts ();
11547 108094 : for (at = 0; at < encoded_nelts; ++at)
11548 107968 : if (maybe_ne (sel[at], at))
11549 : break;
11550 53216 : if (at < encoded_nelts
11551 53216 : && (known_eq (at + 1, nelts)
11552 52001 : || sel.series_p (at + 1, 1, at + 1, 1)))
11553 : {
11554 1796 : if (known_lt (poly_uint64 (sel[at]), nelts))
11555 0 : ins = fold_read_from_vector (cop0, sel[at]);
11556 : else
11557 1796 : ins = fold_read_from_vector (cop1, sel[at] - nelts);
11558 : }
11559 : }
11560 : }
11561 741478 : if (!ins && sel.encoding () != builder)
11562 : {
11563 1128 : tree oldop2 = op2;
11564 1128 : if (sel.ninputs () == 2
11565 1128 : || can_vec_perm_const_p (result_mode, op_mode, sel, false))
11566 689 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel);
11567 : else
11568 : {
11569 439 : vec_perm_indices sel2 (builder, 2, nelts);
11570 439 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false))
11571 164 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel2);
11572 : else
11573 275 : op2 = vec_perm_indices_to_tree (TREE_TYPE (op2), sel);
11574 439 : }
11575 1128 : if (!operand_equal_p (op2, oldop2, 0))
11576 964 : changed = true;
11577 : }
11578 741478 : if (ins
11579 : )
11580 : {
11581 1480 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1978;
11582 1480 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1978;
11583 1480 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1978;
11584 1480 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1978;
11585 1480 : {
11586 1480 : tree res_op0;
11587 1480 : res_op0 = op0;
11588 1480 : tree res_op1;
11589 1480 : res_op1 = ins;
11590 1480 : tree res_op2;
11591 1480 : res_op2 = bitsize_int (at * vector_element_bits (type));
11592 1480 : tree _r;
11593 1480 : _r = fold_build3_loc (loc, BIT_INSERT_EXPR, type, res_op0, res_op1, res_op2);
11594 1480 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1107, __FILE__, __LINE__, true);
11595 26030 : return _r;
11596 : }
11597 : next_after_fail1978:;
11598 : }
11599 : else
11600 : {
11601 739998 : if (changed
11602 : )
11603 : {
11604 965 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1979;
11605 965 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1979;
11606 965 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1979;
11607 965 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1979;
11608 965 : {
11609 965 : tree res_op0;
11610 965 : res_op0 = op0;
11611 965 : tree res_op1;
11612 965 : res_op1 = op1;
11613 965 : tree res_op2;
11614 965 : res_op2 = op2;
11615 965 : tree _r;
11616 965 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11617 965 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1108, __FILE__, __LINE__, true);
11618 965 : return _r;
11619 : }
11620 : next_after_fail1979:;
11621 : }
11622 : }
11623 : }
11624 : }
11625 : }
11626 : }
11627 : }
11628 765063 : }
11629 : }
11630 26030 : }
11631 : }
11632 739045 : break;
11633 : }
11634 750518 : default:;
11635 : }
11636 750518 : switch (TREE_CODE (_p0))
11637 : {
11638 0 : case VIEW_CONVERT_EXPR:
11639 0 : {
11640 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11641 0 : switch (TREE_CODE (_q20))
11642 : {
11643 0 : case VEC_PERM_EXPR:
11644 0 : {
11645 0 : tree _q30 = TREE_OPERAND (_q20, 0);
11646 0 : tree _q31 = TREE_OPERAND (_q20, 1);
11647 0 : tree _q32 = TREE_OPERAND (_q20, 2);
11648 0 : switch (TREE_CODE (_q32))
11649 : {
11650 0 : case VECTOR_CST:
11651 0 : {
11652 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11653 : {
11654 0 : switch (TREE_CODE (_p2))
11655 : {
11656 0 : case VECTOR_CST:
11657 0 : {
11658 0 : {
11659 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q32, _p2 };
11660 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11661 : )
11662 : {
11663 0 : {
11664 0 : machine_mode result_mode = TYPE_MODE (type);
11665 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11666 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11667 0 : vec_perm_builder builder0;
11668 0 : vec_perm_builder builder1;
11669 0 : vec_perm_builder builder2 (nelts, nelts, 1);
11670 0 : if (tree_to_vec_perm_builder (&builder0, captures[4])
11671 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
11672 0 : && TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))
11673 0 : == TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[1])))
11674 : )
11675 : {
11676 0 : {
11677 0 : vec_perm_indices sel0 (builder0, 2, nelts);
11678 0 : vec_perm_indices sel1 (builder1, 2, nelts);
11679 0 : for (int i = 0; i < nelts; i++)
11680 0 : builder2.quick_push (sel0[sel1[i].to_constant ()]);
11681 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11682 0 : tree op0 = NULL_TREE;
11683 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11684 0 : || (single_use (captures[0])
11685 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
11686 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
11687 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
11688 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11689 0 : if (op0
11690 : )
11691 : {
11692 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1980;
11693 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1980;
11694 0 : {
11695 0 : tree res_op0;
11696 0 : {
11697 0 : tree _o1[3], _r1;
11698 0 : _o1[0] = captures[2];
11699 0 : _o1[1] = captures[3];
11700 0 : _o1[2] = op0;
11701 0 : _r1 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1], _o1[2]);
11702 0 : res_op0 = _r1;
11703 : }
11704 0 : tree _r;
11705 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11706 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11707 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11708 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11709 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11710 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1109, __FILE__, __LINE__, true);
11711 0 : return _r;
11712 : }
11713 0 : next_after_fail1980:;
11714 : }
11715 0 : }
11716 : }
11717 0 : }
11718 : }
11719 : }
11720 0 : break;
11721 : }
11722 : default:;
11723 : }
11724 : }
11725 : break;
11726 : }
11727 : default:;
11728 : }
11729 : break;
11730 : }
11731 : default:;
11732 : }
11733 : break;
11734 : }
11735 0 : case VEC_PERM_EXPR:
11736 0 : {
11737 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11738 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11739 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11740 0 : switch (TREE_CODE (_q22))
11741 : {
11742 0 : case VECTOR_CST:
11743 0 : {
11744 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11745 : {
11746 0 : switch (TREE_CODE (_p2))
11747 : {
11748 0 : case VECTOR_CST:
11749 0 : {
11750 0 : {
11751 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _q22, _p2 };
11752 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11753 : )
11754 : {
11755 0 : {
11756 0 : machine_mode result_mode = TYPE_MODE (type);
11757 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11758 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11759 0 : vec_perm_builder builder0;
11760 0 : vec_perm_builder builder1;
11761 0 : vec_perm_builder builder2 (nelts, nelts, 1);
11762 0 : if (tree_to_vec_perm_builder (&builder0, captures[4])
11763 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
11764 0 : && TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))
11765 0 : == TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[1])))
11766 : )
11767 : {
11768 0 : {
11769 0 : vec_perm_indices sel0 (builder0, 2, nelts);
11770 0 : vec_perm_indices sel1 (builder1, 2, nelts);
11771 0 : for (int i = 0; i < nelts; i++)
11772 0 : builder2.quick_push (sel0[sel1[i].to_constant ()]);
11773 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11774 0 : tree op0 = NULL_TREE;
11775 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11776 0 : || (single_use (captures[0])
11777 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
11778 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
11779 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
11780 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11781 0 : if (op0
11782 : )
11783 : {
11784 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1981;
11785 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1981;
11786 0 : {
11787 0 : tree res_op0;
11788 0 : {
11789 0 : tree _o1[3], _r1;
11790 0 : _o1[0] = captures[2];
11791 0 : _o1[1] = captures[3];
11792 0 : _o1[2] = op0;
11793 0 : _r1 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1], _o1[2]);
11794 0 : res_op0 = _r1;
11795 : }
11796 0 : tree _r;
11797 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11798 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11799 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11800 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11801 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11802 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1109, __FILE__, __LINE__, true);
11803 0 : return _r;
11804 : }
11805 0 : next_after_fail1981:;
11806 : }
11807 0 : }
11808 : }
11809 0 : }
11810 : }
11811 : }
11812 0 : break;
11813 : }
11814 : default:;
11815 : }
11816 : }
11817 : break;
11818 : }
11819 : default:;
11820 : }
11821 : break;
11822 : }
11823 750518 : default:;
11824 : }
11825 750518 : if (tree_vec_same_elem_p (_p0))
11826 : {
11827 13913 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11828 : {
11829 0 : {
11830 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p2 };
11831 0 : if (types_match (type, TREE_TYPE (captures[0]))
11832 : )
11833 : {
11834 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1982;
11835 0 : {
11836 0 : tree _r;
11837 0 : _r = captures[0];
11838 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11839 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11840 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1110, __FILE__, __LINE__, true);
11841 0 : return _r;
11842 : }
11843 0 : next_after_fail1982:;
11844 : }
11845 : else
11846 : {
11847 0 : {
11848 0 : tree elem = uniform_vector_p (captures[0]);
11849 0 : if (elem
11850 : )
11851 : {
11852 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1983;
11853 0 : {
11854 0 : tree _r;
11855 0 : _r = build_vector_from_val (type, elem);
11856 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11857 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11858 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11859 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1111, __FILE__, __LINE__, true);
11861 0 : return _r;
11862 : }
11863 0 : next_after_fail1983:;
11864 : }
11865 : }
11866 : }
11867 : }
11868 : }
11869 : }
11870 750518 : switch (TREE_CODE (_p1))
11871 : {
11872 0 : case VEC_PERM_EXPR:
11873 0 : {
11874 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11875 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11876 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11877 0 : switch (TREE_CODE (_q32))
11878 : {
11879 0 : case VECTOR_CST:
11880 0 : {
11881 0 : switch (TREE_CODE (_p2))
11882 : {
11883 0 : case VECTOR_CST:
11884 0 : {
11885 0 : {
11886 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
11887 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
11888 : )
11889 : {
11890 0 : {
11891 0 : machine_mode result_mode = TYPE_MODE (type);
11892 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[2]));
11893 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
11894 0 : vec_perm_builder builder0;
11895 0 : vec_perm_builder builder1;
11896 0 : vec_perm_builder builder2 (nelts, nelts, 2);
11897 0 : if (tree_to_vec_perm_builder (&builder0, captures[4])
11898 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
11899 : )
11900 : {
11901 0 : {
11902 0 : vec_perm_indices sel0 (builder0, 2, nelts);
11903 0 : vec_perm_indices sel1 (builder1, 2, nelts);
11904 0 : bool use_1 = false, use_2 = false;
11905 0 : for (int i = 0; i < nelts; i++)
11906 : {
11907 0 : if (known_lt ((poly_uint64)sel1[i], sel1.nelts_per_input ()))
11908 0 : builder2.quick_push (sel1[i]);
11909 : else
11910 : {
11911 0 : poly_uint64 j = sel0[(sel1[i] - sel1.nelts_per_input ())
11912 0 : .to_constant ()];
11913 0 : if (known_lt (j, sel0.nelts_per_input ()))
11914 : use_1 = true;
11915 : else
11916 : {
11917 0 : use_2 = true;
11918 0 : j -= sel0.nelts_per_input ();
11919 : }
11920 0 : builder2.quick_push (j + sel1.nelts_per_input ());
11921 : }
11922 : }
11923 0 : if (use_1 ^ use_2
11924 : )
11925 : {
11926 0 : {
11927 0 : vec_perm_indices sel2 (builder2, 2, nelts);
11928 0 : tree op0 = NULL_TREE;
11929 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
11930 0 : || (single_use (captures[1])
11931 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
11932 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
11933 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
11934 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
11935 0 : if (op0
11936 : )
11937 : {
11938 0 : if (use_1
11939 : )
11940 : {
11941 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1984;
11942 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1984;
11943 0 : {
11944 0 : tree res_op0;
11945 0 : res_op0 = captures[0];
11946 0 : tree res_op1;
11947 0 : res_op1 = captures[2];
11948 0 : tree res_op2;
11949 0 : res_op2 = op0;
11950 0 : tree _r;
11951 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11952 0 : if (TREE_SIDE_EFFECTS (captures[3]))
11953 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
11954 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11955 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11956 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11957 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11958 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1112, __FILE__, __LINE__, true);
11959 0 : return _r;
11960 : }
11961 0 : next_after_fail1984:;
11962 : }
11963 : else
11964 : {
11965 0 : if (use_2
11966 : )
11967 : {
11968 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1985;
11969 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1985;
11970 0 : {
11971 0 : tree res_op0;
11972 0 : res_op0 = captures[0];
11973 0 : tree res_op1;
11974 0 : res_op1 = captures[3];
11975 0 : tree res_op2;
11976 0 : res_op2 = op0;
11977 0 : tree _r;
11978 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11979 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11980 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11981 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11982 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11983 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11984 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11985 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1113, __FILE__, __LINE__, true);
11986 0 : return _r;
11987 : }
11988 0 : next_after_fail1985:;
11989 : }
11990 : }
11991 : }
11992 0 : }
11993 : }
11994 0 : }
11995 : }
11996 0 : }
11997 : }
11998 : }
11999 0 : break;
12000 : }
12001 : default:;
12002 : }
12003 : break;
12004 : }
12005 : default:;
12006 : }
12007 : break;
12008 : }
12009 750518 : default:;
12010 : }
12011 750518 : switch (TREE_CODE (_p0))
12012 : {
12013 0 : case VEC_PERM_EXPR:
12014 0 : {
12015 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12016 0 : tree _q21 = TREE_OPERAND (_p0, 1);
12017 0 : tree _q22 = TREE_OPERAND (_p0, 2);
12018 0 : switch (TREE_CODE (_q22))
12019 : {
12020 0 : case VECTOR_CST:
12021 0 : {
12022 0 : switch (TREE_CODE (_p2))
12023 : {
12024 0 : case VECTOR_CST:
12025 0 : {
12026 0 : {
12027 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _p2 };
12028 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant ()
12029 : )
12030 : {
12031 0 : {
12032 0 : machine_mode result_mode = TYPE_MODE (type);
12033 0 : machine_mode op_mode = TYPE_MODE (TREE_TYPE (captures[1]));
12034 0 : int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
12035 0 : vec_perm_builder builder0;
12036 0 : vec_perm_builder builder1;
12037 0 : vec_perm_builder builder2 (nelts, nelts, 2);
12038 0 : if (tree_to_vec_perm_builder (&builder0, captures[3])
12039 0 : && tree_to_vec_perm_builder (&builder1, captures[5])
12040 : )
12041 : {
12042 0 : {
12043 0 : vec_perm_indices sel0 (builder0, 2, nelts);
12044 0 : vec_perm_indices sel1 (builder1, 2, nelts);
12045 0 : bool use_1 = false, use_2 = false;
12046 0 : for (int i = 0; i < nelts; i++)
12047 : {
12048 0 : if (known_ge ((poly_uint64)sel1[i], sel1.nelts_per_input ()))
12049 0 : builder2.quick_push (sel1[i]);
12050 : else
12051 : {
12052 0 : poly_uint64 j = sel0[sel1[i].to_constant ()];
12053 0 : if (known_lt (j, sel0.nelts_per_input ()))
12054 : use_1 = true;
12055 : else
12056 : {
12057 0 : use_2 = true;
12058 0 : j -= sel0.nelts_per_input ();
12059 : }
12060 0 : builder2.quick_push (j);
12061 : }
12062 : }
12063 0 : if (use_1 ^ use_2
12064 : )
12065 : {
12066 0 : {
12067 0 : vec_perm_indices sel2 (builder2, 2, nelts);
12068 0 : tree op0 = NULL_TREE;
12069 0 : if (can_vec_perm_const_p (result_mode, op_mode, sel2, false)
12070 0 : || (single_use (captures[0])
12071 0 : ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false)
12072 0 : || !can_vec_perm_const_p (result_mode, op_mode, sel1, false))
12073 : : !can_vec_perm_const_p (result_mode, op_mode, sel1, false)))
12074 0 : op0 = vec_perm_indices_to_tree (TREE_TYPE (captures[5]), sel2);
12075 0 : if (op0
12076 : )
12077 : {
12078 0 : if (use_1
12079 : )
12080 : {
12081 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1986;
12082 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1986;
12083 0 : {
12084 0 : tree res_op0;
12085 0 : res_op0 = captures[1];
12086 0 : tree res_op1;
12087 0 : res_op1 = captures[4];
12088 0 : tree res_op2;
12089 0 : res_op2 = op0;
12090 0 : tree _r;
12091 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12092 0 : if (TREE_SIDE_EFFECTS (captures[2]))
12093 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
12094 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12095 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12096 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12097 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12098 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1114, __FILE__, __LINE__, true);
12099 0 : return _r;
12100 : }
12101 0 : next_after_fail1986:;
12102 : }
12103 : else
12104 : {
12105 0 : if (use_2
12106 : )
12107 : {
12108 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1987;
12109 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1987;
12110 0 : {
12111 0 : tree res_op0;
12112 0 : res_op0 = captures[2];
12113 0 : tree res_op1;
12114 0 : res_op1 = captures[4];
12115 0 : tree res_op2;
12116 0 : res_op2 = op0;
12117 0 : tree _r;
12118 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12119 0 : if (TREE_SIDE_EFFECTS (captures[1]))
12120 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
12121 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12122 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12123 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12124 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12125 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1115, __FILE__, __LINE__, true);
12126 0 : return _r;
12127 : }
12128 0 : next_after_fail1987:;
12129 : }
12130 : }
12131 : }
12132 0 : }
12133 : }
12134 0 : }
12135 : }
12136 0 : }
12137 : }
12138 : }
12139 0 : break;
12140 : }
12141 0 : default:;
12142 : }
12143 0 : switch (TREE_CODE (_p1))
12144 : {
12145 0 : case VEC_PERM_EXPR:
12146 0 : {
12147 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12148 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12149 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12150 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12151 : {
12152 0 : switch (TREE_CODE (_q62))
12153 : {
12154 0 : case VECTOR_CST:
12155 0 : {
12156 0 : switch (TREE_CODE (_p2))
12157 : {
12158 0 : case VECTOR_CST:
12159 0 : {
12160 0 : {
12161 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60, _q61, _p2 };
12162 0 : tree res = generic_simplify_627 (loc, type, _p0, _p1, _p2, captures);
12163 0 : if (res) return res;
12164 : }
12165 0 : break;
12166 : }
12167 : default:;
12168 : }
12169 : break;
12170 : }
12171 : default:;
12172 : }
12173 : }
12174 : break;
12175 : }
12176 : default:;
12177 : }
12178 : break;
12179 : }
12180 : default:;
12181 : }
12182 : break;
12183 : }
12184 0 : case VIEW_CONVERT_EXPR:
12185 0 : {
12186 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12187 0 : switch (TREE_CODE (_q20))
12188 : {
12189 0 : case VEC_PERM_EXPR:
12190 0 : {
12191 0 : tree _q30 = TREE_OPERAND (_q20, 0);
12192 0 : tree _q31 = TREE_OPERAND (_q20, 1);
12193 0 : tree _q32 = TREE_OPERAND (_q20, 2);
12194 0 : switch (TREE_CODE (_q32))
12195 : {
12196 0 : case VECTOR_CST:
12197 0 : {
12198 0 : switch (TREE_CODE (_p1))
12199 : {
12200 0 : case VIEW_CONVERT_EXPR:
12201 0 : {
12202 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12203 0 : switch (TREE_CODE (_q70))
12204 : {
12205 0 : case VEC_PERM_EXPR:
12206 0 : {
12207 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12208 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12209 0 : tree _q82 = TREE_OPERAND (_q70, 2);
12210 0 : if ((_q82 == _q32 && ! TREE_SIDE_EFFECTS (_q82)) || (operand_equal_p (_q82, _q32, 0) && types_match (_q82, _q32)))
12211 : {
12212 0 : switch (TREE_CODE (_q82))
12213 : {
12214 0 : case VECTOR_CST:
12215 0 : {
12216 0 : switch (TREE_CODE (_p2))
12217 : {
12218 0 : case VECTOR_CST:
12219 0 : {
12220 0 : {
12221 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q30, _q31, _q32, _q80, _q81, _p2 };
12222 0 : tree res = generic_simplify_627 (loc, type, _p0, _p1, _p2, captures);
12223 0 : if (res) return res;
12224 : }
12225 0 : break;
12226 : }
12227 : default:;
12228 : }
12229 : break;
12230 : }
12231 : default:;
12232 : }
12233 : }
12234 : break;
12235 : }
12236 : default:;
12237 : }
12238 : break;
12239 : }
12240 : default:;
12241 : }
12242 : break;
12243 : }
12244 : default:;
12245 : }
12246 : break;
12247 : }
12248 : default:;
12249 : }
12250 : break;
12251 : }
12252 : default:;
12253 : }
12254 : return NULL_TREE;
12255 : }
12256 : #pragma GCC diagnostic pop
|