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 109190140 : tree_logical_inverted_value (tree t, tree *res_ops)
11 : {
12 109190140 : const tree type = TREE_TYPE (t);
13 109190140 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 109190140 : if (TREE_SIDE_EFFECTS (t)) return false;
15 100109860 : switch (TREE_CODE (t))
16 : {
17 620009 : case TRUTH_NOT_EXPR:
18 620009 : {
19 620009 : tree _p0 = TREE_OPERAND (t, 0);
20 620009 : {
21 620009 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 620009 : {
23 620009 : res_ops[0] = captures[0];
24 620009 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 23, __FILE__, __LINE__, false);
25 : return true;
26 : }
27 : }
28 170668 : break;
29 : }
30 170668 : case BIT_NOT_EXPR:
31 170668 : {
32 170668 : tree _p0 = TREE_OPERAND (t, 0);
33 170668 : if (tree_truth_valued_p (_p0))
34 : {
35 12292 : {
36 12292 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
37 12292 : {
38 12292 : res_ops[0] = captures[0];
39 12292 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 24, __FILE__, __LINE__, false);
40 : return true;
41 : }
42 : }
43 : }
44 : break;
45 : }
46 1400858 : case EQ_EXPR:
47 1400858 : {
48 1400858 : tree _p0 = TREE_OPERAND (t, 0);
49 1400858 : tree _p1 = TREE_OPERAND (t, 1);
50 1400858 : if (integer_zerop (_p1))
51 : {
52 546533 : {
53 546533 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
54 546533 : {
55 546533 : res_ops[0] = captures[0];
56 546533 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 25, __FILE__, __LINE__, false);
57 : return true;
58 : }
59 : }
60 : }
61 : break;
62 : }
63 2192590 : case NE_EXPR:
64 2192590 : {
65 2192590 : tree _p0 = TREE_OPERAND (t, 0);
66 2192590 : tree _p1 = TREE_OPERAND (t, 1);
67 2192590 : if (tree_truth_valued_p (_p0))
68 : {
69 2715 : if (integer_truep (_p1))
70 : {
71 0 : {
72 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
73 0 : {
74 0 : res_ops[0] = captures[0];
75 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 26, __FILE__, __LINE__, false);
76 : return true;
77 : }
78 : }
79 : }
80 : }
81 : break;
82 : }
83 110936 : case BIT_XOR_EXPR:
84 110936 : {
85 110936 : tree _p0 = TREE_OPERAND (t, 0);
86 110936 : tree _p1 = TREE_OPERAND (t, 1);
87 110936 : if (tree_truth_valued_p (_p0))
88 : {
89 15846 : if (integer_truep (_p1))
90 : {
91 0 : {
92 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
93 0 : {
94 0 : res_ops[0] = captures[0];
95 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 27, __FILE__, __LINE__, false);
96 : return true;
97 : }
98 : }
99 : }
100 : }
101 : break;
102 : }
103 : default:;
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 18 : generic_simplify_3 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (op),
112 : const enum tree_code ARG_UNUSED (shift))
113 : {
114 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
115 18 : if (INTEGRAL_TYPE_P (type)
116 : )
117 : {
118 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail74;
119 18 : {
120 18 : tree res_op0;
121 18 : {
122 18 : tree _o1[2], _r1;
123 18 : _o1[0] = captures[1];
124 18 : _o1[1] = captures[4];
125 18 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
126 18 : res_op0 = _r1;
127 : }
128 18 : tree res_op1;
129 18 : res_op1 = captures[2];
130 18 : tree _r;
131 18 : _r = fold_build2_loc (loc, shift, type, res_op0, res_op1);
132 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 51, __FILE__, __LINE__, true);
133 : return _r;
134 : }
135 0 : next_after_fail74:;
136 : }
137 : return NULL_TREE;
138 : }
139 :
140 : tree
141 589 : generic_simplify_11 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
142 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
143 : {
144 589 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
145 589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail85;
146 589 : {
147 589 : if (! tree_invariant_p (captures[3])) goto next_after_fail85;
148 1 : tree res_op0;
149 1 : {
150 1 : tree _o1[2], _r1;
151 1 : _o1[0] = captures[2];
152 1 : _o1[1] = unshare_expr (captures[3]);
153 1 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
154 1 : res_op0 = _r1;
155 : }
156 1 : tree res_op1;
157 1 : {
158 1 : tree _o1[2], _r1;
159 1 : {
160 1 : tree _o2[1], _r2;
161 1 : _o2[0] = captures[4];
162 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
163 1 : if (EXPR_P (_r2))
164 0 : goto next_after_fail85;
165 1 : _o1[0] = _r2;
166 : }
167 1 : _o1[1] = captures[3];
168 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
169 1 : if (EXPR_P (_r1))
170 0 : goto next_after_fail85;
171 1 : res_op1 = _r1;
172 : }
173 1 : tree _r;
174 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
175 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 60, __FILE__, __LINE__, true);
176 : return _r;
177 : }
178 589 : next_after_fail85:;
179 : return NULL_TREE;
180 : }
181 :
182 : tree
183 10 : generic_simplify_23 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
184 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
185 : {
186 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
187 10 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
188 10 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
189 : )
190 : {
191 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail97;
192 10 : {
193 10 : tree res_op0;
194 10 : {
195 10 : tree _o1[1], _r1;
196 10 : _o1[0] = captures[0];
197 10 : if (TREE_TYPE (_o1[0]) != type)
198 : {
199 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
200 : }
201 : else
202 : _r1 = _o1[0];
203 10 : res_op0 = _r1;
204 : }
205 10 : tree res_op1;
206 10 : {
207 10 : tree _o1[1], _r1;
208 10 : _o1[0] = captures[1];
209 10 : if (TREE_TYPE (_o1[0]) != type)
210 : {
211 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
212 : }
213 : else
214 : _r1 = _o1[0];
215 10 : res_op1 = _r1;
216 : }
217 10 : tree _r;
218 10 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
219 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 72, __FILE__, __LINE__, true);
220 : return _r;
221 : }
222 0 : next_after_fail97:;
223 : }
224 : return NULL_TREE;
225 : }
226 :
227 : tree
228 24 : generic_simplify_34 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
229 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
230 : const enum tree_code ARG_UNUSED (op),
231 : const enum tree_code ARG_UNUSED (cmp),
232 : const enum tree_code ARG_UNUSED (icmp))
233 : {
234 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
235 24 : if (invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
236 : )
237 : {
238 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail110;
239 24 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail110;
240 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail110;
241 24 : {
242 24 : tree res_op0;
243 24 : res_op0 = captures[1];
244 24 : tree res_op1;
245 24 : res_op1 = captures[4];
246 24 : tree res_op2;
247 24 : res_op2 = captures[7];
248 24 : tree _r;
249 24 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
250 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 84, __FILE__, __LINE__, true);
251 : return _r;
252 : }
253 24 : next_after_fail110:;
254 : }
255 : return NULL_TREE;
256 : }
257 :
258 : tree
259 56 : generic_simplify_39 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
260 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
261 : const enum tree_code ARG_UNUSED (inner_op),
262 : const enum tree_code ARG_UNUSED (outer_op))
263 : {
264 56 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
265 56 : {
266 56 : bool fail = false;
267 56 : wide_int zero_mask_not;
268 56 : wide_int C0;
269 56 : wide_int cst_emit;
270 56 : if (TREE_CODE (captures[1]) == SSA_NAME)
271 0 : zero_mask_not = get_nonzero_bits (captures[1]);
272 : else
273 : fail = true;
274 56 : if (inner_op == BIT_XOR_EXPR)
275 : {
276 33 : C0 = wi::bit_and_not (wi::to_wide (captures[2]), wi::to_wide (captures[3]));
277 33 : cst_emit = C0 | wi::to_wide (captures[3]);
278 : }
279 : else
280 : {
281 23 : C0 = wi::to_wide (captures[2]);
282 23 : cst_emit = C0 ^ wi::to_wide (captures[3]);
283 : }
284 56 : if (!fail && (C0 & zero_mask_not) == 0
285 : )
286 : {
287 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail115;
288 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail115;
289 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail115;
290 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail115;
291 0 : {
292 0 : tree res_op0;
293 0 : res_op0 = captures[1];
294 0 : tree res_op1;
295 0 : res_op1 = wide_int_to_tree (type, cst_emit);
296 0 : tree _r;
297 0 : _r = fold_build2_loc (loc, outer_op, type, res_op0, res_op1);
298 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 88, __FILE__, __LINE__, true);
299 : return _r;
300 : }
301 56 : next_after_fail115:;
302 : }
303 : else
304 : {
305 56 : if (!fail && (wi::to_wide (captures[3]) & zero_mask_not) == 0
306 : )
307 : {
308 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail116;
309 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail116;
310 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail116;
311 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail116;
312 0 : {
313 0 : tree res_op0;
314 0 : res_op0 = captures[1];
315 0 : tree res_op1;
316 0 : res_op1 = wide_int_to_tree (type, cst_emit);
317 0 : tree _r;
318 0 : _r = fold_build2_loc (loc, inner_op, type, res_op0, res_op1);
319 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 89, __FILE__, __LINE__, true);
320 : return _r;
321 : }
322 56 : next_after_fail116:;
323 : }
324 : }
325 56 : }
326 56 : return NULL_TREE;
327 : }
328 :
329 : tree
330 312 : generic_simplify_54 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
331 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
332 : const enum tree_code ARG_UNUSED (outer_op),
333 : const enum tree_code ARG_UNUSED (inner_op))
334 : {
335 312 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
336 312 : if (real_zerop (captures[2])
337 34 : && real_zerop (captures[3])
338 346 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
339 : )
340 : {
341 10 : {
342 10 : bool inner_plus = ((inner_op == PLUS_EXPR)
343 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[2])));
344 10 : bool outer_plus
345 10 : = ((outer_op == PLUS_EXPR)
346 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[3])));
347 10 : if (outer_plus && !inner_plus
348 : )
349 : {
350 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail133;
351 2 : {
352 2 : tree res_op0;
353 2 : res_op0 = captures[1];
354 2 : tree res_op1;
355 2 : res_op1 = captures[3];
356 2 : tree _r;
357 2 : _r = fold_build2_loc (loc, outer_op, type, res_op0, res_op1);
358 2 : if (TREE_SIDE_EFFECTS (captures[2]))
359 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
360 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 102, __FILE__, __LINE__, true);
361 : return _r;
362 : }
363 0 : next_after_fail133:;
364 : }
365 : else
366 : {
367 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail134;
368 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail134;
369 8 : {
370 8 : tree _r;
371 8 : _r = captures[0];
372 8 : if (TREE_SIDE_EFFECTS (captures[3]))
373 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
374 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 103, __FILE__, __LINE__, true);
375 : return _r;
376 : }
377 312 : next_after_fail134:;
378 : }
379 : }
380 : }
381 : return NULL_TREE;
382 : }
383 :
384 : tree
385 7178340 : generic_simplify_71 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
386 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
387 : const enum tree_code ARG_UNUSED (op))
388 : {
389 7178340 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
390 7178340 : if (!TYPE_SATURATING (type)
391 : )
392 : {
393 7178340 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
394 13958977 : && !FIXED_POINT_TYPE_P (type)
395 : )
396 : {
397 6780637 : if (INTEGRAL_TYPE_P (type)
398 6780339 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
399 5452443 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
400 4640372 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
401 4017723 : && !TYPE_OVERFLOW_TRAPS (type)
402 10798360 : && !TYPE_OVERFLOW_SANITIZED (type)
403 : )
404 : {
405 4017452 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail159;
406 4017452 : {
407 4017452 : tree res_op0;
408 4017452 : {
409 4017452 : tree _o1[2], _r1;
410 4017452 : _o1[0] = captures[0];
411 4017452 : _o1[1] = captures[1];
412 4017452 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
413 4017452 : if (EXPR_P (_r1))
414 4006821 : goto next_after_fail159;
415 10631 : res_op0 = _r1;
416 : }
417 10631 : tree _r;
418 10631 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
419 10631 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 127, __FILE__, __LINE__, true);
420 : return _r;
421 : }
422 7178340 : next_after_fail159:;
423 : }
424 : }
425 : }
426 : return NULL_TREE;
427 : }
428 :
429 : tree
430 0 : generic_simplify_81 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
431 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
432 : {
433 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
434 0 : if (VECTOR_TYPE_P (type)
435 0 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
436 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3])))
437 0 : && (TYPE_MODE (TREE_TYPE (type))
438 0 : == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))
439 : )
440 : {
441 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail170;
442 0 : {
443 0 : tree res_op0;
444 0 : res_op0 = captures[0];
445 0 : tree res_op1;
446 0 : {
447 0 : tree _o1[1], _r1;
448 0 : {
449 0 : tree _o2[3], _r2;
450 0 : _o2[0] = captures[2];
451 0 : {
452 0 : tree _o3[1], _r3;
453 0 : _o3[0] = captures[3];
454 0 : _r3 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
455 0 : _o2[1] = _r3;
456 : }
457 0 : _o2[2] = captures[4];
458 0 : _r2 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o2[1]), _o2[0], _o2[1], _o2[2]);
459 0 : _o1[0] = _r2;
460 : }
461 0 : if (TREE_TYPE (_o1[0]) != type)
462 : {
463 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
464 : }
465 : else
466 : _r1 = _o1[0];
467 0 : res_op1 = _r1;
468 : }
469 0 : tree _r;
470 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
471 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 138, __FILE__, __LINE__, true);
472 : return _r;
473 : }
474 0 : next_after_fail170:;
475 : }
476 : return NULL_TREE;
477 : }
478 :
479 : tree
480 0 : generic_simplify_88 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
481 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
482 : const enum tree_code ARG_UNUSED (op))
483 : {
484 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
485 0 : if (types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
486 0 : && ((ANY_INTEGRAL_TYPE_P (type)
487 0 : && !TYPE_OVERFLOW_TRAPS (type)
488 0 : && !TYPE_OVERFLOW_SANITIZED (type))
489 0 : || (FLOAT_TYPE_P (type)
490 0 : && flag_associative_math
491 0 : && !HONOR_SIGNED_ZEROS (type)
492 0 : && !flag_trapping_math))
493 0 : && target_supports_op_p (TREE_TYPE (captures[1]), op, optab_vector)
494 : )
495 : {
496 0 : {
497 0 : tree vtype = (ANY_INTEGRAL_TYPE_P (type)
498 0 : ? unsigned_type_for (TREE_TYPE (captures[1]))
499 0 : : TREE_TYPE (captures[1]));
500 0 : tree stype = TREE_TYPE (vtype);
501 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail178;
502 0 : {
503 0 : tree res_op0;
504 0 : {
505 0 : tree _o1[1], _r1;
506 0 : {
507 0 : tree _o2[2], _r2;
508 0 : {
509 0 : tree _o3[1], _r3;
510 0 : _o3[0] = captures[1];
511 0 : if (TREE_TYPE (_o3[0]) != vtype)
512 : {
513 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vtype, _o3[0]);
514 : }
515 : else
516 : _r3 = _o3[0];
517 0 : _o2[0] = _r3;
518 : }
519 0 : {
520 0 : tree _o3[1], _r3;
521 0 : _o3[0] = captures[3];
522 0 : if (TREE_TYPE (_o3[0]) != vtype)
523 : {
524 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vtype, _o3[0]);
525 : }
526 : else
527 : _r3 = _o3[0];
528 0 : _o2[1] = _r3;
529 : }
530 0 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
531 0 : _o1[0] = _r2;
532 : }
533 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_REDUC_PLUS, stype, 1, _o1[0]);
534 0 : if (!_r1)
535 0 : goto next_after_fail178;
536 0 : res_op0 = _r1;
537 : }
538 0 : tree _r;
539 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
540 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 146, __FILE__, __LINE__, true);
541 : return _r;
542 : }
543 0 : next_after_fail178:;
544 : }
545 : }
546 : return NULL_TREE;
547 : }
548 :
549 : tree
550 3043 : generic_simplify_103 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
551 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
552 : {
553 3043 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
554 3043 : if (!TYPE_SATURATING (type)
555 : )
556 : {
557 3043 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
558 3043 : && !TYPE_OVERFLOW_SANITIZED (type)
559 : )
560 : {
561 13 : {
562 13 : tree t1 = type;
563 13 : if (INTEGRAL_TYPE_P (type)
564 21 : && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
565 8 : t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]);
566 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail193;
567 13 : {
568 13 : tree res_op0;
569 13 : {
570 13 : tree _o1[2], _r1;
571 13 : {
572 13 : tree _o2[1], _r2;
573 13 : _o2[0] = captures[0];
574 13 : if (TREE_TYPE (_o2[0]) != t1)
575 : {
576 8 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
577 : }
578 : else
579 : _r2 = _o2[0];
580 13 : _o1[0] = _r2;
581 : }
582 13 : {
583 13 : tree _o2[1], _r2;
584 13 : _o2[0] = captures[1];
585 13 : if (TREE_TYPE (_o2[0]) != t1)
586 : {
587 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
588 : }
589 : else
590 : _r2 = _o2[0];
591 13 : _o1[1] = _r2;
592 : }
593 13 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
594 13 : res_op0 = _r1;
595 : }
596 13 : tree _r;
597 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
598 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 160, __FILE__, __LINE__, true);
599 : return _r;
600 : }
601 0 : next_after_fail193:;
602 : }
603 : }
604 : }
605 : return NULL_TREE;
606 : }
607 :
608 : tree
609 0 : generic_simplify_115 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
610 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
611 : {
612 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
613 0 : if (VECTOR_TYPE_P (type)
614 0 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
615 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3])))
616 0 : && (TYPE_MODE (TREE_TYPE (type))
617 0 : == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))
618 : )
619 : {
620 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail211;
621 0 : {
622 0 : tree res_op0;
623 0 : res_op0 = captures[0];
624 0 : tree res_op1;
625 0 : {
626 0 : tree _o1[1], _r1;
627 0 : {
628 0 : tree _o2[3], _r2;
629 0 : _o2[0] = captures[2];
630 0 : {
631 0 : tree _o3[1], _r3;
632 0 : _o3[0] = captures[3];
633 0 : _r3 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
634 0 : _o2[1] = _r3;
635 : }
636 0 : _o2[2] = captures[4];
637 0 : _r2 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o2[1]), _o2[0], _o2[1], _o2[2]);
638 0 : _o1[0] = _r2;
639 : }
640 0 : if (TREE_TYPE (_o1[0]) != type)
641 : {
642 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
643 : }
644 : else
645 : _r1 = _o1[0];
646 0 : res_op1 = _r1;
647 : }
648 0 : tree _r;
649 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
650 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 178, __FILE__, __LINE__, true);
651 : return _r;
652 : }
653 0 : next_after_fail211:;
654 : }
655 : return NULL_TREE;
656 : }
657 :
658 : tree
659 2 : generic_simplify_122 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
660 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
661 : const enum tree_code ARG_UNUSED (bitop),
662 : const enum tree_code ARG_UNUSED (cmp))
663 : {
664 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
665 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
666 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[4]))
667 2 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[4]))
668 : )
669 : {
670 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail221;
671 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail221;
672 0 : {
673 0 : tree res_op0;
674 0 : {
675 0 : tree _o1[2], _r1;
676 0 : _o1[0] = captures[1];
677 0 : {
678 0 : tree _o2[1], _r2;
679 0 : _o2[0] = captures[4];
680 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
681 : {
682 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
683 : }
684 : else
685 : _r2 = _o2[0];
686 0 : _o1[1] = _r2;
687 : }
688 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
689 0 : res_op0 = _r1;
690 : }
691 0 : tree res_op1;
692 0 : res_op1 = captures[2];
693 0 : tree _r;
694 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
695 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 186, __FILE__, __LINE__, true);
696 : return _r;
697 : }
698 2 : next_after_fail221:;
699 : }
700 : else
701 : {
702 4 : if (VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
703 2 : && VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[4]))
704 2 : && vector_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[4]))
705 2 : && single_use (captures[0]) && single_use (captures[3])
706 : )
707 : {
708 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail222;
709 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail222;
710 2 : {
711 2 : tree res_op0;
712 2 : {
713 2 : tree _o1[2], _r1;
714 2 : _o1[0] = captures[1];
715 2 : {
716 2 : tree _o2[1], _r2;
717 2 : _o2[0] = captures[4];
718 2 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
719 : {
720 2 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
721 : }
722 : else
723 : _r2 = _o2[0];
724 2 : _o1[1] = _r2;
725 : }
726 2 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
727 2 : res_op0 = _r1;
728 : }
729 2 : tree res_op1;
730 2 : res_op1 = captures[2];
731 2 : tree _r;
732 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
733 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 187, __FILE__, __LINE__, true);
734 : return _r;
735 : }
736 2 : next_after_fail222:;
737 : }
738 : }
739 : return NULL_TREE;
740 : }
741 :
742 : tree
743 0 : generic_simplify_148 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
744 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
745 : const enum tree_code ARG_UNUSED (op))
746 : {
747 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
748 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
749 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
750 : )
751 : {
752 0 : if (single_use (captures[4]) && single_use (captures[5])
753 : )
754 : {
755 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail248;
756 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail248;
757 0 : {
758 0 : tree res_op0;
759 0 : res_op0 = captures[0];
760 0 : tree res_op1;
761 0 : {
762 0 : tree _o1[1], _r1;
763 0 : _o1[0] = captures[6];
764 0 : if (TREE_TYPE (_o1[0]) != type)
765 : {
766 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
767 : }
768 : else
769 : _r1 = _o1[0];
770 0 : res_op1 = _r1;
771 : }
772 0 : tree _r;
773 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
774 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 206, __FILE__, __LINE__, true);
775 : return _r;
776 : }
777 0 : next_after_fail248:;
778 : }
779 : else
780 : {
781 : if (single_use (captures[0]) && single_use (captures[1])
782 : )
783 : {
784 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail249;
785 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail249;
786 : {
787 : tree res_op0;
788 : {
789 : tree _o1[1], _r1;
790 : _o1[0] = captures[3];
791 : if (TREE_TYPE (_o1[0]) != type)
792 : {
793 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
794 : }
795 : else
796 : _r1 = _o1[0];
797 : res_op0 = _r1;
798 : }
799 : tree res_op1;
800 : res_op1 = captures[4];
801 : tree _r;
802 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
803 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 207, __FILE__, __LINE__, true);
804 : return _r;
805 : }
806 0 : next_after_fail249:;
807 : }
808 : }
809 : }
810 : return NULL_TREE;
811 : }
812 :
813 : tree
814 0 : generic_simplify_162 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
815 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
816 : const enum tree_code ARG_UNUSED (cmp),
817 : const enum tree_code ARG_UNUSED (icmp))
818 : {
819 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
820 0 : if (INTEGRAL_TYPE_P (type)
821 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[1])) == icmp
822 0 : && canonicalize_math_after_vectorization_p ()
823 : )
824 : {
825 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail267;
826 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail267;
827 : {
828 : tree res_op0;
829 : {
830 : tree _o1[3], _r1;
831 : _o1[0] = captures[0];
832 : _o1[1] = captures[3];
833 : _o1[2] = captures[5];
834 : _r1 = fold_build3_loc (loc, COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
835 : res_op0 = _r1;
836 : }
837 : tree res_op1;
838 : res_op1 = build_one_cst (type);
839 : tree _r;
840 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
841 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
842 : return _r;
843 : }
844 0 : next_after_fail267:;
845 : }
846 0 : return NULL_TREE;
847 : }
848 :
849 : tree
850 0 : generic_simplify_175 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
851 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
852 : {
853 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
854 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail302;
855 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail302;
856 0 : {
857 0 : tree _r;
858 0 : _r = constant_boolean_node (true, type);
859 0 : if (TREE_SIDE_EFFECTS (captures[1]))
860 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
861 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 241, __FILE__, __LINE__, true);
862 : return _r;
863 : }
864 0 : next_after_fail302:;
865 : return NULL_TREE;
866 : }
867 :
868 : tree
869 0 : generic_simplify_178 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
870 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
871 : const enum tree_code ARG_UNUSED (code2),
872 : const enum tree_code ARG_UNUSED (code1))
873 : {
874 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
875 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
876 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
877 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
878 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
879 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
880 0 : && bitwise_equal_p (captures[2], captures[5]))
881 : )
882 : {
883 0 : {
884 0 : bool one_before = false;
885 0 : bool one_after = false;
886 0 : int cmp = 0;
887 0 : bool allbits = true;
888 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
889 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
890 : {
891 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
892 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
893 0 : auto t2 = wi::to_wide (captures[5]);
894 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
895 0 : if (cmp < 0
896 0 : && t1 == t2 - 1)
897 : one_before = true;
898 0 : if (cmp > 0
899 0 : && t1 == t2 + 1)
900 : one_after = true;
901 : }
902 0 : bool val;
903 0 : switch (code2)
904 : {
905 0 : case EQ_EXPR: val = (cmp == 0); break;
906 0 : case NE_EXPR: val = (cmp != 0); break;
907 0 : case LT_EXPR: val = (cmp < 0); break;
908 0 : case GT_EXPR: val = (cmp > 0); break;
909 0 : case LE_EXPR: val = (cmp <= 0); break;
910 0 : case GE_EXPR: val = (cmp >= 0); break;
911 0 : default: gcc_unreachable ();
912 : }
913 0 : if (code1 == EQ_EXPR && val
914 : )
915 : {
916 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail306;
917 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail306;
918 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail306;
919 0 : {
920 0 : tree _r;
921 0 : _r = captures[3];
922 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 223, __FILE__, __LINE__, true);
923 : return _r;
924 : }
925 0 : next_after_fail306:;
926 : }
927 : else
928 : {
929 0 : if (code1 == NE_EXPR && val && allbits
930 : )
931 : {
932 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail307;
933 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail307;
934 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail307;
935 0 : {
936 0 : tree _r;
937 0 : _r = constant_boolean_node (true, type);
938 0 : if (TREE_SIDE_EFFECTS (captures[1]))
939 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
940 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 224, __FILE__, __LINE__, true);
941 : return _r;
942 : }
943 0 : next_after_fail307:;
944 : }
945 : else
946 : {
947 0 : if (code1 == NE_EXPR && !val && allbits
948 : )
949 : {
950 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail308;
951 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail308;
952 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail308;
953 0 : {
954 0 : tree _r;
955 0 : _r = captures[0];
956 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 225, __FILE__, __LINE__, true);
957 : return _r;
958 : }
959 0 : next_after_fail308:;
960 : }
961 : else
962 : {
963 0 : if (code1 == EQ_EXPR
964 0 : && code2 == GT_EXPR
965 0 : && cmp == 0
966 0 : && allbits
967 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
968 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
969 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
970 : )
971 : {
972 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail309;
973 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail309;
974 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail309;
975 0 : {
976 0 : tree res_op0;
977 0 : res_op0 = captures[4];
978 0 : tree res_op1;
979 0 : res_op1 = captures[5];
980 0 : tree _r;
981 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
982 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 226, __FILE__, __LINE__, true);
983 : return _r;
984 : }
985 0 : next_after_fail309:;
986 : }
987 : else
988 : {
989 0 : if (code1 == EQ_EXPR
990 0 : && code2 == LT_EXPR
991 0 : && cmp == 0
992 0 : && allbits
993 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
994 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
995 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
996 : )
997 : {
998 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail310;
999 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail310;
1000 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail310;
1001 0 : {
1002 0 : tree res_op0;
1003 0 : res_op0 = captures[4];
1004 0 : tree res_op1;
1005 0 : res_op1 = captures[5];
1006 0 : tree _r;
1007 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1008 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 227, __FILE__, __LINE__, true);
1009 : return _r;
1010 : }
1011 0 : next_after_fail310:;
1012 : }
1013 : else
1014 : {
1015 0 : if (code1 == EQ_EXPR
1016 0 : && code2 == GE_EXPR
1017 : && one_before
1018 0 : && allbits
1019 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1020 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
1021 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1022 : )
1023 : {
1024 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail311;
1025 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail311;
1026 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail311;
1027 0 : {
1028 0 : tree res_op0;
1029 0 : res_op0 = captures[4];
1030 0 : tree res_op1;
1031 0 : {
1032 0 : tree _o1[1], _r1;
1033 0 : _o1[0] = captures[2];
1034 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1035 : {
1036 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1037 : }
1038 : else
1039 : _r1 = _o1[0];
1040 0 : res_op1 = _r1;
1041 : }
1042 0 : tree _r;
1043 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1044 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 228, __FILE__, __LINE__, true);
1045 : return _r;
1046 : }
1047 0 : next_after_fail311:;
1048 : }
1049 : else
1050 : {
1051 0 : if (code1 == EQ_EXPR
1052 0 : && code2 == LE_EXPR
1053 : && one_after
1054 0 : && allbits
1055 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1056 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1057 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1058 : )
1059 : {
1060 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail312;
1061 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail312;
1062 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail312;
1063 0 : {
1064 0 : tree res_op0;
1065 0 : res_op0 = captures[4];
1066 0 : tree res_op1;
1067 0 : {
1068 0 : tree _o1[1], _r1;
1069 0 : _o1[0] = captures[2];
1070 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1071 : {
1072 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1073 : }
1074 : else
1075 : _r1 = _o1[0];
1076 0 : res_op1 = _r1;
1077 : }
1078 0 : tree _r;
1079 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1080 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
1081 : return _r;
1082 : }
1083 0 : next_after_fail312:;
1084 : }
1085 : }
1086 : }
1087 : }
1088 : }
1089 : }
1090 : }
1091 : }
1092 : }
1093 : return NULL_TREE;
1094 : }
1095 :
1096 : tree
1097 189 : generic_simplify_218 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1098 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1099 : const enum tree_code ARG_UNUSED (cmp))
1100 : {
1101 189 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1102 378 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1103 356 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE(captures[0]))
1104 : )
1105 : {
1106 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail362;
1107 3 : {
1108 3 : tree res_op0;
1109 3 : res_op0 = captures[0];
1110 3 : tree res_op1;
1111 3 : res_op1 = build_zero_cst (TREE_TYPE(captures[0]));
1112 3 : tree _r;
1113 3 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1114 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 274, __FILE__, __LINE__, true);
1115 : return _r;
1116 : }
1117 0 : next_after_fail362:;
1118 : }
1119 : return NULL_TREE;
1120 : }
1121 :
1122 : tree
1123 33 : generic_simplify_227 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1124 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1125 : const enum tree_code ARG_UNUSED (cmp),
1126 : const enum tree_code ARG_UNUSED (icmp))
1127 : {
1128 33 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1129 66 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1130 29 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1131 13 : && type_has_mode_precision_p (TREE_TYPE (captures[0]))
1132 13 : && types_match (captures[0], captures[2])
1133 13 : && tree_fits_shwi_p (captures[1])
1134 13 : && tree_to_shwi (captures[1]) > 0
1135 46 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
1136 : )
1137 : {
1138 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail375;
1139 13 : {
1140 13 : tree res_op0;
1141 13 : {
1142 13 : tree _o1[2], _r1;
1143 13 : _o1[0] = captures[0];
1144 13 : _o1[1] = captures[2];
1145 13 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1146 13 : res_op0 = _r1;
1147 : }
1148 13 : tree res_op1;
1149 13 : {
1150 13 : tree _o1[2], _r1;
1151 13 : _o1[0] = build_one_cst (TREE_TYPE (captures[0]));
1152 13 : _o1[1] = captures[1];
1153 13 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1154 13 : res_op1 = _r1;
1155 : }
1156 13 : tree _r;
1157 13 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1158 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 286, __FILE__, __LINE__, true);
1159 : return _r;
1160 : }
1161 0 : next_after_fail375:;
1162 : }
1163 : return NULL_TREE;
1164 : }
1165 :
1166 : tree
1167 0 : generic_simplify_235 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1168 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1169 : const enum tree_code ARG_UNUSED (op))
1170 : {
1171 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1172 0 : if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
1173 : )
1174 : {
1175 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail396;
1176 0 : {
1177 0 : tree res_op0;
1178 0 : res_op0 = captures[3];
1179 0 : tree res_op1;
1180 0 : res_op1 = captures[2];
1181 0 : tree _r;
1182 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1183 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1184 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1185 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 307, __FILE__, __LINE__, true);
1186 : return _r;
1187 : }
1188 0 : next_after_fail396:;
1189 : }
1190 : return NULL_TREE;
1191 : }
1192 :
1193 : tree
1194 40748199 : generic_simplify_243 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1195 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1196 : const enum tree_code ARG_UNUSED (cmp))
1197 : {
1198 40748199 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1199 81496574 : if (wi::bit_and_not (get_known_nonzero_bits (captures[1]),
1200 122244597 : get_nonzero_bits (captures[0])) != 0
1201 : )
1202 : {
1203 80270 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail404;
1204 80270 : {
1205 80270 : tree _r;
1206 80270 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1207 80270 : if (TREE_SIDE_EFFECTS (captures[0]))
1208 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1209 80270 : if (TREE_SIDE_EFFECTS (captures[1]))
1210 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1211 80270 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 314, __FILE__, __LINE__, true);
1212 : return _r;
1213 : }
1214 0 : next_after_fail404:;
1215 : }
1216 : return NULL_TREE;
1217 : }
1218 :
1219 : tree
1220 13 : generic_simplify_251 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1221 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1222 : const enum tree_code ARG_UNUSED (cmp))
1223 : {
1224 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1225 13 : if (tree_fits_shwi_p (captures[3])
1226 13 : && tree_to_shwi (captures[3]) > 0
1227 26 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
1228 : )
1229 : {
1230 13 : if (tree_to_shwi (captures[3]) > wi::ctz (wi::to_wide (captures[5]))
1231 : )
1232 : {
1233 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail415;
1234 0 : {
1235 0 : tree _r;
1236 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1237 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1238 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1239 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1240 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1241 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1242 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1243 0 : if (TREE_SIDE_EFFECTS (captures[5]))
1244 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
1245 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 325, __FILE__, __LINE__, true);
1246 : return _r;
1247 : }
1248 0 : next_after_fail415:;
1249 : }
1250 : else
1251 : {
1252 13 : {
1253 13 : wide_int c1 = wi::to_wide (captures[3]);
1254 13 : wide_int c2 = wi::lrshift (wi::to_wide (captures[4]), c1);
1255 13 : wide_int c3 = wi::lrshift (wi::to_wide (captures[5]), c1);
1256 13 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail416;
1257 13 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail416;
1258 13 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail416;
1259 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail416;
1260 13 : {
1261 13 : tree res_op0;
1262 13 : {
1263 13 : tree _o1[2], _r1;
1264 13 : _o1[0] = captures[2];
1265 13 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[2]), c2);
1266 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1267 13 : res_op0 = _r1;
1268 : }
1269 13 : tree res_op1;
1270 13 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[2]), c3);
1271 13 : tree _r;
1272 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1273 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 326, __FILE__, __LINE__, true);
1274 13 : return _r;
1275 : }
1276 0 : next_after_fail416:;
1277 13 : }
1278 : }
1279 : }
1280 : return NULL_TREE;
1281 : }
1282 :
1283 : tree
1284 25712 : generic_simplify_264 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1285 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1286 : const enum tree_code ARG_UNUSED (cmp),
1287 : const enum tree_code ARG_UNUSED (icmp),
1288 : const enum tree_code ARG_UNUSED (ncmp))
1289 : {
1290 25712 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1291 25712 : if (types_match (type, TREE_TYPE (captures[0]))
1292 : )
1293 : {
1294 25047 : {
1295 25047 : enum tree_code ic = invert_tree_comparison
1296 25047 : (cmp, HONOR_NANS (captures[1]));
1297 25047 : if (ic == icmp
1298 : )
1299 : {
1300 24803 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail438;
1301 24803 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail438;
1302 24803 : {
1303 24803 : tree res_op0;
1304 24803 : res_op0 = captures[1];
1305 24803 : tree res_op1;
1306 24803 : res_op1 = captures[2];
1307 24803 : tree _r;
1308 24803 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1309 24803 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 348, __FILE__, __LINE__, true);
1310 : return _r;
1311 : }
1312 25712 : next_after_fail438:;
1313 : }
1314 : else
1315 : {
1316 244 : if (ic == ncmp
1317 : )
1318 : {
1319 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail439;
1320 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail439;
1321 0 : {
1322 0 : tree res_op0;
1323 0 : res_op0 = captures[1];
1324 0 : tree res_op1;
1325 0 : res_op1 = captures[2];
1326 0 : tree _r;
1327 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1328 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 349, __FILE__, __LINE__, true);
1329 : return _r;
1330 : }
1331 25712 : next_after_fail439:;
1332 : }
1333 : }
1334 : }
1335 : }
1336 : return NULL_TREE;
1337 : }
1338 :
1339 : tree
1340 6528973 : generic_simplify_274 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1341 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1342 : const enum tree_code ARG_UNUSED (cmp))
1343 : {
1344 6528973 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1345 6528973 : if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[1]))
1346 : )
1347 : {
1348 1708 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail454;
1349 1708 : {
1350 1708 : tree res_op0;
1351 1708 : res_op0 = captures[0];
1352 1708 : tree res_op1;
1353 1708 : res_op1 = build_real (TREE_TYPE (captures[1]), dconst0);
1354 1708 : tree _r;
1355 1708 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1356 1708 : if (TREE_SIDE_EFFECTS (captures[1]))
1357 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1358 1708 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 362, __FILE__, __LINE__, true);
1359 : return _r;
1360 : }
1361 0 : next_after_fail454:;
1362 : }
1363 : else
1364 : {
1365 6527265 : if (TREE_CODE (captures[0]) == REAL_CST
1366 6527265 : && REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[0]))
1367 : )
1368 : {
1369 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail455;
1370 0 : {
1371 0 : tree res_op0;
1372 0 : res_op0 = build_real (TREE_TYPE (captures[0]), dconst0);
1373 0 : tree res_op1;
1374 0 : res_op1 = captures[1];
1375 0 : tree _r;
1376 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1377 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1378 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1379 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 363, __FILE__, __LINE__, true);
1380 : return _r;
1381 : }
1382 0 : next_after_fail455:;
1383 : }
1384 : else
1385 : {
1386 6527265 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
1387 906 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1388 330 : && !tree_expr_signaling_nan_p (captures[1])
1389 6527565 : && !tree_expr_maybe_signaling_nan_p (captures[0])
1390 : )
1391 : {
1392 300 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail456;
1393 300 : {
1394 300 : tree _r;
1395 300 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1396 300 : if (TREE_SIDE_EFFECTS (captures[0]))
1397 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1398 300 : if (TREE_SIDE_EFFECTS (captures[1]))
1399 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1400 300 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 364, __FILE__, __LINE__, true);
1401 : return _r;
1402 : }
1403 0 : next_after_fail456:;
1404 : }
1405 : else
1406 : {
1407 6526965 : if (TREE_CODE (captures[0]) == REAL_CST
1408 2041 : && REAL_VALUE_ISNAN (TREE_REAL_CST (captures[0]))
1409 1847 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1410 0 : && !tree_expr_signaling_nan_p (captures[0])
1411 6526965 : && !tree_expr_signaling_nan_p (captures[1])
1412 : )
1413 : {
1414 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail457;
1415 0 : {
1416 0 : tree _r;
1417 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1418 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1419 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1420 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1421 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1422 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 365, __FILE__, __LINE__, true);
1423 : return _r;
1424 : }
1425 0 : next_after_fail457:;
1426 : }
1427 : else
1428 : {
1429 6526965 : if (REAL_VALUE_ISINF (TREE_REAL_CST (captures[1]))
1430 7273990 : && MODE_HAS_INFINITIES (TYPE_MODE (TREE_TYPE (captures[1])))
1431 : )
1432 : {
1433 249036 : {
1434 249036 : REAL_VALUE_TYPE max;
1435 249036 : enum tree_code code = cmp;
1436 249036 : bool neg = REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]));
1437 249036 : if (neg)
1438 34091 : code = swap_tree_comparison (code);
1439 249036 : if (code == GT_EXPR
1440 249036 : && !(HONOR_NANS (captures[0]) && flag_trapping_math)
1441 : )
1442 : {
1443 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail458;
1444 21 : {
1445 21 : tree _r;
1446 21 : _r = constant_boolean_node (false, type);
1447 21 : if (TREE_SIDE_EFFECTS (captures[0]))
1448 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1449 21 : if (TREE_SIDE_EFFECTS (captures[1]))
1450 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1451 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 366, __FILE__, __LINE__, true);
1452 72236 : return _r;
1453 : }
1454 0 : next_after_fail458:;
1455 : }
1456 : else
1457 : {
1458 249015 : if (code == LE_EXPR
1459 : )
1460 : {
1461 31949 : if (! HONOR_NANS (captures[0])
1462 : )
1463 : {
1464 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail459;
1465 0 : {
1466 0 : tree _r;
1467 0 : _r = constant_boolean_node (true, type);
1468 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1469 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1470 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1471 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1472 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 367, __FILE__, __LINE__, true);
1473 : return _r;
1474 : }
1475 0 : next_after_fail459:;
1476 : }
1477 : else
1478 : {
1479 31949 : if (!flag_trapping_math
1480 : )
1481 : {
1482 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail460;
1483 16 : {
1484 16 : if (! tree_invariant_p (captures[0])) goto next_after_fail460;
1485 0 : tree res_op0;
1486 0 : res_op0 = unshare_expr (captures[0]);
1487 0 : tree res_op1;
1488 0 : res_op1 = captures[0];
1489 0 : tree _r;
1490 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1491 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1492 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1493 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 368, __FILE__, __LINE__, true);
1494 : return _r;
1495 : }
1496 176800 : next_after_fail460:;
1497 : }
1498 : }
1499 : }
1500 : else
1501 : {
1502 144636 : if ((code == EQ_EXPR && !(HONOR_NANS (captures[0]) && flag_trapping_math))
1503 361666 : || code == GE_EXPR
1504 : )
1505 : {
1506 175 : {
1507 175 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1508 175 : if (neg
1509 : )
1510 : {
1511 69 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail461;
1512 69 : {
1513 69 : tree res_op0;
1514 69 : res_op0 = captures[0];
1515 69 : tree res_op1;
1516 69 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1517 69 : tree _r;
1518 69 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1519 69 : if (TREE_SIDE_EFFECTS (captures[1]))
1520 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1521 69 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 369, __FILE__, __LINE__, true);
1522 : return _r;
1523 : }
1524 0 : next_after_fail461:;
1525 : }
1526 : else
1527 : {
1528 106 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail462;
1529 106 : {
1530 106 : tree res_op0;
1531 106 : res_op0 = captures[0];
1532 106 : tree res_op1;
1533 106 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1534 106 : tree _r;
1535 106 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1536 106 : if (TREE_SIDE_EFFECTS (captures[1]))
1537 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1538 106 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 370, __FILE__, __LINE__, true);
1539 : return _r;
1540 : }
1541 0 : next_after_fail462:;
1542 : }
1543 : }
1544 : }
1545 : else
1546 : {
1547 216891 : if (code == LT_EXPR
1548 : )
1549 : {
1550 118 : {
1551 118 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1552 118 : if (neg
1553 : )
1554 : {
1555 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail463;
1556 40 : {
1557 40 : tree res_op0;
1558 40 : res_op0 = captures[0];
1559 40 : tree res_op1;
1560 40 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1561 40 : tree _r;
1562 40 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1563 40 : if (TREE_SIDE_EFFECTS (captures[1]))
1564 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1565 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 371, __FILE__, __LINE__, true);
1566 : return _r;
1567 : }
1568 0 : next_after_fail463:;
1569 : }
1570 : else
1571 : {
1572 78 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail464;
1573 78 : {
1574 78 : tree res_op0;
1575 78 : res_op0 = captures[0];
1576 78 : tree res_op1;
1577 78 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1578 78 : tree _r;
1579 78 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1580 78 : if (TREE_SIDE_EFFECTS (captures[1]))
1581 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1582 78 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 372, __FILE__, __LINE__, true);
1583 : return _r;
1584 : }
1585 0 : next_after_fail464:;
1586 : }
1587 : }
1588 : }
1589 : else
1590 : {
1591 216773 : if (code == NE_EXPR
1592 : )
1593 : {
1594 71922 : {
1595 71922 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1596 71922 : if (! HONOR_NANS (captures[0])
1597 : )
1598 : {
1599 0 : if (neg
1600 : )
1601 : {
1602 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail465;
1603 0 : {
1604 0 : tree res_op0;
1605 0 : res_op0 = captures[0];
1606 0 : tree res_op1;
1607 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1608 0 : tree _r;
1609 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1610 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1611 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1612 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 373, __FILE__, __LINE__, true);
1613 : return _r;
1614 : }
1615 0 : next_after_fail465:;
1616 : }
1617 : else
1618 : {
1619 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail466;
1620 0 : {
1621 0 : tree res_op0;
1622 0 : res_op0 = captures[0];
1623 0 : tree res_op1;
1624 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1625 0 : tree _r;
1626 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1627 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1628 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1629 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 374, __FILE__, __LINE__, true);
1630 : return _r;
1631 : }
1632 0 : next_after_fail466:;
1633 : }
1634 : }
1635 : else
1636 : {
1637 71922 : if (neg
1638 : )
1639 : {
1640 627 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail467;
1641 627 : {
1642 627 : tree res_op0;
1643 627 : res_op0 = captures[0];
1644 627 : tree res_op1;
1645 627 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1646 627 : tree _r;
1647 627 : _r = fold_build2_loc (loc, UNGE_EXPR, type, res_op0, res_op1);
1648 627 : if (TREE_SIDE_EFFECTS (captures[1]))
1649 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1650 627 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 375, __FILE__, __LINE__, true);
1651 : return _r;
1652 : }
1653 0 : next_after_fail467:;
1654 : }
1655 : else
1656 : {
1657 71295 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail468;
1658 71295 : {
1659 71295 : tree res_op0;
1660 71295 : res_op0 = captures[0];
1661 71295 : tree res_op1;
1662 71295 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1663 71295 : tree _r;
1664 71295 : _r = fold_build2_loc (loc, UNLE_EXPR, type, res_op0, res_op1);
1665 71295 : if (TREE_SIDE_EFFECTS (captures[1]))
1666 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1667 71295 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 376, __FILE__, __LINE__, true);
1668 : return _r;
1669 : }
1670 0 : next_after_fail468:;
1671 : }
1672 : }
1673 : }
1674 : }
1675 : }
1676 : }
1677 : }
1678 : }
1679 : }
1680 : }
1681 : }
1682 : }
1683 : }
1684 : }
1685 : return NULL_TREE;
1686 : }
1687 :
1688 : tree
1689 374 : generic_simplify_315 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1690 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1691 : const enum tree_code ARG_UNUSED (op),
1692 : const combined_fn ARG_UNUSED (ctz))
1693 : {
1694 374 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1695 374 : {
1696 374 : tree type0 = TREE_TYPE (captures[1]);
1697 374 : int prec = TYPE_PRECISION (type0);
1698 374 : bool ok = true;
1699 374 : if (sanitize_flags_p (SANITIZE_BUILTIN)
1700 374 : && (!cfun
1701 64 : || (cfun->curr_properties & PROP_ssa) == 0))
1702 : ok = false;
1703 620 : if (ok && prec <= MAX_FIXED_MODE_SIZE
1704 : )
1705 : {
1706 310 : if (tree_int_cst_sgn (captures[2]) < 0 || wi::to_widest (captures[2]) >= prec
1707 : )
1708 : {
1709 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail582;
1710 36 : {
1711 36 : tree _r;
1712 36 : _r = constant_boolean_node (op != EQ_EXPR, type);
1713 36 : if (TREE_SIDE_EFFECTS (captures[1]))
1714 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1715 36 : if (TREE_SIDE_EFFECTS (captures[2]))
1716 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1717 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 472, __FILE__, __LINE__, true);
1718 310 : return _r;
1719 : }
1720 0 : next_after_fail582:;
1721 : }
1722 : else
1723 : {
1724 274 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail583;
1725 274 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail583;
1726 274 : {
1727 274 : tree res_op0;
1728 274 : {
1729 274 : tree _o1[2], _r1;
1730 274 : _o1[0] = captures[1];
1731 274 : _o1[1] = wide_int_to_tree (type0,
1732 274 : wi::mask (tree_to_uhwi (captures[2]) + 1,
1733 : false, prec));
1734 274 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1735 274 : res_op0 = _r1;
1736 : }
1737 274 : tree res_op1;
1738 274 : res_op1 = wide_int_to_tree (type0,
1739 274 : wi::shifted_mask (tree_to_uhwi (captures[2]), 1,
1740 : false, prec));
1741 274 : tree _r;
1742 274 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1743 274 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 473, __FILE__, __LINE__, true);
1744 : return _r;
1745 : }
1746 64 : next_after_fail583:;
1747 : }
1748 : }
1749 : }
1750 64 : return NULL_TREE;
1751 : }
1752 :
1753 : tree
1754 0 : generic_simplify_326 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1755 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1756 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1757 : {
1758 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1759 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail598;
1760 0 : {
1761 0 : tree _r;
1762 0 : _r = captures[0];
1763 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 488, __FILE__, __LINE__, true);
1764 : return _r;
1765 : }
1766 0 : next_after_fail598:;
1767 0 : return NULL_TREE;
1768 : }
1769 :
1770 : tree
1771 14819 : generic_simplify_333 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1772 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1773 : const enum tree_code ARG_UNUSED (div))
1774 : {
1775 14819 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1776 14819 : if (INTEGRAL_TYPE_P (type)
1777 14785 : && ssa_name_has_boolean_range (captures[1])
1778 14819 : && !flag_non_call_exceptions
1779 : )
1780 : {
1781 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail607;
1782 0 : {
1783 0 : tree _r;
1784 0 : _r = captures[0];
1785 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1786 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1787 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 495, __FILE__, __LINE__, true);
1788 : return _r;
1789 : }
1790 0 : next_after_fail607:;
1791 : }
1792 : return NULL_TREE;
1793 : }
1794 :
1795 : tree
1796 25378 : generic_simplify_339 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1797 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1798 : const enum tree_code ARG_UNUSED (div))
1799 : {
1800 25378 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1801 25378 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1802 : )
1803 : {
1804 25230 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail614;
1805 25230 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail614;
1806 25230 : {
1807 25230 : tree res_op0;
1808 25230 : res_op0 = captures[0];
1809 25230 : tree res_op1;
1810 25230 : res_op1 = wide_int_to_tree
1811 50460 : (type, wi::mask (TYPE_PRECISION (type)
1812 25230 : - wi::exact_log2 (wi::to_wide (captures[1])),
1813 25230 : false, TYPE_PRECISION (type)));
1814 25230 : tree _r;
1815 25230 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
1816 25230 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 502, __FILE__, __LINE__, true);
1817 : return _r;
1818 : }
1819 25378 : next_after_fail614:;
1820 : }
1821 : return NULL_TREE;
1822 : }
1823 :
1824 : tree
1825 933 : generic_simplify_343 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1826 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1827 : const enum tree_code ARG_UNUSED (mod))
1828 : {
1829 933 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1830 933 : if (!integer_zerop (captures[1])
1831 : )
1832 : {
1833 796 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail618;
1834 796 : {
1835 796 : tree _r;
1836 796 : _r = captures[0];
1837 796 : if (TREE_SIDE_EFFECTS (captures[1]))
1838 74 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1839 796 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 506, __FILE__, __LINE__, true);
1840 : return _r;
1841 : }
1842 0 : next_after_fail618:;
1843 : }
1844 : return NULL_TREE;
1845 : }
1846 :
1847 : tree
1848 2 : generic_simplify_351 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1849 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1850 : {
1851 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1852 0 : if (FLOAT_TYPE_P (type)
1853 2 : && ! HONOR_NANS (type)
1854 2 : && ! HONOR_INFINITIES (type)
1855 : )
1856 : {
1857 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail626;
1858 0 : {
1859 0 : tree _r;
1860 0 : _r = build_minus_one_cst (type);
1861 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1862 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1863 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 514, __FILE__, __LINE__, true);
1864 : return _r;
1865 : }
1866 0 : next_after_fail626:;
1867 : }
1868 : return NULL_TREE;
1869 : }
1870 :
1871 : tree
1872 6 : generic_simplify_358 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1873 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1874 : const combined_fn ARG_UNUSED (COS),
1875 : const combined_fn ARG_UNUSED (SIN),
1876 : const combined_fn ARG_UNUSED (TAN))
1877 : {
1878 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1879 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1880 : )
1881 : {
1882 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail635;
1883 6 : {
1884 6 : tree res_op0;
1885 6 : res_op0 = build_one_cst (type);
1886 6 : tree res_op1;
1887 6 : {
1888 6 : tree _o1[1], _r1;
1889 6 : _o1[0] = captures[1];
1890 6 : _r1 = maybe_build_call_expr_loc (loc, TAN, TREE_TYPE (_o1[0]), 1, _o1[0]);
1891 6 : if (!_r1)
1892 0 : goto next_after_fail635;
1893 6 : res_op1 = _r1;
1894 : }
1895 6 : tree _r;
1896 6 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1897 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 523, __FILE__, __LINE__, true);
1898 : return _r;
1899 : }
1900 6 : next_after_fail635:;
1901 : }
1902 : return NULL_TREE;
1903 : }
1904 :
1905 : tree
1906 39 : generic_simplify_366 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1907 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1908 : const enum tree_code ARG_UNUSED (cmp),
1909 : const enum tree_code ARG_UNUSED (minmax))
1910 : {
1911 39 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1912 39 : {
1913 39 : tree_code code = minmax_from_comparison (cmp, captures[0], captures[1], captures[0], captures[4]);
1914 39 : if ((cmp == LT_EXPR || cmp == LE_EXPR)
1915 15 : && code == MIN_EXPR
1916 43 : && integer_nonzerop (fold_build2 (LE_EXPR, boolean_type_node, captures[3], captures[4]))
1917 : )
1918 : {
1919 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail647;
1920 4 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail647;
1921 4 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail647;
1922 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail647;
1923 4 : {
1924 4 : tree res_op0;
1925 4 : res_op0 = captures[2];
1926 4 : tree res_op1;
1927 4 : res_op1 = captures[4];
1928 4 : tree _r;
1929 4 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
1930 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 535, __FILE__, __LINE__, true);
1931 : return _r;
1932 : }
1933 39 : next_after_fail647:;
1934 : }
1935 : else
1936 : {
1937 35 : if ((cmp == GT_EXPR || cmp == GE_EXPR)
1938 24 : && code == MAX_EXPR
1939 59 : && integer_nonzerop (fold_build2 (GE_EXPR, boolean_type_node, captures[3], captures[4]))
1940 : )
1941 : {
1942 10 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail648;
1943 10 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail648;
1944 10 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail648;
1945 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail648;
1946 10 : {
1947 10 : tree res_op0;
1948 10 : res_op0 = captures[2];
1949 10 : tree res_op1;
1950 10 : res_op1 = captures[4];
1951 10 : tree _r;
1952 10 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
1953 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 536, __FILE__, __LINE__, true);
1954 : return _r;
1955 : }
1956 39 : next_after_fail648:;
1957 : }
1958 : }
1959 : }
1960 : return NULL_TREE;
1961 : }
1962 :
1963 : tree
1964 0 : generic_simplify_381 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1965 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1966 : {
1967 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1968 0 : if (INTEGRAL_TYPE_P (type)
1969 : )
1970 : {
1971 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail668;
1972 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail668;
1973 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail668;
1974 0 : {
1975 0 : tree _r;
1976 0 : _r = captures[2];
1977 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 556, __FILE__, __LINE__, true);
1978 : return _r;
1979 : }
1980 0 : next_after_fail668:;
1981 : }
1982 : return NULL_TREE;
1983 : }
1984 :
1985 : tree
1986 36 : generic_simplify_385 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1987 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1988 : const enum tree_code ARG_UNUSED (op))
1989 : {
1990 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1991 36 : {
1992 36 : auto c1 = wi::to_wide (captures[1]);
1993 36 : auto c2 = wi::to_wide (captures[2]);
1994 36 : if (wi::popcount (c1) == 1
1995 120 : && ((op == PLUS_EXPR && wi::eq_p (wi::neg (c2), c1))
1996 48 : || (op == BIT_AND_EXPR && wi::eq_p (wi::bit_not (c2), c1)))
1997 : )
1998 : {
1999 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail672;
2000 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail672;
2001 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail672;
2002 24 : {
2003 24 : tree res_op0;
2004 24 : res_op0 = captures[0];
2005 24 : tree res_op1;
2006 24 : res_op1 = captures[1];
2007 24 : tree _r;
2008 24 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
2009 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 560, __FILE__, __LINE__, true);
2010 24 : return _r;
2011 : }
2012 12 : next_after_fail672:;
2013 : }
2014 : }
2015 12 : return NULL_TREE;
2016 : }
2017 :
2018 : tree
2019 22 : generic_simplify_396 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2020 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2021 : const enum tree_code ARG_UNUSED (cmp))
2022 : {
2023 22 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2024 22 : if (INTEGRAL_TYPE_P (type)
2025 22 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2026 22 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2027 44 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (type)
2028 : )
2029 : {
2030 22 : {
2031 22 : tree shifter = build_int_cst (integer_type_node, TYPE_PRECISION (type) - 1);
2032 22 : if (cmp == LT_EXPR
2033 : )
2034 : {
2035 13 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail684;
2036 13 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail684;
2037 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail684;
2038 13 : {
2039 13 : tree res_op0;
2040 13 : {
2041 13 : tree _o1[1], _r1;
2042 13 : {
2043 13 : tree _o2[2], _r2;
2044 13 : _o2[0] = captures[0];
2045 13 : _o2[1] = shifter;
2046 13 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2047 13 : _o1[0] = _r2;
2048 : }
2049 13 : if (TREE_TYPE (_o1[0]) != type)
2050 : {
2051 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2052 : }
2053 : else
2054 : _r1 = _o1[0];
2055 13 : res_op0 = _r1;
2056 : }
2057 13 : tree res_op1;
2058 13 : res_op1 = captures[1];
2059 13 : tree _r;
2060 13 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
2061 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 570, __FILE__, __LINE__, true);
2062 : return _r;
2063 : }
2064 22 : next_after_fail684:;
2065 : }
2066 : else
2067 : {
2068 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail685;
2069 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail685;
2070 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail685;
2071 9 : {
2072 9 : tree res_op0;
2073 9 : {
2074 9 : tree _o1[2], _r1;
2075 9 : {
2076 9 : tree _o2[1], _r2;
2077 9 : {
2078 9 : tree _o3[2], _r3;
2079 9 : _o3[0] = captures[0];
2080 9 : _o3[1] = shifter;
2081 9 : _r3 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2082 9 : _o2[0] = _r3;
2083 : }
2084 9 : if (TREE_TYPE (_o2[0]) != type)
2085 : {
2086 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
2087 : }
2088 : else
2089 : _r2 = _o2[0];
2090 9 : _o1[0] = _r2;
2091 : }
2092 9 : _o1[1] = captures[1];
2093 9 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2094 9 : res_op0 = _r1;
2095 : }
2096 9 : tree _r;
2097 9 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2098 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 571, __FILE__, __LINE__, true);
2099 : return _r;
2100 : }
2101 22 : next_after_fail685:;
2102 : }
2103 : }
2104 : }
2105 : return NULL_TREE;
2106 : }
2107 :
2108 : tree
2109 37390 : generic_simplify_415 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2111 : const enum tree_code ARG_UNUSED (cmp),
2112 : const enum tree_code ARG_UNUSED (out))
2113 : {
2114 37390 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2115 37390 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2116 37374 : && types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[0]))
2117 37374 : && tree_nop_conversion_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[3]))
2118 37390 : && wi::to_wide (captures[4]) != 0
2119 0 : && single_use (captures[1])
2120 : )
2121 : {
2122 37374 : {
2123 37374 : unsigned int prec = TYPE_PRECISION (TREE_TYPE (captures[3]));
2124 37374 : signop sign = TYPE_SIGN (TREE_TYPE (captures[3]));
2125 37374 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail708;
2126 37374 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail708;
2127 37374 : {
2128 37374 : tree res_op0;
2129 37374 : res_op0 = captures[3];
2130 37374 : tree res_op1;
2131 37374 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[3]),
2132 37374 : wi::max_value (prec, sign)
2133 112122 : - wi::to_wide (captures[4]));
2134 37374 : tree _r;
2135 37374 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2136 37374 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 594, __FILE__, __LINE__, true);
2137 : return _r;
2138 : }
2139 37390 : next_after_fail708:;
2140 : }
2141 : }
2142 : return NULL_TREE;
2143 : }
2144 :
2145 : tree
2146 1730 : generic_simplify_426 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2147 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2148 : const enum tree_code ARG_UNUSED (cmp),
2149 : const enum tree_code ARG_UNUSED (neg_cmp))
2150 : {
2151 1730 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2152 1730 : if (flag_unsafe_math_optimizations
2153 : )
2154 : {
2155 9 : {
2156 9 : tree tem = const_binop (RDIV_EXPR, type, captures[2], captures[1]);
2157 9 : if (tem
2158 27 : && !(REAL_VALUE_ISINF (TREE_REAL_CST (tem))
2159 15 : || (real_zerop (tem) && !real_zerop (captures[1])))
2160 : )
2161 : {
2162 3 : if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[1]))
2163 : )
2164 : {
2165 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail751;
2166 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail751;
2167 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail751;
2168 2 : {
2169 2 : tree res_op0;
2170 2 : res_op0 = captures[0];
2171 2 : tree res_op1;
2172 2 : res_op1 = tem;
2173 2 : tree _r;
2174 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2175 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 620, __FILE__, __LINE__, true);
2176 : return _r;
2177 : }
2178 1730 : next_after_fail751:;
2179 : }
2180 : else
2181 : {
2182 1 : if (real_less (TREE_REAL_CST_PTR (captures[1]), &dconst0)
2183 : )
2184 : {
2185 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail752;
2186 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail752;
2187 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail752;
2188 1 : {
2189 1 : tree res_op0;
2190 1 : res_op0 = captures[0];
2191 1 : tree res_op1;
2192 1 : res_op1 = tem;
2193 1 : tree _r;
2194 1 : _r = fold_build2_loc (loc, neg_cmp, type, res_op0, res_op1);
2195 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 621, __FILE__, __LINE__, true);
2196 : return _r;
2197 : }
2198 1730 : next_after_fail752:;
2199 : }
2200 : }
2201 : }
2202 : }
2203 : }
2204 : return NULL_TREE;
2205 : }
2206 :
2207 : tree
2208 0 : generic_simplify_435 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2209 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2210 : const enum tree_code ARG_UNUSED (cmp),
2211 : const enum tree_code ARG_UNUSED (out))
2212 : {
2213 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2214 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2215 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2216 : )
2217 : {
2218 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail767;
2219 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail767;
2220 0 : {
2221 0 : tree res_op0;
2222 0 : {
2223 0 : tree _o1[1], _r1;
2224 0 : _o1[0] = captures[0];
2225 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2226 0 : res_op0 = _r1;
2227 : }
2228 0 : tree res_op1;
2229 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2230 0 : tree _r;
2231 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2232 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 617, __FILE__, __LINE__, true);
2233 : return _r;
2234 : }
2235 0 : next_after_fail767:;
2236 : }
2237 : return NULL_TREE;
2238 : }
2239 :
2240 : tree
2241 0 : generic_simplify_439 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2242 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2243 : const combined_fn ARG_UNUSED (logs),
2244 : const combined_fn ARG_UNUSED (exps),
2245 : const enum tree_code ARG_UNUSED (cmp))
2246 : {
2247 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2248 0 : if (flag_unsafe_math_optimizations
2249 : )
2250 : {
2251 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
2252 0 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
2253 0 : && ! flag_trapping_math
2254 0 : && ! flag_errno_math
2255 : )
2256 : {
2257 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail771;
2258 0 : {
2259 0 : tree res_op0;
2260 0 : res_op0 = captures[1];
2261 0 : tree res_op1;
2262 0 : {
2263 0 : tree _o1[1], _r1;
2264 0 : _o1[0] = captures[2];
2265 0 : _r1 = maybe_build_call_expr_loc (loc, exps, TREE_TYPE (_o1[0]), 1, _o1[0]);
2266 0 : if (!_r1)
2267 0 : goto next_after_fail771;
2268 0 : if (EXPR_P (_r1))
2269 0 : goto next_after_fail771;
2270 0 : res_op1 = _r1;
2271 : }
2272 0 : tree _r;
2273 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2274 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2275 : return _r;
2276 : }
2277 0 : next_after_fail771:;
2278 : }
2279 : }
2280 : return NULL_TREE;
2281 : }
2282 :
2283 : tree
2284 2934 : generic_simplify_446 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2285 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2286 : const enum tree_code ARG_UNUSED (shiftrotate))
2287 : {
2288 2934 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2289 2934 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail782;
2290 2934 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail782;
2291 2934 : {
2292 2934 : tree res_op0;
2293 2934 : res_op0 = captures[0];
2294 2934 : tree _r;
2295 2934 : _r = non_lvalue_loc (loc, res_op0);
2296 2934 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 647, __FILE__, __LINE__, true);
2297 : return _r;
2298 : }
2299 2934 : next_after_fail782:;
2300 : return NULL_TREE;
2301 : }
2302 :
2303 : tree
2304 0 : generic_simplify_453 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2305 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2306 : {
2307 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2308 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail792;
2309 0 : {
2310 0 : tree res_op0;
2311 0 : res_op0 = captures[0];
2312 0 : tree res_op1;
2313 0 : {
2314 0 : tree _o1[2], _r1;
2315 0 : _o1[0] = captures[2];
2316 0 : _o1[1] = captures[1];
2317 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2318 0 : res_op1 = _r1;
2319 : }
2320 0 : tree _r;
2321 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2322 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 655, __FILE__, __LINE__, true);
2323 : return _r;
2324 : }
2325 0 : next_after_fail792:;
2326 0 : return NULL_TREE;
2327 : }
2328 :
2329 : tree
2330 3810791 : generic_simplify_457 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2331 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2332 : const enum tree_code ARG_UNUSED (bitop))
2333 : {
2334 3810791 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2335 3810791 : if (0
2336 : && TREE_CODE (captures[3]) != INTEGER_CST
2337 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2338 : && types_match (type, captures[2])
2339 : && !POINTER_TYPE_P (TREE_TYPE (captures[2]))
2340 : && TREE_CODE (TREE_TYPE (captures[2])) != OFFSET_TYPE
2341 : )
2342 : {
2343 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail801;
2344 : {
2345 : tree res_op0;
2346 : res_op0 = captures[2];
2347 : tree res_op1;
2348 : {
2349 : tree _o1[1], _r1;
2350 : _o1[0] = captures[3];
2351 : if (TREE_TYPE (_o1[0]) != type)
2352 : {
2353 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2354 : }
2355 : else
2356 : _r1 = _o1[0];
2357 : res_op1 = _r1;
2358 : }
2359 : tree _r;
2360 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2361 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 664, __FILE__, __LINE__, true);
2362 : return _r;
2363 : }
2364 : next_after_fail801:;
2365 : }
2366 3810791 : return NULL_TREE;
2367 : }
2368 :
2369 : tree
2370 8104 : generic_simplify_460 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2371 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2372 : const enum tree_code ARG_UNUSED (minmax))
2373 : {
2374 8104 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2375 8104 : if (INTEGRAL_TYPE_P (type)
2376 8104 : && types_match (captures[1], type) && int_fits_type_p (captures[2], type)
2377 659 : && TYPE_SIGN (TREE_TYPE (captures[0])) == TYPE_SIGN (type)
2378 8104 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2379 : )
2380 : {
2381 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail806;
2382 0 : {
2383 0 : tree res_op0;
2384 0 : res_op0 = captures[1];
2385 0 : tree res_op1;
2386 0 : {
2387 0 : tree _o1[1], _r1;
2388 0 : _o1[0] = captures[2];
2389 0 : if (TREE_TYPE (_o1[0]) != type)
2390 : {
2391 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2392 : }
2393 : else
2394 : _r1 = _o1[0];
2395 0 : res_op1 = _r1;
2396 : }
2397 0 : tree _r;
2398 0 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
2399 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 669, __FILE__, __LINE__, true);
2400 : return _r;
2401 : }
2402 0 : next_after_fail806:;
2403 : }
2404 : return NULL_TREE;
2405 : }
2406 :
2407 : tree
2408 0 : generic_simplify_466 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2409 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2410 : const combined_fn ARG_UNUSED (copysigns),
2411 : const combined_fn ARG_UNUSED (coss))
2412 : {
2413 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2414 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail824;
2415 0 : {
2416 0 : tree res_op0;
2417 0 : res_op0 = captures[0];
2418 0 : tree _r;
2419 0 : _r = maybe_build_call_expr_loc (loc, coss, type, 1, res_op0);
2420 0 : if (!_r)
2421 0 : goto next_after_fail824;
2422 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2423 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2424 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 675, __FILE__, __LINE__, true);
2425 : return _r;
2426 : }
2427 0 : next_after_fail824:;
2428 : return NULL_TREE;
2429 : }
2430 :
2431 : tree
2432 0 : generic_simplify_469 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2433 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2434 : const combined_fn ARG_UNUSED (copysigns),
2435 : const combined_fn ARG_UNUSED (pows))
2436 : {
2437 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2438 0 : {
2439 0 : HOST_WIDE_INT n;
2440 0 : if (real_isinteger (&TREE_REAL_CST (captures[2]), &n) && (n & 1) == 0
2441 : )
2442 : {
2443 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail827;
2444 0 : {
2445 0 : tree res_op0;
2446 0 : res_op0 = captures[0];
2447 0 : tree res_op1;
2448 0 : res_op1 = captures[2];
2449 0 : tree _r;
2450 0 : _r = maybe_build_call_expr_loc (loc, pows, type, 2, res_op0, res_op1);
2451 0 : if (!_r)
2452 0 : goto next_after_fail827;
2453 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2454 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2455 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2456 0 : return _r;
2457 : }
2458 0 : next_after_fail827:;
2459 : }
2460 : }
2461 0 : return NULL_TREE;
2462 : }
2463 :
2464 : tree
2465 0 : generic_simplify_471 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2466 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2467 : const combined_fn ARG_UNUSED (pow))
2468 : {
2469 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2470 0 : if (flag_unsafe_math_optimizations
2471 : )
2472 : {
2473 0 : if (! HONOR_INFINITIES (type)
2474 0 : && ! flag_trapping_math
2475 0 : && ! flag_errno_math
2476 : )
2477 : {
2478 0 : if (! HONOR_NANS (type) && ! HONOR_SIGNED_ZEROS (type)
2479 : )
2480 : {
2481 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail829;
2482 0 : {
2483 0 : tree _r;
2484 0 : _r = captures[0];
2485 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2486 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2487 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 680, __FILE__, __LINE__, true);
2488 : return _r;
2489 : }
2490 0 : next_after_fail829:;
2491 : }
2492 : }
2493 : }
2494 : return NULL_TREE;
2495 : }
2496 :
2497 : tree
2498 0 : generic_simplify_474 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2499 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2500 : const combined_fn ARG_UNUSED (copysigns),
2501 : const combined_fn ARG_UNUSED (hypots))
2502 : {
2503 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2504 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail832;
2505 0 : {
2506 0 : tree res_op0;
2507 0 : res_op0 = captures[0];
2508 0 : tree res_op1;
2509 0 : res_op1 = captures[2];
2510 0 : tree _r;
2511 0 : _r = maybe_build_call_expr_loc (loc, hypots, type, 2, res_op0, res_op1);
2512 0 : if (!_r)
2513 0 : goto next_after_fail832;
2514 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2515 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2516 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2517 : return _r;
2518 : }
2519 0 : next_after_fail832:;
2520 : return NULL_TREE;
2521 : }
2522 :
2523 : tree
2524 8 : generic_simplify_479 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2525 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2526 : {
2527 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2528 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2529 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
2530 : )
2531 : {
2532 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail837;
2533 0 : {
2534 0 : tree res_op0;
2535 0 : res_op0 = captures[0];
2536 0 : tree res_op1;
2537 0 : res_op1 = captures[1];
2538 0 : tree _r;
2539 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2540 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 688, __FILE__, __LINE__, true);
2541 : return _r;
2542 : }
2543 0 : next_after_fail837:;
2544 : }
2545 : return NULL_TREE;
2546 : }
2547 :
2548 : tree
2549 2 : generic_simplify_484 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2550 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2551 : {
2552 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2553 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail842;
2554 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail842;
2555 2 : {
2556 2 : tree res_op0;
2557 2 : res_op0 = captures[0];
2558 2 : tree res_op1;
2559 2 : {
2560 2 : tree _o1[1], _r1;
2561 2 : _o1[0] = captures[5];
2562 2 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2563 2 : res_op1 = _r1;
2564 : }
2565 2 : tree _r;
2566 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2567 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 693, __FILE__, __LINE__, true);
2568 : return _r;
2569 : }
2570 2 : next_after_fail842:;
2571 : return NULL_TREE;
2572 : }
2573 :
2574 : tree
2575 0 : generic_simplify_491 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2576 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2577 : {
2578 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2579 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail849;
2580 0 : {
2581 0 : tree res_op0;
2582 0 : res_op0 = captures[0];
2583 0 : tree res_op1;
2584 0 : res_op1 = captures[1];
2585 0 : tree _r;
2586 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
2587 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 699, __FILE__, __LINE__, true);
2588 : return _r;
2589 : }
2590 0 : next_after_fail849:;
2591 0 : return NULL_TREE;
2592 : }
2593 :
2594 : tree
2595 13 : generic_simplify_495 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2596 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2597 : {
2598 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2599 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail853;
2600 13 : {
2601 13 : tree _r;
2602 13 : _r = build_zero_cst (type);
2603 13 : if (TREE_SIDE_EFFECTS (captures[0]))
2604 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2605 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 703, __FILE__, __LINE__, true);
2606 : return _r;
2607 : }
2608 0 : next_after_fail853:;
2609 0 : return NULL_TREE;
2610 : }
2611 :
2612 : tree
2613 8 : generic_simplify_500 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2614 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2615 : const enum tree_code ARG_UNUSED (eqne))
2616 : {
2617 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2618 8 : if (eqne == EQ_EXPR
2619 : )
2620 : {
2621 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail859;
2622 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail859;
2623 4 : {
2624 4 : tree _r;
2625 4 : _r = constant_boolean_node (false, type);
2626 4 : if (TREE_SIDE_EFFECTS (captures[2]))
2627 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2628 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 708, __FILE__, __LINE__, true);
2629 : return _r;
2630 : }
2631 8 : next_after_fail859:;
2632 : }
2633 : else
2634 : {
2635 4 : if (eqne == NE_EXPR
2636 : )
2637 : {
2638 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail860;
2639 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail860;
2640 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail860;
2641 4 : {
2642 4 : tree _r;
2643 4 : _r = captures[0];
2644 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 709, __FILE__, __LINE__, true);
2645 : return _r;
2646 : }
2647 8 : next_after_fail860:;
2648 : }
2649 : }
2650 : return NULL_TREE;
2651 : }
2652 :
2653 : tree
2654 4 : generic_simplify_511 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2655 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2656 : {
2657 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2658 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail903;
2659 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail903;
2660 4 : {
2661 4 : tree _r;
2662 4 : _r = captures[2];
2663 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2664 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2665 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 724, __FILE__, __LINE__, true);
2666 : return _r;
2667 : }
2668 4 : next_after_fail903:;
2669 : return NULL_TREE;
2670 : }
2671 :
2672 : tree
2673 34504 : generic_simplify_515 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2674 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2675 : const enum tree_code ARG_UNUSED (shift))
2676 : {
2677 34504 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2678 34504 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2679 34504 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2680 34504 : && tree_fits_uhwi_p (captures[4])
2681 34504 : && tree_to_uhwi (captures[4]) > 0
2682 69007 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2683 : )
2684 : {
2685 34503 : {
2686 34503 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2687 34503 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2688 34503 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2689 34503 : tree shift_type = TREE_TYPE (captures[2]);
2690 34503 : unsigned int prec;
2691 34503 : if (shift == LSHIFT_EXPR)
2692 5454 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2693 29049 : else if (shift == RSHIFT_EXPR
2694 29049 : && type_has_mode_precision_p (shift_type))
2695 : {
2696 29049 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2697 29049 : tree arg00 = captures[3];
2698 29049 : if (captures[2] != captures[3]
2699 29049 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2700 : {
2701 28799 : tree inner_type = TREE_TYPE (captures[3]);
2702 28799 : if (type_has_mode_precision_p (inner_type)
2703 28799 : && TYPE_PRECISION (inner_type) < prec)
2704 : {
2705 270 : prec = TYPE_PRECISION (inner_type);
2706 270 : if (shiftc < prec)
2707 269 : shift_type = inner_type;
2708 : }
2709 : }
2710 29049 : zerobits = HOST_WIDE_INT_M1U;
2711 29049 : if (shiftc < prec)
2712 : {
2713 29048 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2714 29048 : zerobits <<= prec - shiftc;
2715 : }
2716 29049 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2717 29049 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2718 : {
2719 818 : if ((mask & zerobits) == 0)
2720 811 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2721 : else
2722 : zerobits = 0;
2723 : }
2724 : }
2725 34496 : if ((mask & zerobits) == mask
2726 : )
2727 : {
2728 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail907;
2729 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail907;
2730 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail907;
2731 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail907;
2732 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail907;
2733 1 : {
2734 1 : tree _r;
2735 1 : _r = build_int_cst (type, 0);
2736 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 728, __FILE__, __LINE__, true);
2737 34504 : return _r;
2738 : }
2739 34504 : next_after_fail907:;
2740 : }
2741 : else
2742 : {
2743 34502 : {
2744 34502 : newmask = mask | zerobits;
2745 34502 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2746 : )
2747 : {
2748 : {
2749 7356 : for (prec = BITS_PER_UNIT;
2750 11252 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2751 9056 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2752 : break;
2753 3896 : if (prec < HOST_BITS_PER_WIDE_INT
2754 2196 : || newmask == HOST_WIDE_INT_M1U
2755 : )
2756 : {
2757 2120 : {
2758 2120 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2759 2120 : if (!tree_int_cst_equal (newmaskt, captures[5])
2760 : )
2761 : {
2762 2120 : if (shift_type != TREE_TYPE (captures[2])
2763 : )
2764 : {
2765 88 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail908;
2766 88 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail908;
2767 88 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail908;
2768 88 : {
2769 88 : tree res_op0;
2770 88 : {
2771 88 : tree _o1[1], _r1;
2772 88 : {
2773 88 : tree _o2[2], _r2;
2774 88 : {
2775 88 : tree _o3[1], _r3;
2776 88 : _o3[0] = captures[2];
2777 88 : if (TREE_TYPE (_o3[0]) != shift_type)
2778 : {
2779 88 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2780 : }
2781 : else
2782 : _r3 = _o3[0];
2783 88 : _o2[0] = _r3;
2784 : }
2785 88 : _o2[1] = captures[4];
2786 88 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2787 88 : _o1[0] = _r2;
2788 : }
2789 88 : if (TREE_TYPE (_o1[0]) != type)
2790 : {
2791 88 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2792 : }
2793 : else
2794 : _r1 = _o1[0];
2795 88 : res_op0 = _r1;
2796 : }
2797 88 : tree res_op1;
2798 88 : res_op1 = newmaskt;
2799 88 : tree _r;
2800 88 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2801 88 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 729, __FILE__, __LINE__, true);
2802 : return _r;
2803 : }
2804 34504 : next_after_fail908:;
2805 : }
2806 : else
2807 : {
2808 2032 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail909;
2809 897 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail909;
2810 897 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail909;
2811 897 : {
2812 897 : tree res_op0;
2813 897 : res_op0 = captures[0];
2814 897 : tree res_op1;
2815 897 : res_op1 = newmaskt;
2816 897 : tree _r;
2817 897 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2818 897 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 730, __FILE__, __LINE__, true);
2819 : return _r;
2820 : }
2821 34504 : next_after_fail909:;
2822 : }
2823 : }
2824 : }
2825 : }
2826 : }
2827 : }
2828 : }
2829 : }
2830 : }
2831 : }
2832 : return NULL_TREE;
2833 : }
2834 :
2835 : tree
2836 0 : generic_simplify_524 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2837 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2838 : {
2839 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2840 0 : {
2841 0 : tree ltype0 = TREE_TYPE (captures[0]);
2842 0 : tree ltype1 = TREE_TYPE (captures[3]);
2843 0 : if (INTEGRAL_TYPE_P (type)
2844 0 : && INTEGRAL_TYPE_P (ltype0)
2845 0 : && INTEGRAL_TYPE_P (ltype1)
2846 0 : && element_precision (type) <= element_precision (ltype0)
2847 0 : && element_precision (ltype0) <= element_precision (ltype1)
2848 : )
2849 : {
2850 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail926;
2851 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail926;
2852 0 : {
2853 0 : tree res_op0;
2854 0 : {
2855 0 : tree _o1[2], _r1;
2856 0 : _o1[0] = captures[4];
2857 0 : _o1[1] = captures[2];
2858 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, ltype1, _o1[0], _o1[1]);
2859 0 : res_op0 = _r1;
2860 : }
2861 0 : tree _r;
2862 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2863 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2864 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2865 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 738, __FILE__, __LINE__, true);
2866 : return _r;
2867 : }
2868 0 : next_after_fail926:;
2869 : }
2870 : }
2871 : return NULL_TREE;
2872 : }
2873 :
2874 : tree
2875 4 : generic_simplify_533 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2876 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2877 : {
2878 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2879 4 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2880 7 : && (element_precision (TREE_TYPE (captures[2]))
2881 3 : <= element_precision (TREE_TYPE (captures[3]))
2882 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2883 : )
2884 : {
2885 3 : {
2886 3 : tree shift_type = TREE_TYPE (captures[2]);
2887 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail935;
2888 3 : {
2889 3 : tree res_op0;
2890 3 : {
2891 3 : tree _o1[2], _r1;
2892 3 : {
2893 3 : tree _o2[1], _r2;
2894 3 : _o2[0] = captures[3];
2895 3 : if (TREE_TYPE (_o2[0]) != shift_type)
2896 : {
2897 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o2[0]);
2898 : }
2899 : else
2900 : _r2 = _o2[0];
2901 3 : _o1[0] = _r2;
2902 : }
2903 3 : _o1[1] = captures[4];
2904 3 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2905 3 : res_op0 = _r1;
2906 : }
2907 3 : tree _r;
2908 3 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2909 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 743, __FILE__, __LINE__, true);
2910 : return _r;
2911 : }
2912 0 : next_after_fail935:;
2913 : }
2914 : }
2915 : return NULL_TREE;
2916 : }
2917 :
2918 : tree
2919 416 : generic_simplify_543 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2920 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2921 : {
2922 416 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2923 416 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2924 416 : && wi::to_wide (captures[1]) == element_precision (type) - 1
2925 : )
2926 : {
2927 44 : {
2928 44 : tree stype = TREE_TYPE (captures[0]);
2929 44 : tree ntype = TYPE_UNSIGNED (stype) ? signed_type_for (stype)
2930 9 : : unsigned_type_for (stype);
2931 44 : if (VECTOR_TYPE_P (type)
2932 : )
2933 : {
2934 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail946;
2935 0 : {
2936 0 : tree res_op0;
2937 0 : {
2938 0 : tree _o1[2], _r1;
2939 0 : {
2940 0 : tree _o2[1], _r2;
2941 0 : _o2[0] = captures[0];
2942 0 : if (TREE_TYPE (_o2[0]) != ntype)
2943 : {
2944 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o2[0]);
2945 : }
2946 : else
2947 : _r2 = _o2[0];
2948 0 : _o1[0] = _r2;
2949 : }
2950 0 : _o1[1] = captures[1];
2951 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2952 0 : res_op0 = _r1;
2953 : }
2954 0 : tree _r;
2955 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2956 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 756, __FILE__, __LINE__, true);
2957 : return _r;
2958 : }
2959 0 : next_after_fail946:;
2960 : }
2961 : else
2962 : {
2963 44 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail947;
2964 44 : {
2965 44 : tree res_op0;
2966 44 : {
2967 44 : tree _o1[2], _r1;
2968 44 : {
2969 44 : tree _o2[1], _r2;
2970 44 : _o2[0] = captures[0];
2971 44 : if (TREE_TYPE (_o2[0]) != ntype)
2972 : {
2973 44 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
2974 : }
2975 : else
2976 : _r2 = _o2[0];
2977 44 : _o1[0] = _r2;
2978 : }
2979 44 : _o1[1] = captures[1];
2980 44 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2981 44 : res_op0 = _r1;
2982 : }
2983 44 : tree _r;
2984 44 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2985 44 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 757, __FILE__, __LINE__, true);
2986 : return _r;
2987 : }
2988 0 : next_after_fail947:;
2989 : }
2990 : }
2991 : }
2992 : return NULL_TREE;
2993 : }
2994 :
2995 : tree
2996 2 : generic_simplify_562 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2997 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2998 : const enum tree_code ARG_UNUSED (op),
2999 : const enum tree_code ARG_UNUSED (logic))
3000 : {
3001 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3002 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail980;
3003 2 : {
3004 2 : tree res_op0;
3005 2 : res_op0 = captures[0];
3006 2 : tree res_op1;
3007 2 : res_op1 = captures[1];
3008 2 : tree _r;
3009 2 : _r = fold_build2_loc (loc, logic, type, res_op0, res_op1);
3010 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 777, __FILE__, __LINE__, true);
3011 : return _r;
3012 : }
3013 0 : next_after_fail980:;
3014 0 : return NULL_TREE;
3015 : }
3016 :
3017 : tree
3018 0 : generic_simplify_568 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3019 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3020 : const combined_fn ARG_UNUSED (FMIN_ALL))
3021 : {
3022 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3023 0 : if (flag_finite_math_only
3024 : )
3025 : {
3026 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail986;
3027 0 : {
3028 0 : tree res_op0;
3029 0 : res_op0 = captures[0];
3030 0 : tree res_op1;
3031 0 : res_op1 = captures[1];
3032 0 : tree _r;
3033 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
3034 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 783, __FILE__, __LINE__, true);
3035 : return _r;
3036 : }
3037 0 : next_after_fail986:;
3038 : }
3039 : return NULL_TREE;
3040 : }
3041 :
3042 : tree
3043 0 : generic_simplify_573 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3044 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3045 : const enum tree_code ARG_UNUSED (cmp))
3046 : {
3047 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3048 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail991;
3049 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail991;
3050 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail991;
3051 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail991;
3052 0 : {
3053 0 : tree _r;
3054 0 : _r = captures[0];
3055 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 566, __FILE__, __LINE__, true);
3056 : return _r;
3057 : }
3058 0 : next_after_fail991:;
3059 : return NULL_TREE;
3060 : }
3061 :
3062 : tree
3063 0 : generic_simplify_583 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3064 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3065 : const combined_fn ARG_UNUSED (cond_op))
3066 : {
3067 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3068 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1001;
3069 0 : {
3070 0 : tree res_op0;
3071 0 : {
3072 0 : tree _o1[2], _r1;
3073 0 : _o1[0] = captures[2];
3074 0 : _o1[1] = captures[0];
3075 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3076 0 : res_op0 = _r1;
3077 : }
3078 0 : tree res_op1;
3079 0 : res_op1 = captures[3];
3080 0 : tree res_op2;
3081 0 : res_op2 = captures[4];
3082 0 : tree res_op3;
3083 0 : res_op3 = captures[5];
3084 0 : tree res_op4;
3085 0 : res_op4 = captures[6];
3086 0 : tree _r;
3087 0 : _r = maybe_build_call_expr_loc (loc, cond_op, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3088 0 : if (!_r)
3089 0 : goto next_after_fail1001;
3090 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 794, __FILE__, __LINE__, true);
3091 : return _r;
3092 : }
3093 0 : next_after_fail1001:;
3094 : return NULL_TREE;
3095 : }
3096 :
3097 : tree
3098 0 : generic_simplify_588 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3099 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3100 : const combined_fn ARG_UNUSED (bswap))
3101 : {
3102 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3103 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1009;
3104 0 : {
3105 0 : tree _r;
3106 0 : _r = captures[0];
3107 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 802, __FILE__, __LINE__, true);
3108 : return _r;
3109 : }
3110 0 : next_after_fail1009:;
3111 0 : return NULL_TREE;
3112 : }
3113 :
3114 : tree
3115 0 : generic_simplify_595 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3116 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3117 : const combined_fn ARG_UNUSED (ovf))
3118 : {
3119 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3120 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
3121 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3122 0 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
3123 0 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[1])) || TYPE_UNSIGNED (TREE_TYPE (captures[2])))
3124 : )
3125 : {
3126 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1016;
3127 0 : {
3128 0 : tree res_op0;
3129 0 : res_op0 = captures[0];
3130 0 : tree res_op1;
3131 0 : res_op1 = captures[2];
3132 0 : tree _r;
3133 0 : _r = maybe_build_call_expr_loc (loc, ovf, type, 2, res_op0, res_op1);
3134 0 : if (!_r)
3135 0 : goto next_after_fail1016;
3136 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
3137 : return _r;
3138 : }
3139 0 : next_after_fail1016:;
3140 : }
3141 : return NULL_TREE;
3142 : }
3143 :
3144 : tree
3145 0 : generic_simplify_603 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3146 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3147 : const combined_fn ARG_UNUSED (fns))
3148 : {
3149 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3150 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1024;
3151 0 : {
3152 0 : tree _r;
3153 0 : _r = captures[0];
3154 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 817, __FILE__, __LINE__, true);
3155 : return _r;
3156 : }
3157 0 : next_after_fail1024:;
3158 0 : return NULL_TREE;
3159 : }
3160 :
3161 : tree
3162 0 : generic_simplify_608 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3163 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3164 : {
3165 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3166 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1029;
3167 0 : {
3168 0 : tree _r;
3169 0 : _r = captures[0];
3170 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3171 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3172 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
3173 : return _r;
3174 : }
3175 0 : next_after_fail1029:;
3176 0 : return NULL_TREE;
3177 : }
3178 :
3179 : tree
3180 0 : generic_simplify_615 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3181 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3182 : const combined_fn ARG_UNUSED (rints))
3183 : {
3184 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3185 0 : if (canonicalize_math_p ()
3186 : )
3187 : {
3188 0 : if (!flag_errno_math
3189 : )
3190 : {
3191 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1036;
3192 0 : {
3193 0 : tree res_op0;
3194 0 : res_op0 = captures[0];
3195 0 : tree _r;
3196 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
3197 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 829, __FILE__, __LINE__, true);
3198 : return _r;
3199 : }
3200 0 : next_after_fail1036:;
3201 : }
3202 : }
3203 : return NULL_TREE;
3204 : }
3205 :
3206 : tree
3207 0 : generic_simplify_622 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3208 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3209 : {
3210 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3211 0 : if (canonicalize_math_after_vectorization_p ()
3212 : )
3213 : {
3214 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1043;
3215 : {
3216 : tree res_op0;
3217 : res_op0 = captures[0];
3218 : tree res_op1;
3219 : res_op1 = captures[1];
3220 : tree res_op2;
3221 : res_op2 = captures[2];
3222 : tree _r;
3223 : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
3224 : if (!_r)
3225 : goto next_after_fail1043;
3226 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 836, __FILE__, __LINE__, true);
3227 : return _r;
3228 : }
3229 0 : next_after_fail1043:;
3230 : }
3231 0 : return NULL_TREE;
3232 : }
3233 :
3234 : tree
3235 0 : generic_simplify_631 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3236 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3237 : {
3238 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3239 0 : if (canonicalize_math_after_vectorization_p ()
3240 : )
3241 : {
3242 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1052;
3243 : {
3244 : tree res_op0;
3245 : res_op0 = captures[0];
3246 : tree res_op1;
3247 : res_op1 = captures[1];
3248 : tree res_op2;
3249 : res_op2 = captures[2];
3250 : tree res_op3;
3251 : res_op3 = captures[3];
3252 : tree res_op4;
3253 : res_op4 = captures[4];
3254 : tree _r;
3255 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3256 : if (!_r)
3257 : goto next_after_fail1052;
3258 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
3259 : return _r;
3260 : }
3261 0 : next_after_fail1052:;
3262 : }
3263 0 : return NULL_TREE;
3264 : }
3265 :
3266 : tree
3267 0 : generic_simplify_640 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3268 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3269 : const combined_fn ARG_UNUSED (bswap),
3270 : const combined_fn ARG_UNUSED (popcount))
3271 : {
3272 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3273 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3274 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3275 : )
3276 : {
3277 0 : {
3278 0 : tree type0 = TREE_TYPE (captures[0]);
3279 0 : tree type1 = TREE_TYPE (captures[1]);
3280 0 : unsigned int prec0 = TYPE_PRECISION (type0);
3281 0 : unsigned int prec1 = TYPE_PRECISION (type1);
3282 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
3283 : )
3284 : {
3285 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1061;
3286 0 : {
3287 0 : tree res_op0;
3288 0 : {
3289 0 : tree _o1[1], _r1;
3290 0 : {
3291 0 : tree _o2[1], _r2;
3292 0 : _o2[0] = captures[2];
3293 0 : if (TREE_TYPE (_o2[0]) != type1)
3294 : {
3295 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3296 : }
3297 : else
3298 : _r2 = _o2[0];
3299 0 : _o1[0] = _r2;
3300 : }
3301 0 : if (TREE_TYPE (_o1[0]) != type0)
3302 : {
3303 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3304 : }
3305 : else
3306 : _r1 = _o1[0];
3307 0 : res_op0 = _r1;
3308 : }
3309 0 : tree _r;
3310 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
3311 0 : if (!_r)
3312 0 : goto next_after_fail1061;
3313 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
3314 : return _r;
3315 : }
3316 0 : next_after_fail1061:;
3317 : }
3318 : }
3319 : }
3320 : return NULL_TREE;
3321 : }
3322 :
3323 : tree
3324 0 : generic_simplify_652 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3325 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3326 : const combined_fn ARG_UNUSED (reduc))
3327 : {
3328 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3329 0 : {
3330 0 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3331 0 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3332 0 : tree elt = ctor_single_nonzero_element (ctor);
3333 0 : if (elt
3334 0 : && types_match (type, TREE_TYPE (elt))
3335 0 : && !HONOR_SNANS (type)
3336 0 : && !HONOR_SIGNED_ZEROS (type)
3337 : )
3338 : {
3339 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1075;
3340 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1075;
3341 0 : {
3342 0 : tree _r;
3343 0 : _r = elt;
3344 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 861, __FILE__, __LINE__, true);
3345 : return _r;
3346 : }
3347 0 : next_after_fail1075:;
3348 : }
3349 : }
3350 : return NULL_TREE;
3351 : }
3352 :
3353 : tree
3354 6630384 : generic_simplify_FLOAT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3355 : {
3356 6630384 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3357 6630384 : switch (TREE_CODE (_p0))
3358 : {
3359 566494 : CASE_CONVERT:
3360 566494 : {
3361 566494 : tree _q20 = TREE_OPERAND (_p0, 0);
3362 566494 : switch (TREE_CODE (_q20))
3363 : {
3364 0 : case LT_EXPR:
3365 0 : {
3366 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3367 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3368 0 : {
3369 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3370 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, LT_EXPR);
3371 0 : if (res) return res;
3372 : }
3373 0 : break;
3374 : }
3375 0 : case LE_EXPR:
3376 0 : {
3377 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3378 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3379 0 : {
3380 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3381 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, LE_EXPR);
3382 0 : if (res) return res;
3383 : }
3384 0 : break;
3385 : }
3386 0 : case EQ_EXPR:
3387 0 : {
3388 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3389 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3390 0 : {
3391 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3392 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, EQ_EXPR);
3393 0 : if (res) return res;
3394 : }
3395 0 : break;
3396 : }
3397 0 : case NE_EXPR:
3398 0 : {
3399 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3400 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3401 0 : {
3402 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3403 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, NE_EXPR);
3404 0 : if (res) return res;
3405 : }
3406 0 : break;
3407 : }
3408 0 : case GE_EXPR:
3409 0 : {
3410 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3411 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3412 0 : {
3413 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3414 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, GE_EXPR);
3415 0 : if (res) return res;
3416 : }
3417 0 : break;
3418 : }
3419 0 : case GT_EXPR:
3420 0 : {
3421 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3422 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3423 0 : {
3424 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3425 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, GT_EXPR);
3426 0 : if (res) return res;
3427 : }
3428 0 : break;
3429 : }
3430 0 : case UNORDERED_EXPR:
3431 0 : {
3432 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3433 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3434 0 : {
3435 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3436 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, UNORDERED_EXPR);
3437 0 : if (res) return res;
3438 : }
3439 0 : break;
3440 : }
3441 0 : case ORDERED_EXPR:
3442 0 : {
3443 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3444 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3445 0 : {
3446 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3447 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, ORDERED_EXPR);
3448 0 : if (res) return res;
3449 : }
3450 0 : break;
3451 : }
3452 0 : case UNLT_EXPR:
3453 0 : {
3454 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3455 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3456 0 : {
3457 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3458 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, UNLT_EXPR);
3459 0 : if (res) return res;
3460 : }
3461 0 : break;
3462 : }
3463 0 : case UNLE_EXPR:
3464 0 : {
3465 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3466 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3467 0 : {
3468 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3469 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, UNLE_EXPR);
3470 0 : if (res) return res;
3471 : }
3472 0 : break;
3473 : }
3474 0 : case UNGT_EXPR:
3475 0 : {
3476 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3477 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3478 0 : {
3479 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3480 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, UNGT_EXPR);
3481 0 : if (res) return res;
3482 : }
3483 0 : break;
3484 : }
3485 0 : case UNGE_EXPR:
3486 0 : {
3487 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3488 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3489 0 : {
3490 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3491 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, UNGE_EXPR);
3492 0 : if (res) return res;
3493 : }
3494 0 : break;
3495 : }
3496 0 : case UNEQ_EXPR:
3497 0 : {
3498 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3499 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3500 0 : {
3501 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3502 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, UNEQ_EXPR);
3503 0 : if (res) return res;
3504 : }
3505 0 : break;
3506 : }
3507 0 : case LTGT_EXPR:
3508 0 : {
3509 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3510 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3511 0 : {
3512 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3513 0 : tree res = generic_simplify_545 (loc, type, _p0, captures, LTGT_EXPR);
3514 0 : if (res) return res;
3515 : }
3516 0 : break;
3517 : }
3518 : default:;
3519 : }
3520 : break;
3521 : }
3522 6630384 : default:;
3523 : }
3524 6630384 : {
3525 6630384 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3526 13260768 : if ((
3527 :
3528 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3529 : || (
3530 : 1
3531 6630384 : && type == TREE_TYPE (captures[0]))
3532 : )
3533 : {
3534 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1134;
3535 0 : {
3536 0 : tree _r;
3537 0 : _r = captures[0];
3538 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 875, __FILE__, __LINE__, true);
3539 6630384 : return _r;
3540 : }
3541 0 : next_after_fail1134:;
3542 : }
3543 : }
3544 6630384 : switch (TREE_CODE (_p0))
3545 : {
3546 566494 : CASE_CONVERT:
3547 566494 : {
3548 566494 : tree _q20 = TREE_OPERAND (_p0, 0);
3549 566494 : {
3550 566494 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3551 566494 : {
3552 566494 : tree inside_type = TREE_TYPE (captures[1]);
3553 566494 : tree inter_type = TREE_TYPE (captures[0]);
3554 566494 : int inside_int = ANY_INTEGRAL_TYPE_P (inside_type);
3555 566494 : int inside_ptr = POINTER_TYPE_P (inside_type);
3556 566494 : int inside_float = FLOAT_TYPE_P (inside_type);
3557 566494 : unsigned int inside_prec = element_precision (inside_type);
3558 566494 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3559 566494 : int inter_int = ANY_INTEGRAL_TYPE_P (inter_type);
3560 566494 : int inter_ptr = POINTER_TYPE_P (inter_type);
3561 566494 : int inter_float = FLOAT_TYPE_P (inter_type);
3562 566494 : unsigned int inter_prec = element_precision (inter_type);
3563 566494 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3564 566494 : int final_int = ANY_INTEGRAL_TYPE_P (type);
3565 566494 : int final_ptr = POINTER_TYPE_P (type);
3566 566494 : int final_float = FLOAT_TYPE_P (type);
3567 566494 : unsigned int final_prec = element_precision (type);
3568 566494 : int final_unsignedp = TYPE_UNSIGNED (type);
3569 566494 : int is_vec = VECTOR_TYPE_P (type);
3570 566494 : gcc_checking_assert (is_vec == VECTOR_TYPE_P (inside_type)
3571 : && is_vec == VECTOR_TYPE_P (inter_type));
3572 566494 : if (((
3573 :
3574 : && useless_type_conversion_p (type, inside_type))
3575 : || (
3576 : 1
3577 566494 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3578 0 : && (((inter_int || inter_ptr) && final_int)
3579 0 : || (inter_float && final_float))
3580 0 : && inter_prec >= final_prec
3581 566494 : && (! is_vec
3582 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3583 : )
3584 : {
3585 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1135;
3586 0 : {
3587 0 : tree res_op0;
3588 0 : res_op0 = captures[1];
3589 0 : tree _r;
3590 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3591 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3592 : return _r;
3593 : }
3594 0 : next_after_fail1135:;
3595 : }
3596 : else
3597 : {
3598 6 : if (((inter_int && inside_int) || (inter_float && inside_float))
3599 566488 : && (final_int || final_float)
3600 566488 : && inter_prec >= inside_prec
3601 565493 : && (inter_float || inter_unsignedp == inside_unsignedp)
3602 1129594 : && (! is_vec
3603 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3604 : )
3605 : {
3606 563100 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1136;
3607 563100 : {
3608 563100 : tree res_op0;
3609 563100 : res_op0 = captures[1];
3610 563100 : tree _r;
3611 563100 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3612 563100 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
3613 : return _r;
3614 : }
3615 0 : next_after_fail1136:;
3616 : }
3617 : else
3618 : {
3619 3388 : if (inside_int && inter_int && final_int
3620 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3621 0 : && inside_unsignedp && !inter_unsignedp)
3622 0 : || final_prec == inter_prec
3623 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3624 0 : && !inside_unsignedp && inter_unsignedp))
3625 3394 : && (! is_vec
3626 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3627 : )
3628 : {
3629 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1137;
3630 0 : {
3631 0 : tree res_op0;
3632 0 : res_op0 = captures[1];
3633 0 : tree _r;
3634 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3635 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
3636 : return _r;
3637 : }
3638 0 : next_after_fail1137:;
3639 : }
3640 : else
3641 : {
3642 3394 : if (! inside_float && ! inter_float && ! final_float
3643 : && ! is_vec
3644 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3645 0 : && ! (inside_int && inter_int
3646 0 : && inter_unsignedp != inside_unsignedp
3647 0 : && inter_prec < final_prec)
3648 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3649 0 : == (final_unsignedp && final_prec > inter_prec))
3650 0 : && ! (inside_ptr && inter_prec != final_prec)
3651 0 : && ! (final_ptr && inside_prec != inter_prec)
3652 : )
3653 : {
3654 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1138;
3655 0 : {
3656 0 : tree res_op0;
3657 0 : res_op0 = captures[1];
3658 0 : tree _r;
3659 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3660 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3661 : return _r;
3662 : }
3663 0 : next_after_fail1138:;
3664 0 : }
3665 : else
3666 : {
3667 3394 : if (inside_int && inter_int && final_int
3668 3388 : && final_prec <= inside_prec
3669 0 : && inter_prec >= inside_prec
3670 3394 : && (! is_vec
3671 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3672 : )
3673 : {
3674 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1139;
3675 0 : {
3676 0 : tree res_op0;
3677 0 : res_op0 = captures[1];
3678 0 : tree _r;
3679 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3680 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
3681 : return _r;
3682 : }
3683 0 : next_after_fail1139:;
3684 : }
3685 : else
3686 : {
3687 : if (0
3688 : && final_int && inter_int && inside_int
3689 : && ! is_vec
3690 : && final_prec >= inside_prec
3691 : && inside_prec > inter_prec
3692 : && inter_unsignedp
3693 : )
3694 : {
3695 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1140;
3696 : {
3697 : tree res_op0;
3698 : {
3699 : tree _o1[2], _r1;
3700 : _o1[0] = captures[1];
3701 : _o1[1] = wide_int_to_tree
3702 : (inside_type,
3703 : wi::mask (inter_prec, false,
3704 : TYPE_PRECISION (inside_type)));
3705 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3706 : res_op0 = _r1;
3707 : }
3708 : tree _r;
3709 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3710 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 881, __FILE__, __LINE__, true);
3711 : return _r;
3712 : }
3713 : next_after_fail1140:;
3714 : }
3715 : else
3716 : {
3717 : if (0
3718 : && inside_int && inter_float && final_int
3719 : && ! is_vec
3720 : && ((unsigned) significand_size (TYPE_MODE (inter_type))
3721 : >= inside_prec - !inside_unsignedp)
3722 : )
3723 : {
3724 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1141;
3725 : {
3726 : tree res_op0;
3727 : res_op0 = captures[1];
3728 : tree _r;
3729 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3730 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3731 : return _r;
3732 : }
3733 : next_after_fail1141:;
3734 : }
3735 : }
3736 : }
3737 : }
3738 : }
3739 : }
3740 : }
3741 : }
3742 : }
3743 : break;
3744 : }
3745 0 : case FLOAT_EXPR:
3746 0 : {
3747 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3748 0 : {
3749 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3750 0 : {
3751 0 : tree inside_type = TREE_TYPE (captures[1]);
3752 0 : tree inter_type = TREE_TYPE (captures[0]);
3753 0 : int inside_int = ANY_INTEGRAL_TYPE_P (inside_type);
3754 0 : int inside_ptr = POINTER_TYPE_P (inside_type);
3755 0 : int inside_float = FLOAT_TYPE_P (inside_type);
3756 0 : unsigned int inside_prec = element_precision (inside_type);
3757 0 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3758 0 : int inter_int = ANY_INTEGRAL_TYPE_P (inter_type);
3759 0 : int inter_ptr = POINTER_TYPE_P (inter_type);
3760 0 : int inter_float = FLOAT_TYPE_P (inter_type);
3761 0 : unsigned int inter_prec = element_precision (inter_type);
3762 0 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3763 0 : int final_int = ANY_INTEGRAL_TYPE_P (type);
3764 0 : int final_ptr = POINTER_TYPE_P (type);
3765 0 : int final_float = FLOAT_TYPE_P (type);
3766 0 : unsigned int final_prec = element_precision (type);
3767 0 : int final_unsignedp = TYPE_UNSIGNED (type);
3768 0 : int is_vec = VECTOR_TYPE_P (type);
3769 0 : gcc_checking_assert (is_vec == VECTOR_TYPE_P (inside_type)
3770 : && is_vec == VECTOR_TYPE_P (inter_type));
3771 0 : if (((
3772 :
3773 : && useless_type_conversion_p (type, inside_type))
3774 : || (
3775 : 1
3776 0 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3777 0 : && (((inter_int || inter_ptr) && final_int)
3778 0 : || (inter_float && final_float))
3779 0 : && inter_prec >= final_prec
3780 0 : && (! is_vec
3781 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3782 : )
3783 : {
3784 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1142;
3785 0 : {
3786 0 : tree res_op0;
3787 0 : res_op0 = captures[1];
3788 0 : tree _r;
3789 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3790 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3791 : return _r;
3792 : }
3793 0 : next_after_fail1142:;
3794 : }
3795 : else
3796 : {
3797 0 : if (((inter_int && inside_int) || (inter_float && inside_float))
3798 0 : && (final_int || final_float)
3799 0 : && inter_prec >= inside_prec
3800 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
3801 0 : && (! is_vec
3802 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3803 : )
3804 : {
3805 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1143;
3806 0 : {
3807 0 : tree res_op0;
3808 0 : res_op0 = captures[1];
3809 0 : tree _r;
3810 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
3812 : return _r;
3813 : }
3814 0 : next_after_fail1143:;
3815 : }
3816 : else
3817 : {
3818 0 : if (inside_int && inter_int && final_int
3819 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3820 0 : && inside_unsignedp && !inter_unsignedp)
3821 0 : || final_prec == inter_prec
3822 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3823 0 : && !inside_unsignedp && inter_unsignedp))
3824 0 : && (! is_vec
3825 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3826 : )
3827 : {
3828 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1144;
3829 0 : {
3830 0 : tree res_op0;
3831 0 : res_op0 = captures[1];
3832 0 : tree _r;
3833 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3834 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
3835 : return _r;
3836 : }
3837 0 : next_after_fail1144:;
3838 : }
3839 : else
3840 : {
3841 0 : if (! inside_float && ! inter_float && ! final_float
3842 : && ! is_vec
3843 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3844 0 : && ! (inside_int && inter_int
3845 0 : && inter_unsignedp != inside_unsignedp
3846 0 : && inter_prec < final_prec)
3847 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3848 0 : == (final_unsignedp && final_prec > inter_prec))
3849 0 : && ! (inside_ptr && inter_prec != final_prec)
3850 0 : && ! (final_ptr && inside_prec != inter_prec)
3851 : )
3852 : {
3853 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1145;
3854 0 : {
3855 0 : tree res_op0;
3856 0 : res_op0 = captures[1];
3857 0 : tree _r;
3858 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3860 : return _r;
3861 : }
3862 0 : next_after_fail1145:;
3863 0 : }
3864 : else
3865 : {
3866 0 : if (inside_int && inter_int && final_int
3867 0 : && final_prec <= inside_prec
3868 0 : && inter_prec >= inside_prec
3869 0 : && (! is_vec
3870 0 : || supportable_convert_operation (FLOAT_EXPR, type, TREE_TYPE (captures[1])))
3871 : )
3872 : {
3873 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1146;
3874 0 : {
3875 0 : tree res_op0;
3876 0 : res_op0 = captures[1];
3877 0 : tree _r;
3878 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3879 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
3880 : return _r;
3881 : }
3882 0 : next_after_fail1146:;
3883 : }
3884 : else
3885 : {
3886 : if (0
3887 : && final_int && inter_int && inside_int
3888 : && ! is_vec
3889 : && final_prec >= inside_prec
3890 : && inside_prec > inter_prec
3891 : && inter_unsignedp
3892 : )
3893 : {
3894 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1147;
3895 : {
3896 : tree res_op0;
3897 : {
3898 : tree _o1[2], _r1;
3899 : _o1[0] = captures[1];
3900 : _o1[1] = wide_int_to_tree
3901 : (inside_type,
3902 : wi::mask (inter_prec, false,
3903 : TYPE_PRECISION (inside_type)));
3904 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3905 : res_op0 = _r1;
3906 : }
3907 : tree _r;
3908 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3909 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 881, __FILE__, __LINE__, true);
3910 : return _r;
3911 : }
3912 : next_after_fail1147:;
3913 : }
3914 : else
3915 : {
3916 : if (0
3917 : && inside_int && inter_float && final_int
3918 : && ! is_vec
3919 : && ((unsigned) significand_size (TYPE_MODE (inter_type))
3920 : >= inside_prec - !inside_unsignedp)
3921 : )
3922 : {
3923 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1148;
3924 : {
3925 : tree res_op0;
3926 : res_op0 = captures[1];
3927 : tree _r;
3928 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3929 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3930 : return _r;
3931 : }
3932 : next_after_fail1148:;
3933 : }
3934 : }
3935 : }
3936 : }
3937 : }
3938 : }
3939 : }
3940 : }
3941 : }
3942 : break;
3943 : }
3944 : default:;
3945 : }
3946 : return NULL_TREE;
3947 : }
3948 :
3949 : tree
3950 72733665 : generic_simplify_MULT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3951 : {
3952 72733665 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3953 72733665 : switch (TREE_CODE (_p1))
3954 : {
3955 443 : case VECTOR_CST:
3956 443 : {
3957 443 : {
3958 443 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3959 443 : if (initializer_each_zero_or_onep (captures[1])
3960 9 : && !HONOR_SNANS (type)
3961 452 : && !HONOR_SIGNED_ZEROS (type)
3962 : )
3963 : {
3964 5 : {
3965 5 : tree itype = FLOAT_TYPE_P (type) ? unsigned_type_for (type) : type;
3966 5 : if (itype
3967 5 : && (!VECTOR_MODE_P (TYPE_MODE (type))
3968 5 : || (VECTOR_MODE_P (TYPE_MODE (itype))
3969 5 : && optab_handler (and_optab,
3970 5 : TYPE_MODE (itype)) != CODE_FOR_nothing))
3971 : )
3972 : {
3973 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1445;
3974 5 : {
3975 5 : tree res_op0;
3976 5 : {
3977 5 : tree _o1[2], _r1;
3978 5 : {
3979 5 : tree _o2[1], _r2;
3980 5 : _o2[0] = captures[0];
3981 5 : if (TREE_TYPE (_o2[0]) != itype)
3982 : {
3983 1 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, itype, _o2[0]);
3984 : }
3985 : else
3986 : _r2 = _o2[0];
3987 5 : _o1[0] = _r2;
3988 : }
3989 5 : {
3990 5 : tree _o2[2], _r2;
3991 5 : _o2[0] = captures[1];
3992 5 : _o2[1] = build_zero_cst (type);
3993 5 : _r2 = fold_build2_loc (loc, NE_EXPR, itype, _o2[0], _o2[1]);
3994 5 : _o1[1] = _r2;
3995 : }
3996 5 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, itype, _o1[0], _o1[1]);
3997 5 : res_op0 = _r1;
3998 : }
3999 5 : tree _r;
4000 5 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
4001 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1000, __FILE__, __LINE__, true);
4002 : return _r;
4003 : }
4004 0 : next_after_fail1445:;
4005 : }
4006 : }
4007 : }
4008 : }
4009 : break;
4010 : }
4011 72733660 : default:;
4012 : }
4013 72733660 : if (integer_zerop (_p1))
4014 : {
4015 35718 : {
4016 35718 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4017 35718 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1446;
4018 35718 : {
4019 35718 : tree _r;
4020 35718 : _r = captures[1];
4021 35718 : if (TREE_SIDE_EFFECTS (captures[0]))
4022 2442 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4023 35718 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
4024 : return _r;
4025 : }
4026 0 : next_after_fail1446:;
4027 : }
4028 : }
4029 72697942 : if (real_zerop (_p1))
4030 : {
4031 435 : {
4032 435 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4033 435 : if (!tree_expr_maybe_nan_p (captures[0])
4034 218 : && (!HONOR_NANS (type) || !tree_expr_maybe_infinite_p (captures[0]))
4035 445 : && (!HONOR_SIGNED_ZEROS (type) || tree_expr_nonnegative_p (captures[0]))
4036 : )
4037 : {
4038 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1447;
4039 4 : {
4040 4 : tree _r;
4041 4 : _r = captures[1];
4042 4 : if (TREE_SIDE_EFFECTS (captures[0]))
4043 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4044 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
4045 : return _r;
4046 : }
4047 0 : next_after_fail1447:;
4048 : }
4049 : }
4050 : }
4051 72697938 : if (real_onep (_p1))
4052 : {
4053 1268 : {
4054 1268 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4055 1268 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
4056 1268 : && (!HONOR_SIGNED_ZEROS (type)
4057 1140 : || !COMPLEX_FLOAT_TYPE_P (type))
4058 : )
4059 : {
4060 785 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1448;
4061 785 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1448;
4062 785 : {
4063 785 : tree res_op0;
4064 785 : res_op0 = captures[0];
4065 785 : tree _r;
4066 785 : _r = non_lvalue_loc (loc, res_op0);
4067 785 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
4068 72733665 : return _r;
4069 : }
4070 72697153 : next_after_fail1448:;
4071 : }
4072 : }
4073 : }
4074 72697153 : if (real_minus_onep (_p1))
4075 : {
4076 44154 : {
4077 44154 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4078 44154 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
4079 44154 : && (!HONOR_SIGNED_ZEROS (type)
4080 41229 : || !COMPLEX_FLOAT_TYPE_P (type))
4081 : )
4082 : {
4083 43770 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1449;
4084 43770 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1449;
4085 43770 : {
4086 43770 : tree res_op0;
4087 43770 : res_op0 = captures[0];
4088 43770 : tree _r;
4089 43770 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4090 43770 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
4091 72733665 : return _r;
4092 : }
4093 72653383 : next_after_fail1449:;
4094 : }
4095 : }
4096 : }
4097 72653383 : switch (TREE_CODE (_p0))
4098 : {
4099 60668 : case BIT_AND_EXPR:
4100 60668 : {
4101 60668 : tree _q20 = TREE_OPERAND (_p0, 0);
4102 60668 : tree _q21 = TREE_OPERAND (_p0, 1);
4103 60668 : switch (TREE_CODE (_q20))
4104 : {
4105 277 : case RSHIFT_EXPR:
4106 277 : {
4107 277 : tree _q30 = TREE_OPERAND (_q20, 0);
4108 277 : tree _q31 = TREE_OPERAND (_q20, 1);
4109 277 : if (uniform_integer_cst_p (_q31))
4110 : {
4111 14 : if (uniform_integer_cst_p (_q21))
4112 : {
4113 14 : if (uniform_integer_cst_p (_p1))
4114 : {
4115 14 : {
4116 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
4117 14 : {
4118 14 : tree rshift_cst = uniform_integer_cst_p (captures[1]);
4119 14 : tree bit_and_cst = uniform_integer_cst_p (captures[2]);
4120 14 : tree mult_cst = uniform_integer_cst_p (captures[3]);
4121 14 : if (VECTOR_TYPE_P (type)
4122 0 : && tree_fits_uhwi_p (rshift_cst)
4123 0 : && tree_fits_uhwi_p (mult_cst)
4124 0 : && tree_fits_uhwi_p (bit_and_cst)
4125 : )
4126 : {
4127 0 : {
4128 0 : HOST_WIDE_INT vec_elem_bits = vector_element_bits (type);
4129 0 : poly_int64 vec_nelts = TYPE_VECTOR_SUBPARTS (type);
4130 0 : poly_int64 vec_bits = vec_elem_bits * vec_nelts;
4131 0 : unsigned HOST_WIDE_INT cmp_bits_i, bit_and_i, mult_i;
4132 0 : unsigned HOST_WIDE_INT target_mult_i, target_bit_and_i;
4133 0 : cmp_bits_i = tree_to_uhwi (rshift_cst) + 1;
4134 0 : mult_i = tree_to_uhwi (mult_cst);
4135 0 : target_mult_i = (HOST_WIDE_INT_1U << cmp_bits_i) - 1;
4136 0 : bit_and_i = tree_to_uhwi (bit_and_cst);
4137 0 : target_bit_and_i = 0;
4138 0 : for (unsigned i = 0; i < vec_elem_bits / cmp_bits_i; i++)
4139 0 : target_bit_and_i = (target_bit_and_i << cmp_bits_i) | 1U;
4140 0 : if ((exact_log2 (cmp_bits_i)) >= 0
4141 0 : && cmp_bits_i < HOST_BITS_PER_WIDE_INT
4142 0 : && multiple_p (vec_bits, cmp_bits_i)
4143 0 : && vec_elem_bits <= HOST_BITS_PER_WIDE_INT
4144 0 : && target_mult_i == mult_i
4145 0 : && target_bit_and_i == bit_and_i
4146 : )
4147 : {
4148 0 : {
4149 0 : tree cmp_type = build_nonstandard_integer_type (cmp_bits_i, 0);
4150 0 : poly_int64 vector_type_nelts = exact_div (vec_bits, cmp_bits_i);
4151 0 : tree vec_cmp_type = build_vector_type (cmp_type, vector_type_nelts);
4152 0 : tree vec_truth_type = truth_type_for (vec_cmp_type);
4153 0 : tree zeros = build_zero_cst (vec_cmp_type);
4154 0 : tree ones = build_all_ones_cst (vec_cmp_type);
4155 0 : if (expand_vec_cmp_expr_p (vec_cmp_type, vec_truth_type, LT_EXPR)
4156 0 : && expand_vec_cond_expr_p (vec_cmp_type, vec_truth_type)
4157 : )
4158 : {
4159 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1450;
4160 0 : {
4161 0 : tree res_op0;
4162 0 : {
4163 0 : tree _o1[3], _r1;
4164 0 : {
4165 0 : tree _o2[2], _r2;
4166 0 : {
4167 0 : tree _o3[1], _r3;
4168 0 : _o3[0] = captures[0];
4169 0 : if (TREE_TYPE (_o3[0]) != vec_cmp_type)
4170 : {
4171 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vec_cmp_type, _o3[0]);
4172 : }
4173 : else
4174 : _r3 = _o3[0];
4175 0 : _o2[0] = _r3;
4176 : }
4177 0 : _o2[1] = zeros;
4178 0 : _r2 = fold_build2_loc (loc, LT_EXPR, vec_truth_type, _o2[0], _o2[1]);
4179 0 : _o1[0] = _r2;
4180 : }
4181 0 : _o1[1] = ones;
4182 0 : _o1[2] = zeros;
4183 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
4184 0 : res_op0 = _r1;
4185 : }
4186 0 : tree _r;
4187 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
4188 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4189 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4190 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4191 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4192 0 : if (TREE_SIDE_EFFECTS (captures[3]))
4193 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
4194 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
4195 0 : return _r;
4196 : }
4197 0 : next_after_fail1450:;
4198 : }
4199 : }
4200 : }
4201 : }
4202 : }
4203 : }
4204 : }
4205 : }
4206 : }
4207 : }
4208 : break;
4209 : }
4210 : default:;
4211 : }
4212 : break;
4213 : }
4214 72653383 : default:;
4215 : }
4216 72653383 : switch (TREE_CODE (_p1))
4217 : {
4218 3184 : case COND_EXPR:
4219 3184 : {
4220 3184 : tree _q30 = TREE_OPERAND (_p1, 0);
4221 3184 : tree _q31 = TREE_OPERAND (_p1, 1);
4222 3184 : tree _q32 = TREE_OPERAND (_p1, 2);
4223 3184 : switch (TREE_CODE (_q30))
4224 : {
4225 530 : case GT_EXPR:
4226 530 : {
4227 530 : tree _q40 = TREE_OPERAND (_q30, 0);
4228 530 : tree _q41 = TREE_OPERAND (_q30, 1);
4229 530 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4230 : {
4231 0 : if (real_zerop (_q41))
4232 : {
4233 0 : if (real_onep (_q31))
4234 : {
4235 0 : if (real_minus_onep (_q32))
4236 : {
4237 0 : {
4238 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4239 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4240 : )
4241 : {
4242 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1451;
4243 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1451;
4244 0 : {
4245 0 : tree res_op0;
4246 0 : {
4247 0 : tree _o1[1], _r1;
4248 0 : _o1[0] = captures[0];
4249 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4250 0 : res_op0 = _r1;
4251 : }
4252 0 : tree _r;
4253 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4254 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4255 : return _r;
4256 : }
4257 72653383 : next_after_fail1451:;
4258 : }
4259 : }
4260 : }
4261 : }
4262 : }
4263 : }
4264 : break;
4265 : }
4266 20 : case GE_EXPR:
4267 20 : {
4268 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4269 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4270 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4271 : {
4272 0 : if (real_zerop (_q41))
4273 : {
4274 0 : if (real_onep (_q31))
4275 : {
4276 0 : if (real_minus_onep (_q32))
4277 : {
4278 0 : {
4279 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4280 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4281 : )
4282 : {
4283 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1452;
4284 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1452;
4285 0 : {
4286 0 : tree res_op0;
4287 0 : {
4288 0 : tree _o1[1], _r1;
4289 0 : _o1[0] = captures[0];
4290 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4291 0 : res_op0 = _r1;
4292 : }
4293 0 : tree _r;
4294 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4295 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4296 : return _r;
4297 : }
4298 72653383 : next_after_fail1452:;
4299 : }
4300 : }
4301 : }
4302 : }
4303 : }
4304 : }
4305 : break;
4306 : }
4307 51 : case LT_EXPR:
4308 51 : {
4309 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4310 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4311 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4312 : {
4313 0 : if (real_zerop (_q41))
4314 : {
4315 0 : if (real_onep (_q31))
4316 : {
4317 0 : if (real_minus_onep (_q32))
4318 : {
4319 0 : {
4320 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4321 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4322 : )
4323 : {
4324 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1453;
4325 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1453;
4326 0 : {
4327 0 : tree res_op0;
4328 0 : {
4329 0 : tree _o1[1], _r1;
4330 0 : _o1[0] = captures[0];
4331 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4332 0 : res_op0 = _r1;
4333 : }
4334 0 : tree _r;
4335 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4336 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4337 : return _r;
4338 : }
4339 72653383 : next_after_fail1453:;
4340 : }
4341 : }
4342 : }
4343 : }
4344 : }
4345 : }
4346 : break;
4347 : }
4348 5 : case LE_EXPR:
4349 5 : {
4350 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4351 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4352 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4353 : {
4354 0 : if (real_zerop (_q41))
4355 : {
4356 0 : if (real_onep (_q31))
4357 : {
4358 0 : if (real_minus_onep (_q32))
4359 : {
4360 0 : {
4361 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4362 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4363 : )
4364 : {
4365 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1454;
4366 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1454;
4367 0 : {
4368 0 : tree res_op0;
4369 0 : {
4370 0 : tree _o1[1], _r1;
4371 0 : _o1[0] = captures[0];
4372 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4373 0 : res_op0 = _r1;
4374 : }
4375 0 : tree _r;
4376 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4377 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4378 : return _r;
4379 : }
4380 72653383 : next_after_fail1454:;
4381 : }
4382 : }
4383 : }
4384 : }
4385 : }
4386 : }
4387 : break;
4388 : }
4389 : default:;
4390 : }
4391 : break;
4392 : }
4393 72653383 : default:;
4394 : }
4395 72653383 : switch (TREE_CODE (_p0))
4396 : {
4397 91004 : case COND_EXPR:
4398 91004 : {
4399 91004 : tree _q20 = TREE_OPERAND (_p0, 0);
4400 91004 : tree _q21 = TREE_OPERAND (_p0, 1);
4401 91004 : tree _q22 = TREE_OPERAND (_p0, 2);
4402 91004 : switch (TREE_CODE (_q20))
4403 : {
4404 24774 : case GT_EXPR:
4405 24774 : {
4406 24774 : tree _q30 = TREE_OPERAND (_q20, 0);
4407 24774 : tree _q31 = TREE_OPERAND (_q20, 1);
4408 24774 : if (real_zerop (_q31))
4409 : {
4410 4 : if (real_onep (_q21))
4411 : {
4412 3 : if (real_minus_onep (_q22))
4413 : {
4414 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4415 : {
4416 1 : {
4417 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4418 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4419 : )
4420 : {
4421 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1455;
4422 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1455;
4423 1 : {
4424 1 : tree res_op0;
4425 1 : {
4426 1 : tree _o1[1], _r1;
4427 1 : _o1[0] = captures[0];
4428 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4429 1 : res_op0 = _r1;
4430 : }
4431 1 : tree _r;
4432 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4433 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4434 : return _r;
4435 : }
4436 3 : next_after_fail1455:;
4437 : }
4438 : }
4439 : }
4440 : }
4441 : }
4442 3 : if (real_minus_onep (_q21))
4443 : {
4444 1 : if (real_onep (_q22))
4445 : {
4446 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4447 : {
4448 1 : {
4449 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4450 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4451 : )
4452 : {
4453 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1456;
4454 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1456;
4455 1 : {
4456 1 : tree res_op0;
4457 1 : {
4458 1 : tree _o1[1], _r1;
4459 1 : _o1[0] = captures[0];
4460 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4461 1 : res_op0 = _r1;
4462 : }
4463 1 : tree _r;
4464 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4465 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4466 : return _r;
4467 : }
4468 72653375 : next_after_fail1456:;
4469 : }
4470 : }
4471 : }
4472 : }
4473 : }
4474 : }
4475 : break;
4476 : }
4477 8428 : case GE_EXPR:
4478 8428 : {
4479 8428 : tree _q30 = TREE_OPERAND (_q20, 0);
4480 8428 : tree _q31 = TREE_OPERAND (_q20, 1);
4481 8428 : if (real_zerop (_q31))
4482 : {
4483 2 : if (real_onep (_q21))
4484 : {
4485 1 : if (real_minus_onep (_q22))
4486 : {
4487 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4488 : {
4489 1 : {
4490 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4491 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4492 : )
4493 : {
4494 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1457;
4495 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1457;
4496 1 : {
4497 1 : tree res_op0;
4498 1 : {
4499 1 : tree _o1[1], _r1;
4500 1 : _o1[0] = captures[0];
4501 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4502 1 : res_op0 = _r1;
4503 : }
4504 1 : tree _r;
4505 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4506 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4507 : return _r;
4508 : }
4509 1 : next_after_fail1457:;
4510 : }
4511 : }
4512 : }
4513 : }
4514 : }
4515 1 : if (real_minus_onep (_q21))
4516 : {
4517 1 : if (real_onep (_q22))
4518 : {
4519 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4520 : {
4521 1 : {
4522 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4523 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4524 : )
4525 : {
4526 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1458;
4527 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1458;
4528 1 : {
4529 1 : tree res_op0;
4530 1 : {
4531 1 : tree _o1[1], _r1;
4532 1 : _o1[0] = captures[0];
4533 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4534 1 : res_op0 = _r1;
4535 : }
4536 1 : tree _r;
4537 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4538 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4539 : return _r;
4540 : }
4541 72653375 : next_after_fail1458:;
4542 : }
4543 : }
4544 : }
4545 : }
4546 : }
4547 : }
4548 : break;
4549 : }
4550 7837 : case LT_EXPR:
4551 7837 : {
4552 7837 : tree _q30 = TREE_OPERAND (_q20, 0);
4553 7837 : tree _q31 = TREE_OPERAND (_q20, 1);
4554 7837 : if (real_zerop (_q31))
4555 : {
4556 2 : if (real_onep (_q21))
4557 : {
4558 1 : if (real_minus_onep (_q22))
4559 : {
4560 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4561 : {
4562 1 : {
4563 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4564 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4565 : )
4566 : {
4567 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1459;
4568 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1459;
4569 1 : {
4570 1 : tree res_op0;
4571 1 : {
4572 1 : tree _o1[1], _r1;
4573 1 : _o1[0] = captures[0];
4574 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4575 1 : res_op0 = _r1;
4576 : }
4577 1 : tree _r;
4578 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4579 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4580 : return _r;
4581 : }
4582 1 : next_after_fail1459:;
4583 : }
4584 : }
4585 : }
4586 : }
4587 : }
4588 1 : if (real_minus_onep (_q21))
4589 : {
4590 1 : if (real_onep (_q22))
4591 : {
4592 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4593 : {
4594 1 : {
4595 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4596 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4597 : )
4598 : {
4599 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1460;
4600 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1460;
4601 1 : {
4602 1 : tree res_op0;
4603 1 : {
4604 1 : tree _o1[1], _r1;
4605 1 : _o1[0] = captures[0];
4606 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4607 1 : res_op0 = _r1;
4608 : }
4609 1 : tree _r;
4610 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4611 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4612 : return _r;
4613 : }
4614 72653375 : next_after_fail1460:;
4615 : }
4616 : }
4617 : }
4618 : }
4619 : }
4620 : }
4621 : break;
4622 : }
4623 3290 : case LE_EXPR:
4624 3290 : {
4625 3290 : tree _q30 = TREE_OPERAND (_q20, 0);
4626 3290 : tree _q31 = TREE_OPERAND (_q20, 1);
4627 3290 : if (real_zerop (_q31))
4628 : {
4629 2 : if (real_onep (_q21))
4630 : {
4631 1 : if (real_minus_onep (_q22))
4632 : {
4633 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4634 : {
4635 1 : {
4636 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4637 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4638 : )
4639 : {
4640 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1461;
4641 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1461;
4642 1 : {
4643 1 : tree res_op0;
4644 1 : {
4645 1 : tree _o1[1], _r1;
4646 1 : _o1[0] = captures[0];
4647 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4648 1 : res_op0 = _r1;
4649 : }
4650 1 : tree _r;
4651 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4652 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
4653 : return _r;
4654 : }
4655 1 : next_after_fail1461:;
4656 : }
4657 : }
4658 : }
4659 : }
4660 : }
4661 1 : if (real_minus_onep (_q21))
4662 : {
4663 1 : if (real_onep (_q22))
4664 : {
4665 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4666 : {
4667 1 : {
4668 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4669 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4670 : )
4671 : {
4672 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1462;
4673 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1462;
4674 1 : {
4675 1 : tree res_op0;
4676 1 : {
4677 1 : tree _o1[1], _r1;
4678 1 : _o1[0] = captures[0];
4679 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4680 1 : res_op0 = _r1;
4681 : }
4682 1 : tree _r;
4683 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4684 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4685 : return _r;
4686 : }
4687 72653375 : next_after_fail1462:;
4688 : }
4689 : }
4690 : }
4691 : }
4692 : }
4693 : }
4694 : break;
4695 : }
4696 : default:;
4697 : }
4698 : break;
4699 : }
4700 72653375 : default:;
4701 : }
4702 72653375 : switch (TREE_CODE (_p1))
4703 : {
4704 3184 : case COND_EXPR:
4705 3184 : {
4706 3184 : tree _q30 = TREE_OPERAND (_p1, 0);
4707 3184 : tree _q31 = TREE_OPERAND (_p1, 1);
4708 3184 : tree _q32 = TREE_OPERAND (_p1, 2);
4709 3184 : switch (TREE_CODE (_q30))
4710 : {
4711 530 : case GT_EXPR:
4712 530 : {
4713 530 : tree _q40 = TREE_OPERAND (_q30, 0);
4714 530 : tree _q41 = TREE_OPERAND (_q30, 1);
4715 530 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4716 : {
4717 0 : if (real_zerop (_q41))
4718 : {
4719 0 : if (real_minus_onep (_q31))
4720 : {
4721 0 : if (real_onep (_q32))
4722 : {
4723 0 : {
4724 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4725 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4726 : )
4727 : {
4728 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1463;
4729 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1463;
4730 0 : {
4731 0 : tree res_op0;
4732 0 : {
4733 0 : tree _o1[1], _r1;
4734 0 : _o1[0] = captures[0];
4735 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4736 0 : res_op0 = _r1;
4737 : }
4738 0 : tree _r;
4739 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4740 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4741 : return _r;
4742 : }
4743 72653375 : next_after_fail1463:;
4744 : }
4745 : }
4746 : }
4747 : }
4748 : }
4749 : }
4750 : break;
4751 : }
4752 20 : case GE_EXPR:
4753 20 : {
4754 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4755 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4756 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4757 : {
4758 0 : if (real_zerop (_q41))
4759 : {
4760 0 : if (real_minus_onep (_q31))
4761 : {
4762 0 : if (real_onep (_q32))
4763 : {
4764 0 : {
4765 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4766 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4767 : )
4768 : {
4769 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1464;
4770 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1464;
4771 0 : {
4772 0 : tree res_op0;
4773 0 : {
4774 0 : tree _o1[1], _r1;
4775 0 : _o1[0] = captures[0];
4776 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4777 0 : res_op0 = _r1;
4778 : }
4779 0 : tree _r;
4780 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4781 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4782 : return _r;
4783 : }
4784 72653375 : next_after_fail1464:;
4785 : }
4786 : }
4787 : }
4788 : }
4789 : }
4790 : }
4791 : break;
4792 : }
4793 51 : case LT_EXPR:
4794 51 : {
4795 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4796 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4797 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4798 : {
4799 0 : if (real_zerop (_q41))
4800 : {
4801 0 : if (real_minus_onep (_q31))
4802 : {
4803 0 : if (real_onep (_q32))
4804 : {
4805 0 : {
4806 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4807 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4808 : )
4809 : {
4810 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1465;
4811 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1465;
4812 0 : {
4813 0 : tree res_op0;
4814 0 : {
4815 0 : tree _o1[1], _r1;
4816 0 : _o1[0] = captures[0];
4817 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4818 0 : res_op0 = _r1;
4819 : }
4820 0 : tree _r;
4821 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4822 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4823 : return _r;
4824 : }
4825 72653375 : next_after_fail1465:;
4826 : }
4827 : }
4828 : }
4829 : }
4830 : }
4831 : }
4832 : break;
4833 : }
4834 5 : case LE_EXPR:
4835 5 : {
4836 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4837 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4838 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4839 : {
4840 0 : if (real_zerop (_q41))
4841 : {
4842 0 : if (real_minus_onep (_q31))
4843 : {
4844 0 : if (real_onep (_q32))
4845 : {
4846 0 : {
4847 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4848 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4849 : )
4850 : {
4851 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1466;
4852 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1466;
4853 0 : {
4854 0 : tree res_op0;
4855 0 : {
4856 0 : tree _o1[1], _r1;
4857 0 : _o1[0] = captures[0];
4858 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4859 0 : res_op0 = _r1;
4860 : }
4861 0 : tree _r;
4862 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4863 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
4864 : return _r;
4865 : }
4866 72653375 : next_after_fail1466:;
4867 : }
4868 : }
4869 : }
4870 : }
4871 : }
4872 : }
4873 : break;
4874 : }
4875 : default:;
4876 : }
4877 : break;
4878 : }
4879 901543 : case CALL_EXPR:
4880 901543 : switch (get_call_combined_fn (_p1))
4881 : {
4882 20 : case CFN_BUILT_IN_COPYSIGNF16:
4883 20 : if (call_expr_nargs (_p1) == 2)
4884 : {
4885 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4886 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4887 20 : if (real_onep (_q30))
4888 : {
4889 20 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4890 : {
4891 0 : {
4892 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4893 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4894 0 : if (res) return res;
4895 : }
4896 : }
4897 : }
4898 : }
4899 : break;
4900 0 : case CFN_BUILT_IN_COPYSIGNF32:
4901 0 : if (call_expr_nargs (_p1) == 2)
4902 : {
4903 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4904 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4905 0 : if (real_onep (_q30))
4906 : {
4907 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4908 : {
4909 0 : {
4910 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4911 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4912 0 : if (res) return res;
4913 : }
4914 : }
4915 : }
4916 : }
4917 : break;
4918 0 : case CFN_BUILT_IN_COPYSIGNF64:
4919 0 : if (call_expr_nargs (_p1) == 2)
4920 : {
4921 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4922 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4923 0 : if (real_onep (_q30))
4924 : {
4925 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4926 : {
4927 0 : {
4928 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4929 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4930 0 : if (res) return res;
4931 : }
4932 : }
4933 : }
4934 : }
4935 : break;
4936 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4937 0 : if (call_expr_nargs (_p1) == 2)
4938 : {
4939 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4940 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4941 0 : if (real_onep (_q30))
4942 : {
4943 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4944 : {
4945 0 : {
4946 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4947 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
4948 0 : if (res) return res;
4949 : }
4950 : }
4951 : }
4952 : }
4953 : break;
4954 0 : case CFN_BUILT_IN_COPYSIGNF128:
4955 0 : if (call_expr_nargs (_p1) == 2)
4956 : {
4957 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4958 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4959 0 : if (real_onep (_q30))
4960 : {
4961 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4962 : {
4963 0 : {
4964 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4965 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
4966 0 : if (res) return res;
4967 : }
4968 : }
4969 : }
4970 : }
4971 : break;
4972 0 : case CFN_BUILT_IN_COPYSIGNF32X:
4973 0 : if (call_expr_nargs (_p1) == 2)
4974 : {
4975 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4976 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4977 0 : if (real_onep (_q30))
4978 : {
4979 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4980 : {
4981 0 : {
4982 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4983 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
4984 0 : if (res) return res;
4985 : }
4986 : }
4987 : }
4988 : }
4989 : break;
4990 0 : case CFN_BUILT_IN_COPYSIGNF64X:
4991 0 : if (call_expr_nargs (_p1) == 2)
4992 : {
4993 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4994 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4995 0 : if (real_onep (_q30))
4996 : {
4997 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4998 : {
4999 0 : {
5000 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5001 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5002 0 : if (res) return res;
5003 : }
5004 : }
5005 : }
5006 : }
5007 : break;
5008 18 : case CFN_BUILT_IN_COPYSIGN:
5009 18 : if (call_expr_nargs (_p1) == 2)
5010 : {
5011 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5012 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5013 18 : if (real_onep (_q30))
5014 : {
5015 14 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5016 : {
5017 0 : {
5018 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5019 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5020 0 : if (res) return res;
5021 : }
5022 : }
5023 : }
5024 : }
5025 : break;
5026 14 : case CFN_BUILT_IN_COPYSIGNF:
5027 14 : if (call_expr_nargs (_p1) == 2)
5028 : {
5029 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5030 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5031 14 : if (real_onep (_q30))
5032 : {
5033 12 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5034 : {
5035 0 : {
5036 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5037 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5038 0 : if (res) return res;
5039 : }
5040 : }
5041 : }
5042 : }
5043 : break;
5044 0 : case CFN_BUILT_IN_COPYSIGNL:
5045 0 : if (call_expr_nargs (_p1) == 2)
5046 : {
5047 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5048 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5049 0 : if (real_onep (_q30))
5050 : {
5051 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5052 : {
5053 0 : {
5054 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5055 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5056 0 : if (res) return res;
5057 : }
5058 : }
5059 : }
5060 : }
5061 : break;
5062 0 : case CFN_COPYSIGN:
5063 0 : if (call_expr_nargs (_p1) == 2)
5064 : {
5065 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5066 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5067 0 : if (real_onep (_q30))
5068 : {
5069 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5070 : {
5071 0 : {
5072 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5073 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5074 0 : if (res) return res;
5075 : }
5076 : }
5077 : }
5078 : }
5079 : break;
5080 : default:;
5081 : }
5082 : break;
5083 72653375 : default:;
5084 : }
5085 72653375 : switch (TREE_CODE (_p0))
5086 : {
5087 2774535 : case CALL_EXPR:
5088 2774535 : switch (get_call_combined_fn (_p0))
5089 : {
5090 1 : case CFN_BUILT_IN_COPYSIGNF16:
5091 1 : if (call_expr_nargs (_p0) == 2)
5092 : {
5093 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5094 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5095 1 : if (real_onep (_q20))
5096 : {
5097 1 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5098 : {
5099 0 : {
5100 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5101 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5102 0 : if (res) return res;
5103 : }
5104 : }
5105 1 : switch (TREE_CODE (_q21))
5106 : {
5107 0 : case NEGATE_EXPR:
5108 0 : {
5109 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5110 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5111 : {
5112 0 : {
5113 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5114 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5115 0 : if (res) return res;
5116 : }
5117 : }
5118 : break;
5119 : }
5120 : default:;
5121 : }
5122 : }
5123 : }
5124 : break;
5125 0 : case CFN_BUILT_IN_COPYSIGNF32:
5126 0 : if (call_expr_nargs (_p0) == 2)
5127 : {
5128 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5129 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5130 0 : if (real_onep (_q20))
5131 : {
5132 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5133 : {
5134 0 : {
5135 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5136 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5137 0 : if (res) return res;
5138 : }
5139 : }
5140 0 : switch (TREE_CODE (_q21))
5141 : {
5142 0 : case NEGATE_EXPR:
5143 0 : {
5144 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5145 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5146 : {
5147 0 : {
5148 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5149 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5150 0 : if (res) return res;
5151 : }
5152 : }
5153 : break;
5154 : }
5155 : default:;
5156 : }
5157 : }
5158 : }
5159 : break;
5160 0 : case CFN_BUILT_IN_COPYSIGNF64:
5161 0 : if (call_expr_nargs (_p0) == 2)
5162 : {
5163 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5164 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5165 0 : if (real_onep (_q20))
5166 : {
5167 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5168 : {
5169 0 : {
5170 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5171 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5172 0 : if (res) return res;
5173 : }
5174 : }
5175 0 : switch (TREE_CODE (_q21))
5176 : {
5177 0 : case NEGATE_EXPR:
5178 0 : {
5179 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5180 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5181 : {
5182 0 : {
5183 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5184 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5185 0 : if (res) return res;
5186 : }
5187 : }
5188 : break;
5189 : }
5190 : default:;
5191 : }
5192 : }
5193 : }
5194 : break;
5195 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5196 0 : if (call_expr_nargs (_p0) == 2)
5197 : {
5198 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5199 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5200 0 : if (real_onep (_q20))
5201 : {
5202 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5203 : {
5204 0 : {
5205 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5206 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5207 0 : if (res) return res;
5208 : }
5209 : }
5210 0 : switch (TREE_CODE (_q21))
5211 : {
5212 0 : case NEGATE_EXPR:
5213 0 : {
5214 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5215 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5216 : {
5217 0 : {
5218 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5219 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5220 0 : if (res) return res;
5221 : }
5222 : }
5223 : break;
5224 : }
5225 : default:;
5226 : }
5227 : }
5228 : }
5229 : break;
5230 8 : case CFN_BUILT_IN_COPYSIGNF128:
5231 8 : if (call_expr_nargs (_p0) == 2)
5232 : {
5233 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5234 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5235 8 : if (real_onep (_q20))
5236 : {
5237 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5238 : {
5239 0 : {
5240 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5241 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5242 0 : if (res) return res;
5243 : }
5244 : }
5245 0 : switch (TREE_CODE (_q21))
5246 : {
5247 0 : case NEGATE_EXPR:
5248 0 : {
5249 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5250 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5251 : {
5252 0 : {
5253 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5254 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5255 0 : if (res) return res;
5256 : }
5257 : }
5258 : break;
5259 : }
5260 : default:;
5261 : }
5262 : }
5263 : }
5264 : break;
5265 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5266 0 : if (call_expr_nargs (_p0) == 2)
5267 : {
5268 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5269 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5270 0 : if (real_onep (_q20))
5271 : {
5272 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5273 : {
5274 0 : {
5275 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5276 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5277 0 : if (res) return res;
5278 : }
5279 : }
5280 0 : switch (TREE_CODE (_q21))
5281 : {
5282 0 : case NEGATE_EXPR:
5283 0 : {
5284 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5285 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5286 : {
5287 0 : {
5288 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5289 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5290 0 : if (res) return res;
5291 : }
5292 : }
5293 : break;
5294 : }
5295 : default:;
5296 : }
5297 : }
5298 : }
5299 : break;
5300 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5301 0 : if (call_expr_nargs (_p0) == 2)
5302 : {
5303 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5304 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5305 0 : if (real_onep (_q20))
5306 : {
5307 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5308 : {
5309 0 : {
5310 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5311 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5312 0 : if (res) return res;
5313 : }
5314 : }
5315 0 : switch (TREE_CODE (_q21))
5316 : {
5317 0 : case NEGATE_EXPR:
5318 0 : {
5319 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5320 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5321 : {
5322 0 : {
5323 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5324 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5325 0 : if (res) return res;
5326 : }
5327 : }
5328 : break;
5329 : }
5330 : default:;
5331 : }
5332 : }
5333 : }
5334 : break;
5335 18 : case CFN_BUILT_IN_COPYSIGN:
5336 18 : if (call_expr_nargs (_p0) == 2)
5337 : {
5338 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5339 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5340 18 : if (real_onep (_q20))
5341 : {
5342 3 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5343 : {
5344 0 : {
5345 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5346 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5347 0 : if (res) return res;
5348 : }
5349 : }
5350 3 : switch (TREE_CODE (_q21))
5351 : {
5352 0 : case NEGATE_EXPR:
5353 0 : {
5354 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5355 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5356 : {
5357 0 : {
5358 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5359 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5360 0 : if (res) return res;
5361 : }
5362 : }
5363 : break;
5364 : }
5365 : default:;
5366 : }
5367 : }
5368 : }
5369 : break;
5370 36 : case CFN_BUILT_IN_COPYSIGNF:
5371 36 : if (call_expr_nargs (_p0) == 2)
5372 : {
5373 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5374 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5375 36 : if (real_onep (_q20))
5376 : {
5377 12 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5378 : {
5379 4 : {
5380 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5381 4 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5382 4 : if (res) return res;
5383 : }
5384 : }
5385 12 : switch (TREE_CODE (_q21))
5386 : {
5387 0 : case NEGATE_EXPR:
5388 0 : {
5389 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5390 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5391 : {
5392 0 : {
5393 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5394 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5395 0 : if (res) return res;
5396 : }
5397 : }
5398 : break;
5399 : }
5400 : default:;
5401 : }
5402 : }
5403 : }
5404 : break;
5405 8 : case CFN_BUILT_IN_COPYSIGNL:
5406 8 : if (call_expr_nargs (_p0) == 2)
5407 : {
5408 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5409 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5410 8 : if (real_onep (_q20))
5411 : {
5412 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5413 : {
5414 0 : {
5415 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5416 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5417 0 : if (res) return res;
5418 : }
5419 : }
5420 0 : switch (TREE_CODE (_q21))
5421 : {
5422 0 : case NEGATE_EXPR:
5423 0 : {
5424 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5425 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5426 : {
5427 0 : {
5428 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5429 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5430 0 : if (res) return res;
5431 : }
5432 : }
5433 : break;
5434 : }
5435 : default:;
5436 : }
5437 : }
5438 : }
5439 : break;
5440 0 : case CFN_COPYSIGN:
5441 0 : if (call_expr_nargs (_p0) == 2)
5442 : {
5443 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5444 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5445 0 : if (real_onep (_q20))
5446 : {
5447 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5448 : {
5449 0 : {
5450 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5451 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5452 0 : if (res) return res;
5453 : }
5454 : }
5455 0 : switch (TREE_CODE (_q21))
5456 : {
5457 0 : case NEGATE_EXPR:
5458 0 : {
5459 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5460 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5461 : {
5462 0 : {
5463 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5464 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5465 0 : if (res) return res;
5466 : }
5467 : }
5468 : break;
5469 : }
5470 : default:;
5471 : }
5472 : }
5473 : }
5474 : break;
5475 : default:;
5476 : }
5477 : break;
5478 72653375 : default:;
5479 : }
5480 72653375 : switch (TREE_CODE (_p1))
5481 : {
5482 901543 : case CALL_EXPR:
5483 901543 : switch (get_call_combined_fn (_p1))
5484 : {
5485 20 : case CFN_BUILT_IN_COPYSIGNF16:
5486 20 : if (call_expr_nargs (_p1) == 2)
5487 : {
5488 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5489 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5490 20 : if (real_onep (_q30))
5491 : {
5492 20 : switch (TREE_CODE (_q31))
5493 : {
5494 0 : case NEGATE_EXPR:
5495 0 : {
5496 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5497 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5498 : {
5499 0 : {
5500 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5501 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5502 0 : if (res) return res;
5503 : }
5504 : }
5505 : break;
5506 : }
5507 : default:;
5508 : }
5509 : }
5510 : }
5511 : break;
5512 0 : case CFN_BUILT_IN_COPYSIGNF32:
5513 0 : if (call_expr_nargs (_p1) == 2)
5514 : {
5515 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5516 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5517 0 : if (real_onep (_q30))
5518 : {
5519 0 : switch (TREE_CODE (_q31))
5520 : {
5521 0 : case NEGATE_EXPR:
5522 0 : {
5523 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5524 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5525 : {
5526 0 : {
5527 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5528 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5529 0 : if (res) return res;
5530 : }
5531 : }
5532 : break;
5533 : }
5534 : default:;
5535 : }
5536 : }
5537 : }
5538 : break;
5539 0 : case CFN_BUILT_IN_COPYSIGNF64:
5540 0 : if (call_expr_nargs (_p1) == 2)
5541 : {
5542 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5543 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5544 0 : if (real_onep (_q30))
5545 : {
5546 0 : switch (TREE_CODE (_q31))
5547 : {
5548 0 : case NEGATE_EXPR:
5549 0 : {
5550 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5551 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5552 : {
5553 0 : {
5554 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5555 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5556 0 : if (res) return res;
5557 : }
5558 : }
5559 : break;
5560 : }
5561 : default:;
5562 : }
5563 : }
5564 : }
5565 : break;
5566 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5567 0 : if (call_expr_nargs (_p1) == 2)
5568 : {
5569 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5570 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5571 0 : if (real_onep (_q30))
5572 : {
5573 0 : switch (TREE_CODE (_q31))
5574 : {
5575 0 : case NEGATE_EXPR:
5576 0 : {
5577 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5578 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5579 : {
5580 0 : {
5581 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5582 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5583 0 : if (res) return res;
5584 : }
5585 : }
5586 : break;
5587 : }
5588 : default:;
5589 : }
5590 : }
5591 : }
5592 : break;
5593 0 : case CFN_BUILT_IN_COPYSIGNF128:
5594 0 : if (call_expr_nargs (_p1) == 2)
5595 : {
5596 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5597 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5598 0 : if (real_onep (_q30))
5599 : {
5600 0 : switch (TREE_CODE (_q31))
5601 : {
5602 0 : case NEGATE_EXPR:
5603 0 : {
5604 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5605 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5606 : {
5607 0 : {
5608 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5609 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5610 0 : if (res) return res;
5611 : }
5612 : }
5613 : break;
5614 : }
5615 : default:;
5616 : }
5617 : }
5618 : }
5619 : break;
5620 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5621 0 : if (call_expr_nargs (_p1) == 2)
5622 : {
5623 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5624 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5625 0 : if (real_onep (_q30))
5626 : {
5627 0 : switch (TREE_CODE (_q31))
5628 : {
5629 0 : case NEGATE_EXPR:
5630 0 : {
5631 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5632 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5633 : {
5634 0 : {
5635 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5636 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5637 0 : if (res) return res;
5638 : }
5639 : }
5640 : break;
5641 : }
5642 : default:;
5643 : }
5644 : }
5645 : }
5646 : break;
5647 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5648 0 : if (call_expr_nargs (_p1) == 2)
5649 : {
5650 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5651 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5652 0 : if (real_onep (_q30))
5653 : {
5654 0 : switch (TREE_CODE (_q31))
5655 : {
5656 0 : case NEGATE_EXPR:
5657 0 : {
5658 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5659 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5660 : {
5661 0 : {
5662 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5663 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5664 0 : if (res) return res;
5665 : }
5666 : }
5667 : break;
5668 : }
5669 : default:;
5670 : }
5671 : }
5672 : }
5673 : break;
5674 18 : case CFN_BUILT_IN_COPYSIGN:
5675 18 : if (call_expr_nargs (_p1) == 2)
5676 : {
5677 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5678 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5679 18 : if (real_onep (_q30))
5680 : {
5681 14 : switch (TREE_CODE (_q31))
5682 : {
5683 0 : case NEGATE_EXPR:
5684 0 : {
5685 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5686 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5687 : {
5688 0 : {
5689 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5690 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5691 0 : if (res) return res;
5692 : }
5693 : }
5694 : break;
5695 : }
5696 : default:;
5697 : }
5698 : }
5699 : }
5700 : break;
5701 14 : case CFN_BUILT_IN_COPYSIGNF:
5702 14 : if (call_expr_nargs (_p1) == 2)
5703 : {
5704 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5705 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5706 14 : if (real_onep (_q30))
5707 : {
5708 12 : switch (TREE_CODE (_q31))
5709 : {
5710 0 : case NEGATE_EXPR:
5711 0 : {
5712 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5713 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5714 : {
5715 0 : {
5716 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5717 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5718 0 : if (res) return res;
5719 : }
5720 : }
5721 : break;
5722 : }
5723 : default:;
5724 : }
5725 : }
5726 : }
5727 : break;
5728 0 : case CFN_BUILT_IN_COPYSIGNL:
5729 0 : if (call_expr_nargs (_p1) == 2)
5730 : {
5731 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5732 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5733 0 : if (real_onep (_q30))
5734 : {
5735 0 : switch (TREE_CODE (_q31))
5736 : {
5737 0 : case NEGATE_EXPR:
5738 0 : {
5739 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5740 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5741 : {
5742 0 : {
5743 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5744 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5745 0 : if (res) return res;
5746 : }
5747 : }
5748 : break;
5749 : }
5750 : default:;
5751 : }
5752 : }
5753 : }
5754 : break;
5755 0 : case CFN_COPYSIGN:
5756 0 : if (call_expr_nargs (_p1) == 2)
5757 : {
5758 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5759 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5760 0 : if (real_onep (_q30))
5761 : {
5762 0 : switch (TREE_CODE (_q31))
5763 : {
5764 0 : case NEGATE_EXPR:
5765 0 : {
5766 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5767 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5768 : {
5769 0 : {
5770 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5771 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5772 0 : if (res) return res;
5773 : }
5774 : }
5775 : break;
5776 : }
5777 : default:;
5778 : }
5779 : }
5780 : }
5781 : break;
5782 : default:;
5783 : }
5784 : break;
5785 72653375 : default:;
5786 : }
5787 72653375 : if (integer_onep (_p1))
5788 : {
5789 3653164 : {
5790 3653164 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5791 3653164 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, MULT_EXPR);
5792 3653164 : if (res) return res;
5793 : }
5794 : }
5795 69000211 : switch (TREE_CODE (_p0))
5796 : {
5797 5884746 : case MULT_EXPR:
5798 5884746 : {
5799 5884746 : tree _q20 = TREE_OPERAND (_p0, 0);
5800 5884746 : tree _q21 = TREE_OPERAND (_p0, 1);
5801 5884746 : switch (TREE_CODE (_q21))
5802 : {
5803 1162559 : case INTEGER_CST:
5804 1162559 : {
5805 1162559 : switch (TREE_CODE (_p1))
5806 : {
5807 992444 : case INTEGER_CST:
5808 992444 : {
5809 992444 : {
5810 992444 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5811 992444 : {
5812 992444 : wi::overflow_type overflow;
5813 992444 : wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
5814 1984888 : TYPE_SIGN (type), &overflow);
5815 992444 : if (!overflow || TYPE_OVERFLOW_WRAPS (type)
5816 : )
5817 : {
5818 992414 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1467;
5819 992414 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1467;
5820 992414 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1467;
5821 992414 : {
5822 992414 : tree res_op0;
5823 992414 : res_op0 = captures[0];
5824 992414 : tree res_op1;
5825 992414 : res_op1 = wide_int_to_tree (type, mul);
5826 992414 : tree _r;
5827 992414 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5828 992414 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1008, __FILE__, __LINE__, true);
5829 992414 : return _r;
5830 : }
5831 30 : next_after_fail1467:;
5832 : }
5833 992414 : }
5834 : }
5835 30 : break;
5836 : }
5837 : default:;
5838 : }
5839 : break;
5840 : }
5841 : default:;
5842 : }
5843 : break;
5844 : }
5845 7665555 : case PLUS_EXPR:
5846 7665555 : {
5847 7665555 : tree _q20 = TREE_OPERAND (_p0, 0);
5848 7665555 : tree _q21 = TREE_OPERAND (_p0, 1);
5849 7665555 : switch (TREE_CODE (_q20))
5850 : {
5851 1152549 : case MULT_EXPR:
5852 1152549 : {
5853 1152549 : tree _q30 = TREE_OPERAND (_q20, 0);
5854 1152549 : tree _q31 = TREE_OPERAND (_q20, 1);
5855 1152549 : switch (TREE_CODE (_q31))
5856 : {
5857 304650 : case INTEGER_CST:
5858 304650 : {
5859 304650 : switch (TREE_CODE (_q21))
5860 : {
5861 35453 : case INTEGER_CST:
5862 35453 : {
5863 35453 : switch (TREE_CODE (_p1))
5864 : {
5865 11987 : case INTEGER_CST:
5866 11987 : {
5867 11987 : {
5868 11987 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
5869 11987 : {
5870 11987 : bool overflowed = true;
5871 11987 : wi::overflow_type ovf1, ovf2;
5872 11987 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[5]),
5873 23974 : TYPE_SIGN (type), &ovf1);
5874 11987 : wide_int add = wi::mul (wi::to_wide (captures[4]), wi::to_wide (captures[5]),
5875 23974 : TYPE_SIGN (type), &ovf2);
5876 11987 : if (TYPE_OVERFLOW_UNDEFINED (type))
5877 : {
5878 : }
5879 : else
5880 3996 : overflowed = false;
5881 3996 : if (!overflowed
5882 : )
5883 : {
5884 3996 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1468;
5885 3996 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1468;
5886 3996 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1468;
5887 3996 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1468;
5888 3996 : {
5889 3996 : tree res_op0;
5890 3996 : {
5891 3996 : tree _o1[2], _r1;
5892 3996 : _o1[0] = captures[2];
5893 3996 : _o1[1] = wide_int_to_tree (type, mul);
5894 3996 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5895 3996 : res_op0 = _r1;
5896 : }
5897 3996 : tree res_op1;
5898 3996 : res_op1 = wide_int_to_tree (type, add);
5899 3996 : tree _r;
5900 3996 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5901 3996 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
5902 3996 : return _r;
5903 : }
5904 7991 : next_after_fail1468:;
5905 : }
5906 11987 : }
5907 : }
5908 7991 : break;
5909 : }
5910 : default:;
5911 : }
5912 : break;
5913 : }
5914 : default:;
5915 : }
5916 : break;
5917 : }
5918 : default:;
5919 : }
5920 : break;
5921 : }
5922 : default:;
5923 : }
5924 : break;
5925 : }
5926 776736 : case RDIV_EXPR:
5927 776736 : {
5928 776736 : tree _q20 = TREE_OPERAND (_p0, 0);
5929 776736 : tree _q21 = TREE_OPERAND (_p0, 1);
5930 776736 : switch (TREE_CODE (_p1))
5931 : {
5932 272032 : case RDIV_EXPR:
5933 272032 : {
5934 272032 : tree _q50 = TREE_OPERAND (_p1, 0);
5935 272032 : tree _q51 = TREE_OPERAND (_p1, 1);
5936 272032 : {
5937 272032 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
5938 272032 : if (flag_reciprocal_math
5939 : )
5940 : {
5941 205 : if (flag_associative_math
5942 204 : && !HONOR_NANS (type) && !HONOR_INFINITIES (type)
5943 204 : && !flag_trapping_math
5944 203 : && (TREE_CODE (type) != COMPLEX_TYPE
5945 0 : || !HONOR_SIGNED_ZEROS (type))
5946 205 : && single_use (captures[0]) && single_use (captures[3])
5947 : )
5948 : {
5949 203 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1469;
5950 203 : {
5951 203 : tree res_op0;
5952 203 : {
5953 203 : tree _o1[2], _r1;
5954 203 : _o1[0] = captures[1];
5955 203 : _o1[1] = captures[4];
5956 203 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5957 203 : res_op0 = _r1;
5958 : }
5959 203 : tree res_op1;
5960 203 : {
5961 203 : tree _o1[2], _r1;
5962 203 : _o1[0] = captures[2];
5963 203 : _o1[1] = captures[5];
5964 203 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5965 203 : res_op1 = _r1;
5966 : }
5967 203 : tree _r;
5968 203 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
5969 203 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
5970 : return _r;
5971 : }
5972 0 : next_after_fail1469:;
5973 : }
5974 : }
5975 : }
5976 : break;
5977 : }
5978 : default:;
5979 : }
5980 : break;
5981 : }
5982 79102 : case TRUNC_DIV_EXPR:
5983 79102 : {
5984 79102 : tree _q20 = TREE_OPERAND (_p0, 0);
5985 79102 : tree _q21 = TREE_OPERAND (_p0, 1);
5986 79102 : if (integer_pow2p (_q21))
5987 : {
5988 56961 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5989 : {
5990 37553 : {
5991 37553 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5992 37553 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5993 : )
5994 : {
5995 37489 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1470;
5996 37489 : {
5997 37489 : tree res_op0;
5998 37489 : res_op0 = captures[0];
5999 37489 : tree res_op1;
6000 37489 : {
6001 37489 : tree _o1[1], _r1;
6002 37489 : _o1[0] = captures[1];
6003 37489 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
6004 37489 : res_op1 = _r1;
6005 : }
6006 37489 : tree _r;
6007 37489 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
6008 37489 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
6009 : return _r;
6010 : }
6011 0 : next_after_fail1470:;
6012 : }
6013 : }
6014 : }
6015 : }
6016 : break;
6017 : }
6018 273 : case ABS_EXPR:
6019 273 : {
6020 273 : tree _q20 = TREE_OPERAND (_p0, 0);
6021 273 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6022 : {
6023 2 : {
6024 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
6025 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1471;
6026 2 : {
6027 2 : if (! tree_invariant_p (captures[1])) goto next_after_fail1471;
6028 0 : tree res_op0;
6029 0 : res_op0 = unshare_expr (captures[1]);
6030 0 : tree res_op1;
6031 0 : res_op1 = captures[1];
6032 0 : tree _r;
6033 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6034 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
6035 : return _r;
6036 : }
6037 273 : next_after_fail1471:;
6038 : }
6039 : }
6040 273 : switch (TREE_CODE (_p1))
6041 : {
6042 15 : case ABS_EXPR:
6043 15 : {
6044 15 : tree _q40 = TREE_OPERAND (_p1, 0);
6045 15 : {
6046 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6047 10 : if ((FLOAT_TYPE_P (type)
6048 5 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type))
6049 26 : || (ANY_INTEGRAL_TYPE_P (type)
6050 10 : && TYPE_OVERFLOW_UNDEFINED (type)
6051 8 : && !TYPE_OVERFLOW_SANITIZED (type))
6052 : )
6053 : {
6054 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1472;
6055 10 : {
6056 10 : tree res_op0;
6057 10 : {
6058 10 : tree _o1[2], _r1;
6059 10 : _o1[0] = captures[1];
6060 10 : _o1[1] = captures[3];
6061 10 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6062 10 : res_op0 = _r1;
6063 : }
6064 10 : tree _r;
6065 10 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
6066 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1013, __FILE__, __LINE__, true);
6067 : return _r;
6068 : }
6069 0 : next_after_fail1472:;
6070 : }
6071 : }
6072 : break;
6073 : }
6074 : default:;
6075 : }
6076 : break;
6077 : }
6078 0 : case ABSU_EXPR:
6079 0 : {
6080 0 : tree _q20 = TREE_OPERAND (_p0, 0);
6081 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6082 : {
6083 0 : {
6084 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20 };
6085 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1473;
6086 0 : {
6087 0 : tree res_op0;
6088 0 : {
6089 0 : tree _o1[1], _r1;
6090 0 : _o1[0] = captures[1];
6091 0 : if (TREE_TYPE (_o1[0]) != type)
6092 : {
6093 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
6094 : }
6095 : else
6096 : _r1 = _o1[0];
6097 0 : captures[2] = _r1;
6098 : }
6099 0 : res_op0 = unshare_expr (captures[2]);
6100 0 : tree res_op1;
6101 0 : res_op1 = captures[2];
6102 0 : tree _r;
6103 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6104 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
6105 72733665 : return _r;
6106 : }
6107 0 : next_after_fail1473:;
6108 : }
6109 : }
6110 : break;
6111 : }
6112 2531303 : case CALL_EXPR:
6113 2531303 : switch (get_call_combined_fn (_p0))
6114 : {
6115 1 : case CFN_BUILT_IN_COPYSIGNF16:
6116 1 : if (call_expr_nargs (_p0) == 2)
6117 : {
6118 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6119 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6120 1 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6121 : {
6122 0 : {
6123 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6124 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
6125 0 : if (res) return res;
6126 : }
6127 : }
6128 : }
6129 : break;
6130 0 : case CFN_BUILT_IN_COPYSIGNF32:
6131 0 : if (call_expr_nargs (_p0) == 2)
6132 : {
6133 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6134 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6135 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6136 : {
6137 0 : {
6138 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6139 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
6140 0 : if (res) return res;
6141 : }
6142 : }
6143 : }
6144 : break;
6145 0 : case CFN_BUILT_IN_COPYSIGNF64:
6146 0 : if (call_expr_nargs (_p0) == 2)
6147 : {
6148 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6149 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6150 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6151 : {
6152 0 : {
6153 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6154 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
6155 0 : if (res) return res;
6156 : }
6157 : }
6158 : }
6159 : break;
6160 0 : case CFN_BUILT_IN_COPYSIGNF128X:
6161 0 : if (call_expr_nargs (_p0) == 2)
6162 : {
6163 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6164 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6165 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6166 : {
6167 0 : {
6168 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6169 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
6170 0 : if (res) return res;
6171 : }
6172 : }
6173 : }
6174 : break;
6175 8 : case CFN_BUILT_IN_COPYSIGNF128:
6176 8 : if (call_expr_nargs (_p0) == 2)
6177 : {
6178 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6179 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6180 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6181 : {
6182 0 : {
6183 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6184 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
6185 0 : if (res) return res;
6186 : }
6187 : }
6188 : }
6189 : break;
6190 0 : case CFN_BUILT_IN_COPYSIGNF32X:
6191 0 : if (call_expr_nargs (_p0) == 2)
6192 : {
6193 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6194 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6195 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6196 : {
6197 0 : {
6198 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6199 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
6200 0 : if (res) return res;
6201 : }
6202 : }
6203 : }
6204 : break;
6205 0 : case CFN_BUILT_IN_COPYSIGNF64X:
6206 0 : if (call_expr_nargs (_p0) == 2)
6207 : {
6208 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6209 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6210 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6211 : {
6212 0 : {
6213 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6214 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
6215 0 : if (res) return res;
6216 : }
6217 : }
6218 : }
6219 : break;
6220 18 : case CFN_BUILT_IN_COPYSIGN:
6221 18 : if (call_expr_nargs (_p0) == 2)
6222 : {
6223 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6224 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6225 18 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6226 : {
6227 0 : {
6228 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6229 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
6230 0 : if (res) return res;
6231 : }
6232 : }
6233 : }
6234 : break;
6235 36 : case CFN_BUILT_IN_COPYSIGNF:
6236 36 : if (call_expr_nargs (_p0) == 2)
6237 : {
6238 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6239 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6240 36 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6241 : {
6242 0 : {
6243 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6244 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
6245 0 : if (res) return res;
6246 : }
6247 : }
6248 : }
6249 : break;
6250 8 : case CFN_BUILT_IN_COPYSIGNL:
6251 8 : if (call_expr_nargs (_p0) == 2)
6252 : {
6253 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6254 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6255 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6256 : {
6257 0 : {
6258 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6259 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
6260 0 : if (res) return res;
6261 : }
6262 : }
6263 : }
6264 : break;
6265 0 : case CFN_COPYSIGN:
6266 0 : if (call_expr_nargs (_p0) == 2)
6267 : {
6268 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6269 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6270 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6271 : {
6272 0 : {
6273 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6274 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
6275 0 : if (res) return res;
6276 : }
6277 : }
6278 : }
6279 : break;
6280 : default:;
6281 : }
6282 : break;
6283 67966099 : default:;
6284 : }
6285 67966099 : switch (TREE_CODE (_p1))
6286 : {
6287 7427067 : CASE_CONVERT:
6288 7427067 : {
6289 7427067 : tree _q30 = TREE_OPERAND (_p1, 0);
6290 7427067 : switch (TREE_CODE (_q30))
6291 : {
6292 0 : case LSHIFT_EXPR:
6293 0 : {
6294 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6295 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6296 0 : if (integer_onep (_q40))
6297 : {
6298 0 : {
6299 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
6300 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
6301 0 : if (res) return res;
6302 : }
6303 : }
6304 : break;
6305 : }
6306 : default:;
6307 : }
6308 : break;
6309 : }
6310 67966099 : default:;
6311 : }
6312 67966099 : switch (TREE_CODE (_p0))
6313 : {
6314 32236112 : CASE_CONVERT:
6315 32236112 : {
6316 32236112 : tree _q20 = TREE_OPERAND (_p0, 0);
6317 32236112 : switch (TREE_CODE (_q20))
6318 : {
6319 20 : case LSHIFT_EXPR:
6320 20 : {
6321 20 : tree _q30 = TREE_OPERAND (_q20, 0);
6322 20 : tree _q31 = TREE_OPERAND (_q20, 1);
6323 20 : if (integer_onep (_q30))
6324 : {
6325 1 : {
6326 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _q31 };
6327 1 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
6328 1 : if (res) return res;
6329 : }
6330 : }
6331 : break;
6332 : }
6333 1 : case EQ_EXPR:
6334 1 : {
6335 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6336 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6337 1 : if (integer_zerop (_q31))
6338 : {
6339 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6340 : {
6341 0 : {
6342 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6343 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
6344 0 : if (res) return res;
6345 : }
6346 : }
6347 : }
6348 : break;
6349 : }
6350 : default:;
6351 : }
6352 : break;
6353 : }
6354 67966099 : default:;
6355 : }
6356 67966099 : switch (TREE_CODE (_p1))
6357 : {
6358 1149 : case LSHIFT_EXPR:
6359 1149 : {
6360 1149 : tree _q30 = TREE_OPERAND (_p1, 0);
6361 1149 : tree _q31 = TREE_OPERAND (_p1, 1);
6362 1149 : if (integer_onep (_q30))
6363 : {
6364 470 : {
6365 470 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
6366 470 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
6367 470 : if (res) return res;
6368 : }
6369 : }
6370 : break;
6371 : }
6372 67965629 : default:;
6373 : }
6374 67965629 : switch (TREE_CODE (_p0))
6375 : {
6376 4253 : case LSHIFT_EXPR:
6377 4253 : {
6378 4253 : tree _q20 = TREE_OPERAND (_p0, 0);
6379 4253 : tree _q21 = TREE_OPERAND (_p0, 1);
6380 4253 : if (integer_onep (_q20))
6381 : {
6382 4031 : {
6383 4031 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
6384 4031 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
6385 4031 : if (res) return res;
6386 : }
6387 : }
6388 : break;
6389 : }
6390 67961598 : default:;
6391 : }
6392 67961598 : switch (TREE_CODE (_p1))
6393 : {
6394 7426646 : CASE_CONVERT:
6395 7426646 : {
6396 7426646 : tree _q30 = TREE_OPERAND (_p1, 0);
6397 7426646 : switch (TREE_CODE (_q30))
6398 : {
6399 0 : case EQ_EXPR:
6400 0 : {
6401 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6402 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6403 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6404 : {
6405 0 : if (integer_zerop (_q41))
6406 : {
6407 0 : {
6408 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
6409 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
6410 0 : if (res) return res;
6411 : }
6412 : }
6413 : }
6414 : break;
6415 : }
6416 : default:;
6417 : }
6418 : break;
6419 : }
6420 0 : case EQ_EXPR:
6421 0 : {
6422 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6423 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6424 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6425 : {
6426 0 : if (integer_zerop (_q31))
6427 : {
6428 0 : {
6429 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6430 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
6431 0 : if (res) return res;
6432 : }
6433 : }
6434 : }
6435 : break;
6436 : }
6437 67961598 : default:;
6438 : }
6439 67961598 : switch (TREE_CODE (_p0))
6440 : {
6441 183 : case EQ_EXPR:
6442 183 : {
6443 183 : tree _q20 = TREE_OPERAND (_p0, 0);
6444 183 : tree _q21 = TREE_OPERAND (_p0, 1);
6445 183 : if (integer_zerop (_q21))
6446 : {
6447 59 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6448 : {
6449 3 : {
6450 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6451 3 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
6452 3 : if (res) return res;
6453 : }
6454 : }
6455 : }
6456 : break;
6457 : }
6458 67961595 : default:;
6459 : }
6460 67961595 : switch (TREE_CODE (_p1))
6461 : {
6462 0 : case VEC_COND_EXPR:
6463 0 : {
6464 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6465 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6466 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6467 0 : switch (TREE_CODE (_q30))
6468 : {
6469 0 : case EQ_EXPR:
6470 0 : {
6471 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6472 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6473 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6474 : {
6475 0 : if (integer_zerop (_q41))
6476 : {
6477 0 : if (integer_zerop (_q32))
6478 : {
6479 0 : {
6480 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q32 };
6481 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1474;
6482 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1474;
6483 0 : {
6484 0 : tree _r;
6485 0 : _r = captures[2];
6486 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1015, __FILE__, __LINE__, true);
6487 : return _r;
6488 : }
6489 67961595 : next_after_fail1474:;
6490 : }
6491 : }
6492 : }
6493 : }
6494 : break;
6495 : }
6496 : default:;
6497 : }
6498 : break;
6499 : }
6500 67961595 : default:;
6501 : }
6502 67961595 : switch (TREE_CODE (_p0))
6503 : {
6504 37 : case VEC_COND_EXPR:
6505 37 : {
6506 37 : tree _q20 = TREE_OPERAND (_p0, 0);
6507 37 : tree _q21 = TREE_OPERAND (_p0, 1);
6508 37 : tree _q22 = TREE_OPERAND (_p0, 2);
6509 37 : switch (TREE_CODE (_q20))
6510 : {
6511 1 : case EQ_EXPR:
6512 1 : {
6513 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6514 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6515 1 : if (integer_zerop (_q31))
6516 : {
6517 1 : if (integer_zerop (_q22))
6518 : {
6519 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6520 : {
6521 1 : {
6522 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _q22 };
6523 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1475;
6524 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1475;
6525 1 : {
6526 1 : tree _r;
6527 1 : _r = captures[2];
6528 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1015, __FILE__, __LINE__, true);
6529 : return _r;
6530 : }
6531 67961594 : next_after_fail1475:;
6532 : }
6533 : }
6534 : }
6535 : }
6536 : break;
6537 : }
6538 0 : case NE_EXPR:
6539 0 : {
6540 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6541 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6542 0 : if (integer_zerop (_q31))
6543 : {
6544 0 : if (integer_zerop (_q21))
6545 : {
6546 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6547 : {
6548 0 : {
6549 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _q22 };
6550 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1476;
6551 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1476;
6552 0 : {
6553 0 : tree _r;
6554 0 : _r = captures[1];
6555 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1016, __FILE__, __LINE__, true);
6556 : return _r;
6557 : }
6558 67961594 : next_after_fail1476:;
6559 : }
6560 : }
6561 : }
6562 : }
6563 : break;
6564 : }
6565 : default:;
6566 : }
6567 : break;
6568 : }
6569 67961594 : default:;
6570 : }
6571 67961594 : switch (TREE_CODE (_p1))
6572 : {
6573 0 : case VEC_COND_EXPR:
6574 0 : {
6575 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6576 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6577 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6578 0 : switch (TREE_CODE (_q30))
6579 : {
6580 0 : case NE_EXPR:
6581 0 : {
6582 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6583 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6584 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6585 : {
6586 0 : if (integer_zerop (_q41))
6587 : {
6588 0 : if (integer_zerop (_q31))
6589 : {
6590 0 : {
6591 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q32 };
6592 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1477;
6593 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1477;
6594 0 : {
6595 0 : tree _r;
6596 0 : _r = captures[1];
6597 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1016, __FILE__, __LINE__, true);
6598 : return _r;
6599 : }
6600 67961594 : next_after_fail1477:;
6601 : }
6602 : }
6603 : }
6604 : }
6605 : break;
6606 : }
6607 : default:;
6608 : }
6609 : break;
6610 : }
6611 67961594 : default:;
6612 : }
6613 67961594 : switch (TREE_CODE (_p0))
6614 : {
6615 776533 : case RDIV_EXPR:
6616 776533 : {
6617 776533 : tree _q20 = TREE_OPERAND (_p0, 0);
6618 776533 : tree _q21 = TREE_OPERAND (_p0, 1);
6619 776533 : switch (TREE_CODE (_q20))
6620 : {
6621 58513 : case REAL_CST:
6622 58513 : {
6623 58513 : switch (TREE_CODE (_p1))
6624 : {
6625 1 : case REAL_CST:
6626 1 : {
6627 1 : {
6628 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6629 1 : if (flag_associative_math
6630 1 : && single_use (captures[0])
6631 : )
6632 : {
6633 1 : {
6634 1 : tree tem = const_binop (MULT_EXPR, type, captures[1], captures[3]);
6635 1 : if (tem
6636 : )
6637 : {
6638 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1478;
6639 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1478;
6640 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1478;
6641 1 : {
6642 1 : tree res_op0;
6643 1 : res_op0 = tem;
6644 1 : tree res_op1;
6645 1 : res_op1 = captures[2];
6646 1 : tree _r;
6647 1 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
6648 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1017, __FILE__, __LINE__, true);
6649 : return _r;
6650 : }
6651 67961593 : next_after_fail1478:;
6652 : }
6653 : }
6654 : }
6655 : }
6656 : break;
6657 : }
6658 : default:;
6659 : }
6660 : break;
6661 : }
6662 : default:;
6663 : }
6664 : break;
6665 : }
6666 67961593 : default:;
6667 : }
6668 67961593 : {
6669 67961593 : tree _p0_pops[1];
6670 67961593 : if (tree_nop_convert (_p0, _p0_pops))
6671 : {
6672 23403336 : tree _q20 = _p0_pops[0];
6673 23403336 : switch (TREE_CODE (_q20))
6674 : {
6675 4 : case BIT_IOR_EXPR:
6676 4 : {
6677 4 : tree _q30 = TREE_OPERAND (_q20, 0);
6678 4 : tree _q31 = TREE_OPERAND (_q20, 1);
6679 4 : switch (TREE_CODE (_q30))
6680 : {
6681 4 : case NEGATE_EXPR:
6682 4 : {
6683 4 : tree _q40 = TREE_OPERAND (_q30, 0);
6684 4 : switch (TREE_CODE (_q40))
6685 : {
6686 0 : CASE_CONVERT:
6687 0 : {
6688 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6689 0 : switch (TREE_CODE (_q50))
6690 : {
6691 0 : case LT_EXPR:
6692 0 : {
6693 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6694 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6695 0 : if (integer_zerop (_q61))
6696 : {
6697 0 : if (integer_onep (_q31))
6698 : {
6699 0 : {
6700 0 : tree _p1_pops[1];
6701 0 : if (tree_nop_convert (_p1, _p1_pops))
6702 : {
6703 0 : tree _q100 = _p1_pops[0];
6704 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6705 : {
6706 0 : {
6707 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6708 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6709 0 : if (res) return res;
6710 : }
6711 : }
6712 : }
6713 : }
6714 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6715 : {
6716 0 : {
6717 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6718 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6719 0 : if (res) return res;
6720 : }
6721 : }
6722 : }
6723 : }
6724 : break;
6725 : }
6726 : default:;
6727 : }
6728 : break;
6729 : }
6730 4 : case LT_EXPR:
6731 4 : {
6732 4 : tree _q50 = TREE_OPERAND (_q40, 0);
6733 4 : tree _q51 = TREE_OPERAND (_q40, 1);
6734 4 : if (integer_zerop (_q51))
6735 : {
6736 4 : if (integer_onep (_q31))
6737 : {
6738 4 : {
6739 4 : tree _p1_pops[1];
6740 4 : if (tree_nop_convert (_p1, _p1_pops))
6741 : {
6742 4 : tree _q90 = _p1_pops[0];
6743 4 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
6744 : {
6745 4 : {
6746 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6747 4 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6748 4 : if (res) return res;
6749 : }
6750 : }
6751 : }
6752 : }
6753 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6754 : {
6755 0 : {
6756 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6757 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6758 0 : if (res) return res;
6759 : }
6760 : }
6761 : }
6762 : }
6763 : break;
6764 : }
6765 : default:;
6766 : }
6767 : break;
6768 : }
6769 0 : default:;
6770 : }
6771 0 : {
6772 0 : tree _q30_pops[1];
6773 0 : if (tree_nop_convert (_q30, _q30_pops))
6774 : {
6775 0 : tree _q40 = _q30_pops[0];
6776 0 : switch (TREE_CODE (_q40))
6777 : {
6778 0 : case NEGATE_EXPR:
6779 0 : {
6780 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6781 0 : switch (TREE_CODE (_q50))
6782 : {
6783 0 : CASE_CONVERT:
6784 0 : {
6785 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6786 0 : switch (TREE_CODE (_q60))
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 (integer_zerop (_q71))
6793 : {
6794 0 : if (integer_onep (_q31))
6795 : {
6796 0 : {
6797 0 : tree _p1_pops[1];
6798 0 : if (tree_nop_convert (_p1, _p1_pops))
6799 : {
6800 0 : tree _q110 = _p1_pops[0];
6801 0 : if ((_q110 == _q70 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q70, 0) && types_match (_q110, _q70)))
6802 : {
6803 0 : {
6804 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6805 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6806 0 : if (res) return res;
6807 : }
6808 : }
6809 : }
6810 : }
6811 0 : if ((_p1 == _q70 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q70, 0) && types_match (_p1, _q70)))
6812 : {
6813 0 : {
6814 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6815 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6816 0 : if (res) return res;
6817 : }
6818 : }
6819 : }
6820 : }
6821 : break;
6822 : }
6823 : default:;
6824 : }
6825 : break;
6826 : }
6827 0 : case LT_EXPR:
6828 0 : {
6829 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6830 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6831 0 : if (integer_zerop (_q61))
6832 : {
6833 0 : if (integer_onep (_q31))
6834 : {
6835 0 : {
6836 0 : tree _p1_pops[1];
6837 0 : if (tree_nop_convert (_p1, _p1_pops))
6838 : {
6839 0 : tree _q100 = _p1_pops[0];
6840 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6841 : {
6842 0 : {
6843 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6844 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6845 0 : if (res) return res;
6846 : }
6847 : }
6848 : }
6849 : }
6850 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6851 : {
6852 0 : {
6853 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6854 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
6855 0 : if (res) return res;
6856 : }
6857 : }
6858 : }
6859 : }
6860 : break;
6861 : }
6862 : default:;
6863 : }
6864 : break;
6865 : }
6866 : default:;
6867 : }
6868 : }
6869 : }
6870 0 : break;
6871 : }
6872 23403332 : default:;
6873 : }
6874 23403332 : switch (TREE_CODE (_p1))
6875 : {
6876 0 : case BIT_IOR_EXPR:
6877 0 : {
6878 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6879 0 : tree _q41 = TREE_OPERAND (_p1, 1);
6880 0 : switch (TREE_CODE (_q40))
6881 : {
6882 0 : case NEGATE_EXPR:
6883 0 : {
6884 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6885 0 : switch (TREE_CODE (_q50))
6886 : {
6887 0 : CASE_CONVERT:
6888 0 : {
6889 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6890 0 : switch (TREE_CODE (_q60))
6891 : {
6892 0 : case LT_EXPR:
6893 0 : {
6894 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6895 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6896 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6897 : {
6898 0 : if (integer_zerop (_q71))
6899 : {
6900 0 : if (integer_onep (_q41))
6901 : {
6902 0 : {
6903 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6904 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
6905 0 : if (res) return res;
6906 : }
6907 : }
6908 : }
6909 : }
6910 : break;
6911 : }
6912 : default:;
6913 : }
6914 : break;
6915 : }
6916 0 : case LT_EXPR:
6917 0 : {
6918 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6919 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6920 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6921 : {
6922 0 : if (integer_zerop (_q61))
6923 : {
6924 0 : if (integer_onep (_q41))
6925 : {
6926 0 : {
6927 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6928 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
6929 0 : if (res) return res;
6930 : }
6931 : }
6932 : }
6933 : }
6934 : break;
6935 : }
6936 : default:;
6937 : }
6938 : break;
6939 : }
6940 0 : default:;
6941 : }
6942 0 : {
6943 0 : tree _q40_pops[1];
6944 0 : if (tree_nop_convert (_q40, _q40_pops))
6945 : {
6946 0 : tree _q50 = _q40_pops[0];
6947 0 : switch (TREE_CODE (_q50))
6948 : {
6949 0 : case NEGATE_EXPR:
6950 0 : {
6951 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6952 0 : switch (TREE_CODE (_q60))
6953 : {
6954 0 : CASE_CONVERT:
6955 0 : {
6956 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6957 0 : switch (TREE_CODE (_q70))
6958 : {
6959 0 : case LT_EXPR:
6960 0 : {
6961 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6962 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6963 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6964 : {
6965 0 : if (integer_zerop (_q81))
6966 : {
6967 0 : if (integer_onep (_q41))
6968 : {
6969 0 : {
6970 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6971 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
6972 0 : if (res) return res;
6973 : }
6974 : }
6975 : }
6976 : }
6977 : break;
6978 : }
6979 : default:;
6980 : }
6981 : break;
6982 : }
6983 0 : case LT_EXPR:
6984 0 : {
6985 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6986 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6987 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6988 : {
6989 0 : if (integer_zerop (_q71))
6990 : {
6991 0 : if (integer_onep (_q41))
6992 : {
6993 0 : {
6994 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6995 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
6996 0 : if (res) return res;
6997 : }
6998 : }
6999 : }
7000 : }
7001 : break;
7002 : }
7003 : default:;
7004 : }
7005 : break;
7006 : }
7007 : default:;
7008 : }
7009 : }
7010 : }
7011 0 : break;
7012 : }
7013 23403332 : default:;
7014 : }
7015 23403332 : {
7016 23403332 : tree _p1_pops[1];
7017 23403332 : if (tree_nop_convert (_p1, _p1_pops))
7018 : {
7019 2514572 : tree _q40 = _p1_pops[0];
7020 2514572 : switch (TREE_CODE (_q40))
7021 : {
7022 0 : case BIT_IOR_EXPR:
7023 0 : {
7024 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7025 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7026 0 : switch (TREE_CODE (_q50))
7027 : {
7028 0 : case NEGATE_EXPR:
7029 0 : {
7030 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7031 0 : switch (TREE_CODE (_q60))
7032 : {
7033 0 : CASE_CONVERT:
7034 0 : {
7035 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7036 0 : switch (TREE_CODE (_q70))
7037 : {
7038 0 : case LT_EXPR:
7039 0 : {
7040 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7041 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7042 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
7043 : {
7044 0 : if (integer_zerop (_q81))
7045 : {
7046 0 : if (integer_onep (_q51))
7047 : {
7048 0 : {
7049 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7050 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7051 0 : if (res) return res;
7052 : }
7053 : }
7054 : }
7055 : }
7056 : break;
7057 : }
7058 : default:;
7059 : }
7060 : break;
7061 : }
7062 0 : case LT_EXPR:
7063 0 : {
7064 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7065 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7066 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7067 : {
7068 0 : if (integer_zerop (_q71))
7069 : {
7070 0 : if (integer_onep (_q51))
7071 : {
7072 0 : {
7073 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7074 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7075 0 : if (res) return res;
7076 : }
7077 : }
7078 : }
7079 : }
7080 : break;
7081 : }
7082 : default:;
7083 : }
7084 : break;
7085 : }
7086 0 : default:;
7087 : }
7088 0 : {
7089 0 : tree _q50_pops[1];
7090 0 : if (tree_nop_convert (_q50, _q50_pops))
7091 : {
7092 0 : tree _q60 = _q50_pops[0];
7093 0 : switch (TREE_CODE (_q60))
7094 : {
7095 0 : case NEGATE_EXPR:
7096 0 : {
7097 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7098 0 : switch (TREE_CODE (_q70))
7099 : {
7100 0 : CASE_CONVERT:
7101 0 : {
7102 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7103 0 : switch (TREE_CODE (_q80))
7104 : {
7105 0 : case LT_EXPR:
7106 0 : {
7107 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7108 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7109 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
7110 : {
7111 0 : if (integer_zerop (_q91))
7112 : {
7113 0 : if (integer_onep (_q51))
7114 : {
7115 0 : {
7116 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7117 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7118 0 : if (res) return res;
7119 : }
7120 : }
7121 : }
7122 : }
7123 : break;
7124 : }
7125 : default:;
7126 : }
7127 : break;
7128 : }
7129 0 : case LT_EXPR:
7130 0 : {
7131 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7132 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7133 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
7134 : {
7135 0 : if (integer_zerop (_q81))
7136 : {
7137 0 : if (integer_onep (_q51))
7138 : {
7139 0 : {
7140 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7141 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7142 0 : if (res) return res;
7143 : }
7144 : }
7145 : }
7146 : }
7147 : break;
7148 : }
7149 : default:;
7150 : }
7151 : break;
7152 : }
7153 : default:;
7154 : }
7155 : }
7156 : }
7157 0 : break;
7158 : }
7159 : default:;
7160 : }
7161 : }
7162 : }
7163 : }
7164 : }
7165 67961589 : {
7166 67961589 : tree _p1_pops[1];
7167 67961589 : if (tree_nop_convert (_p1, _p1_pops))
7168 : {
7169 7329483 : tree _q30 = _p1_pops[0];
7170 7329483 : switch (TREE_CODE (_q30))
7171 : {
7172 0 : case BIT_IOR_EXPR:
7173 0 : {
7174 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7175 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7176 0 : switch (TREE_CODE (_q40))
7177 : {
7178 0 : case NEGATE_EXPR:
7179 0 : {
7180 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7181 0 : switch (TREE_CODE (_q50))
7182 : {
7183 0 : CASE_CONVERT:
7184 0 : {
7185 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7186 0 : switch (TREE_CODE (_q60))
7187 : {
7188 0 : case LT_EXPR:
7189 0 : {
7190 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7191 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7192 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7193 : {
7194 0 : if (integer_zerop (_q71))
7195 : {
7196 0 : if (integer_onep (_q41))
7197 : {
7198 0 : {
7199 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7200 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7201 0 : if (res) return res;
7202 : }
7203 : }
7204 : }
7205 : }
7206 : break;
7207 : }
7208 : default:;
7209 : }
7210 : break;
7211 : }
7212 : default:;
7213 : }
7214 : break;
7215 : }
7216 0 : default:;
7217 : }
7218 0 : {
7219 0 : tree _q40_pops[1];
7220 0 : if (tree_nop_convert (_q40, _q40_pops))
7221 : {
7222 0 : tree _q50 = _q40_pops[0];
7223 0 : switch (TREE_CODE (_q50))
7224 : {
7225 0 : case NEGATE_EXPR:
7226 0 : {
7227 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7228 0 : switch (TREE_CODE (_q60))
7229 : {
7230 0 : CASE_CONVERT:
7231 0 : {
7232 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7233 0 : switch (TREE_CODE (_q70))
7234 : {
7235 0 : case LT_EXPR:
7236 0 : {
7237 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7238 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7239 0 : if ((_q80 == _p0 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _p0, 0) && types_match (_q80, _p0)))
7240 : {
7241 0 : if (integer_zerop (_q81))
7242 : {
7243 0 : if (integer_onep (_q41))
7244 : {
7245 0 : {
7246 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7247 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7248 0 : if (res) return res;
7249 : }
7250 : }
7251 : }
7252 : }
7253 : break;
7254 : }
7255 : default:;
7256 : }
7257 : break;
7258 : }
7259 : default:;
7260 : }
7261 : break;
7262 : }
7263 : default:;
7264 : }
7265 : }
7266 : }
7267 0 : break;
7268 : }
7269 : default:;
7270 : }
7271 : }
7272 : }
7273 67961589 : switch (TREE_CODE (_p0))
7274 : {
7275 299 : case BIT_IOR_EXPR:
7276 299 : {
7277 299 : tree _q20 = TREE_OPERAND (_p0, 0);
7278 299 : tree _q21 = TREE_OPERAND (_p0, 1);
7279 299 : switch (TREE_CODE (_q20))
7280 : {
7281 1 : case NEGATE_EXPR:
7282 1 : {
7283 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7284 1 : switch (TREE_CODE (_q30))
7285 : {
7286 0 : CASE_CONVERT:
7287 0 : {
7288 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7289 0 : switch (TREE_CODE (_q40))
7290 : {
7291 0 : case LT_EXPR:
7292 0 : {
7293 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7294 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7295 0 : if (integer_zerop (_q51))
7296 : {
7297 0 : if (integer_onep (_q21))
7298 : {
7299 0 : {
7300 0 : tree _p1_pops[1];
7301 0 : if (tree_nop_convert (_p1, _p1_pops))
7302 : {
7303 0 : tree _q90 = _p1_pops[0];
7304 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7305 : {
7306 0 : {
7307 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7308 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7309 0 : if (res) return res;
7310 : }
7311 : }
7312 : }
7313 : }
7314 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7315 : {
7316 0 : {
7317 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7318 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7319 0 : if (res) return res;
7320 : }
7321 : }
7322 : }
7323 : }
7324 : break;
7325 : }
7326 : default:;
7327 : }
7328 : break;
7329 : }
7330 1 : case LT_EXPR:
7331 1 : {
7332 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7333 1 : tree _q41 = TREE_OPERAND (_q30, 1);
7334 1 : if (integer_zerop (_q41))
7335 : {
7336 1 : if (integer_onep (_q21))
7337 : {
7338 1 : {
7339 1 : tree _p1_pops[1];
7340 1 : if (tree_nop_convert (_p1, _p1_pops))
7341 : {
7342 0 : tree _q80 = _p1_pops[0];
7343 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
7344 : {
7345 0 : {
7346 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7347 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7348 0 : if (res) return res;
7349 : }
7350 : }
7351 : }
7352 : }
7353 1 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7354 : {
7355 1 : {
7356 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7357 1 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7358 1 : if (res) return res;
7359 : }
7360 : }
7361 : }
7362 : }
7363 : break;
7364 : }
7365 : default:;
7366 : }
7367 : break;
7368 : }
7369 298 : default:;
7370 : }
7371 298 : {
7372 298 : tree _q20_pops[1];
7373 298 : if (tree_nop_convert (_q20, _q20_pops))
7374 : {
7375 1 : tree _q30 = _q20_pops[0];
7376 1 : switch (TREE_CODE (_q30))
7377 : {
7378 1 : case NEGATE_EXPR:
7379 1 : {
7380 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7381 1 : switch (TREE_CODE (_q40))
7382 : {
7383 0 : CASE_CONVERT:
7384 0 : {
7385 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7386 0 : switch (TREE_CODE (_q50))
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 (integer_zerop (_q61))
7393 : {
7394 0 : if (integer_onep (_q21))
7395 : {
7396 0 : {
7397 0 : tree _p1_pops[1];
7398 0 : if (tree_nop_convert (_p1, _p1_pops))
7399 : {
7400 0 : tree _q100 = _p1_pops[0];
7401 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
7402 : {
7403 0 : {
7404 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7405 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7406 0 : if (res) return res;
7407 : }
7408 : }
7409 : }
7410 : }
7411 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
7412 : {
7413 0 : {
7414 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7415 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7416 0 : if (res) return res;
7417 : }
7418 : }
7419 : }
7420 : }
7421 : break;
7422 : }
7423 : default:;
7424 : }
7425 : break;
7426 : }
7427 1 : case LT_EXPR:
7428 1 : {
7429 1 : tree _q50 = TREE_OPERAND (_q40, 0);
7430 1 : tree _q51 = TREE_OPERAND (_q40, 1);
7431 1 : if (integer_zerop (_q51))
7432 : {
7433 1 : if (integer_onep (_q21))
7434 : {
7435 1 : {
7436 1 : tree _p1_pops[1];
7437 1 : if (tree_nop_convert (_p1, _p1_pops))
7438 : {
7439 1 : tree _q90 = _p1_pops[0];
7440 1 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7441 : {
7442 1 : {
7443 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7444 1 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7445 1 : if (res) return res;
7446 : }
7447 : }
7448 : }
7449 : }
7450 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7451 : {
7452 0 : {
7453 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7454 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures);
7455 0 : if (res) return res;
7456 : }
7457 : }
7458 : }
7459 : }
7460 : break;
7461 : }
7462 : default:;
7463 : }
7464 : break;
7465 : }
7466 : default:;
7467 : }
7468 : }
7469 : }
7470 297 : break;
7471 : }
7472 67961587 : default:;
7473 : }
7474 67961587 : switch (TREE_CODE (_p1))
7475 : {
7476 1 : case BIT_IOR_EXPR:
7477 1 : {
7478 1 : tree _q30 = TREE_OPERAND (_p1, 0);
7479 1 : tree _q31 = TREE_OPERAND (_p1, 1);
7480 1 : switch (TREE_CODE (_q30))
7481 : {
7482 0 : case NEGATE_EXPR:
7483 0 : {
7484 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7485 0 : switch (TREE_CODE (_q40))
7486 : {
7487 0 : CASE_CONVERT:
7488 0 : {
7489 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7490 0 : switch (TREE_CODE (_q50))
7491 : {
7492 0 : case LT_EXPR:
7493 0 : {
7494 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7495 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7496 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7497 : {
7498 0 : if (integer_zerop (_q61))
7499 : {
7500 0 : if (integer_onep (_q31))
7501 : {
7502 0 : {
7503 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7504 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7505 0 : if (res) return res;
7506 : }
7507 : }
7508 : }
7509 : }
7510 : break;
7511 : }
7512 : default:;
7513 : }
7514 : break;
7515 : }
7516 0 : case LT_EXPR:
7517 0 : {
7518 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7519 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7520 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7521 : {
7522 0 : if (integer_zerop (_q51))
7523 : {
7524 0 : if (integer_onep (_q31))
7525 : {
7526 0 : {
7527 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7528 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7529 0 : if (res) return res;
7530 : }
7531 : }
7532 : }
7533 : }
7534 : break;
7535 : }
7536 : default:;
7537 : }
7538 : break;
7539 : }
7540 1 : default:;
7541 : }
7542 1 : {
7543 1 : tree _q30_pops[1];
7544 1 : if (tree_nop_convert (_q30, _q30_pops))
7545 : {
7546 0 : tree _q40 = _q30_pops[0];
7547 0 : switch (TREE_CODE (_q40))
7548 : {
7549 0 : case NEGATE_EXPR:
7550 0 : {
7551 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7552 0 : switch (TREE_CODE (_q50))
7553 : {
7554 0 : CASE_CONVERT:
7555 0 : {
7556 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7557 0 : switch (TREE_CODE (_q60))
7558 : {
7559 0 : case LT_EXPR:
7560 0 : {
7561 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7562 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7563 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7564 : {
7565 0 : if (integer_zerop (_q71))
7566 : {
7567 0 : if (integer_onep (_q31))
7568 : {
7569 0 : {
7570 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7571 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7572 0 : if (res) return res;
7573 : }
7574 : }
7575 : }
7576 : }
7577 : break;
7578 : }
7579 : default:;
7580 : }
7581 : break;
7582 : }
7583 0 : case LT_EXPR:
7584 0 : {
7585 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7586 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7587 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7588 : {
7589 0 : if (integer_zerop (_q61))
7590 : {
7591 0 : if (integer_onep (_q31))
7592 : {
7593 0 : {
7594 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7595 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7596 0 : if (res) return res;
7597 : }
7598 : }
7599 : }
7600 : }
7601 : break;
7602 : }
7603 : default:;
7604 : }
7605 : break;
7606 : }
7607 : default:;
7608 : }
7609 : }
7610 : }
7611 1 : break;
7612 : }
7613 67961587 : default:;
7614 : }
7615 67961587 : {
7616 67961587 : tree _p1_pops[1];
7617 67961587 : if (tree_nop_convert (_p1, _p1_pops))
7618 : {
7619 7329482 : tree _q30 = _p1_pops[0];
7620 7329482 : switch (TREE_CODE (_q30))
7621 : {
7622 0 : case BIT_IOR_EXPR:
7623 0 : {
7624 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7625 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7626 0 : switch (TREE_CODE (_q40))
7627 : {
7628 0 : case NEGATE_EXPR:
7629 0 : {
7630 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7631 0 : switch (TREE_CODE (_q50))
7632 : {
7633 0 : case LT_EXPR:
7634 0 : {
7635 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7636 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7637 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7638 : {
7639 0 : if (integer_zerop (_q61))
7640 : {
7641 0 : if (integer_onep (_q41))
7642 : {
7643 0 : {
7644 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7645 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7646 0 : if (res) return res;
7647 : }
7648 : }
7649 : }
7650 : }
7651 : break;
7652 : }
7653 : default:;
7654 : }
7655 : break;
7656 : }
7657 0 : default:;
7658 : }
7659 0 : {
7660 0 : tree _q40_pops[1];
7661 0 : if (tree_nop_convert (_q40, _q40_pops))
7662 : {
7663 0 : tree _q50 = _q40_pops[0];
7664 0 : switch (TREE_CODE (_q50))
7665 : {
7666 0 : case NEGATE_EXPR:
7667 0 : {
7668 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7669 0 : switch (TREE_CODE (_q60))
7670 : {
7671 0 : case LT_EXPR:
7672 0 : {
7673 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7674 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7675 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7676 : {
7677 0 : if (integer_zerop (_q71))
7678 : {
7679 0 : if (integer_onep (_q41))
7680 : {
7681 0 : {
7682 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7683 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures);
7684 0 : if (res) return res;
7685 : }
7686 : }
7687 : }
7688 : }
7689 : break;
7690 : }
7691 : default:;
7692 : }
7693 : break;
7694 : }
7695 : default:;
7696 : }
7697 : }
7698 : }
7699 0 : break;
7700 : }
7701 : default:;
7702 : }
7703 : }
7704 : }
7705 67961587 : switch (TREE_CODE (_p0))
7706 : {
7707 32235673 : CASE_CONVERT:
7708 32235673 : {
7709 32235673 : tree _q20 = TREE_OPERAND (_p0, 0);
7710 32235673 : switch (TREE_CODE (_q20))
7711 : {
7712 3949 : case NEGATE_EXPR:
7713 3949 : {
7714 3949 : tree _q30 = TREE_OPERAND (_q20, 0);
7715 3949 : switch (TREE_CODE (_p1))
7716 : {
7717 153 : CASE_CONVERT:
7718 153 : {
7719 153 : tree _q50 = TREE_OPERAND (_p1, 0);
7720 153 : if (tree_negate_expr_p (_q50))
7721 : {
7722 0 : {
7723 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
7724 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
7725 0 : if (res) return res;
7726 : }
7727 : }
7728 : break;
7729 : }
7730 3949 : default:;
7731 : }
7732 3949 : if (tree_negate_expr_p (_p1))
7733 : {
7734 3518 : {
7735 3518 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
7736 3518 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
7737 3518 : if (res) return res;
7738 : }
7739 : }
7740 : break;
7741 : }
7742 4 : case LT_EXPR:
7743 4 : {
7744 4 : tree _q30 = TREE_OPERAND (_q20, 0);
7745 4 : tree _q31 = TREE_OPERAND (_q20, 1);
7746 4 : {
7747 4 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7748 4 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, LT_EXPR);
7749 4 : if (res) return res;
7750 : }
7751 4 : break;
7752 : }
7753 6 : case LE_EXPR:
7754 6 : {
7755 6 : tree _q30 = TREE_OPERAND (_q20, 0);
7756 6 : tree _q31 = TREE_OPERAND (_q20, 1);
7757 6 : {
7758 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7759 6 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, LE_EXPR);
7760 6 : if (res) return res;
7761 : }
7762 6 : break;
7763 : }
7764 1 : case EQ_EXPR:
7765 1 : {
7766 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7767 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7768 1 : {
7769 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7770 1 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
7771 1 : if (res) return res;
7772 : }
7773 1 : break;
7774 : }
7775 1157 : case NE_EXPR:
7776 1157 : {
7777 1157 : tree _q30 = TREE_OPERAND (_q20, 0);
7778 1157 : tree _q31 = TREE_OPERAND (_q20, 1);
7779 1157 : {
7780 1157 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7781 1157 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, NE_EXPR);
7782 1157 : if (res) return res;
7783 : }
7784 1157 : break;
7785 : }
7786 19 : case GE_EXPR:
7787 19 : {
7788 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7789 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7790 19 : {
7791 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7792 19 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, GE_EXPR);
7793 19 : if (res) return res;
7794 : }
7795 19 : break;
7796 : }
7797 19 : case GT_EXPR:
7798 19 : {
7799 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7800 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7801 19 : {
7802 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7803 19 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, GT_EXPR);
7804 19 : if (res) return res;
7805 : }
7806 19 : break;
7807 : }
7808 0 : case UNORDERED_EXPR:
7809 0 : {
7810 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7811 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7812 0 : {
7813 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7814 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7815 0 : if (res) return res;
7816 : }
7817 0 : break;
7818 : }
7819 0 : case ORDERED_EXPR:
7820 0 : {
7821 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7822 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7823 0 : {
7824 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7825 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7826 0 : if (res) return res;
7827 : }
7828 0 : break;
7829 : }
7830 0 : case UNLT_EXPR:
7831 0 : {
7832 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7833 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7834 0 : {
7835 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7836 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7837 0 : if (res) return res;
7838 : }
7839 0 : break;
7840 : }
7841 0 : case UNLE_EXPR:
7842 0 : {
7843 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7844 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7845 0 : {
7846 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7847 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7848 0 : if (res) return res;
7849 : }
7850 0 : break;
7851 : }
7852 0 : case UNGT_EXPR:
7853 0 : {
7854 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7855 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7856 0 : {
7857 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7858 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7859 0 : if (res) return res;
7860 : }
7861 0 : break;
7862 : }
7863 0 : case UNGE_EXPR:
7864 0 : {
7865 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7866 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7867 0 : {
7868 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7869 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7870 0 : if (res) return res;
7871 : }
7872 0 : break;
7873 : }
7874 0 : case UNEQ_EXPR:
7875 0 : {
7876 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7877 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7878 0 : {
7879 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7880 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7881 0 : if (res) return res;
7882 : }
7883 0 : break;
7884 : }
7885 0 : case LTGT_EXPR:
7886 0 : {
7887 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7888 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7889 0 : {
7890 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7891 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7892 0 : if (res) return res;
7893 : }
7894 0 : break;
7895 : }
7896 32234904 : default:;
7897 : }
7898 32234904 : if (tree_negate_expr_p (_q20))
7899 : {
7900 20140 : switch (TREE_CODE (_p1))
7901 : {
7902 2136 : CASE_CONVERT:
7903 2136 : {
7904 2136 : tree _q40 = TREE_OPERAND (_p1, 0);
7905 2136 : switch (TREE_CODE (_q40))
7906 : {
7907 0 : case NEGATE_EXPR:
7908 0 : {
7909 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7910 0 : {
7911 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7912 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
7913 0 : if (res) return res;
7914 : }
7915 0 : break;
7916 : }
7917 : default:;
7918 : }
7919 : break;
7920 : }
7921 6 : case NEGATE_EXPR:
7922 6 : {
7923 6 : tree _q40 = TREE_OPERAND (_p1, 0);
7924 6 : {
7925 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7926 6 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
7927 6 : if (res) return res;
7928 : }
7929 0 : break;
7930 : }
7931 : default:;
7932 : }
7933 : }
7934 : break;
7935 : }
7936 439279 : case NEGATE_EXPR:
7937 439279 : {
7938 439279 : tree _q20 = TREE_OPERAND (_p0, 0);
7939 439279 : switch (TREE_CODE (_p1))
7940 : {
7941 158114 : CASE_CONVERT:
7942 158114 : {
7943 158114 : tree _q40 = TREE_OPERAND (_p1, 0);
7944 158114 : if (tree_negate_expr_p (_q40))
7945 : {
7946 0 : {
7947 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7948 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
7949 0 : if (res) return res;
7950 : }
7951 : }
7952 : break;
7953 : }
7954 439279 : default:;
7955 : }
7956 439279 : if (tree_negate_expr_p (_p1))
7957 : {
7958 27867 : {
7959 27867 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7960 27867 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
7961 27867 : if (res) return res;
7962 : }
7963 : }
7964 411412 : if (tree_zero_one_valued_p (_q20))
7965 : {
7966 529 : if (tree_zero_one_valued_p (_p1))
7967 : {
7968 521 : {
7969 521 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7970 521 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures);
7971 521 : if (res) return res;
7972 : }
7973 : }
7974 : }
7975 : break;
7976 : }
7977 67932424 : default:;
7978 : }
7979 67932424 : if (tree_negate_expr_p (_p0))
7980 : {
7981 681904 : switch (TREE_CODE (_p1))
7982 : {
7983 163298 : CASE_CONVERT:
7984 163298 : {
7985 163298 : tree _q30 = TREE_OPERAND (_p1, 0);
7986 163298 : switch (TREE_CODE (_q30))
7987 : {
7988 0 : case NEGATE_EXPR:
7989 0 : {
7990 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7991 0 : {
7992 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
7993 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
7994 0 : if (res) return res;
7995 : }
7996 0 : break;
7997 : }
7998 : default:;
7999 : }
8000 : break;
8001 : }
8002 12 : case NEGATE_EXPR:
8003 12 : {
8004 12 : tree _q30 = TREE_OPERAND (_p1, 0);
8005 12 : {
8006 12 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
8007 12 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
8008 12 : if (res) return res;
8009 : }
8010 0 : break;
8011 : }
8012 : default:;
8013 : }
8014 : }
8015 67932412 : if (tree_zero_one_valued_p (_p0))
8016 : {
8017 188694 : switch (TREE_CODE (_p1))
8018 : {
8019 24 : case NEGATE_EXPR:
8020 24 : {
8021 24 : tree _q30 = TREE_OPERAND (_p1, 0);
8022 24 : if (tree_zero_one_valued_p (_q30))
8023 : {
8024 24 : {
8025 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
8026 24 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures);
8027 24 : if (res) return res;
8028 : }
8029 : }
8030 : break;
8031 : }
8032 188670 : default:;
8033 : }
8034 188670 : if (tree_zero_one_valued_p (_p1))
8035 : {
8036 13122 : {
8037 13122 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8038 13122 : if (INTEGRAL_TYPE_P (type)
8039 : )
8040 : {
8041 13122 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1479;
8042 13122 : {
8043 13122 : tree res_op0;
8044 13122 : res_op0 = captures[0];
8045 13122 : tree res_op1;
8046 13122 : res_op1 = captures[1];
8047 13122 : tree _r;
8048 13122 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
8049 13122 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1018, __FILE__, __LINE__, true);
8050 : return _r;
8051 : }
8052 0 : next_after_fail1479:;
8053 : }
8054 : }
8055 : }
8056 : }
8057 67919266 : switch (TREE_CODE (_p1))
8058 : {
8059 7413530 : CASE_CONVERT:
8060 7413530 : {
8061 7413530 : tree _q30 = TREE_OPERAND (_p1, 0);
8062 7413530 : switch (TREE_CODE (_q30))
8063 : {
8064 0 : case LT_EXPR:
8065 0 : {
8066 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8067 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8068 0 : {
8069 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8070 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, LT_EXPR);
8071 0 : if (res) return res;
8072 : }
8073 0 : break;
8074 : }
8075 0 : case LE_EXPR:
8076 0 : {
8077 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8078 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8079 0 : {
8080 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8081 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, LE_EXPR);
8082 0 : if (res) return res;
8083 : }
8084 0 : break;
8085 : }
8086 0 : case EQ_EXPR:
8087 0 : {
8088 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8089 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8090 0 : {
8091 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8092 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, EQ_EXPR);
8093 0 : if (res) return res;
8094 : }
8095 0 : break;
8096 : }
8097 0 : case NE_EXPR:
8098 0 : {
8099 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8100 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8101 0 : {
8102 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8103 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
8104 0 : if (res) return res;
8105 : }
8106 0 : break;
8107 : }
8108 0 : case GE_EXPR:
8109 0 : {
8110 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8111 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8112 0 : {
8113 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8114 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, GE_EXPR);
8115 0 : if (res) return res;
8116 : }
8117 0 : break;
8118 : }
8119 0 : case GT_EXPR:
8120 0 : {
8121 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8122 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8123 0 : {
8124 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8125 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, GT_EXPR);
8126 0 : if (res) return res;
8127 : }
8128 0 : break;
8129 : }
8130 0 : case UNORDERED_EXPR:
8131 0 : {
8132 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8133 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8134 0 : {
8135 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8136 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
8137 0 : if (res) return res;
8138 : }
8139 0 : break;
8140 : }
8141 0 : case ORDERED_EXPR:
8142 0 : {
8143 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8144 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8145 0 : {
8146 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8147 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
8148 0 : if (res) return res;
8149 : }
8150 0 : break;
8151 : }
8152 0 : case UNLT_EXPR:
8153 0 : {
8154 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8155 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8156 0 : {
8157 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8158 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, UNLT_EXPR);
8159 0 : if (res) return res;
8160 : }
8161 0 : break;
8162 : }
8163 0 : case UNLE_EXPR:
8164 0 : {
8165 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8166 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8167 0 : {
8168 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8169 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, UNLE_EXPR);
8170 0 : if (res) return res;
8171 : }
8172 0 : break;
8173 : }
8174 0 : case UNGT_EXPR:
8175 0 : {
8176 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8177 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8178 0 : {
8179 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8180 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, UNGT_EXPR);
8181 0 : if (res) return res;
8182 : }
8183 0 : break;
8184 : }
8185 0 : case UNGE_EXPR:
8186 0 : {
8187 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8188 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8189 0 : {
8190 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8191 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, UNGE_EXPR);
8192 0 : if (res) return res;
8193 : }
8194 0 : break;
8195 : }
8196 0 : case UNEQ_EXPR:
8197 0 : {
8198 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8199 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8200 0 : {
8201 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8202 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
8203 0 : if (res) return res;
8204 : }
8205 0 : break;
8206 : }
8207 0 : case LTGT_EXPR:
8208 0 : {
8209 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8210 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8211 0 : {
8212 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8213 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, LTGT_EXPR);
8214 0 : if (res) return res;
8215 : }
8216 0 : break;
8217 : }
8218 : default:;
8219 : }
8220 : break;
8221 : }
8222 67919266 : default:;
8223 : }
8224 67919266 : switch (TREE_CODE (_p0))
8225 : {
8226 3 : case MIN_EXPR:
8227 3 : {
8228 3 : tree _q20 = TREE_OPERAND (_p0, 0);
8229 3 : tree _q21 = TREE_OPERAND (_p0, 1);
8230 3 : switch (TREE_CODE (_p1))
8231 : {
8232 0 : case MAX_EXPR:
8233 0 : {
8234 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8235 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8236 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8237 : {
8238 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8239 : {
8240 0 : {
8241 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8242 0 : if (!HONOR_NANS (captures[0])
8243 : )
8244 : {
8245 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1480;
8246 0 : {
8247 0 : tree res_op0;
8248 0 : res_op0 = captures[0];
8249 0 : tree res_op1;
8250 0 : res_op1 = captures[1];
8251 0 : tree _r;
8252 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8253 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
8254 : return _r;
8255 : }
8256 0 : next_after_fail1480:;
8257 : }
8258 : }
8259 : }
8260 : }
8261 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8262 : {
8263 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8264 : {
8265 0 : {
8266 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8267 0 : if (!HONOR_NANS (captures[0])
8268 : )
8269 : {
8270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
8271 0 : {
8272 0 : tree res_op0;
8273 0 : res_op0 = captures[0];
8274 0 : tree res_op1;
8275 0 : res_op1 = captures[1];
8276 0 : tree _r;
8277 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8278 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
8279 : return _r;
8280 : }
8281 0 : next_after_fail1481:;
8282 : }
8283 : }
8284 : }
8285 : }
8286 : break;
8287 : }
8288 : default:;
8289 : }
8290 : break;
8291 : }
8292 146 : case MAX_EXPR:
8293 146 : {
8294 146 : tree _q20 = TREE_OPERAND (_p0, 0);
8295 146 : tree _q21 = TREE_OPERAND (_p0, 1);
8296 146 : switch (TREE_CODE (_p1))
8297 : {
8298 0 : case MIN_EXPR:
8299 0 : {
8300 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8301 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8302 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8303 : {
8304 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8305 : {
8306 0 : {
8307 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8308 0 : if (!HONOR_NANS (captures[0])
8309 : )
8310 : {
8311 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1482;
8312 0 : {
8313 0 : tree res_op0;
8314 0 : res_op0 = captures[0];
8315 0 : tree res_op1;
8316 0 : res_op1 = captures[1];
8317 0 : tree _r;
8318 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8319 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
8320 : return _r;
8321 : }
8322 0 : next_after_fail1482:;
8323 : }
8324 : }
8325 : }
8326 : }
8327 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8328 : {
8329 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8330 : {
8331 0 : {
8332 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8333 0 : if (!HONOR_NANS (captures[0])
8334 : )
8335 : {
8336 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1483;
8337 0 : {
8338 0 : tree res_op0;
8339 0 : res_op0 = captures[0];
8340 0 : tree res_op1;
8341 0 : res_op1 = captures[1];
8342 0 : tree _r;
8343 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8344 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
8345 : return _r;
8346 : }
8347 0 : next_after_fail1483:;
8348 : }
8349 : }
8350 : }
8351 : }
8352 : break;
8353 : }
8354 : default:;
8355 : }
8356 : break;
8357 : }
8358 32221787 : CASE_CONVERT:
8359 32221787 : {
8360 32221787 : tree _q20 = TREE_OPERAND (_p0, 0);
8361 32221787 : switch (TREE_CODE (_q20))
8362 : {
8363 82 : case BIT_AND_EXPR:
8364 82 : {
8365 82 : tree _q30 = TREE_OPERAND (_q20, 0);
8366 82 : tree _q31 = TREE_OPERAND (_q20, 1);
8367 82 : switch (TREE_CODE (_q30))
8368 : {
8369 0 : CASE_CONVERT:
8370 0 : {
8371 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8372 0 : switch (TREE_CODE (_q40))
8373 : {
8374 0 : case RSHIFT_EXPR:
8375 0 : {
8376 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8377 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8378 0 : switch (TREE_CODE (_q51))
8379 : {
8380 0 : case INTEGER_CST:
8381 0 : {
8382 0 : switch (TREE_CODE (_q31))
8383 : {
8384 0 : case INTEGER_CST:
8385 0 : {
8386 0 : switch (TREE_CODE (_p1))
8387 : {
8388 0 : case INTEGER_CST:
8389 0 : {
8390 0 : {
8391 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8392 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures);
8393 0 : if (res) return res;
8394 : }
8395 0 : break;
8396 : }
8397 : default:;
8398 : }
8399 : break;
8400 : }
8401 : default:;
8402 : }
8403 : break;
8404 : }
8405 : default:;
8406 : }
8407 : break;
8408 : }
8409 : default:;
8410 : }
8411 : break;
8412 : }
8413 : default:;
8414 : }
8415 : break;
8416 : }
8417 31751 : case EXACT_DIV_EXPR:
8418 31751 : {
8419 31751 : tree _q30 = TREE_OPERAND (_q20, 0);
8420 31751 : tree _q31 = TREE_OPERAND (_q20, 1);
8421 31751 : switch (TREE_CODE (_p1))
8422 : {
8423 0 : CASE_CONVERT:
8424 0 : {
8425 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8426 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
8427 : {
8428 0 : {
8429 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8430 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures);
8431 0 : if (res) return res;
8432 : }
8433 : }
8434 : break;
8435 : }
8436 31751 : default:;
8437 : }
8438 31751 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
8439 : {
8440 21511 : {
8441 21511 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8442 21511 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures);
8443 21511 : if (res) return res;
8444 : }
8445 : }
8446 10240 : switch (TREE_CODE (_q31))
8447 : {
8448 10240 : case INTEGER_CST:
8449 10240 : {
8450 10240 : if (poly_int_tree_p (_p1))
8451 : {
8452 10240 : {
8453 10240 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8454 10240 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures);
8455 10240 : if (res) return res;
8456 : }
8457 : }
8458 : break;
8459 : }
8460 : default:;
8461 : }
8462 : break;
8463 : }
8464 1385088 : case PLUS_EXPR:
8465 1385088 : {
8466 1385088 : tree _q30 = TREE_OPERAND (_q20, 0);
8467 1385088 : tree _q31 = TREE_OPERAND (_q20, 1);
8468 1385088 : switch (TREE_CODE (_q30))
8469 : {
8470 174377 : CASE_CONVERT:
8471 174377 : {
8472 174377 : tree _q40 = TREE_OPERAND (_q30, 0);
8473 174377 : switch (TREE_CODE (_q40))
8474 : {
8475 0 : case EXACT_DIV_EXPR:
8476 0 : {
8477 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8478 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8479 0 : switch (TREE_CODE (_q51))
8480 : {
8481 0 : case INTEGER_CST:
8482 0 : {
8483 0 : if (poly_int_tree_p (_q31))
8484 : {
8485 0 : if (poly_int_tree_p (_p1))
8486 : {
8487 0 : {
8488 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8489 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8490 0 : if (res) return res;
8491 : }
8492 : }
8493 : }
8494 : break;
8495 : }
8496 : default:;
8497 : }
8498 : break;
8499 : }
8500 : default:;
8501 : }
8502 : break;
8503 : }
8504 112 : case EXACT_DIV_EXPR:
8505 112 : {
8506 112 : tree _q40 = TREE_OPERAND (_q30, 0);
8507 112 : tree _q41 = TREE_OPERAND (_q30, 1);
8508 112 : switch (TREE_CODE (_q41))
8509 : {
8510 112 : case INTEGER_CST:
8511 112 : {
8512 112 : if (poly_int_tree_p (_q31))
8513 : {
8514 112 : if (poly_int_tree_p (_p1))
8515 : {
8516 112 : {
8517 112 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8518 112 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8519 112 : if (res) return res;
8520 : }
8521 : }
8522 : }
8523 : break;
8524 : }
8525 : default:;
8526 : }
8527 : break;
8528 : }
8529 : default:;
8530 : }
8531 : break;
8532 : }
8533 98918 : case MINUS_EXPR:
8534 98918 : {
8535 98918 : tree _q30 = TREE_OPERAND (_q20, 0);
8536 98918 : tree _q31 = TREE_OPERAND (_q20, 1);
8537 98918 : switch (TREE_CODE (_q30))
8538 : {
8539 21110 : CASE_CONVERT:
8540 21110 : {
8541 21110 : tree _q40 = TREE_OPERAND (_q30, 0);
8542 21110 : switch (TREE_CODE (_q40))
8543 : {
8544 0 : case EXACT_DIV_EXPR:
8545 0 : {
8546 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8547 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8548 0 : switch (TREE_CODE (_q51))
8549 : {
8550 0 : case INTEGER_CST:
8551 0 : {
8552 0 : if (poly_int_tree_p (_q31))
8553 : {
8554 0 : if (poly_int_tree_p (_p1))
8555 : {
8556 0 : {
8557 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8558 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8559 0 : if (res) return res;
8560 : }
8561 : }
8562 : }
8563 : break;
8564 : }
8565 : default:;
8566 : }
8567 : break;
8568 : }
8569 : default:;
8570 : }
8571 : break;
8572 : }
8573 0 : case EXACT_DIV_EXPR:
8574 0 : {
8575 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8576 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8577 0 : switch (TREE_CODE (_q41))
8578 : {
8579 0 : case INTEGER_CST:
8580 0 : {
8581 0 : if (poly_int_tree_p (_q31))
8582 : {
8583 0 : if (poly_int_tree_p (_p1))
8584 : {
8585 0 : {
8586 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8587 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8588 0 : if (res) return res;
8589 : }
8590 : }
8591 : }
8592 : break;
8593 : }
8594 : default:;
8595 : }
8596 : break;
8597 : }
8598 : default:;
8599 : }
8600 : break;
8601 : }
8602 : default:;
8603 : }
8604 : break;
8605 : }
8606 59536 : case BIT_AND_EXPR:
8607 59536 : {
8608 59536 : tree _q20 = TREE_OPERAND (_p0, 0);
8609 59536 : tree _q21 = TREE_OPERAND (_p0, 1);
8610 59536 : switch (TREE_CODE (_q20))
8611 : {
8612 277 : case RSHIFT_EXPR:
8613 277 : {
8614 277 : tree _q30 = TREE_OPERAND (_q20, 0);
8615 277 : tree _q31 = TREE_OPERAND (_q20, 1);
8616 277 : switch (TREE_CODE (_q31))
8617 : {
8618 14 : case INTEGER_CST:
8619 14 : {
8620 14 : switch (TREE_CODE (_q21))
8621 : {
8622 14 : case INTEGER_CST:
8623 14 : {
8624 14 : switch (TREE_CODE (_p1))
8625 : {
8626 14 : case INTEGER_CST:
8627 14 : {
8628 14 : {
8629 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8630 14 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures);
8631 14 : if (res) return res;
8632 : }
8633 8 : break;
8634 : }
8635 : default:;
8636 : }
8637 : break;
8638 : }
8639 : default:;
8640 : }
8641 : break;
8642 : }
8643 : default:;
8644 : }
8645 : break;
8646 : }
8647 : default:;
8648 : }
8649 : break;
8650 : }
8651 189947 : case EXACT_DIV_EXPR:
8652 189947 : {
8653 189947 : tree _q20 = TREE_OPERAND (_p0, 0);
8654 189947 : tree _q21 = TREE_OPERAND (_p0, 1);
8655 189947 : switch (TREE_CODE (_p1))
8656 : {
8657 114 : CASE_CONVERT:
8658 114 : {
8659 114 : tree _q50 = TREE_OPERAND (_p1, 0);
8660 114 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
8661 : {
8662 0 : {
8663 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8664 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures);
8665 0 : if (res) return res;
8666 : }
8667 : }
8668 : break;
8669 : }
8670 189947 : default:;
8671 : }
8672 189947 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
8673 : {
8674 20781 : {
8675 20781 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8676 20781 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures);
8677 20781 : if (res) return res;
8678 : }
8679 : }
8680 169166 : switch (TREE_CODE (_q21))
8681 : {
8682 169166 : case INTEGER_CST:
8683 169166 : {
8684 169166 : if (poly_int_tree_p (_p1))
8685 : {
8686 169052 : {
8687 169052 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8688 169052 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures);
8689 169052 : if (res) return res;
8690 : }
8691 : }
8692 : break;
8693 : }
8694 : default:;
8695 : }
8696 : break;
8697 : }
8698 7661530 : case PLUS_EXPR:
8699 7661530 : {
8700 7661530 : tree _q20 = TREE_OPERAND (_p0, 0);
8701 7661530 : tree _q21 = TREE_OPERAND (_p0, 1);
8702 7661530 : switch (TREE_CODE (_q20))
8703 : {
8704 3745694 : CASE_CONVERT:
8705 3745694 : {
8706 3745694 : tree _q30 = TREE_OPERAND (_q20, 0);
8707 3745694 : switch (TREE_CODE (_q30))
8708 : {
8709 5494 : case EXACT_DIV_EXPR:
8710 5494 : {
8711 5494 : tree _q40 = TREE_OPERAND (_q30, 0);
8712 5494 : tree _q41 = TREE_OPERAND (_q30, 1);
8713 5494 : switch (TREE_CODE (_q41))
8714 : {
8715 5494 : case INTEGER_CST:
8716 5494 : {
8717 5494 : if (poly_int_tree_p (_q21))
8718 : {
8719 5494 : if (poly_int_tree_p (_p1))
8720 : {
8721 5494 : {
8722 5494 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8723 5494 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8724 5494 : if (res) return res;
8725 : }
8726 : }
8727 : }
8728 : break;
8729 : }
8730 : default:;
8731 : }
8732 : break;
8733 : }
8734 : default:;
8735 : }
8736 : break;
8737 : }
8738 0 : case EXACT_DIV_EXPR:
8739 0 : {
8740 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8741 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8742 0 : switch (TREE_CODE (_q31))
8743 : {
8744 0 : case INTEGER_CST:
8745 0 : {
8746 0 : if (poly_int_tree_p (_q21))
8747 : {
8748 0 : if (poly_int_tree_p (_p1))
8749 : {
8750 0 : {
8751 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8752 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8753 0 : if (res) return res;
8754 : }
8755 : }
8756 : }
8757 : break;
8758 : }
8759 : default:;
8760 : }
8761 : break;
8762 : }
8763 : default:;
8764 : }
8765 : break;
8766 : }
8767 1150884 : case MINUS_EXPR:
8768 1150884 : {
8769 1150884 : tree _q20 = TREE_OPERAND (_p0, 0);
8770 1150884 : tree _q21 = TREE_OPERAND (_p0, 1);
8771 1150884 : switch (TREE_CODE (_q20))
8772 : {
8773 265063 : CASE_CONVERT:
8774 265063 : {
8775 265063 : tree _q30 = TREE_OPERAND (_q20, 0);
8776 265063 : switch (TREE_CODE (_q30))
8777 : {
8778 0 : case EXACT_DIV_EXPR:
8779 0 : {
8780 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8781 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8782 0 : switch (TREE_CODE (_q41))
8783 : {
8784 0 : case INTEGER_CST:
8785 0 : {
8786 0 : if (poly_int_tree_p (_q21))
8787 : {
8788 0 : if (poly_int_tree_p (_p1))
8789 : {
8790 0 : {
8791 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8792 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8793 0 : if (res) return res;
8794 : }
8795 : }
8796 : }
8797 : break;
8798 : }
8799 : default:;
8800 : }
8801 : break;
8802 : }
8803 : default:;
8804 : }
8805 : break;
8806 : }
8807 264 : case EXACT_DIV_EXPR:
8808 264 : {
8809 264 : tree _q30 = TREE_OPERAND (_q20, 0);
8810 264 : tree _q31 = TREE_OPERAND (_q20, 1);
8811 264 : switch (TREE_CODE (_q31))
8812 : {
8813 264 : case INTEGER_CST:
8814 264 : {
8815 264 : if (poly_int_tree_p (_q21))
8816 : {
8817 0 : if (poly_int_tree_p (_p1))
8818 : {
8819 0 : {
8820 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8821 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8822 0 : if (res) return res;
8823 : }
8824 : }
8825 : }
8826 : break;
8827 : }
8828 : default:;
8829 : }
8830 : break;
8831 : }
8832 : default:;
8833 : }
8834 : break;
8835 : }
8836 67815738 : default:;
8837 : }
8838 67815738 : if (integer_minus_onep (_p1))
8839 : {
8840 407710 : {
8841 407710 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8842 407710 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1484;
8843 407710 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1484;
8844 407710 : {
8845 407710 : tree res_op0;
8846 407710 : res_op0 = captures[0];
8847 407710 : tree _r;
8848 407710 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
8849 407710 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1019, __FILE__, __LINE__, true);
8850 72733665 : return _r;
8851 : }
8852 67408028 : next_after_fail1484:;
8853 : }
8854 : }
8855 67408028 : switch (TREE_CODE (_p0))
8856 : {
8857 4890519 : case MULT_EXPR:
8858 4890519 : {
8859 4890519 : tree _q20 = TREE_OPERAND (_p0, 0);
8860 4890519 : tree _q21 = TREE_OPERAND (_p0, 1);
8861 4890519 : switch (TREE_CODE (_q21))
8862 : {
8863 170145 : case INTEGER_CST:
8864 170145 : {
8865 170145 : {
8866 170145 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8867 170145 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures);
8868 170145 : if (res) return res;
8869 : }
8870 30 : break;
8871 : }
8872 : default:;
8873 : }
8874 : break;
8875 : }
8876 67237913 : default:;
8877 : }
8878 67237913 : switch (TREE_CODE (_p1))
8879 : {
8880 23584 : case MULT_EXPR:
8881 23584 : {
8882 23584 : tree _q30 = TREE_OPERAND (_p1, 0);
8883 23584 : tree _q31 = TREE_OPERAND (_p1, 1);
8884 23584 : switch (TREE_CODE (_q31))
8885 : {
8886 17158 : case INTEGER_CST:
8887 17158 : {
8888 17158 : {
8889 17158 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q31, _p0 };
8890 17158 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures);
8891 17158 : if (res) return res;
8892 : }
8893 0 : break;
8894 : }
8895 : default:;
8896 : }
8897 : break;
8898 : }
8899 67220755 : default:;
8900 : }
8901 67220755 : switch (TREE_CODE (_p0))
8902 : {
8903 36 : case VEC_COND_EXPR:
8904 36 : {
8905 36 : tree _q20 = TREE_OPERAND (_p0, 0);
8906 36 : tree _q21 = TREE_OPERAND (_p0, 1);
8907 36 : tree _q22 = TREE_OPERAND (_p0, 2);
8908 36 : switch (TREE_CODE (_p1))
8909 : {
8910 0 : case VEC_COND_EXPR:
8911 0 : {
8912 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8913 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8914 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8915 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8916 : {
8917 0 : {
8918 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8919 0 : if (VECTOR_TYPE_P (type)
8920 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8921 : || types_match (type, TREE_TYPE (captures[2]))
8922 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8923 : || (optimize_vectors_before_lowering_p ()
8924 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8925 : )
8926 : {
8927 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1485;
8928 0 : {
8929 0 : tree res_op0;
8930 0 : res_op0 = captures[1];
8931 0 : tree res_op1;
8932 0 : {
8933 0 : tree _o1[2], _r1;
8934 0 : _o1[0] = captures[2];
8935 0 : _o1[1] = captures[5];
8936 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8937 0 : if (EXPR_P (_r1))
8938 0 : goto next_after_fail1485;
8939 0 : res_op1 = _r1;
8940 : }
8941 0 : tree res_op2;
8942 0 : {
8943 0 : tree _o1[2], _r1;
8944 0 : _o1[0] = captures[3];
8945 0 : _o1[1] = captures[6];
8946 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8947 0 : if (EXPR_P (_r1))
8948 0 : goto next_after_fail1485;
8949 0 : res_op2 = _r1;
8950 : }
8951 0 : tree _r;
8952 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8953 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 938, __FILE__, __LINE__, true);
8954 : return _r;
8955 : }
8956 36 : next_after_fail1485:;
8957 : }
8958 : }
8959 : }
8960 : break;
8961 : }
8962 36 : default:;
8963 : }
8964 36 : {
8965 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8966 36 : if (VECTOR_TYPE_P (type)
8967 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8968 : || types_match (type, TREE_TYPE (captures[2]))
8969 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8970 : || (optimize_vectors_before_lowering_p ()
8971 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8972 : )
8973 : {
8974 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1486;
8975 36 : {
8976 36 : if (! tree_invariant_p (captures[4])) goto next_after_fail1486;
8977 0 : tree res_op0;
8978 0 : res_op0 = captures[1];
8979 0 : tree res_op1;
8980 0 : {
8981 0 : tree _o1[2], _r1;
8982 0 : _o1[0] = captures[2];
8983 0 : _o1[1] = unshare_expr (captures[4]);
8984 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8985 0 : if (EXPR_P (_r1))
8986 0 : goto next_after_fail1486;
8987 0 : res_op1 = _r1;
8988 : }
8989 0 : tree res_op2;
8990 0 : {
8991 0 : tree _o1[2], _r1;
8992 0 : _o1[0] = captures[3];
8993 0 : _o1[1] = captures[4];
8994 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8995 0 : if (EXPR_P (_r1))
8996 0 : goto next_after_fail1486;
8997 0 : res_op2 = _r1;
8998 : }
8999 0 : tree _r;
9000 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9001 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
9002 : return _r;
9003 : }
9004 67220755 : next_after_fail1486:;
9005 : }
9006 : }
9007 : break;
9008 : }
9009 67220755 : default:;
9010 : }
9011 67220755 : switch (TREE_CODE (_p1))
9012 : {
9013 0 : case VEC_COND_EXPR:
9014 0 : {
9015 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9016 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9017 0 : tree _q32 = TREE_OPERAND (_p1, 2);
9018 0 : {
9019 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
9020 0 : if (VECTOR_TYPE_P (type)
9021 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
9022 : || types_match (type, TREE_TYPE (captures[3]))
9023 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
9024 : || (optimize_vectors_before_lowering_p ()
9025 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
9026 : )
9027 : {
9028 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1487;
9029 0 : {
9030 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1487;
9031 0 : tree res_op0;
9032 0 : res_op0 = captures[2];
9033 0 : tree res_op1;
9034 0 : {
9035 0 : tree _o1[2], _r1;
9036 0 : _o1[0] = unshare_expr (captures[0]);
9037 0 : _o1[1] = captures[3];
9038 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
9039 0 : if (EXPR_P (_r1))
9040 0 : goto next_after_fail1487;
9041 0 : res_op1 = _r1;
9042 : }
9043 0 : tree res_op2;
9044 0 : {
9045 0 : tree _o1[2], _r1;
9046 0 : _o1[0] = captures[0];
9047 0 : _o1[1] = captures[4];
9048 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
9049 0 : if (EXPR_P (_r1))
9050 0 : goto next_after_fail1487;
9051 0 : res_op2 = _r1;
9052 : }
9053 0 : tree _r;
9054 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9055 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
9056 : return _r;
9057 : }
9058 67220755 : next_after_fail1487:;
9059 : }
9060 : }
9061 : break;
9062 : }
9063 67220755 : default:;
9064 : }
9065 67220755 : switch (TREE_CODE (_p0))
9066 : {
9067 2576 : case REAL_CST:
9068 2576 : {
9069 2576 : switch (TREE_CODE (_p1))
9070 : {
9071 0 : case CALL_EXPR:
9072 0 : switch (get_call_combined_fn (_p1))
9073 : {
9074 0 : case CFN_BUILT_IN_LDEXPF:
9075 0 : if (call_expr_nargs (_p1) == 2)
9076 : {
9077 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9078 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
9079 0 : {
9080 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
9081 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
9082 0 : if (res) return res;
9083 : }
9084 : }
9085 : break;
9086 0 : case CFN_BUILT_IN_LDEXPL:
9087 0 : if (call_expr_nargs (_p1) == 2)
9088 : {
9089 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9090 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
9091 0 : {
9092 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
9093 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
9094 0 : if (res) return res;
9095 : }
9096 : }
9097 : break;
9098 0 : case CFN_LDEXP:
9099 0 : if (call_expr_nargs (_p1) == 2)
9100 : {
9101 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9102 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
9103 0 : {
9104 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
9105 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_LDEXP);
9106 0 : if (res) return res;
9107 : }
9108 : }
9109 : break;
9110 0 : case CFN_BUILT_IN_LDEXP:
9111 0 : if (call_expr_nargs (_p1) == 2)
9112 : {
9113 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9114 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
9115 0 : {
9116 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
9117 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
9118 0 : if (res) return res;
9119 : }
9120 : }
9121 : break;
9122 : default:;
9123 : }
9124 : break;
9125 : default:;
9126 : }
9127 : break;
9128 : }
9129 2531303 : case CALL_EXPR:
9130 2531303 : switch (get_call_combined_fn (_p0))
9131 : {
9132 55 : case CFN_BUILT_IN_SQRTF:
9133 55 : if (call_expr_nargs (_p0) == 1)
9134 : {
9135 55 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9136 55 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9137 : {
9138 0 : {
9139 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9140 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
9141 0 : if (res) return res;
9142 : }
9143 : }
9144 55 : switch (TREE_CODE (_p1))
9145 : {
9146 13 : case CALL_EXPR:
9147 13 : switch (get_call_combined_fn (_p1))
9148 : {
9149 13 : case CFN_BUILT_IN_SQRTF:
9150 13 : if (call_expr_nargs (_p1) == 1)
9151 : {
9152 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9153 13 : {
9154 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9155 13 : if (flag_unsafe_math_optimizations
9156 : )
9157 : {
9158 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1488;
9159 13 : {
9160 13 : tree res_op0;
9161 13 : {
9162 13 : tree _o1[2], _r1;
9163 13 : _o1[0] = captures[1];
9164 13 : _o1[1] = captures[3];
9165 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9166 13 : res_op0 = _r1;
9167 : }
9168 13 : tree _r;
9169 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, type, 1, res_op0);
9170 13 : if (!_r)
9171 0 : goto next_after_fail1488;
9172 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
9173 : return _r;
9174 : }
9175 67220435 : next_after_fail1488:;
9176 : }
9177 : }
9178 : }
9179 : break;
9180 : default:;
9181 : }
9182 : break;
9183 : default:;
9184 : }
9185 : }
9186 : break;
9187 48 : case CFN_BUILT_IN_SQRTL:
9188 48 : if (call_expr_nargs (_p0) == 1)
9189 : {
9190 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9191 48 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9192 : {
9193 0 : {
9194 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
9195 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
9196 0 : if (res) return res;
9197 : }
9198 : }
9199 48 : switch (TREE_CODE (_p1))
9200 : {
9201 13 : case CALL_EXPR:
9202 13 : switch (get_call_combined_fn (_p1))
9203 : {
9204 13 : case CFN_BUILT_IN_SQRTL:
9205 13 : if (call_expr_nargs (_p1) == 1)
9206 : {
9207 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9208 13 : {
9209 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9210 13 : if (flag_unsafe_math_optimizations
9211 : )
9212 : {
9213 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1489;
9214 13 : {
9215 13 : tree res_op0;
9216 13 : {
9217 13 : tree _o1[2], _r1;
9218 13 : _o1[0] = captures[1];
9219 13 : _o1[1] = captures[3];
9220 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9221 13 : res_op0 = _r1;
9222 : }
9223 13 : tree _r;
9224 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, type, 1, res_op0);
9225 13 : if (!_r)
9226 0 : goto next_after_fail1489;
9227 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
9228 : return _r;
9229 : }
9230 67220435 : next_after_fail1489:;
9231 : }
9232 : }
9233 : }
9234 : break;
9235 : default:;
9236 : }
9237 : break;
9238 : default:;
9239 : }
9240 : }
9241 : break;
9242 287 : case CFN_BUILT_IN_EXP:
9243 287 : if (call_expr_nargs (_p0) == 1)
9244 : {
9245 287 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9246 287 : switch (TREE_CODE (_p1))
9247 : {
9248 81 : case CALL_EXPR:
9249 81 : switch (get_call_combined_fn (_p1))
9250 : {
9251 31 : case CFN_BUILT_IN_EXP:
9252 31 : if (call_expr_nargs (_p1) == 1)
9253 : {
9254 31 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9255 31 : {
9256 31 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9257 31 : if (flag_unsafe_math_optimizations
9258 : )
9259 : {
9260 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1490;
9261 27 : {
9262 27 : tree res_op0;
9263 27 : {
9264 27 : tree _o1[2], _r1;
9265 27 : _o1[0] = captures[1];
9266 27 : _o1[1] = captures[3];
9267 27 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9268 27 : res_op0 = _r1;
9269 : }
9270 27 : tree _r;
9271 27 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9272 27 : if (!_r)
9273 0 : goto next_after_fail1490;
9274 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9275 : return _r;
9276 : }
9277 67220435 : next_after_fail1490:;
9278 : }
9279 : }
9280 : }
9281 : break;
9282 0 : case CFN_BUILT_IN_POW:
9283 0 : if (call_expr_nargs (_p1) == 2)
9284 : {
9285 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9286 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9287 0 : switch (TREE_CODE (_q40))
9288 : {
9289 0 : case REAL_CST:
9290 0 : {
9291 0 : {
9292 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9293 0 : if (flag_unsafe_math_optimizations
9294 : )
9295 : {
9296 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9297 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9298 : )
9299 : {
9300 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1491;
9301 0 : {
9302 0 : tree res_op0;
9303 0 : {
9304 0 : tree _o1[2], _r1;
9305 0 : {
9306 0 : tree _o2[2], _r2;
9307 0 : {
9308 0 : tree _o3[1], _r3;
9309 0 : _o3[0] = captures[1];
9310 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9311 0 : if (!_r3)
9312 0 : goto next_after_fail1491;
9313 0 : _o2[0] = _r3;
9314 : }
9315 0 : _o2[1] = captures[2];
9316 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9317 0 : _o1[0] = _r2;
9318 : }
9319 0 : _o1[1] = captures[4];
9320 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9321 0 : res_op0 = _r1;
9322 : }
9323 0 : tree _r;
9324 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9325 0 : if (!_r)
9326 0 : goto next_after_fail1491;
9327 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9328 : return _r;
9329 : }
9330 67220435 : next_after_fail1491:;
9331 : }
9332 : }
9333 : }
9334 : break;
9335 : }
9336 : default:;
9337 : }
9338 : }
9339 : break;
9340 : default:;
9341 : }
9342 : break;
9343 : default:;
9344 : }
9345 : }
9346 : break;
9347 123 : case CFN_BUILT_IN_POW:
9348 123 : if (call_expr_nargs (_p0) == 2)
9349 : {
9350 123 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9351 123 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9352 123 : switch (TREE_CODE (_q20))
9353 : {
9354 1 : case REAL_CST:
9355 1 : {
9356 1 : switch (TREE_CODE (_p1))
9357 : {
9358 1 : case CALL_EXPR:
9359 1 : switch (get_call_combined_fn (_p1))
9360 : {
9361 0 : case CFN_BUILT_IN_EXP:
9362 0 : if (call_expr_nargs (_p1) == 1)
9363 : {
9364 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9365 0 : {
9366 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9367 0 : if (flag_unsafe_math_optimizations
9368 : )
9369 : {
9370 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9371 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9372 : )
9373 : {
9374 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1492;
9375 0 : {
9376 0 : tree res_op0;
9377 0 : {
9378 0 : tree _o1[2], _r1;
9379 0 : {
9380 0 : tree _o2[2], _r2;
9381 0 : {
9382 0 : tree _o3[1], _r3;
9383 0 : _o3[0] = captures[1];
9384 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9385 0 : if (!_r3)
9386 0 : goto next_after_fail1492;
9387 0 : _o2[0] = _r3;
9388 : }
9389 0 : _o2[1] = captures[2];
9390 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9391 0 : _o1[0] = _r2;
9392 : }
9393 0 : _o1[1] = captures[4];
9394 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9395 0 : res_op0 = _r1;
9396 : }
9397 0 : tree _r;
9398 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9399 0 : if (!_r)
9400 0 : goto next_after_fail1492;
9401 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9402 : return _r;
9403 : }
9404 123 : next_after_fail1492:;
9405 : }
9406 : }
9407 : }
9408 : }
9409 : break;
9410 0 : case CFN_BUILT_IN_EXP2:
9411 0 : if (call_expr_nargs (_p1) == 1)
9412 : {
9413 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9414 0 : {
9415 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9416 0 : if (flag_unsafe_math_optimizations
9417 : )
9418 : {
9419 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9420 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9421 : )
9422 : {
9423 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1493;
9424 0 : {
9425 0 : tree res_op0;
9426 0 : {
9427 0 : tree _o1[2], _r1;
9428 0 : {
9429 0 : tree _o2[2], _r2;
9430 0 : {
9431 0 : tree _o3[1], _r3;
9432 0 : _o3[0] = captures[1];
9433 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9434 0 : if (!_r3)
9435 0 : goto next_after_fail1493;
9436 0 : _o2[0] = _r3;
9437 : }
9438 0 : _o2[1] = captures[2];
9439 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9440 0 : _o1[0] = _r2;
9441 : }
9442 0 : _o1[1] = captures[4];
9443 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9444 0 : res_op0 = _r1;
9445 : }
9446 0 : tree _r;
9447 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9448 0 : if (!_r)
9449 0 : goto next_after_fail1493;
9450 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9451 : return _r;
9452 : }
9453 123 : next_after_fail1493:;
9454 : }
9455 : }
9456 : }
9457 : }
9458 : break;
9459 0 : case CFN_BUILT_IN_EXP10:
9460 0 : if (call_expr_nargs (_p1) == 1)
9461 : {
9462 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9463 0 : {
9464 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9465 0 : if (flag_unsafe_math_optimizations
9466 : )
9467 : {
9468 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9469 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9470 : )
9471 : {
9472 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1494;
9473 0 : {
9474 0 : tree res_op0;
9475 0 : {
9476 0 : tree _o1[2], _r1;
9477 0 : {
9478 0 : tree _o2[2], _r2;
9479 0 : {
9480 0 : tree _o3[1], _r3;
9481 0 : _o3[0] = captures[1];
9482 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9483 0 : if (!_r3)
9484 0 : goto next_after_fail1494;
9485 0 : _o2[0] = _r3;
9486 : }
9487 0 : _o2[1] = captures[2];
9488 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9489 0 : _o1[0] = _r2;
9490 : }
9491 0 : _o1[1] = captures[4];
9492 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9493 0 : res_op0 = _r1;
9494 : }
9495 0 : tree _r;
9496 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
9497 0 : if (!_r)
9498 0 : goto next_after_fail1494;
9499 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9500 : return _r;
9501 : }
9502 123 : next_after_fail1494:;
9503 : }
9504 : }
9505 : }
9506 : }
9507 : break;
9508 0 : case CFN_BUILT_IN_POW10:
9509 0 : if (call_expr_nargs (_p1) == 1)
9510 : {
9511 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9512 0 : {
9513 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9514 0 : if (flag_unsafe_math_optimizations
9515 : )
9516 : {
9517 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9518 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9519 : )
9520 : {
9521 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1495;
9522 0 : {
9523 0 : tree res_op0;
9524 0 : {
9525 0 : tree _o1[2], _r1;
9526 0 : {
9527 0 : tree _o2[2], _r2;
9528 0 : {
9529 0 : tree _o3[1], _r3;
9530 0 : _o3[0] = captures[1];
9531 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9532 0 : if (!_r3)
9533 0 : goto next_after_fail1495;
9534 0 : _o2[0] = _r3;
9535 : }
9536 0 : _o2[1] = captures[2];
9537 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9538 0 : _o1[0] = _r2;
9539 : }
9540 0 : _o1[1] = captures[4];
9541 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9542 0 : res_op0 = _r1;
9543 : }
9544 0 : tree _r;
9545 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
9546 0 : if (!_r)
9547 0 : goto next_after_fail1495;
9548 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9549 : return _r;
9550 : }
9551 123 : next_after_fail1495:;
9552 : }
9553 : }
9554 : }
9555 : }
9556 : break;
9557 : default:;
9558 : }
9559 : break;
9560 : default:;
9561 : }
9562 : break;
9563 : }
9564 123 : default:;
9565 : }
9566 123 : switch (TREE_CODE (_q21))
9567 : {
9568 12 : case REAL_CST:
9569 12 : {
9570 12 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9571 : {
9572 8 : {
9573 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
9574 8 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
9575 8 : if (res) return res;
9576 : }
9577 : }
9578 : break;
9579 : }
9580 : default:;
9581 : }
9582 : }
9583 : break;
9584 48 : case CFN_BUILT_IN_EXP10F:
9585 48 : if (call_expr_nargs (_p0) == 1)
9586 : {
9587 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9588 48 : switch (TREE_CODE (_p1))
9589 : {
9590 24 : case CALL_EXPR:
9591 24 : switch (get_call_combined_fn (_p1))
9592 : {
9593 24 : case CFN_BUILT_IN_EXP10F:
9594 24 : if (call_expr_nargs (_p1) == 1)
9595 : {
9596 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9597 24 : {
9598 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9599 24 : if (flag_unsafe_math_optimizations
9600 : )
9601 : {
9602 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1496;
9603 24 : {
9604 24 : tree res_op0;
9605 24 : {
9606 24 : tree _o1[2], _r1;
9607 24 : _o1[0] = captures[1];
9608 24 : _o1[1] = captures[3];
9609 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9610 24 : res_op0 = _r1;
9611 : }
9612 24 : tree _r;
9613 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9614 24 : if (!_r)
9615 0 : goto next_after_fail1496;
9616 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9617 : return _r;
9618 : }
9619 67220435 : next_after_fail1496:;
9620 : }
9621 : }
9622 : }
9623 : break;
9624 0 : case CFN_BUILT_IN_POWF:
9625 0 : if (call_expr_nargs (_p1) == 2)
9626 : {
9627 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9628 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9629 0 : switch (TREE_CODE (_q40))
9630 : {
9631 0 : case REAL_CST:
9632 0 : {
9633 0 : {
9634 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9635 0 : if (flag_unsafe_math_optimizations
9636 : )
9637 : {
9638 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9639 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9640 : )
9641 : {
9642 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1497;
9643 0 : {
9644 0 : tree res_op0;
9645 0 : {
9646 0 : tree _o1[2], _r1;
9647 0 : {
9648 0 : tree _o2[2], _r2;
9649 0 : {
9650 0 : tree _o3[1], _r3;
9651 0 : _o3[0] = captures[1];
9652 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9653 0 : if (!_r3)
9654 0 : goto next_after_fail1497;
9655 0 : _o2[0] = _r3;
9656 : }
9657 0 : _o2[1] = captures[2];
9658 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9659 0 : _o1[0] = _r2;
9660 : }
9661 0 : _o1[1] = captures[4];
9662 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9663 0 : res_op0 = _r1;
9664 : }
9665 0 : tree _r;
9666 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9667 0 : if (!_r)
9668 0 : goto next_after_fail1497;
9669 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9670 : return _r;
9671 : }
9672 67220435 : next_after_fail1497:;
9673 : }
9674 : }
9675 : }
9676 : break;
9677 : }
9678 : default:;
9679 : }
9680 : }
9681 : break;
9682 : default:;
9683 : }
9684 : break;
9685 : default:;
9686 : }
9687 : }
9688 : break;
9689 48 : case CFN_BUILT_IN_EXP10L:
9690 48 : if (call_expr_nargs (_p0) == 1)
9691 : {
9692 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9693 48 : switch (TREE_CODE (_p1))
9694 : {
9695 24 : case CALL_EXPR:
9696 24 : switch (get_call_combined_fn (_p1))
9697 : {
9698 24 : case CFN_BUILT_IN_EXP10L:
9699 24 : if (call_expr_nargs (_p1) == 1)
9700 : {
9701 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9702 24 : {
9703 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9704 24 : if (flag_unsafe_math_optimizations
9705 : )
9706 : {
9707 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1498;
9708 24 : {
9709 24 : tree res_op0;
9710 24 : {
9711 24 : tree _o1[2], _r1;
9712 24 : _o1[0] = captures[1];
9713 24 : _o1[1] = captures[3];
9714 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9715 24 : res_op0 = _r1;
9716 : }
9717 24 : tree _r;
9718 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9719 24 : if (!_r)
9720 0 : goto next_after_fail1498;
9721 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9722 : return _r;
9723 : }
9724 67220435 : next_after_fail1498:;
9725 : }
9726 : }
9727 : }
9728 : break;
9729 0 : case CFN_BUILT_IN_POWL:
9730 0 : if (call_expr_nargs (_p1) == 2)
9731 : {
9732 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9733 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9734 0 : switch (TREE_CODE (_q40))
9735 : {
9736 0 : case REAL_CST:
9737 0 : {
9738 0 : {
9739 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9740 0 : if (flag_unsafe_math_optimizations
9741 : )
9742 : {
9743 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9744 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9745 : )
9746 : {
9747 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1499;
9748 0 : {
9749 0 : tree res_op0;
9750 0 : {
9751 0 : tree _o1[2], _r1;
9752 0 : {
9753 0 : tree _o2[2], _r2;
9754 0 : {
9755 0 : tree _o3[1], _r3;
9756 0 : _o3[0] = captures[1];
9757 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
9758 0 : if (!_r3)
9759 0 : goto next_after_fail1499;
9760 0 : _o2[0] = _r3;
9761 : }
9762 0 : _o2[1] = captures[2];
9763 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9764 0 : _o1[0] = _r2;
9765 : }
9766 0 : _o1[1] = captures[4];
9767 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9768 0 : res_op0 = _r1;
9769 : }
9770 0 : tree _r;
9771 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9772 0 : if (!_r)
9773 0 : goto next_after_fail1499;
9774 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9775 : return _r;
9776 : }
9777 67220435 : next_after_fail1499:;
9778 : }
9779 : }
9780 : }
9781 : break;
9782 : }
9783 : default:;
9784 : }
9785 : }
9786 : break;
9787 : default:;
9788 : }
9789 : break;
9790 : default:;
9791 : }
9792 : }
9793 : break;
9794 18 : case CFN_BUILT_IN_CBRT:
9795 18 : if (call_expr_nargs (_p0) == 1)
9796 : {
9797 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9798 18 : switch (TREE_CODE (_p1))
9799 : {
9800 14 : case CALL_EXPR:
9801 14 : switch (get_call_combined_fn (_p1))
9802 : {
9803 14 : case CFN_BUILT_IN_CBRT:
9804 14 : if (call_expr_nargs (_p1) == 1)
9805 : {
9806 14 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9807 14 : {
9808 14 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9809 14 : if (flag_unsafe_math_optimizations
9810 : )
9811 : {
9812 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1500;
9813 12 : {
9814 12 : tree res_op0;
9815 12 : {
9816 12 : tree _o1[2], _r1;
9817 12 : _o1[0] = captures[1];
9818 12 : _o1[1] = captures[3];
9819 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9820 12 : res_op0 = _r1;
9821 : }
9822 12 : tree _r;
9823 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, type, 1, res_op0);
9824 12 : if (!_r)
9825 0 : goto next_after_fail1500;
9826 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
9827 : return _r;
9828 : }
9829 67220435 : next_after_fail1500:;
9830 : }
9831 : }
9832 : }
9833 : break;
9834 : default:;
9835 : }
9836 : break;
9837 : default:;
9838 : }
9839 : }
9840 : break;
9841 48 : case CFN_BUILT_IN_EXP2:
9842 48 : if (call_expr_nargs (_p0) == 1)
9843 : {
9844 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9845 48 : switch (TREE_CODE (_p1))
9846 : {
9847 24 : case CALL_EXPR:
9848 24 : switch (get_call_combined_fn (_p1))
9849 : {
9850 0 : case CFN_BUILT_IN_POW:
9851 0 : if (call_expr_nargs (_p1) == 2)
9852 : {
9853 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9854 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9855 0 : switch (TREE_CODE (_q40))
9856 : {
9857 0 : case REAL_CST:
9858 0 : {
9859 0 : {
9860 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9861 0 : if (flag_unsafe_math_optimizations
9862 : )
9863 : {
9864 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9865 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9866 : )
9867 : {
9868 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1501;
9869 0 : {
9870 0 : tree res_op0;
9871 0 : {
9872 0 : tree _o1[2], _r1;
9873 0 : {
9874 0 : tree _o2[2], _r2;
9875 0 : {
9876 0 : tree _o3[1], _r3;
9877 0 : _o3[0] = captures[1];
9878 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9879 0 : if (!_r3)
9880 0 : goto next_after_fail1501;
9881 0 : _o2[0] = _r3;
9882 : }
9883 0 : _o2[1] = captures[2];
9884 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9885 0 : _o1[0] = _r2;
9886 : }
9887 0 : _o1[1] = captures[4];
9888 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9889 0 : res_op0 = _r1;
9890 : }
9891 0 : tree _r;
9892 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9893 0 : if (!_r)
9894 0 : goto next_after_fail1501;
9895 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9896 : return _r;
9897 : }
9898 67220435 : next_after_fail1501:;
9899 : }
9900 : }
9901 : }
9902 : break;
9903 : }
9904 : default:;
9905 : }
9906 : }
9907 : break;
9908 24 : case CFN_BUILT_IN_EXP2:
9909 24 : if (call_expr_nargs (_p1) == 1)
9910 : {
9911 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9912 24 : {
9913 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9914 24 : if (flag_unsafe_math_optimizations
9915 : )
9916 : {
9917 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1502;
9918 24 : {
9919 24 : tree res_op0;
9920 24 : {
9921 24 : tree _o1[2], _r1;
9922 24 : _o1[0] = captures[1];
9923 24 : _o1[1] = captures[3];
9924 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9925 24 : res_op0 = _r1;
9926 : }
9927 24 : tree _r;
9928 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9929 24 : if (!_r)
9930 0 : goto next_after_fail1502;
9931 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9932 : return _r;
9933 : }
9934 67220435 : next_after_fail1502:;
9935 : }
9936 : }
9937 : }
9938 : break;
9939 : default:;
9940 : }
9941 : break;
9942 : default:;
9943 : }
9944 : }
9945 : break;
9946 66 : case CFN_BUILT_IN_EXPF:
9947 66 : if (call_expr_nargs (_p0) == 1)
9948 : {
9949 66 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9950 66 : switch (TREE_CODE (_p1))
9951 : {
9952 36 : case CALL_EXPR:
9953 36 : switch (get_call_combined_fn (_p1))
9954 : {
9955 29 : case CFN_BUILT_IN_EXPF:
9956 29 : if (call_expr_nargs (_p1) == 1)
9957 : {
9958 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9959 29 : {
9960 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9961 29 : if (flag_unsafe_math_optimizations
9962 : )
9963 : {
9964 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1503;
9965 25 : {
9966 25 : tree res_op0;
9967 25 : {
9968 25 : tree _o1[2], _r1;
9969 25 : _o1[0] = captures[1];
9970 25 : _o1[1] = captures[3];
9971 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9972 25 : res_op0 = _r1;
9973 : }
9974 25 : tree _r;
9975 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9976 25 : if (!_r)
9977 0 : goto next_after_fail1503;
9978 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9979 : return _r;
9980 : }
9981 67220435 : next_after_fail1503:;
9982 : }
9983 : }
9984 : }
9985 : break;
9986 0 : case CFN_BUILT_IN_POWF:
9987 0 : if (call_expr_nargs (_p1) == 2)
9988 : {
9989 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9990 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9991 0 : switch (TREE_CODE (_q40))
9992 : {
9993 0 : case REAL_CST:
9994 0 : {
9995 0 : {
9996 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9997 0 : if (flag_unsafe_math_optimizations
9998 : )
9999 : {
10000 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10001 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10002 : )
10003 : {
10004 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1504;
10005 0 : {
10006 0 : tree res_op0;
10007 0 : {
10008 0 : tree _o1[2], _r1;
10009 0 : {
10010 0 : tree _o2[2], _r2;
10011 0 : {
10012 0 : tree _o3[1], _r3;
10013 0 : _o3[0] = captures[1];
10014 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
10015 0 : if (!_r3)
10016 0 : goto next_after_fail1504;
10017 0 : _o2[0] = _r3;
10018 : }
10019 0 : _o2[1] = captures[2];
10020 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10021 0 : _o1[0] = _r2;
10022 : }
10023 0 : _o1[1] = captures[4];
10024 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10025 0 : res_op0 = _r1;
10026 : }
10027 0 : tree _r;
10028 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
10029 0 : if (!_r)
10030 0 : goto next_after_fail1504;
10031 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10032 : return _r;
10033 : }
10034 67220435 : next_after_fail1504:;
10035 : }
10036 : }
10037 : }
10038 : break;
10039 : }
10040 : default:;
10041 : }
10042 : }
10043 : break;
10044 : default:;
10045 : }
10046 : break;
10047 : default:;
10048 : }
10049 : }
10050 : break;
10051 59 : case CFN_BUILT_IN_EXPL:
10052 59 : if (call_expr_nargs (_p0) == 1)
10053 : {
10054 59 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10055 59 : switch (TREE_CODE (_p1))
10056 : {
10057 29 : case CALL_EXPR:
10058 29 : switch (get_call_combined_fn (_p1))
10059 : {
10060 29 : case CFN_BUILT_IN_EXPL:
10061 29 : if (call_expr_nargs (_p1) == 1)
10062 : {
10063 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10064 29 : {
10065 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10066 29 : if (flag_unsafe_math_optimizations
10067 : )
10068 : {
10069 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1505;
10070 25 : {
10071 25 : tree res_op0;
10072 25 : {
10073 25 : tree _o1[2], _r1;
10074 25 : _o1[0] = captures[1];
10075 25 : _o1[1] = captures[3];
10076 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10077 25 : res_op0 = _r1;
10078 : }
10079 25 : tree _r;
10080 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10081 25 : if (!_r)
10082 0 : goto next_after_fail1505;
10083 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
10084 : return _r;
10085 : }
10086 67220435 : next_after_fail1505:;
10087 : }
10088 : }
10089 : }
10090 : break;
10091 0 : case CFN_BUILT_IN_POWL:
10092 0 : if (call_expr_nargs (_p1) == 2)
10093 : {
10094 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10095 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10096 0 : switch (TREE_CODE (_q40))
10097 : {
10098 0 : case REAL_CST:
10099 0 : {
10100 0 : {
10101 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10102 0 : if (flag_unsafe_math_optimizations
10103 : )
10104 : {
10105 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10106 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10107 : )
10108 : {
10109 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1506;
10110 0 : {
10111 0 : tree res_op0;
10112 0 : {
10113 0 : tree _o1[2], _r1;
10114 0 : {
10115 0 : tree _o2[2], _r2;
10116 0 : {
10117 0 : tree _o3[1], _r3;
10118 0 : _o3[0] = captures[1];
10119 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
10120 0 : if (!_r3)
10121 0 : goto next_after_fail1506;
10122 0 : _o2[0] = _r3;
10123 : }
10124 0 : _o2[1] = captures[2];
10125 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10126 0 : _o1[0] = _r2;
10127 : }
10128 0 : _o1[1] = captures[4];
10129 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10130 0 : res_op0 = _r1;
10131 : }
10132 0 : tree _r;
10133 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10134 0 : if (!_r)
10135 0 : goto next_after_fail1506;
10136 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10137 : return _r;
10138 : }
10139 67220435 : next_after_fail1506:;
10140 : }
10141 : }
10142 : }
10143 : break;
10144 : }
10145 : default:;
10146 : }
10147 : }
10148 : break;
10149 : default:;
10150 : }
10151 : break;
10152 : default:;
10153 : }
10154 : }
10155 : break;
10156 19 : case CFN_BUILT_IN_POWF:
10157 19 : if (call_expr_nargs (_p0) == 2)
10158 : {
10159 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10160 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10161 19 : switch (TREE_CODE (_q20))
10162 : {
10163 0 : case REAL_CST:
10164 0 : {
10165 0 : switch (TREE_CODE (_p1))
10166 : {
10167 0 : case CALL_EXPR:
10168 0 : switch (get_call_combined_fn (_p1))
10169 : {
10170 0 : case CFN_BUILT_IN_EXP10F:
10171 0 : if (call_expr_nargs (_p1) == 1)
10172 : {
10173 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10174 0 : {
10175 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10176 0 : if (flag_unsafe_math_optimizations
10177 : )
10178 : {
10179 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10180 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10181 : )
10182 : {
10183 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1507;
10184 0 : {
10185 0 : tree res_op0;
10186 0 : {
10187 0 : tree _o1[2], _r1;
10188 0 : {
10189 0 : tree _o2[2], _r2;
10190 0 : {
10191 0 : tree _o3[1], _r3;
10192 0 : _o3[0] = captures[1];
10193 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10194 0 : if (!_r3)
10195 0 : goto next_after_fail1507;
10196 0 : _o2[0] = _r3;
10197 : }
10198 0 : _o2[1] = captures[2];
10199 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10200 0 : _o1[0] = _r2;
10201 : }
10202 0 : _o1[1] = captures[4];
10203 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10204 0 : res_op0 = _r1;
10205 : }
10206 0 : tree _r;
10207 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
10208 0 : if (!_r)
10209 0 : goto next_after_fail1507;
10210 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10211 : return _r;
10212 : }
10213 19 : next_after_fail1507:;
10214 : }
10215 : }
10216 : }
10217 : }
10218 : break;
10219 0 : case CFN_BUILT_IN_EXPF:
10220 0 : if (call_expr_nargs (_p1) == 1)
10221 : {
10222 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10223 0 : {
10224 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10225 0 : if (flag_unsafe_math_optimizations
10226 : )
10227 : {
10228 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10229 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10230 : )
10231 : {
10232 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1508;
10233 0 : {
10234 0 : tree res_op0;
10235 0 : {
10236 0 : tree _o1[2], _r1;
10237 0 : {
10238 0 : tree _o2[2], _r2;
10239 0 : {
10240 0 : tree _o3[1], _r3;
10241 0 : _o3[0] = captures[1];
10242 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
10243 0 : if (!_r3)
10244 0 : goto next_after_fail1508;
10245 0 : _o2[0] = _r3;
10246 : }
10247 0 : _o2[1] = captures[2];
10248 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10249 0 : _o1[0] = _r2;
10250 : }
10251 0 : _o1[1] = captures[4];
10252 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10253 0 : res_op0 = _r1;
10254 : }
10255 0 : tree _r;
10256 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
10257 0 : if (!_r)
10258 0 : goto next_after_fail1508;
10259 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10260 : return _r;
10261 : }
10262 19 : next_after_fail1508:;
10263 : }
10264 : }
10265 : }
10266 : }
10267 : break;
10268 0 : case CFN_BUILT_IN_POW10F:
10269 0 : if (call_expr_nargs (_p1) == 1)
10270 : {
10271 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10272 0 : {
10273 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10274 0 : if (flag_unsafe_math_optimizations
10275 : )
10276 : {
10277 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10278 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10279 : )
10280 : {
10281 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1509;
10282 0 : {
10283 0 : tree res_op0;
10284 0 : {
10285 0 : tree _o1[2], _r1;
10286 0 : {
10287 0 : tree _o2[2], _r2;
10288 0 : {
10289 0 : tree _o3[1], _r3;
10290 0 : _o3[0] = captures[1];
10291 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10292 0 : if (!_r3)
10293 0 : goto next_after_fail1509;
10294 0 : _o2[0] = _r3;
10295 : }
10296 0 : _o2[1] = captures[2];
10297 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10298 0 : _o1[0] = _r2;
10299 : }
10300 0 : _o1[1] = captures[4];
10301 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10302 0 : res_op0 = _r1;
10303 : }
10304 0 : tree _r;
10305 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10306 0 : if (!_r)
10307 0 : goto next_after_fail1509;
10308 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10309 : return _r;
10310 : }
10311 19 : next_after_fail1509:;
10312 : }
10313 : }
10314 : }
10315 : }
10316 : break;
10317 0 : case CFN_BUILT_IN_EXP2F:
10318 0 : if (call_expr_nargs (_p1) == 1)
10319 : {
10320 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10321 0 : {
10322 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10323 0 : if (flag_unsafe_math_optimizations
10324 : )
10325 : {
10326 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10327 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10328 : )
10329 : {
10330 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1510;
10331 0 : {
10332 0 : tree res_op0;
10333 0 : {
10334 0 : tree _o1[2], _r1;
10335 0 : {
10336 0 : tree _o2[2], _r2;
10337 0 : {
10338 0 : tree _o3[1], _r3;
10339 0 : _o3[0] = captures[1];
10340 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10341 0 : if (!_r3)
10342 0 : goto next_after_fail1510;
10343 0 : _o2[0] = _r3;
10344 : }
10345 0 : _o2[1] = captures[2];
10346 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10347 0 : _o1[0] = _r2;
10348 : }
10349 0 : _o1[1] = captures[4];
10350 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10351 0 : res_op0 = _r1;
10352 : }
10353 0 : tree _r;
10354 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
10355 0 : if (!_r)
10356 0 : goto next_after_fail1510;
10357 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10358 : return _r;
10359 : }
10360 19 : next_after_fail1510:;
10361 : }
10362 : }
10363 : }
10364 : }
10365 : break;
10366 : default:;
10367 : }
10368 : break;
10369 : default:;
10370 : }
10371 : break;
10372 : }
10373 19 : default:;
10374 : }
10375 19 : switch (TREE_CODE (_q21))
10376 : {
10377 5 : case REAL_CST:
10378 5 : {
10379 5 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10380 : {
10381 0 : {
10382 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10383 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
10384 0 : if (res) return res;
10385 : }
10386 : }
10387 : break;
10388 : }
10389 : default:;
10390 : }
10391 : }
10392 : break;
10393 12 : case CFN_BUILT_IN_POWL:
10394 12 : if (call_expr_nargs (_p0) == 2)
10395 : {
10396 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10397 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10398 12 : switch (TREE_CODE (_q20))
10399 : {
10400 0 : case REAL_CST:
10401 0 : {
10402 0 : switch (TREE_CODE (_p1))
10403 : {
10404 0 : case CALL_EXPR:
10405 0 : switch (get_call_combined_fn (_p1))
10406 : {
10407 0 : case CFN_BUILT_IN_EXP10L:
10408 0 : if (call_expr_nargs (_p1) == 1)
10409 : {
10410 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10411 0 : {
10412 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10413 0 : if (flag_unsafe_math_optimizations
10414 : )
10415 : {
10416 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10417 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10418 : )
10419 : {
10420 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1511;
10421 0 : {
10422 0 : tree res_op0;
10423 0 : {
10424 0 : tree _o1[2], _r1;
10425 0 : {
10426 0 : tree _o2[2], _r2;
10427 0 : {
10428 0 : tree _o3[1], _r3;
10429 0 : _o3[0] = captures[1];
10430 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10431 0 : if (!_r3)
10432 0 : goto next_after_fail1511;
10433 0 : _o2[0] = _r3;
10434 : }
10435 0 : _o2[1] = captures[2];
10436 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10437 0 : _o1[0] = _r2;
10438 : }
10439 0 : _o1[1] = captures[4];
10440 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10441 0 : res_op0 = _r1;
10442 : }
10443 0 : tree _r;
10444 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
10445 0 : if (!_r)
10446 0 : goto next_after_fail1511;
10447 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10448 : return _r;
10449 : }
10450 12 : next_after_fail1511:;
10451 : }
10452 : }
10453 : }
10454 : }
10455 : break;
10456 0 : case CFN_BUILT_IN_EXPL:
10457 0 : if (call_expr_nargs (_p1) == 1)
10458 : {
10459 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10460 0 : {
10461 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10462 0 : if (flag_unsafe_math_optimizations
10463 : )
10464 : {
10465 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10466 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10467 : )
10468 : {
10469 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1512;
10470 0 : {
10471 0 : tree res_op0;
10472 0 : {
10473 0 : tree _o1[2], _r1;
10474 0 : {
10475 0 : tree _o2[2], _r2;
10476 0 : {
10477 0 : tree _o3[1], _r3;
10478 0 : _o3[0] = captures[1];
10479 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
10480 0 : if (!_r3)
10481 0 : goto next_after_fail1512;
10482 0 : _o2[0] = _r3;
10483 : }
10484 0 : _o2[1] = captures[2];
10485 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10486 0 : _o1[0] = _r2;
10487 : }
10488 0 : _o1[1] = captures[4];
10489 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10490 0 : res_op0 = _r1;
10491 : }
10492 0 : tree _r;
10493 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10494 0 : if (!_r)
10495 0 : goto next_after_fail1512;
10496 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10497 : return _r;
10498 : }
10499 12 : next_after_fail1512:;
10500 : }
10501 : }
10502 : }
10503 : }
10504 : break;
10505 0 : case CFN_BUILT_IN_POW10L:
10506 0 : if (call_expr_nargs (_p1) == 1)
10507 : {
10508 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10509 0 : {
10510 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10511 0 : if (flag_unsafe_math_optimizations
10512 : )
10513 : {
10514 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10515 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10516 : )
10517 : {
10518 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1513;
10519 0 : {
10520 0 : tree res_op0;
10521 0 : {
10522 0 : tree _o1[2], _r1;
10523 0 : {
10524 0 : tree _o2[2], _r2;
10525 0 : {
10526 0 : tree _o3[1], _r3;
10527 0 : _o3[0] = captures[1];
10528 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10529 0 : if (!_r3)
10530 0 : goto next_after_fail1513;
10531 0 : _o2[0] = _r3;
10532 : }
10533 0 : _o2[1] = captures[2];
10534 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10535 0 : _o1[0] = _r2;
10536 : }
10537 0 : _o1[1] = captures[4];
10538 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10539 0 : res_op0 = _r1;
10540 : }
10541 0 : tree _r;
10542 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10543 0 : if (!_r)
10544 0 : goto next_after_fail1513;
10545 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10546 : return _r;
10547 : }
10548 12 : next_after_fail1513:;
10549 : }
10550 : }
10551 : }
10552 : }
10553 : break;
10554 0 : case CFN_BUILT_IN_EXP2L:
10555 0 : if (call_expr_nargs (_p1) == 1)
10556 : {
10557 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10558 0 : {
10559 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10560 0 : if (flag_unsafe_math_optimizations
10561 : )
10562 : {
10563 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10564 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10565 : )
10566 : {
10567 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1514;
10568 0 : {
10569 0 : tree res_op0;
10570 0 : {
10571 0 : tree _o1[2], _r1;
10572 0 : {
10573 0 : tree _o2[2], _r2;
10574 0 : {
10575 0 : tree _o3[1], _r3;
10576 0 : _o3[0] = captures[1];
10577 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10578 0 : if (!_r3)
10579 0 : goto next_after_fail1514;
10580 0 : _o2[0] = _r3;
10581 : }
10582 0 : _o2[1] = captures[2];
10583 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10584 0 : _o1[0] = _r2;
10585 : }
10586 0 : _o1[1] = captures[4];
10587 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10588 0 : res_op0 = _r1;
10589 : }
10590 0 : tree _r;
10591 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
10592 0 : if (!_r)
10593 0 : goto next_after_fail1514;
10594 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10595 : return _r;
10596 : }
10597 12 : next_after_fail1514:;
10598 : }
10599 : }
10600 : }
10601 : }
10602 : break;
10603 : default:;
10604 : }
10605 : break;
10606 : default:;
10607 : }
10608 : break;
10609 : }
10610 12 : default:;
10611 : }
10612 12 : switch (TREE_CODE (_q21))
10613 : {
10614 0 : case REAL_CST:
10615 0 : {
10616 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10617 : {
10618 0 : {
10619 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10620 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
10621 0 : if (res) return res;
10622 : }
10623 : }
10624 : break;
10625 : }
10626 : default:;
10627 : }
10628 : }
10629 : break;
10630 19797 : case CFN_BUILT_IN_SQRT:
10631 19797 : if (call_expr_nargs (_p0) == 1)
10632 : {
10633 19797 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10634 19797 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10635 : {
10636 2 : {
10637 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10638 2 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
10639 2 : if (res) return res;
10640 : }
10641 : }
10642 19795 : switch (TREE_CODE (_p1))
10643 : {
10644 100 : case CALL_EXPR:
10645 100 : switch (get_call_combined_fn (_p1))
10646 : {
10647 37 : case CFN_BUILT_IN_SQRT:
10648 37 : if (call_expr_nargs (_p1) == 1)
10649 : {
10650 37 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10651 37 : {
10652 37 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10653 37 : if (flag_unsafe_math_optimizations
10654 : )
10655 : {
10656 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1515;
10657 15 : {
10658 15 : tree res_op0;
10659 15 : {
10660 15 : tree _o1[2], _r1;
10661 15 : _o1[0] = captures[1];
10662 15 : _o1[1] = captures[3];
10663 15 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10664 15 : res_op0 = _r1;
10665 : }
10666 15 : tree _r;
10667 15 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, type, 1, res_op0);
10668 15 : if (!_r)
10669 0 : goto next_after_fail1515;
10670 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
10671 : return _r;
10672 : }
10673 67220435 : next_after_fail1515:;
10674 : }
10675 : }
10676 : }
10677 : break;
10678 : default:;
10679 : }
10680 : break;
10681 : default:;
10682 : }
10683 : }
10684 : break;
10685 5 : case CFN_BUILT_IN_LDEXPF:
10686 5 : if (call_expr_nargs (_p0) == 2)
10687 : {
10688 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10689 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10690 5 : switch (TREE_CODE (_p1))
10691 : {
10692 2 : case REAL_CST:
10693 2 : {
10694 2 : {
10695 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10696 2 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10697 2 : if (res) return res;
10698 : }
10699 1 : break;
10700 : }
10701 4 : default:;
10702 : }
10703 4 : switch (TREE_CODE (_q20))
10704 : {
10705 3 : case REAL_CST:
10706 3 : {
10707 3 : {
10708 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10709 3 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10710 3 : if (res) return res;
10711 : }
10712 0 : break;
10713 : }
10714 : default:;
10715 : }
10716 : }
10717 : break;
10718 5 : case CFN_BUILT_IN_LDEXPL:
10719 5 : if (call_expr_nargs (_p0) == 2)
10720 : {
10721 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10722 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10723 5 : switch (TREE_CODE (_p1))
10724 : {
10725 2 : case REAL_CST:
10726 2 : {
10727 2 : {
10728 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10729 2 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10730 2 : if (res) return res;
10731 : }
10732 1 : break;
10733 : }
10734 4 : default:;
10735 : }
10736 4 : switch (TREE_CODE (_q20))
10737 : {
10738 3 : case REAL_CST:
10739 3 : {
10740 3 : {
10741 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10742 3 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10743 3 : if (res) return res;
10744 : }
10745 0 : break;
10746 : }
10747 : default:;
10748 : }
10749 : }
10750 : break;
10751 4 : case CFN_BUILT_IN_SQRTF128:
10752 4 : if (call_expr_nargs (_p0) == 1)
10753 : {
10754 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10755 4 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10756 : {
10757 0 : {
10758 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10759 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128);
10760 0 : if (res) return res;
10761 : }
10762 : }
10763 : }
10764 : break;
10765 0 : case CFN_BUILT_IN_SQRTF32X:
10766 0 : if (call_expr_nargs (_p0) == 1)
10767 : {
10768 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10769 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10770 : {
10771 0 : {
10772 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10773 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32X);
10774 0 : if (res) return res;
10775 : }
10776 : }
10777 : }
10778 : break;
10779 0 : case CFN_BUILT_IN_SQRTF64X:
10780 0 : if (call_expr_nargs (_p0) == 1)
10781 : {
10782 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10783 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10784 : {
10785 0 : {
10786 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10787 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64X);
10788 0 : if (res) return res;
10789 : }
10790 : }
10791 : }
10792 : break;
10793 0 : case CFN_BUILT_IN_SQRTF16:
10794 0 : if (call_expr_nargs (_p0) == 1)
10795 : {
10796 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10797 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10798 : {
10799 0 : {
10800 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10801 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF16);
10802 0 : if (res) return res;
10803 : }
10804 : }
10805 : }
10806 : break;
10807 0 : case CFN_BUILT_IN_SQRTF32:
10808 0 : if (call_expr_nargs (_p0) == 1)
10809 : {
10810 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10811 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10812 : {
10813 0 : {
10814 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10815 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32);
10816 0 : if (res) return res;
10817 : }
10818 : }
10819 : }
10820 : break;
10821 0 : case CFN_BUILT_IN_SQRTF64:
10822 0 : if (call_expr_nargs (_p0) == 1)
10823 : {
10824 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10825 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10826 : {
10827 0 : {
10828 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10829 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64);
10830 0 : if (res) return res;
10831 : }
10832 : }
10833 : }
10834 : break;
10835 0 : case CFN_EXP:
10836 0 : if (call_expr_nargs (_p0) == 1)
10837 : {
10838 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10839 0 : switch (TREE_CODE (_p1))
10840 : {
10841 0 : case CALL_EXPR:
10842 0 : switch (get_call_combined_fn (_p1))
10843 : {
10844 0 : case CFN_EXP:
10845 0 : if (call_expr_nargs (_p1) == 1)
10846 : {
10847 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10848 0 : {
10849 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10850 0 : if (flag_unsafe_math_optimizations
10851 : )
10852 : {
10853 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1516;
10854 0 : {
10855 0 : tree res_op0;
10856 0 : {
10857 0 : tree _o1[2], _r1;
10858 0 : _o1[0] = captures[1];
10859 0 : _o1[1] = captures[3];
10860 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10861 0 : res_op0 = _r1;
10862 : }
10863 0 : tree _r;
10864 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10865 0 : if (!_r)
10866 0 : goto next_after_fail1516;
10867 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
10868 : return _r;
10869 : }
10870 67220435 : next_after_fail1516:;
10871 : }
10872 : }
10873 : }
10874 : break;
10875 0 : case CFN_POW:
10876 0 : if (call_expr_nargs (_p1) == 2)
10877 : {
10878 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10879 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10880 0 : switch (TREE_CODE (_q40))
10881 : {
10882 0 : case REAL_CST:
10883 0 : {
10884 0 : {
10885 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10886 0 : if (flag_unsafe_math_optimizations
10887 : )
10888 : {
10889 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10890 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10891 : )
10892 : {
10893 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1517;
10894 0 : {
10895 0 : tree res_op0;
10896 0 : {
10897 0 : tree _o1[2], _r1;
10898 0 : {
10899 0 : tree _o2[2], _r2;
10900 0 : {
10901 0 : tree _o3[1], _r3;
10902 0 : _o3[0] = captures[1];
10903 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10904 0 : if (!_r3)
10905 0 : goto next_after_fail1517;
10906 0 : _o2[0] = _r3;
10907 : }
10908 0 : _o2[1] = captures[2];
10909 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10910 0 : _o1[0] = _r2;
10911 : }
10912 0 : _o1[1] = captures[4];
10913 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10914 0 : res_op0 = _r1;
10915 : }
10916 0 : tree _r;
10917 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10918 0 : if (!_r)
10919 0 : goto next_after_fail1517;
10920 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10921 : return _r;
10922 : }
10923 67220435 : next_after_fail1517:;
10924 : }
10925 : }
10926 : }
10927 : break;
10928 : }
10929 : default:;
10930 : }
10931 : }
10932 : break;
10933 : default:;
10934 : }
10935 : break;
10936 : default:;
10937 : }
10938 : }
10939 : break;
10940 0 : case CFN_POW:
10941 0 : if (call_expr_nargs (_p0) == 2)
10942 : {
10943 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10944 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10945 0 : switch (TREE_CODE (_q20))
10946 : {
10947 0 : case REAL_CST:
10948 0 : {
10949 0 : switch (TREE_CODE (_p1))
10950 : {
10951 0 : case CALL_EXPR:
10952 0 : switch (get_call_combined_fn (_p1))
10953 : {
10954 0 : case CFN_EXP:
10955 0 : if (call_expr_nargs (_p1) == 1)
10956 : {
10957 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10958 0 : {
10959 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10960 0 : if (flag_unsafe_math_optimizations
10961 : )
10962 : {
10963 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10964 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10965 : )
10966 : {
10967 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1518;
10968 0 : {
10969 0 : tree res_op0;
10970 0 : {
10971 0 : tree _o1[2], _r1;
10972 0 : {
10973 0 : tree _o2[2], _r2;
10974 0 : {
10975 0 : tree _o3[1], _r3;
10976 0 : _o3[0] = captures[1];
10977 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10978 0 : if (!_r3)
10979 0 : goto next_after_fail1518;
10980 0 : _o2[0] = _r3;
10981 : }
10982 0 : _o2[1] = captures[2];
10983 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10984 0 : _o1[0] = _r2;
10985 : }
10986 0 : _o1[1] = captures[4];
10987 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10988 0 : res_op0 = _r1;
10989 : }
10990 0 : tree _r;
10991 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10992 0 : if (!_r)
10993 0 : goto next_after_fail1518;
10994 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
10995 : return _r;
10996 : }
10997 0 : next_after_fail1518:;
10998 : }
10999 : }
11000 : }
11001 : }
11002 : break;
11003 0 : case CFN_EXP2:
11004 0 : if (call_expr_nargs (_p1) == 1)
11005 : {
11006 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
11007 0 : {
11008 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
11009 0 : if (flag_unsafe_math_optimizations
11010 : )
11011 : {
11012 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11013 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11014 : )
11015 : {
11016 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1519;
11017 0 : {
11018 0 : tree res_op0;
11019 0 : {
11020 0 : tree _o1[2], _r1;
11021 0 : {
11022 0 : tree _o2[2], _r2;
11023 0 : {
11024 0 : tree _o3[1], _r3;
11025 0 : _o3[0] = captures[1];
11026 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
11027 0 : if (!_r3)
11028 0 : goto next_after_fail1519;
11029 0 : _o2[0] = _r3;
11030 : }
11031 0 : _o2[1] = captures[2];
11032 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11033 0 : _o1[0] = _r2;
11034 : }
11035 0 : _o1[1] = captures[4];
11036 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11037 0 : res_op0 = _r1;
11038 : }
11039 0 : tree _r;
11040 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11041 0 : if (!_r)
11042 0 : goto next_after_fail1519;
11043 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11044 : return _r;
11045 : }
11046 0 : next_after_fail1519:;
11047 : }
11048 : }
11049 : }
11050 : }
11051 : break;
11052 0 : case CFN_EXP10:
11053 0 : if (call_expr_nargs (_p1) == 1)
11054 : {
11055 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
11056 0 : {
11057 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
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_fail1520;
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_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11076 0 : if (!_r3)
11077 0 : goto next_after_fail1520;
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_EXP10, type, 1, res_op0);
11090 0 : if (!_r)
11091 0 : goto next_after_fail1520;
11092 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11093 : return _r;
11094 : }
11095 0 : next_after_fail1520:;
11096 : }
11097 : }
11098 : }
11099 : }
11100 : break;
11101 : default:;
11102 : }
11103 : break;
11104 : default:;
11105 : }
11106 : break;
11107 : }
11108 0 : default:;
11109 : }
11110 0 : switch (TREE_CODE (_q21))
11111 : {
11112 0 : case REAL_CST:
11113 0 : {
11114 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
11115 : {
11116 0 : {
11117 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
11118 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_POW);
11119 0 : if (res) return res;
11120 : }
11121 : }
11122 : break;
11123 : }
11124 : default:;
11125 : }
11126 : }
11127 : break;
11128 24 : case CFN_BUILT_IN_POW10F:
11129 24 : if (call_expr_nargs (_p0) == 1)
11130 : {
11131 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11132 24 : switch (TREE_CODE (_p1))
11133 : {
11134 12 : case CALL_EXPR:
11135 12 : switch (get_call_combined_fn (_p1))
11136 : {
11137 0 : case CFN_BUILT_IN_POWF:
11138 0 : if (call_expr_nargs (_p1) == 2)
11139 : {
11140 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11141 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11142 0 : switch (TREE_CODE (_q40))
11143 : {
11144 0 : case REAL_CST:
11145 0 : {
11146 0 : {
11147 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11148 0 : if (flag_unsafe_math_optimizations
11149 : )
11150 : {
11151 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11152 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11153 : )
11154 : {
11155 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1521;
11156 0 : {
11157 0 : tree res_op0;
11158 0 : {
11159 0 : tree _o1[2], _r1;
11160 0 : {
11161 0 : tree _o2[2], _r2;
11162 0 : {
11163 0 : tree _o3[1], _r3;
11164 0 : _o3[0] = captures[1];
11165 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
11166 0 : if (!_r3)
11167 0 : goto next_after_fail1521;
11168 0 : _o2[0] = _r3;
11169 : }
11170 0 : _o2[1] = captures[2];
11171 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11172 0 : _o1[0] = _r2;
11173 : }
11174 0 : _o1[1] = captures[4];
11175 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11176 0 : res_op0 = _r1;
11177 : }
11178 0 : tree _r;
11179 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
11180 0 : if (!_r)
11181 0 : goto next_after_fail1521;
11182 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11183 : return _r;
11184 : }
11185 67220435 : next_after_fail1521:;
11186 : }
11187 : }
11188 : }
11189 : break;
11190 : }
11191 : default:;
11192 : }
11193 : }
11194 : break;
11195 12 : case CFN_BUILT_IN_POW10F:
11196 12 : if (call_expr_nargs (_p1) == 1)
11197 : {
11198 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11199 12 : {
11200 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11201 12 : if (flag_unsafe_math_optimizations
11202 : )
11203 : {
11204 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1522;
11205 12 : {
11206 12 : tree res_op0;
11207 12 : {
11208 12 : tree _o1[2], _r1;
11209 12 : _o1[0] = captures[1];
11210 12 : _o1[1] = captures[3];
11211 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11212 12 : res_op0 = _r1;
11213 : }
11214 12 : tree _r;
11215 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
11216 12 : if (!_r)
11217 12 : goto next_after_fail1522;
11218 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
11219 : return _r;
11220 : }
11221 67220435 : next_after_fail1522:;
11222 : }
11223 : }
11224 : }
11225 : break;
11226 : default:;
11227 : }
11228 : break;
11229 : default:;
11230 : }
11231 : }
11232 : break;
11233 24 : case CFN_BUILT_IN_POW10L:
11234 24 : if (call_expr_nargs (_p0) == 1)
11235 : {
11236 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11237 24 : switch (TREE_CODE (_p1))
11238 : {
11239 12 : case CALL_EXPR:
11240 12 : switch (get_call_combined_fn (_p1))
11241 : {
11242 0 : case CFN_BUILT_IN_POWL:
11243 0 : if (call_expr_nargs (_p1) == 2)
11244 : {
11245 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11246 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11247 0 : switch (TREE_CODE (_q40))
11248 : {
11249 0 : case REAL_CST:
11250 0 : {
11251 0 : {
11252 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11253 0 : if (flag_unsafe_math_optimizations
11254 : )
11255 : {
11256 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11257 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11258 : )
11259 : {
11260 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1523;
11261 0 : {
11262 0 : tree res_op0;
11263 0 : {
11264 0 : tree _o1[2], _r1;
11265 0 : {
11266 0 : tree _o2[2], _r2;
11267 0 : {
11268 0 : tree _o3[1], _r3;
11269 0 : _o3[0] = captures[1];
11270 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11271 0 : if (!_r3)
11272 0 : goto next_after_fail1523;
11273 0 : _o2[0] = _r3;
11274 : }
11275 0 : _o2[1] = captures[2];
11276 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11277 0 : _o1[0] = _r2;
11278 : }
11279 0 : _o1[1] = captures[4];
11280 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11281 0 : res_op0 = _r1;
11282 : }
11283 0 : tree _r;
11284 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11285 0 : if (!_r)
11286 0 : goto next_after_fail1523;
11287 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11288 : return _r;
11289 : }
11290 67220435 : next_after_fail1523:;
11291 : }
11292 : }
11293 : }
11294 : break;
11295 : }
11296 : default:;
11297 : }
11298 : }
11299 : break;
11300 12 : case CFN_BUILT_IN_POW10L:
11301 12 : if (call_expr_nargs (_p1) == 1)
11302 : {
11303 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11304 12 : {
11305 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11306 12 : if (flag_unsafe_math_optimizations
11307 : )
11308 : {
11309 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1524;
11310 12 : {
11311 12 : tree res_op0;
11312 12 : {
11313 12 : tree _o1[2], _r1;
11314 12 : _o1[0] = captures[1];
11315 12 : _o1[1] = captures[3];
11316 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11317 12 : res_op0 = _r1;
11318 : }
11319 12 : tree _r;
11320 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11321 12 : if (!_r)
11322 12 : goto next_after_fail1524;
11323 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
11324 : return _r;
11325 : }
11326 67220435 : next_after_fail1524:;
11327 : }
11328 : }
11329 : }
11330 : break;
11331 : default:;
11332 : }
11333 : break;
11334 : default:;
11335 : }
11336 : }
11337 : break;
11338 0 : case CFN_BUILT_IN_SQRTF128X:
11339 0 : if (call_expr_nargs (_p0) == 1)
11340 : {
11341 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11342 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11343 : {
11344 0 : {
11345 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11346 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128X);
11347 0 : if (res) return res;
11348 : }
11349 : }
11350 : }
11351 : break;
11352 0 : case CFN_EXP2:
11353 0 : if (call_expr_nargs (_p0) == 1)
11354 : {
11355 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11356 0 : switch (TREE_CODE (_p1))
11357 : {
11358 0 : case CALL_EXPR:
11359 0 : switch (get_call_combined_fn (_p1))
11360 : {
11361 0 : case CFN_POW:
11362 0 : if (call_expr_nargs (_p1) == 2)
11363 : {
11364 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11365 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11366 0 : switch (TREE_CODE (_q40))
11367 : {
11368 0 : case REAL_CST:
11369 0 : {
11370 0 : {
11371 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11372 0 : if (flag_unsafe_math_optimizations
11373 : )
11374 : {
11375 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11376 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11377 : )
11378 : {
11379 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1525;
11380 0 : {
11381 0 : tree res_op0;
11382 0 : {
11383 0 : tree _o1[2], _r1;
11384 0 : {
11385 0 : tree _o2[2], _r2;
11386 0 : {
11387 0 : tree _o3[1], _r3;
11388 0 : _o3[0] = captures[1];
11389 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
11390 0 : if (!_r3)
11391 0 : goto next_after_fail1525;
11392 0 : _o2[0] = _r3;
11393 : }
11394 0 : _o2[1] = captures[2];
11395 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11396 0 : _o1[0] = _r2;
11397 : }
11398 0 : _o1[1] = captures[4];
11399 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11400 0 : res_op0 = _r1;
11401 : }
11402 0 : tree _r;
11403 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11404 0 : if (!_r)
11405 0 : goto next_after_fail1525;
11406 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11407 : return _r;
11408 : }
11409 67220435 : next_after_fail1525:;
11410 : }
11411 : }
11412 : }
11413 : break;
11414 : }
11415 : default:;
11416 : }
11417 : }
11418 : break;
11419 0 : case CFN_EXP2:
11420 0 : if (call_expr_nargs (_p1) == 1)
11421 : {
11422 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11423 0 : {
11424 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11425 0 : if (flag_unsafe_math_optimizations
11426 : )
11427 : {
11428 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1526;
11429 0 : {
11430 0 : tree res_op0;
11431 0 : {
11432 0 : tree _o1[2], _r1;
11433 0 : _o1[0] = captures[1];
11434 0 : _o1[1] = captures[3];
11435 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11436 0 : res_op0 = _r1;
11437 : }
11438 0 : tree _r;
11439 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11440 0 : if (!_r)
11441 0 : goto next_after_fail1526;
11442 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
11443 : return _r;
11444 : }
11445 67220435 : next_after_fail1526:;
11446 : }
11447 : }
11448 : }
11449 : break;
11450 : default:;
11451 : }
11452 : break;
11453 : default:;
11454 : }
11455 : }
11456 : break;
11457 0 : case CFN_SQRT:
11458 0 : if (call_expr_nargs (_p0) == 1)
11459 : {
11460 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11461 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11462 : {
11463 0 : {
11464 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11465 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, CFN_SQRT);
11466 0 : if (res) return res;
11467 : }
11468 : }
11469 0 : switch (TREE_CODE (_p1))
11470 : {
11471 0 : case CALL_EXPR:
11472 0 : switch (get_call_combined_fn (_p1))
11473 : {
11474 0 : case CFN_SQRT:
11475 0 : if (call_expr_nargs (_p1) == 1)
11476 : {
11477 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11478 0 : {
11479 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11480 0 : if (flag_unsafe_math_optimizations
11481 : )
11482 : {
11483 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1527;
11484 0 : {
11485 0 : tree res_op0;
11486 0 : {
11487 0 : tree _o1[2], _r1;
11488 0 : _o1[0] = captures[1];
11489 0 : _o1[1] = captures[3];
11490 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11491 0 : res_op0 = _r1;
11492 : }
11493 0 : tree _r;
11494 0 : _r = maybe_build_call_expr_loc (loc, CFN_SQRT, type, 1, res_op0);
11495 0 : if (!_r)
11496 0 : goto next_after_fail1527;
11497 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
11498 : return _r;
11499 : }
11500 67220435 : next_after_fail1527:;
11501 : }
11502 : }
11503 : }
11504 : break;
11505 : default:;
11506 : }
11507 : break;
11508 : default:;
11509 : }
11510 : }
11511 : break;
11512 0 : case CFN_EXP10:
11513 0 : if (call_expr_nargs (_p0) == 1)
11514 : {
11515 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11516 0 : switch (TREE_CODE (_p1))
11517 : {
11518 0 : case CALL_EXPR:
11519 0 : switch (get_call_combined_fn (_p1))
11520 : {
11521 0 : case CFN_POW:
11522 0 : if (call_expr_nargs (_p1) == 2)
11523 : {
11524 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11525 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11526 0 : switch (TREE_CODE (_q40))
11527 : {
11528 0 : case REAL_CST:
11529 0 : {
11530 0 : {
11531 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11532 0 : if (flag_unsafe_math_optimizations
11533 : )
11534 : {
11535 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11536 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11537 : )
11538 : {
11539 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1528;
11540 0 : {
11541 0 : tree res_op0;
11542 0 : {
11543 0 : tree _o1[2], _r1;
11544 0 : {
11545 0 : tree _o2[2], _r2;
11546 0 : {
11547 0 : tree _o3[1], _r3;
11548 0 : _o3[0] = captures[1];
11549 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11550 0 : if (!_r3)
11551 0 : goto next_after_fail1528;
11552 0 : _o2[0] = _r3;
11553 : }
11554 0 : _o2[1] = captures[2];
11555 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11556 0 : _o1[0] = _r2;
11557 : }
11558 0 : _o1[1] = captures[4];
11559 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11560 0 : res_op0 = _r1;
11561 : }
11562 0 : tree _r;
11563 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11564 0 : if (!_r)
11565 0 : goto next_after_fail1528;
11566 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11567 : return _r;
11568 : }
11569 67220435 : next_after_fail1528:;
11570 : }
11571 : }
11572 : }
11573 : break;
11574 : }
11575 : default:;
11576 : }
11577 : }
11578 : break;
11579 0 : case CFN_EXP10:
11580 0 : if (call_expr_nargs (_p1) == 1)
11581 : {
11582 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11583 0 : {
11584 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11585 0 : if (flag_unsafe_math_optimizations
11586 : )
11587 : {
11588 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1529;
11589 0 : {
11590 0 : tree res_op0;
11591 0 : {
11592 0 : tree _o1[2], _r1;
11593 0 : _o1[0] = captures[1];
11594 0 : _o1[1] = captures[3];
11595 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11596 0 : res_op0 = _r1;
11597 : }
11598 0 : tree _r;
11599 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11600 0 : if (!_r)
11601 0 : goto next_after_fail1529;
11602 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
11603 : return _r;
11604 : }
11605 67220435 : next_after_fail1529:;
11606 : }
11607 : }
11608 : }
11609 : break;
11610 : default:;
11611 : }
11612 : break;
11613 : default:;
11614 : }
11615 : }
11616 : break;
11617 12 : case CFN_BUILT_IN_CBRTF:
11618 12 : if (call_expr_nargs (_p0) == 1)
11619 : {
11620 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11621 12 : switch (TREE_CODE (_p1))
11622 : {
11623 12 : case CALL_EXPR:
11624 12 : switch (get_call_combined_fn (_p1))
11625 : {
11626 12 : case CFN_BUILT_IN_CBRTF:
11627 12 : if (call_expr_nargs (_p1) == 1)
11628 : {
11629 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11630 12 : {
11631 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11632 12 : if (flag_unsafe_math_optimizations
11633 : )
11634 : {
11635 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1530;
11636 12 : {
11637 12 : tree res_op0;
11638 12 : {
11639 12 : tree _o1[2], _r1;
11640 12 : _o1[0] = captures[1];
11641 12 : _o1[1] = captures[3];
11642 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11643 12 : res_op0 = _r1;
11644 : }
11645 12 : tree _r;
11646 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, type, 1, res_op0);
11647 12 : if (!_r)
11648 0 : goto next_after_fail1530;
11649 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
11650 : return _r;
11651 : }
11652 67220435 : next_after_fail1530:;
11653 : }
11654 : }
11655 : }
11656 : break;
11657 : default:;
11658 : }
11659 : break;
11660 : default:;
11661 : }
11662 : }
11663 : break;
11664 12 : case CFN_BUILT_IN_CBRTL:
11665 12 : if (call_expr_nargs (_p0) == 1)
11666 : {
11667 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11668 12 : switch (TREE_CODE (_p1))
11669 : {
11670 12 : case CALL_EXPR:
11671 12 : switch (get_call_combined_fn (_p1))
11672 : {
11673 12 : case CFN_BUILT_IN_CBRTL:
11674 12 : if (call_expr_nargs (_p1) == 1)
11675 : {
11676 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11677 12 : {
11678 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11679 12 : if (flag_unsafe_math_optimizations
11680 : )
11681 : {
11682 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1531;
11683 12 : {
11684 12 : tree res_op0;
11685 12 : {
11686 12 : tree _o1[2], _r1;
11687 12 : _o1[0] = captures[1];
11688 12 : _o1[1] = captures[3];
11689 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11690 12 : res_op0 = _r1;
11691 : }
11692 12 : tree _r;
11693 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, type, 1, res_op0);
11694 12 : if (!_r)
11695 0 : goto next_after_fail1531;
11696 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
11697 : return _r;
11698 : }
11699 67220435 : next_after_fail1531:;
11700 : }
11701 : }
11702 : }
11703 : break;
11704 : default:;
11705 : }
11706 : break;
11707 : default:;
11708 : }
11709 : }
11710 : break;
11711 0 : case CFN_LDEXP:
11712 0 : if (call_expr_nargs (_p0) == 2)
11713 : {
11714 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11715 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11716 0 : switch (TREE_CODE (_p1))
11717 : {
11718 0 : case REAL_CST:
11719 0 : {
11720 0 : {
11721 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11722 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11723 0 : if (res) return res;
11724 : }
11725 0 : break;
11726 : }
11727 0 : default:;
11728 : }
11729 0 : switch (TREE_CODE (_q20))
11730 : {
11731 0 : case REAL_CST:
11732 0 : {
11733 0 : {
11734 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11735 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11736 0 : if (res) return res;
11737 : }
11738 0 : break;
11739 : }
11740 : default:;
11741 : }
11742 : }
11743 : break;
11744 48 : case CFN_BUILT_IN_EXP10:
11745 48 : if (call_expr_nargs (_p0) == 1)
11746 : {
11747 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11748 48 : switch (TREE_CODE (_p1))
11749 : {
11750 24 : case CALL_EXPR:
11751 24 : switch (get_call_combined_fn (_p1))
11752 : {
11753 0 : case CFN_BUILT_IN_POW:
11754 0 : if (call_expr_nargs (_p1) == 2)
11755 : {
11756 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11757 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11758 0 : switch (TREE_CODE (_q40))
11759 : {
11760 0 : case REAL_CST:
11761 0 : {
11762 0 : {
11763 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11764 0 : if (flag_unsafe_math_optimizations
11765 : )
11766 : {
11767 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11768 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11769 : )
11770 : {
11771 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1532;
11772 0 : {
11773 0 : tree res_op0;
11774 0 : {
11775 0 : tree _o1[2], _r1;
11776 0 : {
11777 0 : tree _o2[2], _r2;
11778 0 : {
11779 0 : tree _o3[1], _r3;
11780 0 : _o3[0] = captures[1];
11781 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11782 0 : if (!_r3)
11783 0 : goto next_after_fail1532;
11784 0 : _o2[0] = _r3;
11785 : }
11786 0 : _o2[1] = captures[2];
11787 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11788 0 : _o1[0] = _r2;
11789 : }
11790 0 : _o1[1] = captures[4];
11791 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11792 0 : res_op0 = _r1;
11793 : }
11794 0 : tree _r;
11795 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11796 0 : if (!_r)
11797 0 : goto next_after_fail1532;
11798 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11799 : return _r;
11800 : }
11801 67220435 : next_after_fail1532:;
11802 : }
11803 : }
11804 : }
11805 : break;
11806 : }
11807 : default:;
11808 : }
11809 : }
11810 : break;
11811 24 : case CFN_BUILT_IN_EXP10:
11812 24 : if (call_expr_nargs (_p1) == 1)
11813 : {
11814 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11815 24 : {
11816 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11817 24 : if (flag_unsafe_math_optimizations
11818 : )
11819 : {
11820 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1533;
11821 24 : {
11822 24 : tree res_op0;
11823 24 : {
11824 24 : tree _o1[2], _r1;
11825 24 : _o1[0] = captures[1];
11826 24 : _o1[1] = captures[3];
11827 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11828 24 : res_op0 = _r1;
11829 : }
11830 24 : tree _r;
11831 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11832 24 : if (!_r)
11833 0 : goto next_after_fail1533;
11834 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
11835 : return _r;
11836 : }
11837 67220435 : next_after_fail1533:;
11838 : }
11839 : }
11840 : }
11841 : break;
11842 : default:;
11843 : }
11844 : break;
11845 : default:;
11846 : }
11847 : }
11848 : break;
11849 48 : case CFN_BUILT_IN_EXP2F:
11850 48 : if (call_expr_nargs (_p0) == 1)
11851 : {
11852 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11853 48 : switch (TREE_CODE (_p1))
11854 : {
11855 24 : case CALL_EXPR:
11856 24 : switch (get_call_combined_fn (_p1))
11857 : {
11858 0 : case CFN_BUILT_IN_POWF:
11859 0 : if (call_expr_nargs (_p1) == 2)
11860 : {
11861 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11862 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11863 0 : switch (TREE_CODE (_q40))
11864 : {
11865 0 : case REAL_CST:
11866 0 : {
11867 0 : {
11868 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11869 0 : if (flag_unsafe_math_optimizations
11870 : )
11871 : {
11872 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11873 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11874 : )
11875 : {
11876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1534;
11877 0 : {
11878 0 : tree res_op0;
11879 0 : {
11880 0 : tree _o1[2], _r1;
11881 0 : {
11882 0 : tree _o2[2], _r2;
11883 0 : {
11884 0 : tree _o3[1], _r3;
11885 0 : _o3[0] = captures[1];
11886 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
11887 0 : if (!_r3)
11888 0 : goto next_after_fail1534;
11889 0 : _o2[0] = _r3;
11890 : }
11891 0 : _o2[1] = captures[2];
11892 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11893 0 : _o1[0] = _r2;
11894 : }
11895 0 : _o1[1] = captures[4];
11896 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11897 0 : res_op0 = _r1;
11898 : }
11899 0 : tree _r;
11900 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11901 0 : if (!_r)
11902 0 : goto next_after_fail1534;
11903 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
11904 : return _r;
11905 : }
11906 67220435 : next_after_fail1534:;
11907 : }
11908 : }
11909 : }
11910 : break;
11911 : }
11912 : default:;
11913 : }
11914 : }
11915 : break;
11916 24 : case CFN_BUILT_IN_EXP2F:
11917 24 : if (call_expr_nargs (_p1) == 1)
11918 : {
11919 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11920 24 : {
11921 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11922 24 : if (flag_unsafe_math_optimizations
11923 : )
11924 : {
11925 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1535;
11926 24 : {
11927 24 : tree res_op0;
11928 24 : {
11929 24 : tree _o1[2], _r1;
11930 24 : _o1[0] = captures[1];
11931 24 : _o1[1] = captures[3];
11932 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11933 24 : res_op0 = _r1;
11934 : }
11935 24 : tree _r;
11936 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11937 24 : if (!_r)
11938 0 : goto next_after_fail1535;
11939 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
11940 : return _r;
11941 : }
11942 67220435 : next_after_fail1535:;
11943 : }
11944 : }
11945 : }
11946 : break;
11947 : default:;
11948 : }
11949 : break;
11950 : default:;
11951 : }
11952 : }
11953 : break;
11954 48 : case CFN_BUILT_IN_EXP2L:
11955 48 : if (call_expr_nargs (_p0) == 1)
11956 : {
11957 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11958 48 : switch (TREE_CODE (_p1))
11959 : {
11960 24 : case CALL_EXPR:
11961 24 : switch (get_call_combined_fn (_p1))
11962 : {
11963 0 : case CFN_BUILT_IN_POWL:
11964 0 : if (call_expr_nargs (_p1) == 2)
11965 : {
11966 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11967 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11968 0 : switch (TREE_CODE (_q40))
11969 : {
11970 0 : case REAL_CST:
11971 0 : {
11972 0 : {
11973 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11974 0 : if (flag_unsafe_math_optimizations
11975 : )
11976 : {
11977 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11978 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11979 : )
11980 : {
11981 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1536;
11982 0 : {
11983 0 : tree res_op0;
11984 0 : {
11985 0 : tree _o1[2], _r1;
11986 0 : {
11987 0 : tree _o2[2], _r2;
11988 0 : {
11989 0 : tree _o3[1], _r3;
11990 0 : _o3[0] = captures[1];
11991 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11992 0 : if (!_r3)
11993 0 : goto next_after_fail1536;
11994 0 : _o2[0] = _r3;
11995 : }
11996 0 : _o2[1] = captures[2];
11997 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11998 0 : _o1[0] = _r2;
11999 : }
12000 0 : _o1[1] = captures[4];
12001 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12002 0 : res_op0 = _r1;
12003 : }
12004 0 : tree _r;
12005 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
12006 0 : if (!_r)
12007 0 : goto next_after_fail1536;
12008 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
12009 : return _r;
12010 : }
12011 67220435 : next_after_fail1536:;
12012 : }
12013 : }
12014 : }
12015 : break;
12016 : }
12017 : default:;
12018 : }
12019 : }
12020 : break;
12021 24 : case CFN_BUILT_IN_EXP2L:
12022 24 : if (call_expr_nargs (_p1) == 1)
12023 : {
12024 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12025 24 : {
12026 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
12027 24 : if (flag_unsafe_math_optimizations
12028 : )
12029 : {
12030 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1537;
12031 24 : {
12032 24 : tree res_op0;
12033 24 : {
12034 24 : tree _o1[2], _r1;
12035 24 : _o1[0] = captures[1];
12036 24 : _o1[1] = captures[3];
12037 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12038 24 : res_op0 = _r1;
12039 : }
12040 24 : tree _r;
12041 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
12042 24 : if (!_r)
12043 0 : goto next_after_fail1537;
12044 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
12045 : return _r;
12046 : }
12047 67220435 : next_after_fail1537:;
12048 : }
12049 : }
12050 : }
12051 : break;
12052 : default:;
12053 : }
12054 : break;
12055 : default:;
12056 : }
12057 : }
12058 : break;
12059 5 : case CFN_BUILT_IN_LDEXP:
12060 5 : if (call_expr_nargs (_p0) == 2)
12061 : {
12062 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12063 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12064 5 : switch (TREE_CODE (_p1))
12065 : {
12066 2 : case REAL_CST:
12067 2 : {
12068 2 : {
12069 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
12070 2 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
12071 2 : if (res) return res;
12072 : }
12073 1 : break;
12074 : }
12075 4 : default:;
12076 : }
12077 4 : switch (TREE_CODE (_q20))
12078 : {
12079 3 : case REAL_CST:
12080 3 : {
12081 3 : {
12082 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
12083 3 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
12084 3 : if (res) return res;
12085 : }
12086 0 : break;
12087 : }
12088 : default:;
12089 : }
12090 : }
12091 : break;
12092 24 : case CFN_BUILT_IN_POW10:
12093 24 : if (call_expr_nargs (_p0) == 1)
12094 : {
12095 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12096 24 : switch (TREE_CODE (_p1))
12097 : {
12098 12 : case CALL_EXPR:
12099 12 : switch (get_call_combined_fn (_p1))
12100 : {
12101 0 : case CFN_BUILT_IN_POW:
12102 0 : if (call_expr_nargs (_p1) == 2)
12103 : {
12104 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12105 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
12106 0 : switch (TREE_CODE (_q40))
12107 : {
12108 0 : case REAL_CST:
12109 0 : {
12110 0 : {
12111 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
12112 0 : if (flag_unsafe_math_optimizations
12113 : )
12114 : {
12115 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
12116 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
12117 : )
12118 : {
12119 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1538;
12120 0 : {
12121 0 : tree res_op0;
12122 0 : {
12123 0 : tree _o1[2], _r1;
12124 0 : {
12125 0 : tree _o2[2], _r2;
12126 0 : {
12127 0 : tree _o3[1], _r3;
12128 0 : _o3[0] = captures[1];
12129 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
12130 0 : if (!_r3)
12131 0 : goto next_after_fail1538;
12132 0 : _o2[0] = _r3;
12133 : }
12134 0 : _o2[1] = captures[2];
12135 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
12136 0 : _o1[0] = _r2;
12137 : }
12138 0 : _o1[1] = captures[4];
12139 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12140 0 : res_op0 = _r1;
12141 : }
12142 0 : tree _r;
12143 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
12144 0 : if (!_r)
12145 0 : goto next_after_fail1538;
12146 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
12147 : return _r;
12148 : }
12149 67220435 : next_after_fail1538:;
12150 : }
12151 : }
12152 : }
12153 : break;
12154 : }
12155 : default:;
12156 : }
12157 : }
12158 : break;
12159 12 : case CFN_BUILT_IN_POW10:
12160 12 : if (call_expr_nargs (_p1) == 1)
12161 : {
12162 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12163 12 : {
12164 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
12165 12 : if (flag_unsafe_math_optimizations
12166 : )
12167 : {
12168 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1539;
12169 12 : {
12170 12 : tree res_op0;
12171 12 : {
12172 12 : tree _o1[2], _r1;
12173 12 : _o1[0] = captures[1];
12174 12 : _o1[1] = captures[3];
12175 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12176 12 : res_op0 = _r1;
12177 : }
12178 12 : tree _r;
12179 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
12180 12 : if (!_r)
12181 12 : goto next_after_fail1539;
12182 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
12183 : return _r;
12184 : }
12185 67220435 : next_after_fail1539:;
12186 : }
12187 : }
12188 : }
12189 : break;
12190 : default:;
12191 : }
12192 : break;
12193 : default:;
12194 : }
12195 : }
12196 : break;
12197 : default:;
12198 : }
12199 : break;
12200 67220435 : default:;
12201 : }
12202 67220435 : switch (TREE_CODE (_p1))
12203 : {
12204 901243 : case CALL_EXPR:
12205 901243 : switch (get_call_combined_fn (_p1))
12206 : {
12207 0 : case CFN_BUILT_IN_LDEXPF:
12208 0 : if (call_expr_nargs (_p1) == 2)
12209 : {
12210 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12211 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12212 0 : switch (TREE_CODE (_q30))
12213 : {
12214 0 : case REAL_CST:
12215 0 : {
12216 0 : {
12217 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12218 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
12219 0 : if (res) return res;
12220 : }
12221 0 : break;
12222 : }
12223 : default:;
12224 : }
12225 : }
12226 : break;
12227 0 : case CFN_BUILT_IN_LDEXPL:
12228 0 : if (call_expr_nargs (_p1) == 2)
12229 : {
12230 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12231 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12232 0 : switch (TREE_CODE (_q30))
12233 : {
12234 0 : case REAL_CST:
12235 0 : {
12236 0 : {
12237 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12238 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
12239 0 : if (res) return res;
12240 : }
12241 0 : break;
12242 : }
12243 : default:;
12244 : }
12245 : }
12246 : break;
12247 0 : case CFN_LDEXP:
12248 0 : if (call_expr_nargs (_p1) == 2)
12249 : {
12250 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12251 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12252 0 : switch (TREE_CODE (_q30))
12253 : {
12254 0 : case REAL_CST:
12255 0 : {
12256 0 : {
12257 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12258 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_LDEXP);
12259 0 : if (res) return res;
12260 : }
12261 0 : break;
12262 : }
12263 : default:;
12264 : }
12265 : }
12266 : break;
12267 0 : case CFN_BUILT_IN_LDEXP:
12268 0 : if (call_expr_nargs (_p1) == 2)
12269 : {
12270 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12271 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12272 0 : switch (TREE_CODE (_q30))
12273 : {
12274 0 : case REAL_CST:
12275 0 : {
12276 0 : {
12277 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12278 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
12279 0 : if (res) return res;
12280 : }
12281 0 : break;
12282 : }
12283 : default:;
12284 : }
12285 : }
12286 : break;
12287 : default:;
12288 : }
12289 : break;
12290 67220435 : default:;
12291 : }
12292 67220435 : switch (TREE_CODE (_p0))
12293 : {
12294 2530983 : case CALL_EXPR:
12295 2530983 : switch (get_call_combined_fn (_p0))
12296 : {
12297 29 : case CFN_BUILT_IN_COS:
12298 29 : if (call_expr_nargs (_p0) == 1)
12299 : {
12300 29 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12301 29 : switch (TREE_CODE (_p1))
12302 : {
12303 4 : case CALL_EXPR:
12304 4 : switch (get_call_combined_fn (_p1))
12305 : {
12306 2 : case CFN_BUILT_IN_TAN:
12307 2 : if (call_expr_nargs (_p1) == 1)
12308 : {
12309 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12310 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12311 : {
12312 2 : {
12313 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12314 2 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12315 2 : if (res) return res;
12316 : }
12317 : }
12318 : }
12319 : break;
12320 : default:;
12321 : }
12322 : break;
12323 : default:;
12324 : }
12325 : }
12326 : break;
12327 2 : case CFN_BUILT_IN_TAN:
12328 2 : if (call_expr_nargs (_p0) == 1)
12329 : {
12330 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12331 2 : switch (TREE_CODE (_p1))
12332 : {
12333 2 : case CALL_EXPR:
12334 2 : switch (get_call_combined_fn (_p1))
12335 : {
12336 2 : case CFN_BUILT_IN_COS:
12337 2 : if (call_expr_nargs (_p1) == 1)
12338 : {
12339 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12340 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12341 : {
12342 2 : {
12343 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12344 2 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12345 2 : if (res) return res;
12346 : }
12347 : }
12348 : }
12349 : break;
12350 : default:;
12351 : }
12352 : break;
12353 : default:;
12354 : }
12355 : }
12356 : break;
12357 18 : case CFN_BUILT_IN_COSF:
12358 18 : if (call_expr_nargs (_p0) == 1)
12359 : {
12360 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12361 18 : switch (TREE_CODE (_p1))
12362 : {
12363 9 : case CALL_EXPR:
12364 9 : switch (get_call_combined_fn (_p1))
12365 : {
12366 2 : case CFN_BUILT_IN_TANF:
12367 2 : if (call_expr_nargs (_p1) == 1)
12368 : {
12369 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12370 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12371 : {
12372 2 : {
12373 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12374 2 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12375 2 : if (res) return res;
12376 : }
12377 : }
12378 : }
12379 : break;
12380 : default:;
12381 : }
12382 : break;
12383 : default:;
12384 : }
12385 : }
12386 : break;
12387 2 : case CFN_BUILT_IN_COSL:
12388 2 : if (call_expr_nargs (_p0) == 1)
12389 : {
12390 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12391 2 : switch (TREE_CODE (_p1))
12392 : {
12393 2 : case CALL_EXPR:
12394 2 : switch (get_call_combined_fn (_p1))
12395 : {
12396 2 : case CFN_BUILT_IN_TANL:
12397 2 : if (call_expr_nargs (_p1) == 1)
12398 : {
12399 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12400 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12401 : {
12402 2 : {
12403 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12404 2 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12405 2 : if (res) return res;
12406 : }
12407 : }
12408 : }
12409 : break;
12410 : default:;
12411 : }
12412 : break;
12413 : default:;
12414 : }
12415 : }
12416 : break;
12417 2 : case CFN_BUILT_IN_TANF:
12418 2 : if (call_expr_nargs (_p0) == 1)
12419 : {
12420 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12421 2 : switch (TREE_CODE (_p1))
12422 : {
12423 2 : case CALL_EXPR:
12424 2 : switch (get_call_combined_fn (_p1))
12425 : {
12426 2 : case CFN_BUILT_IN_COSF:
12427 2 : if (call_expr_nargs (_p1) == 1)
12428 : {
12429 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12430 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12431 : {
12432 2 : {
12433 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12434 2 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12435 2 : if (res) return res;
12436 : }
12437 : }
12438 : }
12439 : break;
12440 : default:;
12441 : }
12442 : break;
12443 : default:;
12444 : }
12445 : }
12446 : break;
12447 2 : case CFN_BUILT_IN_TANL:
12448 2 : if (call_expr_nargs (_p0) == 1)
12449 : {
12450 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12451 2 : switch (TREE_CODE (_p1))
12452 : {
12453 2 : case CALL_EXPR:
12454 2 : switch (get_call_combined_fn (_p1))
12455 : {
12456 2 : case CFN_BUILT_IN_COSL:
12457 2 : if (call_expr_nargs (_p1) == 1)
12458 : {
12459 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12460 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12461 : {
12462 2 : {
12463 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12464 2 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12465 2 : if (res) return res;
12466 : }
12467 : }
12468 : }
12469 : break;
12470 : default:;
12471 : }
12472 : break;
12473 : default:;
12474 : }
12475 : }
12476 : break;
12477 0 : case CFN_COS:
12478 0 : if (call_expr_nargs (_p0) == 1)
12479 : {
12480 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12481 0 : switch (TREE_CODE (_p1))
12482 : {
12483 0 : case CALL_EXPR:
12484 0 : switch (get_call_combined_fn (_p1))
12485 : {
12486 0 : case CFN_TAN:
12487 0 : if (call_expr_nargs (_p1) == 1)
12488 : {
12489 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12490 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12491 : {
12492 0 : {
12493 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12494 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12495 0 : if (res) return res;
12496 : }
12497 : }
12498 : }
12499 : break;
12500 : default:;
12501 : }
12502 : break;
12503 : default:;
12504 : }
12505 : }
12506 : break;
12507 0 : case CFN_TAN:
12508 0 : if (call_expr_nargs (_p0) == 1)
12509 : {
12510 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12511 0 : switch (TREE_CODE (_p1))
12512 : {
12513 0 : case CALL_EXPR:
12514 0 : switch (get_call_combined_fn (_p1))
12515 : {
12516 0 : case CFN_COS:
12517 0 : if (call_expr_nargs (_p1) == 1)
12518 : {
12519 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12520 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12521 : {
12522 0 : {
12523 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12524 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12525 0 : if (res) return res;
12526 : }
12527 : }
12528 : }
12529 : break;
12530 : default:;
12531 : }
12532 : break;
12533 : default:;
12534 : }
12535 : }
12536 : break;
12537 : default:;
12538 : }
12539 : break;
12540 67220423 : default:;
12541 : }
12542 67220423 : switch (TREE_CODE (_p1))
12543 : {
12544 901231 : case CALL_EXPR:
12545 901231 : switch (get_call_combined_fn (_p1))
12546 : {
12547 60 : case CFN_BUILT_IN_POW:
12548 60 : if (call_expr_nargs (_p1) == 2)
12549 : {
12550 60 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12551 60 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12552 60 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12553 : {
12554 0 : switch (TREE_CODE (_q31))
12555 : {
12556 0 : case REAL_CST:
12557 0 : {
12558 0 : {
12559 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12560 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12561 0 : if (res) return res;
12562 : }
12563 0 : break;
12564 : }
12565 : default:;
12566 : }
12567 : }
12568 : }
12569 : break;
12570 23 : case CFN_BUILT_IN_POWF:
12571 23 : if (call_expr_nargs (_p1) == 2)
12572 : {
12573 23 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12574 23 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12575 23 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12576 : {
12577 0 : switch (TREE_CODE (_q31))
12578 : {
12579 0 : case REAL_CST:
12580 0 : {
12581 0 : {
12582 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12583 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12584 0 : if (res) return res;
12585 : }
12586 0 : break;
12587 : }
12588 : default:;
12589 : }
12590 : }
12591 : }
12592 : break;
12593 12 : case CFN_BUILT_IN_POWL:
12594 12 : if (call_expr_nargs (_p1) == 2)
12595 : {
12596 12 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12597 12 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12598 12 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12599 : {
12600 0 : switch (TREE_CODE (_q31))
12601 : {
12602 0 : case REAL_CST:
12603 0 : {
12604 0 : {
12605 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12606 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12607 0 : if (res) return res;
12608 : }
12609 0 : break;
12610 : }
12611 : default:;
12612 : }
12613 : }
12614 : }
12615 : break;
12616 0 : case CFN_POW:
12617 0 : if (call_expr_nargs (_p1) == 2)
12618 : {
12619 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12620 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12621 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12622 : {
12623 0 : switch (TREE_CODE (_q31))
12624 : {
12625 0 : case REAL_CST:
12626 0 : {
12627 0 : {
12628 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12629 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, CFN_POW);
12630 0 : if (res) return res;
12631 : }
12632 0 : break;
12633 : }
12634 : default:;
12635 : }
12636 : }
12637 : }
12638 : break;
12639 : default:;
12640 : }
12641 : break;
12642 67220423 : default:;
12643 : }
12644 67220423 : switch (TREE_CODE (_p0))
12645 : {
12646 1 : case VEC_PERM_EXPR:
12647 1 : {
12648 1 : tree _q20 = TREE_OPERAND (_p0, 0);
12649 1 : tree _q21 = TREE_OPERAND (_p0, 1);
12650 1 : tree _q22 = TREE_OPERAND (_p0, 2);
12651 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
12652 : {
12653 1 : switch (TREE_CODE (_p1))
12654 : {
12655 0 : case VEC_PERM_EXPR:
12656 0 : {
12657 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12658 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12659 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12660 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12661 : {
12662 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12663 : {
12664 0 : {
12665 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12666 0 : if (VECTOR_INTEGER_TYPE_P (type)
12667 : )
12668 : {
12669 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1540;
12670 0 : {
12671 0 : tree res_op0;
12672 0 : {
12673 0 : tree _o1[2], _r1;
12674 0 : _o1[0] = captures[0];
12675 0 : _o1[1] = captures[2];
12676 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12677 0 : captures[3] = _r1;
12678 : }
12679 0 : res_op0 = unshare_expr (captures[3]);
12680 0 : tree res_op1;
12681 0 : res_op1 = captures[3];
12682 0 : tree res_op2;
12683 0 : res_op2 = captures[1];
12684 0 : tree _r;
12685 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12686 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 942, __FILE__, __LINE__, true);
12687 72733665 : return _r;
12688 : }
12689 0 : next_after_fail1540:;
12690 : }
12691 : }
12692 : }
12693 : }
12694 : break;
12695 : }
12696 1 : default:;
12697 : }
12698 1 : switch (TREE_CODE (_q22))
12699 : {
12700 0 : case VECTOR_CST:
12701 0 : {
12702 0 : switch (TREE_CODE (_p1))
12703 : {
12704 0 : case VEC_PERM_EXPR:
12705 0 : {
12706 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12707 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12708 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12709 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12710 : {
12711 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12712 : {
12713 0 : switch (TREE_CODE (_q62))
12714 : {
12715 0 : case VECTOR_CST:
12716 0 : {
12717 0 : {
12718 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12719 0 : tree res = generic_simplify_90 (loc, type, _p0, _p1, captures, MULT_EXPR);
12720 0 : if (res) return res;
12721 : }
12722 0 : break;
12723 : }
12724 : default:;
12725 : }
12726 : }
12727 : }
12728 : break;
12729 : }
12730 : default:;
12731 : }
12732 : break;
12733 : }
12734 : default:;
12735 : }
12736 : }
12737 : break;
12738 : }
12739 2530971 : case CALL_EXPR:
12740 2530971 : switch (get_call_combined_fn (_p0))
12741 : {
12742 115 : case CFN_BUILT_IN_POW:
12743 115 : if (call_expr_nargs (_p0) == 2)
12744 : {
12745 115 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12746 115 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12747 115 : switch (TREE_CODE (_p1))
12748 : {
12749 80 : case CALL_EXPR:
12750 80 : switch (get_call_combined_fn (_p1))
12751 : {
12752 20 : case CFN_BUILT_IN_POW:
12753 20 : if (call_expr_nargs (_p1) == 2)
12754 : {
12755 20 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12756 20 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12757 20 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12758 : {
12759 14 : {
12760 14 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12761 14 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12762 14 : if (res) return res;
12763 : }
12764 : }
12765 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12766 : {
12767 2 : {
12768 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12769 2 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12770 2 : if (res) return res;
12771 : }
12772 : }
12773 : }
12774 : break;
12775 : default:;
12776 : }
12777 : break;
12778 : default:;
12779 : }
12780 : }
12781 : break;
12782 19 : case CFN_BUILT_IN_POWF:
12783 19 : if (call_expr_nargs (_p0) == 2)
12784 : {
12785 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12786 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12787 19 : switch (TREE_CODE (_p1))
12788 : {
12789 13 : case CALL_EXPR:
12790 13 : switch (get_call_combined_fn (_p1))
12791 : {
12792 13 : case CFN_BUILT_IN_POWF:
12793 13 : if (call_expr_nargs (_p1) == 2)
12794 : {
12795 13 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12796 13 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12797 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12798 : {
12799 12 : {
12800 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12801 12 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12802 12 : if (res) return res;
12803 : }
12804 : }
12805 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12806 : {
12807 0 : {
12808 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12809 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12810 0 : if (res) return res;
12811 : }
12812 : }
12813 : }
12814 : break;
12815 : default:;
12816 : }
12817 : break;
12818 : default:;
12819 : }
12820 : }
12821 : break;
12822 26 : case CFN_BUILT_IN_POWI:
12823 26 : if (call_expr_nargs (_p0) == 2)
12824 : {
12825 26 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12826 26 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12827 26 : switch (TREE_CODE (_p1))
12828 : {
12829 0 : case CALL_EXPR:
12830 0 : switch (get_call_combined_fn (_p1))
12831 : {
12832 0 : case CFN_BUILT_IN_POWI:
12833 0 : if (call_expr_nargs (_p1) == 2)
12834 : {
12835 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12836 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12837 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12838 : {
12839 0 : {
12840 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12841 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12842 : )
12843 : {
12844 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1541;
12845 0 : {
12846 0 : tree res_op0;
12847 0 : {
12848 0 : tree _o1[2], _r1;
12849 0 : _o1[0] = captures[1];
12850 0 : _o1[1] = captures[4];
12851 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12852 0 : res_op0 = _r1;
12853 : }
12854 0 : tree res_op1;
12855 0 : res_op1 = captures[2];
12856 0 : tree _r;
12857 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWI, type, 2, res_op0, res_op1);
12858 0 : if (!_r)
12859 0 : goto next_after_fail1541;
12860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1023, __FILE__, __LINE__, true);
12861 : return _r;
12862 : }
12863 72733665 : next_after_fail1541:;
12864 : }
12865 : }
12866 : }
12867 : }
12868 : break;
12869 : default:;
12870 : }
12871 : break;
12872 : default:;
12873 : }
12874 : }
12875 : break;
12876 12 : case CFN_BUILT_IN_POWL:
12877 12 : if (call_expr_nargs (_p0) == 2)
12878 : {
12879 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12880 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12881 12 : switch (TREE_CODE (_p1))
12882 : {
12883 12 : case CALL_EXPR:
12884 12 : switch (get_call_combined_fn (_p1))
12885 : {
12886 12 : case CFN_BUILT_IN_POWL:
12887 12 : if (call_expr_nargs (_p1) == 2)
12888 : {
12889 12 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12890 12 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12891 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12892 : {
12893 12 : {
12894 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12895 12 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12896 12 : if (res) return res;
12897 : }
12898 : }
12899 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12900 : {
12901 0 : {
12902 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12903 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12904 0 : if (res) return res;
12905 : }
12906 : }
12907 : }
12908 : break;
12909 : default:;
12910 : }
12911 : break;
12912 : default:;
12913 : }
12914 : }
12915 : break;
12916 0 : case CFN_POW:
12917 0 : if (call_expr_nargs (_p0) == 2)
12918 : {
12919 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12920 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12921 0 : switch (TREE_CODE (_p1))
12922 : {
12923 0 : case CALL_EXPR:
12924 0 : switch (get_call_combined_fn (_p1))
12925 : {
12926 0 : case CFN_POW:
12927 0 : if (call_expr_nargs (_p1) == 2)
12928 : {
12929 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12930 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12931 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12932 : {
12933 0 : {
12934 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12935 0 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, CFN_POW);
12936 0 : if (res) return res;
12937 : }
12938 : }
12939 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12940 : {
12941 0 : {
12942 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12943 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, CFN_POW);
12944 0 : if (res) return res;
12945 : }
12946 : }
12947 : }
12948 : break;
12949 : default:;
12950 : }
12951 : break;
12952 : default:;
12953 : }
12954 : }
12955 : break;
12956 14 : case CFN_BUILT_IN_POWIF:
12957 14 : if (call_expr_nargs (_p0) == 2)
12958 : {
12959 14 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12960 14 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12961 14 : switch (TREE_CODE (_p1))
12962 : {
12963 0 : case CALL_EXPR:
12964 0 : switch (get_call_combined_fn (_p1))
12965 : {
12966 0 : case CFN_BUILT_IN_POWIF:
12967 0 : if (call_expr_nargs (_p1) == 2)
12968 : {
12969 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12970 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12971 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12972 : {
12973 0 : {
12974 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12975 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12976 : )
12977 : {
12978 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1542;
12979 0 : {
12980 0 : tree res_op0;
12981 0 : {
12982 0 : tree _o1[2], _r1;
12983 0 : _o1[0] = captures[1];
12984 0 : _o1[1] = captures[4];
12985 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12986 0 : res_op0 = _r1;
12987 : }
12988 0 : tree res_op1;
12989 0 : res_op1 = captures[2];
12990 0 : tree _r;
12991 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIF, type, 2, res_op0, res_op1);
12992 0 : if (!_r)
12993 0 : goto next_after_fail1542;
12994 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1023, __FILE__, __LINE__, true);
12995 : return _r;
12996 : }
12997 72733665 : next_after_fail1542:;
12998 : }
12999 : }
13000 : }
13001 : }
13002 : break;
13003 : default:;
13004 : }
13005 : break;
13006 : default:;
13007 : }
13008 : }
13009 : break;
13010 5 : case CFN_BUILT_IN_POWIL:
13011 5 : if (call_expr_nargs (_p0) == 2)
13012 : {
13013 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
13014 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
13015 5 : switch (TREE_CODE (_p1))
13016 : {
13017 0 : case CALL_EXPR:
13018 0 : switch (get_call_combined_fn (_p1))
13019 : {
13020 0 : case CFN_BUILT_IN_POWIL:
13021 0 : if (call_expr_nargs (_p1) == 2)
13022 : {
13023 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
13024 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
13025 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13026 : {
13027 0 : {
13028 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
13029 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
13030 : )
13031 : {
13032 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1543;
13033 0 : {
13034 0 : tree res_op0;
13035 0 : {
13036 0 : tree _o1[2], _r1;
13037 0 : _o1[0] = captures[1];
13038 0 : _o1[1] = captures[4];
13039 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
13040 0 : res_op0 = _r1;
13041 : }
13042 0 : tree res_op1;
13043 0 : res_op1 = captures[2];
13044 0 : tree _r;
13045 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIL, type, 2, res_op0, res_op1);
13046 0 : if (!_r)
13047 0 : goto next_after_fail1543;
13048 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1023, __FILE__, __LINE__, true);
13049 : return _r;
13050 : }
13051 72733665 : next_after_fail1543:;
13052 : }
13053 : }
13054 : }
13055 : }
13056 : break;
13057 : default:;
13058 : }
13059 : break;
13060 : default:;
13061 : }
13062 : }
13063 : break;
13064 : default:;
13065 : }
13066 : break;
13067 : default:;
13068 : }
13069 : return NULL_TREE;
13070 : }
13071 : #pragma GCC diagnostic pop
|