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 132716432 : tree_negate_expr_p (tree t)
11 : {
12 132716432 : const tree type = TREE_TYPE (t);
13 132716432 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 132716432 : if (TREE_SIDE_EFFECTS (t)) return false;
15 127605501 : switch (TREE_CODE (t))
16 : {
17 7797328 : case INTEGER_CST:
18 7797328 : {
19 7797328 : {
20 7797328 : if ((INTEGRAL_TYPE_P (type)
21 7797328 : && TYPE_UNSIGNED (type))
22 10013601 : || (!TYPE_OVERFLOW_SANITIZED (type)
23 2213488 : && may_negate_without_overflow_p (t))
24 : )
25 : {
26 7781422 : {
27 7781422 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 14, __FILE__, __LINE__, false);
28 7781422 : return true;
29 : }
30 : }
31 : }
32 : break;
33 : }
34 0 : case FIXED_CST:
35 0 : {
36 0 : {
37 0 : {
38 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 15, __FILE__, __LINE__, false);
39 : return true;
40 : }
41 : }
42 413728 : break;
43 : }
44 413728 : case NEGATE_EXPR:
45 413728 : {
46 413728 : tree _p0 = TREE_OPERAND (t, 0);
47 413728 : {
48 413728 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
49 413728 : if (!TYPE_OVERFLOW_SANITIZED (type)
50 : )
51 : {
52 413708 : {
53 413708 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 16, __FILE__, __LINE__, false);
54 413708 : return true;
55 : }
56 : }
57 : }
58 : break;
59 : }
60 750627 : case REAL_CST:
61 750627 : {
62 750627 : {
63 750627 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (t))
64 : )
65 : {
66 639 : {
67 639 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 17, __FILE__, __LINE__, false);
68 639 : return true;
69 : }
70 : }
71 : }
72 : break;
73 : }
74 457 : case VECTOR_CST:
75 457 : {
76 457 : {
77 457 : if (FLOAT_TYPE_P (TREE_TYPE (type)) || TYPE_OVERFLOW_WRAPS (type)
78 : )
79 : {
80 329 : {
81 329 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 18, __FILE__, __LINE__, false);
82 329 : return true;
83 : }
84 : }
85 : }
86 : break;
87 : }
88 1242974 : case MINUS_EXPR:
89 1242974 : {
90 1242974 : tree _p0 = TREE_OPERAND (t, 0);
91 1242974 : tree _p1 = TREE_OPERAND (t, 1);
92 1242974 : {
93 1242974 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
94 1242974 : if ((ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_WRAPS (type))
95 2161234 : || (FLOAT_TYPE_P (type)
96 659631 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
97 659631 : && !HONOR_SIGNED_ZEROS (type))
98 : )
99 : {
100 325287 : {
101 325287 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 19, __FILE__, __LINE__, false);
102 325287 : return true;
103 : }
104 : }
105 : }
106 917687 : break;
107 : }
108 : default:;
109 : }
110 : return false;
111 : }
112 :
113 : bool
114 0 : tree_double_value_p (tree t)
115 : {
116 0 : const tree type = TREE_TYPE (t);
117 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
118 0 : if (TREE_SIDE_EFFECTS (t)) return false;
119 0 : {
120 0 : tree captures[1] ATTRIBUTE_UNUSED = { t };
121 0 : if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == double_type_node
122 : )
123 : {
124 0 : {
125 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 44, __FILE__, __LINE__, false);
126 0 : return true;
127 : }
128 : }
129 : }
130 : return false;
131 : }
132 :
133 : tree
134 0 : generic_simplify_6 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
135 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
136 : {
137 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
138 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail77;
139 0 : {
140 0 : tree res_op0;
141 0 : {
142 0 : tree _o1[2], _r1;
143 0 : _o1[0] = captures[1];
144 0 : _o1[1] = captures[2];
145 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
146 0 : res_op0 = _r1;
147 : }
148 0 : tree _r;
149 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
150 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 54, __FILE__, __LINE__, true);
151 : return _r;
152 : }
153 0 : next_after_fail77:;
154 0 : return NULL_TREE;
155 : }
156 :
157 : tree
158 1 : generic_simplify_15 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
159 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
160 : {
161 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
162 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail89;
163 1 : {
164 1 : tree res_op0;
165 1 : res_op0 = captures[0];
166 1 : tree _r;
167 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
168 1 : if (TREE_SIDE_EFFECTS (captures[1]))
169 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
170 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 64, __FILE__, __LINE__, true);
171 : return _r;
172 : }
173 0 : next_after_fail89:;
174 0 : return NULL_TREE;
175 : }
176 :
177 : tree
178 8 : generic_simplify_20 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
179 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
180 : {
181 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
182 8 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
183 : )
184 : {
185 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail94;
186 8 : {
187 8 : tree res_op0;
188 8 : {
189 8 : tree _o1[2], _r1;
190 8 : _o1[0] = captures[1];
191 8 : {
192 8 : tree _o2[1], _r2;
193 8 : _o2[0] = captures[0];
194 8 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
195 8 : _o1[1] = _r2;
196 : }
197 8 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
198 8 : res_op0 = _r1;
199 : }
200 8 : tree _r;
201 8 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
202 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 69, __FILE__, __LINE__, true);
203 8 : return _r;
204 : }
205 0 : next_after_fail94:;
206 : }
207 : return NULL_TREE;
208 : }
209 :
210 : tree
211 2130005 : generic_simplify_30 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
212 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
213 : const enum tree_code ARG_UNUSED (bitop))
214 : {
215 2130005 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
216 2130005 : if (((TREE_CODE (captures[3]) == INTEGER_CST
217 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
218 0 : && (int_fits_type_p (captures[3], TREE_TYPE (captures[1]))
219 0 : || tree_nop_conversion_p (TREE_TYPE (captures[1]), type)))
220 2130005 : || types_match (captures[1], captures[3]))
221 1992131 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
222 1991867 : && !VECTOR_TYPE_P (TREE_TYPE (captures[1]))
223 1991689 : && TREE_CODE (TREE_TYPE (captures[1])) != OFFSET_TYPE
224 1991689 : && (bitop != BIT_AND_EXPR ||
225 :
226 : )
227 2130005 : && (
228 1159857 : TYPE_PRECISION (TREE_TYPE (captures[1])) < TYPE_PRECISION (type)
229 : || (
230 :
231 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (type))
232 1067116 : || GET_MODE_CLASS (TYPE_MODE (type)) != MODE_INT
233 1067116 : || !type_has_mode_precision_p (type)
234 1067116 : || (
235 :
236 : && TREE_CODE (captures[3]) != INTEGER_CST
237 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
238 : && single_use (captures[0])
239 : && single_use (captures[2])))
240 : )
241 : {
242 92741 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail104;
243 92741 : {
244 92741 : tree res_op0;
245 92741 : {
246 92741 : tree _o1[2], _r1;
247 92741 : _o1[0] = captures[1];
248 92741 : {
249 92741 : tree _o2[1], _r2;
250 92741 : _o2[0] = captures[3];
251 92741 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
252 : {
253 53166 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
254 : }
255 : else
256 : _r2 = _o2[0];
257 92741 : _o1[1] = _r2;
258 : }
259 92741 : _r1 = fold_build2_loc (loc, bitop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
260 92741 : res_op0 = _r1;
261 : }
262 92741 : tree _r;
263 92741 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
264 92741 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 79, __FILE__, __LINE__, true);
265 92741 : return _r;
266 : }
267 0 : next_after_fail104:;
268 : }
269 : return NULL_TREE;
270 : }
271 :
272 : tree
273 2 : generic_simplify_44 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
274 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
275 : {
276 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
277 2 : if (INTEGRAL_TYPE_P (type)
278 2 : && (
279 :
280 2 : || !TREE_SIDE_EFFECTS (captures[1]))
281 : )
282 : {
283 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail121;
284 2 : {
285 2 : tree res_op0;
286 2 : {
287 2 : tree _o1[1], _r1;
288 2 : _o1[0] = captures[2];
289 2 : if (TREE_TYPE (_o1[0]) != boolean_type_node)
290 : {
291 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, boolean_type_node, _o1[0]);
292 : }
293 : else
294 : _r1 = _o1[0];
295 2 : res_op0 = _r1;
296 : }
297 2 : tree res_op1;
298 2 : res_op1 = captures[1];
299 2 : tree res_op2;
300 2 : res_op2 = captures[0];
301 2 : tree _r;
302 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
303 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 91, __FILE__, __LINE__, true);
304 2 : return _r;
305 : }
306 0 : next_after_fail121:;
307 : }
308 : return NULL_TREE;
309 : }
310 :
311 : tree
312 18 : generic_simplify_48 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
313 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
314 : const enum tree_code ARG_UNUSED (cmp))
315 : {
316 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
317 36 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
318 18 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
319 36 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
320 : )
321 : {
322 18 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail126;
323 18 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail126;
324 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail126;
325 18 : {
326 18 : tree res_op0;
327 18 : {
328 18 : tree _o1[2], _r1;
329 18 : _o1[0] = captures[1];
330 18 : _o1[1] = captures[3];
331 18 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
332 18 : res_op0 = _r1;
333 : }
334 18 : tree res_op1;
335 18 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
336 18 : tree _r;
337 18 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
338 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 96, __FILE__, __LINE__, true);
339 18 : return _r;
340 : }
341 : next_after_fail126:;
342 : }
343 : return NULL_TREE;
344 : }
345 :
346 : tree
347 0 : generic_simplify_58 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
348 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
349 : {
350 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
351 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail138;
352 0 : {
353 0 : tree res_op0;
354 0 : res_op0 = captures[0];
355 0 : tree res_op1;
356 0 : res_op1 = captures[1];
357 0 : tree _r;
358 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
359 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 107, __FILE__, __LINE__, true);
360 : return _r;
361 : }
362 0 : next_after_fail138:;
363 0 : return NULL_TREE;
364 : }
365 :
366 : tree
367 4542 : generic_simplify_64 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
368 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
369 : {
370 4542 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
371 4542 : if (!TYPE_SATURATING (type)
372 : )
373 : {
374 4542 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
375 9084 : && !FIXED_POINT_TYPE_P (type)
376 : )
377 : {
378 4542 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail152;
379 4542 : {
380 4542 : tree res_op0;
381 4542 : res_op0 = captures[2];
382 4542 : tree res_op1;
383 4542 : res_op1 = captures[1];
384 4542 : tree _r;
385 4542 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
386 4542 : if (TREE_SIDE_EFFECTS (captures[0]))
387 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
388 4542 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 121, __FILE__, __LINE__, true);
389 4542 : return _r;
390 : }
391 0 : next_after_fail152:;
392 : }
393 : }
394 : return NULL_TREE;
395 : }
396 :
397 : tree
398 9797 : generic_simplify_71 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
399 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
400 : const enum tree_code ARG_UNUSED (plusminus))
401 : {
402 9797 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
403 9797 : if (!TYPE_SATURATING (type)
404 9797 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
405 : )
406 : {
407 9631 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
408 : )
409 : {
410 4 : if ((!ANY_INTEGRAL_TYPE_P (type)
411 9627 : || TYPE_OVERFLOW_WRAPS (type)
412 3305 : || (INTEGRAL_TYPE_P (type)
413 3305 : && ((tree_expr_nonzero_p (captures[0])
414 136 : && expr_not_equal_to (captures[0],
415 9767 : wi::minus_one (TYPE_PRECISION (type)),
416 : gimple_match_ctx (captures[1])))
417 : || (plusminus == PLUS_EXPR
418 3169 : ? expr_not_equal_to (captures[2],
419 9649 : wi::max_value (TYPE_PRECISION (type), SIGNED),
420 : gimple_match_ctx (captures[1]))
421 3151 : : (expr_not_equal_to (captures[2],
422 12782 : wi::min_value (TYPE_PRECISION (type), SIGNED),
423 : gimple_match_ctx (captures[1]))
424 3127 : && expr_not_equal_to (captures[2],
425 6254 : wi::min_value (TYPE_PRECISION (type), SIGNED)
426 19012 : + 1, gimple_match_ctx (captures[1])))))))
427 12800 : && single_use (captures[1])
428 : )
429 : {
430 9607 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail160;
431 9607 : {
432 9607 : tree res_op0;
433 9607 : {
434 9607 : tree _o1[2], _r1;
435 9607 : _o1[0] = build_one_cst (type);
436 9607 : _o1[1] = captures[2];
437 9607 : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
438 9607 : res_op0 = _r1;
439 : }
440 9607 : tree res_op1;
441 9607 : res_op1 = captures[0];
442 9607 : tree _r;
443 9607 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
444 9607 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 129, __FILE__, __LINE__, true);
445 9607 : return _r;
446 : }
447 0 : next_after_fail160:;
448 : }
449 : }
450 : }
451 : return NULL_TREE;
452 : }
453 :
454 : tree
455 4 : generic_simplify_82 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
456 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
457 : const combined_fn ARG_UNUSED (POPCOUNT))
458 : {
459 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
460 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail172;
461 4 : {
462 4 : tree res_op0;
463 4 : {
464 4 : tree _o1[1], _r1;
465 4 : _o1[0] = captures[2];
466 4 : _r1 = maybe_build_call_expr_loc (loc, POPCOUNT, type, 1, _o1[0]);
467 4 : if (!_r1)
468 0 : goto next_after_fail172;
469 4 : res_op0 = _r1;
470 : }
471 4 : tree res_op1;
472 4 : {
473 4 : tree _o1[1], _r1;
474 4 : _o1[0] = captures[3];
475 4 : _r1 = maybe_build_call_expr_loc (loc, POPCOUNT, type, 1, _o1[0]);
476 4 : if (!_r1)
477 0 : goto next_after_fail172;
478 4 : res_op1 = _r1;
479 : }
480 4 : tree _r;
481 4 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
482 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 141, __FILE__, __LINE__, true);
483 : return _r;
484 : }
485 : next_after_fail172:;
486 : return NULL_TREE;
487 : }
488 :
489 : tree
490 2 : generic_simplify_90 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
491 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
492 : {
493 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
494 2 : if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
495 2 : && !TYPE_SATURATING (type) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))
496 2 : && !TYPE_OVERFLOW_TRAPS (TREE_TYPE (captures[2]))
497 4 : && !TYPE_SATURATING (TREE_TYPE (captures[2]))
498 : )
499 : {
500 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail180;
501 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail180;
502 2 : {
503 2 : tree res_op0;
504 2 : {
505 2 : tree _o1[1], _r1;
506 2 : {
507 2 : tree _o2[2], _r2;
508 2 : _o2[0] = captures[0];
509 2 : _o2[1] = captures[1];
510 2 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
511 2 : _o1[0] = _r2;
512 : }
513 2 : if (TREE_TYPE (_o1[0]) != type)
514 : {
515 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
516 : }
517 : else
518 : _r1 = _o1[0];
519 2 : res_op0 = _r1;
520 : }
521 2 : tree _r;
522 2 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
523 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 149, __FILE__, __LINE__, true);
524 2 : return _r;
525 : }
526 : next_after_fail180:;
527 : }
528 : return NULL_TREE;
529 : }
530 :
531 : tree
532 43554 : generic_simplify_100 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
533 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
534 : {
535 43554 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
536 43554 : if (!TYPE_SATURATING (type)
537 : )
538 : {
539 43554 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
540 87108 : && !FIXED_POINT_TYPE_P (type)
541 : )
542 : {
543 0 : if (!ANY_INTEGRAL_TYPE_P (type)
544 43554 : || TYPE_OVERFLOW_WRAPS (type)
545 : )
546 : {
547 39800 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail191;
548 39800 : {
549 39800 : tree res_op0;
550 39800 : {
551 39800 : tree _o1[1], _r1;
552 39800 : _o1[0] = captures[1];
553 39800 : if (TREE_TYPE (_o1[0]) != type)
554 : {
555 202 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
556 : }
557 : else
558 : _r1 = _o1[0];
559 39800 : res_op0 = _r1;
560 : }
561 39800 : tree _r;
562 39800 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
563 39800 : if (TREE_SIDE_EFFECTS (captures[0]))
564 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
565 39800 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 159, __FILE__, __LINE__, true);
566 39800 : return _r;
567 : }
568 0 : next_after_fail191:;
569 : }
570 : else
571 : {
572 3754 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail192;
573 3754 : {
574 3754 : tree res_op0;
575 3754 : {
576 3754 : tree _o1[1], _r1;
577 3754 : _o1[0] = captures[1];
578 3754 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
579 3754 : res_op0 = _r1;
580 : }
581 3754 : tree _r;
582 3754 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
583 3754 : if (TREE_SIDE_EFFECTS (captures[0]))
584 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
585 3754 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 160, __FILE__, __LINE__, true);
586 3754 : return _r;
587 : }
588 0 : next_after_fail192:;
589 : }
590 : }
591 : }
592 : return NULL_TREE;
593 : }
594 :
595 : tree
596 7 : generic_simplify_113 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
597 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
598 : const enum tree_code ARG_UNUSED (bitop))
599 : {
600 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
601 7 : if (INTEGRAL_TYPE_P (type)
602 7 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
603 7 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
604 7 : && TYPE_UNSIGNED (TREE_TYPE (captures[0])) != TYPE_UNSIGNED (TREE_TYPE (captures[1]))
605 7 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))
606 14 : && TYPE_PRECISION (TREE_TYPE (captures[0])) <= TYPE_PRECISION (type)
607 : )
608 : {
609 7 : if ((bitop == BIT_AND_EXPR) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
610 : )
611 : {
612 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail209;
613 4 : {
614 4 : tree res_op0;
615 4 : res_op0 = captures[0];
616 4 : tree _r;
617 4 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
618 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 177, __FILE__, __LINE__, true);
619 4 : return _r;
620 : }
621 0 : next_after_fail209:;
622 : }
623 : else
624 : {
625 3 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail210;
626 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail210;
627 3 : {
628 3 : tree res_op0;
629 3 : res_op0 = captures[1];
630 3 : tree _r;
631 3 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
632 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 178, __FILE__, __LINE__, true);
633 3 : return _r;
634 : }
635 : next_after_fail210:;
636 : }
637 : }
638 : return NULL_TREE;
639 : }
640 :
641 : tree
642 0 : generic_simplify_121 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
643 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
644 : {
645 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
646 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail219;
647 0 : {
648 0 : tree res_op0;
649 0 : res_op0 = captures[0];
650 0 : tree res_op1;
651 0 : {
652 0 : tree _o1[1], _r1;
653 0 : _o1[0] = captures[2];
654 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
655 0 : res_op1 = _r1;
656 : }
657 0 : tree _r;
658 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
659 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 184, __FILE__, __LINE__, true);
660 : return _r;
661 : }
662 0 : next_after_fail219:;
663 0 : return NULL_TREE;
664 : }
665 :
666 : tree
667 0 : generic_simplify_130 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
668 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
669 : {
670 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
671 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail228;
672 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail228;
673 0 : {
674 0 : tree _r;
675 0 : _r = captures[2];
676 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 188, __FILE__, __LINE__, true);
677 : return _r;
678 : }
679 : next_after_fail228:;
680 : return NULL_TREE;
681 : }
682 :
683 : tree
684 0 : generic_simplify_138 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
685 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
686 : const enum tree_code ARG_UNUSED (op))
687 : {
688 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
689 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail236;
690 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail236;
691 0 : {
692 0 : tree _r;
693 0 : _r = captures[0];
694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 187, __FILE__, __LINE__, true);
695 : return _r;
696 : }
697 : next_after_fail236:;
698 : return NULL_TREE;
699 : }
700 :
701 : tree
702 0 : generic_simplify_147 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
703 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
704 : const enum tree_code ARG_UNUSED (bitop),
705 : const enum tree_code ARG_UNUSED (rbitop))
706 : {
707 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
708 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail249;
709 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail249;
710 0 : {
711 0 : tree _r;
712 0 : _r = captures[2];
713 0 : if (TREE_SIDE_EFFECTS (captures[1]))
714 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
715 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 200, __FILE__, __LINE__, true);
716 : return _r;
717 : }
718 : next_after_fail249:;
719 : return NULL_TREE;
720 : }
721 :
722 : tree
723 0 : generic_simplify_153 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
724 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
725 : const enum tree_code ARG_UNUSED (op))
726 : {
727 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
728 0 : if (bitwise_equal_p (captures[4], captures[7])
729 : )
730 : {
731 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail256;
732 0 : {
733 0 : tree res_op0;
734 0 : {
735 0 : tree _o1[2], _r1;
736 0 : {
737 0 : tree _o2[2], _r2;
738 0 : _o2[0] = captures[5];
739 0 : {
740 0 : tree _o3[1], _r3;
741 0 : _o3[0] = captures[6];
742 0 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
743 : {
744 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
745 : }
746 : else
747 : _r3 = _o3[0];
748 0 : _o2[1] = _r3;
749 : }
750 0 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
751 0 : _o1[0] = _r2;
752 : }
753 0 : {
754 0 : tree _o2[1], _r2;
755 0 : _o2[0] = captures[4];
756 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
757 : {
758 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
759 : }
760 : else
761 : _r2 = _o2[0];
762 0 : _o1[1] = _r2;
763 : }
764 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
765 0 : res_op0 = _r1;
766 : }
767 0 : tree _r;
768 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
769 0 : if (TREE_SIDE_EFFECTS (captures[7]))
770 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
771 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 204, __FILE__, __LINE__, true);
772 0 : return _r;
773 : }
774 0 : next_after_fail256:;
775 : }
776 : return NULL_TREE;
777 : }
778 :
779 : tree
780 0 : generic_simplify_165 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
781 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
782 : const enum tree_code ARG_UNUSED (cmp),
783 : const enum tree_code ARG_UNUSED (bitop),
784 : const enum tree_code ARG_UNUSED (neeq))
785 : {
786 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
787 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail290;
788 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail290;
789 0 : {
790 0 : tree res_op0;
791 0 : {
792 0 : tree _o1[2], _r1;
793 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
794 0 : _o1[1] = captures[2];
795 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
796 0 : res_op0 = _r1;
797 : }
798 0 : tree res_op1;
799 0 : res_op1 = captures[3];
800 0 : tree _r;
801 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
802 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 231, __FILE__, __LINE__, true);
803 : return _r;
804 : }
805 : next_after_fail290:;
806 : return NULL_TREE;
807 : }
808 :
809 : tree
810 414 : generic_simplify_171 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
811 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
812 : const enum tree_code ARG_UNUSED (code2),
813 : const enum tree_code ARG_UNUSED (code1))
814 : {
815 414 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
816 414 : if ((TREE_CODE (captures[2]) == INTEGER_CST
817 389 : && TREE_CODE (captures[5]) == INTEGER_CST)
818 414 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
819 1 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
820 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
821 25 : && bitwise_equal_p (captures[2], captures[5]))
822 : )
823 : {
824 389 : {
825 389 : bool one_before = false;
826 389 : bool one_after = false;
827 389 : int cmp = 0;
828 389 : bool allbits = true;
829 389 : if (TREE_CODE (captures[2]) == INTEGER_CST
830 389 : && TREE_CODE (captures[5]) == INTEGER_CST)
831 : {
832 389 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
833 389 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
834 389 : auto t2 = wi::to_wide (captures[5]);
835 389 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
836 389 : if (cmp < 0
837 389 : && t1 == t2 - 1)
838 : one_before = true;
839 389 : if (cmp > 0
840 389 : && t1 == t2 + 1)
841 : one_after = true;
842 : }
843 389 : bool val;
844 389 : switch (code2)
845 : {
846 380 : case EQ_EXPR: val = (cmp == 0); break;
847 0 : case NE_EXPR: val = (cmp != 0); break;
848 0 : case LT_EXPR: val = (cmp < 0); break;
849 9 : case GT_EXPR: val = (cmp > 0); break;
850 0 : case LE_EXPR: val = (cmp <= 0); break;
851 0 : case GE_EXPR: val = (cmp >= 0); break;
852 0 : default: gcc_unreachable ();
853 : }
854 389 : if (code1 == EQ_EXPR && val
855 : )
856 : {
857 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail303;
858 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail303;
859 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail303;
860 0 : {
861 0 : tree _r;
862 0 : _r = captures[3];
863 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
864 0 : return _r;
865 : }
866 : next_after_fail303:;
867 : }
868 : else
869 : {
870 389 : if (code1 == NE_EXPR && val && allbits
871 : )
872 : {
873 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail304;
874 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail304;
875 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail304;
876 0 : {
877 0 : tree _r;
878 0 : _r = constant_boolean_node (true, type);
879 0 : if (TREE_SIDE_EFFECTS (captures[4]))
880 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
881 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
882 0 : return _r;
883 : }
884 : next_after_fail304:;
885 : }
886 : else
887 : {
888 389 : if (code1 == NE_EXPR && !val && allbits
889 : )
890 : {
891 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail305;
892 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail305;
893 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail305;
894 0 : {
895 0 : tree _r;
896 0 : _r = captures[0];
897 0 : if (TREE_SIDE_EFFECTS (captures[4]))
898 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
899 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
900 0 : return _r;
901 : }
902 : next_after_fail305:;
903 : }
904 : else
905 : {
906 389 : if (code1 == EQ_EXPR
907 389 : && code2 == GT_EXPR
908 9 : && cmp == 0
909 9 : && allbits
910 389 : && ((VECTOR_BOOLEAN_TYPE_P (type)
911 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
912 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
913 : )
914 : {
915 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail306;
916 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail306;
917 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail306;
918 0 : {
919 0 : tree res_op0;
920 0 : res_op0 = captures[4];
921 0 : tree res_op1;
922 0 : res_op1 = captures[5];
923 0 : tree _r;
924 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
925 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
926 0 : return _r;
927 : }
928 : next_after_fail306:;
929 : }
930 : else
931 : {
932 389 : if (code1 == EQ_EXPR
933 389 : && code2 == LT_EXPR
934 0 : && cmp == 0
935 0 : && allbits
936 389 : && ((VECTOR_BOOLEAN_TYPE_P (type)
937 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
938 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
939 : )
940 : {
941 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail307;
942 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail307;
943 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail307;
944 0 : {
945 0 : tree res_op0;
946 0 : res_op0 = captures[4];
947 0 : tree res_op1;
948 0 : res_op1 = captures[5];
949 0 : tree _r;
950 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
951 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 218, __FILE__, __LINE__, true);
952 0 : return _r;
953 : }
954 : next_after_fail307:;
955 : }
956 : else
957 : {
958 389 : if (code1 == EQ_EXPR
959 389 : && code2 == GE_EXPR
960 : && one_before
961 0 : && allbits
962 389 : && ((VECTOR_BOOLEAN_TYPE_P (type)
963 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
964 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
965 : )
966 : {
967 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail308;
968 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail308;
969 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail308;
970 0 : {
971 0 : tree res_op0;
972 0 : res_op0 = captures[4];
973 0 : tree res_op1;
974 0 : {
975 0 : tree _o1[1], _r1;
976 0 : _o1[0] = captures[2];
977 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
978 : {
979 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
980 : }
981 : else
982 : _r1 = _o1[0];
983 0 : res_op1 = _r1;
984 : }
985 0 : tree _r;
986 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
987 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 219, __FILE__, __LINE__, true);
988 0 : return _r;
989 : }
990 : next_after_fail308:;
991 : }
992 : else
993 : {
994 389 : if (code1 == EQ_EXPR
995 389 : && code2 == LE_EXPR
996 : && one_after
997 0 : && allbits
998 389 : && ((VECTOR_BOOLEAN_TYPE_P (type)
999 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1000 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1001 : )
1002 : {
1003 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail309;
1004 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail309;
1005 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail309;
1006 0 : {
1007 0 : tree res_op0;
1008 0 : res_op0 = captures[4];
1009 0 : tree res_op1;
1010 0 : {
1011 0 : tree _o1[1], _r1;
1012 0 : _o1[0] = captures[2];
1013 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1014 : {
1015 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1016 : }
1017 : else
1018 : _r1 = _o1[0];
1019 0 : res_op1 = _r1;
1020 : }
1021 0 : tree _r;
1022 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1023 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 220, __FILE__, __LINE__, true);
1024 0 : return _r;
1025 : }
1026 : next_after_fail309:;
1027 : }
1028 : }
1029 : }
1030 : }
1031 : }
1032 : }
1033 : }
1034 : }
1035 : }
1036 : return NULL_TREE;
1037 : }
1038 :
1039 : tree
1040 12 : generic_simplify_216 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1041 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1042 : {
1043 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1044 24 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1045 24 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == 1
1046 : )
1047 : {
1048 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail362;
1049 8 : {
1050 8 : tree res_op0;
1051 8 : {
1052 8 : tree _o1[2], _r1;
1053 8 : _o1[0] = captures[1];
1054 8 : _o1[1] = captures[2];
1055 8 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1056 8 : res_op0 = _r1;
1057 : }
1058 8 : tree _r;
1059 8 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1060 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 274, __FILE__, __LINE__, true);
1061 8 : return _r;
1062 : }
1063 0 : next_after_fail362:;
1064 : }
1065 : return NULL_TREE;
1066 : }
1067 :
1068 : tree
1069 2662 : generic_simplify_220 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1070 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1071 : const enum tree_code ARG_UNUSED (cmp))
1072 : {
1073 2662 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1074 5324 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1075 3498 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1076 4432 : && tree_expr_nonzero_p (captures[1])
1077 : )
1078 : {
1079 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail366;
1080 12 : {
1081 12 : tree res_op0;
1082 12 : res_op0 = captures[0];
1083 12 : tree res_op1;
1084 12 : res_op1 = captures[2];
1085 12 : tree _r;
1086 12 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1087 12 : if (TREE_SIDE_EFFECTS (captures[1]))
1088 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1089 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 278, __FILE__, __LINE__, true);
1090 12 : return _r;
1091 : }
1092 0 : next_after_fail366:;
1093 : }
1094 : return NULL_TREE;
1095 : }
1096 :
1097 : tree
1098 0 : generic_simplify_227 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1099 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1100 : const enum tree_code ARG_UNUSED (op))
1101 : {
1102 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1103 0 : if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
1104 : )
1105 : {
1106 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail386;
1107 0 : {
1108 0 : tree res_op0;
1109 0 : res_op0 = captures[3];
1110 0 : tree res_op1;
1111 0 : res_op1 = captures[2];
1112 0 : tree _r;
1113 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1114 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1115 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1116 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 298, __FILE__, __LINE__, true);
1117 0 : return _r;
1118 : }
1119 0 : next_after_fail386:;
1120 : }
1121 : return NULL_TREE;
1122 : }
1123 :
1124 : tree
1125 1063 : generic_simplify_235 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1126 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1127 : const enum tree_code ARG_UNUSED (minmax),
1128 : const enum tree_code ARG_UNUSED (cmp),
1129 : const enum tree_code ARG_UNUSED (out))
1130 : {
1131 1063 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1132 2126 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1133 1208 : && (!VECTOR_TYPE_P (TREE_TYPE (captures[0]))
1134 1 : || (VECTOR_TYPE_P (type)
1135 0 : && (!expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, cmp)
1136 0 : || expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, out))))
1137 : )
1138 : {
1139 144 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail394;
1140 144 : {
1141 144 : tree res_op0;
1142 144 : res_op0 = captures[0];
1143 144 : tree res_op1;
1144 144 : res_op1 = captures[1];
1145 144 : tree _r;
1146 144 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
1147 144 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 305, __FILE__, __LINE__, true);
1148 144 : return _r;
1149 : }
1150 0 : next_after_fail394:;
1151 : }
1152 : return NULL_TREE;
1153 : }
1154 :
1155 : tree
1156 697 : generic_simplify_243 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1157 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1158 : const enum tree_code ARG_UNUSED (cmp))
1159 : {
1160 697 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1161 697 : if (tree_fits_shwi_p (captures[3])
1162 697 : && tree_to_shwi (captures[3]) > 0
1163 1380 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
1164 : )
1165 : {
1166 683 : {
1167 683 : tree t0 = TREE_TYPE (captures[2]);
1168 683 : unsigned int prec = TYPE_PRECISION (t0);
1169 683 : wide_int c1 = wi::to_wide (captures[3]);
1170 683 : wide_int c2 = wi::to_wide (captures[4]);
1171 683 : wide_int c3 = wi::to_wide (captures[5]);
1172 683 : wide_int sb = wi::set_bit_in_zero (prec - 1, prec);
1173 683 : if ((c2 & c3) != c3
1174 : )
1175 : {
1176 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail407;
1177 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail407;
1178 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail407;
1179 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail407;
1180 0 : {
1181 0 : tree _r;
1182 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1183 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1184 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1185 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 318, __FILE__, __LINE__, true);
1186 0 : return _r;
1187 : }
1188 0 : next_after_fail407:;
1189 : }
1190 : else
1191 : {
1192 683 : if (TYPE_UNSIGNED (t0)
1193 : )
1194 : {
1195 561 : if ((c3 & wi::arshift (sb, c1 - 1)) != 0
1196 : )
1197 : {
1198 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail408;
1199 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail408;
1200 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail408;
1201 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail408;
1202 0 : {
1203 0 : tree _r;
1204 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1205 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1206 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1207 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 319, __FILE__, __LINE__, true);
1208 0 : return _r;
1209 : }
1210 0 : next_after_fail408:;
1211 : }
1212 : else
1213 : {
1214 561 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail409;
1215 561 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail409;
1216 561 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail409;
1217 561 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail409;
1218 561 : {
1219 561 : tree res_op0;
1220 561 : {
1221 561 : tree _o1[2], _r1;
1222 561 : _o1[0] = captures[2];
1223 561 : _o1[1] = wide_int_to_tree (t0, c2 << c1);
1224 561 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1225 561 : res_op0 = _r1;
1226 : }
1227 561 : tree res_op1;
1228 561 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1229 561 : tree _r;
1230 561 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1231 561 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 320, __FILE__, __LINE__, true);
1232 561 : return _r;
1233 : }
1234 0 : next_after_fail409:;
1235 : }
1236 : }
1237 : else
1238 : {
1239 122 : {
1240 122 : wide_int smask = wi::arshift (sb, c1);
1241 122 : if ((c2 & smask) == 0
1242 : )
1243 : {
1244 120 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail410;
1245 120 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail410;
1246 120 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail410;
1247 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail410;
1248 120 : {
1249 120 : tree res_op0;
1250 120 : {
1251 120 : tree _o1[2], _r1;
1252 120 : _o1[0] = captures[2];
1253 120 : _o1[1] = wide_int_to_tree (t0, c2 << c1);
1254 120 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1255 120 : res_op0 = _r1;
1256 : }
1257 120 : tree res_op1;
1258 120 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1259 120 : tree _r;
1260 120 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1261 120 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 321, __FILE__, __LINE__, true);
1262 120 : return _r;
1263 : }
1264 0 : next_after_fail410:;
1265 : }
1266 : else
1267 : {
1268 2 : if ((c3 & smask) == 0
1269 : )
1270 : {
1271 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail411;
1272 2 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail411;
1273 2 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail411;
1274 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail411;
1275 2 : {
1276 2 : tree res_op0;
1277 2 : {
1278 2 : tree _o1[2], _r1;
1279 2 : _o1[0] = captures[2];
1280 2 : _o1[1] = wide_int_to_tree (t0, (c2 << c1) | sb);
1281 2 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1282 2 : res_op0 = _r1;
1283 : }
1284 2 : tree res_op1;
1285 2 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1286 2 : tree _r;
1287 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1288 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 322, __FILE__, __LINE__, true);
1289 2 : return _r;
1290 : }
1291 0 : next_after_fail411:;
1292 : }
1293 : else
1294 : {
1295 0 : if ((c2 & smask) != (c3 & smask)
1296 : )
1297 : {
1298 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail412;
1299 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail412;
1300 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail412;
1301 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail412;
1302 0 : {
1303 0 : tree _r;
1304 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1305 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1306 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1307 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 323, __FILE__, __LINE__, true);
1308 0 : return _r;
1309 : }
1310 0 : next_after_fail412:;
1311 : }
1312 : else
1313 : {
1314 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail413;
1315 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail413;
1316 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail413;
1317 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail413;
1318 0 : {
1319 0 : tree res_op0;
1320 0 : {
1321 0 : tree _o1[2], _r1;
1322 0 : _o1[0] = captures[2];
1323 0 : _o1[1] = wide_int_to_tree (t0, (c2 << c1) | sb);
1324 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1325 0 : res_op0 = _r1;
1326 : }
1327 0 : tree res_op1;
1328 0 : res_op1 = wide_int_to_tree (t0, (c3 << c1) | sb);
1329 0 : tree _r;
1330 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1331 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 324, __FILE__, __LINE__, true);
1332 0 : return _r;
1333 : }
1334 0 : next_after_fail413:;
1335 : }
1336 : }
1337 : }
1338 122 : }
1339 : }
1340 : }
1341 683 : }
1342 : }
1343 : return NULL_TREE;
1344 : }
1345 :
1346 : tree
1347 1091084 : generic_simplify_275 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1348 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1349 : const enum tree_code ARG_UNUSED (cmp))
1350 : {
1351 1091084 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1352 1091084 : {
1353 1091084 : poly_int64 off; tree base;
1354 1091084 : tree addr = (TREE_CODE (captures[1]) == SSA_NAME
1355 1091084 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[1])) : captures[1]);
1356 1091084 : if (SSA_NAME_IS_DEFAULT_DEF (captures[0])
1357 46758 : && TREE_CODE (SSA_NAME_VAR (captures[0])) == PARM_DECL
1358 46576 : && (base = get_base_address (TREE_OPERAND (addr, 0)))
1359 46576 : && TREE_CODE (base) == VAR_DECL
1360 1094275 : && auto_var_in_fn_p (base, current_function_decl)
1361 : )
1362 : {
1363 0 : if (cmp == NE_EXPR
1364 : )
1365 : {
1366 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail507;
1367 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail507;
1368 0 : {
1369 0 : tree _r;
1370 0 : _r = constant_boolean_node (true, type);
1371 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1372 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1373 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 408, __FILE__, __LINE__, true);
1374 2 : return _r;
1375 : }
1376 1091082 : next_after_fail507:;
1377 : }
1378 : else
1379 : {
1380 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail508;
1381 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail508;
1382 0 : {
1383 0 : tree _r;
1384 0 : _r = constant_boolean_node (false, type);
1385 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1386 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1387 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 409, __FILE__, __LINE__, true);
1388 0 : return _r;
1389 : }
1390 1091082 : next_after_fail508:;
1391 : }
1392 : }
1393 : else
1394 : {
1395 1091084 : if ((base = get_addr_base_and_unit_offset (TREE_OPERAND (addr, 0), &off))
1396 1089721 : && TREE_CODE (base) == MEM_REF
1397 1249633 : && TREE_OPERAND (base, 0) == captures[0]
1398 : )
1399 : {
1400 2 : {
1401 2 : off += mem_ref_offset (base).force_shwi ();
1402 2 : if (known_ne (off, 0)
1403 : )
1404 : {
1405 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail509;
1406 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail509;
1407 2 : {
1408 2 : tree _r;
1409 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1410 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1411 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1412 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 410, __FILE__, __LINE__, true);
1413 2 : return _r;
1414 : }
1415 1091082 : next_after_fail509:;
1416 : }
1417 : else
1418 : {
1419 0 : if (known_eq (off, 0)
1420 : )
1421 : {
1422 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail510;
1423 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail510;
1424 0 : {
1425 0 : tree _r;
1426 0 : _r = constant_boolean_node (cmp == EQ_EXPR, type);
1427 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1428 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1429 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 411, __FILE__, __LINE__, true);
1430 0 : return _r;
1431 : }
1432 1091082 : next_after_fail510:;
1433 : }
1434 : }
1435 : }
1436 : }
1437 : }
1438 : }
1439 1091082 : return NULL_TREE;
1440 : }
1441 :
1442 : tree
1443 94 : generic_simplify_287 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1444 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1445 : const enum tree_code ARG_UNUSED (sgncmp),
1446 : const enum tree_code ARG_UNUSED (cmp),
1447 : const enum tree_code ARG_UNUSED (ncmp))
1448 : {
1449 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1450 188 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1451 94 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1452 188 : && types_match (captures[0], captures[2])
1453 : )
1454 : {
1455 94 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail522;
1456 94 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail522;
1457 94 : {
1458 94 : tree res_op0;
1459 94 : {
1460 94 : tree _o1[2], _r1;
1461 94 : _o1[0] = captures[0];
1462 94 : _o1[1] = captures[2];
1463 94 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1464 94 : res_op0 = _r1;
1465 : }
1466 94 : tree res_op1;
1467 94 : res_op1 = captures[1];
1468 94 : tree _r;
1469 94 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1470 94 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
1471 94 : return _r;
1472 : }
1473 : next_after_fail522:;
1474 : }
1475 : return NULL_TREE;
1476 : }
1477 :
1478 : tree
1479 115499 : generic_simplify_292 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1480 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1481 : const enum tree_code ARG_UNUSED (cmp))
1482 : {
1483 115499 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1484 115499 : {
1485 115499 : poly_int64 off0, off1;
1486 115499 : tree base0, base1;
1487 115499 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
1488 : off0, off1,
1489 : 1
1490 : );
1491 115499 : if (equal == 1
1492 : )
1493 : {
1494 100569 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1495 : )
1496 : {
1497 8354 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail534;
1498 8354 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail534;
1499 8354 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail534;
1500 8354 : {
1501 8354 : tree _r;
1502 8354 : _r = constant_boolean_node (known_eq (off0, off1), type);
1503 8354 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
1504 102529 : return _r;
1505 : }
1506 12970 : next_after_fail534:;
1507 : }
1508 : else
1509 : {
1510 51891 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1511 : )
1512 : {
1513 51891 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail535;
1514 51891 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail535;
1515 51891 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail535;
1516 51891 : {
1517 51891 : tree _r;
1518 51891 : _r = constant_boolean_node (known_ne (off0, off1), type);
1519 51891 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 426, __FILE__, __LINE__, true);
1520 51891 : return _r;
1521 : }
1522 12970 : next_after_fail535:;
1523 : }
1524 : else
1525 : {
1526 29176 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
1527 : )
1528 : {
1529 29176 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail536;
1530 29176 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail536;
1531 29176 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail536;
1532 29176 : {
1533 29176 : tree _r;
1534 29176 : _r = constant_boolean_node (known_lt (off0, off1), type);
1535 29176 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
1536 29176 : return _r;
1537 : }
1538 12970 : next_after_fail536:;
1539 : }
1540 : else
1541 : {
1542 393 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
1543 : )
1544 : {
1545 393 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail537;
1546 393 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail537;
1547 393 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail537;
1548 393 : {
1549 393 : tree _r;
1550 393 : _r = constant_boolean_node (known_le (off0, off1), type);
1551 393 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 428, __FILE__, __LINE__, true);
1552 393 : return _r;
1553 : }
1554 12970 : next_after_fail537:;
1555 : }
1556 : else
1557 : {
1558 7187 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
1559 : )
1560 : {
1561 7187 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail538;
1562 7187 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail538;
1563 7187 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail538;
1564 7187 : {
1565 7187 : tree _r;
1566 7187 : _r = constant_boolean_node (known_ge (off0, off1), type);
1567 7187 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 429, __FILE__, __LINE__, true);
1568 7187 : return _r;
1569 : }
1570 12970 : next_after_fail538:;
1571 : }
1572 : else
1573 : {
1574 3568 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
1575 : )
1576 : {
1577 3568 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail539;
1578 3568 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail539;
1579 3568 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail539;
1580 3568 : {
1581 3568 : tree _r;
1582 3568 : _r = constant_boolean_node (known_gt (off0, off1), type);
1583 3568 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 430, __FILE__, __LINE__, true);
1584 3568 : return _r;
1585 : }
1586 12970 : next_after_fail539:;
1587 : }
1588 : }
1589 : }
1590 : }
1591 : }
1592 : }
1593 : }
1594 : else
1595 : {
1596 14930 : if (equal == 0
1597 : )
1598 : {
1599 1960 : if (cmp == EQ_EXPR
1600 : )
1601 : {
1602 923 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail540;
1603 923 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail540;
1604 923 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail540;
1605 923 : {
1606 923 : tree _r;
1607 923 : _r = constant_boolean_node (false, type);
1608 923 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 431, __FILE__, __LINE__, true);
1609 923 : return _r;
1610 : }
1611 12970 : next_after_fail540:;
1612 : }
1613 : else
1614 : {
1615 1037 : if (cmp == NE_EXPR
1616 : )
1617 : {
1618 1037 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail541;
1619 1037 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail541;
1620 1037 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail541;
1621 1037 : {
1622 1037 : tree _r;
1623 1037 : _r = constant_boolean_node (true, type);
1624 1037 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 432, __FILE__, __LINE__, true);
1625 1037 : return _r;
1626 : }
1627 12970 : next_after_fail541:;
1628 : }
1629 : }
1630 : }
1631 : }
1632 : }
1633 12970 : return NULL_TREE;
1634 : }
1635 :
1636 : tree
1637 28337 : generic_simplify_307 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1638 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1639 : const enum tree_code ARG_UNUSED (cmp),
1640 : const enum tree_code ARG_UNUSED (icmp),
1641 : const enum tree_code ARG_UNUSED (ncmp))
1642 : {
1643 28337 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1644 28337 : if (types_match (type, TREE_TYPE (captures[0]))
1645 : )
1646 : {
1647 27567 : {
1648 27567 : enum tree_code ic = invert_tree_comparison
1649 27567 : (cmp, HONOR_NANS (captures[1]));
1650 27567 : if (ic == icmp
1651 : )
1652 : {
1653 22031 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail575;
1654 22031 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail575;
1655 22031 : {
1656 22031 : tree res_op0;
1657 22031 : res_op0 = captures[1];
1658 22031 : tree res_op1;
1659 22031 : res_op1 = captures[2];
1660 22031 : tree _r;
1661 22031 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1662 22031 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 466, __FILE__, __LINE__, true);
1663 22031 : return _r;
1664 : }
1665 : next_after_fail575:;
1666 : }
1667 : else
1668 : {
1669 5536 : if (ic == ncmp
1670 : )
1671 : {
1672 5 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail576;
1673 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail576;
1674 5 : {
1675 5 : tree res_op0;
1676 5 : res_op0 = captures[1];
1677 5 : tree res_op1;
1678 5 : res_op1 = captures[2];
1679 5 : tree _r;
1680 5 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1681 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 467, __FILE__, __LINE__, true);
1682 5 : return _r;
1683 : }
1684 : next_after_fail576:;
1685 : }
1686 : }
1687 : }
1688 : }
1689 : return NULL_TREE;
1690 : }
1691 :
1692 : tree
1693 7 : generic_simplify_315 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1694 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1695 : const enum tree_code ARG_UNUSED (div))
1696 : {
1697 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1698 14 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1699 0 : && (!VECTOR_TYPE_P (type)
1700 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
1701 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
1702 7 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
1703 0 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
1704 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1705 0 : || (element_precision (type)
1706 0 : == element_precision (TREE_TYPE (captures[2])))
1707 0 : || (INTEGRAL_TYPE_P (type)
1708 0 : && (tree_nonzero_bits (captures[0])
1709 7 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
1710 : true,
1711 7 : element_precision (type))) == 0))))
1712 : )
1713 : {
1714 0 : if (!VECTOR_TYPE_P (type)
1715 0 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1716 0 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
1717 : )
1718 : {
1719 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail584;
1720 0 : {
1721 0 : tree res_op0;
1722 0 : {
1723 0 : tree _o1[2], _r1;
1724 0 : _o1[0] = captures[1];
1725 0 : _o1[1] = captures[3];
1726 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1727 0 : res_op0 = _r1;
1728 : }
1729 0 : tree _r;
1730 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1731 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1732 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1733 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 475, __FILE__, __LINE__, true);
1734 0 : return _r;
1735 : }
1736 0 : next_after_fail584:;
1737 : }
1738 : else
1739 : {
1740 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail585;
1741 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail585;
1742 0 : {
1743 0 : tree res_op0;
1744 0 : res_op0 = captures[0];
1745 0 : tree res_op1;
1746 0 : res_op1 = captures[3];
1747 0 : tree _r;
1748 0 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1749 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1750 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1751 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 476, __FILE__, __LINE__, true);
1752 0 : return _r;
1753 : }
1754 : next_after_fail585:;
1755 : }
1756 : }
1757 : return NULL_TREE;
1758 : }
1759 :
1760 : tree
1761 52 : generic_simplify_333 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1762 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1763 : const enum tree_code ARG_UNUSED (mod))
1764 : {
1765 52 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1766 52 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail605;
1767 52 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail605;
1768 52 : {
1769 52 : tree _r;
1770 52 : _r = captures[0];
1771 52 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 494, __FILE__, __LINE__, true);
1772 : return _r;
1773 : }
1774 : next_after_fail605:;
1775 : return NULL_TREE;
1776 : }
1777 :
1778 : tree
1779 5 : generic_simplify_341 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1780 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1781 : const combined_fn ARG_UNUSED (SINH),
1782 : const combined_fn ARG_UNUSED (COSH),
1783 : const combined_fn ARG_UNUSED (TANH))
1784 : {
1785 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1786 5 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1787 : )
1788 : {
1789 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail615;
1790 3 : {
1791 3 : tree res_op0;
1792 3 : res_op0 = captures[1];
1793 3 : tree _r;
1794 3 : _r = maybe_build_call_expr_loc (loc, TANH, type, 1, res_op0);
1795 3 : if (!_r)
1796 0 : goto next_after_fail615;
1797 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 504, __FILE__, __LINE__, true);
1798 3 : return _r;
1799 : }
1800 : next_after_fail615:;
1801 : }
1802 : return NULL_TREE;
1803 : }
1804 :
1805 : tree
1806 7513 : generic_simplify_349 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1807 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1808 : const enum tree_code ARG_UNUSED (cmp),
1809 : const enum tree_code ARG_UNUSED (op))
1810 : {
1811 7513 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1812 7513 : {
1813 7513 : tree from_type = TREE_TYPE (captures[0]), to_type = TREE_TYPE (captures[1]);
1814 7513 : if (types_match (from_type, to_type)
1815 7513 : || (TYPE_UNSIGNED (from_type)
1816 37 : && !TYPE_UNSIGNED (to_type)
1817 37 : && TYPE_PRECISION (from_type) == TYPE_PRECISION (to_type)
1818 37 : && integer_zerop (captures[1])
1819 31 : && (cmp == LT_EXPR || cmp == GE_EXPR))
1820 : )
1821 : {
1822 7483 : {
1823 7483 : wi::overflow_type overflow = wi::OVF_NONE;
1824 7483 : enum tree_code code, cmp_code = cmp;
1825 7483 : wide_int real_c1;
1826 7483 : wide_int c1 = wi::to_wide (captures[1]);
1827 7483 : wide_int c2 = wi::to_wide (captures[2]);
1828 7483 : wide_int c3 = wi::to_wide (captures[3]);
1829 7483 : signop sgn = TYPE_SIGN (from_type);
1830 7483 : if (!types_match (from_type, to_type))
1831 : {
1832 7 : if (cmp_code == LT_EXPR)
1833 : cmp_code = GT_EXPR;
1834 0 : if (cmp_code == GE_EXPR)
1835 0 : cmp_code = LE_EXPR;
1836 7 : c1 = wi::max_value (to_type);
1837 : }
1838 7483 : if (op == PLUS_EXPR)
1839 7483 : real_c1 = wi::sub (c3, c2, sgn, &overflow);
1840 : else
1841 0 : real_c1 = wi::add (c3, c2, sgn, &overflow);
1842 7483 : code = cmp_code;
1843 7483 : if (!overflow || !TYPE_OVERFLOW_UNDEFINED (from_type))
1844 : {
1845 14966 : if (!wi::cmp (wi::sub (real_c1, 1, sgn, &overflow), c1, sgn)
1846 7483 : && !overflow)
1847 : {
1848 635 : if (cmp_code == LE_EXPR)
1849 : code = LT_EXPR;
1850 633 : if (cmp_code == GT_EXPR)
1851 7483 : code = GE_EXPR;
1852 : }
1853 14966 : if (!wi::cmp (wi::add (real_c1, 1, sgn, &overflow), c1, sgn)
1854 7483 : && !overflow)
1855 : {
1856 6425 : if (cmp_code == LT_EXPR)
1857 : code = LE_EXPR;
1858 6425 : if (cmp_code == GE_EXPR)
1859 : code = GT_EXPR;
1860 : }
1861 1087 : if (code != cmp_code || !wi::cmp (real_c1, c1, sgn))
1862 : {
1863 7260 : if (cmp_code == LT_EXPR || cmp_code == LE_EXPR)
1864 : code = MIN_EXPR;
1865 7258 : if (cmp_code == GT_EXPR || cmp_code == GE_EXPR)
1866 : code = MAX_EXPR;
1867 : }
1868 : }
1869 225 : if (code == MAX_EXPR
1870 : )
1871 : {
1872 7258 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail625;
1873 7258 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail625;
1874 7258 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail625;
1875 7258 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail625;
1876 7258 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail625;
1877 7258 : {
1878 7258 : tree res_op0;
1879 7258 : {
1880 7258 : tree _o1[2], _r1;
1881 7258 : _o1[0] = captures[0];
1882 7258 : _o1[1] = wide_int_to_tree (from_type, real_c1);
1883 7258 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1884 7258 : res_op0 = _r1;
1885 : }
1886 7258 : tree res_op1;
1887 7258 : res_op1 = wide_int_to_tree (from_type, c2);
1888 7258 : tree _r;
1889 7258 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1890 7258 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 514, __FILE__, __LINE__, true);
1891 7258 : return _r;
1892 : }
1893 223 : next_after_fail625:;
1894 : }
1895 : else
1896 : {
1897 225 : if (code == MIN_EXPR
1898 : )
1899 : {
1900 2 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail626;
1901 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail626;
1902 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail626;
1903 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail626;
1904 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail626;
1905 2 : {
1906 2 : tree res_op0;
1907 2 : {
1908 2 : tree _o1[2], _r1;
1909 2 : _o1[0] = captures[0];
1910 2 : _o1[1] = wide_int_to_tree (from_type, real_c1);
1911 2 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1912 2 : res_op0 = _r1;
1913 : }
1914 2 : tree res_op1;
1915 2 : res_op1 = wide_int_to_tree (from_type, c2);
1916 2 : tree _r;
1917 2 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1918 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 515, __FILE__, __LINE__, true);
1919 2 : return _r;
1920 : }
1921 223 : next_after_fail626:;
1922 : }
1923 : }
1924 7483 : }
1925 : }
1926 : }
1927 : return NULL_TREE;
1928 : }
1929 :
1930 : tree
1931 17 : generic_simplify_379 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1932 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1933 : const enum tree_code ARG_UNUSED (cmp))
1934 : {
1935 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1936 17 : if (INTEGRAL_TYPE_P (type)
1937 17 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1938 17 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1939 34 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (type)
1940 : )
1941 : {
1942 17 : {
1943 17 : tree shifter = build_int_cst (integer_type_node, TYPE_PRECISION (type) - 1);
1944 17 : if (cmp == GE_EXPR
1945 : )
1946 : {
1947 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail661;
1948 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail661;
1949 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail661;
1950 9 : {
1951 9 : tree res_op0;
1952 9 : {
1953 9 : tree _o1[1], _r1;
1954 9 : {
1955 9 : tree _o2[2], _r2;
1956 9 : _o2[0] = captures[0];
1957 9 : _o2[1] = shifter;
1958 9 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1959 9 : _o1[0] = _r2;
1960 : }
1961 9 : if (TREE_TYPE (_o1[0]) != type)
1962 : {
1963 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1964 : }
1965 : else
1966 : _r1 = _o1[0];
1967 9 : res_op0 = _r1;
1968 : }
1969 9 : tree res_op1;
1970 9 : res_op1 = captures[1];
1971 9 : tree _r;
1972 9 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1973 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 548, __FILE__, __LINE__, true);
1974 9 : return _r;
1975 : }
1976 : next_after_fail661:;
1977 : }
1978 : else
1979 : {
1980 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail662;
1981 8 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail662;
1982 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail662;
1983 8 : {
1984 8 : tree res_op0;
1985 8 : {
1986 8 : tree _o1[2], _r1;
1987 8 : {
1988 8 : tree _o2[1], _r2;
1989 8 : {
1990 8 : tree _o3[2], _r3;
1991 8 : _o3[0] = captures[0];
1992 8 : _o3[1] = shifter;
1993 8 : _r3 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
1994 8 : _o2[0] = _r3;
1995 : }
1996 8 : if (TREE_TYPE (_o2[0]) != type)
1997 : {
1998 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1999 : }
2000 : else
2001 : _r2 = _o2[0];
2002 8 : _o1[0] = _r2;
2003 : }
2004 8 : _o1[1] = captures[1];
2005 8 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2006 8 : res_op0 = _r1;
2007 : }
2008 8 : tree _r;
2009 8 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2010 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 549, __FILE__, __LINE__, true);
2011 8 : return _r;
2012 : }
2013 : next_after_fail662:;
2014 : }
2015 : }
2016 : }
2017 : return NULL_TREE;
2018 : }
2019 :
2020 : tree
2021 0 : generic_simplify_398 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2022 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2023 : const enum tree_code ARG_UNUSED (cmp),
2024 : const enum tree_code ARG_UNUSED (cmp2))
2025 : {
2026 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2027 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
2028 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2029 0 : && wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
2030 : )
2031 : {
2032 0 : {
2033 0 : tree utype = TREE_TYPE (captures[2]);
2034 0 : wide_int denom = wi::to_wide (captures[1]);
2035 0 : wide_int right = wi::to_wide (captures[2]);
2036 0 : wide_int smax = wi::sdiv_trunc (wi::max_value (TREE_TYPE (captures[0])), denom);
2037 0 : wide_int smin = wi::sdiv_trunc (wi::min_value (TREE_TYPE (captures[0])), denom);
2038 0 : bool small = wi::leu_p (right, smax);
2039 0 : bool large = wi::geu_p (right, smin);
2040 0 : if (small || large
2041 : )
2042 : {
2043 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail685;
2044 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail685;
2045 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail685;
2046 0 : {
2047 0 : tree res_op0;
2048 0 : {
2049 0 : tree _o1[1], _r1;
2050 0 : _o1[0] = captures[0];
2051 0 : if (TREE_TYPE (_o1[0]) != utype)
2052 : {
2053 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
2054 : }
2055 : else
2056 : _r1 = _o1[0];
2057 0 : res_op0 = _r1;
2058 : }
2059 0 : tree res_op1;
2060 0 : {
2061 0 : tree _o1[2], _r1;
2062 0 : _o1[0] = captures[2];
2063 0 : {
2064 0 : tree _o2[1], _r2;
2065 0 : _o2[0] = captures[1];
2066 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (res_op0))
2067 : {
2068 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o2[0]);
2069 : }
2070 : else
2071 : _r2 = _o2[0];
2072 0 : _o1[1] = _r2;
2073 : }
2074 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2075 0 : res_op1 = _r1;
2076 : }
2077 0 : tree _r;
2078 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2079 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 572, __FILE__, __LINE__, true);
2080 0 : return _r;
2081 : }
2082 0 : next_after_fail685:;
2083 : }
2084 : else
2085 : {
2086 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail686;
2087 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail686;
2088 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail686;
2089 0 : {
2090 0 : tree res_op0;
2091 0 : res_op0 = captures[0];
2092 0 : tree res_op1;
2093 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
2094 0 : tree _r;
2095 0 : _r = fold_build2_loc (loc, cmp2, type, res_op0, res_op1);
2096 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 573, __FILE__, __LINE__, true);
2097 0 : return _r;
2098 : }
2099 0 : next_after_fail686:;
2100 : }
2101 0 : }
2102 : }
2103 : return NULL_TREE;
2104 : }
2105 :
2106 : tree
2107 0 : generic_simplify_414 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2108 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2109 : const enum tree_code ARG_UNUSED (cmp))
2110 : {
2111 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2112 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2113 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2114 : )
2115 : {
2116 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail739;
2117 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail739;
2118 0 : {
2119 0 : tree res_op0;
2120 0 : res_op0 = captures[1];
2121 0 : tree res_op1;
2122 0 : res_op1 = captures[0];
2123 0 : tree _r;
2124 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2125 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 591, __FILE__, __LINE__, true);
2126 0 : return _r;
2127 : }
2128 : next_after_fail739:;
2129 : }
2130 : return NULL_TREE;
2131 : }
2132 :
2133 : tree
2134 71 : generic_simplify_418 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2135 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2136 : const enum tree_code ARG_UNUSED (cmp),
2137 : const enum tree_code ARG_UNUSED (out))
2138 : {
2139 71 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2140 142 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2141 71 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2142 71 : && TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2143 56 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2144 56 : && (TYPE_PRECISION (TREE_TYPE (captures[1]))
2145 56 : >= 2 * TYPE_PRECISION (TREE_TYPE (captures[2])))
2146 56 : && TYPE_MAX_VALUE (TREE_TYPE (captures[2]))
2147 56 : && (wi::to_widest (captures[4])
2148 127 : == wi::to_widest (TYPE_MAX_VALUE (TREE_TYPE (captures[2]))))
2149 56 : && types_match (captures[2], captures[3])
2150 56 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2151 183 : && (optab_handler (umulv4_optab, TYPE_MODE (TREE_TYPE (captures[2])))
2152 : != CODE_FOR_nothing)
2153 : )
2154 : {
2155 56 : {
2156 56 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2157 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail743;
2158 56 : {
2159 56 : tree res_op0;
2160 56 : {
2161 56 : tree _o1[1], _r1;
2162 56 : {
2163 56 : tree _o2[2], _r2;
2164 56 : _o2[0] = captures[2];
2165 56 : _o2[1] = captures[3];
2166 56 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2167 56 : if (!_r2)
2168 0 : goto next_after_fail743;
2169 56 : _o1[0] = _r2;
2170 : }
2171 56 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2172 56 : res_op0 = _r1;
2173 : }
2174 56 : tree res_op1;
2175 56 : res_op1 = build_zero_cst (t);
2176 56 : tree _r;
2177 56 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2178 56 : if (TREE_SIDE_EFFECTS (captures[4]))
2179 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2180 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 609, __FILE__, __LINE__, true);
2181 56 : return _r;
2182 : }
2183 : next_after_fail743:;
2184 : }
2185 : }
2186 : return NULL_TREE;
2187 : }
2188 :
2189 : tree
2190 0 : generic_simplify_429 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2191 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2192 : const enum tree_code ARG_UNUSED (shiftrotate))
2193 : {
2194 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2195 0 : {
2196 0 : tree tem = uniform_vector_p (captures[1]);
2197 0 : if (tem
2198 : )
2199 : {
2200 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail758;
2201 0 : {
2202 0 : tree res_op0;
2203 0 : res_op0 = captures[0];
2204 0 : tree res_op1;
2205 0 : res_op1 = tem;
2206 0 : tree _r;
2207 0 : _r = fold_build2_loc (loc, shiftrotate, type, res_op0, res_op1);
2208 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2209 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2210 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 623, __FILE__, __LINE__, true);
2211 0 : return _r;
2212 : }
2213 0 : next_after_fail758:;
2214 : }
2215 : }
2216 : return NULL_TREE;
2217 : }
2218 :
2219 : tree
2220 3944045 : generic_simplify_436 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2221 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2222 : const enum tree_code ARG_UNUSED (bitop))
2223 : {
2224 3944045 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2225 3944045 : if (0
2226 : && INTEGRAL_TYPE_P (type)
2227 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2228 : && TREE_CODE (captures[3]) != INTEGER_CST
2229 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2230 : && TYPE_PRECISION (TREE_TYPE (captures[2])) > TYPE_PRECISION (type)
2231 : )
2232 : {
2233 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail772;
2234 : {
2235 : tree res_op0;
2236 : {
2237 : tree _o1[1], _r1;
2238 : _o1[0] = captures[2];
2239 : if (TREE_TYPE (_o1[0]) != type)
2240 : {
2241 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2242 : }
2243 : else
2244 : _r1 = _o1[0];
2245 : res_op0 = _r1;
2246 : }
2247 : tree res_op1;
2248 : {
2249 : tree _o1[1], _r1;
2250 : _o1[0] = captures[3];
2251 : if (TREE_TYPE (_o1[0]) != type)
2252 : {
2253 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2254 : }
2255 : else
2256 : _r1 = _o1[0];
2257 : res_op1 = _r1;
2258 : }
2259 : tree _r;
2260 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2261 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2262 : return _r;
2263 : }
2264 : next_after_fail772:;
2265 : }
2266 : else
2267 : {
2268 3944045 : if (0
2269 : && INTEGRAL_TYPE_P (type)
2270 : && types_match (type, TREE_TYPE (captures[2]))
2271 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2272 : )
2273 : {
2274 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail773;
2275 : {
2276 : tree res_op0;
2277 : res_op0 = captures[2];
2278 : tree res_op1;
2279 : {
2280 : tree _o1[1], _r1;
2281 : _o1[0] = captures[3];
2282 : if (TREE_TYPE (_o1[0]) != type)
2283 : {
2284 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2285 : }
2286 : else
2287 : _r1 = _o1[0];
2288 : res_op1 = _r1;
2289 : }
2290 : tree _r;
2291 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2292 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2293 : return _r;
2294 : }
2295 : next_after_fail773:;
2296 : }
2297 : }
2298 3944045 : return NULL_TREE;
2299 : }
2300 :
2301 : tree
2302 22145271 : generic_simplify_443 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2303 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2304 : const enum tree_code ARG_UNUSED (op))
2305 : {
2306 22145271 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2307 22145271 : if (INTEGRAL_TYPE_P (type)
2308 20612275 : && op != MULT_EXPR
2309 20612275 : && op != RDIV_EXPR
2310 11435830 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2311 11435830 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2312 11435830 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2313 11434522 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2314 11434522 : && type_has_mode_precision_p (type)
2315 11400226 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2316 0 : && types_match (captures[2], type)
2317 22145271 : && (types_match (captures[2], captures[4])
2318 0 : || poly_int_tree_p (captures[3]))
2319 : )
2320 : {
2321 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2322 : )
2323 : {
2324 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail790;
2325 0 : {
2326 0 : tree res_op0;
2327 0 : res_op0 = captures[2];
2328 0 : tree res_op1;
2329 0 : {
2330 0 : tree _o1[1], _r1;
2331 0 : _o1[0] = captures[4];
2332 0 : if (TREE_TYPE (_o1[0]) != type)
2333 : {
2334 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2335 : }
2336 : else
2337 : _r1 = _o1[0];
2338 0 : res_op1 = _r1;
2339 : }
2340 0 : tree _r;
2341 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2342 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 642, __FILE__, __LINE__, true);
2343 0 : return _r;
2344 : }
2345 0 : next_after_fail790:;
2346 : }
2347 : else
2348 : {
2349 0 : {
2350 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2351 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail791;
2352 0 : {
2353 0 : tree res_op0;
2354 0 : {
2355 0 : tree _o1[2], _r1;
2356 0 : {
2357 0 : tree _o2[1], _r2;
2358 0 : _o2[0] = captures[2];
2359 0 : if (TREE_TYPE (_o2[0]) != utype)
2360 : {
2361 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2362 : }
2363 : else
2364 : _r2 = _o2[0];
2365 0 : _o1[0] = _r2;
2366 : }
2367 0 : {
2368 0 : tree _o2[1], _r2;
2369 0 : _o2[0] = captures[4];
2370 0 : if (TREE_TYPE (_o2[0]) != utype)
2371 : {
2372 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2373 : }
2374 : else
2375 : _r2 = _o2[0];
2376 0 : _o1[1] = _r2;
2377 : }
2378 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2379 0 : res_op0 = _r1;
2380 : }
2381 0 : tree _r;
2382 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2383 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 643, __FILE__, __LINE__, true);
2384 0 : return _r;
2385 : }
2386 0 : next_after_fail791:;
2387 : }
2388 : }
2389 : }
2390 : else
2391 : {
2392 22093323 : if (FLOAT_TYPE_P (type)
2393 22197219 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2394 51948 : == DECIMAL_FLOAT_TYPE_P (type)
2395 : )
2396 : {
2397 51908 : {
2398 51908 : tree arg0 = strip_float_extensions (captures[2]);
2399 51908 : tree arg1 = strip_float_extensions (captures[4]);
2400 51908 : tree itype = TREE_TYPE (captures[0]);
2401 51908 : tree ty1 = TREE_TYPE (arg0);
2402 51908 : tree ty2 = TREE_TYPE (arg1);
2403 51908 : enum tree_code code = TREE_CODE (itype);
2404 0 : if (FLOAT_TYPE_P (ty1)
2405 51908 : && FLOAT_TYPE_P (ty2)
2406 : )
2407 : {
2408 51908 : {
2409 51908 : tree newtype = type;
2410 51908 : if (TYPE_MODE (ty1) == SDmode
2411 51640 : || TYPE_MODE (ty2) == SDmode
2412 103548 : || TYPE_MODE (type) == SDmode)
2413 283 : newtype = dfloat32_type_node;
2414 51908 : if (TYPE_MODE (ty1) == DDmode
2415 51762 : || TYPE_MODE (ty2) == DDmode
2416 103543 : || TYPE_MODE (type) == DDmode)
2417 275 : newtype = dfloat64_type_node;
2418 51908 : if (TYPE_MODE (ty1) == TDmode
2419 51907 : || TYPE_MODE (ty2) == TDmode
2420 103563 : || TYPE_MODE (type) == TDmode)
2421 268 : newtype = dfloat128_type_node;
2422 51908 : if ((newtype == dfloat32_type_node
2423 51904 : || newtype == dfloat64_type_node
2424 51761 : || newtype == dfloat128_type_node)
2425 415 : && newtype == type
2426 51919 : && types_match (newtype, type)
2427 : )
2428 : {
2429 11 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail792;
2430 5 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail792;
2431 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail792;
2432 5 : {
2433 5 : tree res_op0;
2434 5 : {
2435 5 : tree _o1[1], _r1;
2436 5 : _o1[0] = captures[2];
2437 5 : if (TREE_TYPE (_o1[0]) != newtype)
2438 : {
2439 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2440 : }
2441 : else
2442 : _r1 = _o1[0];
2443 5 : res_op0 = _r1;
2444 : }
2445 5 : tree res_op1;
2446 5 : {
2447 5 : tree _o1[1], _r1;
2448 5 : _o1[0] = captures[4];
2449 5 : if (TREE_TYPE (_o1[0]) != newtype)
2450 : {
2451 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2452 : }
2453 : else
2454 : _r1 = _o1[0];
2455 5 : res_op1 = _r1;
2456 : }
2457 5 : tree _r;
2458 5 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2459 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 644, __FILE__, __LINE__, true);
2460 5 : return _r;
2461 : }
2462 : next_after_fail792:;
2463 : }
2464 : else
2465 : {
2466 51897 : {
2467 51897 : if (element_precision (ty1) > element_precision (newtype))
2468 11791 : newtype = ty1;
2469 51897 : if (element_precision (ty2) > element_precision (newtype))
2470 4879 : newtype = ty2;
2471 51897 : if (element_precision (newtype) < element_precision (itype)
2472 14569 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2473 0 : || target_supports_op_p (newtype, op, optab_default))
2474 14569 : && (flag_unsafe_math_optimizations
2475 14561 : || (element_precision (newtype) == element_precision (type)
2476 14532 : && real_can_shorten_arithmetic (element_mode (itype),
2477 : element_mode (type))
2478 4591 : && !excess_precision_type (newtype)))
2479 52052 : && !types_match (itype, newtype)
2480 : )
2481 : {
2482 155 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail793;
2483 154 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail793;
2484 136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail793;
2485 136 : {
2486 136 : tree res_op0;
2487 136 : {
2488 136 : tree _o1[2], _r1;
2489 136 : {
2490 136 : tree _o2[1], _r2;
2491 136 : _o2[0] = captures[2];
2492 136 : if (TREE_TYPE (_o2[0]) != newtype)
2493 : {
2494 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2495 : }
2496 : else
2497 : _r2 = _o2[0];
2498 136 : _o1[0] = _r2;
2499 : }
2500 136 : {
2501 136 : tree _o2[1], _r2;
2502 136 : _o2[0] = captures[4];
2503 136 : if (TREE_TYPE (_o2[0]) != newtype)
2504 : {
2505 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2506 : }
2507 : else
2508 : _r2 = _o2[0];
2509 136 : _o1[1] = _r2;
2510 : }
2511 136 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2512 136 : res_op0 = _r1;
2513 : }
2514 136 : tree _r;
2515 136 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2516 136 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 645, __FILE__, __LINE__, true);
2517 136 : return _r;
2518 : }
2519 : next_after_fail793:;
2520 : }
2521 : }
2522 : }
2523 : }
2524 : }
2525 : }
2526 : }
2527 : }
2528 : return NULL_TREE;
2529 : }
2530 :
2531 : tree
2532 0 : generic_simplify_475 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2533 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2534 : const enum tree_code ARG_UNUSED (cmp))
2535 : {
2536 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2537 0 : if (fold_before_rtl_expansion_p ()
2538 : )
2539 : {
2540 0 : if (INTEGRAL_TYPE_P (type)
2541 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2542 : )
2543 : {
2544 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail825;
2545 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail825;
2546 0 : {
2547 0 : tree res_op0;
2548 0 : res_op0 = captures[0];
2549 0 : tree res_op1;
2550 0 : res_op1 = captures[3];
2551 0 : tree res_op2;
2552 0 : res_op2 = build_zero_cst (type);
2553 0 : tree _r;
2554 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2555 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2556 0 : return _r;
2557 : }
2558 : next_after_fail825:;
2559 : }
2560 : }
2561 : return NULL_TREE;
2562 : }
2563 :
2564 : tree
2565 0 : generic_simplify_484 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2566 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2567 : {
2568 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2569 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail855;
2570 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail855;
2571 0 : {
2572 0 : tree _r;
2573 0 : _r = captures[2];
2574 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2575 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2576 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 696, __FILE__, __LINE__, true);
2577 : return _r;
2578 : }
2579 : next_after_fail855:;
2580 : return NULL_TREE;
2581 : }
2582 :
2583 : tree
2584 214 : generic_simplify_488 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2585 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2586 : const enum tree_code ARG_UNUSED (code2),
2587 : const enum tree_code ARG_UNUSED (code1))
2588 : {
2589 214 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2590 214 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2591 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2592 214 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2593 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2]))
2594 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[2])))
2595 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2596 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2597 208 : && bitwise_equal_p (captures[2], captures[5]))
2598 : )
2599 : {
2600 6 : {
2601 6 : bool one_before = false;
2602 6 : bool one_after = false;
2603 6 : int cmp = 0;
2604 6 : bool allbits = true;
2605 6 : if (TREE_CODE (captures[2]) == INTEGER_CST
2606 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2607 : {
2608 6 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2609 6 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2610 6 : auto t2 = wi::to_wide (captures[5]);
2611 6 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2612 6 : if (cmp < 0
2613 6 : && t1 == t2 - 1)
2614 : one_before = true;
2615 6 : if (cmp > 0
2616 6 : && t1 == t2 + 1)
2617 : one_after = true;
2618 : }
2619 6 : bool val;
2620 6 : switch (code2)
2621 : {
2622 0 : case EQ_EXPR: val = (cmp == 0); break;
2623 2 : case NE_EXPR: val = (cmp != 0); break;
2624 0 : case LT_EXPR: val = (cmp < 0); break;
2625 4 : case GT_EXPR: val = (cmp > 0); break;
2626 0 : case LE_EXPR: val = (cmp <= 0); break;
2627 0 : case GE_EXPR: val = (cmp >= 0); break;
2628 0 : default: gcc_unreachable ();
2629 : }
2630 6 : if (code1 == EQ_EXPR && val
2631 : )
2632 : {
2633 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail866;
2634 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail866;
2635 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail866;
2636 0 : {
2637 0 : tree _r;
2638 0 : _r = captures[0];
2639 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2640 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2641 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2642 0 : return _r;
2643 : }
2644 : next_after_fail866:;
2645 : }
2646 : else
2647 : {
2648 6 : if (code1 == EQ_EXPR && !val
2649 : )
2650 : {
2651 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail867;
2652 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail867;
2653 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail867;
2654 0 : {
2655 0 : tree _r;
2656 0 : _r = constant_boolean_node (false, type);
2657 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2658 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2659 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2660 0 : return _r;
2661 : }
2662 : next_after_fail867:;
2663 : }
2664 : else
2665 : {
2666 6 : if (code1 == NE_EXPR && !val && allbits
2667 : )
2668 : {
2669 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail868;
2670 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail868;
2671 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail868;
2672 0 : {
2673 0 : tree _r;
2674 0 : _r = captures[3];
2675 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 684, __FILE__, __LINE__, true);
2676 0 : return _r;
2677 : }
2678 : next_after_fail868:;
2679 : }
2680 : else
2681 : {
2682 6 : if ((code1 == NE_EXPR
2683 6 : && code2 == GE_EXPR
2684 0 : && cmp == 0
2685 0 : && allbits)
2686 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2687 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2688 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2689 : )
2690 : {
2691 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail869;
2692 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail869;
2693 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail869;
2694 0 : {
2695 0 : tree res_op0;
2696 0 : res_op0 = captures[4];
2697 0 : tree res_op1;
2698 0 : {
2699 0 : tree _o1[1], _r1;
2700 0 : _o1[0] = captures[2];
2701 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2702 : {
2703 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2704 : }
2705 : else
2706 : _r1 = _o1[0];
2707 0 : res_op1 = _r1;
2708 : }
2709 0 : tree _r;
2710 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2711 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 685, __FILE__, __LINE__, true);
2712 0 : return _r;
2713 : }
2714 : next_after_fail869:;
2715 : }
2716 : else
2717 : {
2718 6 : if ((code1 == NE_EXPR
2719 6 : && code2 == LE_EXPR
2720 0 : && cmp == 0
2721 0 : && allbits)
2722 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2723 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2724 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2725 : )
2726 : {
2727 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail870;
2728 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail870;
2729 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail870;
2730 0 : {
2731 0 : tree res_op0;
2732 0 : res_op0 = captures[4];
2733 0 : tree res_op1;
2734 0 : {
2735 0 : tree _o1[1], _r1;
2736 0 : _o1[0] = captures[2];
2737 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2738 : {
2739 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2740 : }
2741 : else
2742 : _r1 = _o1[0];
2743 0 : res_op1 = _r1;
2744 : }
2745 0 : tree _r;
2746 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2747 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 686, __FILE__, __LINE__, true);
2748 0 : return _r;
2749 : }
2750 : next_after_fail870:;
2751 : }
2752 : else
2753 : {
2754 6 : if ((code1 == NE_EXPR
2755 6 : && code2 == GT_EXPR
2756 : && one_after
2757 4 : && allbits)
2758 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2759 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2760 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2761 : )
2762 : {
2763 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail871;
2764 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail871;
2765 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail871;
2766 0 : {
2767 0 : tree res_op0;
2768 0 : res_op0 = captures[4];
2769 0 : tree res_op1;
2770 0 : {
2771 0 : tree _o1[1], _r1;
2772 0 : _o1[0] = captures[2];
2773 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2774 : {
2775 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2776 : }
2777 : else
2778 : _r1 = _o1[0];
2779 0 : res_op1 = _r1;
2780 : }
2781 0 : tree _r;
2782 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2783 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 687, __FILE__, __LINE__, true);
2784 0 : return _r;
2785 : }
2786 : next_after_fail871:;
2787 : }
2788 : else
2789 : {
2790 6 : if ((code1 == NE_EXPR
2791 6 : && code2 == LT_EXPR
2792 : && one_before
2793 0 : && allbits)
2794 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2795 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2796 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2797 : )
2798 : {
2799 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail872;
2800 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail872;
2801 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail872;
2802 0 : {
2803 0 : tree res_op0;
2804 0 : res_op0 = captures[4];
2805 0 : tree res_op1;
2806 0 : {
2807 0 : tree _o1[1], _r1;
2808 0 : _o1[0] = captures[2];
2809 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2810 : {
2811 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2812 : }
2813 : else
2814 : _r1 = _o1[0];
2815 0 : res_op1 = _r1;
2816 : }
2817 0 : tree _r;
2818 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2819 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 688, __FILE__, __LINE__, true);
2820 0 : return _r;
2821 : }
2822 : next_after_fail872:;
2823 : }
2824 : }
2825 : }
2826 : }
2827 : }
2828 : }
2829 : }
2830 : }
2831 : }
2832 : return NULL_TREE;
2833 : }
2834 :
2835 : tree
2836 147 : generic_simplify_521 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2837 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2838 : {
2839 147 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2840 147 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail916;
2841 147 : {
2842 147 : tree res_op0;
2843 147 : {
2844 147 : tree _o1[1], _r1;
2845 147 : _o1[0] = captures[0];
2846 147 : if (TREE_TYPE (_o1[0]) != type)
2847 : {
2848 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2849 : }
2850 : else
2851 : _r1 = _o1[0];
2852 147 : res_op0 = _r1;
2853 : }
2854 147 : tree res_op1;
2855 147 : res_op1 = build_each_one_cst (type);
2856 147 : tree _r;
2857 147 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
2858 147 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 726, __FILE__, __LINE__, true);
2859 : return _r;
2860 : }
2861 0 : next_after_fail916:;
2862 0 : return NULL_TREE;
2863 : }
2864 :
2865 : tree
2866 0 : generic_simplify_527 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2867 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2868 : const enum tree_code ARG_UNUSED (minmax))
2869 : {
2870 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2871 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail923;
2872 0 : {
2873 0 : tree _r;
2874 0 : _r = captures[0];
2875 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 733, __FILE__, __LINE__, true);
2876 : return _r;
2877 : }
2878 0 : next_after_fail923:;
2879 0 : return NULL_TREE;
2880 : }
2881 :
2882 : tree
2883 0 : generic_simplify_534 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2884 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2885 : const enum tree_code ARG_UNUSED (minmax))
2886 : {
2887 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2888 0 : if (TYPE_UNSIGNED (type)
2889 0 : || (tree_int_cst_sgn (captures[2]) == tree_int_cst_sgn (captures[4]))
2890 : )
2891 : {
2892 0 : {
2893 0 : auto andvalue = wi::to_wide (captures[2]) & wi::to_wide (captures[4]);
2894 0 : if (andvalue == ((minmax == MIN_EXPR)
2895 0 : ? wi::to_wide (captures[2]) : wi::to_wide (captures[4]))
2896 : )
2897 : {
2898 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail930;
2899 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail930;
2900 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail930;
2901 0 : {
2902 0 : tree _r;
2903 0 : _r = captures[0];
2904 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 739, __FILE__, __LINE__, true);
2905 0 : return _r;
2906 : }
2907 0 : next_after_fail930:;
2908 : }
2909 : else
2910 : {
2911 0 : if (andvalue == ((minmax != MIN_EXPR)
2912 0 : ? wi::to_wide (captures[2]) : wi::to_wide (captures[4]))
2913 : )
2914 : {
2915 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail931;
2916 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail931;
2917 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail931;
2918 0 : {
2919 0 : tree _r;
2920 0 : _r = captures[3];
2921 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 740, __FILE__, __LINE__, true);
2922 0 : return _r;
2923 : }
2924 0 : next_after_fail931:;
2925 : }
2926 : }
2927 0 : }
2928 : }
2929 : return NULL_TREE;
2930 : }
2931 :
2932 : tree
2933 2 : generic_simplify_545 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2934 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2935 : {
2936 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2937 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2938 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2939 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2940 : )
2941 : {
2942 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail955;
2943 2 : {
2944 2 : tree res_op0;
2945 2 : res_op0 = captures[0];
2946 2 : tree _r;
2947 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2948 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 752, __FILE__, __LINE__, true);
2949 2 : return _r;
2950 : }
2951 0 : next_after_fail955:;
2952 : }
2953 : return NULL_TREE;
2954 : }
2955 :
2956 : tree
2957 12 : generic_simplify_552 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2958 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2959 : const enum tree_code ARG_UNUSED (op))
2960 : {
2961 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2962 12 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail962;
2963 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail962;
2964 12 : {
2965 12 : tree _r;
2966 12 : _r = captures[2];
2967 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 538, __FILE__, __LINE__, true);
2968 : return _r;
2969 : }
2970 : next_after_fail962:;
2971 : return NULL_TREE;
2972 : }
2973 :
2974 : tree
2975 0 : generic_simplify_562 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2976 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2977 : const combined_fn ARG_UNUSED (cond_len_op))
2978 : {
2979 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2980 0 : {
2981 0 : tree op_type = TREE_TYPE (captures[6]);
2982 0 : if (inverse_conditions_p (captures[0], captures[2])
2983 0 : && element_precision (type) == element_precision (op_type)
2984 : )
2985 : {
2986 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail972;
2987 0 : {
2988 0 : tree res_op0;
2989 0 : {
2990 0 : tree _o1[7], _r1;
2991 0 : _o1[0] = captures[2];
2992 0 : _o1[1] = captures[3];
2993 0 : _o1[2] = captures[4];
2994 0 : _o1[3] = captures[5];
2995 0 : {
2996 0 : tree _o2[1], _r2;
2997 0 : _o2[0] = captures[1];
2998 0 : if (TREE_TYPE (_o2[0]) != op_type)
2999 : {
3000 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3001 : }
3002 : else
3003 : _r2 = _o2[0];
3004 0 : _o1[4] = _r2;
3005 : }
3006 0 : _o1[5] = captures[7];
3007 0 : _o1[6] = captures[8];
3008 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 7, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5], _o1[6]);
3009 0 : if (!_r1)
3010 0 : goto next_after_fail972;
3011 0 : res_op0 = _r1;
3012 : }
3013 0 : tree _r;
3014 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3015 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3016 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3017 0 : if (TREE_SIDE_EFFECTS (captures[6]))
3018 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
3019 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 764, __FILE__, __LINE__, true);
3020 0 : return _r;
3021 : }
3022 : next_after_fail972:;
3023 : }
3024 : }
3025 : return NULL_TREE;
3026 : }
3027 :
3028 : tree
3029 60 : generic_simplify_574 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3030 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3031 : const enum tree_code ARG_UNUSED (cmp))
3032 : {
3033 60 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3034 60 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail987;
3035 60 : {
3036 60 : tree _r;
3037 60 : _r = constant_boolean_node (true, type);
3038 60 : if (TREE_SIDE_EFFECTS (captures[0]))
3039 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3040 60 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 779, __FILE__, __LINE__, true);
3041 : return _r;
3042 : }
3043 0 : next_after_fail987:;
3044 0 : return NULL_TREE;
3045 : }
3046 :
3047 : tree
3048 0 : generic_simplify_581 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3049 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3050 : const combined_fn ARG_UNUSED (sins),
3051 : const combined_fn ARG_UNUSED (atans),
3052 : const combined_fn ARG_UNUSED (sqrts),
3053 : const combined_fn ARG_UNUSED (copysigns))
3054 : {
3055 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3056 0 : {
3057 0 : REAL_VALUE_TYPE r_cst;
3058 0 : build_sinatan_real (&r_cst, type);
3059 0 : tree t_cst = build_real (type, r_cst);
3060 0 : tree t_one = build_one_cst (type);
3061 0 : if (SCALAR_FLOAT_TYPE_P (type)
3062 : )
3063 : {
3064 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail994;
3065 0 : {
3066 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail994;
3067 0 : tree res_op0;
3068 0 : {
3069 0 : tree _o1[2], _r1;
3070 0 : {
3071 0 : tree _o2[1], _r2;
3072 0 : _o2[0] = unshare_expr (captures[1]);
3073 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3074 0 : _o1[0] = _r2;
3075 : }
3076 0 : _o1[1] = t_cst;
3077 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3078 0 : res_op0 = _r1;
3079 : }
3080 0 : tree res_op1;
3081 0 : {
3082 0 : tree _o1[2], _r1;
3083 0 : _o1[0] = unshare_expr (captures[1]);
3084 0 : {
3085 0 : tree _o2[1], _r2;
3086 0 : {
3087 0 : tree _o3[2], _r3;
3088 0 : {
3089 0 : tree _o4[2], _r4;
3090 0 : _o4[0] = unshare_expr (captures[1]);
3091 0 : _o4[1] = unshare_expr (captures[1]);
3092 0 : _r4 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o4[0]), _o4[0], _o4[1]);
3093 0 : _o3[0] = _r4;
3094 : }
3095 0 : _o3[1] = t_one;
3096 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3097 0 : _o2[0] = _r3;
3098 : }
3099 0 : _r2 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o2[0]), 1, _o2[0]);
3100 0 : if (!_r2)
3101 0 : goto next_after_fail994;
3102 0 : _o1[1] = _r2;
3103 : }
3104 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3105 0 : res_op1 = _r1;
3106 : }
3107 0 : tree res_op2;
3108 0 : {
3109 0 : tree _o1[2], _r1;
3110 0 : _o1[0] = t_one;
3111 0 : _o1[1] = captures[1];
3112 0 : _r1 = maybe_build_call_expr_loc (loc, copysigns, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
3113 0 : if (!_r1)
3114 0 : goto next_after_fail994;
3115 0 : res_op2 = _r1;
3116 : }
3117 0 : tree _r;
3118 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
3119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 786, __FILE__, __LINE__, true);
3120 0 : return _r;
3121 : }
3122 0 : next_after_fail994:;
3123 : }
3124 : }
3125 0 : return NULL_TREE;
3126 : }
3127 :
3128 : tree
3129 0 : generic_simplify_604 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3130 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3131 : {
3132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3133 0 : if (canonicalize_math_after_vectorization_p ()
3134 : )
3135 : {
3136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1017;
3137 : {
3138 : tree res_op0;
3139 : res_op0 = captures[0];
3140 : tree res_op1;
3141 : res_op1 = captures[1];
3142 : tree res_op2;
3143 : res_op2 = captures[2];
3144 : tree _r;
3145 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3146 : if (!_r)
3147 : goto next_after_fail1017;
3148 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
3149 : return _r;
3150 : }
3151 0 : next_after_fail1017:;
3152 : }
3153 0 : return NULL_TREE;
3154 : }
3155 :
3156 : tree
3157 0 : generic_simplify_613 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3158 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3159 : {
3160 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3161 0 : if (canonicalize_math_after_vectorization_p ()
3162 : )
3163 : {
3164 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1026;
3165 : {
3166 : tree res_op0;
3167 : res_op0 = captures[0];
3168 : tree res_op1;
3169 : res_op1 = captures[1];
3170 : tree res_op2;
3171 : res_op2 = captures[2];
3172 : tree res_op3;
3173 : res_op3 = captures[3];
3174 : tree res_op4;
3175 : res_op4 = captures[4];
3176 : tree _r;
3177 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3178 : if (!_r)
3179 : goto next_after_fail1026;
3180 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
3181 : return _r;
3182 : }
3183 0 : next_after_fail1026:;
3184 : }
3185 0 : return NULL_TREE;
3186 : }
3187 :
3188 : tree
3189 0 : generic_simplify_622 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3190 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3191 : const enum tree_code ARG_UNUSED (rot),
3192 : const combined_fn ARG_UNUSED (popcount))
3193 : {
3194 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3195 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3196 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3197 0 : && (
3198 :
3199 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3200 : )
3201 : {
3202 0 : {
3203 0 : tree type0 = TREE_TYPE (captures[0]);
3204 0 : tree type1 = TREE_TYPE (captures[1]);
3205 0 : unsigned int prec0 = TYPE_PRECISION (type0);
3206 0 : unsigned int prec1 = TYPE_PRECISION (type1);
3207 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
3208 : )
3209 : {
3210 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1035;
3211 0 : {
3212 0 : tree res_op0;
3213 0 : {
3214 0 : tree _o1[1], _r1;
3215 0 : _o1[0] = captures[2];
3216 0 : if (TREE_TYPE (_o1[0]) != type0)
3217 : {
3218 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3219 : }
3220 : else
3221 : _r1 = _o1[0];
3222 0 : res_op0 = _r1;
3223 : }
3224 0 : tree _r;
3225 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
3226 0 : if (!_r)
3227 0 : goto next_after_fail1035;
3228 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3229 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3230 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 824, __FILE__, __LINE__, true);
3231 0 : return _r;
3232 : }
3233 : next_after_fail1035:;
3234 : }
3235 : }
3236 : }
3237 : return NULL_TREE;
3238 : }
3239 :
3240 : tree
3241 0 : generic_simplify_633 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3242 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3243 : const combined_fn ARG_UNUSED (reduc))
3244 : {
3245 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3246 0 : {
3247 0 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3248 0 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3249 0 : tree elt = ctor_single_nonzero_element (ctor);
3250 0 : if (elt
3251 0 : && types_match (type, TREE_TYPE (elt))
3252 0 : && !HONOR_SNANS (type)
3253 0 : && !HONOR_SIGNED_ZEROS (type)
3254 : )
3255 : {
3256 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1048;
3257 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1048;
3258 0 : {
3259 0 : tree _r;
3260 0 : _r = elt;
3261 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 833, __FILE__, __LINE__, true);
3262 0 : return _r;
3263 : }
3264 : next_after_fail1048:;
3265 : }
3266 : }
3267 : return NULL_TREE;
3268 : }
3269 :
3270 : tree
3271 6568896 : generic_simplify_FLOAT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3272 : {
3273 6568896 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3274 6568896 : switch (TREE_CODE (_p0))
3275 : {
3276 561010 : CASE_CONVERT:
3277 561010 : {
3278 561010 : tree _q20 = TREE_OPERAND (_p0, 0);
3279 561010 : switch (TREE_CODE (_q20))
3280 : {
3281 0 : case LT_EXPR:
3282 0 : {
3283 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3284 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3285 0 : {
3286 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3287 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, LT_EXPR);
3288 0 : if (res) return res;
3289 : }
3290 0 : break;
3291 : }
3292 0 : case LE_EXPR:
3293 0 : {
3294 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3295 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3296 0 : {
3297 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3298 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, LE_EXPR);
3299 0 : if (res) return res;
3300 : }
3301 0 : break;
3302 : }
3303 0 : case EQ_EXPR:
3304 0 : {
3305 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3306 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3307 0 : {
3308 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3309 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, EQ_EXPR);
3310 0 : if (res) return res;
3311 : }
3312 0 : break;
3313 : }
3314 0 : case NE_EXPR:
3315 0 : {
3316 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3317 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3318 0 : {
3319 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3320 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, NE_EXPR);
3321 0 : if (res) return res;
3322 : }
3323 0 : break;
3324 : }
3325 0 : case GE_EXPR:
3326 0 : {
3327 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3328 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3329 0 : {
3330 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3331 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, GE_EXPR);
3332 0 : if (res) return res;
3333 : }
3334 0 : break;
3335 : }
3336 0 : case GT_EXPR:
3337 0 : {
3338 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3339 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3340 0 : {
3341 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3342 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, GT_EXPR);
3343 0 : if (res) return res;
3344 : }
3345 0 : break;
3346 : }
3347 0 : case UNORDERED_EXPR:
3348 0 : {
3349 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3350 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3351 0 : {
3352 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3353 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, UNORDERED_EXPR);
3354 0 : if (res) return res;
3355 : }
3356 0 : break;
3357 : }
3358 0 : case ORDERED_EXPR:
3359 0 : {
3360 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3361 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3362 0 : {
3363 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3364 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, ORDERED_EXPR);
3365 0 : if (res) return res;
3366 : }
3367 0 : break;
3368 : }
3369 0 : case UNLT_EXPR:
3370 0 : {
3371 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3372 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3373 0 : {
3374 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3375 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, UNLT_EXPR);
3376 0 : if (res) return res;
3377 : }
3378 0 : break;
3379 : }
3380 0 : case UNLE_EXPR:
3381 0 : {
3382 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3383 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3384 0 : {
3385 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3386 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, UNLE_EXPR);
3387 0 : if (res) return res;
3388 : }
3389 0 : break;
3390 : }
3391 0 : case UNGT_EXPR:
3392 0 : {
3393 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3394 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3395 0 : {
3396 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3397 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, UNGT_EXPR);
3398 0 : if (res) return res;
3399 : }
3400 0 : break;
3401 : }
3402 0 : case UNGE_EXPR:
3403 0 : {
3404 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3405 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3406 0 : {
3407 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3408 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, UNGE_EXPR);
3409 0 : if (res) return res;
3410 : }
3411 0 : break;
3412 : }
3413 0 : case UNEQ_EXPR:
3414 0 : {
3415 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3416 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3417 0 : {
3418 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3419 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, UNEQ_EXPR);
3420 0 : if (res) return res;
3421 : }
3422 0 : break;
3423 : }
3424 0 : case LTGT_EXPR:
3425 0 : {
3426 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3427 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3428 0 : {
3429 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3430 0 : tree res = generic_simplify_526 (loc, type, _p0, captures, LTGT_EXPR);
3431 0 : if (res) return res;
3432 : }
3433 0 : break;
3434 : }
3435 : default:;
3436 : }
3437 : break;
3438 : }
3439 6568896 : default:;
3440 : }
3441 6568896 : {
3442 6568896 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3443 13137792 : if ((
3444 :
3445 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3446 : || (
3447 : 1
3448 6568896 : && type == TREE_TYPE (captures[0]))
3449 : )
3450 : {
3451 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1107;
3452 0 : {
3453 0 : tree _r;
3454 0 : _r = captures[0];
3455 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
3456 0 : return _r;
3457 : }
3458 0 : next_after_fail1107:;
3459 : }
3460 : }
3461 6568896 : switch (TREE_CODE (_p0))
3462 : {
3463 561010 : CASE_CONVERT:
3464 561010 : {
3465 561010 : tree _q20 = TREE_OPERAND (_p0, 0);
3466 561010 : {
3467 561010 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3468 561010 : {
3469 561010 : tree inside_type = TREE_TYPE (captures[1]);
3470 561010 : tree inter_type = TREE_TYPE (captures[0]);
3471 561010 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3472 561010 : int inside_ptr = POINTER_TYPE_P (inside_type);
3473 561010 : int inside_float = FLOAT_TYPE_P (inside_type);
3474 561010 : int inside_vec = VECTOR_TYPE_P (inside_type);
3475 561010 : unsigned int inside_prec = element_precision (inside_type);
3476 561010 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3477 561010 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3478 561010 : int inter_ptr = POINTER_TYPE_P (inter_type);
3479 561010 : int inter_float = FLOAT_TYPE_P (inter_type);
3480 561010 : int inter_vec = VECTOR_TYPE_P (inter_type);
3481 561010 : unsigned int inter_prec = element_precision (inter_type);
3482 561010 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3483 561010 : int final_int = INTEGRAL_TYPE_P (type);
3484 561010 : int final_ptr = POINTER_TYPE_P (type);
3485 561010 : int final_float = FLOAT_TYPE_P (type);
3486 561010 : int final_vec = VECTOR_TYPE_P (type);
3487 561010 : unsigned int final_prec = element_precision (type);
3488 561010 : int final_unsignedp = TYPE_UNSIGNED (type);
3489 561010 : if (((
3490 :
3491 : && useless_type_conversion_p (type, inside_type))
3492 : || (
3493 : 1
3494 561010 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3495 0 : && (((inter_int || inter_ptr) && final_int)
3496 0 : || (inter_float && final_float))
3497 561010 : && inter_prec >= final_prec
3498 : )
3499 : {
3500 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1108;
3501 0 : {
3502 0 : tree res_op0;
3503 0 : res_op0 = captures[1];
3504 0 : tree _r;
3505 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3506 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
3507 0 : return _r;
3508 : }
3509 0 : next_after_fail1108:;
3510 : }
3511 : else
3512 : {
3513 561010 : if (((inter_int && inside_int) || (inter_float && inside_float))
3514 561004 : && (final_int || final_float)
3515 561004 : && inter_prec >= inside_prec
3516 560009 : && (inter_float || inter_unsignedp == inside_unsignedp)
3517 : )
3518 : {
3519 557622 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1109;
3520 557622 : {
3521 557622 : tree res_op0;
3522 557622 : res_op0 = captures[1];
3523 557622 : tree _r;
3524 557622 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3525 557622 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
3526 557622 : return _r;
3527 : }
3528 0 : next_after_fail1109:;
3529 0 : }
3530 : else
3531 : {
3532 3388 : if (inside_int && inter_int && final_int
3533 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3534 0 : && inside_unsignedp && !inter_unsignedp)
3535 0 : || final_prec == inter_prec
3536 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3537 0 : && !inside_unsignedp && inter_unsignedp))
3538 : )
3539 : {
3540 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1110;
3541 0 : {
3542 0 : tree res_op0;
3543 0 : res_op0 = captures[1];
3544 0 : tree _r;
3545 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3546 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 850, __FILE__, __LINE__, true);
3547 0 : return _r;
3548 : }
3549 0 : next_after_fail1110:;
3550 0 : }
3551 : else
3552 : {
3553 3388 : if (! inside_float && ! inter_float && ! final_float
3554 : && ! inside_vec && ! inter_vec && ! final_vec
3555 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3556 0 : && ! (inside_int && inter_int
3557 0 : && inter_unsignedp != inside_unsignedp
3558 0 : && inter_prec < final_prec)
3559 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3560 0 : == (final_unsignedp && final_prec > inter_prec))
3561 0 : && ! (inside_ptr && inter_prec != final_prec)
3562 0 : && ! (final_ptr && inside_prec != inter_prec)
3563 : )
3564 : {
3565 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1111;
3566 0 : {
3567 0 : tree res_op0;
3568 0 : res_op0 = captures[1];
3569 0 : tree _r;
3570 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3571 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
3572 0 : return _r;
3573 : }
3574 0 : next_after_fail1111:;
3575 0 : }
3576 : else
3577 : {
3578 3388 : if (inside_int && inter_int && final_int
3579 3382 : && final_prec <= inside_prec
3580 0 : && inter_prec >= inside_prec
3581 : )
3582 : {
3583 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1112;
3584 0 : {
3585 0 : tree res_op0;
3586 0 : res_op0 = captures[1];
3587 0 : tree _r;
3588 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3589 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 852, __FILE__, __LINE__, true);
3590 0 : return _r;
3591 : }
3592 0 : next_after_fail1112:;
3593 0 : }
3594 : else
3595 : {
3596 : if (0
3597 : && final_int && inter_int && inside_int
3598 : && final_prec >= inside_prec
3599 : && inside_prec > inter_prec
3600 : && inter_unsignedp
3601 : )
3602 : {
3603 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1113;
3604 : {
3605 : tree res_op0;
3606 : {
3607 : tree _o1[2], _r1;
3608 : _o1[0] = captures[1];
3609 : _o1[1] = wide_int_to_tree
3610 : (inside_type,
3611 : wi::mask (inter_prec, false,
3612 : TYPE_PRECISION (inside_type)));
3613 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3614 : res_op0 = _r1;
3615 : }
3616 : tree _r;
3617 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3618 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 853, __FILE__, __LINE__, true);
3619 : return _r;
3620 : }
3621 : next_after_fail1113:;
3622 : }
3623 : else
3624 : {
3625 : if (0
3626 : && inside_int && inter_float && final_int &&
3627 : (unsigned) significand_size (TYPE_MODE (inter_type))
3628 : >= inside_prec - !inside_unsignedp
3629 : )
3630 : {
3631 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1114;
3632 : {
3633 : tree res_op0;
3634 : res_op0 = captures[1];
3635 : tree _r;
3636 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3637 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 854, __FILE__, __LINE__, true);
3638 : return _r;
3639 : }
3640 : next_after_fail1114:;
3641 : }
3642 : }
3643 : }
3644 : }
3645 : }
3646 : }
3647 : }
3648 : }
3649 : }
3650 3388 : break;
3651 : }
3652 0 : case FLOAT_EXPR:
3653 0 : {
3654 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3655 0 : {
3656 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3657 0 : {
3658 0 : tree inside_type = TREE_TYPE (captures[1]);
3659 0 : tree inter_type = TREE_TYPE (captures[0]);
3660 0 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3661 0 : int inside_ptr = POINTER_TYPE_P (inside_type);
3662 0 : int inside_float = FLOAT_TYPE_P (inside_type);
3663 0 : int inside_vec = VECTOR_TYPE_P (inside_type);
3664 0 : unsigned int inside_prec = element_precision (inside_type);
3665 0 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3666 0 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3667 0 : int inter_ptr = POINTER_TYPE_P (inter_type);
3668 0 : int inter_float = FLOAT_TYPE_P (inter_type);
3669 0 : int inter_vec = VECTOR_TYPE_P (inter_type);
3670 0 : unsigned int inter_prec = element_precision (inter_type);
3671 0 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3672 0 : int final_int = INTEGRAL_TYPE_P (type);
3673 0 : int final_ptr = POINTER_TYPE_P (type);
3674 0 : int final_float = FLOAT_TYPE_P (type);
3675 0 : int final_vec = VECTOR_TYPE_P (type);
3676 0 : unsigned int final_prec = element_precision (type);
3677 0 : int final_unsignedp = TYPE_UNSIGNED (type);
3678 0 : if (((
3679 :
3680 : && useless_type_conversion_p (type, inside_type))
3681 : || (
3682 : 1
3683 0 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3684 0 : && (((inter_int || inter_ptr) && final_int)
3685 0 : || (inter_float && final_float))
3686 0 : && inter_prec >= final_prec
3687 : )
3688 : {
3689 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1115;
3690 0 : {
3691 0 : tree res_op0;
3692 0 : res_op0 = captures[1];
3693 0 : tree _r;
3694 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3695 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
3696 0 : return _r;
3697 : }
3698 0 : next_after_fail1115:;
3699 : }
3700 : else
3701 : {
3702 0 : if (((inter_int && inside_int) || (inter_float && inside_float))
3703 0 : && (final_int || final_float)
3704 0 : && inter_prec >= inside_prec
3705 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
3706 : )
3707 : {
3708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1116;
3709 0 : {
3710 0 : tree res_op0;
3711 0 : res_op0 = captures[1];
3712 0 : tree _r;
3713 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3714 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
3715 0 : return _r;
3716 : }
3717 0 : next_after_fail1116:;
3718 0 : }
3719 : else
3720 : {
3721 0 : if (inside_int && inter_int && final_int
3722 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3723 0 : && inside_unsignedp && !inter_unsignedp)
3724 0 : || final_prec == inter_prec
3725 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3726 0 : && !inside_unsignedp && inter_unsignedp))
3727 : )
3728 : {
3729 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1117;
3730 0 : {
3731 0 : tree res_op0;
3732 0 : res_op0 = captures[1];
3733 0 : tree _r;
3734 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3735 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 850, __FILE__, __LINE__, true);
3736 0 : return _r;
3737 : }
3738 0 : next_after_fail1117:;
3739 0 : }
3740 : else
3741 : {
3742 0 : if (! inside_float && ! inter_float && ! final_float
3743 : && ! inside_vec && ! inter_vec && ! final_vec
3744 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3745 0 : && ! (inside_int && inter_int
3746 0 : && inter_unsignedp != inside_unsignedp
3747 0 : && inter_prec < final_prec)
3748 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3749 0 : == (final_unsignedp && final_prec > inter_prec))
3750 0 : && ! (inside_ptr && inter_prec != final_prec)
3751 0 : && ! (final_ptr && inside_prec != inter_prec)
3752 : )
3753 : {
3754 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1118;
3755 0 : {
3756 0 : tree res_op0;
3757 0 : res_op0 = captures[1];
3758 0 : tree _r;
3759 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3760 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
3761 0 : return _r;
3762 : }
3763 0 : next_after_fail1118:;
3764 0 : }
3765 : else
3766 : {
3767 0 : if (inside_int && inter_int && final_int
3768 0 : && final_prec <= inside_prec
3769 0 : && inter_prec >= inside_prec
3770 : )
3771 : {
3772 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1119;
3773 0 : {
3774 0 : tree res_op0;
3775 0 : res_op0 = captures[1];
3776 0 : tree _r;
3777 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3778 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 852, __FILE__, __LINE__, true);
3779 0 : return _r;
3780 : }
3781 0 : next_after_fail1119:;
3782 0 : }
3783 : else
3784 : {
3785 : if (0
3786 : && final_int && inter_int && inside_int
3787 : && final_prec >= inside_prec
3788 : && inside_prec > inter_prec
3789 : && inter_unsignedp
3790 : )
3791 : {
3792 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1120;
3793 : {
3794 : tree res_op0;
3795 : {
3796 : tree _o1[2], _r1;
3797 : _o1[0] = captures[1];
3798 : _o1[1] = wide_int_to_tree
3799 : (inside_type,
3800 : wi::mask (inter_prec, false,
3801 : TYPE_PRECISION (inside_type)));
3802 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3803 : res_op0 = _r1;
3804 : }
3805 : tree _r;
3806 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3807 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 853, __FILE__, __LINE__, true);
3808 : return _r;
3809 : }
3810 : next_after_fail1120:;
3811 : }
3812 : else
3813 : {
3814 : if (0
3815 : && inside_int && inter_float && final_int &&
3816 : (unsigned) significand_size (TYPE_MODE (inter_type))
3817 : >= inside_prec - !inside_unsignedp
3818 : )
3819 : {
3820 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1121;
3821 : {
3822 : tree res_op0;
3823 : res_op0 = captures[1];
3824 : tree _r;
3825 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3826 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 854, __FILE__, __LINE__, true);
3827 : return _r;
3828 : }
3829 : next_after_fail1121:;
3830 : }
3831 : }
3832 : }
3833 : }
3834 : }
3835 : }
3836 : }
3837 : }
3838 : }
3839 0 : break;
3840 : }
3841 : default:;
3842 : }
3843 : return NULL_TREE;
3844 : }
3845 :
3846 : tree
3847 72163133 : generic_simplify_MULT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3848 : {
3849 72163133 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3850 72163133 : switch (TREE_CODE (_p1))
3851 : {
3852 445 : case VECTOR_CST:
3853 445 : {
3854 445 : {
3855 445 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3856 445 : if (initializer_each_zero_or_onep (captures[1])
3857 9 : && !HONOR_SNANS (type)
3858 454 : && !HONOR_SIGNED_ZEROS (type)
3859 : )
3860 : {
3861 5 : {
3862 5 : tree itype = FLOAT_TYPE_P (type) ? unsigned_type_for (type) : type;
3863 5 : if (itype
3864 5 : && (!VECTOR_MODE_P (TYPE_MODE (type))
3865 5 : || (VECTOR_MODE_P (TYPE_MODE (itype))
3866 5 : && optab_handler (and_optab,
3867 5 : TYPE_MODE (itype)) != CODE_FOR_nothing))
3868 : )
3869 : {
3870 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1414;
3871 5 : {
3872 5 : tree res_op0;
3873 5 : {
3874 5 : tree _o1[2], _r1;
3875 5 : {
3876 5 : tree _o2[1], _r2;
3877 5 : _o2[0] = captures[0];
3878 5 : if (TREE_TYPE (_o2[0]) != itype)
3879 : {
3880 1 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, itype, _o2[0]);
3881 : }
3882 : else
3883 : _r2 = _o2[0];
3884 5 : _o1[0] = _r2;
3885 : }
3886 5 : {
3887 5 : tree _o2[2], _r2;
3888 5 : _o2[0] = captures[1];
3889 5 : _o2[1] = build_zero_cst (type);
3890 5 : _r2 = fold_build2_loc (loc, NE_EXPR, itype, _o2[0], _o2[1]);
3891 5 : _o1[1] = _r2;
3892 : }
3893 5 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, itype, _o1[0], _o1[1]);
3894 5 : res_op0 = _r1;
3895 : }
3896 5 : tree _r;
3897 5 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3898 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
3899 5 : return _r;
3900 : }
3901 0 : next_after_fail1414:;
3902 : }
3903 : }
3904 : }
3905 : }
3906 440 : break;
3907 : }
3908 72163128 : default:;
3909 : }
3910 72163128 : if (integer_zerop (_p1))
3911 : {
3912 33570 : {
3913 33570 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3914 33570 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1415;
3915 33570 : {
3916 33570 : tree _r;
3917 33570 : _r = captures[1];
3918 33570 : if (TREE_SIDE_EFFECTS (captures[0]))
3919 2441 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3920 33570 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
3921 33570 : return _r;
3922 : }
3923 0 : next_after_fail1415:;
3924 : }
3925 : }
3926 72129558 : if (real_zerop (_p1))
3927 : {
3928 426 : {
3929 426 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3930 426 : if (!tree_expr_maybe_nan_p (captures[0])
3931 218 : && (!HONOR_NANS (type) || !tree_expr_maybe_infinite_p (captures[0]))
3932 436 : && (!HONOR_SIGNED_ZEROS (type) || tree_expr_nonnegative_p (captures[0]))
3933 : )
3934 : {
3935 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1416;
3936 4 : {
3937 4 : tree _r;
3938 4 : _r = captures[1];
3939 4 : if (TREE_SIDE_EFFECTS (captures[0]))
3940 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3941 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
3942 4 : return _r;
3943 : }
3944 0 : next_after_fail1416:;
3945 : }
3946 : }
3947 : }
3948 72129554 : if (real_onep (_p1))
3949 : {
3950 1246 : {
3951 1246 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3952 1246 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3953 1246 : && (!HONOR_SIGNED_ZEROS (type)
3954 1125 : || !COMPLEX_FLOAT_TYPE_P (type))
3955 : )
3956 : {
3957 763 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1417;
3958 763 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1417;
3959 763 : {
3960 763 : tree res_op0;
3961 763 : res_op0 = captures[0];
3962 763 : tree _r;
3963 763 : _r = non_lvalue_loc (loc, res_op0);
3964 763 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
3965 763 : return _r;
3966 : }
3967 : next_after_fail1417:;
3968 : }
3969 : }
3970 : }
3971 72128791 : if (real_minus_onep (_p1))
3972 : {
3973 43497 : {
3974 43497 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3975 43497 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3976 43497 : && (!HONOR_SIGNED_ZEROS (type)
3977 40589 : || !COMPLEX_FLOAT_TYPE_P (type))
3978 : )
3979 : {
3980 43113 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1418;
3981 43113 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1418;
3982 43113 : {
3983 43113 : tree res_op0;
3984 43113 : res_op0 = captures[0];
3985 43113 : tree _r;
3986 43113 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3987 43113 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
3988 43113 : return _r;
3989 : }
3990 : next_after_fail1418:;
3991 : }
3992 : }
3993 : }
3994 72085678 : switch (TREE_CODE (_p0))
3995 : {
3996 60550 : case BIT_AND_EXPR:
3997 60550 : {
3998 60550 : tree _q20 = TREE_OPERAND (_p0, 0);
3999 60550 : tree _q21 = TREE_OPERAND (_p0, 1);
4000 60550 : switch (TREE_CODE (_q20))
4001 : {
4002 275 : case RSHIFT_EXPR:
4003 275 : {
4004 275 : tree _q30 = TREE_OPERAND (_q20, 0);
4005 275 : tree _q31 = TREE_OPERAND (_q20, 1);
4006 275 : if (uniform_integer_cst_p (_q31))
4007 : {
4008 14 : if (uniform_integer_cst_p (_q21))
4009 : {
4010 14 : if (uniform_integer_cst_p (_p1))
4011 : {
4012 14 : {
4013 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
4014 14 : {
4015 14 : tree rshift_cst = uniform_integer_cst_p (captures[1]);
4016 14 : tree bit_and_cst = uniform_integer_cst_p (captures[2]);
4017 14 : tree mult_cst = uniform_integer_cst_p (captures[3]);
4018 14 : if (VECTOR_TYPE_P (type)
4019 0 : && tree_fits_uhwi_p (rshift_cst)
4020 0 : && tree_fits_uhwi_p (mult_cst)
4021 0 : && tree_fits_uhwi_p (bit_and_cst)
4022 : )
4023 : {
4024 0 : {
4025 0 : HOST_WIDE_INT vec_elem_bits = vector_element_bits (type);
4026 0 : poly_int64 vec_nelts = TYPE_VECTOR_SUBPARTS (type);
4027 0 : poly_int64 vec_bits = vec_elem_bits * vec_nelts;
4028 0 : unsigned HOST_WIDE_INT cmp_bits_i, bit_and_i, mult_i;
4029 0 : unsigned HOST_WIDE_INT target_mult_i, target_bit_and_i;
4030 0 : cmp_bits_i = tree_to_uhwi (rshift_cst) + 1;
4031 0 : mult_i = tree_to_uhwi (mult_cst);
4032 0 : target_mult_i = (HOST_WIDE_INT_1U << cmp_bits_i) - 1;
4033 0 : bit_and_i = tree_to_uhwi (bit_and_cst);
4034 0 : target_bit_and_i = 0;
4035 0 : for (unsigned i = 0; i < vec_elem_bits / cmp_bits_i; i++)
4036 0 : target_bit_and_i = (target_bit_and_i << cmp_bits_i) | 1U;
4037 0 : if ((exact_log2 (cmp_bits_i)) >= 0
4038 0 : && cmp_bits_i < HOST_BITS_PER_WIDE_INT
4039 0 : && multiple_p (vec_bits, cmp_bits_i)
4040 0 : && vec_elem_bits <= HOST_BITS_PER_WIDE_INT
4041 0 : && target_mult_i == mult_i
4042 0 : && target_bit_and_i == bit_and_i
4043 : )
4044 : {
4045 0 : {
4046 0 : tree cmp_type = build_nonstandard_integer_type (cmp_bits_i, 0);
4047 0 : poly_int64 vector_type_nelts = exact_div (vec_bits, cmp_bits_i);
4048 0 : tree vec_cmp_type = build_vector_type (cmp_type, vector_type_nelts);
4049 0 : tree vec_truth_type = truth_type_for (vec_cmp_type);
4050 0 : tree zeros = build_zero_cst (vec_cmp_type);
4051 0 : tree ones = build_all_ones_cst (vec_cmp_type);
4052 0 : if (expand_vec_cmp_expr_p (vec_cmp_type, vec_truth_type, LT_EXPR)
4053 0 : && expand_vec_cond_expr_p (vec_cmp_type, vec_truth_type)
4054 : )
4055 : {
4056 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1419;
4057 0 : {
4058 0 : tree res_op0;
4059 0 : {
4060 0 : tree _o1[3], _r1;
4061 0 : {
4062 0 : tree _o2[2], _r2;
4063 0 : {
4064 0 : tree _o3[1], _r3;
4065 0 : _o3[0] = captures[0];
4066 0 : if (TREE_TYPE (_o3[0]) != vec_cmp_type)
4067 : {
4068 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vec_cmp_type, _o3[0]);
4069 : }
4070 : else
4071 : _r3 = _o3[0];
4072 0 : _o2[0] = _r3;
4073 : }
4074 0 : _o2[1] = zeros;
4075 0 : _r2 = fold_build2_loc (loc, LT_EXPR, vec_truth_type, _o2[0], _o2[1]);
4076 0 : _o1[0] = _r2;
4077 : }
4078 0 : _o1[1] = ones;
4079 0 : _o1[2] = zeros;
4080 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
4081 0 : res_op0 = _r1;
4082 : }
4083 0 : tree _r;
4084 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
4085 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4086 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4087 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4088 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4089 0 : if (TREE_SIDE_EFFECTS (captures[3]))
4090 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
4091 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
4092 0 : return _r;
4093 : }
4094 0 : next_after_fail1419:;
4095 : }
4096 : }
4097 : }
4098 : }
4099 : }
4100 : }
4101 : }
4102 : }
4103 : }
4104 : }
4105 : break;
4106 : }
4107 : default:;
4108 : }
4109 : break;
4110 : }
4111 72085678 : default:;
4112 : }
4113 72085678 : switch (TREE_CODE (_p1))
4114 : {
4115 3118 : case COND_EXPR:
4116 3118 : {
4117 3118 : tree _q30 = TREE_OPERAND (_p1, 0);
4118 3118 : tree _q31 = TREE_OPERAND (_p1, 1);
4119 3118 : tree _q32 = TREE_OPERAND (_p1, 2);
4120 3118 : switch (TREE_CODE (_q30))
4121 : {
4122 530 : case GT_EXPR:
4123 530 : {
4124 530 : tree _q40 = TREE_OPERAND (_q30, 0);
4125 530 : tree _q41 = TREE_OPERAND (_q30, 1);
4126 530 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4127 : {
4128 0 : if (real_zerop (_q41))
4129 : {
4130 0 : if (real_onep (_q31))
4131 : {
4132 0 : if (real_minus_onep (_q32))
4133 : {
4134 0 : {
4135 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4136 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4137 : )
4138 : {
4139 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1420;
4140 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1420;
4141 0 : {
4142 0 : tree res_op0;
4143 0 : {
4144 0 : tree _o1[1], _r1;
4145 0 : _o1[0] = captures[0];
4146 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4147 0 : res_op0 = _r1;
4148 : }
4149 0 : tree _r;
4150 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4151 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4152 0 : return _r;
4153 : }
4154 0 : next_after_fail1420:;
4155 : }
4156 : }
4157 : }
4158 : }
4159 : }
4160 : }
4161 : break;
4162 : }
4163 20 : case GE_EXPR:
4164 20 : {
4165 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4166 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4167 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4168 : {
4169 0 : if (real_zerop (_q41))
4170 : {
4171 0 : if (real_onep (_q31))
4172 : {
4173 0 : if (real_minus_onep (_q32))
4174 : {
4175 0 : {
4176 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4177 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4178 : )
4179 : {
4180 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1421;
4181 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1421;
4182 0 : {
4183 0 : tree res_op0;
4184 0 : {
4185 0 : tree _o1[1], _r1;
4186 0 : _o1[0] = captures[0];
4187 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4188 0 : res_op0 = _r1;
4189 : }
4190 0 : tree _r;
4191 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4192 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4193 0 : return _r;
4194 : }
4195 0 : next_after_fail1421:;
4196 : }
4197 : }
4198 : }
4199 : }
4200 : }
4201 : }
4202 : break;
4203 : }
4204 51 : case LT_EXPR:
4205 51 : {
4206 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4207 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4208 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4209 : {
4210 0 : if (real_zerop (_q41))
4211 : {
4212 0 : if (real_onep (_q31))
4213 : {
4214 0 : if (real_minus_onep (_q32))
4215 : {
4216 0 : {
4217 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4218 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4219 : )
4220 : {
4221 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1422;
4222 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1422;
4223 0 : {
4224 0 : tree res_op0;
4225 0 : {
4226 0 : tree _o1[1], _r1;
4227 0 : _o1[0] = captures[0];
4228 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4229 0 : res_op0 = _r1;
4230 : }
4231 0 : tree _r;
4232 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4233 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4234 0 : return _r;
4235 : }
4236 0 : next_after_fail1422:;
4237 : }
4238 : }
4239 : }
4240 : }
4241 : }
4242 : }
4243 : break;
4244 : }
4245 5 : case LE_EXPR:
4246 5 : {
4247 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4248 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4249 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4250 : {
4251 0 : if (real_zerop (_q41))
4252 : {
4253 0 : if (real_onep (_q31))
4254 : {
4255 0 : if (real_minus_onep (_q32))
4256 : {
4257 0 : {
4258 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4259 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4260 : )
4261 : {
4262 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1423;
4263 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1423;
4264 0 : {
4265 0 : tree res_op0;
4266 0 : {
4267 0 : tree _o1[1], _r1;
4268 0 : _o1[0] = captures[0];
4269 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4270 0 : res_op0 = _r1;
4271 : }
4272 0 : tree _r;
4273 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4274 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4275 0 : return _r;
4276 : }
4277 0 : next_after_fail1423:;
4278 : }
4279 : }
4280 : }
4281 : }
4282 : }
4283 : }
4284 : break;
4285 : }
4286 : default:;
4287 : }
4288 : break;
4289 : }
4290 72085678 : default:;
4291 : }
4292 72085678 : switch (TREE_CODE (_p0))
4293 : {
4294 87528 : case COND_EXPR:
4295 87528 : {
4296 87528 : tree _q20 = TREE_OPERAND (_p0, 0);
4297 87528 : tree _q21 = TREE_OPERAND (_p0, 1);
4298 87528 : tree _q22 = TREE_OPERAND (_p0, 2);
4299 87528 : switch (TREE_CODE (_q20))
4300 : {
4301 22281 : case GT_EXPR:
4302 22281 : {
4303 22281 : tree _q30 = TREE_OPERAND (_q20, 0);
4304 22281 : tree _q31 = TREE_OPERAND (_q20, 1);
4305 22281 : if (real_zerop (_q31))
4306 : {
4307 4 : if (real_onep (_q21))
4308 : {
4309 3 : if (real_minus_onep (_q22))
4310 : {
4311 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4312 : {
4313 1 : {
4314 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4315 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4316 : )
4317 : {
4318 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1424;
4319 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1424;
4320 1 : {
4321 1 : tree res_op0;
4322 1 : {
4323 1 : tree _o1[1], _r1;
4324 1 : _o1[0] = captures[0];
4325 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4326 1 : res_op0 = _r1;
4327 : }
4328 1 : tree _r;
4329 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4330 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4331 1 : return _r;
4332 : }
4333 0 : next_after_fail1424:;
4334 : }
4335 : }
4336 : }
4337 : }
4338 : }
4339 3 : if (real_minus_onep (_q21))
4340 : {
4341 1 : if (real_onep (_q22))
4342 : {
4343 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4344 : {
4345 1 : {
4346 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4347 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4348 : )
4349 : {
4350 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1425;
4351 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1425;
4352 1 : {
4353 1 : tree res_op0;
4354 1 : {
4355 1 : tree _o1[1], _r1;
4356 1 : _o1[0] = captures[0];
4357 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4358 1 : res_op0 = _r1;
4359 : }
4360 1 : tree _r;
4361 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4362 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4363 1 : return _r;
4364 : }
4365 0 : next_after_fail1425:;
4366 : }
4367 : }
4368 : }
4369 : }
4370 : }
4371 : }
4372 : break;
4373 : }
4374 8256 : case GE_EXPR:
4375 8256 : {
4376 8256 : tree _q30 = TREE_OPERAND (_q20, 0);
4377 8256 : tree _q31 = TREE_OPERAND (_q20, 1);
4378 8256 : if (real_zerop (_q31))
4379 : {
4380 2 : if (real_onep (_q21))
4381 : {
4382 1 : if (real_minus_onep (_q22))
4383 : {
4384 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4385 : {
4386 1 : {
4387 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4388 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4389 : )
4390 : {
4391 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1426;
4392 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1426;
4393 1 : {
4394 1 : tree res_op0;
4395 1 : {
4396 1 : tree _o1[1], _r1;
4397 1 : _o1[0] = captures[0];
4398 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4399 1 : res_op0 = _r1;
4400 : }
4401 1 : tree _r;
4402 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4403 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4404 1 : return _r;
4405 : }
4406 0 : next_after_fail1426:;
4407 : }
4408 : }
4409 : }
4410 : }
4411 : }
4412 1 : if (real_minus_onep (_q21))
4413 : {
4414 1 : if (real_onep (_q22))
4415 : {
4416 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4417 : {
4418 1 : {
4419 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4420 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4421 : )
4422 : {
4423 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1427;
4424 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1427;
4425 1 : {
4426 1 : tree res_op0;
4427 1 : {
4428 1 : tree _o1[1], _r1;
4429 1 : _o1[0] = captures[0];
4430 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4431 1 : res_op0 = _r1;
4432 : }
4433 1 : tree _r;
4434 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4435 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4436 1 : return _r;
4437 : }
4438 0 : next_after_fail1427:;
4439 : }
4440 : }
4441 : }
4442 : }
4443 : }
4444 : }
4445 : break;
4446 : }
4447 7714 : case LT_EXPR:
4448 7714 : {
4449 7714 : tree _q30 = TREE_OPERAND (_q20, 0);
4450 7714 : tree _q31 = TREE_OPERAND (_q20, 1);
4451 7714 : if (real_zerop (_q31))
4452 : {
4453 2 : if (real_onep (_q21))
4454 : {
4455 1 : if (real_minus_onep (_q22))
4456 : {
4457 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4458 : {
4459 1 : {
4460 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4461 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4462 : )
4463 : {
4464 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1428;
4465 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1428;
4466 1 : {
4467 1 : tree res_op0;
4468 1 : {
4469 1 : tree _o1[1], _r1;
4470 1 : _o1[0] = captures[0];
4471 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4472 1 : res_op0 = _r1;
4473 : }
4474 1 : tree _r;
4475 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4476 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4477 1 : return _r;
4478 : }
4479 0 : next_after_fail1428:;
4480 : }
4481 : }
4482 : }
4483 : }
4484 : }
4485 1 : if (real_minus_onep (_q21))
4486 : {
4487 1 : if (real_onep (_q22))
4488 : {
4489 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4490 : {
4491 1 : {
4492 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4493 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4494 : )
4495 : {
4496 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1429;
4497 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1429;
4498 1 : {
4499 1 : tree res_op0;
4500 1 : {
4501 1 : tree _o1[1], _r1;
4502 1 : _o1[0] = captures[0];
4503 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4504 1 : res_op0 = _r1;
4505 : }
4506 1 : tree _r;
4507 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4508 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4509 1 : return _r;
4510 : }
4511 0 : next_after_fail1429:;
4512 : }
4513 : }
4514 : }
4515 : }
4516 : }
4517 : }
4518 : break;
4519 : }
4520 2973 : case LE_EXPR:
4521 2973 : {
4522 2973 : tree _q30 = TREE_OPERAND (_q20, 0);
4523 2973 : tree _q31 = TREE_OPERAND (_q20, 1);
4524 2973 : if (real_zerop (_q31))
4525 : {
4526 2 : if (real_onep (_q21))
4527 : {
4528 1 : if (real_minus_onep (_q22))
4529 : {
4530 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4531 : {
4532 1 : {
4533 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4534 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4535 : )
4536 : {
4537 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1430;
4538 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1430;
4539 1 : {
4540 1 : tree res_op0;
4541 1 : {
4542 1 : tree _o1[1], _r1;
4543 1 : _o1[0] = captures[0];
4544 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4545 1 : res_op0 = _r1;
4546 : }
4547 1 : tree _r;
4548 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4549 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
4550 1 : return _r;
4551 : }
4552 0 : next_after_fail1430:;
4553 : }
4554 : }
4555 : }
4556 : }
4557 : }
4558 1 : if (real_minus_onep (_q21))
4559 : {
4560 1 : if (real_onep (_q22))
4561 : {
4562 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4563 : {
4564 1 : {
4565 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4566 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4567 : )
4568 : {
4569 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1431;
4570 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1431;
4571 1 : {
4572 1 : tree res_op0;
4573 1 : {
4574 1 : tree _o1[1], _r1;
4575 1 : _o1[0] = captures[0];
4576 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4577 1 : res_op0 = _r1;
4578 : }
4579 1 : tree _r;
4580 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4581 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4582 1 : return _r;
4583 : }
4584 0 : next_after_fail1431:;
4585 : }
4586 : }
4587 : }
4588 : }
4589 : }
4590 : }
4591 : break;
4592 : }
4593 : default:;
4594 : }
4595 : break;
4596 : }
4597 72085670 : default:;
4598 : }
4599 72085670 : switch (TREE_CODE (_p1))
4600 : {
4601 3118 : case COND_EXPR:
4602 3118 : {
4603 3118 : tree _q30 = TREE_OPERAND (_p1, 0);
4604 3118 : tree _q31 = TREE_OPERAND (_p1, 1);
4605 3118 : tree _q32 = TREE_OPERAND (_p1, 2);
4606 3118 : switch (TREE_CODE (_q30))
4607 : {
4608 530 : case GT_EXPR:
4609 530 : {
4610 530 : tree _q40 = TREE_OPERAND (_q30, 0);
4611 530 : tree _q41 = TREE_OPERAND (_q30, 1);
4612 530 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4613 : {
4614 0 : if (real_zerop (_q41))
4615 : {
4616 0 : if (real_minus_onep (_q31))
4617 : {
4618 0 : if (real_onep (_q32))
4619 : {
4620 0 : {
4621 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4622 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4623 : )
4624 : {
4625 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1432;
4626 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1432;
4627 0 : {
4628 0 : tree res_op0;
4629 0 : {
4630 0 : tree _o1[1], _r1;
4631 0 : _o1[0] = captures[0];
4632 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4633 0 : res_op0 = _r1;
4634 : }
4635 0 : tree _r;
4636 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4637 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4638 0 : return _r;
4639 : }
4640 0 : next_after_fail1432:;
4641 : }
4642 : }
4643 : }
4644 : }
4645 : }
4646 : }
4647 : break;
4648 : }
4649 20 : case GE_EXPR:
4650 20 : {
4651 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4652 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4653 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4654 : {
4655 0 : if (real_zerop (_q41))
4656 : {
4657 0 : if (real_minus_onep (_q31))
4658 : {
4659 0 : if (real_onep (_q32))
4660 : {
4661 0 : {
4662 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4663 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4664 : )
4665 : {
4666 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1433;
4667 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1433;
4668 0 : {
4669 0 : tree res_op0;
4670 0 : {
4671 0 : tree _o1[1], _r1;
4672 0 : _o1[0] = captures[0];
4673 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4674 0 : res_op0 = _r1;
4675 : }
4676 0 : tree _r;
4677 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4678 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4679 0 : return _r;
4680 : }
4681 0 : next_after_fail1433:;
4682 : }
4683 : }
4684 : }
4685 : }
4686 : }
4687 : }
4688 : break;
4689 : }
4690 51 : case LT_EXPR:
4691 51 : {
4692 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4693 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4694 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4695 : {
4696 0 : if (real_zerop (_q41))
4697 : {
4698 0 : if (real_minus_onep (_q31))
4699 : {
4700 0 : if (real_onep (_q32))
4701 : {
4702 0 : {
4703 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4704 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4705 : )
4706 : {
4707 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1434;
4708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1434;
4709 0 : {
4710 0 : tree res_op0;
4711 0 : {
4712 0 : tree _o1[1], _r1;
4713 0 : _o1[0] = captures[0];
4714 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4715 0 : res_op0 = _r1;
4716 : }
4717 0 : tree _r;
4718 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4719 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4720 0 : return _r;
4721 : }
4722 0 : next_after_fail1434:;
4723 : }
4724 : }
4725 : }
4726 : }
4727 : }
4728 : }
4729 : break;
4730 : }
4731 5 : case LE_EXPR:
4732 5 : {
4733 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4734 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4735 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4736 : {
4737 0 : if (real_zerop (_q41))
4738 : {
4739 0 : if (real_minus_onep (_q31))
4740 : {
4741 0 : if (real_onep (_q32))
4742 : {
4743 0 : {
4744 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4745 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4746 : )
4747 : {
4748 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1435;
4749 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1435;
4750 0 : {
4751 0 : tree res_op0;
4752 0 : {
4753 0 : tree _o1[1], _r1;
4754 0 : _o1[0] = captures[0];
4755 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4756 0 : res_op0 = _r1;
4757 : }
4758 0 : tree _r;
4759 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4760 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
4761 0 : return _r;
4762 : }
4763 0 : next_after_fail1435:;
4764 : }
4765 : }
4766 : }
4767 : }
4768 : }
4769 : }
4770 : break;
4771 : }
4772 : default:;
4773 : }
4774 : break;
4775 : }
4776 893199 : case CALL_EXPR:
4777 893199 : switch (get_call_combined_fn (_p1))
4778 : {
4779 20 : case CFN_BUILT_IN_COPYSIGNF16:
4780 20 : if (call_expr_nargs (_p1) == 2)
4781 : {
4782 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4783 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4784 20 : if (real_onep (_q30))
4785 : {
4786 20 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4787 : {
4788 0 : {
4789 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4790 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4791 0 : if (res) return res;
4792 : }
4793 : }
4794 : }
4795 : }
4796 : break;
4797 0 : case CFN_BUILT_IN_COPYSIGNF32:
4798 0 : if (call_expr_nargs (_p1) == 2)
4799 : {
4800 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4801 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4802 0 : if (real_onep (_q30))
4803 : {
4804 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4805 : {
4806 0 : {
4807 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4808 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4809 0 : if (res) return res;
4810 : }
4811 : }
4812 : }
4813 : }
4814 : break;
4815 0 : case CFN_BUILT_IN_COPYSIGNF64:
4816 0 : if (call_expr_nargs (_p1) == 2)
4817 : {
4818 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4819 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4820 0 : if (real_onep (_q30))
4821 : {
4822 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4823 : {
4824 0 : {
4825 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4826 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4827 0 : if (res) return res;
4828 : }
4829 : }
4830 : }
4831 : }
4832 : break;
4833 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4834 0 : if (call_expr_nargs (_p1) == 2)
4835 : {
4836 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4837 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4838 0 : if (real_onep (_q30))
4839 : {
4840 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4841 : {
4842 0 : {
4843 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4844 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
4845 0 : if (res) return res;
4846 : }
4847 : }
4848 : }
4849 : }
4850 : break;
4851 0 : case CFN_BUILT_IN_COPYSIGNF128:
4852 0 : if (call_expr_nargs (_p1) == 2)
4853 : {
4854 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4855 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4856 0 : if (real_onep (_q30))
4857 : {
4858 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4859 : {
4860 0 : {
4861 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4862 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
4863 0 : if (res) return res;
4864 : }
4865 : }
4866 : }
4867 : }
4868 : break;
4869 0 : case CFN_BUILT_IN_COPYSIGNF32X:
4870 0 : if (call_expr_nargs (_p1) == 2)
4871 : {
4872 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4873 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4874 0 : if (real_onep (_q30))
4875 : {
4876 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4877 : {
4878 0 : {
4879 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4880 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
4881 0 : if (res) return res;
4882 : }
4883 : }
4884 : }
4885 : }
4886 : break;
4887 0 : case CFN_BUILT_IN_COPYSIGNF64X:
4888 0 : if (call_expr_nargs (_p1) == 2)
4889 : {
4890 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4891 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4892 0 : if (real_onep (_q30))
4893 : {
4894 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4895 : {
4896 0 : {
4897 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4898 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
4899 0 : if (res) return res;
4900 : }
4901 : }
4902 : }
4903 : }
4904 : break;
4905 18 : case CFN_BUILT_IN_COPYSIGN:
4906 18 : if (call_expr_nargs (_p1) == 2)
4907 : {
4908 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4909 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4910 18 : if (real_onep (_q30))
4911 : {
4912 14 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4913 : {
4914 0 : {
4915 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4916 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
4917 0 : if (res) return res;
4918 : }
4919 : }
4920 : }
4921 : }
4922 : break;
4923 14 : case CFN_BUILT_IN_COPYSIGNF:
4924 14 : if (call_expr_nargs (_p1) == 2)
4925 : {
4926 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4927 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4928 14 : if (real_onep (_q30))
4929 : {
4930 12 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4931 : {
4932 0 : {
4933 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4934 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
4935 0 : if (res) return res;
4936 : }
4937 : }
4938 : }
4939 : }
4940 : break;
4941 0 : case CFN_BUILT_IN_COPYSIGNL:
4942 0 : if (call_expr_nargs (_p1) == 2)
4943 : {
4944 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4945 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4946 0 : if (real_onep (_q30))
4947 : {
4948 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4949 : {
4950 0 : {
4951 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4952 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
4953 0 : if (res) return res;
4954 : }
4955 : }
4956 : }
4957 : }
4958 : break;
4959 0 : case CFN_COPYSIGN:
4960 0 : if (call_expr_nargs (_p1) == 2)
4961 : {
4962 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4963 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4964 0 : if (real_onep (_q30))
4965 : {
4966 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4967 : {
4968 0 : {
4969 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4970 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
4971 0 : if (res) return res;
4972 : }
4973 : }
4974 : }
4975 : }
4976 : break;
4977 : default:;
4978 : }
4979 : break;
4980 72085670 : default:;
4981 : }
4982 72085670 : switch (TREE_CODE (_p0))
4983 : {
4984 2731392 : case CALL_EXPR:
4985 2731392 : switch (get_call_combined_fn (_p0))
4986 : {
4987 1 : case CFN_BUILT_IN_COPYSIGNF16:
4988 1 : if (call_expr_nargs (_p0) == 2)
4989 : {
4990 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4991 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4992 1 : if (real_onep (_q20))
4993 : {
4994 1 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4995 : {
4996 0 : {
4997 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4998 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4999 0 : if (res) return res;
5000 : }
5001 : }
5002 1 : switch (TREE_CODE (_q21))
5003 : {
5004 0 : case NEGATE_EXPR:
5005 0 : {
5006 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5007 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5008 : {
5009 0 : {
5010 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5011 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5012 0 : if (res) return res;
5013 : }
5014 : }
5015 : break;
5016 : }
5017 : default:;
5018 : }
5019 : }
5020 : }
5021 : break;
5022 0 : case CFN_BUILT_IN_COPYSIGNF32:
5023 0 : if (call_expr_nargs (_p0) == 2)
5024 : {
5025 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5026 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5027 0 : if (real_onep (_q20))
5028 : {
5029 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5030 : {
5031 0 : {
5032 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5033 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5034 0 : if (res) return res;
5035 : }
5036 : }
5037 0 : switch (TREE_CODE (_q21))
5038 : {
5039 0 : case NEGATE_EXPR:
5040 0 : {
5041 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5042 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5043 : {
5044 0 : {
5045 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5046 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5047 0 : if (res) return res;
5048 : }
5049 : }
5050 : break;
5051 : }
5052 : default:;
5053 : }
5054 : }
5055 : }
5056 : break;
5057 0 : case CFN_BUILT_IN_COPYSIGNF64:
5058 0 : if (call_expr_nargs (_p0) == 2)
5059 : {
5060 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5061 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5062 0 : if (real_onep (_q20))
5063 : {
5064 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5065 : {
5066 0 : {
5067 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5068 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5069 0 : if (res) return res;
5070 : }
5071 : }
5072 0 : switch (TREE_CODE (_q21))
5073 : {
5074 0 : case NEGATE_EXPR:
5075 0 : {
5076 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5077 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5078 : {
5079 0 : {
5080 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5081 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5082 0 : if (res) return res;
5083 : }
5084 : }
5085 : break;
5086 : }
5087 : default:;
5088 : }
5089 : }
5090 : }
5091 : break;
5092 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5093 0 : if (call_expr_nargs (_p0) == 2)
5094 : {
5095 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5096 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5097 0 : if (real_onep (_q20))
5098 : {
5099 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5100 : {
5101 0 : {
5102 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5103 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5104 0 : if (res) return res;
5105 : }
5106 : }
5107 0 : switch (TREE_CODE (_q21))
5108 : {
5109 0 : case NEGATE_EXPR:
5110 0 : {
5111 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5112 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5113 : {
5114 0 : {
5115 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5116 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5117 0 : if (res) return res;
5118 : }
5119 : }
5120 : break;
5121 : }
5122 : default:;
5123 : }
5124 : }
5125 : }
5126 : break;
5127 8 : case CFN_BUILT_IN_COPYSIGNF128:
5128 8 : if (call_expr_nargs (_p0) == 2)
5129 : {
5130 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5131 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5132 8 : if (real_onep (_q20))
5133 : {
5134 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5135 : {
5136 0 : {
5137 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5138 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5139 0 : if (res) return res;
5140 : }
5141 : }
5142 0 : switch (TREE_CODE (_q21))
5143 : {
5144 0 : case NEGATE_EXPR:
5145 0 : {
5146 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5147 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5148 : {
5149 0 : {
5150 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5151 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5152 0 : if (res) return res;
5153 : }
5154 : }
5155 : break;
5156 : }
5157 : default:;
5158 : }
5159 : }
5160 : }
5161 : break;
5162 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5163 0 : if (call_expr_nargs (_p0) == 2)
5164 : {
5165 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5166 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5167 0 : if (real_onep (_q20))
5168 : {
5169 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5170 : {
5171 0 : {
5172 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5173 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5174 0 : if (res) return res;
5175 : }
5176 : }
5177 0 : switch (TREE_CODE (_q21))
5178 : {
5179 0 : case NEGATE_EXPR:
5180 0 : {
5181 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5182 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5183 : {
5184 0 : {
5185 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5186 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5187 0 : if (res) return res;
5188 : }
5189 : }
5190 : break;
5191 : }
5192 : default:;
5193 : }
5194 : }
5195 : }
5196 : break;
5197 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5198 0 : if (call_expr_nargs (_p0) == 2)
5199 : {
5200 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5201 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5202 0 : if (real_onep (_q20))
5203 : {
5204 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5205 : {
5206 0 : {
5207 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5208 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5209 0 : if (res) return res;
5210 : }
5211 : }
5212 0 : switch (TREE_CODE (_q21))
5213 : {
5214 0 : case NEGATE_EXPR:
5215 0 : {
5216 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5217 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5218 : {
5219 0 : {
5220 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5221 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5222 0 : if (res) return res;
5223 : }
5224 : }
5225 : break;
5226 : }
5227 : default:;
5228 : }
5229 : }
5230 : }
5231 : break;
5232 18 : case CFN_BUILT_IN_COPYSIGN:
5233 18 : if (call_expr_nargs (_p0) == 2)
5234 : {
5235 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5236 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5237 18 : if (real_onep (_q20))
5238 : {
5239 3 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5240 : {
5241 0 : {
5242 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5243 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5244 0 : if (res) return res;
5245 : }
5246 : }
5247 3 : switch (TREE_CODE (_q21))
5248 : {
5249 0 : case NEGATE_EXPR:
5250 0 : {
5251 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5252 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5253 : {
5254 0 : {
5255 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5256 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5257 0 : if (res) return res;
5258 : }
5259 : }
5260 : break;
5261 : }
5262 : default:;
5263 : }
5264 : }
5265 : }
5266 : break;
5267 36 : case CFN_BUILT_IN_COPYSIGNF:
5268 36 : if (call_expr_nargs (_p0) == 2)
5269 : {
5270 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5271 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5272 36 : if (real_onep (_q20))
5273 : {
5274 12 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5275 : {
5276 4 : {
5277 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5278 4 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5279 4 : if (res) return res;
5280 : }
5281 : }
5282 12 : switch (TREE_CODE (_q21))
5283 : {
5284 0 : case NEGATE_EXPR:
5285 0 : {
5286 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5287 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5288 : {
5289 0 : {
5290 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5291 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5292 0 : if (res) return res;
5293 : }
5294 : }
5295 : break;
5296 : }
5297 : default:;
5298 : }
5299 : }
5300 : }
5301 : break;
5302 8 : case CFN_BUILT_IN_COPYSIGNL:
5303 8 : if (call_expr_nargs (_p0) == 2)
5304 : {
5305 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5306 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5307 8 : if (real_onep (_q20))
5308 : {
5309 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5310 : {
5311 0 : {
5312 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5313 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5314 0 : if (res) return res;
5315 : }
5316 : }
5317 0 : switch (TREE_CODE (_q21))
5318 : {
5319 0 : case NEGATE_EXPR:
5320 0 : {
5321 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5322 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5323 : {
5324 0 : {
5325 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5326 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5327 0 : if (res) return res;
5328 : }
5329 : }
5330 : break;
5331 : }
5332 : default:;
5333 : }
5334 : }
5335 : }
5336 : break;
5337 0 : case CFN_COPYSIGN:
5338 0 : if (call_expr_nargs (_p0) == 2)
5339 : {
5340 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5341 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5342 0 : if (real_onep (_q20))
5343 : {
5344 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5345 : {
5346 0 : {
5347 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5348 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5349 0 : if (res) return res;
5350 : }
5351 : }
5352 0 : switch (TREE_CODE (_q21))
5353 : {
5354 0 : case NEGATE_EXPR:
5355 0 : {
5356 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5357 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5358 : {
5359 0 : {
5360 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5361 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5362 0 : if (res) return res;
5363 : }
5364 : }
5365 : break;
5366 : }
5367 : default:;
5368 : }
5369 : }
5370 : }
5371 : break;
5372 : default:;
5373 : }
5374 : break;
5375 72085670 : default:;
5376 : }
5377 72085670 : switch (TREE_CODE (_p1))
5378 : {
5379 893199 : case CALL_EXPR:
5380 893199 : switch (get_call_combined_fn (_p1))
5381 : {
5382 20 : case CFN_BUILT_IN_COPYSIGNF16:
5383 20 : if (call_expr_nargs (_p1) == 2)
5384 : {
5385 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5386 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5387 20 : if (real_onep (_q30))
5388 : {
5389 20 : switch (TREE_CODE (_q31))
5390 : {
5391 0 : case NEGATE_EXPR:
5392 0 : {
5393 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5394 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5395 : {
5396 0 : {
5397 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5398 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5399 0 : if (res) return res;
5400 : }
5401 : }
5402 : break;
5403 : }
5404 : default:;
5405 : }
5406 : }
5407 : }
5408 : break;
5409 0 : case CFN_BUILT_IN_COPYSIGNF32:
5410 0 : if (call_expr_nargs (_p1) == 2)
5411 : {
5412 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5413 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5414 0 : if (real_onep (_q30))
5415 : {
5416 0 : switch (TREE_CODE (_q31))
5417 : {
5418 0 : case NEGATE_EXPR:
5419 0 : {
5420 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5421 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5422 : {
5423 0 : {
5424 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5425 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5426 0 : if (res) return res;
5427 : }
5428 : }
5429 : break;
5430 : }
5431 : default:;
5432 : }
5433 : }
5434 : }
5435 : break;
5436 0 : case CFN_BUILT_IN_COPYSIGNF64:
5437 0 : if (call_expr_nargs (_p1) == 2)
5438 : {
5439 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5440 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5441 0 : if (real_onep (_q30))
5442 : {
5443 0 : switch (TREE_CODE (_q31))
5444 : {
5445 0 : case NEGATE_EXPR:
5446 0 : {
5447 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5448 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5449 : {
5450 0 : {
5451 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5452 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5453 0 : if (res) return res;
5454 : }
5455 : }
5456 : break;
5457 : }
5458 : default:;
5459 : }
5460 : }
5461 : }
5462 : break;
5463 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5464 0 : if (call_expr_nargs (_p1) == 2)
5465 : {
5466 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5467 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5468 0 : if (real_onep (_q30))
5469 : {
5470 0 : switch (TREE_CODE (_q31))
5471 : {
5472 0 : case NEGATE_EXPR:
5473 0 : {
5474 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5475 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5476 : {
5477 0 : {
5478 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5479 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5480 0 : if (res) return res;
5481 : }
5482 : }
5483 : break;
5484 : }
5485 : default:;
5486 : }
5487 : }
5488 : }
5489 : break;
5490 0 : case CFN_BUILT_IN_COPYSIGNF128:
5491 0 : if (call_expr_nargs (_p1) == 2)
5492 : {
5493 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5494 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5495 0 : if (real_onep (_q30))
5496 : {
5497 0 : switch (TREE_CODE (_q31))
5498 : {
5499 0 : case NEGATE_EXPR:
5500 0 : {
5501 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5502 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5503 : {
5504 0 : {
5505 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5506 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5507 0 : if (res) return res;
5508 : }
5509 : }
5510 : break;
5511 : }
5512 : default:;
5513 : }
5514 : }
5515 : }
5516 : break;
5517 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5518 0 : if (call_expr_nargs (_p1) == 2)
5519 : {
5520 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5521 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5522 0 : if (real_onep (_q30))
5523 : {
5524 0 : switch (TREE_CODE (_q31))
5525 : {
5526 0 : case NEGATE_EXPR:
5527 0 : {
5528 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5529 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5530 : {
5531 0 : {
5532 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5533 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5534 0 : if (res) return res;
5535 : }
5536 : }
5537 : break;
5538 : }
5539 : default:;
5540 : }
5541 : }
5542 : }
5543 : break;
5544 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5545 0 : if (call_expr_nargs (_p1) == 2)
5546 : {
5547 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5548 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5549 0 : if (real_onep (_q30))
5550 : {
5551 0 : switch (TREE_CODE (_q31))
5552 : {
5553 0 : case NEGATE_EXPR:
5554 0 : {
5555 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5556 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5557 : {
5558 0 : {
5559 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5560 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5561 0 : if (res) return res;
5562 : }
5563 : }
5564 : break;
5565 : }
5566 : default:;
5567 : }
5568 : }
5569 : }
5570 : break;
5571 18 : case CFN_BUILT_IN_COPYSIGN:
5572 18 : if (call_expr_nargs (_p1) == 2)
5573 : {
5574 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5575 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5576 18 : if (real_onep (_q30))
5577 : {
5578 14 : switch (TREE_CODE (_q31))
5579 : {
5580 0 : case NEGATE_EXPR:
5581 0 : {
5582 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5583 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5584 : {
5585 0 : {
5586 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5587 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5588 0 : if (res) return res;
5589 : }
5590 : }
5591 : break;
5592 : }
5593 : default:;
5594 : }
5595 : }
5596 : }
5597 : break;
5598 14 : case CFN_BUILT_IN_COPYSIGNF:
5599 14 : if (call_expr_nargs (_p1) == 2)
5600 : {
5601 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5602 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5603 14 : if (real_onep (_q30))
5604 : {
5605 12 : switch (TREE_CODE (_q31))
5606 : {
5607 0 : case NEGATE_EXPR:
5608 0 : {
5609 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5610 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5611 : {
5612 0 : {
5613 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5614 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5615 0 : if (res) return res;
5616 : }
5617 : }
5618 : break;
5619 : }
5620 : default:;
5621 : }
5622 : }
5623 : }
5624 : break;
5625 0 : case CFN_BUILT_IN_COPYSIGNL:
5626 0 : if (call_expr_nargs (_p1) == 2)
5627 : {
5628 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5629 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5630 0 : if (real_onep (_q30))
5631 : {
5632 0 : switch (TREE_CODE (_q31))
5633 : {
5634 0 : case NEGATE_EXPR:
5635 0 : {
5636 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5637 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5638 : {
5639 0 : {
5640 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5641 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5642 0 : if (res) return res;
5643 : }
5644 : }
5645 : break;
5646 : }
5647 : default:;
5648 : }
5649 : }
5650 : }
5651 : break;
5652 0 : case CFN_COPYSIGN:
5653 0 : if (call_expr_nargs (_p1) == 2)
5654 : {
5655 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5656 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5657 0 : if (real_onep (_q30))
5658 : {
5659 0 : switch (TREE_CODE (_q31))
5660 : {
5661 0 : case NEGATE_EXPR:
5662 0 : {
5663 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5664 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5665 : {
5666 0 : {
5667 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5668 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5669 0 : if (res) return res;
5670 : }
5671 : }
5672 : break;
5673 : }
5674 : default:;
5675 : }
5676 : }
5677 : }
5678 : break;
5679 : default:;
5680 : }
5681 : break;
5682 72085670 : default:;
5683 : }
5684 72085670 : if (integer_onep (_p1))
5685 : {
5686 3530650 : {
5687 3530650 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5688 3530650 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures, MULT_EXPR);
5689 3530650 : if (res) return res;
5690 : }
5691 : }
5692 68555020 : switch (TREE_CODE (_p0))
5693 : {
5694 5842132 : case MULT_EXPR:
5695 5842132 : {
5696 5842132 : tree _q20 = TREE_OPERAND (_p0, 0);
5697 5842132 : tree _q21 = TREE_OPERAND (_p0, 1);
5698 5842132 : switch (TREE_CODE (_q21))
5699 : {
5700 1161523 : case INTEGER_CST:
5701 1161523 : {
5702 1161523 : switch (TREE_CODE (_p1))
5703 : {
5704 992503 : case INTEGER_CST:
5705 992503 : {
5706 992503 : {
5707 992503 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5708 992503 : {
5709 992503 : wi::overflow_type overflow;
5710 992503 : wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
5711 1985006 : TYPE_SIGN (type), &overflow);
5712 992503 : if (!overflow || TYPE_OVERFLOW_WRAPS (type)
5713 : )
5714 : {
5715 992473 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1436;
5716 992473 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1436;
5717 992473 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1436;
5718 992473 : {
5719 992473 : tree res_op0;
5720 992473 : res_op0 = captures[0];
5721 992473 : tree res_op1;
5722 992473 : res_op1 = wide_int_to_tree (type, mul);
5723 992473 : tree _r;
5724 992473 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5725 992473 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
5726 992473 : return _r;
5727 : }
5728 30 : next_after_fail1436:;
5729 : }
5730 992473 : }
5731 : }
5732 30 : break;
5733 : }
5734 : default:;
5735 : }
5736 : break;
5737 : }
5738 : default:;
5739 : }
5740 : break;
5741 : }
5742 7631355 : case PLUS_EXPR:
5743 7631355 : {
5744 7631355 : tree _q20 = TREE_OPERAND (_p0, 0);
5745 7631355 : tree _q21 = TREE_OPERAND (_p0, 1);
5746 7631355 : switch (TREE_CODE (_q20))
5747 : {
5748 1145936 : case MULT_EXPR:
5749 1145936 : {
5750 1145936 : tree _q30 = TREE_OPERAND (_q20, 0);
5751 1145936 : tree _q31 = TREE_OPERAND (_q20, 1);
5752 1145936 : switch (TREE_CODE (_q31))
5753 : {
5754 304538 : case INTEGER_CST:
5755 304538 : {
5756 304538 : switch (TREE_CODE (_q21))
5757 : {
5758 35439 : case INTEGER_CST:
5759 35439 : {
5760 35439 : switch (TREE_CODE (_p1))
5761 : {
5762 11991 : case INTEGER_CST:
5763 11991 : {
5764 11991 : {
5765 11991 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
5766 11991 : {
5767 11991 : bool overflowed = true;
5768 11991 : wi::overflow_type ovf1, ovf2;
5769 11991 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[5]),
5770 23982 : TYPE_SIGN (type), &ovf1);
5771 11991 : wide_int add = wi::mul (wi::to_wide (captures[4]), wi::to_wide (captures[5]),
5772 23982 : TYPE_SIGN (type), &ovf2);
5773 11991 : if (TYPE_OVERFLOW_UNDEFINED (type))
5774 : {
5775 : }
5776 : else
5777 4000 : overflowed = false;
5778 4000 : if (!overflowed
5779 : )
5780 : {
5781 4000 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1437;
5782 4000 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1437;
5783 4000 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1437;
5784 4000 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1437;
5785 4000 : {
5786 4000 : tree res_op0;
5787 4000 : {
5788 4000 : tree _o1[2], _r1;
5789 4000 : _o1[0] = captures[2];
5790 4000 : _o1[1] = wide_int_to_tree (type, mul);
5791 4000 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5792 4000 : res_op0 = _r1;
5793 : }
5794 4000 : tree res_op1;
5795 4000 : res_op1 = wide_int_to_tree (type, add);
5796 4000 : tree _r;
5797 4000 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5798 4000 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
5799 4000 : return _r;
5800 : }
5801 7991 : next_after_fail1437:;
5802 : }
5803 11991 : }
5804 : }
5805 7991 : break;
5806 : }
5807 : default:;
5808 : }
5809 : break;
5810 : }
5811 : default:;
5812 : }
5813 : break;
5814 : }
5815 : default:;
5816 : }
5817 : break;
5818 : }
5819 : default:;
5820 : }
5821 : break;
5822 : }
5823 77981 : case TRUNC_DIV_EXPR:
5824 77981 : {
5825 77981 : tree _q20 = TREE_OPERAND (_p0, 0);
5826 77981 : tree _q21 = TREE_OPERAND (_p0, 1);
5827 77981 : if (integer_pow2p (_q21))
5828 : {
5829 56090 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5830 : {
5831 37103 : {
5832 37103 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5833 37103 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5834 : )
5835 : {
5836 37039 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1438;
5837 37039 : {
5838 37039 : tree res_op0;
5839 37039 : res_op0 = captures[0];
5840 37039 : tree res_op1;
5841 37039 : {
5842 37039 : tree _o1[1], _r1;
5843 37039 : _o1[0] = captures[1];
5844 37039 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5845 37039 : res_op1 = _r1;
5846 : }
5847 37039 : tree _r;
5848 37039 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
5849 37039 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
5850 37039 : return _r;
5851 : }
5852 0 : next_after_fail1438:;
5853 : }
5854 : }
5855 : }
5856 : }
5857 : break;
5858 : }
5859 260 : case ABS_EXPR:
5860 260 : {
5861 260 : tree _q20 = TREE_OPERAND (_p0, 0);
5862 260 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5863 : {
5864 2 : {
5865 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
5866 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1439;
5867 2 : {
5868 2 : if (! tree_invariant_p (captures[1])) goto next_after_fail1439;
5869 0 : tree res_op0;
5870 0 : res_op0 = unshare_expr (captures[1]);
5871 0 : tree res_op1;
5872 0 : res_op1 = captures[1];
5873 0 : tree _r;
5874 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5875 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
5876 0 : return _r;
5877 : }
5878 2 : next_after_fail1439:;
5879 : }
5880 : }
5881 : break;
5882 : }
5883 0 : case ABSU_EXPR:
5884 0 : {
5885 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5886 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5887 : {
5888 0 : {
5889 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20 };
5890 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1440;
5891 0 : {
5892 0 : tree res_op0;
5893 0 : {
5894 0 : tree _o1[1], _r1;
5895 0 : _o1[0] = captures[1];
5896 0 : if (TREE_TYPE (_o1[0]) != type)
5897 : {
5898 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
5899 : }
5900 : else
5901 : _r1 = _o1[0];
5902 0 : captures[2] = _r1;
5903 : }
5904 0 : res_op0 = unshare_expr (captures[2]);
5905 0 : tree res_op1;
5906 0 : res_op1 = captures[2];
5907 0 : tree _r;
5908 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5909 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
5910 0 : return _r;
5911 : }
5912 0 : next_after_fail1440:;
5913 : }
5914 : }
5915 : break;
5916 : }
5917 2501775 : case CALL_EXPR:
5918 2501775 : switch (get_call_combined_fn (_p0))
5919 : {
5920 1 : case CFN_BUILT_IN_COPYSIGNF16:
5921 1 : if (call_expr_nargs (_p0) == 2)
5922 : {
5923 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5924 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5925 1 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5926 : {
5927 0 : {
5928 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5929 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5930 0 : if (res) return res;
5931 : }
5932 : }
5933 : }
5934 : break;
5935 0 : case CFN_BUILT_IN_COPYSIGNF32:
5936 0 : if (call_expr_nargs (_p0) == 2)
5937 : {
5938 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5939 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5940 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5941 : {
5942 0 : {
5943 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5944 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5945 0 : if (res) return res;
5946 : }
5947 : }
5948 : }
5949 : break;
5950 0 : case CFN_BUILT_IN_COPYSIGNF64:
5951 0 : if (call_expr_nargs (_p0) == 2)
5952 : {
5953 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5954 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5955 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5956 : {
5957 0 : {
5958 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5959 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5960 0 : if (res) return res;
5961 : }
5962 : }
5963 : }
5964 : break;
5965 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5966 0 : if (call_expr_nargs (_p0) == 2)
5967 : {
5968 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5969 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5970 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5971 : {
5972 0 : {
5973 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5974 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5975 0 : if (res) return res;
5976 : }
5977 : }
5978 : }
5979 : break;
5980 8 : case CFN_BUILT_IN_COPYSIGNF128:
5981 8 : if (call_expr_nargs (_p0) == 2)
5982 : {
5983 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5984 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5985 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5986 : {
5987 0 : {
5988 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5989 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5990 0 : if (res) return res;
5991 : }
5992 : }
5993 : }
5994 : break;
5995 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5996 0 : if (call_expr_nargs (_p0) == 2)
5997 : {
5998 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5999 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6000 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6001 : {
6002 0 : {
6003 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6004 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
6005 0 : if (res) return res;
6006 : }
6007 : }
6008 : }
6009 : break;
6010 0 : case CFN_BUILT_IN_COPYSIGNF64X:
6011 0 : if (call_expr_nargs (_p0) == 2)
6012 : {
6013 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6014 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6015 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6016 : {
6017 0 : {
6018 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6019 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
6020 0 : if (res) return res;
6021 : }
6022 : }
6023 : }
6024 : break;
6025 18 : case CFN_BUILT_IN_COPYSIGN:
6026 18 : if (call_expr_nargs (_p0) == 2)
6027 : {
6028 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6029 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6030 18 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6031 : {
6032 0 : {
6033 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6034 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
6035 0 : if (res) return res;
6036 : }
6037 : }
6038 : }
6039 : break;
6040 36 : case CFN_BUILT_IN_COPYSIGNF:
6041 36 : if (call_expr_nargs (_p0) == 2)
6042 : {
6043 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6044 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6045 36 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6046 : {
6047 0 : {
6048 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6049 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
6050 0 : if (res) return res;
6051 : }
6052 : }
6053 : }
6054 : break;
6055 8 : case CFN_BUILT_IN_COPYSIGNL:
6056 8 : if (call_expr_nargs (_p0) == 2)
6057 : {
6058 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6059 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6060 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6061 : {
6062 0 : {
6063 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6064 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
6065 0 : if (res) return res;
6066 : }
6067 : }
6068 : }
6069 : break;
6070 0 : case CFN_COPYSIGN:
6071 0 : if (call_expr_nargs (_p0) == 2)
6072 : {
6073 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6074 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6075 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6076 : {
6077 0 : {
6078 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6079 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
6080 0 : if (res) return res;
6081 : }
6082 : }
6083 : }
6084 : break;
6085 : default:;
6086 : }
6087 : break;
6088 67521508 : default:;
6089 : }
6090 67521508 : switch (TREE_CODE (_p1))
6091 : {
6092 7357998 : CASE_CONVERT:
6093 7357998 : {
6094 7357998 : tree _q30 = TREE_OPERAND (_p1, 0);
6095 7357998 : switch (TREE_CODE (_q30))
6096 : {
6097 0 : case LSHIFT_EXPR:
6098 0 : {
6099 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6100 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6101 0 : if (integer_onep (_q40))
6102 : {
6103 0 : {
6104 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
6105 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6106 0 : if (res) return res;
6107 : }
6108 : }
6109 : break;
6110 : }
6111 : default:;
6112 : }
6113 : break;
6114 : }
6115 67521508 : default:;
6116 : }
6117 67521508 : switch (TREE_CODE (_p0))
6118 : {
6119 32110537 : CASE_CONVERT:
6120 32110537 : {
6121 32110537 : tree _q20 = TREE_OPERAND (_p0, 0);
6122 32110537 : switch (TREE_CODE (_q20))
6123 : {
6124 20 : case LSHIFT_EXPR:
6125 20 : {
6126 20 : tree _q30 = TREE_OPERAND (_q20, 0);
6127 20 : tree _q31 = TREE_OPERAND (_q20, 1);
6128 20 : if (integer_onep (_q30))
6129 : {
6130 1 : {
6131 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _q31 };
6132 1 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6133 1 : if (res) return res;
6134 : }
6135 : }
6136 : break;
6137 : }
6138 1 : case EQ_EXPR:
6139 1 : {
6140 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6141 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6142 1 : if (integer_zerop (_q31))
6143 : {
6144 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6145 : {
6146 0 : {
6147 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6148 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6149 0 : if (res) return res;
6150 : }
6151 : }
6152 : }
6153 : break;
6154 : }
6155 : default:;
6156 : }
6157 : break;
6158 : }
6159 67521508 : default:;
6160 : }
6161 67521508 : switch (TREE_CODE (_p1))
6162 : {
6163 1094 : case LSHIFT_EXPR:
6164 1094 : {
6165 1094 : tree _q30 = TREE_OPERAND (_p1, 0);
6166 1094 : tree _q31 = TREE_OPERAND (_p1, 1);
6167 1094 : if (integer_onep (_q30))
6168 : {
6169 415 : {
6170 415 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
6171 415 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6172 415 : if (res) return res;
6173 : }
6174 : }
6175 : break;
6176 : }
6177 67521093 : default:;
6178 : }
6179 67521093 : switch (TREE_CODE (_p0))
6180 : {
6181 4229 : case LSHIFT_EXPR:
6182 4229 : {
6183 4229 : tree _q20 = TREE_OPERAND (_p0, 0);
6184 4229 : tree _q21 = TREE_OPERAND (_p0, 1);
6185 4229 : if (integer_onep (_q20))
6186 : {
6187 4007 : {
6188 4007 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
6189 4007 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6190 4007 : if (res) return res;
6191 : }
6192 : }
6193 : break;
6194 : }
6195 67517086 : default:;
6196 : }
6197 67517086 : switch (TREE_CODE (_p1))
6198 : {
6199 7357575 : CASE_CONVERT:
6200 7357575 : {
6201 7357575 : tree _q30 = TREE_OPERAND (_p1, 0);
6202 7357575 : switch (TREE_CODE (_q30))
6203 : {
6204 0 : case EQ_EXPR:
6205 0 : {
6206 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6207 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6208 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6209 : {
6210 0 : if (integer_zerop (_q41))
6211 : {
6212 0 : {
6213 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
6214 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6215 0 : if (res) return res;
6216 : }
6217 : }
6218 : }
6219 : break;
6220 : }
6221 : default:;
6222 : }
6223 : break;
6224 : }
6225 0 : case EQ_EXPR:
6226 0 : {
6227 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6228 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6229 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6230 : {
6231 0 : if (integer_zerop (_q31))
6232 : {
6233 0 : {
6234 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6235 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6236 0 : if (res) return res;
6237 : }
6238 : }
6239 : }
6240 : break;
6241 : }
6242 67517086 : default:;
6243 : }
6244 67517086 : switch (TREE_CODE (_p0))
6245 : {
6246 183 : case EQ_EXPR:
6247 183 : {
6248 183 : tree _q20 = TREE_OPERAND (_p0, 0);
6249 183 : tree _q21 = TREE_OPERAND (_p0, 1);
6250 183 : if (integer_zerop (_q21))
6251 : {
6252 59 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6253 : {
6254 3 : {
6255 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6256 3 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6257 3 : if (res) return res;
6258 : }
6259 : }
6260 : }
6261 : break;
6262 : }
6263 67517083 : default:;
6264 : }
6265 67517083 : switch (TREE_CODE (_p1))
6266 : {
6267 0 : case VEC_COND_EXPR:
6268 0 : {
6269 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6270 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6271 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6272 0 : switch (TREE_CODE (_q30))
6273 : {
6274 0 : case EQ_EXPR:
6275 0 : {
6276 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6277 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6278 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6279 : {
6280 0 : if (integer_zerop (_q41))
6281 : {
6282 0 : if (integer_zerop (_q32))
6283 : {
6284 0 : {
6285 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q32 };
6286 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1441;
6287 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1441;
6288 0 : {
6289 0 : tree _r;
6290 0 : _r = captures[2];
6291 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
6292 0 : return _r;
6293 : }
6294 0 : next_after_fail1441:;
6295 : }
6296 : }
6297 : }
6298 : }
6299 : break;
6300 : }
6301 : default:;
6302 : }
6303 : break;
6304 : }
6305 67517083 : default:;
6306 : }
6307 67517083 : switch (TREE_CODE (_p0))
6308 : {
6309 37 : case VEC_COND_EXPR:
6310 37 : {
6311 37 : tree _q20 = TREE_OPERAND (_p0, 0);
6312 37 : tree _q21 = TREE_OPERAND (_p0, 1);
6313 37 : tree _q22 = TREE_OPERAND (_p0, 2);
6314 37 : switch (TREE_CODE (_q20))
6315 : {
6316 1 : case EQ_EXPR:
6317 1 : {
6318 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6319 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6320 1 : if (integer_zerop (_q31))
6321 : {
6322 1 : if (integer_zerop (_q22))
6323 : {
6324 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6325 : {
6326 1 : {
6327 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _q22 };
6328 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1442;
6329 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1442;
6330 1 : {
6331 1 : tree _r;
6332 1 : _r = captures[2];
6333 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
6334 1 : return _r;
6335 : }
6336 0 : next_after_fail1442:;
6337 : }
6338 : }
6339 : }
6340 : }
6341 : break;
6342 : }
6343 0 : case NE_EXPR:
6344 0 : {
6345 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6346 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6347 0 : if (integer_zerop (_q31))
6348 : {
6349 0 : if (integer_zerop (_q21))
6350 : {
6351 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6352 : {
6353 0 : {
6354 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _q22 };
6355 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1443;
6356 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1443;
6357 0 : {
6358 0 : tree _r;
6359 0 : _r = captures[1];
6360 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
6361 0 : return _r;
6362 : }
6363 0 : next_after_fail1443:;
6364 : }
6365 : }
6366 : }
6367 : }
6368 : break;
6369 : }
6370 : default:;
6371 : }
6372 : break;
6373 : }
6374 67517082 : default:;
6375 : }
6376 67517082 : switch (TREE_CODE (_p1))
6377 : {
6378 0 : case VEC_COND_EXPR:
6379 0 : {
6380 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6381 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6382 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6383 0 : switch (TREE_CODE (_q30))
6384 : {
6385 0 : case NE_EXPR:
6386 0 : {
6387 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6388 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6389 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6390 : {
6391 0 : if (integer_zerop (_q41))
6392 : {
6393 0 : if (integer_zerop (_q31))
6394 : {
6395 0 : {
6396 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q32 };
6397 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1444;
6398 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1444;
6399 0 : {
6400 0 : tree _r;
6401 0 : _r = captures[1];
6402 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
6403 0 : return _r;
6404 : }
6405 0 : next_after_fail1444:;
6406 : }
6407 : }
6408 : }
6409 : }
6410 : break;
6411 : }
6412 : default:;
6413 : }
6414 : break;
6415 : }
6416 67517082 : default:;
6417 : }
6418 67517082 : switch (TREE_CODE (_p0))
6419 : {
6420 769534 : case RDIV_EXPR:
6421 769534 : {
6422 769534 : tree _q20 = TREE_OPERAND (_p0, 0);
6423 769534 : tree _q21 = TREE_OPERAND (_p0, 1);
6424 769534 : switch (TREE_CODE (_q20))
6425 : {
6426 57967 : case REAL_CST:
6427 57967 : {
6428 57967 : switch (TREE_CODE (_p1))
6429 : {
6430 1 : case REAL_CST:
6431 1 : {
6432 1 : {
6433 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6434 1 : if (flag_associative_math
6435 1 : && single_use (captures[0])
6436 : )
6437 : {
6438 1 : {
6439 1 : tree tem = const_binop (MULT_EXPR, type, captures[1], captures[3]);
6440 1 : if (tem
6441 : )
6442 : {
6443 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1445;
6444 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1445;
6445 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1445;
6446 1 : {
6447 1 : tree res_op0;
6448 1 : res_op0 = tem;
6449 1 : tree res_op1;
6450 1 : res_op1 = captures[2];
6451 1 : tree _r;
6452 1 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
6453 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
6454 1 : return _r;
6455 : }
6456 0 : next_after_fail1445:;
6457 : }
6458 : }
6459 : }
6460 : }
6461 0 : break;
6462 : }
6463 : default:;
6464 : }
6465 : break;
6466 : }
6467 : default:;
6468 : }
6469 : break;
6470 : }
6471 67517081 : default:;
6472 : }
6473 67517081 : {
6474 67517081 : tree _p0_pops[1];
6475 67517081 : if (tree_nop_convert (_p0, _p0_pops))
6476 : {
6477 23319973 : tree _q20 = _p0_pops[0];
6478 23319973 : switch (TREE_CODE (_q20))
6479 : {
6480 4 : case BIT_IOR_EXPR:
6481 4 : {
6482 4 : tree _q30 = TREE_OPERAND (_q20, 0);
6483 4 : tree _q31 = TREE_OPERAND (_q20, 1);
6484 4 : switch (TREE_CODE (_q30))
6485 : {
6486 4 : case NEGATE_EXPR:
6487 4 : {
6488 4 : tree _q40 = TREE_OPERAND (_q30, 0);
6489 4 : switch (TREE_CODE (_q40))
6490 : {
6491 0 : CASE_CONVERT:
6492 0 : {
6493 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6494 0 : switch (TREE_CODE (_q50))
6495 : {
6496 0 : case LT_EXPR:
6497 0 : {
6498 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6499 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6500 0 : if (integer_zerop (_q61))
6501 : {
6502 0 : if (integer_onep (_q31))
6503 : {
6504 0 : {
6505 0 : tree _p1_pops[1];
6506 0 : if (tree_nop_convert (_p1, _p1_pops))
6507 : {
6508 0 : tree _q100 = _p1_pops[0];
6509 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6510 : {
6511 0 : {
6512 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6513 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6514 0 : if (res) return res;
6515 : }
6516 : }
6517 : }
6518 : }
6519 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6520 : {
6521 0 : {
6522 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6523 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6524 0 : if (res) return res;
6525 : }
6526 : }
6527 : }
6528 : }
6529 : break;
6530 : }
6531 : default:;
6532 : }
6533 : break;
6534 : }
6535 4 : case LT_EXPR:
6536 4 : {
6537 4 : tree _q50 = TREE_OPERAND (_q40, 0);
6538 4 : tree _q51 = TREE_OPERAND (_q40, 1);
6539 4 : if (integer_zerop (_q51))
6540 : {
6541 4 : if (integer_onep (_q31))
6542 : {
6543 4 : {
6544 4 : tree _p1_pops[1];
6545 4 : if (tree_nop_convert (_p1, _p1_pops))
6546 : {
6547 4 : tree _q90 = _p1_pops[0];
6548 4 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
6549 : {
6550 4 : {
6551 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6552 4 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6553 4 : if (res) return res;
6554 : }
6555 : }
6556 : }
6557 : }
6558 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6559 : {
6560 0 : {
6561 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6562 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6563 0 : if (res) return res;
6564 : }
6565 : }
6566 : }
6567 : }
6568 : break;
6569 : }
6570 : default:;
6571 : }
6572 : break;
6573 : }
6574 0 : default:;
6575 : }
6576 0 : {
6577 0 : tree _q30_pops[1];
6578 0 : if (tree_nop_convert (_q30, _q30_pops))
6579 : {
6580 0 : tree _q40 = _q30_pops[0];
6581 0 : switch (TREE_CODE (_q40))
6582 : {
6583 0 : case NEGATE_EXPR:
6584 0 : {
6585 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6586 0 : switch (TREE_CODE (_q50))
6587 : {
6588 0 : CASE_CONVERT:
6589 0 : {
6590 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6591 0 : switch (TREE_CODE (_q60))
6592 : {
6593 0 : case LT_EXPR:
6594 0 : {
6595 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6596 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6597 0 : if (integer_zerop (_q71))
6598 : {
6599 0 : if (integer_onep (_q31))
6600 : {
6601 0 : {
6602 0 : tree _p1_pops[1];
6603 0 : if (tree_nop_convert (_p1, _p1_pops))
6604 : {
6605 0 : tree _q110 = _p1_pops[0];
6606 0 : if ((_q110 == _q70 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q70, 0) && types_match (_q110, _q70)))
6607 : {
6608 0 : {
6609 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6610 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6611 0 : if (res) return res;
6612 : }
6613 : }
6614 : }
6615 : }
6616 0 : if ((_p1 == _q70 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q70, 0) && types_match (_p1, _q70)))
6617 : {
6618 0 : {
6619 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6620 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6621 0 : if (res) return res;
6622 : }
6623 : }
6624 : }
6625 : }
6626 : break;
6627 : }
6628 : default:;
6629 : }
6630 : break;
6631 : }
6632 0 : case LT_EXPR:
6633 0 : {
6634 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6635 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6636 0 : if (integer_zerop (_q61))
6637 : {
6638 0 : if (integer_onep (_q31))
6639 : {
6640 0 : {
6641 0 : tree _p1_pops[1];
6642 0 : if (tree_nop_convert (_p1, _p1_pops))
6643 : {
6644 0 : tree _q100 = _p1_pops[0];
6645 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6646 : {
6647 0 : {
6648 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6649 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6650 0 : if (res) return res;
6651 : }
6652 : }
6653 : }
6654 : }
6655 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6656 : {
6657 0 : {
6658 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6659 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
6660 0 : if (res) return res;
6661 : }
6662 : }
6663 : }
6664 : }
6665 : break;
6666 : }
6667 : default:;
6668 : }
6669 : break;
6670 : }
6671 : default:;
6672 : }
6673 : }
6674 : }
6675 0 : break;
6676 : }
6677 23319969 : default:;
6678 : }
6679 23319969 : switch (TREE_CODE (_p1))
6680 : {
6681 0 : case BIT_IOR_EXPR:
6682 0 : {
6683 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6684 0 : tree _q41 = TREE_OPERAND (_p1, 1);
6685 0 : switch (TREE_CODE (_q40))
6686 : {
6687 0 : case NEGATE_EXPR:
6688 0 : {
6689 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6690 0 : switch (TREE_CODE (_q50))
6691 : {
6692 0 : CASE_CONVERT:
6693 0 : {
6694 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6695 0 : switch (TREE_CODE (_q60))
6696 : {
6697 0 : case LT_EXPR:
6698 0 : {
6699 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6700 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6701 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6702 : {
6703 0 : if (integer_zerop (_q71))
6704 : {
6705 0 : if (integer_onep (_q41))
6706 : {
6707 0 : {
6708 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6709 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6710 0 : if (res) return res;
6711 : }
6712 : }
6713 : }
6714 : }
6715 : break;
6716 : }
6717 : default:;
6718 : }
6719 : break;
6720 : }
6721 0 : case LT_EXPR:
6722 0 : {
6723 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6724 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6725 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6726 : {
6727 0 : if (integer_zerop (_q61))
6728 : {
6729 0 : if (integer_onep (_q41))
6730 : {
6731 0 : {
6732 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6733 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6734 0 : if (res) return res;
6735 : }
6736 : }
6737 : }
6738 : }
6739 : break;
6740 : }
6741 : default:;
6742 : }
6743 : break;
6744 : }
6745 0 : default:;
6746 : }
6747 0 : {
6748 0 : tree _q40_pops[1];
6749 0 : if (tree_nop_convert (_q40, _q40_pops))
6750 : {
6751 0 : tree _q50 = _q40_pops[0];
6752 0 : switch (TREE_CODE (_q50))
6753 : {
6754 0 : case NEGATE_EXPR:
6755 0 : {
6756 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6757 0 : switch (TREE_CODE (_q60))
6758 : {
6759 0 : CASE_CONVERT:
6760 0 : {
6761 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6762 0 : switch (TREE_CODE (_q70))
6763 : {
6764 0 : case LT_EXPR:
6765 0 : {
6766 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6767 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6768 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6769 : {
6770 0 : if (integer_zerop (_q81))
6771 : {
6772 0 : if (integer_onep (_q41))
6773 : {
6774 0 : {
6775 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6776 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6777 0 : if (res) return res;
6778 : }
6779 : }
6780 : }
6781 : }
6782 : break;
6783 : }
6784 : default:;
6785 : }
6786 : break;
6787 : }
6788 0 : case LT_EXPR:
6789 0 : {
6790 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6791 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6792 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6793 : {
6794 0 : if (integer_zerop (_q71))
6795 : {
6796 0 : if (integer_onep (_q41))
6797 : {
6798 0 : {
6799 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6800 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6801 0 : if (res) return res;
6802 : }
6803 : }
6804 : }
6805 : }
6806 : break;
6807 : }
6808 : default:;
6809 : }
6810 : break;
6811 : }
6812 : default:;
6813 : }
6814 : }
6815 : }
6816 0 : break;
6817 : }
6818 23319969 : default:;
6819 : }
6820 23319969 : {
6821 23319969 : tree _p1_pops[1];
6822 23319969 : if (tree_nop_convert (_p1, _p1_pops))
6823 : {
6824 2494274 : tree _q40 = _p1_pops[0];
6825 2494274 : switch (TREE_CODE (_q40))
6826 : {
6827 0 : case BIT_IOR_EXPR:
6828 0 : {
6829 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6830 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6831 0 : switch (TREE_CODE (_q50))
6832 : {
6833 0 : case NEGATE_EXPR:
6834 0 : {
6835 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6836 0 : switch (TREE_CODE (_q60))
6837 : {
6838 0 : CASE_CONVERT:
6839 0 : {
6840 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6841 0 : switch (TREE_CODE (_q70))
6842 : {
6843 0 : case LT_EXPR:
6844 0 : {
6845 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6846 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6847 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6848 : {
6849 0 : if (integer_zerop (_q81))
6850 : {
6851 0 : if (integer_onep (_q51))
6852 : {
6853 0 : {
6854 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6855 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6856 0 : if (res) return res;
6857 : }
6858 : }
6859 : }
6860 : }
6861 : break;
6862 : }
6863 : default:;
6864 : }
6865 : break;
6866 : }
6867 0 : case LT_EXPR:
6868 0 : {
6869 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6870 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6871 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6872 : {
6873 0 : if (integer_zerop (_q71))
6874 : {
6875 0 : if (integer_onep (_q51))
6876 : {
6877 0 : {
6878 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6879 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6880 0 : if (res) return res;
6881 : }
6882 : }
6883 : }
6884 : }
6885 : break;
6886 : }
6887 : default:;
6888 : }
6889 : break;
6890 : }
6891 0 : default:;
6892 : }
6893 0 : {
6894 0 : tree _q50_pops[1];
6895 0 : if (tree_nop_convert (_q50, _q50_pops))
6896 : {
6897 0 : tree _q60 = _q50_pops[0];
6898 0 : switch (TREE_CODE (_q60))
6899 : {
6900 0 : case NEGATE_EXPR:
6901 0 : {
6902 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6903 0 : switch (TREE_CODE (_q70))
6904 : {
6905 0 : CASE_CONVERT:
6906 0 : {
6907 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6908 0 : switch (TREE_CODE (_q80))
6909 : {
6910 0 : case LT_EXPR:
6911 0 : {
6912 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6913 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6914 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
6915 : {
6916 0 : if (integer_zerop (_q91))
6917 : {
6918 0 : if (integer_onep (_q51))
6919 : {
6920 0 : {
6921 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6922 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6923 0 : if (res) return res;
6924 : }
6925 : }
6926 : }
6927 : }
6928 : break;
6929 : }
6930 : default:;
6931 : }
6932 : break;
6933 : }
6934 0 : case LT_EXPR:
6935 0 : {
6936 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6937 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6938 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6939 : {
6940 0 : if (integer_zerop (_q81))
6941 : {
6942 0 : if (integer_onep (_q51))
6943 : {
6944 0 : {
6945 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6946 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
6947 0 : if (res) return res;
6948 : }
6949 : }
6950 : }
6951 : }
6952 : break;
6953 : }
6954 : default:;
6955 : }
6956 : break;
6957 : }
6958 : default:;
6959 : }
6960 : }
6961 : }
6962 0 : break;
6963 : }
6964 : default:;
6965 : }
6966 : }
6967 : }
6968 : }
6969 : }
6970 67517077 : {
6971 67517077 : tree _p1_pops[1];
6972 67517077 : if (tree_nop_convert (_p1, _p1_pops))
6973 : {
6974 7263164 : tree _q30 = _p1_pops[0];
6975 7263164 : switch (TREE_CODE (_q30))
6976 : {
6977 0 : case BIT_IOR_EXPR:
6978 0 : {
6979 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6980 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6981 0 : switch (TREE_CODE (_q40))
6982 : {
6983 0 : case NEGATE_EXPR:
6984 0 : {
6985 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6986 0 : switch (TREE_CODE (_q50))
6987 : {
6988 0 : CASE_CONVERT:
6989 0 : {
6990 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6991 0 : switch (TREE_CODE (_q60))
6992 : {
6993 0 : case LT_EXPR:
6994 0 : {
6995 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6996 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6997 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
6998 : {
6999 0 : if (integer_zerop (_q71))
7000 : {
7001 0 : if (integer_onep (_q41))
7002 : {
7003 0 : {
7004 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7005 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7006 0 : if (res) return res;
7007 : }
7008 : }
7009 : }
7010 : }
7011 : break;
7012 : }
7013 : default:;
7014 : }
7015 : break;
7016 : }
7017 : default:;
7018 : }
7019 : break;
7020 : }
7021 0 : default:;
7022 : }
7023 0 : {
7024 0 : tree _q40_pops[1];
7025 0 : if (tree_nop_convert (_q40, _q40_pops))
7026 : {
7027 0 : tree _q50 = _q40_pops[0];
7028 0 : switch (TREE_CODE (_q50))
7029 : {
7030 0 : case NEGATE_EXPR:
7031 0 : {
7032 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7033 0 : switch (TREE_CODE (_q60))
7034 : {
7035 0 : CASE_CONVERT:
7036 0 : {
7037 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7038 0 : switch (TREE_CODE (_q70))
7039 : {
7040 0 : case LT_EXPR:
7041 0 : {
7042 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7043 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7044 0 : if ((_q80 == _p0 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _p0, 0) && types_match (_q80, _p0)))
7045 : {
7046 0 : if (integer_zerop (_q81))
7047 : {
7048 0 : if (integer_onep (_q41))
7049 : {
7050 0 : {
7051 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7052 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7053 0 : if (res) return res;
7054 : }
7055 : }
7056 : }
7057 : }
7058 : break;
7059 : }
7060 : default:;
7061 : }
7062 : break;
7063 : }
7064 : default:;
7065 : }
7066 : break;
7067 : }
7068 : default:;
7069 : }
7070 : }
7071 : }
7072 0 : break;
7073 : }
7074 : default:;
7075 : }
7076 : }
7077 : }
7078 67517077 : switch (TREE_CODE (_p0))
7079 : {
7080 299 : case BIT_IOR_EXPR:
7081 299 : {
7082 299 : tree _q20 = TREE_OPERAND (_p0, 0);
7083 299 : tree _q21 = TREE_OPERAND (_p0, 1);
7084 299 : switch (TREE_CODE (_q20))
7085 : {
7086 1 : case NEGATE_EXPR:
7087 1 : {
7088 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7089 1 : switch (TREE_CODE (_q30))
7090 : {
7091 0 : CASE_CONVERT:
7092 0 : {
7093 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7094 0 : switch (TREE_CODE (_q40))
7095 : {
7096 0 : case LT_EXPR:
7097 0 : {
7098 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7099 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7100 0 : if (integer_zerop (_q51))
7101 : {
7102 0 : if (integer_onep (_q21))
7103 : {
7104 0 : {
7105 0 : tree _p1_pops[1];
7106 0 : if (tree_nop_convert (_p1, _p1_pops))
7107 : {
7108 0 : tree _q90 = _p1_pops[0];
7109 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7110 : {
7111 0 : {
7112 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7113 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7114 0 : if (res) return res;
7115 : }
7116 : }
7117 : }
7118 : }
7119 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7120 : {
7121 0 : {
7122 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7123 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7124 0 : if (res) return res;
7125 : }
7126 : }
7127 : }
7128 : }
7129 : break;
7130 : }
7131 : default:;
7132 : }
7133 : break;
7134 : }
7135 1 : case LT_EXPR:
7136 1 : {
7137 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7138 1 : tree _q41 = TREE_OPERAND (_q30, 1);
7139 1 : if (integer_zerop (_q41))
7140 : {
7141 1 : if (integer_onep (_q21))
7142 : {
7143 1 : {
7144 1 : tree _p1_pops[1];
7145 1 : if (tree_nop_convert (_p1, _p1_pops))
7146 : {
7147 0 : tree _q80 = _p1_pops[0];
7148 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
7149 : {
7150 0 : {
7151 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7152 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7153 0 : if (res) return res;
7154 : }
7155 : }
7156 : }
7157 : }
7158 1 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7159 : {
7160 1 : {
7161 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7162 1 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7163 1 : if (res) return res;
7164 : }
7165 : }
7166 : }
7167 : }
7168 : break;
7169 : }
7170 : default:;
7171 : }
7172 : break;
7173 : }
7174 298 : default:;
7175 : }
7176 298 : {
7177 298 : tree _q20_pops[1];
7178 298 : if (tree_nop_convert (_q20, _q20_pops))
7179 : {
7180 1 : tree _q30 = _q20_pops[0];
7181 1 : switch (TREE_CODE (_q30))
7182 : {
7183 1 : case NEGATE_EXPR:
7184 1 : {
7185 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7186 1 : switch (TREE_CODE (_q40))
7187 : {
7188 0 : CASE_CONVERT:
7189 0 : {
7190 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7191 0 : switch (TREE_CODE (_q50))
7192 : {
7193 0 : case LT_EXPR:
7194 0 : {
7195 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7196 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7197 0 : if (integer_zerop (_q61))
7198 : {
7199 0 : if (integer_onep (_q21))
7200 : {
7201 0 : {
7202 0 : tree _p1_pops[1];
7203 0 : if (tree_nop_convert (_p1, _p1_pops))
7204 : {
7205 0 : tree _q100 = _p1_pops[0];
7206 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
7207 : {
7208 0 : {
7209 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7210 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7211 0 : if (res) return res;
7212 : }
7213 : }
7214 : }
7215 : }
7216 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
7217 : {
7218 0 : {
7219 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7220 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7221 0 : if (res) return res;
7222 : }
7223 : }
7224 : }
7225 : }
7226 : break;
7227 : }
7228 : default:;
7229 : }
7230 : break;
7231 : }
7232 1 : case LT_EXPR:
7233 1 : {
7234 1 : tree _q50 = TREE_OPERAND (_q40, 0);
7235 1 : tree _q51 = TREE_OPERAND (_q40, 1);
7236 1 : if (integer_zerop (_q51))
7237 : {
7238 1 : if (integer_onep (_q21))
7239 : {
7240 1 : {
7241 1 : tree _p1_pops[1];
7242 1 : if (tree_nop_convert (_p1, _p1_pops))
7243 : {
7244 1 : tree _q90 = _p1_pops[0];
7245 1 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7246 : {
7247 1 : {
7248 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7249 1 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7250 1 : if (res) return res;
7251 : }
7252 : }
7253 : }
7254 : }
7255 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7256 : {
7257 0 : {
7258 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7259 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7260 0 : if (res) return res;
7261 : }
7262 : }
7263 : }
7264 : }
7265 : break;
7266 : }
7267 : default:;
7268 : }
7269 : break;
7270 : }
7271 : default:;
7272 : }
7273 : }
7274 : }
7275 297 : break;
7276 : }
7277 67517075 : default:;
7278 : }
7279 67517075 : switch (TREE_CODE (_p1))
7280 : {
7281 1 : case BIT_IOR_EXPR:
7282 1 : {
7283 1 : tree _q30 = TREE_OPERAND (_p1, 0);
7284 1 : tree _q31 = TREE_OPERAND (_p1, 1);
7285 1 : switch (TREE_CODE (_q30))
7286 : {
7287 0 : case NEGATE_EXPR:
7288 0 : {
7289 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7290 0 : switch (TREE_CODE (_q40))
7291 : {
7292 0 : CASE_CONVERT:
7293 0 : {
7294 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7295 0 : switch (TREE_CODE (_q50))
7296 : {
7297 0 : case LT_EXPR:
7298 0 : {
7299 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7300 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7301 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7302 : {
7303 0 : if (integer_zerop (_q61))
7304 : {
7305 0 : if (integer_onep (_q31))
7306 : {
7307 0 : {
7308 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7309 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7310 0 : if (res) return res;
7311 : }
7312 : }
7313 : }
7314 : }
7315 : break;
7316 : }
7317 : default:;
7318 : }
7319 : break;
7320 : }
7321 0 : case LT_EXPR:
7322 0 : {
7323 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7324 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7325 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7326 : {
7327 0 : if (integer_zerop (_q51))
7328 : {
7329 0 : if (integer_onep (_q31))
7330 : {
7331 0 : {
7332 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7333 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7334 0 : if (res) return res;
7335 : }
7336 : }
7337 : }
7338 : }
7339 : break;
7340 : }
7341 : default:;
7342 : }
7343 : break;
7344 : }
7345 1 : default:;
7346 : }
7347 1 : {
7348 1 : tree _q30_pops[1];
7349 1 : if (tree_nop_convert (_q30, _q30_pops))
7350 : {
7351 0 : tree _q40 = _q30_pops[0];
7352 0 : switch (TREE_CODE (_q40))
7353 : {
7354 0 : case NEGATE_EXPR:
7355 0 : {
7356 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7357 0 : switch (TREE_CODE (_q50))
7358 : {
7359 0 : CASE_CONVERT:
7360 0 : {
7361 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7362 0 : switch (TREE_CODE (_q60))
7363 : {
7364 0 : case LT_EXPR:
7365 0 : {
7366 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7367 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7368 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7369 : {
7370 0 : if (integer_zerop (_q71))
7371 : {
7372 0 : if (integer_onep (_q31))
7373 : {
7374 0 : {
7375 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7376 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7377 0 : if (res) return res;
7378 : }
7379 : }
7380 : }
7381 : }
7382 : break;
7383 : }
7384 : default:;
7385 : }
7386 : break;
7387 : }
7388 0 : case LT_EXPR:
7389 0 : {
7390 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7391 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7392 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7393 : {
7394 0 : if (integer_zerop (_q61))
7395 : {
7396 0 : if (integer_onep (_q31))
7397 : {
7398 0 : {
7399 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7400 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7401 0 : if (res) return res;
7402 : }
7403 : }
7404 : }
7405 : }
7406 : break;
7407 : }
7408 : default:;
7409 : }
7410 : break;
7411 : }
7412 : default:;
7413 : }
7414 : }
7415 : }
7416 1 : break;
7417 : }
7418 67517075 : default:;
7419 : }
7420 67517075 : {
7421 67517075 : tree _p1_pops[1];
7422 67517075 : if (tree_nop_convert (_p1, _p1_pops))
7423 : {
7424 7263163 : tree _q30 = _p1_pops[0];
7425 7263163 : switch (TREE_CODE (_q30))
7426 : {
7427 0 : case BIT_IOR_EXPR:
7428 0 : {
7429 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7430 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7431 0 : switch (TREE_CODE (_q40))
7432 : {
7433 0 : case NEGATE_EXPR:
7434 0 : {
7435 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7436 0 : switch (TREE_CODE (_q50))
7437 : {
7438 0 : case LT_EXPR:
7439 0 : {
7440 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7441 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7442 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7443 : {
7444 0 : if (integer_zerop (_q61))
7445 : {
7446 0 : if (integer_onep (_q41))
7447 : {
7448 0 : {
7449 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7450 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7451 0 : if (res) return res;
7452 : }
7453 : }
7454 : }
7455 : }
7456 : break;
7457 : }
7458 : default:;
7459 : }
7460 : break;
7461 : }
7462 0 : default:;
7463 : }
7464 0 : {
7465 0 : tree _q40_pops[1];
7466 0 : if (tree_nop_convert (_q40, _q40_pops))
7467 : {
7468 0 : tree _q50 = _q40_pops[0];
7469 0 : switch (TREE_CODE (_q50))
7470 : {
7471 0 : case NEGATE_EXPR:
7472 0 : {
7473 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7474 0 : switch (TREE_CODE (_q60))
7475 : {
7476 0 : case LT_EXPR:
7477 0 : {
7478 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7479 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7480 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7481 : {
7482 0 : if (integer_zerop (_q71))
7483 : {
7484 0 : if (integer_onep (_q41))
7485 : {
7486 0 : {
7487 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7488 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7489 0 : if (res) return res;
7490 : }
7491 : }
7492 : }
7493 : }
7494 : break;
7495 : }
7496 : default:;
7497 : }
7498 : break;
7499 : }
7500 : default:;
7501 : }
7502 : }
7503 : }
7504 0 : break;
7505 : }
7506 : default:;
7507 : }
7508 : }
7509 : }
7510 67517075 : switch (TREE_CODE (_p0))
7511 : {
7512 32110153 : CASE_CONVERT:
7513 32110153 : {
7514 32110153 : tree _q20 = TREE_OPERAND (_p0, 0);
7515 32110153 : switch (TREE_CODE (_q20))
7516 : {
7517 3940 : case NEGATE_EXPR:
7518 3940 : {
7519 3940 : tree _q30 = TREE_OPERAND (_q20, 0);
7520 3940 : switch (TREE_CODE (_p1))
7521 : {
7522 153 : CASE_CONVERT:
7523 153 : {
7524 153 : tree _q50 = TREE_OPERAND (_p1, 0);
7525 153 : if (tree_negate_expr_p (_q50))
7526 : {
7527 0 : {
7528 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
7529 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7530 0 : if (res) return res;
7531 : }
7532 : }
7533 : break;
7534 : }
7535 3940 : default:;
7536 : }
7537 3940 : if (tree_negate_expr_p (_p1))
7538 : {
7539 3509 : {
7540 3509 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
7541 3509 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7542 3509 : if (res) return res;
7543 : }
7544 : }
7545 : break;
7546 : }
7547 4 : case LT_EXPR:
7548 4 : {
7549 4 : tree _q30 = TREE_OPERAND (_q20, 0);
7550 4 : tree _q31 = TREE_OPERAND (_q20, 1);
7551 4 : {
7552 4 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7553 4 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, LT_EXPR);
7554 4 : if (res) return res;
7555 : }
7556 4 : break;
7557 : }
7558 6 : case LE_EXPR:
7559 6 : {
7560 6 : tree _q30 = TREE_OPERAND (_q20, 0);
7561 6 : tree _q31 = TREE_OPERAND (_q20, 1);
7562 6 : {
7563 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7564 6 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, LE_EXPR);
7565 6 : if (res) return res;
7566 : }
7567 6 : break;
7568 : }
7569 1 : case EQ_EXPR:
7570 1 : {
7571 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7572 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7573 1 : {
7574 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7575 1 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, EQ_EXPR);
7576 1 : if (res) return res;
7577 : }
7578 1 : break;
7579 : }
7580 1157 : case NE_EXPR:
7581 1157 : {
7582 1157 : tree _q30 = TREE_OPERAND (_q20, 0);
7583 1157 : tree _q31 = TREE_OPERAND (_q20, 1);
7584 1157 : {
7585 1157 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7586 1157 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, NE_EXPR);
7587 1157 : if (res) return res;
7588 : }
7589 1157 : break;
7590 : }
7591 19 : case GE_EXPR:
7592 19 : {
7593 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7594 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7595 19 : {
7596 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7597 19 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, GE_EXPR);
7598 19 : if (res) return res;
7599 : }
7600 19 : break;
7601 : }
7602 19 : case GT_EXPR:
7603 19 : {
7604 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7605 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7606 19 : {
7607 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7608 19 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, GT_EXPR);
7609 19 : if (res) return res;
7610 : }
7611 19 : break;
7612 : }
7613 0 : case UNORDERED_EXPR:
7614 0 : {
7615 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7616 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7617 0 : {
7618 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7619 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7620 0 : if (res) return res;
7621 : }
7622 0 : break;
7623 : }
7624 0 : case ORDERED_EXPR:
7625 0 : {
7626 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7627 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7628 0 : {
7629 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7630 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7631 0 : if (res) return res;
7632 : }
7633 0 : break;
7634 : }
7635 0 : case UNLT_EXPR:
7636 0 : {
7637 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7638 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7639 0 : {
7640 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7641 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7642 0 : if (res) return res;
7643 : }
7644 0 : break;
7645 : }
7646 0 : case UNLE_EXPR:
7647 0 : {
7648 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7649 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7650 0 : {
7651 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7652 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7653 0 : if (res) return res;
7654 : }
7655 0 : break;
7656 : }
7657 0 : case UNGT_EXPR:
7658 0 : {
7659 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7660 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7661 0 : {
7662 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7663 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7664 0 : if (res) return res;
7665 : }
7666 0 : break;
7667 : }
7668 0 : case UNGE_EXPR:
7669 0 : {
7670 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7671 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7672 0 : {
7673 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7674 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7675 0 : if (res) return res;
7676 : }
7677 0 : break;
7678 : }
7679 0 : case UNEQ_EXPR:
7680 0 : {
7681 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7682 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7683 0 : {
7684 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7685 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7686 0 : if (res) return res;
7687 : }
7688 0 : break;
7689 : }
7690 0 : case LTGT_EXPR:
7691 0 : {
7692 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7693 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7694 0 : {
7695 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7696 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7697 0 : if (res) return res;
7698 : }
7699 0 : break;
7700 : }
7701 32109384 : default:;
7702 : }
7703 32109384 : if (tree_negate_expr_p (_q20))
7704 : {
7705 20157 : switch (TREE_CODE (_p1))
7706 : {
7707 2322 : CASE_CONVERT:
7708 2322 : {
7709 2322 : tree _q40 = TREE_OPERAND (_p1, 0);
7710 2322 : switch (TREE_CODE (_q40))
7711 : {
7712 0 : case NEGATE_EXPR:
7713 0 : {
7714 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7715 0 : {
7716 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7717 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7718 0 : if (res) return res;
7719 : }
7720 0 : break;
7721 : }
7722 : default:;
7723 : }
7724 : break;
7725 : }
7726 6 : case NEGATE_EXPR:
7727 6 : {
7728 6 : tree _q40 = TREE_OPERAND (_p1, 0);
7729 6 : {
7730 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7731 6 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7732 6 : if (res) return res;
7733 : }
7734 0 : break;
7735 : }
7736 : default:;
7737 : }
7738 : }
7739 : break;
7740 : }
7741 435223 : case NEGATE_EXPR:
7742 435223 : {
7743 435223 : tree _q20 = TREE_OPERAND (_p0, 0);
7744 435223 : switch (TREE_CODE (_p1))
7745 : {
7746 156666 : CASE_CONVERT:
7747 156666 : {
7748 156666 : tree _q40 = TREE_OPERAND (_p1, 0);
7749 156666 : if (tree_negate_expr_p (_q40))
7750 : {
7751 0 : {
7752 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7753 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7754 0 : if (res) return res;
7755 : }
7756 : }
7757 : break;
7758 : }
7759 435223 : default:;
7760 : }
7761 435223 : if (tree_negate_expr_p (_p1))
7762 : {
7763 27581 : {
7764 27581 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7765 27581 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7766 27581 : if (res) return res;
7767 : }
7768 : }
7769 407642 : if (tree_zero_one_valued_p (_q20))
7770 : {
7771 529 : if (tree_zero_one_valued_p (_p1))
7772 : {
7773 521 : {
7774 521 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7775 521 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
7776 521 : if (res) return res;
7777 : }
7778 : }
7779 : }
7780 : break;
7781 : }
7782 67488198 : default:;
7783 : }
7784 67488198 : if (tree_negate_expr_p (_p0))
7785 : {
7786 677395 : switch (TREE_CODE (_p1))
7787 : {
7788 161845 : CASE_CONVERT:
7789 161845 : {
7790 161845 : tree _q30 = TREE_OPERAND (_p1, 0);
7791 161845 : switch (TREE_CODE (_q30))
7792 : {
7793 0 : case NEGATE_EXPR:
7794 0 : {
7795 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7796 0 : {
7797 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
7798 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7799 0 : if (res) return res;
7800 : }
7801 0 : break;
7802 : }
7803 : default:;
7804 : }
7805 : break;
7806 : }
7807 12 : case NEGATE_EXPR:
7808 12 : {
7809 12 : tree _q30 = TREE_OPERAND (_p1, 0);
7810 12 : {
7811 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7812 12 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7813 12 : if (res) return res;
7814 : }
7815 0 : break;
7816 : }
7817 : default:;
7818 : }
7819 : }
7820 67488186 : if (tree_zero_one_valued_p (_p0))
7821 : {
7822 187831 : switch (TREE_CODE (_p1))
7823 : {
7824 24 : case NEGATE_EXPR:
7825 24 : {
7826 24 : tree _q30 = TREE_OPERAND (_p1, 0);
7827 24 : if (tree_zero_one_valued_p (_q30))
7828 : {
7829 24 : {
7830 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7831 24 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
7832 24 : if (res) return res;
7833 : }
7834 : }
7835 : break;
7836 : }
7837 187807 : default:;
7838 : }
7839 187807 : if (tree_zero_one_valued_p (_p1))
7840 : {
7841 12772 : {
7842 12772 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7843 12772 : if (INTEGRAL_TYPE_P (type)
7844 : )
7845 : {
7846 12772 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1446;
7847 12772 : {
7848 12772 : tree res_op0;
7849 12772 : res_op0 = captures[0];
7850 12772 : tree res_op1;
7851 12772 : res_op1 = captures[1];
7852 12772 : tree _r;
7853 12772 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
7854 12772 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
7855 12772 : return _r;
7856 : }
7857 0 : next_after_fail1446:;
7858 : }
7859 : }
7860 : }
7861 : }
7862 67475390 : switch (TREE_CODE (_p1))
7863 : {
7864 7344801 : CASE_CONVERT:
7865 7344801 : {
7866 7344801 : tree _q30 = TREE_OPERAND (_p1, 0);
7867 7344801 : switch (TREE_CODE (_q30))
7868 : {
7869 0 : case LT_EXPR:
7870 0 : {
7871 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7872 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7873 0 : {
7874 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7875 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, LT_EXPR);
7876 0 : if (res) return res;
7877 : }
7878 0 : break;
7879 : }
7880 0 : case LE_EXPR:
7881 0 : {
7882 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7883 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7884 0 : {
7885 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7886 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, LE_EXPR);
7887 0 : if (res) return res;
7888 : }
7889 0 : break;
7890 : }
7891 0 : case EQ_EXPR:
7892 0 : {
7893 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7894 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7895 0 : {
7896 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7897 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, EQ_EXPR);
7898 0 : if (res) return res;
7899 : }
7900 0 : break;
7901 : }
7902 0 : case NE_EXPR:
7903 0 : {
7904 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7905 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7906 0 : {
7907 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7908 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, NE_EXPR);
7909 0 : if (res) return res;
7910 : }
7911 0 : break;
7912 : }
7913 0 : case GE_EXPR:
7914 0 : {
7915 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7916 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7917 0 : {
7918 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7919 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, GE_EXPR);
7920 0 : if (res) return res;
7921 : }
7922 0 : break;
7923 : }
7924 0 : case GT_EXPR:
7925 0 : {
7926 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7927 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7928 0 : {
7929 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7930 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, GT_EXPR);
7931 0 : if (res) return res;
7932 : }
7933 0 : break;
7934 : }
7935 0 : case UNORDERED_EXPR:
7936 0 : {
7937 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7938 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7939 0 : {
7940 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7941 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7942 0 : if (res) return res;
7943 : }
7944 0 : break;
7945 : }
7946 0 : case ORDERED_EXPR:
7947 0 : {
7948 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7949 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7950 0 : {
7951 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7952 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7953 0 : if (res) return res;
7954 : }
7955 0 : break;
7956 : }
7957 0 : case UNLT_EXPR:
7958 0 : {
7959 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7960 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7961 0 : {
7962 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7963 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7964 0 : if (res) return res;
7965 : }
7966 0 : break;
7967 : }
7968 0 : case UNLE_EXPR:
7969 0 : {
7970 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7971 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7972 0 : {
7973 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7974 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7975 0 : if (res) return res;
7976 : }
7977 0 : break;
7978 : }
7979 0 : case UNGT_EXPR:
7980 0 : {
7981 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7982 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7983 0 : {
7984 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7985 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7986 0 : if (res) return res;
7987 : }
7988 0 : break;
7989 : }
7990 0 : case UNGE_EXPR:
7991 0 : {
7992 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7993 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7994 0 : {
7995 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7996 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7997 0 : if (res) return res;
7998 : }
7999 0 : break;
8000 : }
8001 0 : case UNEQ_EXPR:
8002 0 : {
8003 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8004 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8005 0 : {
8006 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8007 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
8008 0 : if (res) return res;
8009 : }
8010 0 : break;
8011 : }
8012 0 : case LTGT_EXPR:
8013 0 : {
8014 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8015 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8016 0 : {
8017 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8018 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, LTGT_EXPR);
8019 0 : if (res) return res;
8020 : }
8021 0 : break;
8022 : }
8023 : default:;
8024 : }
8025 : break;
8026 : }
8027 67475390 : default:;
8028 : }
8029 67475390 : switch (TREE_CODE (_p0))
8030 : {
8031 3 : case MIN_EXPR:
8032 3 : {
8033 3 : tree _q20 = TREE_OPERAND (_p0, 0);
8034 3 : tree _q21 = TREE_OPERAND (_p0, 1);
8035 3 : switch (TREE_CODE (_p1))
8036 : {
8037 0 : case MAX_EXPR:
8038 0 : {
8039 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8040 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8041 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8042 : {
8043 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8044 : {
8045 0 : {
8046 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8047 0 : if (!HONOR_NANS (captures[0])
8048 : )
8049 : {
8050 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1447;
8051 0 : {
8052 0 : tree res_op0;
8053 0 : res_op0 = captures[0];
8054 0 : tree res_op1;
8055 0 : res_op1 = captures[1];
8056 0 : tree _r;
8057 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8058 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
8059 0 : return _r;
8060 : }
8061 0 : next_after_fail1447:;
8062 : }
8063 : }
8064 : }
8065 : }
8066 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8067 : {
8068 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8069 : {
8070 0 : {
8071 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8072 0 : if (!HONOR_NANS (captures[0])
8073 : )
8074 : {
8075 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1448;
8076 0 : {
8077 0 : tree res_op0;
8078 0 : res_op0 = captures[0];
8079 0 : tree res_op1;
8080 0 : res_op1 = captures[1];
8081 0 : tree _r;
8082 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8083 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
8084 0 : return _r;
8085 : }
8086 0 : next_after_fail1448:;
8087 : }
8088 : }
8089 : }
8090 : }
8091 : break;
8092 : }
8093 : default:;
8094 : }
8095 : break;
8096 : }
8097 146 : case MAX_EXPR:
8098 146 : {
8099 146 : tree _q20 = TREE_OPERAND (_p0, 0);
8100 146 : tree _q21 = TREE_OPERAND (_p0, 1);
8101 146 : switch (TREE_CODE (_p1))
8102 : {
8103 0 : case MIN_EXPR:
8104 0 : {
8105 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8106 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8107 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8108 : {
8109 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8110 : {
8111 0 : {
8112 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8113 0 : if (!HONOR_NANS (captures[0])
8114 : )
8115 : {
8116 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1449;
8117 0 : {
8118 0 : tree res_op0;
8119 0 : res_op0 = captures[0];
8120 0 : tree res_op1;
8121 0 : res_op1 = captures[1];
8122 0 : tree _r;
8123 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8124 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
8125 0 : return _r;
8126 : }
8127 0 : next_after_fail1449:;
8128 : }
8129 : }
8130 : }
8131 : }
8132 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8133 : {
8134 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8135 : {
8136 0 : {
8137 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8138 0 : if (!HONOR_NANS (captures[0])
8139 : )
8140 : {
8141 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1450;
8142 0 : {
8143 0 : tree res_op0;
8144 0 : res_op0 = captures[0];
8145 0 : tree res_op1;
8146 0 : res_op1 = captures[1];
8147 0 : tree _r;
8148 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8149 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
8150 0 : return _r;
8151 : }
8152 0 : next_after_fail1450:;
8153 : }
8154 : }
8155 : }
8156 : }
8157 : break;
8158 : }
8159 : default:;
8160 : }
8161 : break;
8162 : }
8163 32096609 : CASE_CONVERT:
8164 32096609 : {
8165 32096609 : tree _q20 = TREE_OPERAND (_p0, 0);
8166 32096609 : switch (TREE_CODE (_q20))
8167 : {
8168 82 : case BIT_AND_EXPR:
8169 82 : {
8170 82 : tree _q30 = TREE_OPERAND (_q20, 0);
8171 82 : tree _q31 = TREE_OPERAND (_q20, 1);
8172 82 : switch (TREE_CODE (_q30))
8173 : {
8174 0 : CASE_CONVERT:
8175 0 : {
8176 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8177 0 : switch (TREE_CODE (_q40))
8178 : {
8179 0 : case RSHIFT_EXPR:
8180 0 : {
8181 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8182 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8183 0 : switch (TREE_CODE (_q51))
8184 : {
8185 0 : case INTEGER_CST:
8186 0 : {
8187 0 : switch (TREE_CODE (_q31))
8188 : {
8189 0 : case INTEGER_CST:
8190 0 : {
8191 0 : switch (TREE_CODE (_p1))
8192 : {
8193 0 : case INTEGER_CST:
8194 0 : {
8195 0 : {
8196 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8197 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures);
8198 0 : if (res) return res;
8199 : }
8200 0 : break;
8201 : }
8202 : default:;
8203 : }
8204 : break;
8205 : }
8206 : default:;
8207 : }
8208 : break;
8209 : }
8210 : default:;
8211 : }
8212 : break;
8213 : }
8214 : default:;
8215 : }
8216 : break;
8217 : }
8218 : default:;
8219 : }
8220 : break;
8221 : }
8222 31570 : case EXACT_DIV_EXPR:
8223 31570 : {
8224 31570 : tree _q30 = TREE_OPERAND (_q20, 0);
8225 31570 : tree _q31 = TREE_OPERAND (_q20, 1);
8226 31570 : switch (TREE_CODE (_p1))
8227 : {
8228 0 : CASE_CONVERT:
8229 0 : {
8230 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8231 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
8232 : {
8233 0 : {
8234 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8235 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
8236 0 : if (res) return res;
8237 : }
8238 : }
8239 : break;
8240 : }
8241 31570 : default:;
8242 : }
8243 31570 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
8244 : {
8245 21455 : {
8246 21455 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8247 21455 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
8248 21455 : if (res) return res;
8249 : }
8250 : }
8251 10115 : switch (TREE_CODE (_q31))
8252 : {
8253 10115 : case INTEGER_CST:
8254 10115 : {
8255 10115 : if (poly_int_tree_p (_p1))
8256 : {
8257 10115 : {
8258 10115 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8259 10115 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
8260 10115 : if (res) return res;
8261 : }
8262 : }
8263 : break;
8264 : }
8265 : default:;
8266 : }
8267 : break;
8268 : }
8269 1385174 : case PLUS_EXPR:
8270 1385174 : {
8271 1385174 : tree _q30 = TREE_OPERAND (_q20, 0);
8272 1385174 : tree _q31 = TREE_OPERAND (_q20, 1);
8273 1385174 : switch (TREE_CODE (_q30))
8274 : {
8275 174274 : CASE_CONVERT:
8276 174274 : {
8277 174274 : tree _q40 = TREE_OPERAND (_q30, 0);
8278 174274 : switch (TREE_CODE (_q40))
8279 : {
8280 0 : case EXACT_DIV_EXPR:
8281 0 : {
8282 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8283 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8284 0 : switch (TREE_CODE (_q51))
8285 : {
8286 0 : case INTEGER_CST:
8287 0 : {
8288 0 : if (poly_int_tree_p (_q31))
8289 : {
8290 0 : if (poly_int_tree_p (_p1))
8291 : {
8292 0 : {
8293 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8294 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8295 0 : if (res) return res;
8296 : }
8297 : }
8298 : }
8299 : break;
8300 : }
8301 : default:;
8302 : }
8303 : break;
8304 : }
8305 : default:;
8306 : }
8307 : break;
8308 : }
8309 112 : case EXACT_DIV_EXPR:
8310 112 : {
8311 112 : tree _q40 = TREE_OPERAND (_q30, 0);
8312 112 : tree _q41 = TREE_OPERAND (_q30, 1);
8313 112 : switch (TREE_CODE (_q41))
8314 : {
8315 112 : case INTEGER_CST:
8316 112 : {
8317 112 : if (poly_int_tree_p (_q31))
8318 : {
8319 112 : if (poly_int_tree_p (_p1))
8320 : {
8321 112 : {
8322 112 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8323 112 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8324 112 : if (res) return res;
8325 : }
8326 : }
8327 : }
8328 : break;
8329 : }
8330 : default:;
8331 : }
8332 : break;
8333 : }
8334 : default:;
8335 : }
8336 : break;
8337 : }
8338 96862 : case MINUS_EXPR:
8339 96862 : {
8340 96862 : tree _q30 = TREE_OPERAND (_q20, 0);
8341 96862 : tree _q31 = TREE_OPERAND (_q20, 1);
8342 96862 : switch (TREE_CODE (_q30))
8343 : {
8344 21241 : CASE_CONVERT:
8345 21241 : {
8346 21241 : tree _q40 = TREE_OPERAND (_q30, 0);
8347 21241 : switch (TREE_CODE (_q40))
8348 : {
8349 0 : case EXACT_DIV_EXPR:
8350 0 : {
8351 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8352 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8353 0 : switch (TREE_CODE (_q51))
8354 : {
8355 0 : case INTEGER_CST:
8356 0 : {
8357 0 : if (poly_int_tree_p (_q31))
8358 : {
8359 0 : if (poly_int_tree_p (_p1))
8360 : {
8361 0 : {
8362 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8363 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8364 0 : if (res) return res;
8365 : }
8366 : }
8367 : }
8368 : break;
8369 : }
8370 : default:;
8371 : }
8372 : break;
8373 : }
8374 : default:;
8375 : }
8376 : break;
8377 : }
8378 0 : case EXACT_DIV_EXPR:
8379 0 : {
8380 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8381 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8382 0 : switch (TREE_CODE (_q41))
8383 : {
8384 0 : case INTEGER_CST:
8385 0 : {
8386 0 : if (poly_int_tree_p (_q31))
8387 : {
8388 0 : if (poly_int_tree_p (_p1))
8389 : {
8390 0 : {
8391 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8392 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8393 0 : if (res) return res;
8394 : }
8395 : }
8396 : }
8397 : break;
8398 : }
8399 : default:;
8400 : }
8401 : break;
8402 : }
8403 : default:;
8404 : }
8405 : break;
8406 : }
8407 : default:;
8408 : }
8409 : break;
8410 : }
8411 59426 : case BIT_AND_EXPR:
8412 59426 : {
8413 59426 : tree _q20 = TREE_OPERAND (_p0, 0);
8414 59426 : tree _q21 = TREE_OPERAND (_p0, 1);
8415 59426 : switch (TREE_CODE (_q20))
8416 : {
8417 275 : case RSHIFT_EXPR:
8418 275 : {
8419 275 : tree _q30 = TREE_OPERAND (_q20, 0);
8420 275 : tree _q31 = TREE_OPERAND (_q20, 1);
8421 275 : switch (TREE_CODE (_q31))
8422 : {
8423 14 : case INTEGER_CST:
8424 14 : {
8425 14 : switch (TREE_CODE (_q21))
8426 : {
8427 14 : case INTEGER_CST:
8428 14 : {
8429 14 : switch (TREE_CODE (_p1))
8430 : {
8431 14 : case INTEGER_CST:
8432 14 : {
8433 14 : {
8434 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8435 14 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures);
8436 14 : if (res) return res;
8437 : }
8438 8 : break;
8439 : }
8440 : default:;
8441 : }
8442 : break;
8443 : }
8444 : default:;
8445 : }
8446 : break;
8447 : }
8448 : default:;
8449 : }
8450 : break;
8451 : }
8452 : default:;
8453 : }
8454 : break;
8455 : }
8456 182975 : case EXACT_DIV_EXPR:
8457 182975 : {
8458 182975 : tree _q20 = TREE_OPERAND (_p0, 0);
8459 182975 : tree _q21 = TREE_OPERAND (_p0, 1);
8460 182975 : switch (TREE_CODE (_p1))
8461 : {
8462 114 : CASE_CONVERT:
8463 114 : {
8464 114 : tree _q50 = TREE_OPERAND (_p1, 0);
8465 114 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
8466 : {
8467 0 : {
8468 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8469 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
8470 0 : if (res) return res;
8471 : }
8472 : }
8473 : break;
8474 : }
8475 182975 : default:;
8476 : }
8477 182975 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
8478 : {
8479 20805 : {
8480 20805 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8481 20805 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
8482 20805 : if (res) return res;
8483 : }
8484 : }
8485 162170 : switch (TREE_CODE (_q21))
8486 : {
8487 162170 : case INTEGER_CST:
8488 162170 : {
8489 162170 : if (poly_int_tree_p (_p1))
8490 : {
8491 162056 : {
8492 162056 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8493 162056 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
8494 162056 : if (res) return res;
8495 : }
8496 : }
8497 : break;
8498 : }
8499 : default:;
8500 : }
8501 : break;
8502 : }
8503 7627326 : case PLUS_EXPR:
8504 7627326 : {
8505 7627326 : tree _q20 = TREE_OPERAND (_p0, 0);
8506 7627326 : tree _q21 = TREE_OPERAND (_p0, 1);
8507 7627326 : switch (TREE_CODE (_q20))
8508 : {
8509 3736457 : CASE_CONVERT:
8510 3736457 : {
8511 3736457 : tree _q30 = TREE_OPERAND (_q20, 0);
8512 3736457 : switch (TREE_CODE (_q30))
8513 : {
8514 5478 : case EXACT_DIV_EXPR:
8515 5478 : {
8516 5478 : tree _q40 = TREE_OPERAND (_q30, 0);
8517 5478 : tree _q41 = TREE_OPERAND (_q30, 1);
8518 5478 : switch (TREE_CODE (_q41))
8519 : {
8520 5478 : case INTEGER_CST:
8521 5478 : {
8522 5478 : if (poly_int_tree_p (_q21))
8523 : {
8524 5478 : if (poly_int_tree_p (_p1))
8525 : {
8526 5478 : {
8527 5478 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8528 5478 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8529 5478 : if (res) return res;
8530 : }
8531 : }
8532 : }
8533 : break;
8534 : }
8535 : default:;
8536 : }
8537 : break;
8538 : }
8539 : default:;
8540 : }
8541 : break;
8542 : }
8543 0 : case EXACT_DIV_EXPR:
8544 0 : {
8545 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8546 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8547 0 : switch (TREE_CODE (_q31))
8548 : {
8549 0 : case INTEGER_CST:
8550 0 : {
8551 0 : if (poly_int_tree_p (_q21))
8552 : {
8553 0 : if (poly_int_tree_p (_p1))
8554 : {
8555 0 : {
8556 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8557 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8558 0 : if (res) return res;
8559 : }
8560 : }
8561 : }
8562 : break;
8563 : }
8564 : default:;
8565 : }
8566 : break;
8567 : }
8568 : default:;
8569 : }
8570 : break;
8571 : }
8572 1143257 : case MINUS_EXPR:
8573 1143257 : {
8574 1143257 : tree _q20 = TREE_OPERAND (_p0, 0);
8575 1143257 : tree _q21 = TREE_OPERAND (_p0, 1);
8576 1143257 : switch (TREE_CODE (_q20))
8577 : {
8578 264880 : CASE_CONVERT:
8579 264880 : {
8580 264880 : tree _q30 = TREE_OPERAND (_q20, 0);
8581 264880 : switch (TREE_CODE (_q30))
8582 : {
8583 0 : case EXACT_DIV_EXPR:
8584 0 : {
8585 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8586 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8587 0 : switch (TREE_CODE (_q41))
8588 : {
8589 0 : case INTEGER_CST:
8590 0 : {
8591 0 : if (poly_int_tree_p (_q21))
8592 : {
8593 0 : if (poly_int_tree_p (_p1))
8594 : {
8595 0 : {
8596 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8597 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8598 0 : if (res) return res;
8599 : }
8600 : }
8601 : }
8602 : break;
8603 : }
8604 : default:;
8605 : }
8606 : break;
8607 : }
8608 : default:;
8609 : }
8610 : break;
8611 : }
8612 0 : case EXACT_DIV_EXPR:
8613 0 : {
8614 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8615 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8616 0 : switch (TREE_CODE (_q31))
8617 : {
8618 0 : case INTEGER_CST:
8619 0 : {
8620 0 : if (poly_int_tree_p (_q21))
8621 : {
8622 0 : if (poly_int_tree_p (_p1))
8623 : {
8624 0 : {
8625 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8626 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8627 0 : if (res) return res;
8628 : }
8629 : }
8630 : }
8631 : break;
8632 : }
8633 : default:;
8634 : }
8635 : break;
8636 : }
8637 : default:;
8638 : }
8639 : break;
8640 : }
8641 67372763 : default:;
8642 : }
8643 67372763 : if (integer_minus_onep (_p1))
8644 : {
8645 403719 : {
8646 403719 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8647 403719 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1451;
8648 403719 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1451;
8649 403719 : {
8650 403719 : tree res_op0;
8651 403719 : res_op0 = captures[0];
8652 403719 : tree _r;
8653 403719 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
8654 403719 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
8655 403719 : return _r;
8656 : }
8657 : next_after_fail1451:;
8658 : }
8659 : }
8660 66969044 : switch (TREE_CODE (_p0))
8661 : {
8662 4847846 : case MULT_EXPR:
8663 4847846 : {
8664 4847846 : tree _q20 = TREE_OPERAND (_p0, 0);
8665 4847846 : tree _q21 = TREE_OPERAND (_p0, 1);
8666 4847846 : switch (TREE_CODE (_q21))
8667 : {
8668 169050 : case INTEGER_CST:
8669 169050 : {
8670 169050 : {
8671 169050 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8672 169050 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
8673 169050 : if (res) return res;
8674 : }
8675 30 : break;
8676 : }
8677 : default:;
8678 : }
8679 : break;
8680 : }
8681 66800024 : default:;
8682 : }
8683 66800024 : switch (TREE_CODE (_p1))
8684 : {
8685 23601 : case MULT_EXPR:
8686 23601 : {
8687 23601 : tree _q30 = TREE_OPERAND (_p1, 0);
8688 23601 : tree _q31 = TREE_OPERAND (_p1, 1);
8689 23601 : switch (TREE_CODE (_q31))
8690 : {
8691 17157 : case INTEGER_CST:
8692 17157 : {
8693 17157 : {
8694 17157 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q31, _p0 };
8695 17157 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
8696 17157 : if (res) return res;
8697 : }
8698 0 : break;
8699 : }
8700 : default:;
8701 : }
8702 : break;
8703 : }
8704 66782867 : default:;
8705 : }
8706 66782867 : switch (TREE_CODE (_p0))
8707 : {
8708 36 : case VEC_COND_EXPR:
8709 36 : {
8710 36 : tree _q20 = TREE_OPERAND (_p0, 0);
8711 36 : tree _q21 = TREE_OPERAND (_p0, 1);
8712 36 : tree _q22 = TREE_OPERAND (_p0, 2);
8713 36 : switch (TREE_CODE (_p1))
8714 : {
8715 0 : case VEC_COND_EXPR:
8716 0 : {
8717 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8718 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8719 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8720 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8721 : {
8722 0 : {
8723 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8724 0 : if (VECTOR_TYPE_P (type)
8725 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8726 : || types_match (type, TREE_TYPE (captures[2]))
8727 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8728 : || (optimize_vectors_before_lowering_p ()
8729 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8730 : )
8731 : {
8732 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1452;
8733 0 : {
8734 0 : tree res_op0;
8735 0 : res_op0 = captures[1];
8736 0 : tree res_op1;
8737 0 : {
8738 0 : tree _o1[2], _r1;
8739 0 : _o1[0] = captures[2];
8740 0 : _o1[1] = captures[5];
8741 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8742 0 : if (EXPR_P (_r1))
8743 0 : goto next_after_fail1452;
8744 0 : res_op1 = _r1;
8745 : }
8746 0 : tree res_op2;
8747 0 : {
8748 0 : tree _o1[2], _r1;
8749 0 : _o1[0] = captures[3];
8750 0 : _o1[1] = captures[6];
8751 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8752 0 : if (EXPR_P (_r1))
8753 0 : goto next_after_fail1452;
8754 0 : res_op2 = _r1;
8755 : }
8756 0 : tree _r;
8757 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8758 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
8759 0 : return _r;
8760 : }
8761 0 : next_after_fail1452:;
8762 : }
8763 : }
8764 : }
8765 : break;
8766 : }
8767 36 : default:;
8768 : }
8769 36 : {
8770 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8771 36 : if (VECTOR_TYPE_P (type)
8772 36 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8773 : || types_match (type, TREE_TYPE (captures[2]))
8774 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8775 : || (optimize_vectors_before_lowering_p ()
8776 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8777 : )
8778 : {
8779 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1453;
8780 36 : {
8781 36 : if (! tree_invariant_p (captures[4])) goto next_after_fail1453;
8782 0 : tree res_op0;
8783 0 : res_op0 = captures[1];
8784 0 : tree res_op1;
8785 0 : {
8786 0 : tree _o1[2], _r1;
8787 0 : _o1[0] = captures[2];
8788 0 : _o1[1] = unshare_expr (captures[4]);
8789 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8790 0 : if (EXPR_P (_r1))
8791 0 : goto next_after_fail1453;
8792 0 : res_op1 = _r1;
8793 : }
8794 0 : tree res_op2;
8795 0 : {
8796 0 : tree _o1[2], _r1;
8797 0 : _o1[0] = captures[3];
8798 0 : _o1[1] = captures[4];
8799 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8800 0 : if (EXPR_P (_r1))
8801 0 : goto next_after_fail1453;
8802 0 : res_op2 = _r1;
8803 : }
8804 0 : tree _r;
8805 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8806 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
8807 0 : return _r;
8808 : }
8809 36 : next_after_fail1453:;
8810 : }
8811 : }
8812 36 : break;
8813 : }
8814 66782867 : default:;
8815 : }
8816 66782867 : switch (TREE_CODE (_p1))
8817 : {
8818 0 : case VEC_COND_EXPR:
8819 0 : {
8820 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8821 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8822 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8823 0 : {
8824 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8825 0 : if (VECTOR_TYPE_P (type)
8826 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8827 : || types_match (type, TREE_TYPE (captures[3]))
8828 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8829 : || (optimize_vectors_before_lowering_p ()
8830 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8831 : )
8832 : {
8833 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1454;
8834 0 : {
8835 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1454;
8836 0 : tree res_op0;
8837 0 : res_op0 = captures[2];
8838 0 : tree res_op1;
8839 0 : {
8840 0 : tree _o1[2], _r1;
8841 0 : _o1[0] = unshare_expr (captures[0]);
8842 0 : _o1[1] = captures[3];
8843 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8844 0 : if (EXPR_P (_r1))
8845 0 : goto next_after_fail1454;
8846 0 : res_op1 = _r1;
8847 : }
8848 0 : tree res_op2;
8849 0 : {
8850 0 : tree _o1[2], _r1;
8851 0 : _o1[0] = captures[0];
8852 0 : _o1[1] = captures[4];
8853 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8854 0 : if (EXPR_P (_r1))
8855 0 : goto next_after_fail1454;
8856 0 : res_op2 = _r1;
8857 : }
8858 0 : tree _r;
8859 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
8861 0 : return _r;
8862 : }
8863 0 : next_after_fail1454:;
8864 : }
8865 : }
8866 0 : break;
8867 : }
8868 66782867 : default:;
8869 : }
8870 66782867 : switch (TREE_CODE (_p0))
8871 : {
8872 2576 : case REAL_CST:
8873 2576 : {
8874 2576 : switch (TREE_CODE (_p1))
8875 : {
8876 0 : case CALL_EXPR:
8877 0 : switch (get_call_combined_fn (_p1))
8878 : {
8879 0 : case CFN_BUILT_IN_LDEXPF:
8880 0 : if (call_expr_nargs (_p1) == 2)
8881 : {
8882 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8883 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8884 0 : {
8885 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8886 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
8887 0 : if (res) return res;
8888 : }
8889 : }
8890 : break;
8891 0 : case CFN_BUILT_IN_LDEXPL:
8892 0 : if (call_expr_nargs (_p1) == 2)
8893 : {
8894 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8895 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8896 0 : {
8897 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8898 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
8899 0 : if (res) return res;
8900 : }
8901 : }
8902 : break;
8903 0 : case CFN_LDEXP:
8904 0 : if (call_expr_nargs (_p1) == 2)
8905 : {
8906 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8907 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8908 0 : {
8909 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8910 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_LDEXP);
8911 0 : if (res) return res;
8912 : }
8913 : }
8914 : break;
8915 0 : case CFN_BUILT_IN_LDEXP:
8916 0 : if (call_expr_nargs (_p1) == 2)
8917 : {
8918 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8919 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8920 0 : {
8921 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8922 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
8923 0 : if (res) return res;
8924 : }
8925 : }
8926 : break;
8927 : default:;
8928 : }
8929 : break;
8930 : default:;
8931 : }
8932 : break;
8933 : }
8934 2501775 : case CALL_EXPR:
8935 2501775 : switch (get_call_combined_fn (_p0))
8936 : {
8937 55 : case CFN_BUILT_IN_SQRTF:
8938 55 : if (call_expr_nargs (_p0) == 1)
8939 : {
8940 55 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8941 55 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8942 : {
8943 0 : {
8944 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8945 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
8946 0 : if (res) return res;
8947 : }
8948 : }
8949 55 : switch (TREE_CODE (_p1))
8950 : {
8951 13 : case CALL_EXPR:
8952 13 : switch (get_call_combined_fn (_p1))
8953 : {
8954 13 : case CFN_BUILT_IN_SQRTF:
8955 13 : if (call_expr_nargs (_p1) == 1)
8956 : {
8957 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8958 13 : {
8959 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8960 13 : if (flag_unsafe_math_optimizations
8961 : )
8962 : {
8963 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1455;
8964 13 : {
8965 13 : tree res_op0;
8966 13 : {
8967 13 : tree _o1[2], _r1;
8968 13 : _o1[0] = captures[1];
8969 13 : _o1[1] = captures[3];
8970 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8971 13 : res_op0 = _r1;
8972 : }
8973 13 : tree _r;
8974 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, type, 1, res_op0);
8975 13 : if (!_r)
8976 0 : goto next_after_fail1455;
8977 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
8978 13 : return _r;
8979 : }
8980 0 : next_after_fail1455:;
8981 : }
8982 : }
8983 : }
8984 : break;
8985 : default:;
8986 : }
8987 : break;
8988 : default:;
8989 : }
8990 : }
8991 : break;
8992 48 : case CFN_BUILT_IN_SQRTL:
8993 48 : if (call_expr_nargs (_p0) == 1)
8994 : {
8995 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8996 48 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8997 : {
8998 0 : {
8999 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9000 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
9001 0 : if (res) return res;
9002 : }
9003 : }
9004 48 : switch (TREE_CODE (_p1))
9005 : {
9006 13 : case CALL_EXPR:
9007 13 : switch (get_call_combined_fn (_p1))
9008 : {
9009 13 : case CFN_BUILT_IN_SQRTL:
9010 13 : if (call_expr_nargs (_p1) == 1)
9011 : {
9012 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9013 13 : {
9014 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9015 13 : if (flag_unsafe_math_optimizations
9016 : )
9017 : {
9018 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1456;
9019 13 : {
9020 13 : tree res_op0;
9021 13 : {
9022 13 : tree _o1[2], _r1;
9023 13 : _o1[0] = captures[1];
9024 13 : _o1[1] = captures[3];
9025 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9026 13 : res_op0 = _r1;
9027 : }
9028 13 : tree _r;
9029 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, type, 1, res_op0);
9030 13 : if (!_r)
9031 0 : goto next_after_fail1456;
9032 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
9033 13 : return _r;
9034 : }
9035 0 : next_after_fail1456:;
9036 : }
9037 : }
9038 : }
9039 : break;
9040 : default:;
9041 : }
9042 : break;
9043 : default:;
9044 : }
9045 : }
9046 : break;
9047 287 : case CFN_BUILT_IN_EXP:
9048 287 : if (call_expr_nargs (_p0) == 1)
9049 : {
9050 287 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9051 287 : switch (TREE_CODE (_p1))
9052 : {
9053 81 : case CALL_EXPR:
9054 81 : switch (get_call_combined_fn (_p1))
9055 : {
9056 31 : case CFN_BUILT_IN_EXP:
9057 31 : if (call_expr_nargs (_p1) == 1)
9058 : {
9059 31 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9060 31 : {
9061 31 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9062 31 : if (flag_unsafe_math_optimizations
9063 : )
9064 : {
9065 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1457;
9066 27 : {
9067 27 : tree res_op0;
9068 27 : {
9069 27 : tree _o1[2], _r1;
9070 27 : _o1[0] = captures[1];
9071 27 : _o1[1] = captures[3];
9072 27 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9073 27 : res_op0 = _r1;
9074 : }
9075 27 : tree _r;
9076 27 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9077 27 : if (!_r)
9078 0 : goto next_after_fail1457;
9079 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9080 27 : return _r;
9081 : }
9082 4 : next_after_fail1457:;
9083 : }
9084 : }
9085 : }
9086 : break;
9087 0 : case CFN_BUILT_IN_POW:
9088 0 : if (call_expr_nargs (_p1) == 2)
9089 : {
9090 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9091 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9092 0 : switch (TREE_CODE (_q40))
9093 : {
9094 0 : case REAL_CST:
9095 0 : {
9096 0 : {
9097 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9098 0 : if (flag_unsafe_math_optimizations
9099 : )
9100 : {
9101 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9102 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9103 : )
9104 : {
9105 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1458;
9106 0 : {
9107 0 : tree res_op0;
9108 0 : {
9109 0 : tree _o1[2], _r1;
9110 0 : {
9111 0 : tree _o2[2], _r2;
9112 0 : {
9113 0 : tree _o3[1], _r3;
9114 0 : _o3[0] = captures[1];
9115 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9116 0 : if (!_r3)
9117 0 : goto next_after_fail1458;
9118 0 : _o2[0] = _r3;
9119 : }
9120 0 : _o2[1] = captures[2];
9121 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9122 0 : _o1[0] = _r2;
9123 : }
9124 0 : _o1[1] = captures[4];
9125 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9126 0 : res_op0 = _r1;
9127 : }
9128 0 : tree _r;
9129 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9130 0 : if (!_r)
9131 0 : goto next_after_fail1458;
9132 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9133 0 : return _r;
9134 : }
9135 0 : next_after_fail1458:;
9136 : }
9137 : }
9138 : }
9139 0 : break;
9140 : }
9141 : default:;
9142 : }
9143 : }
9144 : break;
9145 : default:;
9146 : }
9147 : break;
9148 : default:;
9149 : }
9150 : }
9151 : break;
9152 123 : case CFN_BUILT_IN_POW:
9153 123 : if (call_expr_nargs (_p0) == 2)
9154 : {
9155 123 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9156 123 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9157 123 : switch (TREE_CODE (_q20))
9158 : {
9159 1 : case REAL_CST:
9160 1 : {
9161 1 : switch (TREE_CODE (_p1))
9162 : {
9163 1 : case CALL_EXPR:
9164 1 : switch (get_call_combined_fn (_p1))
9165 : {
9166 0 : case CFN_BUILT_IN_EXP:
9167 0 : if (call_expr_nargs (_p1) == 1)
9168 : {
9169 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9170 0 : {
9171 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9172 0 : if (flag_unsafe_math_optimizations
9173 : )
9174 : {
9175 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9176 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9177 : )
9178 : {
9179 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1459;
9180 0 : {
9181 0 : tree res_op0;
9182 0 : {
9183 0 : tree _o1[2], _r1;
9184 0 : {
9185 0 : tree _o2[2], _r2;
9186 0 : {
9187 0 : tree _o3[1], _r3;
9188 0 : _o3[0] = captures[1];
9189 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9190 0 : if (!_r3)
9191 0 : goto next_after_fail1459;
9192 0 : _o2[0] = _r3;
9193 : }
9194 0 : _o2[1] = captures[2];
9195 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9196 0 : _o1[0] = _r2;
9197 : }
9198 0 : _o1[1] = captures[4];
9199 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9200 0 : res_op0 = _r1;
9201 : }
9202 0 : tree _r;
9203 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9204 0 : if (!_r)
9205 0 : goto next_after_fail1459;
9206 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9207 0 : return _r;
9208 : }
9209 0 : next_after_fail1459:;
9210 : }
9211 : }
9212 : }
9213 : }
9214 : break;
9215 0 : case CFN_BUILT_IN_EXP2:
9216 0 : if (call_expr_nargs (_p1) == 1)
9217 : {
9218 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9219 0 : {
9220 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9221 0 : if (flag_unsafe_math_optimizations
9222 : )
9223 : {
9224 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9225 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9226 : )
9227 : {
9228 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1460;
9229 0 : {
9230 0 : tree res_op0;
9231 0 : {
9232 0 : tree _o1[2], _r1;
9233 0 : {
9234 0 : tree _o2[2], _r2;
9235 0 : {
9236 0 : tree _o3[1], _r3;
9237 0 : _o3[0] = captures[1];
9238 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9239 0 : if (!_r3)
9240 0 : goto next_after_fail1460;
9241 0 : _o2[0] = _r3;
9242 : }
9243 0 : _o2[1] = captures[2];
9244 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9245 0 : _o1[0] = _r2;
9246 : }
9247 0 : _o1[1] = captures[4];
9248 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9249 0 : res_op0 = _r1;
9250 : }
9251 0 : tree _r;
9252 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9253 0 : if (!_r)
9254 0 : goto next_after_fail1460;
9255 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9256 0 : return _r;
9257 : }
9258 0 : next_after_fail1460:;
9259 : }
9260 : }
9261 : }
9262 : }
9263 : break;
9264 0 : case CFN_BUILT_IN_EXP10:
9265 0 : if (call_expr_nargs (_p1) == 1)
9266 : {
9267 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9268 0 : {
9269 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9270 0 : if (flag_unsafe_math_optimizations
9271 : )
9272 : {
9273 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9274 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9275 : )
9276 : {
9277 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1461;
9278 0 : {
9279 0 : tree res_op0;
9280 0 : {
9281 0 : tree _o1[2], _r1;
9282 0 : {
9283 0 : tree _o2[2], _r2;
9284 0 : {
9285 0 : tree _o3[1], _r3;
9286 0 : _o3[0] = captures[1];
9287 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9288 0 : if (!_r3)
9289 0 : goto next_after_fail1461;
9290 0 : _o2[0] = _r3;
9291 : }
9292 0 : _o2[1] = captures[2];
9293 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9294 0 : _o1[0] = _r2;
9295 : }
9296 0 : _o1[1] = captures[4];
9297 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9298 0 : res_op0 = _r1;
9299 : }
9300 0 : tree _r;
9301 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
9302 0 : if (!_r)
9303 0 : goto next_after_fail1461;
9304 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9305 0 : return _r;
9306 : }
9307 0 : next_after_fail1461:;
9308 : }
9309 : }
9310 : }
9311 : }
9312 : break;
9313 0 : case CFN_BUILT_IN_POW10:
9314 0 : if (call_expr_nargs (_p1) == 1)
9315 : {
9316 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9317 0 : {
9318 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9319 0 : if (flag_unsafe_math_optimizations
9320 : )
9321 : {
9322 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9323 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9324 : )
9325 : {
9326 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1462;
9327 0 : {
9328 0 : tree res_op0;
9329 0 : {
9330 0 : tree _o1[2], _r1;
9331 0 : {
9332 0 : tree _o2[2], _r2;
9333 0 : {
9334 0 : tree _o3[1], _r3;
9335 0 : _o3[0] = captures[1];
9336 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9337 0 : if (!_r3)
9338 0 : goto next_after_fail1462;
9339 0 : _o2[0] = _r3;
9340 : }
9341 0 : _o2[1] = captures[2];
9342 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9343 0 : _o1[0] = _r2;
9344 : }
9345 0 : _o1[1] = captures[4];
9346 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9347 0 : res_op0 = _r1;
9348 : }
9349 0 : tree _r;
9350 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
9351 0 : if (!_r)
9352 0 : goto next_after_fail1462;
9353 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9354 0 : return _r;
9355 : }
9356 0 : next_after_fail1462:;
9357 : }
9358 : }
9359 : }
9360 : }
9361 : break;
9362 : default:;
9363 : }
9364 : break;
9365 : default:;
9366 : }
9367 : break;
9368 : }
9369 123 : default:;
9370 : }
9371 123 : switch (TREE_CODE (_q21))
9372 : {
9373 12 : case REAL_CST:
9374 12 : {
9375 12 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9376 : {
9377 8 : {
9378 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
9379 8 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
9380 8 : if (res) return res;
9381 : }
9382 : }
9383 : break;
9384 : }
9385 : default:;
9386 : }
9387 : }
9388 : break;
9389 48 : case CFN_BUILT_IN_EXP10F:
9390 48 : if (call_expr_nargs (_p0) == 1)
9391 : {
9392 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9393 48 : switch (TREE_CODE (_p1))
9394 : {
9395 24 : case CALL_EXPR:
9396 24 : switch (get_call_combined_fn (_p1))
9397 : {
9398 24 : case CFN_BUILT_IN_EXP10F:
9399 24 : if (call_expr_nargs (_p1) == 1)
9400 : {
9401 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9402 24 : {
9403 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9404 24 : if (flag_unsafe_math_optimizations
9405 : )
9406 : {
9407 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1463;
9408 24 : {
9409 24 : tree res_op0;
9410 24 : {
9411 24 : tree _o1[2], _r1;
9412 24 : _o1[0] = captures[1];
9413 24 : _o1[1] = captures[3];
9414 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9415 24 : res_op0 = _r1;
9416 : }
9417 24 : tree _r;
9418 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9419 24 : if (!_r)
9420 0 : goto next_after_fail1463;
9421 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9422 24 : return _r;
9423 : }
9424 0 : next_after_fail1463:;
9425 : }
9426 : }
9427 : }
9428 : break;
9429 0 : case CFN_BUILT_IN_POWF:
9430 0 : if (call_expr_nargs (_p1) == 2)
9431 : {
9432 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9433 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9434 0 : switch (TREE_CODE (_q40))
9435 : {
9436 0 : case REAL_CST:
9437 0 : {
9438 0 : {
9439 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9440 0 : if (flag_unsafe_math_optimizations
9441 : )
9442 : {
9443 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9444 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9445 : )
9446 : {
9447 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1464;
9448 0 : {
9449 0 : tree res_op0;
9450 0 : {
9451 0 : tree _o1[2], _r1;
9452 0 : {
9453 0 : tree _o2[2], _r2;
9454 0 : {
9455 0 : tree _o3[1], _r3;
9456 0 : _o3[0] = captures[1];
9457 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9458 0 : if (!_r3)
9459 0 : goto next_after_fail1464;
9460 0 : _o2[0] = _r3;
9461 : }
9462 0 : _o2[1] = captures[2];
9463 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9464 0 : _o1[0] = _r2;
9465 : }
9466 0 : _o1[1] = captures[4];
9467 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9468 0 : res_op0 = _r1;
9469 : }
9470 0 : tree _r;
9471 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9472 0 : if (!_r)
9473 0 : goto next_after_fail1464;
9474 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9475 0 : return _r;
9476 : }
9477 0 : next_after_fail1464:;
9478 : }
9479 : }
9480 : }
9481 0 : break;
9482 : }
9483 : default:;
9484 : }
9485 : }
9486 : break;
9487 : default:;
9488 : }
9489 : break;
9490 : default:;
9491 : }
9492 : }
9493 : break;
9494 48 : case CFN_BUILT_IN_EXP10L:
9495 48 : if (call_expr_nargs (_p0) == 1)
9496 : {
9497 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9498 48 : switch (TREE_CODE (_p1))
9499 : {
9500 24 : case CALL_EXPR:
9501 24 : switch (get_call_combined_fn (_p1))
9502 : {
9503 24 : case CFN_BUILT_IN_EXP10L:
9504 24 : if (call_expr_nargs (_p1) == 1)
9505 : {
9506 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9507 24 : {
9508 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9509 24 : if (flag_unsafe_math_optimizations
9510 : )
9511 : {
9512 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1465;
9513 24 : {
9514 24 : tree res_op0;
9515 24 : {
9516 24 : tree _o1[2], _r1;
9517 24 : _o1[0] = captures[1];
9518 24 : _o1[1] = captures[3];
9519 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9520 24 : res_op0 = _r1;
9521 : }
9522 24 : tree _r;
9523 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9524 24 : if (!_r)
9525 0 : goto next_after_fail1465;
9526 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9527 24 : return _r;
9528 : }
9529 0 : next_after_fail1465:;
9530 : }
9531 : }
9532 : }
9533 : break;
9534 0 : case CFN_BUILT_IN_POWL:
9535 0 : if (call_expr_nargs (_p1) == 2)
9536 : {
9537 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9538 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9539 0 : switch (TREE_CODE (_q40))
9540 : {
9541 0 : case REAL_CST:
9542 0 : {
9543 0 : {
9544 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9545 0 : if (flag_unsafe_math_optimizations
9546 : )
9547 : {
9548 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9549 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9550 : )
9551 : {
9552 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1466;
9553 0 : {
9554 0 : tree res_op0;
9555 0 : {
9556 0 : tree _o1[2], _r1;
9557 0 : {
9558 0 : tree _o2[2], _r2;
9559 0 : {
9560 0 : tree _o3[1], _r3;
9561 0 : _o3[0] = captures[1];
9562 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
9563 0 : if (!_r3)
9564 0 : goto next_after_fail1466;
9565 0 : _o2[0] = _r3;
9566 : }
9567 0 : _o2[1] = captures[2];
9568 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9569 0 : _o1[0] = _r2;
9570 : }
9571 0 : _o1[1] = captures[4];
9572 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9573 0 : res_op0 = _r1;
9574 : }
9575 0 : tree _r;
9576 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9577 0 : if (!_r)
9578 0 : goto next_after_fail1466;
9579 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9580 0 : return _r;
9581 : }
9582 0 : next_after_fail1466:;
9583 : }
9584 : }
9585 : }
9586 0 : break;
9587 : }
9588 : default:;
9589 : }
9590 : }
9591 : break;
9592 : default:;
9593 : }
9594 : break;
9595 : default:;
9596 : }
9597 : }
9598 : break;
9599 18 : case CFN_BUILT_IN_CBRT:
9600 18 : if (call_expr_nargs (_p0) == 1)
9601 : {
9602 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9603 18 : switch (TREE_CODE (_p1))
9604 : {
9605 14 : case CALL_EXPR:
9606 14 : switch (get_call_combined_fn (_p1))
9607 : {
9608 14 : case CFN_BUILT_IN_CBRT:
9609 14 : if (call_expr_nargs (_p1) == 1)
9610 : {
9611 14 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9612 14 : {
9613 14 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9614 14 : if (flag_unsafe_math_optimizations
9615 : )
9616 : {
9617 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1467;
9618 12 : {
9619 12 : tree res_op0;
9620 12 : {
9621 12 : tree _o1[2], _r1;
9622 12 : _o1[0] = captures[1];
9623 12 : _o1[1] = captures[3];
9624 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9625 12 : res_op0 = _r1;
9626 : }
9627 12 : tree _r;
9628 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, type, 1, res_op0);
9629 12 : if (!_r)
9630 0 : goto next_after_fail1467;
9631 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
9632 12 : return _r;
9633 : }
9634 2 : next_after_fail1467:;
9635 : }
9636 : }
9637 : }
9638 : break;
9639 : default:;
9640 : }
9641 : break;
9642 : default:;
9643 : }
9644 : }
9645 : break;
9646 48 : case CFN_BUILT_IN_EXP2:
9647 48 : if (call_expr_nargs (_p0) == 1)
9648 : {
9649 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9650 48 : switch (TREE_CODE (_p1))
9651 : {
9652 24 : case CALL_EXPR:
9653 24 : switch (get_call_combined_fn (_p1))
9654 : {
9655 0 : case CFN_BUILT_IN_POW:
9656 0 : if (call_expr_nargs (_p1) == 2)
9657 : {
9658 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9659 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9660 0 : switch (TREE_CODE (_q40))
9661 : {
9662 0 : case REAL_CST:
9663 0 : {
9664 0 : {
9665 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9666 0 : if (flag_unsafe_math_optimizations
9667 : )
9668 : {
9669 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9670 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9671 : )
9672 : {
9673 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1468;
9674 0 : {
9675 0 : tree res_op0;
9676 0 : {
9677 0 : tree _o1[2], _r1;
9678 0 : {
9679 0 : tree _o2[2], _r2;
9680 0 : {
9681 0 : tree _o3[1], _r3;
9682 0 : _o3[0] = captures[1];
9683 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9684 0 : if (!_r3)
9685 0 : goto next_after_fail1468;
9686 0 : _o2[0] = _r3;
9687 : }
9688 0 : _o2[1] = captures[2];
9689 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9690 0 : _o1[0] = _r2;
9691 : }
9692 0 : _o1[1] = captures[4];
9693 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9694 0 : res_op0 = _r1;
9695 : }
9696 0 : tree _r;
9697 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9698 0 : if (!_r)
9699 0 : goto next_after_fail1468;
9700 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9701 0 : return _r;
9702 : }
9703 0 : next_after_fail1468:;
9704 : }
9705 : }
9706 : }
9707 0 : break;
9708 : }
9709 : default:;
9710 : }
9711 : }
9712 : break;
9713 24 : case CFN_BUILT_IN_EXP2:
9714 24 : if (call_expr_nargs (_p1) == 1)
9715 : {
9716 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9717 24 : {
9718 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9719 24 : if (flag_unsafe_math_optimizations
9720 : )
9721 : {
9722 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1469;
9723 24 : {
9724 24 : tree res_op0;
9725 24 : {
9726 24 : tree _o1[2], _r1;
9727 24 : _o1[0] = captures[1];
9728 24 : _o1[1] = captures[3];
9729 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9730 24 : res_op0 = _r1;
9731 : }
9732 24 : tree _r;
9733 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9734 24 : if (!_r)
9735 0 : goto next_after_fail1469;
9736 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9737 24 : return _r;
9738 : }
9739 0 : next_after_fail1469:;
9740 : }
9741 : }
9742 : }
9743 : break;
9744 : default:;
9745 : }
9746 : break;
9747 : default:;
9748 : }
9749 : }
9750 : break;
9751 66 : case CFN_BUILT_IN_EXPF:
9752 66 : if (call_expr_nargs (_p0) == 1)
9753 : {
9754 66 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9755 66 : switch (TREE_CODE (_p1))
9756 : {
9757 36 : case CALL_EXPR:
9758 36 : switch (get_call_combined_fn (_p1))
9759 : {
9760 29 : case CFN_BUILT_IN_EXPF:
9761 29 : if (call_expr_nargs (_p1) == 1)
9762 : {
9763 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9764 29 : {
9765 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9766 29 : if (flag_unsafe_math_optimizations
9767 : )
9768 : {
9769 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1470;
9770 25 : {
9771 25 : tree res_op0;
9772 25 : {
9773 25 : tree _o1[2], _r1;
9774 25 : _o1[0] = captures[1];
9775 25 : _o1[1] = captures[3];
9776 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9777 25 : res_op0 = _r1;
9778 : }
9779 25 : tree _r;
9780 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9781 25 : if (!_r)
9782 0 : goto next_after_fail1470;
9783 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9784 25 : return _r;
9785 : }
9786 4 : next_after_fail1470:;
9787 : }
9788 : }
9789 : }
9790 : break;
9791 0 : case CFN_BUILT_IN_POWF:
9792 0 : if (call_expr_nargs (_p1) == 2)
9793 : {
9794 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9795 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9796 0 : switch (TREE_CODE (_q40))
9797 : {
9798 0 : case REAL_CST:
9799 0 : {
9800 0 : {
9801 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9802 0 : if (flag_unsafe_math_optimizations
9803 : )
9804 : {
9805 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9806 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9807 : )
9808 : {
9809 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1471;
9810 0 : {
9811 0 : tree res_op0;
9812 0 : {
9813 0 : tree _o1[2], _r1;
9814 0 : {
9815 0 : tree _o2[2], _r2;
9816 0 : {
9817 0 : tree _o3[1], _r3;
9818 0 : _o3[0] = captures[1];
9819 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
9820 0 : if (!_r3)
9821 0 : goto next_after_fail1471;
9822 0 : _o2[0] = _r3;
9823 : }
9824 0 : _o2[1] = captures[2];
9825 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9826 0 : _o1[0] = _r2;
9827 : }
9828 0 : _o1[1] = captures[4];
9829 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9830 0 : res_op0 = _r1;
9831 : }
9832 0 : tree _r;
9833 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9834 0 : if (!_r)
9835 0 : goto next_after_fail1471;
9836 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9837 0 : return _r;
9838 : }
9839 0 : next_after_fail1471:;
9840 : }
9841 : }
9842 : }
9843 0 : break;
9844 : }
9845 : default:;
9846 : }
9847 : }
9848 : break;
9849 : default:;
9850 : }
9851 : break;
9852 : default:;
9853 : }
9854 : }
9855 : break;
9856 59 : case CFN_BUILT_IN_EXPL:
9857 59 : if (call_expr_nargs (_p0) == 1)
9858 : {
9859 59 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9860 59 : switch (TREE_CODE (_p1))
9861 : {
9862 29 : case CALL_EXPR:
9863 29 : switch (get_call_combined_fn (_p1))
9864 : {
9865 29 : case CFN_BUILT_IN_EXPL:
9866 29 : if (call_expr_nargs (_p1) == 1)
9867 : {
9868 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9869 29 : {
9870 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9871 29 : if (flag_unsafe_math_optimizations
9872 : )
9873 : {
9874 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1472;
9875 25 : {
9876 25 : tree res_op0;
9877 25 : {
9878 25 : tree _o1[2], _r1;
9879 25 : _o1[0] = captures[1];
9880 25 : _o1[1] = captures[3];
9881 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9882 25 : res_op0 = _r1;
9883 : }
9884 25 : tree _r;
9885 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9886 25 : if (!_r)
9887 0 : goto next_after_fail1472;
9888 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9889 25 : return _r;
9890 : }
9891 4 : next_after_fail1472:;
9892 : }
9893 : }
9894 : }
9895 : break;
9896 0 : case CFN_BUILT_IN_POWL:
9897 0 : if (call_expr_nargs (_p1) == 2)
9898 : {
9899 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9900 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9901 0 : switch (TREE_CODE (_q40))
9902 : {
9903 0 : case REAL_CST:
9904 0 : {
9905 0 : {
9906 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9907 0 : if (flag_unsafe_math_optimizations
9908 : )
9909 : {
9910 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9911 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9912 : )
9913 : {
9914 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1473;
9915 0 : {
9916 0 : tree res_op0;
9917 0 : {
9918 0 : tree _o1[2], _r1;
9919 0 : {
9920 0 : tree _o2[2], _r2;
9921 0 : {
9922 0 : tree _o3[1], _r3;
9923 0 : _o3[0] = captures[1];
9924 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
9925 0 : if (!_r3)
9926 0 : goto next_after_fail1473;
9927 0 : _o2[0] = _r3;
9928 : }
9929 0 : _o2[1] = captures[2];
9930 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9931 0 : _o1[0] = _r2;
9932 : }
9933 0 : _o1[1] = captures[4];
9934 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9935 0 : res_op0 = _r1;
9936 : }
9937 0 : tree _r;
9938 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9939 0 : if (!_r)
9940 0 : goto next_after_fail1473;
9941 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9942 0 : return _r;
9943 : }
9944 0 : next_after_fail1473:;
9945 : }
9946 : }
9947 : }
9948 0 : break;
9949 : }
9950 : default:;
9951 : }
9952 : }
9953 : break;
9954 : default:;
9955 : }
9956 : break;
9957 : default:;
9958 : }
9959 : }
9960 : break;
9961 19 : case CFN_BUILT_IN_POWF:
9962 19 : if (call_expr_nargs (_p0) == 2)
9963 : {
9964 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9965 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9966 19 : switch (TREE_CODE (_q20))
9967 : {
9968 0 : case REAL_CST:
9969 0 : {
9970 0 : switch (TREE_CODE (_p1))
9971 : {
9972 0 : case CALL_EXPR:
9973 0 : switch (get_call_combined_fn (_p1))
9974 : {
9975 0 : case CFN_BUILT_IN_EXP10F:
9976 0 : if (call_expr_nargs (_p1) == 1)
9977 : {
9978 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9979 0 : {
9980 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9981 0 : if (flag_unsafe_math_optimizations
9982 : )
9983 : {
9984 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9985 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9986 : )
9987 : {
9988 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1474;
9989 0 : {
9990 0 : tree res_op0;
9991 0 : {
9992 0 : tree _o1[2], _r1;
9993 0 : {
9994 0 : tree _o2[2], _r2;
9995 0 : {
9996 0 : tree _o3[1], _r3;
9997 0 : _o3[0] = captures[1];
9998 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9999 0 : if (!_r3)
10000 0 : goto next_after_fail1474;
10001 0 : _o2[0] = _r3;
10002 : }
10003 0 : _o2[1] = captures[2];
10004 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10005 0 : _o1[0] = _r2;
10006 : }
10007 0 : _o1[1] = captures[4];
10008 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10009 0 : res_op0 = _r1;
10010 : }
10011 0 : tree _r;
10012 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
10013 0 : if (!_r)
10014 0 : goto next_after_fail1474;
10015 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10016 0 : return _r;
10017 : }
10018 0 : next_after_fail1474:;
10019 : }
10020 : }
10021 : }
10022 : }
10023 : break;
10024 0 : case CFN_BUILT_IN_EXPF:
10025 0 : if (call_expr_nargs (_p1) == 1)
10026 : {
10027 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10028 0 : {
10029 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10030 0 : if (flag_unsafe_math_optimizations
10031 : )
10032 : {
10033 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10034 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10035 : )
10036 : {
10037 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1475;
10038 0 : {
10039 0 : tree res_op0;
10040 0 : {
10041 0 : tree _o1[2], _r1;
10042 0 : {
10043 0 : tree _o2[2], _r2;
10044 0 : {
10045 0 : tree _o3[1], _r3;
10046 0 : _o3[0] = captures[1];
10047 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
10048 0 : if (!_r3)
10049 0 : goto next_after_fail1475;
10050 0 : _o2[0] = _r3;
10051 : }
10052 0 : _o2[1] = captures[2];
10053 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10054 0 : _o1[0] = _r2;
10055 : }
10056 0 : _o1[1] = captures[4];
10057 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10058 0 : res_op0 = _r1;
10059 : }
10060 0 : tree _r;
10061 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
10062 0 : if (!_r)
10063 0 : goto next_after_fail1475;
10064 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10065 0 : return _r;
10066 : }
10067 0 : next_after_fail1475:;
10068 : }
10069 : }
10070 : }
10071 : }
10072 : break;
10073 0 : case CFN_BUILT_IN_POW10F:
10074 0 : if (call_expr_nargs (_p1) == 1)
10075 : {
10076 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10077 0 : {
10078 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10079 0 : if (flag_unsafe_math_optimizations
10080 : )
10081 : {
10082 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10083 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10084 : )
10085 : {
10086 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1476;
10087 0 : {
10088 0 : tree res_op0;
10089 0 : {
10090 0 : tree _o1[2], _r1;
10091 0 : {
10092 0 : tree _o2[2], _r2;
10093 0 : {
10094 0 : tree _o3[1], _r3;
10095 0 : _o3[0] = captures[1];
10096 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10097 0 : if (!_r3)
10098 0 : goto next_after_fail1476;
10099 0 : _o2[0] = _r3;
10100 : }
10101 0 : _o2[1] = captures[2];
10102 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10103 0 : _o1[0] = _r2;
10104 : }
10105 0 : _o1[1] = captures[4];
10106 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10107 0 : res_op0 = _r1;
10108 : }
10109 0 : tree _r;
10110 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10111 0 : if (!_r)
10112 0 : goto next_after_fail1476;
10113 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10114 0 : return _r;
10115 : }
10116 0 : next_after_fail1476:;
10117 : }
10118 : }
10119 : }
10120 : }
10121 : break;
10122 0 : case CFN_BUILT_IN_EXP2F:
10123 0 : if (call_expr_nargs (_p1) == 1)
10124 : {
10125 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10126 0 : {
10127 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10128 0 : if (flag_unsafe_math_optimizations
10129 : )
10130 : {
10131 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10132 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10133 : )
10134 : {
10135 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1477;
10136 0 : {
10137 0 : tree res_op0;
10138 0 : {
10139 0 : tree _o1[2], _r1;
10140 0 : {
10141 0 : tree _o2[2], _r2;
10142 0 : {
10143 0 : tree _o3[1], _r3;
10144 0 : _o3[0] = captures[1];
10145 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10146 0 : if (!_r3)
10147 0 : goto next_after_fail1477;
10148 0 : _o2[0] = _r3;
10149 : }
10150 0 : _o2[1] = captures[2];
10151 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10152 0 : _o1[0] = _r2;
10153 : }
10154 0 : _o1[1] = captures[4];
10155 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10156 0 : res_op0 = _r1;
10157 : }
10158 0 : tree _r;
10159 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
10160 0 : if (!_r)
10161 0 : goto next_after_fail1477;
10162 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10163 0 : return _r;
10164 : }
10165 0 : next_after_fail1477:;
10166 : }
10167 : }
10168 : }
10169 : }
10170 : break;
10171 : default:;
10172 : }
10173 : break;
10174 : default:;
10175 : }
10176 : break;
10177 : }
10178 19 : default:;
10179 : }
10180 19 : switch (TREE_CODE (_q21))
10181 : {
10182 5 : case REAL_CST:
10183 5 : {
10184 5 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10185 : {
10186 0 : {
10187 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10188 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
10189 0 : if (res) return res;
10190 : }
10191 : }
10192 : break;
10193 : }
10194 : default:;
10195 : }
10196 : }
10197 : break;
10198 12 : case CFN_BUILT_IN_POWL:
10199 12 : if (call_expr_nargs (_p0) == 2)
10200 : {
10201 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10202 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10203 12 : switch (TREE_CODE (_q20))
10204 : {
10205 0 : case REAL_CST:
10206 0 : {
10207 0 : switch (TREE_CODE (_p1))
10208 : {
10209 0 : case CALL_EXPR:
10210 0 : switch (get_call_combined_fn (_p1))
10211 : {
10212 0 : case CFN_BUILT_IN_EXP10L:
10213 0 : if (call_expr_nargs (_p1) == 1)
10214 : {
10215 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10216 0 : {
10217 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10218 0 : if (flag_unsafe_math_optimizations
10219 : )
10220 : {
10221 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10222 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10223 : )
10224 : {
10225 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1478;
10226 0 : {
10227 0 : tree res_op0;
10228 0 : {
10229 0 : tree _o1[2], _r1;
10230 0 : {
10231 0 : tree _o2[2], _r2;
10232 0 : {
10233 0 : tree _o3[1], _r3;
10234 0 : _o3[0] = captures[1];
10235 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10236 0 : if (!_r3)
10237 0 : goto next_after_fail1478;
10238 0 : _o2[0] = _r3;
10239 : }
10240 0 : _o2[1] = captures[2];
10241 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10242 0 : _o1[0] = _r2;
10243 : }
10244 0 : _o1[1] = captures[4];
10245 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10246 0 : res_op0 = _r1;
10247 : }
10248 0 : tree _r;
10249 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
10250 0 : if (!_r)
10251 0 : goto next_after_fail1478;
10252 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10253 0 : return _r;
10254 : }
10255 0 : next_after_fail1478:;
10256 : }
10257 : }
10258 : }
10259 : }
10260 : break;
10261 0 : case CFN_BUILT_IN_EXPL:
10262 0 : if (call_expr_nargs (_p1) == 1)
10263 : {
10264 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10265 0 : {
10266 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10267 0 : if (flag_unsafe_math_optimizations
10268 : )
10269 : {
10270 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10271 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10272 : )
10273 : {
10274 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1479;
10275 0 : {
10276 0 : tree res_op0;
10277 0 : {
10278 0 : tree _o1[2], _r1;
10279 0 : {
10280 0 : tree _o2[2], _r2;
10281 0 : {
10282 0 : tree _o3[1], _r3;
10283 0 : _o3[0] = captures[1];
10284 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
10285 0 : if (!_r3)
10286 0 : goto next_after_fail1479;
10287 0 : _o2[0] = _r3;
10288 : }
10289 0 : _o2[1] = captures[2];
10290 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10291 0 : _o1[0] = _r2;
10292 : }
10293 0 : _o1[1] = captures[4];
10294 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10295 0 : res_op0 = _r1;
10296 : }
10297 0 : tree _r;
10298 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10299 0 : if (!_r)
10300 0 : goto next_after_fail1479;
10301 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10302 0 : return _r;
10303 : }
10304 0 : next_after_fail1479:;
10305 : }
10306 : }
10307 : }
10308 : }
10309 : break;
10310 0 : case CFN_BUILT_IN_POW10L:
10311 0 : if (call_expr_nargs (_p1) == 1)
10312 : {
10313 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10314 0 : {
10315 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10316 0 : if (flag_unsafe_math_optimizations
10317 : )
10318 : {
10319 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10320 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10321 : )
10322 : {
10323 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1480;
10324 0 : {
10325 0 : tree res_op0;
10326 0 : {
10327 0 : tree _o1[2], _r1;
10328 0 : {
10329 0 : tree _o2[2], _r2;
10330 0 : {
10331 0 : tree _o3[1], _r3;
10332 0 : _o3[0] = captures[1];
10333 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10334 0 : if (!_r3)
10335 0 : goto next_after_fail1480;
10336 0 : _o2[0] = _r3;
10337 : }
10338 0 : _o2[1] = captures[2];
10339 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10340 0 : _o1[0] = _r2;
10341 : }
10342 0 : _o1[1] = captures[4];
10343 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10344 0 : res_op0 = _r1;
10345 : }
10346 0 : tree _r;
10347 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10348 0 : if (!_r)
10349 0 : goto next_after_fail1480;
10350 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10351 0 : return _r;
10352 : }
10353 0 : next_after_fail1480:;
10354 : }
10355 : }
10356 : }
10357 : }
10358 : break;
10359 0 : case CFN_BUILT_IN_EXP2L:
10360 0 : if (call_expr_nargs (_p1) == 1)
10361 : {
10362 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10363 0 : {
10364 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10365 0 : if (flag_unsafe_math_optimizations
10366 : )
10367 : {
10368 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10369 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10370 : )
10371 : {
10372 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
10373 0 : {
10374 0 : tree res_op0;
10375 0 : {
10376 0 : tree _o1[2], _r1;
10377 0 : {
10378 0 : tree _o2[2], _r2;
10379 0 : {
10380 0 : tree _o3[1], _r3;
10381 0 : _o3[0] = captures[1];
10382 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10383 0 : if (!_r3)
10384 0 : goto next_after_fail1481;
10385 0 : _o2[0] = _r3;
10386 : }
10387 0 : _o2[1] = captures[2];
10388 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10389 0 : _o1[0] = _r2;
10390 : }
10391 0 : _o1[1] = captures[4];
10392 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10393 0 : res_op0 = _r1;
10394 : }
10395 0 : tree _r;
10396 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
10397 0 : if (!_r)
10398 0 : goto next_after_fail1481;
10399 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10400 0 : return _r;
10401 : }
10402 0 : next_after_fail1481:;
10403 : }
10404 : }
10405 : }
10406 : }
10407 : break;
10408 : default:;
10409 : }
10410 : break;
10411 : default:;
10412 : }
10413 : break;
10414 : }
10415 12 : default:;
10416 : }
10417 12 : switch (TREE_CODE (_q21))
10418 : {
10419 0 : case REAL_CST:
10420 0 : {
10421 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10422 : {
10423 0 : {
10424 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10425 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
10426 0 : if (res) return res;
10427 : }
10428 : }
10429 : break;
10430 : }
10431 : default:;
10432 : }
10433 : }
10434 : break;
10435 19615 : case CFN_BUILT_IN_SQRT:
10436 19615 : if (call_expr_nargs (_p0) == 1)
10437 : {
10438 19615 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10439 19615 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10440 : {
10441 2 : {
10442 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10443 2 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
10444 2 : if (res) return res;
10445 : }
10446 : }
10447 19613 : switch (TREE_CODE (_p1))
10448 : {
10449 100 : case CALL_EXPR:
10450 100 : switch (get_call_combined_fn (_p1))
10451 : {
10452 37 : case CFN_BUILT_IN_SQRT:
10453 37 : if (call_expr_nargs (_p1) == 1)
10454 : {
10455 37 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10456 37 : {
10457 37 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10458 37 : if (flag_unsafe_math_optimizations
10459 : )
10460 : {
10461 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1482;
10462 15 : {
10463 15 : tree res_op0;
10464 15 : {
10465 15 : tree _o1[2], _r1;
10466 15 : _o1[0] = captures[1];
10467 15 : _o1[1] = captures[3];
10468 15 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10469 15 : res_op0 = _r1;
10470 : }
10471 15 : tree _r;
10472 15 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, type, 1, res_op0);
10473 15 : if (!_r)
10474 0 : goto next_after_fail1482;
10475 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
10476 15 : return _r;
10477 : }
10478 22 : next_after_fail1482:;
10479 : }
10480 : }
10481 : }
10482 : break;
10483 : default:;
10484 : }
10485 : break;
10486 : default:;
10487 : }
10488 : }
10489 : break;
10490 5 : case CFN_BUILT_IN_LDEXPF:
10491 5 : if (call_expr_nargs (_p0) == 2)
10492 : {
10493 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10494 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10495 5 : switch (TREE_CODE (_p1))
10496 : {
10497 2 : case REAL_CST:
10498 2 : {
10499 2 : {
10500 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10501 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10502 2 : if (res) return res;
10503 : }
10504 1 : break;
10505 : }
10506 4 : default:;
10507 : }
10508 4 : switch (TREE_CODE (_q20))
10509 : {
10510 3 : case REAL_CST:
10511 3 : {
10512 3 : {
10513 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10514 3 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10515 3 : if (res) return res;
10516 : }
10517 0 : break;
10518 : }
10519 : default:;
10520 : }
10521 : }
10522 : break;
10523 5 : case CFN_BUILT_IN_LDEXPL:
10524 5 : if (call_expr_nargs (_p0) == 2)
10525 : {
10526 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10527 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10528 5 : switch (TREE_CODE (_p1))
10529 : {
10530 2 : case REAL_CST:
10531 2 : {
10532 2 : {
10533 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10534 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10535 2 : if (res) return res;
10536 : }
10537 1 : break;
10538 : }
10539 4 : default:;
10540 : }
10541 4 : switch (TREE_CODE (_q20))
10542 : {
10543 3 : case REAL_CST:
10544 3 : {
10545 3 : {
10546 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10547 3 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10548 3 : if (res) return res;
10549 : }
10550 0 : break;
10551 : }
10552 : default:;
10553 : }
10554 : }
10555 : break;
10556 4 : case CFN_BUILT_IN_SQRTF128:
10557 4 : if (call_expr_nargs (_p0) == 1)
10558 : {
10559 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10560 4 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10561 : {
10562 0 : {
10563 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10564 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128);
10565 0 : if (res) return res;
10566 : }
10567 : }
10568 : }
10569 : break;
10570 0 : case CFN_BUILT_IN_SQRTF32X:
10571 0 : if (call_expr_nargs (_p0) == 1)
10572 : {
10573 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10574 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10575 : {
10576 0 : {
10577 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10578 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32X);
10579 0 : if (res) return res;
10580 : }
10581 : }
10582 : }
10583 : break;
10584 0 : case CFN_BUILT_IN_SQRTF64X:
10585 0 : if (call_expr_nargs (_p0) == 1)
10586 : {
10587 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10588 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10589 : {
10590 0 : {
10591 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10592 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64X);
10593 0 : if (res) return res;
10594 : }
10595 : }
10596 : }
10597 : break;
10598 0 : case CFN_BUILT_IN_SQRTF16:
10599 0 : if (call_expr_nargs (_p0) == 1)
10600 : {
10601 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10602 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10603 : {
10604 0 : {
10605 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10606 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF16);
10607 0 : if (res) return res;
10608 : }
10609 : }
10610 : }
10611 : break;
10612 0 : case CFN_BUILT_IN_SQRTF32:
10613 0 : if (call_expr_nargs (_p0) == 1)
10614 : {
10615 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10616 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10617 : {
10618 0 : {
10619 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10620 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32);
10621 0 : if (res) return res;
10622 : }
10623 : }
10624 : }
10625 : break;
10626 0 : case CFN_BUILT_IN_SQRTF64:
10627 0 : if (call_expr_nargs (_p0) == 1)
10628 : {
10629 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10630 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10631 : {
10632 0 : {
10633 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10634 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64);
10635 0 : if (res) return res;
10636 : }
10637 : }
10638 : }
10639 : break;
10640 0 : case CFN_EXP:
10641 0 : if (call_expr_nargs (_p0) == 1)
10642 : {
10643 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10644 0 : switch (TREE_CODE (_p1))
10645 : {
10646 0 : case CALL_EXPR:
10647 0 : switch (get_call_combined_fn (_p1))
10648 : {
10649 0 : case CFN_EXP:
10650 0 : if (call_expr_nargs (_p1) == 1)
10651 : {
10652 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10653 0 : {
10654 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10655 0 : if (flag_unsafe_math_optimizations
10656 : )
10657 : {
10658 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1483;
10659 0 : {
10660 0 : tree res_op0;
10661 0 : {
10662 0 : tree _o1[2], _r1;
10663 0 : _o1[0] = captures[1];
10664 0 : _o1[1] = captures[3];
10665 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10666 0 : res_op0 = _r1;
10667 : }
10668 0 : tree _r;
10669 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10670 0 : if (!_r)
10671 0 : goto next_after_fail1483;
10672 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
10673 0 : return _r;
10674 : }
10675 0 : next_after_fail1483:;
10676 : }
10677 : }
10678 : }
10679 : break;
10680 0 : case CFN_POW:
10681 0 : if (call_expr_nargs (_p1) == 2)
10682 : {
10683 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10684 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10685 0 : switch (TREE_CODE (_q40))
10686 : {
10687 0 : case REAL_CST:
10688 0 : {
10689 0 : {
10690 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10691 0 : if (flag_unsafe_math_optimizations
10692 : )
10693 : {
10694 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10695 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10696 : )
10697 : {
10698 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1484;
10699 0 : {
10700 0 : tree res_op0;
10701 0 : {
10702 0 : tree _o1[2], _r1;
10703 0 : {
10704 0 : tree _o2[2], _r2;
10705 0 : {
10706 0 : tree _o3[1], _r3;
10707 0 : _o3[0] = captures[1];
10708 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10709 0 : if (!_r3)
10710 0 : goto next_after_fail1484;
10711 0 : _o2[0] = _r3;
10712 : }
10713 0 : _o2[1] = captures[2];
10714 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10715 0 : _o1[0] = _r2;
10716 : }
10717 0 : _o1[1] = captures[4];
10718 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10719 0 : res_op0 = _r1;
10720 : }
10721 0 : tree _r;
10722 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10723 0 : if (!_r)
10724 0 : goto next_after_fail1484;
10725 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10726 0 : return _r;
10727 : }
10728 0 : next_after_fail1484:;
10729 : }
10730 : }
10731 : }
10732 0 : break;
10733 : }
10734 : default:;
10735 : }
10736 : }
10737 : break;
10738 : default:;
10739 : }
10740 : break;
10741 : default:;
10742 : }
10743 : }
10744 : break;
10745 0 : case CFN_POW:
10746 0 : if (call_expr_nargs (_p0) == 2)
10747 : {
10748 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10749 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10750 0 : switch (TREE_CODE (_q20))
10751 : {
10752 0 : case REAL_CST:
10753 0 : {
10754 0 : switch (TREE_CODE (_p1))
10755 : {
10756 0 : case CALL_EXPR:
10757 0 : switch (get_call_combined_fn (_p1))
10758 : {
10759 0 : case CFN_EXP:
10760 0 : if (call_expr_nargs (_p1) == 1)
10761 : {
10762 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10763 0 : {
10764 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10765 0 : if (flag_unsafe_math_optimizations
10766 : )
10767 : {
10768 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10769 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10770 : )
10771 : {
10772 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1485;
10773 0 : {
10774 0 : tree res_op0;
10775 0 : {
10776 0 : tree _o1[2], _r1;
10777 0 : {
10778 0 : tree _o2[2], _r2;
10779 0 : {
10780 0 : tree _o3[1], _r3;
10781 0 : _o3[0] = captures[1];
10782 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10783 0 : if (!_r3)
10784 0 : goto next_after_fail1485;
10785 0 : _o2[0] = _r3;
10786 : }
10787 0 : _o2[1] = captures[2];
10788 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10789 0 : _o1[0] = _r2;
10790 : }
10791 0 : _o1[1] = captures[4];
10792 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10793 0 : res_op0 = _r1;
10794 : }
10795 0 : tree _r;
10796 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10797 0 : if (!_r)
10798 0 : goto next_after_fail1485;
10799 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10800 0 : return _r;
10801 : }
10802 0 : next_after_fail1485:;
10803 : }
10804 : }
10805 : }
10806 : }
10807 : break;
10808 0 : case CFN_EXP2:
10809 0 : if (call_expr_nargs (_p1) == 1)
10810 : {
10811 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10812 0 : {
10813 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10814 0 : if (flag_unsafe_math_optimizations
10815 : )
10816 : {
10817 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10818 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10819 : )
10820 : {
10821 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1486;
10822 0 : {
10823 0 : tree res_op0;
10824 0 : {
10825 0 : tree _o1[2], _r1;
10826 0 : {
10827 0 : tree _o2[2], _r2;
10828 0 : {
10829 0 : tree _o3[1], _r3;
10830 0 : _o3[0] = captures[1];
10831 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
10832 0 : if (!_r3)
10833 0 : goto next_after_fail1486;
10834 0 : _o2[0] = _r3;
10835 : }
10836 0 : _o2[1] = captures[2];
10837 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10838 0 : _o1[0] = _r2;
10839 : }
10840 0 : _o1[1] = captures[4];
10841 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10842 0 : res_op0 = _r1;
10843 : }
10844 0 : tree _r;
10845 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
10846 0 : if (!_r)
10847 0 : goto next_after_fail1486;
10848 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10849 0 : return _r;
10850 : }
10851 0 : next_after_fail1486:;
10852 : }
10853 : }
10854 : }
10855 : }
10856 : break;
10857 0 : case CFN_EXP10:
10858 0 : if (call_expr_nargs (_p1) == 1)
10859 : {
10860 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10861 0 : {
10862 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10863 0 : if (flag_unsafe_math_optimizations
10864 : )
10865 : {
10866 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10867 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10868 : )
10869 : {
10870 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1487;
10871 0 : {
10872 0 : tree res_op0;
10873 0 : {
10874 0 : tree _o1[2], _r1;
10875 0 : {
10876 0 : tree _o2[2], _r2;
10877 0 : {
10878 0 : tree _o3[1], _r3;
10879 0 : _o3[0] = captures[1];
10880 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
10881 0 : if (!_r3)
10882 0 : goto next_after_fail1487;
10883 0 : _o2[0] = _r3;
10884 : }
10885 0 : _o2[1] = captures[2];
10886 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10887 0 : _o1[0] = _r2;
10888 : }
10889 0 : _o1[1] = captures[4];
10890 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10891 0 : res_op0 = _r1;
10892 : }
10893 0 : tree _r;
10894 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
10895 0 : if (!_r)
10896 0 : goto next_after_fail1487;
10897 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10898 0 : return _r;
10899 : }
10900 0 : next_after_fail1487:;
10901 : }
10902 : }
10903 : }
10904 : }
10905 : break;
10906 : default:;
10907 : }
10908 : break;
10909 : default:;
10910 : }
10911 : break;
10912 : }
10913 0 : default:;
10914 : }
10915 0 : switch (TREE_CODE (_q21))
10916 : {
10917 0 : case REAL_CST:
10918 0 : {
10919 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10920 : {
10921 0 : {
10922 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10923 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_POW);
10924 0 : if (res) return res;
10925 : }
10926 : }
10927 : break;
10928 : }
10929 : default:;
10930 : }
10931 : }
10932 : break;
10933 24 : case CFN_BUILT_IN_POW10F:
10934 24 : if (call_expr_nargs (_p0) == 1)
10935 : {
10936 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10937 24 : switch (TREE_CODE (_p1))
10938 : {
10939 12 : case CALL_EXPR:
10940 12 : switch (get_call_combined_fn (_p1))
10941 : {
10942 0 : case CFN_BUILT_IN_POWF:
10943 0 : if (call_expr_nargs (_p1) == 2)
10944 : {
10945 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10946 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10947 0 : switch (TREE_CODE (_q40))
10948 : {
10949 0 : case REAL_CST:
10950 0 : {
10951 0 : {
10952 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10953 0 : if (flag_unsafe_math_optimizations
10954 : )
10955 : {
10956 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10957 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10958 : )
10959 : {
10960 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1488;
10961 0 : {
10962 0 : tree res_op0;
10963 0 : {
10964 0 : tree _o1[2], _r1;
10965 0 : {
10966 0 : tree _o2[2], _r2;
10967 0 : {
10968 0 : tree _o3[1], _r3;
10969 0 : _o3[0] = captures[1];
10970 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10971 0 : if (!_r3)
10972 0 : goto next_after_fail1488;
10973 0 : _o2[0] = _r3;
10974 : }
10975 0 : _o2[1] = captures[2];
10976 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10977 0 : _o1[0] = _r2;
10978 : }
10979 0 : _o1[1] = captures[4];
10980 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10981 0 : res_op0 = _r1;
10982 : }
10983 0 : tree _r;
10984 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10985 0 : if (!_r)
10986 0 : goto next_after_fail1488;
10987 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10988 0 : return _r;
10989 : }
10990 0 : next_after_fail1488:;
10991 : }
10992 : }
10993 : }
10994 0 : break;
10995 : }
10996 : default:;
10997 : }
10998 : }
10999 : break;
11000 12 : case CFN_BUILT_IN_POW10F:
11001 12 : if (call_expr_nargs (_p1) == 1)
11002 : {
11003 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11004 12 : {
11005 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11006 12 : if (flag_unsafe_math_optimizations
11007 : )
11008 : {
11009 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1489;
11010 12 : {
11011 12 : tree res_op0;
11012 12 : {
11013 12 : tree _o1[2], _r1;
11014 12 : _o1[0] = captures[1];
11015 12 : _o1[1] = captures[3];
11016 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11017 12 : res_op0 = _r1;
11018 : }
11019 12 : tree _r;
11020 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
11021 12 : if (!_r)
11022 12 : goto next_after_fail1489;
11023 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11024 0 : return _r;
11025 : }
11026 12 : next_after_fail1489:;
11027 : }
11028 : }
11029 : }
11030 : break;
11031 : default:;
11032 : }
11033 : break;
11034 : default:;
11035 : }
11036 : }
11037 : break;
11038 24 : case CFN_BUILT_IN_POW10L:
11039 24 : if (call_expr_nargs (_p0) == 1)
11040 : {
11041 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11042 24 : switch (TREE_CODE (_p1))
11043 : {
11044 12 : case CALL_EXPR:
11045 12 : switch (get_call_combined_fn (_p1))
11046 : {
11047 0 : case CFN_BUILT_IN_POWL:
11048 0 : if (call_expr_nargs (_p1) == 2)
11049 : {
11050 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11051 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11052 0 : switch (TREE_CODE (_q40))
11053 : {
11054 0 : case REAL_CST:
11055 0 : {
11056 0 : {
11057 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11058 0 : if (flag_unsafe_math_optimizations
11059 : )
11060 : {
11061 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11062 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11063 : )
11064 : {
11065 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1490;
11066 0 : {
11067 0 : tree res_op0;
11068 0 : {
11069 0 : tree _o1[2], _r1;
11070 0 : {
11071 0 : tree _o2[2], _r2;
11072 0 : {
11073 0 : tree _o3[1], _r3;
11074 0 : _o3[0] = captures[1];
11075 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11076 0 : if (!_r3)
11077 0 : goto next_after_fail1490;
11078 0 : _o2[0] = _r3;
11079 : }
11080 0 : _o2[1] = captures[2];
11081 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11082 0 : _o1[0] = _r2;
11083 : }
11084 0 : _o1[1] = captures[4];
11085 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11086 0 : res_op0 = _r1;
11087 : }
11088 0 : tree _r;
11089 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11090 0 : if (!_r)
11091 0 : goto next_after_fail1490;
11092 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
11093 0 : return _r;
11094 : }
11095 0 : next_after_fail1490:;
11096 : }
11097 : }
11098 : }
11099 0 : break;
11100 : }
11101 : default:;
11102 : }
11103 : }
11104 : break;
11105 12 : case CFN_BUILT_IN_POW10L:
11106 12 : if (call_expr_nargs (_p1) == 1)
11107 : {
11108 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11109 12 : {
11110 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11111 12 : if (flag_unsafe_math_optimizations
11112 : )
11113 : {
11114 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1491;
11115 12 : {
11116 12 : tree res_op0;
11117 12 : {
11118 12 : tree _o1[2], _r1;
11119 12 : _o1[0] = captures[1];
11120 12 : _o1[1] = captures[3];
11121 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11122 12 : res_op0 = _r1;
11123 : }
11124 12 : tree _r;
11125 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11126 12 : if (!_r)
11127 12 : goto next_after_fail1491;
11128 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11129 0 : return _r;
11130 : }
11131 12 : next_after_fail1491:;
11132 : }
11133 : }
11134 : }
11135 : break;
11136 : default:;
11137 : }
11138 : break;
11139 : default:;
11140 : }
11141 : }
11142 : break;
11143 0 : case CFN_BUILT_IN_SQRTF128X:
11144 0 : if (call_expr_nargs (_p0) == 1)
11145 : {
11146 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11147 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11148 : {
11149 0 : {
11150 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11151 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128X);
11152 0 : if (res) return res;
11153 : }
11154 : }
11155 : }
11156 : break;
11157 0 : case CFN_EXP2:
11158 0 : if (call_expr_nargs (_p0) == 1)
11159 : {
11160 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11161 0 : switch (TREE_CODE (_p1))
11162 : {
11163 0 : case CALL_EXPR:
11164 0 : switch (get_call_combined_fn (_p1))
11165 : {
11166 0 : case CFN_POW:
11167 0 : if (call_expr_nargs (_p1) == 2)
11168 : {
11169 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11170 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11171 0 : switch (TREE_CODE (_q40))
11172 : {
11173 0 : case REAL_CST:
11174 0 : {
11175 0 : {
11176 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11177 0 : if (flag_unsafe_math_optimizations
11178 : )
11179 : {
11180 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11181 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11182 : )
11183 : {
11184 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1492;
11185 0 : {
11186 0 : tree res_op0;
11187 0 : {
11188 0 : tree _o1[2], _r1;
11189 0 : {
11190 0 : tree _o2[2], _r2;
11191 0 : {
11192 0 : tree _o3[1], _r3;
11193 0 : _o3[0] = captures[1];
11194 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
11195 0 : if (!_r3)
11196 0 : goto next_after_fail1492;
11197 0 : _o2[0] = _r3;
11198 : }
11199 0 : _o2[1] = captures[2];
11200 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11201 0 : _o1[0] = _r2;
11202 : }
11203 0 : _o1[1] = captures[4];
11204 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11205 0 : res_op0 = _r1;
11206 : }
11207 0 : tree _r;
11208 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11209 0 : if (!_r)
11210 0 : goto next_after_fail1492;
11211 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
11212 0 : return _r;
11213 : }
11214 0 : next_after_fail1492:;
11215 : }
11216 : }
11217 : }
11218 0 : break;
11219 : }
11220 : default:;
11221 : }
11222 : }
11223 : break;
11224 0 : case CFN_EXP2:
11225 0 : if (call_expr_nargs (_p1) == 1)
11226 : {
11227 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11228 0 : {
11229 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11230 0 : if (flag_unsafe_math_optimizations
11231 : )
11232 : {
11233 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1493;
11234 0 : {
11235 0 : tree res_op0;
11236 0 : {
11237 0 : tree _o1[2], _r1;
11238 0 : _o1[0] = captures[1];
11239 0 : _o1[1] = captures[3];
11240 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11241 0 : res_op0 = _r1;
11242 : }
11243 0 : tree _r;
11244 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11245 0 : if (!_r)
11246 0 : goto next_after_fail1493;
11247 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11248 0 : return _r;
11249 : }
11250 0 : next_after_fail1493:;
11251 : }
11252 : }
11253 : }
11254 : break;
11255 : default:;
11256 : }
11257 : break;
11258 : default:;
11259 : }
11260 : }
11261 : break;
11262 0 : case CFN_SQRT:
11263 0 : if (call_expr_nargs (_p0) == 1)
11264 : {
11265 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11266 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11267 : {
11268 0 : {
11269 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11270 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_SQRT);
11271 0 : if (res) return res;
11272 : }
11273 : }
11274 0 : switch (TREE_CODE (_p1))
11275 : {
11276 0 : case CALL_EXPR:
11277 0 : switch (get_call_combined_fn (_p1))
11278 : {
11279 0 : case CFN_SQRT:
11280 0 : if (call_expr_nargs (_p1) == 1)
11281 : {
11282 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11283 0 : {
11284 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11285 0 : if (flag_unsafe_math_optimizations
11286 : )
11287 : {
11288 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1494;
11289 0 : {
11290 0 : tree res_op0;
11291 0 : {
11292 0 : tree _o1[2], _r1;
11293 0 : _o1[0] = captures[1];
11294 0 : _o1[1] = captures[3];
11295 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11296 0 : res_op0 = _r1;
11297 : }
11298 0 : tree _r;
11299 0 : _r = maybe_build_call_expr_loc (loc, CFN_SQRT, type, 1, res_op0);
11300 0 : if (!_r)
11301 0 : goto next_after_fail1494;
11302 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
11303 0 : return _r;
11304 : }
11305 0 : next_after_fail1494:;
11306 : }
11307 : }
11308 : }
11309 : break;
11310 : default:;
11311 : }
11312 : break;
11313 : default:;
11314 : }
11315 : }
11316 : break;
11317 0 : case CFN_EXP10:
11318 0 : if (call_expr_nargs (_p0) == 1)
11319 : {
11320 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11321 0 : switch (TREE_CODE (_p1))
11322 : {
11323 0 : case CALL_EXPR:
11324 0 : switch (get_call_combined_fn (_p1))
11325 : {
11326 0 : case CFN_POW:
11327 0 : if (call_expr_nargs (_p1) == 2)
11328 : {
11329 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11330 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11331 0 : switch (TREE_CODE (_q40))
11332 : {
11333 0 : case REAL_CST:
11334 0 : {
11335 0 : {
11336 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11337 0 : if (flag_unsafe_math_optimizations
11338 : )
11339 : {
11340 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11341 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11342 : )
11343 : {
11344 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1495;
11345 0 : {
11346 0 : tree res_op0;
11347 0 : {
11348 0 : tree _o1[2], _r1;
11349 0 : {
11350 0 : tree _o2[2], _r2;
11351 0 : {
11352 0 : tree _o3[1], _r3;
11353 0 : _o3[0] = captures[1];
11354 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11355 0 : if (!_r3)
11356 0 : goto next_after_fail1495;
11357 0 : _o2[0] = _r3;
11358 : }
11359 0 : _o2[1] = captures[2];
11360 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11361 0 : _o1[0] = _r2;
11362 : }
11363 0 : _o1[1] = captures[4];
11364 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11365 0 : res_op0 = _r1;
11366 : }
11367 0 : tree _r;
11368 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11369 0 : if (!_r)
11370 0 : goto next_after_fail1495;
11371 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
11372 0 : return _r;
11373 : }
11374 0 : next_after_fail1495:;
11375 : }
11376 : }
11377 : }
11378 0 : break;
11379 : }
11380 : default:;
11381 : }
11382 : }
11383 : break;
11384 0 : case CFN_EXP10:
11385 0 : if (call_expr_nargs (_p1) == 1)
11386 : {
11387 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11388 0 : {
11389 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11390 0 : if (flag_unsafe_math_optimizations
11391 : )
11392 : {
11393 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1496;
11394 0 : {
11395 0 : tree res_op0;
11396 0 : {
11397 0 : tree _o1[2], _r1;
11398 0 : _o1[0] = captures[1];
11399 0 : _o1[1] = captures[3];
11400 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11401 0 : res_op0 = _r1;
11402 : }
11403 0 : tree _r;
11404 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11405 0 : if (!_r)
11406 0 : goto next_after_fail1496;
11407 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11408 0 : return _r;
11409 : }
11410 0 : next_after_fail1496:;
11411 : }
11412 : }
11413 : }
11414 : break;
11415 : default:;
11416 : }
11417 : break;
11418 : default:;
11419 : }
11420 : }
11421 : break;
11422 12 : case CFN_BUILT_IN_CBRTF:
11423 12 : if (call_expr_nargs (_p0) == 1)
11424 : {
11425 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11426 12 : switch (TREE_CODE (_p1))
11427 : {
11428 12 : case CALL_EXPR:
11429 12 : switch (get_call_combined_fn (_p1))
11430 : {
11431 12 : case CFN_BUILT_IN_CBRTF:
11432 12 : if (call_expr_nargs (_p1) == 1)
11433 : {
11434 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11435 12 : {
11436 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11437 12 : if (flag_unsafe_math_optimizations
11438 : )
11439 : {
11440 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1497;
11441 12 : {
11442 12 : tree res_op0;
11443 12 : {
11444 12 : tree _o1[2], _r1;
11445 12 : _o1[0] = captures[1];
11446 12 : _o1[1] = captures[3];
11447 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11448 12 : res_op0 = _r1;
11449 : }
11450 12 : tree _r;
11451 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, type, 1, res_op0);
11452 12 : if (!_r)
11453 0 : goto next_after_fail1497;
11454 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
11455 12 : return _r;
11456 : }
11457 0 : next_after_fail1497:;
11458 : }
11459 : }
11460 : }
11461 : break;
11462 : default:;
11463 : }
11464 : break;
11465 : default:;
11466 : }
11467 : }
11468 : break;
11469 12 : case CFN_BUILT_IN_CBRTL:
11470 12 : if (call_expr_nargs (_p0) == 1)
11471 : {
11472 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11473 12 : switch (TREE_CODE (_p1))
11474 : {
11475 12 : case CALL_EXPR:
11476 12 : switch (get_call_combined_fn (_p1))
11477 : {
11478 12 : case CFN_BUILT_IN_CBRTL:
11479 12 : if (call_expr_nargs (_p1) == 1)
11480 : {
11481 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11482 12 : {
11483 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11484 12 : if (flag_unsafe_math_optimizations
11485 : )
11486 : {
11487 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1498;
11488 12 : {
11489 12 : tree res_op0;
11490 12 : {
11491 12 : tree _o1[2], _r1;
11492 12 : _o1[0] = captures[1];
11493 12 : _o1[1] = captures[3];
11494 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11495 12 : res_op0 = _r1;
11496 : }
11497 12 : tree _r;
11498 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, type, 1, res_op0);
11499 12 : if (!_r)
11500 0 : goto next_after_fail1498;
11501 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
11502 12 : return _r;
11503 : }
11504 0 : next_after_fail1498:;
11505 : }
11506 : }
11507 : }
11508 : break;
11509 : default:;
11510 : }
11511 : break;
11512 : default:;
11513 : }
11514 : }
11515 : break;
11516 0 : case CFN_LDEXP:
11517 0 : if (call_expr_nargs (_p0) == 2)
11518 : {
11519 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11520 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11521 0 : switch (TREE_CODE (_p1))
11522 : {
11523 0 : case REAL_CST:
11524 0 : {
11525 0 : {
11526 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11527 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11528 0 : if (res) return res;
11529 : }
11530 0 : break;
11531 : }
11532 0 : default:;
11533 : }
11534 0 : switch (TREE_CODE (_q20))
11535 : {
11536 0 : case REAL_CST:
11537 0 : {
11538 0 : {
11539 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11540 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11541 0 : if (res) return res;
11542 : }
11543 0 : break;
11544 : }
11545 : default:;
11546 : }
11547 : }
11548 : break;
11549 48 : case CFN_BUILT_IN_EXP10:
11550 48 : if (call_expr_nargs (_p0) == 1)
11551 : {
11552 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11553 48 : switch (TREE_CODE (_p1))
11554 : {
11555 24 : case CALL_EXPR:
11556 24 : switch (get_call_combined_fn (_p1))
11557 : {
11558 0 : case CFN_BUILT_IN_POW:
11559 0 : if (call_expr_nargs (_p1) == 2)
11560 : {
11561 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11562 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11563 0 : switch (TREE_CODE (_q40))
11564 : {
11565 0 : case REAL_CST:
11566 0 : {
11567 0 : {
11568 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11569 0 : if (flag_unsafe_math_optimizations
11570 : )
11571 : {
11572 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11573 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11574 : )
11575 : {
11576 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1499;
11577 0 : {
11578 0 : tree res_op0;
11579 0 : {
11580 0 : tree _o1[2], _r1;
11581 0 : {
11582 0 : tree _o2[2], _r2;
11583 0 : {
11584 0 : tree _o3[1], _r3;
11585 0 : _o3[0] = captures[1];
11586 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11587 0 : if (!_r3)
11588 0 : goto next_after_fail1499;
11589 0 : _o2[0] = _r3;
11590 : }
11591 0 : _o2[1] = captures[2];
11592 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11593 0 : _o1[0] = _r2;
11594 : }
11595 0 : _o1[1] = captures[4];
11596 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11597 0 : res_op0 = _r1;
11598 : }
11599 0 : tree _r;
11600 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11601 0 : if (!_r)
11602 0 : goto next_after_fail1499;
11603 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
11604 0 : return _r;
11605 : }
11606 0 : next_after_fail1499:;
11607 : }
11608 : }
11609 : }
11610 0 : break;
11611 : }
11612 : default:;
11613 : }
11614 : }
11615 : break;
11616 24 : case CFN_BUILT_IN_EXP10:
11617 24 : if (call_expr_nargs (_p1) == 1)
11618 : {
11619 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11620 24 : {
11621 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11622 24 : if (flag_unsafe_math_optimizations
11623 : )
11624 : {
11625 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1500;
11626 24 : {
11627 24 : tree res_op0;
11628 24 : {
11629 24 : tree _o1[2], _r1;
11630 24 : _o1[0] = captures[1];
11631 24 : _o1[1] = captures[3];
11632 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11633 24 : res_op0 = _r1;
11634 : }
11635 24 : tree _r;
11636 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11637 24 : if (!_r)
11638 0 : goto next_after_fail1500;
11639 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11640 24 : return _r;
11641 : }
11642 0 : next_after_fail1500:;
11643 : }
11644 : }
11645 : }
11646 : break;
11647 : default:;
11648 : }
11649 : break;
11650 : default:;
11651 : }
11652 : }
11653 : break;
11654 48 : case CFN_BUILT_IN_EXP2F:
11655 48 : if (call_expr_nargs (_p0) == 1)
11656 : {
11657 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11658 48 : switch (TREE_CODE (_p1))
11659 : {
11660 24 : case CALL_EXPR:
11661 24 : switch (get_call_combined_fn (_p1))
11662 : {
11663 0 : case CFN_BUILT_IN_POWF:
11664 0 : if (call_expr_nargs (_p1) == 2)
11665 : {
11666 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11667 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11668 0 : switch (TREE_CODE (_q40))
11669 : {
11670 0 : case REAL_CST:
11671 0 : {
11672 0 : {
11673 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11674 0 : if (flag_unsafe_math_optimizations
11675 : )
11676 : {
11677 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11678 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11679 : )
11680 : {
11681 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1501;
11682 0 : {
11683 0 : tree res_op0;
11684 0 : {
11685 0 : tree _o1[2], _r1;
11686 0 : {
11687 0 : tree _o2[2], _r2;
11688 0 : {
11689 0 : tree _o3[1], _r3;
11690 0 : _o3[0] = captures[1];
11691 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
11692 0 : if (!_r3)
11693 0 : goto next_after_fail1501;
11694 0 : _o2[0] = _r3;
11695 : }
11696 0 : _o2[1] = captures[2];
11697 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11698 0 : _o1[0] = _r2;
11699 : }
11700 0 : _o1[1] = captures[4];
11701 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11702 0 : res_op0 = _r1;
11703 : }
11704 0 : tree _r;
11705 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11706 0 : if (!_r)
11707 0 : goto next_after_fail1501;
11708 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
11709 0 : return _r;
11710 : }
11711 0 : next_after_fail1501:;
11712 : }
11713 : }
11714 : }
11715 0 : break;
11716 : }
11717 : default:;
11718 : }
11719 : }
11720 : break;
11721 24 : case CFN_BUILT_IN_EXP2F:
11722 24 : if (call_expr_nargs (_p1) == 1)
11723 : {
11724 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11725 24 : {
11726 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11727 24 : if (flag_unsafe_math_optimizations
11728 : )
11729 : {
11730 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1502;
11731 24 : {
11732 24 : tree res_op0;
11733 24 : {
11734 24 : tree _o1[2], _r1;
11735 24 : _o1[0] = captures[1];
11736 24 : _o1[1] = captures[3];
11737 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11738 24 : res_op0 = _r1;
11739 : }
11740 24 : tree _r;
11741 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11742 24 : if (!_r)
11743 0 : goto next_after_fail1502;
11744 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11745 24 : return _r;
11746 : }
11747 0 : next_after_fail1502:;
11748 : }
11749 : }
11750 : }
11751 : break;
11752 : default:;
11753 : }
11754 : break;
11755 : default:;
11756 : }
11757 : }
11758 : break;
11759 48 : case CFN_BUILT_IN_EXP2L:
11760 48 : if (call_expr_nargs (_p0) == 1)
11761 : {
11762 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11763 48 : switch (TREE_CODE (_p1))
11764 : {
11765 24 : case CALL_EXPR:
11766 24 : switch (get_call_combined_fn (_p1))
11767 : {
11768 0 : case CFN_BUILT_IN_POWL:
11769 0 : if (call_expr_nargs (_p1) == 2)
11770 : {
11771 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11772 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11773 0 : switch (TREE_CODE (_q40))
11774 : {
11775 0 : case REAL_CST:
11776 0 : {
11777 0 : {
11778 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11779 0 : if (flag_unsafe_math_optimizations
11780 : )
11781 : {
11782 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11783 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11784 : )
11785 : {
11786 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1503;
11787 0 : {
11788 0 : tree res_op0;
11789 0 : {
11790 0 : tree _o1[2], _r1;
11791 0 : {
11792 0 : tree _o2[2], _r2;
11793 0 : {
11794 0 : tree _o3[1], _r3;
11795 0 : _o3[0] = captures[1];
11796 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11797 0 : if (!_r3)
11798 0 : goto next_after_fail1503;
11799 0 : _o2[0] = _r3;
11800 : }
11801 0 : _o2[1] = captures[2];
11802 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11803 0 : _o1[0] = _r2;
11804 : }
11805 0 : _o1[1] = captures[4];
11806 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11807 0 : res_op0 = _r1;
11808 : }
11809 0 : tree _r;
11810 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11811 0 : if (!_r)
11812 0 : goto next_after_fail1503;
11813 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
11814 0 : return _r;
11815 : }
11816 0 : next_after_fail1503:;
11817 : }
11818 : }
11819 : }
11820 0 : break;
11821 : }
11822 : default:;
11823 : }
11824 : }
11825 : break;
11826 24 : case CFN_BUILT_IN_EXP2L:
11827 24 : if (call_expr_nargs (_p1) == 1)
11828 : {
11829 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11830 24 : {
11831 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11832 24 : if (flag_unsafe_math_optimizations
11833 : )
11834 : {
11835 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1504;
11836 24 : {
11837 24 : tree res_op0;
11838 24 : {
11839 24 : tree _o1[2], _r1;
11840 24 : _o1[0] = captures[1];
11841 24 : _o1[1] = captures[3];
11842 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11843 24 : res_op0 = _r1;
11844 : }
11845 24 : tree _r;
11846 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11847 24 : if (!_r)
11848 0 : goto next_after_fail1504;
11849 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11850 24 : return _r;
11851 : }
11852 0 : next_after_fail1504:;
11853 : }
11854 : }
11855 : }
11856 : break;
11857 : default:;
11858 : }
11859 : break;
11860 : default:;
11861 : }
11862 : }
11863 : break;
11864 5 : case CFN_BUILT_IN_LDEXP:
11865 5 : if (call_expr_nargs (_p0) == 2)
11866 : {
11867 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11868 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11869 5 : switch (TREE_CODE (_p1))
11870 : {
11871 2 : case REAL_CST:
11872 2 : {
11873 2 : {
11874 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11875 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11876 2 : if (res) return res;
11877 : }
11878 1 : break;
11879 : }
11880 4 : default:;
11881 : }
11882 4 : switch (TREE_CODE (_q20))
11883 : {
11884 3 : case REAL_CST:
11885 3 : {
11886 3 : {
11887 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11888 3 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11889 3 : if (res) return res;
11890 : }
11891 0 : break;
11892 : }
11893 : default:;
11894 : }
11895 : }
11896 : break;
11897 24 : case CFN_BUILT_IN_POW10:
11898 24 : if (call_expr_nargs (_p0) == 1)
11899 : {
11900 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11901 24 : switch (TREE_CODE (_p1))
11902 : {
11903 12 : case CALL_EXPR:
11904 12 : switch (get_call_combined_fn (_p1))
11905 : {
11906 0 : case CFN_BUILT_IN_POW:
11907 0 : if (call_expr_nargs (_p1) == 2)
11908 : {
11909 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11910 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11911 0 : switch (TREE_CODE (_q40))
11912 : {
11913 0 : case REAL_CST:
11914 0 : {
11915 0 : {
11916 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11917 0 : if (flag_unsafe_math_optimizations
11918 : )
11919 : {
11920 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11921 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11922 : )
11923 : {
11924 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1505;
11925 0 : {
11926 0 : tree res_op0;
11927 0 : {
11928 0 : tree _o1[2], _r1;
11929 0 : {
11930 0 : tree _o2[2], _r2;
11931 0 : {
11932 0 : tree _o3[1], _r3;
11933 0 : _o3[0] = captures[1];
11934 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11935 0 : if (!_r3)
11936 0 : goto next_after_fail1505;
11937 0 : _o2[0] = _r3;
11938 : }
11939 0 : _o2[1] = captures[2];
11940 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11941 0 : _o1[0] = _r2;
11942 : }
11943 0 : _o1[1] = captures[4];
11944 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11945 0 : res_op0 = _r1;
11946 : }
11947 0 : tree _r;
11948 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11949 0 : if (!_r)
11950 0 : goto next_after_fail1505;
11951 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
11952 0 : return _r;
11953 : }
11954 0 : next_after_fail1505:;
11955 : }
11956 : }
11957 : }
11958 0 : break;
11959 : }
11960 : default:;
11961 : }
11962 : }
11963 : break;
11964 12 : case CFN_BUILT_IN_POW10:
11965 12 : if (call_expr_nargs (_p1) == 1)
11966 : {
11967 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11968 12 : {
11969 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11970 12 : if (flag_unsafe_math_optimizations
11971 : )
11972 : {
11973 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1506;
11974 12 : {
11975 12 : tree res_op0;
11976 12 : {
11977 12 : tree _o1[2], _r1;
11978 12 : _o1[0] = captures[1];
11979 12 : _o1[1] = captures[3];
11980 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11981 12 : res_op0 = _r1;
11982 : }
11983 12 : tree _r;
11984 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11985 12 : if (!_r)
11986 12 : goto next_after_fail1506;
11987 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
11988 0 : return _r;
11989 : }
11990 12 : next_after_fail1506:;
11991 : }
11992 : }
11993 : }
11994 : break;
11995 : default:;
11996 : }
11997 : break;
11998 : default:;
11999 : }
12000 : }
12001 : break;
12002 : default:;
12003 : }
12004 : break;
12005 66782547 : default:;
12006 : }
12007 66782547 : switch (TREE_CODE (_p1))
12008 : {
12009 892899 : case CALL_EXPR:
12010 892899 : switch (get_call_combined_fn (_p1))
12011 : {
12012 0 : case CFN_BUILT_IN_LDEXPF:
12013 0 : if (call_expr_nargs (_p1) == 2)
12014 : {
12015 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12016 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12017 0 : switch (TREE_CODE (_q30))
12018 : {
12019 0 : case REAL_CST:
12020 0 : {
12021 0 : {
12022 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12023 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
12024 0 : if (res) return res;
12025 : }
12026 0 : break;
12027 : }
12028 : default:;
12029 : }
12030 : }
12031 : break;
12032 0 : case CFN_BUILT_IN_LDEXPL:
12033 0 : if (call_expr_nargs (_p1) == 2)
12034 : {
12035 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12036 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12037 0 : switch (TREE_CODE (_q30))
12038 : {
12039 0 : case REAL_CST:
12040 0 : {
12041 0 : {
12042 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12043 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
12044 0 : if (res) return res;
12045 : }
12046 0 : break;
12047 : }
12048 : default:;
12049 : }
12050 : }
12051 : break;
12052 0 : case CFN_LDEXP:
12053 0 : if (call_expr_nargs (_p1) == 2)
12054 : {
12055 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12056 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12057 0 : switch (TREE_CODE (_q30))
12058 : {
12059 0 : case REAL_CST:
12060 0 : {
12061 0 : {
12062 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12063 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_LDEXP);
12064 0 : if (res) return res;
12065 : }
12066 0 : break;
12067 : }
12068 : default:;
12069 : }
12070 : }
12071 : break;
12072 0 : case CFN_BUILT_IN_LDEXP:
12073 0 : if (call_expr_nargs (_p1) == 2)
12074 : {
12075 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12076 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12077 0 : switch (TREE_CODE (_q30))
12078 : {
12079 0 : case REAL_CST:
12080 0 : {
12081 0 : {
12082 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12083 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
12084 0 : if (res) return res;
12085 : }
12086 0 : break;
12087 : }
12088 : default:;
12089 : }
12090 : }
12091 : break;
12092 : default:;
12093 : }
12094 : break;
12095 66782547 : default:;
12096 : }
12097 66782547 : switch (TREE_CODE (_p0))
12098 : {
12099 2501455 : case CALL_EXPR:
12100 2501455 : switch (get_call_combined_fn (_p0))
12101 : {
12102 29 : case CFN_BUILT_IN_COS:
12103 29 : if (call_expr_nargs (_p0) == 1)
12104 : {
12105 29 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12106 29 : switch (TREE_CODE (_p1))
12107 : {
12108 4 : case CALL_EXPR:
12109 4 : switch (get_call_combined_fn (_p1))
12110 : {
12111 2 : case CFN_BUILT_IN_TAN:
12112 2 : if (call_expr_nargs (_p1) == 1)
12113 : {
12114 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12115 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12116 : {
12117 2 : {
12118 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12119 2 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12120 2 : if (res) return res;
12121 : }
12122 : }
12123 : }
12124 : break;
12125 : default:;
12126 : }
12127 : break;
12128 : default:;
12129 : }
12130 : }
12131 : break;
12132 2 : case CFN_BUILT_IN_TAN:
12133 2 : if (call_expr_nargs (_p0) == 1)
12134 : {
12135 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12136 2 : switch (TREE_CODE (_p1))
12137 : {
12138 2 : case CALL_EXPR:
12139 2 : switch (get_call_combined_fn (_p1))
12140 : {
12141 2 : case CFN_BUILT_IN_COS:
12142 2 : if (call_expr_nargs (_p1) == 1)
12143 : {
12144 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12145 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12146 : {
12147 2 : {
12148 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12149 2 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12150 2 : if (res) return res;
12151 : }
12152 : }
12153 : }
12154 : break;
12155 : default:;
12156 : }
12157 : break;
12158 : default:;
12159 : }
12160 : }
12161 : break;
12162 18 : case CFN_BUILT_IN_COSF:
12163 18 : if (call_expr_nargs (_p0) == 1)
12164 : {
12165 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12166 18 : switch (TREE_CODE (_p1))
12167 : {
12168 9 : case CALL_EXPR:
12169 9 : switch (get_call_combined_fn (_p1))
12170 : {
12171 2 : case CFN_BUILT_IN_TANF:
12172 2 : if (call_expr_nargs (_p1) == 1)
12173 : {
12174 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12175 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12176 : {
12177 2 : {
12178 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12179 2 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12180 2 : if (res) return res;
12181 : }
12182 : }
12183 : }
12184 : break;
12185 : default:;
12186 : }
12187 : break;
12188 : default:;
12189 : }
12190 : }
12191 : break;
12192 2 : case CFN_BUILT_IN_COSL:
12193 2 : if (call_expr_nargs (_p0) == 1)
12194 : {
12195 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12196 2 : switch (TREE_CODE (_p1))
12197 : {
12198 2 : case CALL_EXPR:
12199 2 : switch (get_call_combined_fn (_p1))
12200 : {
12201 2 : case CFN_BUILT_IN_TANL:
12202 2 : if (call_expr_nargs (_p1) == 1)
12203 : {
12204 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12205 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12206 : {
12207 2 : {
12208 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12209 2 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12210 2 : if (res) return res;
12211 : }
12212 : }
12213 : }
12214 : break;
12215 : default:;
12216 : }
12217 : break;
12218 : default:;
12219 : }
12220 : }
12221 : break;
12222 2 : case CFN_BUILT_IN_TANF:
12223 2 : if (call_expr_nargs (_p0) == 1)
12224 : {
12225 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12226 2 : switch (TREE_CODE (_p1))
12227 : {
12228 2 : case CALL_EXPR:
12229 2 : switch (get_call_combined_fn (_p1))
12230 : {
12231 2 : case CFN_BUILT_IN_COSF:
12232 2 : if (call_expr_nargs (_p1) == 1)
12233 : {
12234 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12235 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12236 : {
12237 2 : {
12238 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12239 2 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12240 2 : if (res) return res;
12241 : }
12242 : }
12243 : }
12244 : break;
12245 : default:;
12246 : }
12247 : break;
12248 : default:;
12249 : }
12250 : }
12251 : break;
12252 2 : case CFN_BUILT_IN_TANL:
12253 2 : if (call_expr_nargs (_p0) == 1)
12254 : {
12255 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12256 2 : switch (TREE_CODE (_p1))
12257 : {
12258 2 : case CALL_EXPR:
12259 2 : switch (get_call_combined_fn (_p1))
12260 : {
12261 2 : case CFN_BUILT_IN_COSL:
12262 2 : if (call_expr_nargs (_p1) == 1)
12263 : {
12264 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12265 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12266 : {
12267 2 : {
12268 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12269 2 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12270 2 : if (res) return res;
12271 : }
12272 : }
12273 : }
12274 : break;
12275 : default:;
12276 : }
12277 : break;
12278 : default:;
12279 : }
12280 : }
12281 : break;
12282 0 : case CFN_COS:
12283 0 : if (call_expr_nargs (_p0) == 1)
12284 : {
12285 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12286 0 : switch (TREE_CODE (_p1))
12287 : {
12288 0 : case CALL_EXPR:
12289 0 : switch (get_call_combined_fn (_p1))
12290 : {
12291 0 : case CFN_TAN:
12292 0 : if (call_expr_nargs (_p1) == 1)
12293 : {
12294 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12295 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12296 : {
12297 0 : {
12298 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12299 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12300 0 : if (res) return res;
12301 : }
12302 : }
12303 : }
12304 : break;
12305 : default:;
12306 : }
12307 : break;
12308 : default:;
12309 : }
12310 : }
12311 : break;
12312 0 : case CFN_TAN:
12313 0 : if (call_expr_nargs (_p0) == 1)
12314 : {
12315 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12316 0 : switch (TREE_CODE (_p1))
12317 : {
12318 0 : case CALL_EXPR:
12319 0 : switch (get_call_combined_fn (_p1))
12320 : {
12321 0 : case CFN_COS:
12322 0 : if (call_expr_nargs (_p1) == 1)
12323 : {
12324 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12325 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12326 : {
12327 0 : {
12328 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12329 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12330 0 : if (res) return res;
12331 : }
12332 : }
12333 : }
12334 : break;
12335 : default:;
12336 : }
12337 : break;
12338 : default:;
12339 : }
12340 : }
12341 : break;
12342 : default:;
12343 : }
12344 : break;
12345 66782535 : default:;
12346 : }
12347 66782535 : switch (TREE_CODE (_p1))
12348 : {
12349 892887 : case CALL_EXPR:
12350 892887 : switch (get_call_combined_fn (_p1))
12351 : {
12352 60 : case CFN_BUILT_IN_POW:
12353 60 : if (call_expr_nargs (_p1) == 2)
12354 : {
12355 60 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12356 60 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12357 60 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12358 : {
12359 0 : switch (TREE_CODE (_q31))
12360 : {
12361 0 : case REAL_CST:
12362 0 : {
12363 0 : {
12364 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12365 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12366 0 : if (res) return res;
12367 : }
12368 0 : break;
12369 : }
12370 : default:;
12371 : }
12372 : }
12373 : }
12374 : break;
12375 23 : case CFN_BUILT_IN_POWF:
12376 23 : if (call_expr_nargs (_p1) == 2)
12377 : {
12378 23 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12379 23 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12380 23 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12381 : {
12382 0 : switch (TREE_CODE (_q31))
12383 : {
12384 0 : case REAL_CST:
12385 0 : {
12386 0 : {
12387 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12388 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12389 0 : if (res) return res;
12390 : }
12391 0 : break;
12392 : }
12393 : default:;
12394 : }
12395 : }
12396 : }
12397 : break;
12398 12 : case CFN_BUILT_IN_POWL:
12399 12 : if (call_expr_nargs (_p1) == 2)
12400 : {
12401 12 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12402 12 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12403 12 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12404 : {
12405 0 : switch (TREE_CODE (_q31))
12406 : {
12407 0 : case REAL_CST:
12408 0 : {
12409 0 : {
12410 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12411 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12412 0 : if (res) return res;
12413 : }
12414 0 : break;
12415 : }
12416 : default:;
12417 : }
12418 : }
12419 : }
12420 : break;
12421 0 : case CFN_POW:
12422 0 : if (call_expr_nargs (_p1) == 2)
12423 : {
12424 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12425 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12426 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12427 : {
12428 0 : switch (TREE_CODE (_q31))
12429 : {
12430 0 : case REAL_CST:
12431 0 : {
12432 0 : {
12433 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12434 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_POW);
12435 0 : if (res) return res;
12436 : }
12437 0 : break;
12438 : }
12439 : default:;
12440 : }
12441 : }
12442 : }
12443 : break;
12444 : default:;
12445 : }
12446 : break;
12447 66782535 : default:;
12448 : }
12449 66782535 : switch (TREE_CODE (_p0))
12450 : {
12451 1 : case VEC_PERM_EXPR:
12452 1 : {
12453 1 : tree _q20 = TREE_OPERAND (_p0, 0);
12454 1 : tree _q21 = TREE_OPERAND (_p0, 1);
12455 1 : tree _q22 = TREE_OPERAND (_p0, 2);
12456 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
12457 : {
12458 1 : switch (TREE_CODE (_p1))
12459 : {
12460 0 : case VEC_PERM_EXPR:
12461 0 : {
12462 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12463 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12464 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12465 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12466 : {
12467 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12468 : {
12469 0 : {
12470 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12471 0 : if (VECTOR_INTEGER_TYPE_P (type)
12472 : )
12473 : {
12474 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1507;
12475 0 : {
12476 0 : tree res_op0;
12477 0 : {
12478 0 : tree _o1[2], _r1;
12479 0 : _o1[0] = captures[0];
12480 0 : _o1[1] = captures[2];
12481 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12482 0 : captures[3] = _r1;
12483 : }
12484 0 : res_op0 = unshare_expr (captures[3]);
12485 0 : tree res_op1;
12486 0 : res_op1 = captures[3];
12487 0 : tree res_op2;
12488 0 : res_op2 = captures[1];
12489 0 : tree _r;
12490 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12491 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 912, __FILE__, __LINE__, true);
12492 0 : return _r;
12493 : }
12494 0 : next_after_fail1507:;
12495 : }
12496 : }
12497 : }
12498 : }
12499 : break;
12500 : }
12501 1 : default:;
12502 : }
12503 1 : switch (TREE_CODE (_q22))
12504 : {
12505 0 : case VECTOR_CST:
12506 0 : {
12507 0 : switch (TREE_CODE (_p1))
12508 : {
12509 0 : case VEC_PERM_EXPR:
12510 0 : {
12511 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12512 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12513 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12514 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12515 : {
12516 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12517 : {
12518 0 : switch (TREE_CODE (_q62))
12519 : {
12520 0 : case VECTOR_CST:
12521 0 : {
12522 0 : {
12523 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12524 0 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures, MULT_EXPR);
12525 0 : if (res) return res;
12526 : }
12527 0 : break;
12528 : }
12529 : default:;
12530 : }
12531 : }
12532 : }
12533 : break;
12534 : }
12535 : default:;
12536 : }
12537 : break;
12538 : }
12539 : default:;
12540 : }
12541 : }
12542 : break;
12543 : }
12544 2501443 : case CALL_EXPR:
12545 2501443 : switch (get_call_combined_fn (_p0))
12546 : {
12547 115 : case CFN_BUILT_IN_POW:
12548 115 : if (call_expr_nargs (_p0) == 2)
12549 : {
12550 115 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12551 115 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12552 115 : switch (TREE_CODE (_p1))
12553 : {
12554 80 : case CALL_EXPR:
12555 80 : switch (get_call_combined_fn (_p1))
12556 : {
12557 20 : case CFN_BUILT_IN_POW:
12558 20 : if (call_expr_nargs (_p1) == 2)
12559 : {
12560 20 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12561 20 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12562 20 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12563 : {
12564 14 : {
12565 14 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12566 14 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12567 14 : if (res) return res;
12568 : }
12569 : }
12570 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12571 : {
12572 2 : {
12573 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12574 2 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12575 2 : if (res) return res;
12576 : }
12577 : }
12578 : }
12579 : break;
12580 : default:;
12581 : }
12582 : break;
12583 : default:;
12584 : }
12585 : }
12586 : break;
12587 19 : case CFN_BUILT_IN_POWF:
12588 19 : if (call_expr_nargs (_p0) == 2)
12589 : {
12590 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12591 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12592 19 : switch (TREE_CODE (_p1))
12593 : {
12594 13 : case CALL_EXPR:
12595 13 : switch (get_call_combined_fn (_p1))
12596 : {
12597 13 : case CFN_BUILT_IN_POWF:
12598 13 : if (call_expr_nargs (_p1) == 2)
12599 : {
12600 13 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12601 13 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12602 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12603 : {
12604 12 : {
12605 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12606 12 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12607 12 : if (res) return res;
12608 : }
12609 : }
12610 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12611 : {
12612 0 : {
12613 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12614 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12615 0 : if (res) return res;
12616 : }
12617 : }
12618 : }
12619 : break;
12620 : default:;
12621 : }
12622 : break;
12623 : default:;
12624 : }
12625 : }
12626 : break;
12627 26 : case CFN_BUILT_IN_POWI:
12628 26 : if (call_expr_nargs (_p0) == 2)
12629 : {
12630 26 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12631 26 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12632 26 : switch (TREE_CODE (_p1))
12633 : {
12634 0 : case CALL_EXPR:
12635 0 : switch (get_call_combined_fn (_p1))
12636 : {
12637 0 : case CFN_BUILT_IN_POWI:
12638 0 : if (call_expr_nargs (_p1) == 2)
12639 : {
12640 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12641 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12642 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12643 : {
12644 0 : {
12645 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12646 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12647 : )
12648 : {
12649 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1508;
12650 0 : {
12651 0 : tree res_op0;
12652 0 : {
12653 0 : tree _o1[2], _r1;
12654 0 : _o1[0] = captures[1];
12655 0 : _o1[1] = captures[4];
12656 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12657 0 : res_op0 = _r1;
12658 : }
12659 0 : tree res_op1;
12660 0 : res_op1 = captures[2];
12661 0 : tree _r;
12662 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWI, type, 2, res_op0, res_op1);
12663 0 : if (!_r)
12664 0 : goto next_after_fail1508;
12665 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
12666 0 : return _r;
12667 : }
12668 0 : next_after_fail1508:;
12669 : }
12670 : }
12671 : }
12672 : }
12673 : break;
12674 : default:;
12675 : }
12676 : break;
12677 : default:;
12678 : }
12679 : }
12680 : break;
12681 12 : case CFN_BUILT_IN_POWL:
12682 12 : if (call_expr_nargs (_p0) == 2)
12683 : {
12684 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12685 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12686 12 : switch (TREE_CODE (_p1))
12687 : {
12688 12 : case CALL_EXPR:
12689 12 : switch (get_call_combined_fn (_p1))
12690 : {
12691 12 : case CFN_BUILT_IN_POWL:
12692 12 : if (call_expr_nargs (_p1) == 2)
12693 : {
12694 12 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12695 12 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12696 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12697 : {
12698 12 : {
12699 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12700 12 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12701 12 : if (res) return res;
12702 : }
12703 : }
12704 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12705 : {
12706 0 : {
12707 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12708 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12709 0 : if (res) return res;
12710 : }
12711 : }
12712 : }
12713 : break;
12714 : default:;
12715 : }
12716 : break;
12717 : default:;
12718 : }
12719 : }
12720 : break;
12721 0 : case CFN_POW:
12722 0 : if (call_expr_nargs (_p0) == 2)
12723 : {
12724 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12725 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12726 0 : switch (TREE_CODE (_p1))
12727 : {
12728 0 : case CALL_EXPR:
12729 0 : switch (get_call_combined_fn (_p1))
12730 : {
12731 0 : case CFN_POW:
12732 0 : if (call_expr_nargs (_p1) == 2)
12733 : {
12734 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12735 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12736 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12737 : {
12738 0 : {
12739 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12740 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, CFN_POW);
12741 0 : if (res) return res;
12742 : }
12743 : }
12744 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12745 : {
12746 0 : {
12747 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12748 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, CFN_POW);
12749 0 : if (res) return res;
12750 : }
12751 : }
12752 : }
12753 : break;
12754 : default:;
12755 : }
12756 : break;
12757 : default:;
12758 : }
12759 : }
12760 : break;
12761 14 : case CFN_BUILT_IN_POWIF:
12762 14 : if (call_expr_nargs (_p0) == 2)
12763 : {
12764 14 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12765 14 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12766 14 : switch (TREE_CODE (_p1))
12767 : {
12768 0 : case CALL_EXPR:
12769 0 : switch (get_call_combined_fn (_p1))
12770 : {
12771 0 : case CFN_BUILT_IN_POWIF:
12772 0 : if (call_expr_nargs (_p1) == 2)
12773 : {
12774 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12775 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12776 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12777 : {
12778 0 : {
12779 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12780 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12781 : )
12782 : {
12783 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1509;
12784 0 : {
12785 0 : tree res_op0;
12786 0 : {
12787 0 : tree _o1[2], _r1;
12788 0 : _o1[0] = captures[1];
12789 0 : _o1[1] = captures[4];
12790 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12791 0 : res_op0 = _r1;
12792 : }
12793 0 : tree res_op1;
12794 0 : res_op1 = captures[2];
12795 0 : tree _r;
12796 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIF, type, 2, res_op0, res_op1);
12797 0 : if (!_r)
12798 0 : goto next_after_fail1509;
12799 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
12800 0 : return _r;
12801 : }
12802 0 : next_after_fail1509:;
12803 : }
12804 : }
12805 : }
12806 : }
12807 : break;
12808 : default:;
12809 : }
12810 : break;
12811 : default:;
12812 : }
12813 : }
12814 : break;
12815 5 : case CFN_BUILT_IN_POWIL:
12816 5 : if (call_expr_nargs (_p0) == 2)
12817 : {
12818 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12819 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12820 5 : switch (TREE_CODE (_p1))
12821 : {
12822 0 : case CALL_EXPR:
12823 0 : switch (get_call_combined_fn (_p1))
12824 : {
12825 0 : case CFN_BUILT_IN_POWIL:
12826 0 : if (call_expr_nargs (_p1) == 2)
12827 : {
12828 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12829 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12830 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12831 : {
12832 0 : {
12833 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12834 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12835 : )
12836 : {
12837 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1510;
12838 0 : {
12839 0 : tree res_op0;
12840 0 : {
12841 0 : tree _o1[2], _r1;
12842 0 : _o1[0] = captures[1];
12843 0 : _o1[1] = captures[4];
12844 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12845 0 : res_op0 = _r1;
12846 : }
12847 0 : tree res_op1;
12848 0 : res_op1 = captures[2];
12849 0 : tree _r;
12850 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIL, type, 2, res_op0, res_op1);
12851 0 : if (!_r)
12852 0 : goto next_after_fail1510;
12853 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
12854 0 : return _r;
12855 : }
12856 0 : next_after_fail1510:;
12857 : }
12858 : }
12859 : }
12860 : }
12861 : break;
12862 : default:;
12863 : }
12864 : break;
12865 : default:;
12866 : }
12867 : }
12868 : break;
12869 : default:;
12870 : }
12871 : break;
12872 : default:;
12873 : }
12874 : return NULL_TREE;
12875 : }
12876 : #pragma GCC diagnostic pop
|