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 101360726 : tree_logical_inverted_value (tree t, tree *res_ops)
11 : {
12 101360726 : const tree type = TREE_TYPE (t);
13 101360726 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 101360726 : if (TREE_SIDE_EFFECTS (t)) return false;
15 92814606 : switch (TREE_CODE (t))
16 : {
17 476069 : case TRUTH_NOT_EXPR:
18 476069 : {
19 476069 : tree _p0 = TREE_OPERAND (t, 0);
20 476069 : {
21 476069 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 476069 : {
23 476069 : res_ops[0] = captures[0];
24 476069 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 23, __FILE__, __LINE__, false);
25 : return true;
26 : }
27 : }
28 155047 : break;
29 : }
30 155047 : case BIT_NOT_EXPR:
31 155047 : {
32 155047 : tree _p0 = TREE_OPERAND (t, 0);
33 155047 : if (tree_truth_valued_p (_p0))
34 : {
35 12088 : {
36 12088 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
37 12088 : {
38 12088 : res_ops[0] = captures[0];
39 12088 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 24, __FILE__, __LINE__, false);
40 12088 : return true;
41 : }
42 : }
43 : }
44 : break;
45 : }
46 1316154 : case EQ_EXPR:
47 1316154 : {
48 1316154 : tree _p0 = TREE_OPERAND (t, 0);
49 1316154 : tree _p1 = TREE_OPERAND (t, 1);
50 1316154 : if (integer_zerop (_p1))
51 : {
52 524551 : {
53 524551 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
54 524551 : {
55 524551 : res_ops[0] = captures[0];
56 524551 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 25, __FILE__, __LINE__, false);
57 524551 : return true;
58 : }
59 : }
60 : }
61 : break;
62 : }
63 2059400 : case NE_EXPR:
64 2059400 : {
65 2059400 : tree _p0 = TREE_OPERAND (t, 0);
66 2059400 : tree _p1 = TREE_OPERAND (t, 1);
67 2059400 : if (tree_truth_valued_p (_p0))
68 : {
69 2714 : if (integer_truep (_p1))
70 : {
71 0 : {
72 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
73 0 : {
74 0 : res_ops[0] = captures[0];
75 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 26, __FILE__, __LINE__, false);
76 0 : return true;
77 : }
78 : }
79 : }
80 : }
81 : break;
82 : }
83 104949 : case BIT_XOR_EXPR:
84 104949 : {
85 104949 : tree _p0 = TREE_OPERAND (t, 0);
86 104949 : tree _p1 = TREE_OPERAND (t, 1);
87 104949 : if (tree_truth_valued_p (_p0))
88 : {
89 14752 : if (integer_truep (_p1))
90 : {
91 0 : {
92 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
93 0 : {
94 0 : res_ops[0] = captures[0];
95 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 27, __FILE__, __LINE__, false);
96 0 : return true;
97 : }
98 : }
99 : }
100 : }
101 : break;
102 : }
103 : default:;
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 3 : generic_simplify_3 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (op))
112 : {
113 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 3 : if (INTEGRAL_TYPE_P (type)
115 : )
116 : {
117 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail74;
118 3 : {
119 3 : tree res_op0;
120 3 : {
121 3 : tree _o1[2], _r1;
122 3 : _o1[0] = captures[1];
123 3 : _o1[1] = captures[4];
124 3 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
125 3 : res_op0 = _r1;
126 : }
127 3 : tree res_op1;
128 3 : res_op1 = captures[2];
129 3 : tree _r;
130 3 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
131 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 51, __FILE__, __LINE__, true);
132 3 : return _r;
133 : }
134 0 : next_after_fail74:;
135 : }
136 : return NULL_TREE;
137 : }
138 :
139 : tree
140 0 : generic_simplify_11 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
141 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
142 : const enum tree_code ARG_UNUSED (bit_op))
143 : {
144 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
145 0 : if (bit_op == BIT_AND_EXPR
146 : )
147 : {
148 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail85;
149 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail85;
150 0 : {
151 0 : tree _r;
152 0 : _r = build_zero_cst (type);
153 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 58, __FILE__, __LINE__, true);
154 0 : return _r;
155 : }
156 : next_after_fail85:;
157 : }
158 : else
159 : {
160 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail86;
161 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail86;
162 0 : {
163 0 : tree _r;
164 0 : _r = build_minus_one_cst (type);
165 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 59, __FILE__, __LINE__, true);
166 0 : return _r;
167 : }
168 : next_after_fail86:;
169 : }
170 : return NULL_TREE;
171 : }
172 :
173 : tree
174 0 : generic_simplify_20 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
175 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
176 : {
177 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
178 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail95;
179 0 : {
180 0 : tree res_op0;
181 0 : res_op0 = captures[0];
182 0 : tree res_op1;
183 0 : res_op1 = captures[1];
184 0 : tree _r;
185 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
186 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 68, __FILE__, __LINE__, true);
187 : return _r;
188 : }
189 0 : next_after_fail95:;
190 0 : return NULL_TREE;
191 : }
192 :
193 : tree
194 731 : generic_simplify_27 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
195 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
196 : {
197 731 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
198 731 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
199 : )
200 : {
201 731 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail102;
202 731 : {
203 731 : tree res_op0;
204 731 : {
205 731 : tree _o1[2], _r1;
206 731 : {
207 731 : tree _o2[1], _r2;
208 731 : _o2[0] = captures[2];
209 731 : if (TREE_TYPE (_o2[0]) != type)
210 : {
211 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
212 : }
213 : else
214 : _r2 = _o2[0];
215 731 : _o1[0] = _r2;
216 : }
217 731 : _o1[1] = captures[3];
218 731 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
219 731 : res_op0 = _r1;
220 : }
221 731 : tree _r;
222 731 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
223 731 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 75, __FILE__, __LINE__, true);
224 731 : return _r;
225 : }
226 0 : next_after_fail102:;
227 : }
228 : return NULL_TREE;
229 : }
230 :
231 : tree
232 24 : generic_simplify_36 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
233 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
234 : const enum tree_code ARG_UNUSED (op),
235 : const enum tree_code ARG_UNUSED (cmp),
236 : const enum tree_code ARG_UNUSED (icmp))
237 : {
238 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
239 24 : if (invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
240 : )
241 : {
242 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail113;
243 24 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail113;
244 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail113;
245 24 : {
246 24 : tree res_op0;
247 24 : res_op0 = captures[1];
248 24 : tree res_op1;
249 24 : res_op1 = captures[4];
250 24 : tree res_op2;
251 24 : res_op2 = captures[7];
252 24 : tree _r;
253 24 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
254 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 85, __FILE__, __LINE__, true);
255 24 : return _r;
256 : }
257 : next_after_fail113:;
258 : }
259 : return NULL_TREE;
260 : }
261 :
262 : tree
263 19 : generic_simplify_42 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
264 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
265 : const enum tree_code ARG_UNUSED (op))
266 : {
267 19 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
268 38 : if (INTEGRAL_TYPE_P (type)
269 19 : && operand_equal_p (captures[2], captures[6], 0)
270 38 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
271 : )
272 : {
273 0 : {
274 0 : tree t = type;
275 0 : if (!TYPE_OVERFLOW_WRAPS (t))
276 0 : t = unsigned_type_for (t);
277 0 : wide_int c = wi::add (wi::to_wide (captures[3]), wi::to_wide (captures[7]));
278 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail120;
279 0 : if (TREE_SIDE_EFFECTS (captures[7])) goto next_after_fail120;
280 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail120;
281 0 : {
282 0 : tree res_op0;
283 0 : {
284 0 : tree _o1[2], _r1;
285 0 : {
286 0 : tree _o2[1], _r2;
287 0 : _o2[0] = captures[2];
288 0 : if (TREE_TYPE (_o2[0]) != t)
289 : {
290 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
291 : }
292 : else
293 : _r2 = _o2[0];
294 0 : _o1[0] = _r2;
295 : }
296 0 : _o1[1] = wide_int_to_tree (t, c);
297 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
298 0 : res_op0 = _r1;
299 : }
300 0 : tree _r;
301 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
302 0 : if (TREE_SIDE_EFFECTS (captures[6]))
303 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
304 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 86, __FILE__, __LINE__, true);
305 0 : return _r;
306 : }
307 0 : next_after_fail120:;
308 0 : }
309 : }
310 : return NULL_TREE;
311 : }
312 :
313 : tree
314 66 : generic_simplify_54 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
315 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
316 : {
317 66 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
318 66 : if (ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)
319 : )
320 : {
321 66 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail135;
322 66 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail135;
323 66 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail135;
324 66 : {
325 66 : tree res_op0;
326 66 : res_op0 = captures[0];
327 66 : tree _r;
328 66 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
329 66 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 103, __FILE__, __LINE__, true);
330 66 : return _r;
331 : }
332 : next_after_fail135:;
333 : }
334 : return NULL_TREE;
335 : }
336 :
337 : tree
338 217868 : generic_simplify_60 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
339 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
340 : {
341 217868 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
342 217868 : if (!TYPE_SATURATING (type)
343 : )
344 : {
345 217868 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
346 217868 : && !TYPE_OVERFLOW_SANITIZED (type)
347 : )
348 : {
349 215668 : {
350 215668 : tree t1 = type;
351 215668 : if (INTEGRAL_TYPE_P (type)
352 365055 : && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
353 4247 : t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]);
354 215668 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail141;
355 215668 : {
356 215668 : tree res_op0;
357 215668 : {
358 215668 : tree _o1[2], _r1;
359 215668 : {
360 215668 : tree _o2[1], _r2;
361 215668 : _o2[0] = captures[0];
362 215668 : if (TREE_TYPE (_o2[0]) != t1)
363 : {
364 3978 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
365 : }
366 : else
367 : _r2 = _o2[0];
368 215668 : _o1[0] = _r2;
369 : }
370 215668 : {
371 215668 : tree _o2[1], _r2;
372 215668 : _o2[0] = captures[1];
373 215668 : if (TREE_TYPE (_o2[0]) != t1)
374 : {
375 958 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
376 : }
377 : else
378 : _r2 = _o2[0];
379 215668 : _o1[1] = _r2;
380 : }
381 215668 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
382 215668 : res_op0 = _r1;
383 : }
384 215668 : tree _r;
385 215668 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
386 215668 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, true);
387 215668 : return _r;
388 : }
389 0 : next_after_fail141:;
390 : }
391 : }
392 : }
393 : return NULL_TREE;
394 : }
395 :
396 : tree
397 3705394 : generic_simplify_72 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
398 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
399 : {
400 3705394 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
401 3705394 : if (!TYPE_SATURATING (type)
402 3705394 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
403 : )
404 : {
405 3705394 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
406 : )
407 : {
408 7410788 : if (TREE_CODE (type) == INTEGER_TYPE
409 3705394 : && wi::neg_p (wi::to_wide (captures[3]))
410 11116182 : && wi::to_wide (captures[3]) != wi::min_value (TYPE_PRECISION (type), SIGNED)
411 : )
412 : {
413 914846 : {
414 914846 : wide_int c0 = wi::to_wide (captures[1]);
415 914846 : wide_int c2 = wi::to_wide (captures[3]);
416 914846 : wide_int c2_abs = wi::abs (c2);
417 914846 : if (wi::multiple_of_p (c2_abs, c0, TYPE_SIGN (type))
418 : )
419 : {
420 448562 : {
421 448562 : wide_int div_res = wi::sdiv_trunc (c2, c0);
422 448562 : tree div_cst = wide_int_to_tree (type, div_res);
423 448562 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail162;
424 448562 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail162;
425 448562 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail162;
426 448562 : {
427 448562 : tree res_op0;
428 448562 : {
429 448562 : tree _o1[2], _r1;
430 448562 : _o1[0] = captures[2];
431 448562 : _o1[1] = div_cst;
432 448562 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
433 448562 : res_op0 = _r1;
434 : }
435 448562 : tree res_op1;
436 448562 : res_op1 = captures[1];
437 448562 : tree _r;
438 448562 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
439 448562 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 130, __FILE__, __LINE__, true);
440 448562 : return _r;
441 : }
442 0 : next_after_fail162:;
443 448562 : }
444 : }
445 914846 : }
446 : }
447 : }
448 : }
449 : return NULL_TREE;
450 : }
451 :
452 : tree
453 0 : generic_simplify_82 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
454 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
455 : {
456 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
457 0 : if (TREE_CODE (captures[1]) == SSA_NAME && num_imm_uses (captures[1]) == 2
458 : )
459 : {
460 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail173;
461 0 : {
462 0 : if (! tree_invariant_p (captures[2])) goto next_after_fail173;
463 0 : tree res_op0;
464 0 : {
465 0 : tree _o1[2], _r1;
466 0 : {
467 0 : tree _o2[3], _r2;
468 0 : _o2[0] = unshare_expr (captures[2]);
469 0 : _o2[1] = captures[2];
470 0 : _o2[2] = captures[4];
471 0 : _r2 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1], _o2[2]);
472 0 : _o1[0] = _r2;
473 : }
474 0 : _o1[1] = captures[3];
475 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
476 0 : res_op0 = _r1;
477 : }
478 0 : tree res_op1;
479 0 : res_op1 = captures[5];
480 0 : tree _r;
481 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
482 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 141, __FILE__, __LINE__, true);
483 0 : return _r;
484 : }
485 : next_after_fail173:;
486 : }
487 : return NULL_TREE;
488 : }
489 :
490 : tree
491 1 : generic_simplify_89 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
492 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
493 : {
494 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
495 1 : if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
496 1 : && !TYPE_SATURATING (type) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
497 1 : && !TYPE_OVERFLOW_TRAPS (TREE_TYPE (captures[0]))
498 2 : && !TYPE_SATURATING (TREE_TYPE (captures[0]))
499 : )
500 : {
501 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail180;
502 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail180;
503 1 : {
504 1 : tree res_op0;
505 1 : {
506 1 : tree _o1[1], _r1;
507 1 : {
508 1 : tree _o2[2], _r2;
509 1 : _o2[0] = captures[1];
510 1 : _o2[1] = captures[2];
511 1 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
512 1 : _o1[0] = _r2;
513 : }
514 1 : if (TREE_TYPE (_o1[0]) != type)
515 : {
516 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
517 : }
518 : else
519 : _r1 = _o1[0];
520 1 : res_op0 = _r1;
521 : }
522 1 : tree _r;
523 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
524 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 148, __FILE__, __LINE__, true);
525 1 : return _r;
526 : }
527 : next_after_fail180:;
528 : }
529 : return NULL_TREE;
530 : }
531 :
532 : tree
533 10061 : generic_simplify_102 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
534 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
535 : {
536 10061 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
537 10061 : if (!TYPE_SATURATING (type)
538 : )
539 : {
540 10061 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
541 20122 : && !FIXED_POINT_TYPE_P (type)
542 : )
543 : {
544 10061 : if (INTEGRAL_TYPE_P (type)
545 10061 : && TYPE_OVERFLOW_UNDEFINED (type)
546 3109 : && TREE_CODE (captures[1]) != INTEGER_CST
547 11094 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
548 : )
549 : {
550 1033 : {
551 1033 : tree utype = unsigned_type_for (type);
552 1033 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail197;
553 1033 : {
554 1033 : tree res_op0;
555 1033 : {
556 1033 : tree _o1[1], _r1;
557 1033 : {
558 1033 : tree _o2[1], _r2;
559 1033 : _o2[0] = captures[1];
560 1033 : if (TREE_TYPE (_o2[0]) != utype)
561 : {
562 1033 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
563 : }
564 : else
565 : _r2 = _o2[0];
566 1033 : _o1[0] = _r2;
567 : }
568 1033 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
569 1033 : res_op0 = _r1;
570 : }
571 1033 : tree _r;
572 1033 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
573 1033 : if (TREE_SIDE_EFFECTS (captures[2]))
574 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
575 1033 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 164, __FILE__, __LINE__, true);
576 1033 : return _r;
577 : }
578 0 : next_after_fail197:;
579 : }
580 : }
581 : else
582 : {
583 9028 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
584 9028 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
585 2343 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
586 : )
587 : {
588 8759 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail198;
589 8759 : {
590 8759 : tree res_op0;
591 8759 : {
592 8759 : tree _o1[1], _r1;
593 8759 : _o1[0] = captures[1];
594 8759 : if (TREE_TYPE (_o1[0]) != type)
595 : {
596 8759 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
597 : }
598 : else
599 : _r1 = _o1[0];
600 8759 : res_op0 = _r1;
601 : }
602 8759 : tree _r;
603 8759 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
604 8759 : if (TREE_SIDE_EFFECTS (captures[2]))
605 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
606 8759 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 165, __FILE__, __LINE__, true);
607 8759 : return _r;
608 : }
609 0 : next_after_fail198:;
610 : }
611 : }
612 : }
613 : }
614 : return NULL_TREE;
615 : }
616 :
617 : tree
618 0 : generic_simplify_115 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
619 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
620 : {
621 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
622 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail212;
623 0 : {
624 0 : tree res_op0;
625 0 : res_op0 = captures[0];
626 0 : tree res_op1;
627 0 : {
628 0 : tree _o1[1], _r1;
629 0 : _o1[0] = captures[2];
630 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
631 0 : res_op1 = _r1;
632 : }
633 0 : tree _r;
634 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
635 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 178, __FILE__, __LINE__, true);
636 : return _r;
637 : }
638 0 : next_after_fail212:;
639 0 : return NULL_TREE;
640 : }
641 :
642 : tree
643 0 : generic_simplify_123 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
644 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
645 : {
646 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
647 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail220;
648 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail220;
649 0 : {
650 0 : tree res_op0;
651 0 : res_op0 = captures[0];
652 0 : tree res_op1;
653 0 : res_op1 = captures[3];
654 0 : tree _r;
655 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
656 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 184, __FILE__, __LINE__, true);
657 : return _r;
658 : }
659 : next_after_fail220:;
660 : return NULL_TREE;
661 : }
662 :
663 : tree
664 18399 : generic_simplify_134 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
665 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
666 : {
667 18399 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
668 18399 : {
669 18399 : bool wascmp;
670 18399 : if ((bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
671 18399 : || bitwise_inverted_equal_p (captures[1], captures[2], wascmp))
672 18399 : && (!wascmp || element_precision (type) == 1)
673 : )
674 : {
675 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail231;
676 0 : {
677 0 : tree _r;
678 0 : _r = build_all_ones_cst (TREE_TYPE (captures[0]));
679 0 : if (TREE_SIDE_EFFECTS (captures[0]))
680 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
681 0 : if (TREE_SIDE_EFFECTS (captures[1]))
682 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
683 0 : if (TREE_SIDE_EFFECTS (captures[2]))
684 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
685 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 191, __FILE__, __LINE__, true);
686 0 : return _r;
687 : }
688 0 : next_after_fail231:;
689 : }
690 : }
691 18399 : return NULL_TREE;
692 : }
693 :
694 : tree
695 0 : generic_simplify_145 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
696 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
697 : const enum tree_code ARG_UNUSED (bitop),
698 : const enum tree_code ARG_UNUSED (rbitop))
699 : {
700 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
701 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail246;
702 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail246;
703 0 : {
704 0 : tree _r;
705 0 : _r = captures[2];
706 0 : if (TREE_SIDE_EFFECTS (captures[1]))
707 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
708 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 196, __FILE__, __LINE__, true);
709 : return _r;
710 : }
711 : next_after_fail246:;
712 : return NULL_TREE;
713 : }
714 :
715 : tree
716 0 : generic_simplify_151 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
717 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
718 : const enum tree_code ARG_UNUSED (cmp),
719 : const enum tree_code ARG_UNUSED (icmp))
720 : {
721 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
722 0 : if (integer_zerop (captures[5])
723 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
724 : )
725 : {
726 0 : if (integer_onep (captures[4])
727 : )
728 : {
729 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail253;
730 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail253;
731 0 : {
732 0 : tree res_op0;
733 0 : {
734 0 : tree _o1[3], _r1;
735 0 : _o1[0] = captures[1];
736 0 : _o1[1] = captures[6];
737 0 : _o1[2] = captures[9];
738 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
739 0 : res_op0 = _r1;
740 : }
741 0 : tree res_op1;
742 0 : res_op1 = captures[4];
743 0 : tree _r;
744 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
745 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 202, __FILE__, __LINE__, true);
746 0 : return _r;
747 : }
748 : next_after_fail253:;
749 : }
750 : else
751 : {
752 0 : if (integer_minus_onep (captures[4])
753 : )
754 : {
755 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail254;
756 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail254;
757 0 : {
758 0 : tree res_op0;
759 0 : res_op0 = captures[1];
760 0 : tree res_op1;
761 0 : res_op1 = captures[6];
762 0 : tree res_op2;
763 0 : res_op2 = captures[9];
764 0 : tree _r;
765 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
766 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 203, __FILE__, __LINE__, true);
767 0 : return _r;
768 : }
769 : next_after_fail254:;
770 : }
771 : }
772 : }
773 : else
774 : {
775 0 : if (integer_zerop (captures[4])
776 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
777 : )
778 : {
779 0 : if (integer_onep (captures[5])
780 : )
781 : {
782 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail255;
783 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail255;
784 0 : {
785 0 : tree res_op0;
786 0 : {
787 0 : tree _o1[3], _r1;
788 0 : _o1[0] = captures[1];
789 0 : _o1[1] = captures[9];
790 0 : _o1[2] = captures[6];
791 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
792 0 : res_op0 = _r1;
793 : }
794 0 : tree res_op1;
795 0 : res_op1 = captures[5];
796 0 : tree _r;
797 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
798 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 204, __FILE__, __LINE__, true);
799 0 : return _r;
800 : }
801 : next_after_fail255:;
802 : }
803 : else
804 : {
805 0 : if (integer_minus_onep (captures[5])
806 : )
807 : {
808 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail256;
809 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail256;
810 0 : {
811 0 : tree res_op0;
812 0 : res_op0 = captures[1];
813 0 : tree res_op1;
814 0 : res_op1 = captures[9];
815 0 : tree res_op2;
816 0 : res_op2 = captures[6];
817 0 : tree _r;
818 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
819 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 205, __FILE__, __LINE__, true);
820 0 : return _r;
821 : }
822 : next_after_fail256:;
823 : }
824 : }
825 : }
826 : }
827 : return NULL_TREE;
828 : }
829 :
830 : tree
831 46 : generic_simplify_173 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
832 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
833 : const enum tree_code ARG_UNUSED (logic),
834 : const enum tree_code ARG_UNUSED (op),
835 : const enum tree_code ARG_UNUSED (ext))
836 : {
837 46 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
838 92 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
839 92 : && TREE_CODE (captures[1]) != INTEGER_CST
840 : )
841 : {
842 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail310;
843 0 : {
844 0 : tree res_op0;
845 0 : res_op0 = captures[1];
846 0 : tree res_op1;
847 0 : {
848 0 : tree _o1[2], _r1;
849 0 : _o1[0] = captures[2];
850 0 : _o1[1] = captures[4];
851 0 : _r1 = fold_build2_loc (loc, ext, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
852 0 : res_op1 = _r1;
853 : }
854 0 : tree _r;
855 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
856 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 231, __FILE__, __LINE__, true);
857 0 : return _r;
858 : }
859 0 : next_after_fail310:;
860 : }
861 : return NULL_TREE;
862 : }
863 :
864 : tree
865 0 : generic_simplify_178 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
866 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
867 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
868 : {
869 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
870 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
871 : )
872 : {
873 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail315;
874 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail315;
875 0 : {
876 0 : tree res_op0;
877 0 : {
878 0 : tree _o1[1], _r1;
879 0 : _o1[0] = captures[0];
880 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
881 0 : res_op0 = _r1;
882 : }
883 0 : tree _r;
884 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
885 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 235, __FILE__, __LINE__, true);
886 0 : return _r;
887 : }
888 : next_after_fail315:;
889 : }
890 : return NULL_TREE;
891 : }
892 :
893 : tree
894 3 : generic_simplify_183 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
895 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
896 : {
897 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
898 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail320;
899 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail320;
900 3 : {
901 3 : tree _r;
902 3 : _r = build_zero_cst (type);
903 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 239, __FILE__, __LINE__, true);
904 : return _r;
905 : }
906 : next_after_fail320:;
907 : return NULL_TREE;
908 : }
909 :
910 : tree
911 36070 : generic_simplify_187 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
912 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
913 : {
914 36070 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
915 36070 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
916 36070 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
917 : )
918 : {
919 33453 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail326;
920 33453 : {
921 33453 : tree res_op0;
922 33453 : {
923 33453 : tree _o1[1], _r1;
924 33453 : _o1[0] = captures[0];
925 33453 : if (TREE_TYPE (_o1[0]) != type)
926 : {
927 772 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
928 : }
929 : else
930 : _r1 = _o1[0];
931 33453 : res_op0 = _r1;
932 : }
933 33453 : tree res_op1;
934 33453 : {
935 33453 : tree _o1[1], _r1;
936 33453 : {
937 33453 : tree _o2[1], _r2;
938 33453 : _o2[0] = captures[1];
939 33453 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
940 33453 : _o1[0] = _r2;
941 : }
942 33453 : if (TREE_TYPE (_o1[0]) != type)
943 : {
944 7 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
945 : }
946 : else
947 : _r1 = _o1[0];
948 33453 : res_op1 = _r1;
949 : }
950 33453 : tree _r;
951 33453 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
952 33453 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 242, __FILE__, __LINE__, true);
953 33453 : return _r;
954 : }
955 0 : next_after_fail326:;
956 : }
957 : return NULL_TREE;
958 : }
959 :
960 : tree
961 2 : generic_simplify_195 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
962 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
963 : const combined_fn ARG_UNUSED (SQRT_ALL))
964 : {
965 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
966 2 : if (flag_unsafe_math_optimizations
967 : )
968 : {
969 2 : if (!tree_expr_maybe_signaling_nan_p (captures[1])
970 : )
971 : {
972 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail335;
973 2 : {
974 2 : tree _r;
975 2 : _r = captures[1];
976 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 250, __FILE__, __LINE__, true);
977 2 : return _r;
978 : }
979 0 : next_after_fail335:;
980 : }
981 : }
982 : return NULL_TREE;
983 : }
984 :
985 : tree
986 9 : generic_simplify_198 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
987 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
988 : const combined_fn ARG_UNUSED (LDEXP))
989 : {
990 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
991 9 : if (flag_unsafe_math_optimizations
992 : )
993 : {
994 9 : if (real_equal (TREE_REAL_CST_PTR (captures[1]), &dconst1)
995 : )
996 : {
997 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail338;
998 9 : {
999 9 : tree res_op0;
1000 9 : res_op0 = captures[0];
1001 9 : tree res_op1;
1002 9 : res_op1 = captures[2];
1003 9 : tree _r;
1004 9 : _r = maybe_build_call_expr_loc (loc, LDEXP, type, 2, res_op0, res_op1);
1005 9 : if (!_r)
1006 0 : goto next_after_fail338;
1007 9 : if (TREE_SIDE_EFFECTS (captures[1]))
1008 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1009 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 253, __FILE__, __LINE__, true);
1010 9 : return _r;
1011 : }
1012 : next_after_fail338:;
1013 : }
1014 : }
1015 : return NULL_TREE;
1016 : }
1017 :
1018 : tree
1019 169 : generic_simplify_205 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1020 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1021 : const enum tree_code ARG_UNUSED (op))
1022 : {
1023 169 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1024 338 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1025 338 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
1026 169 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
1027 : && (CONSTANT_CLASS_P (captures[2]) || (single_use (captures[1]) && single_use (captures[0])))
1028 169 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1029 507 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
1030 : )
1031 : {
1032 169 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail345;
1033 169 : {
1034 169 : tree res_op0;
1035 169 : res_op0 = captures[2];
1036 169 : tree res_op1;
1037 169 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1038 169 : tree _r;
1039 169 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1040 169 : if (TREE_SIDE_EFFECTS (captures[3]))
1041 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1042 169 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 260, __FILE__, __LINE__, true);
1043 169 : return _r;
1044 : }
1045 0 : next_after_fail345:;
1046 : }
1047 : return NULL_TREE;
1048 : }
1049 :
1050 : tree
1051 11553 : generic_simplify_217 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1052 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1053 : const enum tree_code ARG_UNUSED (op))
1054 : {
1055 11553 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1056 11553 : if (tree_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1057 11553 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1058 11553 : && (CONSTANT_CLASS_P (captures[3]) || (single_use (captures[1]) && single_use (captures[0])))
1059 : )
1060 : {
1061 11553 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail373;
1062 11553 : {
1063 11553 : tree res_op0;
1064 11553 : res_op0 = captures[3];
1065 11553 : tree res_op1;
1066 11553 : res_op1 = build_zero_cst (TREE_TYPE (captures[3]));
1067 11553 : tree _r;
1068 11553 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1069 11553 : if (TREE_SIDE_EFFECTS (captures[2]))
1070 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1071 11553 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 287, __FILE__, __LINE__, true);
1072 11553 : return _r;
1073 : }
1074 0 : next_after_fail373:;
1075 : }
1076 : return NULL_TREE;
1077 : }
1078 :
1079 : tree
1080 21 : generic_simplify_225 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1081 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1082 : const enum tree_code ARG_UNUSED (cmp))
1083 : {
1084 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1085 21 : if (TREE_INT_CST_LOW (captures[1]) & 1
1086 : )
1087 : {
1088 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail381;
1089 2 : {
1090 2 : tree _r;
1091 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1092 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1093 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1094 2 : if (TREE_SIDE_EFFECTS (captures[1]))
1095 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1096 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 294, __FILE__, __LINE__, true);
1097 2 : return _r;
1098 : }
1099 0 : next_after_fail381:;
1100 : }
1101 : return NULL_TREE;
1102 : }
1103 :
1104 : tree
1105 45 : generic_simplify_231 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1106 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1107 : const enum tree_code ARG_UNUSED (cmp))
1108 : {
1109 45 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1110 45 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1111 : )
1112 : {
1113 0 : {
1114 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1115 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail389;
1116 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail389;
1117 0 : {
1118 0 : tree res_op0;
1119 0 : {
1120 0 : tree _o1[2], _r1;
1121 0 : {
1122 0 : tree _o2[1], _r2;
1123 0 : _o2[0] = captures[0];
1124 0 : if (TREE_TYPE (_o2[0]) != utype)
1125 : {
1126 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1127 : }
1128 : else
1129 : _r2 = _o2[0];
1130 0 : _o1[0] = _r2;
1131 : }
1132 0 : {
1133 0 : tree _o2[1], _r2;
1134 0 : _o2[0] = captures[1];
1135 0 : if (TREE_TYPE (_o2[0]) != utype)
1136 : {
1137 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1138 : }
1139 : else
1140 : _r2 = _o2[0];
1141 0 : _o1[1] = _r2;
1142 : }
1143 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1144 0 : res_op0 = _r1;
1145 : }
1146 0 : tree res_op1;
1147 0 : res_op1 = build_zero_cst (utype);
1148 0 : tree _r;
1149 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1150 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 302, __FILE__, __LINE__, true);
1151 0 : return _r;
1152 : }
1153 : next_after_fail389:;
1154 : }
1155 : }
1156 : return NULL_TREE;
1157 : }
1158 :
1159 : tree
1160 124 : generic_simplify_239 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1161 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1162 : const enum tree_code ARG_UNUSED (rotate),
1163 : const enum tree_code ARG_UNUSED (invrot),
1164 : const enum tree_code ARG_UNUSED (cmp))
1165 : {
1166 124 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1167 124 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail407;
1168 124 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail407;
1169 124 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail407;
1170 124 : {
1171 124 : tree res_op0;
1172 124 : res_op0 = captures[0];
1173 124 : tree res_op1;
1174 124 : res_op1 = const_binop (invrot, TREE_TYPE (captures[0]), captures[2], captures[1]);
1175 124 : tree _r;
1176 124 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1177 124 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 320, __FILE__, __LINE__, true);
1178 : return _r;
1179 : }
1180 : next_after_fail407:;
1181 : return NULL_TREE;
1182 : }
1183 :
1184 : tree
1185 25548 : generic_simplify_245 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1186 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1187 : const enum tree_code ARG_UNUSED (cmp),
1188 : const enum tree_code ARG_UNUSED (icmp),
1189 : const enum tree_code ARG_UNUSED (ncmp))
1190 : {
1191 25548 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1192 25548 : if (types_match (type, TREE_TYPE (captures[0]))
1193 : )
1194 : {
1195 24883 : {
1196 24883 : enum tree_code ic = invert_tree_comparison
1197 24883 : (cmp, HONOR_NANS (captures[1]));
1198 24883 : if (ic == icmp
1199 : )
1200 : {
1201 24644 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail413;
1202 24644 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail413;
1203 24644 : {
1204 24644 : tree res_op0;
1205 24644 : res_op0 = captures[1];
1206 24644 : tree res_op1;
1207 24644 : res_op1 = captures[2];
1208 24644 : tree _r;
1209 24644 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1210 24644 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 326, __FILE__, __LINE__, true);
1211 24644 : return _r;
1212 : }
1213 : next_after_fail413:;
1214 : }
1215 : else
1216 : {
1217 239 : if (ic == ncmp
1218 : )
1219 : {
1220 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail414;
1221 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail414;
1222 0 : {
1223 0 : tree res_op0;
1224 0 : res_op0 = captures[1];
1225 0 : tree res_op1;
1226 0 : res_op1 = captures[2];
1227 0 : tree _r;
1228 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1229 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 327, __FILE__, __LINE__, true);
1230 0 : return _r;
1231 : }
1232 : next_after_fail414:;
1233 : }
1234 : }
1235 : }
1236 : }
1237 : return NULL_TREE;
1238 : }
1239 :
1240 : tree
1241 6177137 : generic_simplify_255 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1242 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1243 : const enum tree_code ARG_UNUSED (cmp))
1244 : {
1245 6177137 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1246 6177137 : if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[1]))
1247 : )
1248 : {
1249 1708 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail429;
1250 1708 : {
1251 1708 : tree res_op0;
1252 1708 : res_op0 = captures[0];
1253 1708 : tree res_op1;
1254 1708 : res_op1 = build_real (TREE_TYPE (captures[1]), dconst0);
1255 1708 : tree _r;
1256 1708 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1257 1708 : if (TREE_SIDE_EFFECTS (captures[1]))
1258 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1259 1708 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 340, __FILE__, __LINE__, true);
1260 1708 : return _r;
1261 : }
1262 0 : next_after_fail429:;
1263 : }
1264 : else
1265 : {
1266 6175429 : if (TREE_CODE (captures[0]) == REAL_CST
1267 6175429 : && REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[0]))
1268 : )
1269 : {
1270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail430;
1271 0 : {
1272 0 : tree res_op0;
1273 0 : res_op0 = build_real (TREE_TYPE (captures[0]), dconst0);
1274 0 : tree res_op1;
1275 0 : res_op1 = captures[1];
1276 0 : tree _r;
1277 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1278 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1279 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1280 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 341, __FILE__, __LINE__, true);
1281 0 : return _r;
1282 : }
1283 0 : next_after_fail430:;
1284 : }
1285 : else
1286 : {
1287 6175429 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
1288 834 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1289 258 : && !tree_expr_signaling_nan_p (captures[1])
1290 6175657 : && !tree_expr_maybe_signaling_nan_p (captures[0])
1291 : )
1292 : {
1293 228 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail431;
1294 228 : {
1295 228 : tree _r;
1296 228 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1297 228 : if (TREE_SIDE_EFFECTS (captures[0]))
1298 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1299 228 : if (TREE_SIDE_EFFECTS (captures[1]))
1300 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1301 228 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 342, __FILE__, __LINE__, true);
1302 228 : return _r;
1303 : }
1304 0 : next_after_fail431:;
1305 : }
1306 : else
1307 : {
1308 6175201 : if (TREE_CODE (captures[0]) == REAL_CST
1309 2011 : && REAL_VALUE_ISNAN (TREE_REAL_CST (captures[0]))
1310 1817 : && (cmp == EQ_EXPR || cmp == NE_EXPR || !flag_trapping_math)
1311 0 : && !tree_expr_signaling_nan_p (captures[0])
1312 6175201 : && !tree_expr_signaling_nan_p (captures[1])
1313 : )
1314 : {
1315 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail432;
1316 0 : {
1317 0 : tree _r;
1318 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1319 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1320 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1321 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1322 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1323 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 343, __FILE__, __LINE__, true);
1324 0 : return _r;
1325 : }
1326 0 : next_after_fail432:;
1327 : }
1328 : else
1329 : {
1330 6175201 : if (REAL_VALUE_ISINF (TREE_REAL_CST (captures[1]))
1331 6879668 : && MODE_HAS_INFINITIES (TYPE_MODE (TREE_TYPE (captures[1])))
1332 : )
1333 : {
1334 234850 : {
1335 234850 : REAL_VALUE_TYPE max;
1336 234850 : enum tree_code code = cmp;
1337 234850 : bool neg = REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]));
1338 234850 : if (neg)
1339 33230 : code = swap_tree_comparison (code);
1340 234850 : if (code == GT_EXPR
1341 234850 : && !(HONOR_NANS (captures[0]) && flag_trapping_math)
1342 : )
1343 : {
1344 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail433;
1345 7 : {
1346 7 : tree _r;
1347 7 : _r = constant_boolean_node (false, type);
1348 7 : if (TREE_SIDE_EFFECTS (captures[0]))
1349 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1350 7 : if (TREE_SIDE_EFFECTS (captures[1]))
1351 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1352 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 344, __FILE__, __LINE__, true);
1353 67038 : return _r;
1354 : }
1355 0 : next_after_fail433:;
1356 : }
1357 : else
1358 : {
1359 234843 : if (code == LE_EXPR
1360 : )
1361 : {
1362 32122 : if (! HONOR_NANS (captures[0])
1363 : )
1364 : {
1365 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail434;
1366 0 : {
1367 0 : tree _r;
1368 0 : _r = constant_boolean_node (true, type);
1369 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1370 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1371 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1372 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1373 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 345, __FILE__, __LINE__, true);
1374 0 : return _r;
1375 : }
1376 0 : next_after_fail434:;
1377 : }
1378 : else
1379 : {
1380 32122 : if (!flag_trapping_math
1381 : )
1382 : {
1383 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail435;
1384 2 : {
1385 2 : if (! tree_invariant_p (captures[0])) goto next_after_fail435;
1386 0 : tree res_op0;
1387 0 : res_op0 = unshare_expr (captures[0]);
1388 0 : tree res_op1;
1389 0 : res_op1 = captures[0];
1390 0 : tree _r;
1391 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1392 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1393 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1394 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 346, __FILE__, __LINE__, true);
1395 0 : return _r;
1396 : }
1397 167812 : next_after_fail435:;
1398 : }
1399 : }
1400 : }
1401 : else
1402 : {
1403 135489 : if ((code == EQ_EXPR && !(HONOR_NANS (captures[0]) && flag_trapping_math))
1404 338174 : || code == GE_EXPR
1405 : )
1406 : {
1407 140 : {
1408 140 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1409 140 : if (neg
1410 : )
1411 : {
1412 55 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail436;
1413 55 : {
1414 55 : tree res_op0;
1415 55 : res_op0 = captures[0];
1416 55 : tree res_op1;
1417 55 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1418 55 : tree _r;
1419 55 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1420 55 : if (TREE_SIDE_EFFECTS (captures[1]))
1421 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1422 55 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 347, __FILE__, __LINE__, true);
1423 55 : return _r;
1424 : }
1425 0 : next_after_fail436:;
1426 : }
1427 : else
1428 : {
1429 85 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail437;
1430 85 : {
1431 85 : tree res_op0;
1432 85 : res_op0 = captures[0];
1433 85 : tree res_op1;
1434 85 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1435 85 : tree _r;
1436 85 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1437 85 : if (TREE_SIDE_EFFECTS (captures[1]))
1438 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1439 85 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 348, __FILE__, __LINE__, true);
1440 85 : return _r;
1441 : }
1442 0 : next_after_fail437:;
1443 : }
1444 : }
1445 : }
1446 : else
1447 : {
1448 202581 : if (code == LT_EXPR
1449 : )
1450 : {
1451 90 : {
1452 90 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1453 90 : if (neg
1454 : )
1455 : {
1456 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail438;
1457 26 : {
1458 26 : tree res_op0;
1459 26 : res_op0 = captures[0];
1460 26 : tree res_op1;
1461 26 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1462 26 : tree _r;
1463 26 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1464 26 : if (TREE_SIDE_EFFECTS (captures[1]))
1465 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1466 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 349, __FILE__, __LINE__, true);
1467 26 : return _r;
1468 : }
1469 0 : next_after_fail438:;
1470 : }
1471 : else
1472 : {
1473 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail439;
1474 64 : {
1475 64 : tree res_op0;
1476 64 : res_op0 = captures[0];
1477 64 : tree res_op1;
1478 64 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1479 64 : tree _r;
1480 64 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1481 64 : if (TREE_SIDE_EFFECTS (captures[1]))
1482 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1483 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 350, __FILE__, __LINE__, true);
1484 64 : return _r;
1485 : }
1486 0 : next_after_fail439:;
1487 : }
1488 : }
1489 : }
1490 : else
1491 : {
1492 202491 : if (code == NE_EXPR
1493 : )
1494 : {
1495 66801 : {
1496 66801 : real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0])));
1497 66801 : if (! HONOR_NANS (captures[0])
1498 : )
1499 : {
1500 0 : if (neg
1501 : )
1502 : {
1503 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail440;
1504 0 : {
1505 0 : tree res_op0;
1506 0 : res_op0 = captures[0];
1507 0 : tree res_op1;
1508 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1509 0 : tree _r;
1510 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1511 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1512 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1513 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 351, __FILE__, __LINE__, true);
1514 0 : return _r;
1515 : }
1516 0 : next_after_fail440:;
1517 : }
1518 : else
1519 : {
1520 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail441;
1521 0 : {
1522 0 : tree res_op0;
1523 0 : res_op0 = captures[0];
1524 0 : tree res_op1;
1525 0 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1526 0 : tree _r;
1527 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1528 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1529 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1530 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 352, __FILE__, __LINE__, true);
1531 0 : return _r;
1532 : }
1533 0 : next_after_fail441:;
1534 : }
1535 : }
1536 : else
1537 : {
1538 66801 : if (neg
1539 : )
1540 : {
1541 560 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail442;
1542 560 : {
1543 560 : tree res_op0;
1544 560 : res_op0 = captures[0];
1545 560 : tree res_op1;
1546 560 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1547 560 : tree _r;
1548 560 : _r = fold_build2_loc (loc, UNGE_EXPR, type, res_op0, res_op1);
1549 560 : if (TREE_SIDE_EFFECTS (captures[1]))
1550 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1551 560 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 353, __FILE__, __LINE__, true);
1552 560 : return _r;
1553 : }
1554 0 : next_after_fail442:;
1555 : }
1556 : else
1557 : {
1558 66241 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail443;
1559 66241 : {
1560 66241 : tree res_op0;
1561 66241 : res_op0 = captures[0];
1562 66241 : tree res_op1;
1563 66241 : res_op1 = build_real (TREE_TYPE (captures[0]), max);
1564 66241 : tree _r;
1565 66241 : _r = fold_build2_loc (loc, UNLE_EXPR, type, res_op0, res_op1);
1566 66241 : if (TREE_SIDE_EFFECTS (captures[1]))
1567 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1568 66241 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 354, __FILE__, __LINE__, true);
1569 66241 : return _r;
1570 : }
1571 0 : next_after_fail443:;
1572 : }
1573 : }
1574 : }
1575 : }
1576 : }
1577 : }
1578 : }
1579 : }
1580 : }
1581 : }
1582 : }
1583 : }
1584 : }
1585 : }
1586 : return NULL_TREE;
1587 : }
1588 :
1589 : tree
1590 0 : generic_simplify_298 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1591 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1592 : const enum tree_code ARG_UNUSED (cmp))
1593 : {
1594 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1595 0 : if (VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[0])))
1596 0 : && can_compare_p (cmp == EQ_EXPR ? EQ : NE, TYPE_MODE (TREE_TYPE (captures[0])),
1597 : ccp_jump)
1598 : )
1599 : {
1600 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail561;
1601 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail561;
1602 0 : {
1603 0 : tree res_op0;
1604 0 : res_op0 = captures[0];
1605 0 : tree res_op1;
1606 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1607 0 : tree _r;
1608 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1609 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 455, __FILE__, __LINE__, true);
1610 0 : return _r;
1611 : }
1612 : next_after_fail561:;
1613 : }
1614 : return NULL_TREE;
1615 : }
1616 :
1617 : tree
1618 0 : generic_simplify_303 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1619 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1620 : const combined_fn ARG_UNUSED (copysigns))
1621 : {
1622 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1623 0 : if (!REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
1624 : )
1625 : {
1626 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail567;
1627 0 : {
1628 0 : tree res_op0;
1629 0 : res_op0 = captures[0];
1630 0 : tree _r;
1631 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1632 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1633 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1634 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 461, __FILE__, __LINE__, true);
1635 0 : return _r;
1636 : }
1637 0 : next_after_fail567:;
1638 : }
1639 : return NULL_TREE;
1640 : }
1641 :
1642 : tree
1643 7 : generic_simplify_308 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1644 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1645 : const enum tree_code ARG_UNUSED (div))
1646 : {
1647 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1648 14 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1649 0 : && (!VECTOR_TYPE_P (type)
1650 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
1651 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
1652 7 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
1653 0 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
1654 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1655 0 : || (element_precision (type)
1656 0 : == element_precision (TREE_TYPE (captures[2])))
1657 0 : || (INTEGRAL_TYPE_P (type)
1658 0 : && (tree_nonzero_bits (captures[0])
1659 7 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
1660 : true,
1661 7 : element_precision (type))) == 0))))
1662 : )
1663 : {
1664 0 : if (!VECTOR_TYPE_P (type)
1665 0 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1666 0 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
1667 : )
1668 : {
1669 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail572;
1670 0 : {
1671 0 : tree res_op0;
1672 0 : {
1673 0 : tree _o1[2], _r1;
1674 0 : _o1[0] = captures[1];
1675 0 : _o1[1] = captures[3];
1676 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1677 0 : res_op0 = _r1;
1678 : }
1679 0 : tree _r;
1680 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1681 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1682 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1683 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 466, __FILE__, __LINE__, true);
1684 0 : return _r;
1685 : }
1686 0 : next_after_fail572:;
1687 : }
1688 : else
1689 : {
1690 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail573;
1691 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail573;
1692 0 : {
1693 0 : tree res_op0;
1694 0 : res_op0 = captures[0];
1695 0 : tree res_op1;
1696 0 : res_op1 = captures[3];
1697 0 : tree _r;
1698 0 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1699 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1700 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1701 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 467, __FILE__, __LINE__, true);
1702 0 : return _r;
1703 : }
1704 : next_after_fail573:;
1705 : }
1706 : }
1707 : return NULL_TREE;
1708 : }
1709 :
1710 : tree
1711 52 : generic_simplify_326 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1712 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1713 : const enum tree_code ARG_UNUSED (mod))
1714 : {
1715 52 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1716 52 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail593;
1717 52 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail593;
1718 52 : {
1719 52 : tree _r;
1720 52 : _r = captures[0];
1721 52 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 485, __FILE__, __LINE__, true);
1722 : return _r;
1723 : }
1724 : next_after_fail593:;
1725 : return NULL_TREE;
1726 : }
1727 :
1728 : tree
1729 5 : generic_simplify_334 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1730 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1731 : const combined_fn ARG_UNUSED (SINH),
1732 : const combined_fn ARG_UNUSED (COSH),
1733 : const combined_fn ARG_UNUSED (TANH))
1734 : {
1735 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1736 5 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1737 : )
1738 : {
1739 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail603;
1740 3 : {
1741 3 : tree res_op0;
1742 3 : res_op0 = captures[1];
1743 3 : tree _r;
1744 3 : _r = maybe_build_call_expr_loc (loc, TANH, type, 1, res_op0);
1745 3 : if (!_r)
1746 0 : goto next_after_fail603;
1747 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 495, __FILE__, __LINE__, true);
1748 3 : return _r;
1749 : }
1750 : next_after_fail603:;
1751 : }
1752 : return NULL_TREE;
1753 : }
1754 :
1755 : tree
1756 157213 : generic_simplify_342 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1757 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1758 : const enum tree_code ARG_UNUSED (cmp))
1759 : {
1760 157213 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1761 157213 : {
1762 157213 : tree from_type = TREE_TYPE (captures[0]);
1763 157213 : tree c1_type = TREE_TYPE (captures[1]), c2_type = TREE_TYPE (captures[2]);
1764 157213 : enum tree_code code = ERROR_MARK;
1765 157213 : if (integer_zerop (captures[1])
1766 62279 : && INTEGRAL_TYPE_P (from_type)
1767 61789 : && (cmp == GE_EXPR || cmp == LT_EXPR)
1768 16848 : && TYPE_UNSIGNED (from_type)
1769 1728 : && !TYPE_UNSIGNED (c1_type)
1770 1728 : && TYPE_PRECISION (from_type) == TYPE_PRECISION (c1_type)
1771 587 : && int_fits_type_p (captures[2], from_type)
1772 157800 : && (types_match (c2_type, from_type)
1773 0 : || (TYPE_PRECISION (c2_type) > TYPE_PRECISION (from_type)
1774 0 : && (TYPE_UNSIGNED (from_type)
1775 0 : || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
1776 : {
1777 587 : tree_code ncmp = cmp == GE_EXPR ? LE_EXPR : GT_EXPR;
1778 587 : widest_int c1 = wi::mask<widest_int>(TYPE_PRECISION (type) - 1, 0);
1779 587 : code = minmax_from_comparison (ncmp, captures[0], c1, wi::to_widest (captures[2]));
1780 587 : }
1781 587 : if (code == ERROR_MARK
1782 157208 : && INTEGRAL_TYPE_P (from_type)
1783 156718 : && int_fits_type_p (captures[2], from_type)
1784 156717 : && (types_match (c1_type, from_type)
1785 6525 : || (TYPE_PRECISION (c1_type) > TYPE_PRECISION (from_type)
1786 0 : && (TYPE_UNSIGNED (from_type)
1787 0 : || TYPE_SIGN (c1_type) == TYPE_SIGN (from_type))))
1788 150779 : && (types_match (c2_type, from_type)
1789 58329 : || (TYPE_PRECISION (c2_type) > TYPE_PRECISION (from_type)
1790 18863 : && (TYPE_UNSIGNED (from_type)
1791 710 : || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
1792 : {
1793 110104 : if (cmp != EQ_EXPR)
1794 110092 : code = minmax_from_comparison (cmp, captures[0], captures[1], captures[0], captures[2]);
1795 12 : else if (int_fits_type_p (captures[1], from_type))
1796 : code = EQ_EXPR;
1797 : }
1798 157201 : if (code == MAX_EXPR
1799 : )
1800 : {
1801 19533 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail611;
1802 19533 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail611;
1803 19533 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail611;
1804 19533 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail611;
1805 19533 : {
1806 19533 : tree res_op0;
1807 19533 : {
1808 19533 : tree _o1[2], _r1;
1809 19533 : _o1[0] = captures[0];
1810 19533 : {
1811 19533 : tree _o2[1], _r2;
1812 19533 : _o2[0] = captures[2];
1813 19533 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1814 : {
1815 316 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1816 : }
1817 : else
1818 : _r2 = _o2[0];
1819 19533 : _o1[1] = _r2;
1820 : }
1821 19533 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1822 19533 : res_op0 = _r1;
1823 : }
1824 19533 : tree _r;
1825 19533 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1826 19533 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 503, __FILE__, __LINE__, true);
1827 19533 : return _r;
1828 : }
1829 : next_after_fail611:;
1830 : }
1831 : else
1832 : {
1833 137680 : if (code == MIN_EXPR
1834 : )
1835 : {
1836 257 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail612;
1837 257 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail612;
1838 257 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail612;
1839 257 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail612;
1840 257 : {
1841 257 : tree res_op0;
1842 257 : {
1843 257 : tree _o1[2], _r1;
1844 257 : _o1[0] = captures[0];
1845 257 : {
1846 257 : tree _o2[1], _r2;
1847 257 : _o2[0] = captures[2];
1848 257 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1849 : {
1850 100 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1851 : }
1852 : else
1853 : _r2 = _o2[0];
1854 257 : _o1[1] = _r2;
1855 : }
1856 257 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1857 257 : res_op0 = _r1;
1858 : }
1859 257 : tree _r;
1860 257 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1861 257 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 504, __FILE__, __LINE__, true);
1862 257 : return _r;
1863 : }
1864 : next_after_fail612:;
1865 : }
1866 : else
1867 : {
1868 137423 : if (code == EQ_EXPR
1869 : )
1870 : {
1871 12 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail613;
1872 12 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail613;
1873 12 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail613;
1874 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail613;
1875 12 : {
1876 12 : if (! tree_invariant_p (captures[1])) goto next_after_fail613;
1877 12 : tree res_op0;
1878 12 : {
1879 12 : tree _o1[3], _r1;
1880 12 : {
1881 12 : tree _o2[2], _r2;
1882 12 : _o2[0] = captures[0];
1883 12 : {
1884 12 : tree _o3[1], _r3;
1885 12 : _o3[0] = unshare_expr (captures[1]);
1886 12 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
1887 : {
1888 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
1889 : }
1890 : else
1891 : _r3 = _o3[0];
1892 12 : _o2[1] = _r3;
1893 : }
1894 12 : _r2 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o2[0], _o2[1]);
1895 12 : _o1[0] = _r2;
1896 : }
1897 12 : {
1898 12 : tree _o2[1], _r2;
1899 12 : _o2[0] = captures[1];
1900 12 : if (TREE_TYPE (_o2[0]) != from_type)
1901 : {
1902 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, from_type, _o2[0]);
1903 : }
1904 : else
1905 : _r2 = _o2[0];
1906 12 : _o1[1] = _r2;
1907 : }
1908 12 : {
1909 12 : tree _o2[1], _r2;
1910 12 : _o2[0] = captures[2];
1911 12 : if (TREE_TYPE (_o2[0]) != from_type)
1912 : {
1913 7 : _r2 = fold_build1_loc (loc, NOP_EXPR, from_type, _o2[0]);
1914 : }
1915 : else
1916 : _r2 = _o2[0];
1917 12 : _o1[2] = _r2;
1918 : }
1919 12 : _r1 = fold_build3_loc (loc, COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
1920 12 : res_op0 = _r1;
1921 : }
1922 12 : tree _r;
1923 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1924 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 505, __FILE__, __LINE__, true);
1925 12 : return _r;
1926 : }
1927 : next_after_fail613:;
1928 : }
1929 : }
1930 : }
1931 : }
1932 : return NULL_TREE;
1933 : }
1934 :
1935 : tree
1936 0 : generic_simplify_383 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1937 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1938 : const enum tree_code ARG_UNUSED (legt))
1939 : {
1940 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1941 0 : if (!HONOR_NANS (captures[0])
1942 : )
1943 : {
1944 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail664;
1945 0 : {
1946 0 : tree _r;
1947 0 : _r = constant_boolean_node (legt == LE_EXPR, type);
1948 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1949 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1950 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1951 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1952 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 554, __FILE__, __LINE__, true);
1953 0 : return _r;
1954 : }
1955 0 : next_after_fail664:;
1956 : }
1957 : return NULL_TREE;
1958 : }
1959 :
1960 : tree
1961 536 : generic_simplify_390 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1962 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1963 : const enum tree_code ARG_UNUSED (cmp))
1964 : {
1965 536 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1966 536 : if (wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
1967 : )
1968 : {
1969 536 : {
1970 536 : wi::overflow_type ovf;
1971 536 : wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]),
1972 1072 : TYPE_SIGN (TREE_TYPE (captures[1])), &ovf);
1973 536 : if (ovf
1974 : )
1975 : {
1976 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail671;
1977 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail671;
1978 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail671;
1979 0 : {
1980 0 : tree _r;
1981 0 : _r = constant_boolean_node (wi::lt_p (wi::to_wide (captures[2]), 0,
1982 0 : TYPE_SIGN (TREE_TYPE (captures[2])))
1983 0 : != (cmp == LT_EXPR || cmp == LE_EXPR), type);
1984 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1985 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1986 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 561, __FILE__, __LINE__, true);
1987 0 : return _r;
1988 : }
1989 0 : next_after_fail671:;
1990 : }
1991 : else
1992 : {
1993 536 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail672;
1994 536 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail672;
1995 536 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail672;
1996 536 : {
1997 536 : tree res_op0;
1998 536 : res_op0 = captures[0];
1999 536 : tree res_op1;
2000 536 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), prod);
2001 536 : tree _r;
2002 536 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2003 536 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 562, __FILE__, __LINE__, true);
2004 536 : return _r;
2005 : }
2006 0 : next_after_fail672:;
2007 : }
2008 536 : }
2009 : }
2010 : return NULL_TREE;
2011 : }
2012 :
2013 : tree
2014 0 : generic_simplify_403 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2015 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2016 : const enum tree_code ARG_UNUSED (op),
2017 : const enum tree_code ARG_UNUSED (cmp))
2018 : {
2019 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2020 0 : {
2021 0 : bool ok = true;
2022 0 : HOST_WIDE_INT val = 0;
2023 0 : if (!tree_fits_shwi_p (captures[3]))
2024 : ok = false;
2025 : else
2026 : {
2027 0 : val = tree_to_shwi (captures[3]);
2028 0 : if (op == GT_EXPR || op == LE_EXPR)
2029 : {
2030 0 : if (val == HOST_WIDE_INT_MAX)
2031 : ok = false;
2032 : else
2033 0 : val++;
2034 : }
2035 : }
2036 0 : HOST_WIDE_INT zero_val = tree_to_shwi (captures[2]);
2037 0 : tree type0 = TREE_TYPE (captures[1]);
2038 0 : int prec = TYPE_PRECISION (type0);
2039 0 : if (prec > MAX_FIXED_MODE_SIZE)
2040 0 : ok = false;
2041 0 : if (val <= 0
2042 : )
2043 : {
2044 0 : if (ok && zero_val >= val
2045 : )
2046 : {
2047 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail721;
2048 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail721;
2049 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail721;
2050 0 : {
2051 0 : tree _r;
2052 0 : _r = constant_boolean_node (cmp == EQ_EXPR ? true : false, type);
2053 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2054 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2055 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 594, __FILE__, __LINE__, true);
2056 0 : return _r;
2057 : }
2058 : next_after_fail721:;
2059 : }
2060 : }
2061 : else
2062 : {
2063 0 : if (val >= prec
2064 : )
2065 : {
2066 0 : if (ok && zero_val < val
2067 : )
2068 : {
2069 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail722;
2070 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail722;
2071 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail722;
2072 0 : {
2073 0 : tree _r;
2074 0 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
2075 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2076 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2077 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 595, __FILE__, __LINE__, true);
2078 0 : return _r;
2079 : }
2080 : next_after_fail722:;
2081 : }
2082 : }
2083 : else
2084 : {
2085 0 : if (ok && (zero_val < 0 || zero_val >= prec)
2086 : )
2087 : {
2088 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail723;
2089 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail723;
2090 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail723;
2091 0 : {
2092 0 : tree res_op0;
2093 0 : {
2094 0 : tree _o1[2], _r1;
2095 0 : _o1[0] = captures[1];
2096 0 : _o1[1] = wide_int_to_tree (type0,
2097 0 : wi::mask (val, false, prec));
2098 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2099 0 : res_op0 = _r1;
2100 : }
2101 0 : tree res_op1;
2102 0 : res_op1 = build_zero_cst (type0);
2103 0 : tree _r;
2104 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2105 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 596, __FILE__, __LINE__, true);
2106 0 : return _r;
2107 : }
2108 : next_after_fail723:;
2109 : }
2110 : }
2111 : }
2112 : }
2113 : return NULL_TREE;
2114 : }
2115 :
2116 : tree
2117 11 : generic_simplify_417 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2118 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2119 : {
2120 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2121 11 : if (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))
2122 : )
2123 : {
2124 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail741;
2125 11 : {
2126 11 : tree res_op0;
2127 11 : {
2128 11 : tree _o1[1], _r1;
2129 11 : _o1[0] = captures[0];
2130 11 : if (TREE_TYPE (_o1[0]) != type)
2131 : {
2132 8 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2133 : }
2134 : else
2135 : _r1 = _o1[0];
2136 11 : res_op0 = _r1;
2137 : }
2138 11 : tree res_op1;
2139 11 : {
2140 11 : tree _o1[2], _r1;
2141 11 : _o1[0] = build_minus_one_cst (type);
2142 11 : _o1[1] = captures[1];
2143 11 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2144 11 : res_op1 = _r1;
2145 : }
2146 11 : tree _r;
2147 11 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2148 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 610, __FILE__, __LINE__, true);
2149 11 : return _r;
2150 : }
2151 0 : next_after_fail741:;
2152 : }
2153 : return NULL_TREE;
2154 : }
2155 :
2156 : tree
2157 267 : generic_simplify_426 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2158 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2159 : const combined_fn ARG_UNUSED (bswap))
2160 : {
2161 267 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2162 267 : if (BITS_PER_UNIT == 8
2163 : && CHAR_TYPE_SIZE == 8
2164 267 : && tree_fits_uhwi_p (captures[2])
2165 : )
2166 : {
2167 267 : {
2168 267 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2169 267 : unsigned HOST_WIDE_INT bits = tree_to_uhwi (captures[2]);
2170 267 : tree st = TYPE_PRECISION (type) > prec ? TREE_TYPE (captures[0]) : type;
2171 267 : if (TYPE_PRECISION (type) > prec
2172 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2173 0 : && TYPE_UNSIGNED (type)
2174 267 : && bits < prec && bits + 8 >= prec
2175 : )
2176 : {
2177 0 : {
2178 0 : tree nst = build_int_cst (integer_type_node, prec - 8);
2179 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail754;
2180 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail754;
2181 0 : {
2182 0 : tree res_op0;
2183 0 : {
2184 0 : tree _o1[1], _r1;
2185 0 : {
2186 0 : tree _o2[2], _r2;
2187 0 : {
2188 0 : tree _o3[1], _r3;
2189 0 : _o3[0] = captures[1];
2190 0 : if (TREE_TYPE (_o3[0]) != st)
2191 : {
2192 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, st, _o3[0]);
2193 : }
2194 : else
2195 : _r3 = _o3[0];
2196 0 : _o2[0] = _r3;
2197 : }
2198 0 : _o2[1] = nst;
2199 0 : _r2 = fold_build2_loc (loc, LSHIFT_EXPR, st, _o2[0], _o2[1]);
2200 0 : _o1[0] = _r2;
2201 : }
2202 0 : if (TREE_TYPE (_o1[0]) != type)
2203 : {
2204 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2205 : }
2206 : else
2207 : _r1 = _o1[0];
2208 0 : res_op0 = _r1;
2209 : }
2210 0 : tree res_op1;
2211 0 : res_op1 = captures[2];
2212 0 : tree _r;
2213 0 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
2214 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 621, __FILE__, __LINE__, true);
2215 0 : return _r;
2216 : }
2217 : next_after_fail754:;
2218 : }
2219 : }
2220 : else
2221 : {
2222 267 : if (bits + 8 == prec
2223 : )
2224 : {
2225 46 : if (TYPE_UNSIGNED (st)
2226 : )
2227 : {
2228 36 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail755;
2229 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail755;
2230 36 : {
2231 36 : tree res_op0;
2232 36 : {
2233 36 : tree _o1[1], _r1;
2234 36 : _o1[0] = captures[1];
2235 36 : if (TREE_TYPE (_o1[0]) != unsigned_char_type_node)
2236 : {
2237 36 : _r1 = fold_build1_loc (loc, NOP_EXPR, unsigned_char_type_node, _o1[0]);
2238 : }
2239 : else
2240 : _r1 = _o1[0];
2241 36 : res_op0 = _r1;
2242 : }
2243 36 : tree _r;
2244 36 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2245 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 622, __FILE__, __LINE__, true);
2246 36 : return _r;
2247 : }
2248 : next_after_fail755:;
2249 : }
2250 : else
2251 : {
2252 10 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail756;
2253 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail756;
2254 10 : {
2255 10 : tree res_op0;
2256 10 : {
2257 10 : tree _o1[1], _r1;
2258 10 : _o1[0] = captures[1];
2259 10 : if (TREE_TYPE (_o1[0]) != signed_char_type_node)
2260 : {
2261 10 : _r1 = fold_build1_loc (loc, NOP_EXPR, signed_char_type_node, _o1[0]);
2262 : }
2263 : else
2264 : _r1 = _o1[0];
2265 10 : res_op0 = _r1;
2266 : }
2267 10 : tree _r;
2268 10 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2269 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 623, __FILE__, __LINE__, true);
2270 10 : return _r;
2271 : }
2272 : next_after_fail756:;
2273 : }
2274 : }
2275 : else
2276 : {
2277 221 : if (bits < prec && bits + 8 > prec
2278 : )
2279 : {
2280 57 : {
2281 57 : tree nst = build_int_cst (integer_type_node, bits & 7);
2282 57 : tree bt = TYPE_UNSIGNED (st) ? unsigned_char_type_node
2283 57 : : signed_char_type_node;
2284 57 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail757;
2285 57 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail757;
2286 57 : {
2287 57 : tree res_op0;
2288 57 : {
2289 57 : tree _o1[2], _r1;
2290 57 : {
2291 57 : tree _o2[1], _r2;
2292 57 : _o2[0] = captures[1];
2293 57 : if (TREE_TYPE (_o2[0]) != bt)
2294 : {
2295 57 : _r2 = fold_build1_loc (loc, NOP_EXPR, bt, _o2[0]);
2296 : }
2297 : else
2298 : _r2 = _o2[0];
2299 57 : _o1[0] = _r2;
2300 : }
2301 57 : _o1[1] = nst;
2302 57 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, bt, _o1[0], _o1[1]);
2303 57 : res_op0 = _r1;
2304 : }
2305 57 : tree _r;
2306 57 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2307 57 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 624, __FILE__, __LINE__, true);
2308 57 : return _r;
2309 : }
2310 : next_after_fail757:;
2311 : }
2312 : }
2313 : }
2314 : }
2315 : }
2316 : }
2317 : return NULL_TREE;
2318 : }
2319 :
2320 : tree
2321 0 : generic_simplify_440 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2322 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2323 : const combined_fn ARG_UNUSED (pow))
2324 : {
2325 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2326 0 : if (flag_unsafe_math_optimizations
2327 : )
2328 : {
2329 0 : if (! HONOR_INFINITIES (type)
2330 0 : && ! flag_trapping_math
2331 0 : && ! flag_errno_math
2332 : )
2333 : {
2334 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail785;
2335 0 : {
2336 0 : tree res_op0;
2337 0 : res_op0 = captures[2];
2338 0 : tree res_op1;
2339 0 : {
2340 0 : tree _o1[1], _r1;
2341 0 : _o1[0] = captures[3];
2342 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2343 0 : res_op1 = _r1;
2344 : }
2345 0 : tree _r;
2346 0 : _r = maybe_build_call_expr_loc (loc, pow, type, 2, res_op0, res_op1);
2347 0 : if (!_r)
2348 0 : goto next_after_fail785;
2349 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2350 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2351 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 640, __FILE__, __LINE__, true);
2352 0 : return _r;
2353 : }
2354 : next_after_fail785:;
2355 : }
2356 : }
2357 : return NULL_TREE;
2358 : }
2359 :
2360 : tree
2361 0 : generic_simplify_446 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2362 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2363 : const combined_fn ARG_UNUSED (HYPOT))
2364 : {
2365 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2366 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail791;
2367 0 : {
2368 0 : tree res_op0;
2369 0 : res_op0 = captures[0];
2370 0 : tree _r;
2371 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2372 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2373 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2374 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 646, __FILE__, __LINE__, true);
2375 : return _r;
2376 : }
2377 0 : next_after_fail791:;
2378 0 : return NULL_TREE;
2379 : }
2380 :
2381 : tree
2382 4874349 : generic_simplify_448 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2383 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2384 : {
2385 4874349 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2386 4874349 : {
2387 4874349 : bool wascmp;
2388 4874349 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2389 4874349 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
2390 : )
2391 : {
2392 115 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail793;
2393 115 : {
2394 115 : tree _r;
2395 115 : _r = wascmp ? constant_boolean_node (false, type) : build_zero_cst (type);
2396 115 : if (TREE_SIDE_EFFECTS (captures[0]))
2397 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2398 115 : if (TREE_SIDE_EFFECTS (captures[1]))
2399 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2400 115 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 648, __FILE__, __LINE__, true);
2401 115 : return _r;
2402 : }
2403 0 : next_after_fail793:;
2404 : }
2405 : }
2406 4874234 : return NULL_TREE;
2407 : }
2408 :
2409 : tree
2410 82 : generic_simplify_456 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2411 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2412 : const enum tree_code ARG_UNUSED (bitop),
2413 : const enum tree_code ARG_UNUSED (op))
2414 : {
2415 82 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2416 82 : {
2417 82 : tree pmop[2];
2418 82 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[5], op, captures[1], bitop,
2419 : captures[2], captures[3], captures[4], ERROR_MARK, NULL_TREE,
2420 : NULL_TREE, pmop);
2421 82 : if (utype
2422 : )
2423 : {
2424 22 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail801;
2425 22 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail801;
2426 22 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail801;
2427 22 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail801;
2428 22 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail801;
2429 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail801;
2430 22 : {
2431 22 : tree res_op0;
2432 22 : {
2433 22 : tree _o1[2], _r1;
2434 22 : {
2435 22 : tree _o2[2], _r2;
2436 22 : {
2437 22 : tree _o3[1], _r3;
2438 22 : _o3[0] = pmop[0];
2439 22 : if (TREE_TYPE (_o3[0]) != utype)
2440 : {
2441 10 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2442 : }
2443 : else
2444 : _r3 = _o3[0];
2445 22 : _o2[0] = _r3;
2446 : }
2447 22 : {
2448 22 : tree _o3[1], _r3;
2449 22 : _o3[0] = pmop[1];
2450 22 : if (TREE_TYPE (_o3[0]) != utype)
2451 : {
2452 10 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2453 : }
2454 : else
2455 : _r3 = _o3[0];
2456 22 : _o2[1] = _r3;
2457 : }
2458 22 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2459 22 : _o1[0] = _r2;
2460 : }
2461 22 : {
2462 22 : tree _o2[1], _r2;
2463 22 : _o2[0] = captures[5];
2464 22 : if (TREE_TYPE (_o2[0]) != utype)
2465 : {
2466 10 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2467 : }
2468 : else
2469 : _r2 = _o2[0];
2470 22 : _o1[1] = _r2;
2471 : }
2472 22 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2473 22 : res_op0 = _r1;
2474 : }
2475 22 : tree _r;
2476 22 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2477 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 655, __FILE__, __LINE__, true);
2478 22 : return _r;
2479 : }
2480 60 : next_after_fail801:;
2481 : }
2482 : }
2483 60 : return NULL_TREE;
2484 : }
2485 :
2486 : tree
2487 201 : generic_simplify_472 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2488 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2489 : const enum tree_code ARG_UNUSED (code2),
2490 : const enum tree_code ARG_UNUSED (code1))
2491 : {
2492 201 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2493 201 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2494 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
2495 201 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2496 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2497 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2498 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2499 199 : && bitwise_equal_p (captures[2], captures[5]))
2500 : )
2501 : {
2502 2 : {
2503 2 : bool one_before = false;
2504 2 : bool one_after = false;
2505 2 : int cmp = 0;
2506 2 : bool allbits = true;
2507 2 : if (TREE_CODE (captures[2]) == INTEGER_CST
2508 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
2509 : {
2510 2 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2511 2 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2512 2 : auto t2 = wi::to_wide (captures[5]);
2513 2 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2514 2 : if (cmp < 0
2515 2 : && t1 == t2 - 1)
2516 : one_before = true;
2517 2 : if (cmp > 0
2518 2 : && t1 == t2 + 1)
2519 : one_after = true;
2520 : }
2521 2 : bool val;
2522 2 : switch (code2)
2523 : {
2524 0 : case EQ_EXPR: val = (cmp == 0); break;
2525 2 : case NE_EXPR: val = (cmp != 0); break;
2526 0 : case LT_EXPR: val = (cmp < 0); break;
2527 0 : case GT_EXPR: val = (cmp > 0); break;
2528 0 : case LE_EXPR: val = (cmp <= 0); break;
2529 0 : case GE_EXPR: val = (cmp >= 0); break;
2530 0 : default: gcc_unreachable ();
2531 : }
2532 2 : if (code1 == EQ_EXPR && val
2533 : )
2534 : {
2535 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail825;
2536 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail825;
2537 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail825;
2538 0 : {
2539 0 : tree _r;
2540 0 : _r = captures[0];
2541 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2542 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2543 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 671, __FILE__, __LINE__, true);
2544 0 : return _r;
2545 : }
2546 : next_after_fail825:;
2547 : }
2548 : else
2549 : {
2550 2 : if (code1 == EQ_EXPR && !val
2551 : )
2552 : {
2553 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail826;
2554 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail826;
2555 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail826;
2556 0 : {
2557 0 : tree _r;
2558 0 : _r = constant_boolean_node (false, type);
2559 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2560 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2561 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 672, __FILE__, __LINE__, true);
2562 0 : return _r;
2563 : }
2564 : next_after_fail826:;
2565 : }
2566 : else
2567 : {
2568 2 : if (code1 == NE_EXPR && !val && allbits
2569 : )
2570 : {
2571 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail827;
2572 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail827;
2573 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail827;
2574 0 : {
2575 0 : tree _r;
2576 0 : _r = captures[3];
2577 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 673, __FILE__, __LINE__, true);
2578 0 : return _r;
2579 : }
2580 : next_after_fail827:;
2581 : }
2582 : else
2583 : {
2584 2 : if ((code1 == NE_EXPR
2585 2 : && code2 == GE_EXPR
2586 0 : && cmp == 0
2587 0 : && allbits)
2588 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2589 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2590 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2591 : )
2592 : {
2593 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail828;
2594 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail828;
2595 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail828;
2596 0 : {
2597 0 : tree res_op0;
2598 0 : res_op0 = captures[4];
2599 0 : tree res_op1;
2600 0 : {
2601 0 : tree _o1[1], _r1;
2602 0 : _o1[0] = captures[2];
2603 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2604 : {
2605 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2606 : }
2607 : else
2608 : _r1 = _o1[0];
2609 0 : res_op1 = _r1;
2610 : }
2611 0 : tree _r;
2612 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2613 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 674, __FILE__, __LINE__, true);
2614 0 : return _r;
2615 : }
2616 : next_after_fail828:;
2617 : }
2618 : else
2619 : {
2620 2 : if ((code1 == NE_EXPR
2621 2 : && code2 == LE_EXPR
2622 0 : && cmp == 0
2623 0 : && allbits)
2624 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2625 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2626 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2627 : )
2628 : {
2629 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail829;
2630 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail829;
2631 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail829;
2632 0 : {
2633 0 : tree res_op0;
2634 0 : res_op0 = captures[4];
2635 0 : tree res_op1;
2636 0 : {
2637 0 : tree _o1[1], _r1;
2638 0 : _o1[0] = captures[2];
2639 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2640 : {
2641 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2642 : }
2643 : else
2644 : _r1 = _o1[0];
2645 0 : res_op1 = _r1;
2646 : }
2647 0 : tree _r;
2648 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2649 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 675, __FILE__, __LINE__, true);
2650 0 : return _r;
2651 : }
2652 : next_after_fail829:;
2653 : }
2654 : else
2655 : {
2656 2 : if ((code1 == NE_EXPR
2657 2 : && code2 == GT_EXPR
2658 : && one_after
2659 0 : && allbits)
2660 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2661 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2662 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2663 : )
2664 : {
2665 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail830;
2666 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail830;
2667 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail830;
2668 0 : {
2669 0 : tree res_op0;
2670 0 : res_op0 = captures[4];
2671 0 : tree res_op1;
2672 0 : {
2673 0 : tree _o1[1], _r1;
2674 0 : _o1[0] = captures[2];
2675 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2676 : {
2677 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2678 : }
2679 : else
2680 : _r1 = _o1[0];
2681 0 : res_op1 = _r1;
2682 : }
2683 0 : tree _r;
2684 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2685 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2686 0 : return _r;
2687 : }
2688 : next_after_fail830:;
2689 : }
2690 : else
2691 : {
2692 2 : if ((code1 == NE_EXPR
2693 2 : && code2 == LT_EXPR
2694 : && one_before
2695 0 : && allbits)
2696 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2697 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2698 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2699 : )
2700 : {
2701 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail831;
2702 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail831;
2703 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail831;
2704 0 : {
2705 0 : tree res_op0;
2706 0 : res_op0 = captures[4];
2707 0 : tree res_op1;
2708 0 : {
2709 0 : tree _o1[1], _r1;
2710 0 : _o1[0] = captures[2];
2711 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2712 : {
2713 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2714 : }
2715 : else
2716 : _r1 = _o1[0];
2717 0 : res_op1 = _r1;
2718 : }
2719 0 : tree _r;
2720 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2722 0 : return _r;
2723 : }
2724 : next_after_fail831:;
2725 : }
2726 : }
2727 : }
2728 : }
2729 : }
2730 : }
2731 : }
2732 : }
2733 : }
2734 : return NULL_TREE;
2735 : }
2736 :
2737 : tree
2738 0 : generic_simplify_504 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2739 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2740 : {
2741 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2742 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2743 : )
2744 : {
2745 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail893;
2746 0 : {
2747 0 : tree res_op0;
2748 0 : {
2749 0 : tree _o1[2], _r1;
2750 0 : _o1[0] = captures[0];
2751 0 : _o1[1] = captures[1];
2752 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2753 0 : res_op0 = _r1;
2754 : }
2755 0 : tree _r;
2756 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2757 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 708, __FILE__, __LINE__, true);
2758 0 : return _r;
2759 : }
2760 0 : next_after_fail893:;
2761 : }
2762 : return NULL_TREE;
2763 : }
2764 :
2765 : tree
2766 38960 : generic_simplify_510 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2767 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2768 : {
2769 38960 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2770 38960 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type)
2771 38960 : && !HONOR_SIGNED_ZEROS (type)
2772 : )
2773 : {
2774 38960 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail900;
2775 38960 : {
2776 38960 : tree res_op0;
2777 38960 : {
2778 38960 : tree _o1[1], _r1;
2779 38960 : _o1[0] = captures[1];
2780 38960 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2781 38960 : res_op0 = _r1;
2782 : }
2783 38960 : tree res_op1;
2784 38960 : res_op1 = captures[0];
2785 38960 : tree _r;
2786 38960 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
2787 38960 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 713, __FILE__, __LINE__, true);
2788 38960 : return _r;
2789 : }
2790 0 : next_after_fail900:;
2791 : }
2792 : return NULL_TREE;
2793 : }
2794 :
2795 : tree
2796 16 : generic_simplify_516 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2797 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2798 : const combined_fn ARG_UNUSED (fmas))
2799 : {
2800 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2801 16 : if (canonicalize_math_after_vectorization_p ()
2802 : )
2803 : {
2804 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
2805 : )
2806 : {
2807 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail907;
2808 : {
2809 : tree res_op0;
2810 : res_op0 = captures[1];
2811 : tree res_op1;
2812 : res_op1 = captures[2];
2813 : tree res_op2;
2814 : res_op2 = captures[3];
2815 : tree _r;
2816 : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
2817 : if (!_r)
2818 : goto next_after_fail907;
2819 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 720, __FILE__, __LINE__, true);
2820 : return _r;
2821 : }
2822 16 : next_after_fail907:;
2823 : }
2824 : }
2825 16 : return NULL_TREE;
2826 : }
2827 :
2828 : tree
2829 0 : generic_simplify_528 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2830 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2831 : const enum tree_code ARG_UNUSED (minmax),
2832 : const enum tree_code ARG_UNUSED (cmp))
2833 : {
2834 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2835 0 : {
2836 0 : poly_int64 off0, off1;
2837 0 : tree base0, base1;
2838 0 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2839 : off0, off1,
2840 : 1
2841 : );
2842 0 : if (equal == 1
2843 : )
2844 : {
2845 0 : if (minmax == MIN_EXPR
2846 : )
2847 : {
2848 0 : if (known_le (off0, off1)
2849 : )
2850 : {
2851 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail927;
2852 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail927;
2853 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail927;
2854 0 : {
2855 0 : tree _r;
2856 0 : _r = captures[0];
2857 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 731, __FILE__, __LINE__, true);
2858 0 : return _r;
2859 : }
2860 0 : next_after_fail927:;
2861 : }
2862 : else
2863 : {
2864 0 : if (known_gt (off0, off1)
2865 : )
2866 : {
2867 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail928;
2868 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail928;
2869 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail928;
2870 0 : {
2871 0 : tree _r;
2872 0 : _r = captures[2];
2873 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 732, __FILE__, __LINE__, true);
2874 0 : return _r;
2875 : }
2876 0 : next_after_fail928:;
2877 : }
2878 : }
2879 : }
2880 : else
2881 : {
2882 0 : if (known_ge (off0, off1)
2883 : )
2884 : {
2885 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail929;
2886 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail929;
2887 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail929;
2888 0 : {
2889 0 : tree _r;
2890 0 : _r = captures[0];
2891 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 733, __FILE__, __LINE__, true);
2892 0 : return _r;
2893 : }
2894 0 : next_after_fail929:;
2895 : }
2896 : else
2897 : {
2898 0 : if (known_lt (off0, off1)
2899 : )
2900 : {
2901 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail930;
2902 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail930;
2903 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail930;
2904 0 : {
2905 0 : tree _r;
2906 0 : _r = captures[2];
2907 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 734, __FILE__, __LINE__, true);
2908 0 : return _r;
2909 : }
2910 0 : next_after_fail930:;
2911 : }
2912 : }
2913 : }
2914 : }
2915 : }
2916 0 : return NULL_TREE;
2917 : }
2918 :
2919 : tree
2920 0 : generic_simplify_549 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2921 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2922 : const combined_fn ARG_UNUSED (cond_len_op))
2923 : {
2924 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2925 0 : {
2926 0 : tree op_type = TREE_TYPE (captures[4]);
2927 0 : if (element_precision (type) == element_precision (op_type)
2928 : )
2929 : {
2930 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail954;
2931 0 : {
2932 0 : tree res_op0;
2933 0 : {
2934 0 : tree _o1[7], _r1;
2935 0 : _o1[0] = captures[0];
2936 0 : _o1[1] = captures[1];
2937 0 : _o1[2] = captures[2];
2938 0 : _o1[3] = captures[3];
2939 0 : {
2940 0 : tree _o2[1], _r2;
2941 0 : _o2[0] = captures[7];
2942 0 : if (TREE_TYPE (_o2[0]) != op_type)
2943 : {
2944 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2945 : }
2946 : else
2947 : _r2 = _o2[0];
2948 0 : _o1[4] = _r2;
2949 : }
2950 0 : _o1[5] = captures[5];
2951 0 : _o1[6] = captures[6];
2952 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 7, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5], _o1[6]);
2953 0 : if (!_r1)
2954 0 : goto next_after_fail954;
2955 0 : res_op0 = _r1;
2956 : }
2957 0 : tree _r;
2958 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2959 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2960 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2961 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 749, __FILE__, __LINE__, true);
2962 0 : return _r;
2963 : }
2964 : next_after_fail954:;
2965 : }
2966 : }
2967 : return NULL_TREE;
2968 : }
2969 :
2970 : tree
2971 1802430 : generic_simplify_560 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2972 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2973 : const enum tree_code ARG_UNUSED (cmp))
2974 : {
2975 1802430 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2976 1802430 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
2977 1802430 : && (cmp != LTGT_EXPR || ! flag_trapping_math)
2978 : )
2979 : {
2980 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail968;
2981 10 : {
2982 10 : tree _r;
2983 20 : _r = constant_boolean_node (cmp == ORDERED_EXPR || cmp == LTGT_EXPR
2984 10 : ? false : true, type);
2985 10 : if (TREE_SIDE_EFFECTS (captures[0]))
2986 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2987 10 : if (TREE_SIDE_EFFECTS (captures[1]))
2988 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2989 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 763, __FILE__, __LINE__, true);
2990 10 : return _r;
2991 : }
2992 0 : next_after_fail968:;
2993 : }
2994 : return NULL_TREE;
2995 : }
2996 :
2997 : tree
2998 0 : generic_simplify_570 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2999 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3000 : const combined_fn ARG_UNUSED (sinhs),
3001 : const combined_fn ARG_UNUSED (atanhs),
3002 : const combined_fn ARG_UNUSED (sqrts))
3003 : {
3004 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3005 0 : if (!flag_errno_math
3006 : )
3007 : {
3008 0 : {
3009 0 : tree t_one = build_one_cst (type);
3010 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail978;
3011 0 : {
3012 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail978;
3013 0 : tree res_op0;
3014 0 : res_op0 = unshare_expr (captures[1]);
3015 0 : tree res_op1;
3016 0 : {
3017 0 : tree _o1[1], _r1;
3018 0 : {
3019 0 : tree _o2[2], _r2;
3020 0 : {
3021 0 : tree _o3[2], _r3;
3022 0 : _o3[0] = t_one;
3023 0 : _o3[1] = unshare_expr (captures[1]);
3024 0 : _r3 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3025 0 : _o2[0] = _r3;
3026 : }
3027 0 : {
3028 0 : tree _o3[2], _r3;
3029 0 : _o3[0] = t_one;
3030 0 : _o3[1] = captures[1];
3031 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3032 0 : _o2[1] = _r3;
3033 : }
3034 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3035 0 : _o1[0] = _r2;
3036 : }
3037 0 : _r1 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o1[0]), 1, _o1[0]);
3038 0 : if (!_r1)
3039 0 : goto next_after_fail978;
3040 0 : res_op1 = _r1;
3041 : }
3042 0 : tree _r;
3043 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3044 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 773, __FILE__, __LINE__, true);
3045 0 : return _r;
3046 : }
3047 : next_after_fail978:;
3048 : }
3049 : }
3050 : return NULL_TREE;
3051 : }
3052 :
3053 : tree
3054 0 : generic_simplify_586 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3055 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3056 : const combined_fn ARG_UNUSED (SIGNBIT))
3057 : {
3058 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3059 0 : if (!HONOR_SIGNED_ZEROS (captures[0])
3060 : )
3061 : {
3062 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail994;
3063 0 : {
3064 0 : tree res_op0;
3065 0 : {
3066 0 : tree _o1[2], _r1;
3067 0 : _o1[0] = captures[0];
3068 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), dconst0);
3069 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3070 0 : res_op0 = _r1;
3071 : }
3072 0 : tree _r;
3073 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3074 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 789, __FILE__, __LINE__, true);
3075 0 : return _r;
3076 : }
3077 0 : next_after_fail994:;
3078 : }
3079 : return NULL_TREE;
3080 : }
3081 :
3082 : tree
3083 0 : generic_simplify_596 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3084 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3085 : const combined_fn ARG_UNUSED (fmas))
3086 : {
3087 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3088 0 : if (canonicalize_math_after_vectorization_p ()
3089 : )
3090 : {
3091 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1004;
3092 : {
3093 : tree res_op0;
3094 : res_op0 = captures[0];
3095 : tree res_op1;
3096 : res_op1 = captures[1];
3097 : tree res_op2;
3098 : res_op2 = captures[2];
3099 : tree res_op3;
3100 : res_op3 = captures[3];
3101 : tree res_op4;
3102 : res_op4 = captures[4];
3103 : tree _r;
3104 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3105 : if (!_r)
3106 : goto next_after_fail1004;
3107 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 799, __FILE__, __LINE__, true);
3108 : return _r;
3109 : }
3110 0 : next_after_fail1004:;
3111 : }
3112 0 : return NULL_TREE;
3113 : }
3114 :
3115 : tree
3116 0 : generic_simplify_606 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3117 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3118 : const combined_fn ARG_UNUSED (ctz))
3119 : {
3120 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3121 0 : {
3122 0 : tree t = TREE_TYPE (captures[0]);
3123 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1014;
3124 0 : {
3125 0 : tree res_op0;
3126 0 : {
3127 0 : tree _o1[1], _r1;
3128 0 : _o1[0] = captures[1];
3129 0 : if (TREE_TYPE (_o1[0]) != t)
3130 : {
3131 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3132 : }
3133 : else
3134 : _r1 = _o1[0];
3135 0 : res_op0 = _r1;
3136 : }
3137 0 : tree _r;
3138 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3139 0 : if (!_r)
3140 0 : goto next_after_fail1014;
3141 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 807, __FILE__, __LINE__, true);
3142 : return _r;
3143 : }
3144 : next_after_fail1014:;
3145 : }
3146 : return NULL_TREE;
3147 : }
3148 :
3149 : tree
3150 0 : generic_simplify_616 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3151 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3152 : const enum tree_code ARG_UNUSED (rot),
3153 : const combined_fn ARG_UNUSED (parity))
3154 : {
3155 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3156 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3157 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3158 0 : && (
3159 :
3160 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3161 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3162 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3163 : )
3164 : {
3165 0 : {
3166 0 : tree type0 = TREE_TYPE (captures[0]);
3167 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1025;
3168 0 : {
3169 0 : tree res_op0;
3170 0 : {
3171 0 : tree _o1[1], _r1;
3172 0 : _o1[0] = captures[2];
3173 0 : if (TREE_TYPE (_o1[0]) != type0)
3174 : {
3175 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3176 : }
3177 : else
3178 : _r1 = _o1[0];
3179 0 : res_op0 = _r1;
3180 : }
3181 0 : tree _r;
3182 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3183 0 : if (!_r)
3184 0 : goto next_after_fail1025;
3185 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3186 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3187 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 815, __FILE__, __LINE__, true);
3188 0 : return _r;
3189 : }
3190 : next_after_fail1025:;
3191 : }
3192 : }
3193 : return NULL_TREE;
3194 : }
3195 :
3196 : tree
3197 2752056 : generic_simplify_BIT_NOT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3198 : {
3199 2752056 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3200 2752056 : switch (TREE_CODE (_p0))
3201 : {
3202 1134 : case BIT_AND_EXPR:
3203 1134 : {
3204 1134 : tree _q20 = TREE_OPERAND (_p0, 0);
3205 1134 : tree _q21 = TREE_OPERAND (_p0, 1);
3206 1134 : switch (TREE_CODE (_q20))
3207 : {
3208 33 : case BIT_NOT_EXPR:
3209 33 : {
3210 33 : tree _q30 = TREE_OPERAND (_q20, 0);
3211 33 : {
3212 33 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3213 33 : tree res = generic_simplify_496 (loc, type, _p0, captures);
3214 33 : if (res) return res;
3215 : }
3216 0 : break;
3217 : }
3218 1101 : default:;
3219 : }
3220 1101 : switch (TREE_CODE (_q21))
3221 : {
3222 9 : case BIT_NOT_EXPR:
3223 9 : {
3224 9 : tree _q40 = TREE_OPERAND (_q21, 0);
3225 9 : {
3226 9 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3227 9 : tree res = generic_simplify_496 (loc, type, _p0, captures);
3228 9 : if (res) return res;
3229 : }
3230 0 : break;
3231 : }
3232 : default:;
3233 : }
3234 : break;
3235 : }
3236 1209 : case BIT_IOR_EXPR:
3237 1209 : {
3238 1209 : tree _q20 = TREE_OPERAND (_p0, 0);
3239 1209 : tree _q21 = TREE_OPERAND (_p0, 1);
3240 1209 : switch (TREE_CODE (_q20))
3241 : {
3242 68 : case BIT_NOT_EXPR:
3243 68 : {
3244 68 : tree _q30 = TREE_OPERAND (_q20, 0);
3245 68 : {
3246 68 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3247 68 : tree res = generic_simplify_497 (loc, type, _p0, captures);
3248 68 : if (res) return res;
3249 : }
3250 0 : break;
3251 : }
3252 1141 : default:;
3253 : }
3254 1141 : switch (TREE_CODE (_q21))
3255 : {
3256 40 : case BIT_NOT_EXPR:
3257 40 : {
3258 40 : tree _q40 = TREE_OPERAND (_q21, 0);
3259 40 : {
3260 40 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3261 40 : tree res = generic_simplify_497 (loc, type, _p0, captures);
3262 40 : if (res) return res;
3263 : }
3264 0 : break;
3265 : }
3266 : default:;
3267 : }
3268 : break;
3269 : }
3270 148 : case MINUS_EXPR:
3271 148 : {
3272 148 : tree _q20 = TREE_OPERAND (_p0, 0);
3273 148 : tree _q21 = TREE_OPERAND (_p0, 1);
3274 148 : switch (TREE_CODE (_q20))
3275 : {
3276 1 : case BIT_NOT_EXPR:
3277 1 : {
3278 1 : tree _q30 = TREE_OPERAND (_q20, 0);
3279 1 : {
3280 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
3281 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1061;
3282 1 : {
3283 1 : tree res_op0;
3284 1 : res_op0 = captures[0];
3285 1 : tree res_op1;
3286 1 : res_op1 = captures[1];
3287 1 : tree _r;
3288 1 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3289 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
3290 1 : return _r;
3291 : }
3292 0 : next_after_fail1061:;
3293 : }
3294 0 : break;
3295 : }
3296 147 : default:;
3297 : }
3298 147 : {
3299 147 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3300 147 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1062;
3301 147 : {
3302 147 : tree res_op0;
3303 147 : {
3304 147 : tree _o1[1], _r1;
3305 147 : _o1[0] = captures[1];
3306 147 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3307 147 : res_op0 = _r1;
3308 : }
3309 147 : tree res_op1;
3310 147 : res_op1 = captures[2];
3311 147 : tree _r;
3312 147 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3313 147 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
3314 147 : return _r;
3315 : }
3316 0 : next_after_fail1062:;
3317 : }
3318 0 : if (integer_each_onep (_q21))
3319 : {
3320 0 : {
3321 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3322 0 : tree res = generic_simplify_498 (loc, type, _p0, captures);
3323 0 : if (res) return res;
3324 : }
3325 : }
3326 : break;
3327 : }
3328 88749 : case PLUS_EXPR:
3329 88749 : {
3330 88749 : tree _q20 = TREE_OPERAND (_p0, 0);
3331 88749 : tree _q21 = TREE_OPERAND (_p0, 1);
3332 88749 : switch (TREE_CODE (_q20))
3333 : {
3334 16 : case BIT_NOT_EXPR:
3335 16 : {
3336 16 : tree _q30 = TREE_OPERAND (_q20, 0);
3337 16 : {
3338 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
3339 16 : tree res = generic_simplify_499 (loc, type, _p0, captures);
3340 16 : if (res) return res;
3341 : }
3342 0 : break;
3343 : }
3344 88733 : default:;
3345 : }
3346 88733 : switch (TREE_CODE (_q21))
3347 : {
3348 1 : case BIT_NOT_EXPR:
3349 1 : {
3350 1 : tree _q40 = TREE_OPERAND (_q21, 0);
3351 1 : {
3352 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
3353 1 : tree res = generic_simplify_499 (loc, type, _p0, captures);
3354 1 : if (res) return res;
3355 : }
3356 0 : break;
3357 : }
3358 73853 : case INTEGER_CST:
3359 73853 : {
3360 73853 : {
3361 73853 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3362 73853 : if ((INTEGRAL_TYPE_P (type)
3363 73853 : && TYPE_UNSIGNED (type))
3364 86523 : || (!TYPE_OVERFLOW_SANITIZED (type)
3365 12662 : && may_negate_without_overflow_p (captures[2]))
3366 : )
3367 : {
3368 73838 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1063;
3369 73838 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1063;
3370 73838 : {
3371 73838 : tree res_op0;
3372 73838 : {
3373 73838 : tree _o1[1], _r1;
3374 73838 : _o1[0] = captures[1];
3375 73838 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3376 73838 : res_op0 = _r1;
3377 : }
3378 73838 : tree res_op1;
3379 73838 : res_op1 = const_unop (NEGATE_EXPR, type, captures[2]);
3380 73838 : tree _r;
3381 73838 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3382 73838 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
3383 73838 : return _r;
3384 : }
3385 15 : next_after_fail1063:;
3386 : }
3387 : }
3388 15 : break;
3389 : }
3390 14894 : default:;
3391 : }
3392 14894 : if (integer_all_onesp (_q21))
3393 : {
3394 0 : {
3395 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3396 0 : tree res = generic_simplify_500 (loc, type, _p0, captures);
3397 0 : if (res) return res;
3398 : }
3399 : }
3400 : break;
3401 : }
3402 394 : case RSHIFT_EXPR:
3403 394 : {
3404 394 : tree _q20 = TREE_OPERAND (_p0, 0);
3405 394 : tree _q21 = TREE_OPERAND (_p0, 1);
3406 394 : {
3407 394 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3408 394 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3409 : )
3410 : {
3411 291 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1064;
3412 291 : {
3413 291 : tree res_op0;
3414 291 : {
3415 291 : tree _o1[1], _r1;
3416 291 : _o1[0] = captures[1];
3417 291 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3418 291 : if (EXPR_P (_r1))
3419 285 : goto next_after_fail1064;
3420 6 : res_op0 = _r1;
3421 : }
3422 6 : tree res_op1;
3423 6 : res_op1 = captures[2];
3424 6 : tree _r;
3425 6 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
3426 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
3427 6 : return _r;
3428 : }
3429 373 : next_after_fail1064:;
3430 : }
3431 : else
3432 : {
3433 206 : if (INTEGRAL_TYPE_P (type)
3434 206 : && !wi::neg_p (tree_nonzero_bits (captures[1]))
3435 : )
3436 : {
3437 15 : {
3438 15 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
3439 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1065;
3440 15 : {
3441 15 : tree res_op0;
3442 15 : {
3443 15 : tree _o1[2], _r1;
3444 15 : {
3445 15 : tree _o2[1], _r2;
3446 15 : {
3447 15 : tree _o3[1], _r3;
3448 15 : _o3[0] = captures[1];
3449 15 : if (TREE_TYPE (_o3[0]) != stype)
3450 : {
3451 15 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
3452 : }
3453 : else
3454 : _r3 = _o3[0];
3455 15 : _o2[0] = _r3;
3456 : }
3457 15 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3458 15 : if (EXPR_P (_r2))
3459 0 : goto next_after_fail1065;
3460 15 : _o1[0] = _r2;
3461 : }
3462 15 : _o1[1] = captures[2];
3463 15 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3464 15 : res_op0 = _r1;
3465 : }
3466 15 : tree _r;
3467 15 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3468 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
3469 15 : return _r;
3470 : }
3471 373 : next_after_fail1065:;
3472 : }
3473 : }
3474 : }
3475 : }
3476 373 : switch (TREE_CODE (_q20))
3477 : {
3478 40 : CASE_CONVERT:
3479 40 : {
3480 40 : tree _q30 = TREE_OPERAND (_q20, 0);
3481 40 : switch (TREE_CODE (_q30))
3482 : {
3483 2 : case BIT_NOT_EXPR:
3484 2 : {
3485 2 : tree _q40 = TREE_OPERAND (_q30, 0);
3486 2 : {
3487 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
3488 2 : tree res = generic_simplify_501 (loc, type, _p0, captures);
3489 2 : if (res) return res;
3490 : }
3491 1 : break;
3492 : }
3493 : default:;
3494 : }
3495 : break;
3496 : }
3497 29 : case BIT_NOT_EXPR:
3498 29 : {
3499 29 : tree _q30 = TREE_OPERAND (_q20, 0);
3500 29 : {
3501 29 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
3502 29 : tree res = generic_simplify_501 (loc, type, _p0, captures);
3503 29 : if (res) return res;
3504 : }
3505 8 : break;
3506 : }
3507 : default:;
3508 : }
3509 : break;
3510 : }
3511 86 : case BIT_NOT_EXPR:
3512 86 : {
3513 86 : tree _q20 = TREE_OPERAND (_p0, 0);
3514 86 : {
3515 86 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3516 86 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1066;
3517 86 : {
3518 86 : tree res_op0;
3519 86 : res_op0 = captures[0];
3520 86 : tree _r;
3521 86 : _r = non_lvalue_loc (loc, res_op0);
3522 86 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
3523 2752056 : return _r;
3524 : }
3525 0 : next_after_fail1066:;
3526 : }
3527 0 : break;
3528 : }
3529 990752 : CASE_CONVERT:
3530 990752 : {
3531 990752 : tree _q20 = TREE_OPERAND (_p0, 0);
3532 990752 : switch (TREE_CODE (_q20))
3533 : {
3534 25 : case NEGATE_EXPR:
3535 25 : {
3536 25 : tree _q30 = TREE_OPERAND (_q20, 0);
3537 25 : {
3538 25 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3539 25 : tree res = generic_simplify_502 (loc, type, _p0, captures);
3540 25 : if (res) return res;
3541 : }
3542 0 : break;
3543 : }
3544 892 : case MINUS_EXPR:
3545 892 : {
3546 892 : tree _q30 = TREE_OPERAND (_q20, 0);
3547 892 : tree _q31 = TREE_OPERAND (_q20, 1);
3548 892 : if (integer_each_onep (_q31))
3549 : {
3550 28 : {
3551 28 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3552 28 : tree res = generic_simplify_498 (loc, type, _p0, captures);
3553 28 : if (res) return res;
3554 : }
3555 : }
3556 : break;
3557 : }
3558 54419 : case PLUS_EXPR:
3559 54419 : {
3560 54419 : tree _q30 = TREE_OPERAND (_q20, 0);
3561 54419 : tree _q31 = TREE_OPERAND (_q20, 1);
3562 54419 : if (integer_all_onesp (_q31))
3563 : {
3564 3904 : {
3565 3904 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3566 3904 : tree res = generic_simplify_500 (loc, type, _p0, captures);
3567 3904 : if (res) return res;
3568 : }
3569 : }
3570 : break;
3571 : }
3572 145 : case BIT_XOR_EXPR:
3573 145 : {
3574 145 : tree _q30 = TREE_OPERAND (_q20, 0);
3575 145 : tree _q31 = TREE_OPERAND (_q20, 1);
3576 145 : switch (TREE_CODE (_q31))
3577 : {
3578 7 : case INTEGER_CST:
3579 7 : {
3580 7 : {
3581 7 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
3582 7 : tree res = generic_simplify_503 (loc, type, _p0, captures);
3583 7 : if (res) return res;
3584 : }
3585 0 : break;
3586 : }
3587 138 : default:;
3588 : }
3589 138 : switch (TREE_CODE (_q30))
3590 : {
3591 0 : case BIT_NOT_EXPR:
3592 0 : {
3593 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3594 0 : {
3595 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q31 };
3596 0 : tree res = generic_simplify_504 (loc, type, _p0, captures);
3597 0 : if (res) return res;
3598 : }
3599 0 : break;
3600 : }
3601 138 : default:;
3602 : }
3603 138 : switch (TREE_CODE (_q31))
3604 : {
3605 0 : case BIT_NOT_EXPR:
3606 0 : {
3607 0 : tree _q50 = TREE_OPERAND (_q31, 0);
3608 0 : {
3609 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
3610 0 : tree res = generic_simplify_504 (loc, type, _p0, captures);
3611 0 : if (res) return res;
3612 : }
3613 0 : break;
3614 : }
3615 : default:;
3616 : }
3617 : break;
3618 : }
3619 93 : case RSHIFT_EXPR:
3620 93 : {
3621 93 : tree _q30 = TREE_OPERAND (_q20, 0);
3622 93 : tree _q31 = TREE_OPERAND (_q20, 1);
3623 93 : switch (TREE_CODE (_q30))
3624 : {
3625 17 : CASE_CONVERT:
3626 17 : {
3627 17 : tree _q40 = TREE_OPERAND (_q30, 0);
3628 17 : switch (TREE_CODE (_q40))
3629 : {
3630 1 : case BIT_NOT_EXPR:
3631 1 : {
3632 1 : tree _q50 = TREE_OPERAND (_q40, 0);
3633 1 : {
3634 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
3635 1 : tree res = generic_simplify_505 (loc, type, _p0, captures);
3636 1 : if (res) return res;
3637 : }
3638 0 : break;
3639 : }
3640 : default:;
3641 : }
3642 : break;
3643 : }
3644 3 : case BIT_NOT_EXPR:
3645 3 : {
3646 3 : tree _q40 = TREE_OPERAND (_q30, 0);
3647 3 : {
3648 3 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
3649 3 : tree res = generic_simplify_505 (loc, type, _p0, captures);
3650 3 : if (res) return res;
3651 : }
3652 1 : break;
3653 : }
3654 : default:;
3655 : }
3656 : break;
3657 : }
3658 0 : case LROTATE_EXPR:
3659 0 : {
3660 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3661 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3662 0 : switch (TREE_CODE (_q30))
3663 : {
3664 0 : CASE_CONVERT:
3665 0 : {
3666 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3667 0 : switch (TREE_CODE (_q40))
3668 : {
3669 0 : case BIT_NOT_EXPR:
3670 0 : {
3671 0 : tree _q50 = TREE_OPERAND (_q40, 0);
3672 0 : {
3673 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
3674 0 : tree res = generic_simplify_506 (loc, type, _p0, captures, LROTATE_EXPR);
3675 0 : if (res) return res;
3676 : }
3677 0 : break;
3678 : }
3679 : default:;
3680 : }
3681 : break;
3682 : }
3683 0 : case BIT_NOT_EXPR:
3684 0 : {
3685 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3686 0 : {
3687 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
3688 0 : tree res = generic_simplify_506 (loc, type, _p0, captures, LROTATE_EXPR);
3689 0 : if (res) return res;
3690 : }
3691 0 : break;
3692 : }
3693 : default:;
3694 : }
3695 : break;
3696 : }
3697 0 : case RROTATE_EXPR:
3698 0 : {
3699 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3700 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3701 0 : switch (TREE_CODE (_q30))
3702 : {
3703 0 : CASE_CONVERT:
3704 0 : {
3705 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3706 0 : switch (TREE_CODE (_q40))
3707 : {
3708 0 : case BIT_NOT_EXPR:
3709 0 : {
3710 0 : tree _q50 = TREE_OPERAND (_q40, 0);
3711 0 : {
3712 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
3713 0 : tree res = generic_simplify_506 (loc, type, _p0, captures, RROTATE_EXPR);
3714 0 : if (res) return res;
3715 : }
3716 0 : break;
3717 : }
3718 : default:;
3719 : }
3720 : break;
3721 : }
3722 0 : case BIT_NOT_EXPR:
3723 0 : {
3724 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3725 0 : {
3726 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
3727 0 : tree res = generic_simplify_506 (loc, type, _p0, captures, RROTATE_EXPR);
3728 0 : if (res) return res;
3729 : }
3730 0 : break;
3731 : }
3732 : default:;
3733 : }
3734 : break;
3735 : }
3736 : default:;
3737 : }
3738 : break;
3739 : }
3740 120 : case NEGATE_EXPR:
3741 120 : {
3742 120 : tree _q20 = TREE_OPERAND (_p0, 0);
3743 120 : {
3744 120 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3745 120 : tree res = generic_simplify_502 (loc, type, _p0, captures);
3746 120 : if (res) return res;
3747 : }
3748 0 : break;
3749 : }
3750 1572 : case BIT_XOR_EXPR:
3751 1572 : {
3752 1572 : tree _q20 = TREE_OPERAND (_p0, 0);
3753 1572 : tree _q21 = TREE_OPERAND (_p0, 1);
3754 1572 : switch (TREE_CODE (_q21))
3755 : {
3756 22 : case INTEGER_CST:
3757 22 : {
3758 22 : {
3759 22 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3760 22 : tree res = generic_simplify_503 (loc, type, _p0, captures);
3761 22 : if (res) return res;
3762 : }
3763 0 : break;
3764 : }
3765 1550 : default:;
3766 : }
3767 1550 : switch (TREE_CODE (_q20))
3768 : {
3769 0 : case BIT_NOT_EXPR:
3770 0 : {
3771 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3772 0 : {
3773 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
3774 0 : tree res = generic_simplify_504 (loc, type, _p0, captures);
3775 0 : if (res) return res;
3776 : }
3777 0 : break;
3778 : }
3779 1550 : default:;
3780 : }
3781 1550 : switch (TREE_CODE (_q21))
3782 : {
3783 0 : case BIT_NOT_EXPR:
3784 0 : {
3785 0 : tree _q40 = TREE_OPERAND (_q21, 0);
3786 0 : {
3787 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
3788 0 : tree res = generic_simplify_504 (loc, type, _p0, captures);
3789 0 : if (res) return res;
3790 : }
3791 0 : break;
3792 : }
3793 1550 : default:;
3794 : }
3795 1550 : if (tree_truth_valued_p (_q20))
3796 : {
3797 31 : if (tree_truth_valued_p (_q21))
3798 : {
3799 7 : {
3800 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3801 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3802 14 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == 1
3803 : )
3804 : {
3805 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1067;
3806 0 : {
3807 0 : tree res_op0;
3808 0 : {
3809 0 : tree _o1[2], _r1;
3810 0 : _o1[0] = captures[1];
3811 0 : _o1[1] = captures[2];
3812 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
3813 0 : res_op0 = _r1;
3814 : }
3815 0 : tree _r;
3816 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3817 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
3818 0 : return _r;
3819 : }
3820 0 : next_after_fail1067:;
3821 : }
3822 : }
3823 : }
3824 : }
3825 : break;
3826 : }
3827 0 : case MIN_EXPR:
3828 0 : {
3829 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3830 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3831 0 : switch (TREE_CODE (_q20))
3832 : {
3833 0 : case BIT_NOT_EXPR:
3834 0 : {
3835 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3836 0 : {
3837 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3838 0 : tree res = generic_simplify_507 (loc, type, _p0, captures, MIN_EXPR, MAX_EXPR);
3839 0 : if (res) return res;
3840 : }
3841 0 : break;
3842 : }
3843 0 : default:;
3844 : }
3845 0 : switch (TREE_CODE (_q21))
3846 : {
3847 0 : case BIT_NOT_EXPR:
3848 0 : {
3849 0 : tree _q40 = TREE_OPERAND (_q21, 0);
3850 0 : {
3851 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3852 0 : tree res = generic_simplify_507 (loc, type, _p0, captures, MIN_EXPR, MAX_EXPR);
3853 0 : if (res) return res;
3854 : }
3855 0 : break;
3856 : }
3857 : default:;
3858 : }
3859 : break;
3860 : }
3861 0 : case MAX_EXPR:
3862 0 : {
3863 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3864 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3865 0 : switch (TREE_CODE (_q20))
3866 : {
3867 0 : case BIT_NOT_EXPR:
3868 0 : {
3869 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3870 0 : {
3871 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3872 0 : tree res = generic_simplify_507 (loc, type, _p0, captures, MAX_EXPR, MIN_EXPR);
3873 0 : if (res) return res;
3874 : }
3875 0 : break;
3876 : }
3877 0 : default:;
3878 : }
3879 0 : switch (TREE_CODE (_q21))
3880 : {
3881 0 : case BIT_NOT_EXPR:
3882 0 : {
3883 0 : tree _q40 = TREE_OPERAND (_q21, 0);
3884 0 : {
3885 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3886 0 : tree res = generic_simplify_507 (loc, type, _p0, captures, MAX_EXPR, MIN_EXPR);
3887 0 : if (res) return res;
3888 : }
3889 0 : break;
3890 : }
3891 : default:;
3892 : }
3893 : break;
3894 : }
3895 1 : case LROTATE_EXPR:
3896 1 : {
3897 1 : tree _q20 = TREE_OPERAND (_p0, 0);
3898 1 : tree _q21 = TREE_OPERAND (_p0, 1);
3899 1 : switch (TREE_CODE (_q20))
3900 : {
3901 0 : CASE_CONVERT:
3902 0 : {
3903 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3904 0 : switch (TREE_CODE (_q30))
3905 : {
3906 0 : case BIT_NOT_EXPR:
3907 0 : {
3908 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3909 0 : {
3910 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
3911 0 : tree res = generic_simplify_508 (loc, type, _p0, captures, LROTATE_EXPR);
3912 0 : if (res) return res;
3913 : }
3914 0 : break;
3915 : }
3916 : default:;
3917 : }
3918 : break;
3919 : }
3920 1 : case BIT_NOT_EXPR:
3921 1 : {
3922 1 : tree _q30 = TREE_OPERAND (_q20, 0);
3923 1 : {
3924 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
3925 1 : tree res = generic_simplify_508 (loc, type, _p0, captures, LROTATE_EXPR);
3926 1 : if (res) return res;
3927 : }
3928 0 : break;
3929 : }
3930 : default:;
3931 : }
3932 : break;
3933 : }
3934 1 : case RROTATE_EXPR:
3935 1 : {
3936 1 : tree _q20 = TREE_OPERAND (_p0, 0);
3937 1 : tree _q21 = TREE_OPERAND (_p0, 1);
3938 1 : switch (TREE_CODE (_q20))
3939 : {
3940 0 : CASE_CONVERT:
3941 0 : {
3942 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3943 0 : switch (TREE_CODE (_q30))
3944 : {
3945 0 : case BIT_NOT_EXPR:
3946 0 : {
3947 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3948 0 : {
3949 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
3950 0 : tree res = generic_simplify_508 (loc, type, _p0, captures, RROTATE_EXPR);
3951 0 : if (res) return res;
3952 : }
3953 0 : break;
3954 : }
3955 : default:;
3956 : }
3957 : break;
3958 : }
3959 1 : case BIT_NOT_EXPR:
3960 1 : {
3961 1 : tree _q30 = TREE_OPERAND (_q20, 0);
3962 1 : {
3963 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
3964 1 : tree res = generic_simplify_508 (loc, type, _p0, captures, RROTATE_EXPR);
3965 1 : if (res) return res;
3966 : }
3967 0 : break;
3968 : }
3969 : default:;
3970 : }
3971 : break;
3972 : }
3973 32 : case VEC_COND_EXPR:
3974 32 : {
3975 32 : tree _q20 = TREE_OPERAND (_p0, 0);
3976 32 : tree _q21 = TREE_OPERAND (_p0, 1);
3977 32 : tree _q22 = TREE_OPERAND (_p0, 2);
3978 32 : {
3979 32 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3980 32 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1068;
3981 32 : {
3982 32 : tree res_op0;
3983 32 : res_op0 = captures[1];
3984 32 : tree res_op1;
3985 32 : {
3986 32 : tree _o1[1], _r1;
3987 32 : _o1[0] = captures[2];
3988 32 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, type, _o1[0]);
3989 32 : if (EXPR_P (_r1))
3990 0 : goto next_after_fail1068;
3991 32 : res_op1 = _r1;
3992 : }
3993 32 : tree res_op2;
3994 32 : {
3995 32 : tree _o1[1], _r1;
3996 32 : _o1[0] = captures[3];
3997 32 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, type, _o1[0]);
3998 32 : if (EXPR_P (_r1))
3999 0 : goto next_after_fail1068;
4000 32 : res_op2 = _r1;
4001 : }
4002 32 : tree _r;
4003 32 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4004 32 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 824, __FILE__, __LINE__, true);
4005 32 : return _r;
4006 : }
4007 0 : next_after_fail1068:;
4008 : }
4009 0 : break;
4010 : }
4011 4 : case LT_EXPR:
4012 4 : {
4013 4 : tree _q20 = TREE_OPERAND (_p0, 0);
4014 4 : tree _q21 = TREE_OPERAND (_p0, 1);
4015 4 : {
4016 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4017 4 : tree res = generic_simplify_509 (loc, type, _p0, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
4018 4 : if (res) return res;
4019 : }
4020 4 : break;
4021 : }
4022 4 : case LE_EXPR:
4023 4 : {
4024 4 : tree _q20 = TREE_OPERAND (_p0, 0);
4025 4 : tree _q21 = TREE_OPERAND (_p0, 1);
4026 4 : {
4027 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4028 4 : tree res = generic_simplify_509 (loc, type, _p0, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
4029 4 : if (res) return res;
4030 : }
4031 4 : break;
4032 : }
4033 63 : case EQ_EXPR:
4034 63 : {
4035 63 : tree _q20 = TREE_OPERAND (_p0, 0);
4036 63 : tree _q21 = TREE_OPERAND (_p0, 1);
4037 63 : {
4038 63 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4039 63 : tree res = generic_simplify_509 (loc, type, _p0, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
4040 63 : if (res) return res;
4041 : }
4042 56 : break;
4043 : }
4044 112 : case NE_EXPR:
4045 112 : {
4046 112 : tree _q20 = TREE_OPERAND (_p0, 0);
4047 112 : tree _q21 = TREE_OPERAND (_p0, 1);
4048 112 : {
4049 112 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4050 112 : tree res = generic_simplify_509 (loc, type, _p0, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
4051 112 : if (res) return res;
4052 : }
4053 107 : break;
4054 : }
4055 0 : case GE_EXPR:
4056 0 : {
4057 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4058 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4059 0 : {
4060 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4061 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
4062 0 : if (res) return res;
4063 : }
4064 0 : break;
4065 : }
4066 66 : case GT_EXPR:
4067 66 : {
4068 66 : tree _q20 = TREE_OPERAND (_p0, 0);
4069 66 : tree _q21 = TREE_OPERAND (_p0, 1);
4070 66 : {
4071 66 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4072 66 : tree res = generic_simplify_509 (loc, type, _p0, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
4073 66 : if (res) return res;
4074 : }
4075 66 : break;
4076 : }
4077 0 : case UNORDERED_EXPR:
4078 0 : {
4079 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4080 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4081 0 : {
4082 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4083 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
4084 0 : if (res) return res;
4085 : }
4086 0 : break;
4087 : }
4088 0 : case ORDERED_EXPR:
4089 0 : {
4090 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4091 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4092 0 : {
4093 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4094 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
4095 0 : if (res) return res;
4096 : }
4097 0 : break;
4098 : }
4099 0 : case UNLT_EXPR:
4100 0 : {
4101 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4102 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4103 0 : {
4104 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4105 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
4106 0 : if (res) return res;
4107 : }
4108 0 : break;
4109 : }
4110 0 : case UNLE_EXPR:
4111 0 : {
4112 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4113 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4114 0 : {
4115 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4116 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
4117 0 : if (res) return res;
4118 : }
4119 0 : break;
4120 : }
4121 0 : case UNGT_EXPR:
4122 0 : {
4123 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4124 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4125 0 : {
4126 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4127 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
4128 0 : if (res) return res;
4129 : }
4130 0 : break;
4131 : }
4132 0 : case UNGE_EXPR:
4133 0 : {
4134 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4135 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4136 0 : {
4137 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4138 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
4139 0 : if (res) return res;
4140 : }
4141 0 : break;
4142 : }
4143 0 : case UNEQ_EXPR:
4144 0 : {
4145 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4146 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4147 0 : {
4148 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4149 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
4150 0 : if (res) return res;
4151 : }
4152 0 : break;
4153 : }
4154 0 : case LTGT_EXPR:
4155 0 : {
4156 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4157 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4158 0 : {
4159 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4160 0 : tree res = generic_simplify_509 (loc, type, _p0, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
4161 0 : if (res) return res;
4162 : }
4163 0 : break;
4164 : }
4165 : default:;
4166 : }
4167 : return NULL_TREE;
4168 : }
4169 :
4170 : tree
4171 2202070 : generic_simplify_TRUNC_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4172 : {
4173 2202070 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4174 2202070 : if (integer_onep (_p1))
4175 : {
4176 17750 : {
4177 17750 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4178 17750 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4179 17750 : if (res) return res;
4180 : }
4181 : }
4182 2184320 : switch (TREE_CODE (_p0))
4183 : {
4184 152653 : CASE_CONVERT:
4185 152653 : {
4186 152653 : tree _q20 = TREE_OPERAND (_p0, 0);
4187 152653 : switch (TREE_CODE (_p1))
4188 : {
4189 36078 : CASE_CONVERT:
4190 36078 : {
4191 36078 : tree _q40 = TREE_OPERAND (_p1, 0);
4192 36078 : switch (TREE_CODE (_q40))
4193 : {
4194 0 : case LSHIFT_EXPR:
4195 0 : {
4196 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4197 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4198 0 : if (integer_onep (_q50))
4199 : {
4200 0 : {
4201 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q50, _q51 };
4202 0 : tree res = generic_simplify_308 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4203 0 : if (res) return res;
4204 : }
4205 : }
4206 : break;
4207 : }
4208 : default:;
4209 : }
4210 : break;
4211 : }
4212 8 : case LSHIFT_EXPR:
4213 8 : {
4214 8 : tree _q40 = TREE_OPERAND (_p1, 0);
4215 8 : tree _q41 = TREE_OPERAND (_p1, 1);
4216 8 : if (integer_onep (_q40))
4217 : {
4218 7 : {
4219 7 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q41 };
4220 7 : tree res = generic_simplify_308 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4221 7 : if (res) return res;
4222 : }
4223 : }
4224 : break;
4225 : }
4226 : default:;
4227 : }
4228 : break;
4229 : }
4230 2184320 : default:;
4231 : }
4232 2184320 : switch (TREE_CODE (_p1))
4233 : {
4234 128379 : CASE_CONVERT:
4235 128379 : {
4236 128379 : tree _q30 = TREE_OPERAND (_p1, 0);
4237 128379 : switch (TREE_CODE (_q30))
4238 : {
4239 7 : case LSHIFT_EXPR:
4240 7 : {
4241 7 : tree _q40 = TREE_OPERAND (_q30, 0);
4242 7 : tree _q41 = TREE_OPERAND (_q30, 1);
4243 7 : if (integer_onep (_q40))
4244 : {
4245 7 : {
4246 7 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q40, _q41 };
4247 7 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4248 7 : if (res) return res;
4249 : }
4250 : }
4251 : break;
4252 : }
4253 : default:;
4254 : }
4255 : break;
4256 : }
4257 33 : case LSHIFT_EXPR:
4258 33 : {
4259 33 : tree _q30 = TREE_OPERAND (_p1, 0);
4260 33 : tree _q31 = TREE_OPERAND (_p1, 1);
4261 33 : if (integer_onep (_q30))
4262 : {
4263 16 : {
4264 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q31 };
4265 16 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4266 16 : if (res) return res;
4267 : }
4268 : }
4269 : break;
4270 : }
4271 2184311 : default:;
4272 : }
4273 2184311 : if (integer_zerop (_p0))
4274 : {
4275 2358 : {
4276 2358 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4277 2358 : tree res = generic_simplify_310 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4278 2358 : if (res) return res;
4279 : }
4280 : }
4281 2182578 : switch (TREE_CODE (_p1))
4282 : {
4283 13294 : case SSA_NAME:
4284 13294 : {
4285 13294 : {
4286 13294 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4287 13294 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4288 13294 : if (res) return res;
4289 : }
4290 13294 : break;
4291 : }
4292 2182578 : default:;
4293 : }
4294 2182578 : if (integer_minus_onep (_p1))
4295 : {
4296 2520 : {
4297 2520 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4298 2520 : tree res = generic_simplify_311 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4299 2520 : if (res) return res;
4300 : }
4301 : }
4302 2180956 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4303 : {
4304 892 : {
4305 892 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4306 892 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4307 892 : if (res) return res;
4308 : }
4309 : }
4310 2180845 : switch (TREE_CODE (_p1))
4311 : {
4312 1 : case ABS_EXPR:
4313 1 : {
4314 1 : tree _q30 = TREE_OPERAND (_p1, 0);
4315 1 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4316 : {
4317 1 : {
4318 1 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4319 1 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4320 1 : if (res) return res;
4321 : }
4322 : }
4323 : break;
4324 : }
4325 2180844 : default:;
4326 : }
4327 2180844 : switch (TREE_CODE (_p0))
4328 : {
4329 0 : case ABS_EXPR:
4330 0 : {
4331 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4332 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4333 : {
4334 0 : {
4335 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4336 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4337 0 : if (res) return res;
4338 : }
4339 : }
4340 : break;
4341 : }
4342 2180844 : default:;
4343 : }
4344 2180844 : switch (TREE_CODE (_p1))
4345 : {
4346 657 : case NEGATE_EXPR:
4347 657 : {
4348 657 : tree _q30 = TREE_OPERAND (_p1, 0);
4349 657 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4350 : {
4351 1 : {
4352 1 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4353 1 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4354 1 : if (res) return res;
4355 : }
4356 : }
4357 : break;
4358 : }
4359 2180843 : default:;
4360 : }
4361 2180843 : switch (TREE_CODE (_p0))
4362 : {
4363 368 : case NEGATE_EXPR:
4364 368 : {
4365 368 : tree _q20 = TREE_OPERAND (_p0, 0);
4366 368 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4367 : {
4368 0 : {
4369 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4370 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4371 0 : if (res) return res;
4372 : }
4373 : }
4374 : break;
4375 : }
4376 9157 : case TRUNC_DIV_EXPR:
4377 9157 : {
4378 9157 : tree _q20 = TREE_OPERAND (_p0, 0);
4379 9157 : tree _q21 = TREE_OPERAND (_p0, 1);
4380 9157 : switch (TREE_CODE (_q21))
4381 : {
4382 9068 : case INTEGER_CST:
4383 9068 : {
4384 9068 : switch (TREE_CODE (_p1))
4385 : {
4386 9067 : case INTEGER_CST:
4387 9067 : {
4388 9067 : {
4389 9067 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4390 9067 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4391 9067 : if (res) return res;
4392 : }
4393 9067 : break;
4394 : }
4395 : default:;
4396 : }
4397 : break;
4398 : }
4399 : default:;
4400 : }
4401 : break;
4402 : }
4403 152612 : CASE_CONVERT:
4404 152612 : {
4405 152612 : tree _q20 = TREE_OPERAND (_p0, 0);
4406 152612 : switch (TREE_CODE (_q20))
4407 : {
4408 0 : case BIT_AND_EXPR:
4409 0 : {
4410 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4411 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4412 0 : switch (TREE_CODE (_q31))
4413 : {
4414 0 : case INTEGER_CST:
4415 0 : {
4416 0 : switch (TREE_CODE (_p1))
4417 : {
4418 0 : case INTEGER_CST:
4419 0 : {
4420 0 : {
4421 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4422 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4423 0 : if (res) return res;
4424 : }
4425 0 : break;
4426 : }
4427 : default:;
4428 : }
4429 : break;
4430 : }
4431 : default:;
4432 : }
4433 : break;
4434 : }
4435 : default:;
4436 : }
4437 : break;
4438 : }
4439 45472 : case BIT_AND_EXPR:
4440 45472 : {
4441 45472 : tree _q20 = TREE_OPERAND (_p0, 0);
4442 45472 : tree _q21 = TREE_OPERAND (_p0, 1);
4443 45472 : switch (TREE_CODE (_q21))
4444 : {
4445 45446 : case INTEGER_CST:
4446 45446 : {
4447 45446 : switch (TREE_CODE (_p1))
4448 : {
4449 45442 : case INTEGER_CST:
4450 45442 : {
4451 45442 : {
4452 45442 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4453 45442 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4454 45442 : if (res) return res;
4455 : }
4456 45441 : break;
4457 : }
4458 : default:;
4459 : }
4460 : break;
4461 : }
4462 : default:;
4463 : }
4464 : break;
4465 : }
4466 35951 : case MULT_EXPR:
4467 35951 : {
4468 35951 : tree _q20 = TREE_OPERAND (_p0, 0);
4469 35951 : tree _q21 = TREE_OPERAND (_p0, 1);
4470 35951 : if (integer_pow2p (_q21))
4471 : {
4472 5945 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4473 : {
4474 5583 : {
4475 5583 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4476 5583 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4477 5583 : if (res) return res;
4478 : }
4479 : }
4480 : }
4481 30509 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4482 : {
4483 163 : {
4484 163 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4485 163 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4486 163 : if (res) return res;
4487 : }
4488 : }
4489 30361 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4490 : {
4491 22 : {
4492 22 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4493 22 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4494 22 : if (res) return res;
4495 : }
4496 : }
4497 30352 : switch (TREE_CODE (_q21))
4498 : {
4499 30038 : case INTEGER_CST:
4500 30038 : {
4501 30038 : switch (TREE_CODE (_p1))
4502 : {
4503 3 : case MULT_EXPR:
4504 3 : {
4505 3 : tree _q50 = TREE_OPERAND (_p1, 0);
4506 3 : tree _q51 = TREE_OPERAND (_p1, 1);
4507 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4508 : {
4509 3 : switch (TREE_CODE (_q51))
4510 : {
4511 3 : case INTEGER_CST:
4512 3 : {
4513 3 : {
4514 3 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
4515 3 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4516 3 : if (res) return res;
4517 : }
4518 0 : break;
4519 : }
4520 : default:;
4521 : }
4522 : }
4523 : break;
4524 : }
4525 : default:;
4526 : }
4527 : break;
4528 : }
4529 : default:;
4530 : }
4531 : break;
4532 : }
4533 0 : case VEC_COND_EXPR:
4534 0 : {
4535 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4536 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4537 0 : tree _q22 = TREE_OPERAND (_p0, 2);
4538 0 : switch (TREE_CODE (_p1))
4539 : {
4540 0 : case VEC_COND_EXPR:
4541 0 : {
4542 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4543 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4544 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4545 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4546 : {
4547 0 : {
4548 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
4549 0 : if (VECTOR_TYPE_P (type)
4550 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
4551 : || types_match (type, TREE_TYPE (captures[2]))
4552 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4553 : || (optimize_vectors_before_lowering_p ()
4554 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4555 : )
4556 : {
4557 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1569;
4558 0 : {
4559 0 : tree res_op0;
4560 0 : res_op0 = captures[1];
4561 0 : tree res_op1;
4562 0 : {
4563 0 : tree _o1[2], _r1;
4564 0 : _o1[0] = captures[2];
4565 0 : _o1[1] = captures[5];
4566 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4567 0 : if (EXPR_P (_r1))
4568 0 : goto next_after_fail1569;
4569 0 : res_op1 = _r1;
4570 : }
4571 0 : tree res_op2;
4572 0 : {
4573 0 : tree _o1[2], _r1;
4574 0 : _o1[0] = captures[3];
4575 0 : _o1[1] = captures[6];
4576 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4577 0 : if (EXPR_P (_r1))
4578 0 : goto next_after_fail1569;
4579 0 : res_op2 = _r1;
4580 : }
4581 0 : tree _r;
4582 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4583 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
4584 0 : return _r;
4585 : }
4586 0 : next_after_fail1569:;
4587 : }
4588 : }
4589 : }
4590 : break;
4591 : }
4592 0 : default:;
4593 : }
4594 0 : {
4595 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
4596 0 : if (VECTOR_TYPE_P (type)
4597 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
4598 : || types_match (type, TREE_TYPE (captures[2]))
4599 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4600 : || (optimize_vectors_before_lowering_p ()
4601 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4602 : )
4603 : {
4604 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1570;
4605 0 : {
4606 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1570;
4607 0 : tree res_op0;
4608 0 : res_op0 = captures[1];
4609 0 : tree res_op1;
4610 0 : {
4611 0 : tree _o1[2], _r1;
4612 0 : _o1[0] = captures[2];
4613 0 : _o1[1] = unshare_expr (captures[4]);
4614 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4615 0 : if (EXPR_P (_r1))
4616 0 : goto next_after_fail1570;
4617 0 : res_op1 = _r1;
4618 : }
4619 0 : tree res_op2;
4620 0 : {
4621 0 : tree _o1[2], _r1;
4622 0 : _o1[0] = captures[3];
4623 0 : _o1[1] = captures[4];
4624 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4625 0 : if (EXPR_P (_r1))
4626 0 : goto next_after_fail1570;
4627 0 : res_op2 = _r1;
4628 : }
4629 0 : tree _r;
4630 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4631 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
4632 0 : return _r;
4633 : }
4634 0 : next_after_fail1570:;
4635 : }
4636 : }
4637 0 : break;
4638 : }
4639 2175240 : default:;
4640 : }
4641 2175240 : if (integer_onep (_p0))
4642 : {
4643 1225 : {
4644 1225 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4645 1225 : if (INTEGRAL_TYPE_P (type)
4646 1222 : && TYPE_PRECISION (type) > 1
4647 1222 : && !integer_zerop (captures[1])
4648 1693 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[1]))
4649 : )
4650 : {
4651 411 : if (TYPE_UNSIGNED (type)
4652 : )
4653 : {
4654 54 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1571;
4655 54 : {
4656 54 : tree res_op0;
4657 54 : {
4658 54 : tree _o1[2], _r1;
4659 54 : _o1[0] = captures[1];
4660 54 : _o1[1] = build_one_cst (type);
4661 54 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
4662 54 : res_op0 = _r1;
4663 : }
4664 54 : tree _r;
4665 54 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4666 54 : if (TREE_SIDE_EFFECTS (captures[0]))
4667 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4668 54 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
4669 54 : return _r;
4670 : }
4671 0 : next_after_fail1571:;
4672 : }
4673 : else
4674 : {
4675 357 : if (fold_before_rtl_expansion_p ()
4676 : )
4677 : {
4678 0 : {
4679 0 : tree utype = unsigned_type_for (type);
4680 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1572;
4681 0 : {
4682 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail1572;
4683 0 : tree res_op0;
4684 0 : {
4685 0 : tree _o1[2], _r1;
4686 0 : {
4687 0 : tree _o2[2], _r2;
4688 0 : {
4689 0 : tree _o3[1], _r3;
4690 0 : _o3[0] = unshare_expr (captures[1]);
4691 0 : if (TREE_TYPE (_o3[0]) != utype)
4692 : {
4693 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
4694 : }
4695 : else
4696 : _r3 = _o3[0];
4697 0 : _o2[0] = _r3;
4698 : }
4699 0 : _o2[1] = build_one_cst (utype);
4700 0 : _r2 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4701 0 : _o1[0] = _r2;
4702 : }
4703 0 : _o1[1] = build_int_cst (utype, 2);
4704 0 : _r1 = fold_build2_loc (loc, LE_EXPR, boolean_type_node, _o1[0], _o1[1]);
4705 0 : res_op0 = _r1;
4706 : }
4707 0 : tree res_op1;
4708 0 : res_op1 = captures[1];
4709 0 : tree res_op2;
4710 0 : res_op2 = build_zero_cst (type);
4711 0 : tree _r;
4712 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4713 0 : if (TREE_SIDE_EFFECTS (captures[0]))
4714 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4715 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
4716 0 : return _r;
4717 : }
4718 1171 : next_after_fail1572:;
4719 : }
4720 : }
4721 : }
4722 : }
4723 : }
4724 : }
4725 2175186 : switch (TREE_CODE (_p1))
4726 : {
4727 0 : case VEC_COND_EXPR:
4728 0 : {
4729 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4730 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4731 0 : tree _q32 = TREE_OPERAND (_p1, 2);
4732 0 : {
4733 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
4734 0 : if (VECTOR_TYPE_P (type)
4735 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
4736 : || types_match (type, TREE_TYPE (captures[3]))
4737 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
4738 : || (optimize_vectors_before_lowering_p ()
4739 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
4740 : )
4741 : {
4742 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1573;
4743 0 : {
4744 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1573;
4745 0 : tree res_op0;
4746 0 : res_op0 = captures[2];
4747 0 : tree res_op1;
4748 0 : {
4749 0 : tree _o1[2], _r1;
4750 0 : _o1[0] = unshare_expr (captures[0]);
4751 0 : _o1[1] = captures[3];
4752 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4753 0 : if (EXPR_P (_r1))
4754 0 : goto next_after_fail1573;
4755 0 : res_op1 = _r1;
4756 : }
4757 0 : tree res_op2;
4758 0 : {
4759 0 : tree _o1[2], _r1;
4760 0 : _o1[0] = captures[0];
4761 0 : _o1[1] = captures[4];
4762 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4763 0 : if (EXPR_P (_r1))
4764 0 : goto next_after_fail1573;
4765 0 : res_op2 = _r1;
4766 : }
4767 0 : tree _r;
4768 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4769 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
4770 0 : return _r;
4771 : }
4772 0 : next_after_fail1573:;
4773 : }
4774 : }
4775 0 : break;
4776 : }
4777 : default:;
4778 : }
4779 : return NULL_TREE;
4780 : }
4781 :
4782 : tree
4783 0 : generic_simplify_ROUND_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4784 : {
4785 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4786 0 : if (integer_onep (_p1))
4787 : {
4788 0 : {
4789 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4790 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4791 0 : if (res) return res;
4792 : }
4793 : }
4794 0 : if (integer_zerop (_p0))
4795 : {
4796 0 : {
4797 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4798 0 : tree res = generic_simplify_310 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4799 0 : if (res) return res;
4800 : }
4801 : }
4802 0 : switch (TREE_CODE (_p1))
4803 : {
4804 0 : case SSA_NAME:
4805 0 : {
4806 0 : {
4807 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4808 0 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4809 0 : if (res) return res;
4810 : }
4811 0 : break;
4812 : }
4813 0 : default:;
4814 : }
4815 0 : if (integer_minus_onep (_p1))
4816 : {
4817 0 : {
4818 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4819 0 : tree res = generic_simplify_311 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4820 0 : if (res) return res;
4821 : }
4822 : }
4823 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4824 : {
4825 0 : {
4826 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4827 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4828 0 : if (res) return res;
4829 : }
4830 : }
4831 0 : switch (TREE_CODE (_p1))
4832 : {
4833 0 : case ABS_EXPR:
4834 0 : {
4835 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4836 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4837 : {
4838 0 : {
4839 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4840 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4841 0 : if (res) return res;
4842 : }
4843 : }
4844 : break;
4845 : }
4846 0 : default:;
4847 : }
4848 0 : switch (TREE_CODE (_p0))
4849 : {
4850 0 : case ABS_EXPR:
4851 0 : {
4852 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4853 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4854 : {
4855 0 : {
4856 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4857 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4858 0 : if (res) return res;
4859 : }
4860 : }
4861 : break;
4862 : }
4863 0 : default:;
4864 : }
4865 0 : switch (TREE_CODE (_p1))
4866 : {
4867 0 : case NEGATE_EXPR:
4868 0 : {
4869 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4870 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4871 : {
4872 0 : {
4873 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4874 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4875 0 : if (res) return res;
4876 : }
4877 : }
4878 : break;
4879 : }
4880 0 : default:;
4881 : }
4882 0 : switch (TREE_CODE (_p0))
4883 : {
4884 0 : case NEGATE_EXPR:
4885 0 : {
4886 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4887 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4888 : {
4889 0 : {
4890 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4891 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4892 0 : if (res) return res;
4893 : }
4894 : }
4895 : break;
4896 : }
4897 0 : CASE_CONVERT:
4898 0 : {
4899 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4900 0 : switch (TREE_CODE (_q20))
4901 : {
4902 0 : case BIT_AND_EXPR:
4903 0 : {
4904 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4905 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4906 0 : switch (TREE_CODE (_q31))
4907 : {
4908 0 : case INTEGER_CST:
4909 0 : {
4910 0 : switch (TREE_CODE (_p1))
4911 : {
4912 0 : case INTEGER_CST:
4913 0 : {
4914 0 : {
4915 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4916 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4917 0 : if (res) return res;
4918 : }
4919 0 : break;
4920 : }
4921 : default:;
4922 : }
4923 : break;
4924 : }
4925 : default:;
4926 : }
4927 : break;
4928 : }
4929 : default:;
4930 : }
4931 : break;
4932 : }
4933 0 : case BIT_AND_EXPR:
4934 0 : {
4935 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4936 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4937 0 : switch (TREE_CODE (_q21))
4938 : {
4939 0 : case INTEGER_CST:
4940 0 : {
4941 0 : switch (TREE_CODE (_p1))
4942 : {
4943 0 : case INTEGER_CST:
4944 0 : {
4945 0 : {
4946 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4947 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4948 0 : if (res) return res;
4949 : }
4950 0 : break;
4951 : }
4952 : default:;
4953 : }
4954 : break;
4955 : }
4956 : default:;
4957 : }
4958 : break;
4959 : }
4960 0 : case MULT_EXPR:
4961 0 : {
4962 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4963 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4964 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4965 : {
4966 0 : {
4967 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4968 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4969 0 : if (res) return res;
4970 : }
4971 : }
4972 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4973 : {
4974 0 : {
4975 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4976 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4977 0 : if (res) return res;
4978 : }
4979 : }
4980 0 : switch (TREE_CODE (_q21))
4981 : {
4982 0 : case INTEGER_CST:
4983 0 : {
4984 0 : switch (TREE_CODE (_p1))
4985 : {
4986 0 : case MULT_EXPR:
4987 0 : {
4988 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4989 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4990 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4991 : {
4992 0 : switch (TREE_CODE (_q51))
4993 : {
4994 0 : case INTEGER_CST:
4995 0 : {
4996 0 : {
4997 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
4998 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4999 0 : if (res) return res;
5000 : }
5001 0 : break;
5002 : }
5003 : default:;
5004 : }
5005 : }
5006 : break;
5007 : }
5008 : default:;
5009 : }
5010 : break;
5011 : }
5012 : default:;
5013 : }
5014 : break;
5015 : }
5016 0 : case VEC_COND_EXPR:
5017 0 : {
5018 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5019 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5020 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5021 0 : switch (TREE_CODE (_p1))
5022 : {
5023 0 : case VEC_COND_EXPR:
5024 0 : {
5025 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5026 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5027 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5028 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5029 : {
5030 0 : {
5031 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5032 0 : if (VECTOR_TYPE_P (type)
5033 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
5034 : || types_match (type, TREE_TYPE (captures[2]))
5035 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5036 : || (optimize_vectors_before_lowering_p ()
5037 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5038 : )
5039 : {
5040 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1580;
5041 0 : {
5042 0 : tree res_op0;
5043 0 : res_op0 = captures[1];
5044 0 : tree res_op1;
5045 0 : {
5046 0 : tree _o1[2], _r1;
5047 0 : _o1[0] = captures[2];
5048 0 : _o1[1] = captures[5];
5049 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5050 0 : if (EXPR_P (_r1))
5051 0 : goto next_after_fail1580;
5052 0 : res_op1 = _r1;
5053 : }
5054 0 : tree res_op2;
5055 0 : {
5056 0 : tree _o1[2], _r1;
5057 0 : _o1[0] = captures[3];
5058 0 : _o1[1] = captures[6];
5059 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5060 0 : if (EXPR_P (_r1))
5061 0 : goto next_after_fail1580;
5062 0 : res_op2 = _r1;
5063 : }
5064 0 : tree _r;
5065 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5066 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
5067 0 : return _r;
5068 : }
5069 0 : next_after_fail1580:;
5070 : }
5071 : }
5072 : }
5073 : break;
5074 : }
5075 0 : default:;
5076 : }
5077 0 : {
5078 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5079 0 : if (VECTOR_TYPE_P (type)
5080 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
5081 : || types_match (type, TREE_TYPE (captures[2]))
5082 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5083 : || (optimize_vectors_before_lowering_p ()
5084 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5085 : )
5086 : {
5087 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1581;
5088 0 : {
5089 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1581;
5090 0 : tree res_op0;
5091 0 : res_op0 = captures[1];
5092 0 : tree res_op1;
5093 0 : {
5094 0 : tree _o1[2], _r1;
5095 0 : _o1[0] = captures[2];
5096 0 : _o1[1] = unshare_expr (captures[4]);
5097 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5098 0 : if (EXPR_P (_r1))
5099 0 : goto next_after_fail1581;
5100 0 : res_op1 = _r1;
5101 : }
5102 0 : tree res_op2;
5103 0 : {
5104 0 : tree _o1[2], _r1;
5105 0 : _o1[0] = captures[3];
5106 0 : _o1[1] = captures[4];
5107 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5108 0 : if (EXPR_P (_r1))
5109 0 : goto next_after_fail1581;
5110 0 : res_op2 = _r1;
5111 : }
5112 0 : tree _r;
5113 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5114 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
5115 0 : return _r;
5116 : }
5117 0 : next_after_fail1581:;
5118 : }
5119 : }
5120 0 : break;
5121 : }
5122 0 : default:;
5123 : }
5124 0 : switch (TREE_CODE (_p1))
5125 : {
5126 0 : case VEC_COND_EXPR:
5127 0 : {
5128 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5129 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5130 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5131 0 : {
5132 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5133 0 : if (VECTOR_TYPE_P (type)
5134 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
5135 : || types_match (type, TREE_TYPE (captures[3]))
5136 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5137 : || (optimize_vectors_before_lowering_p ()
5138 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5139 : )
5140 : {
5141 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1582;
5142 0 : {
5143 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1582;
5144 0 : tree res_op0;
5145 0 : res_op0 = captures[2];
5146 0 : tree res_op1;
5147 0 : {
5148 0 : tree _o1[2], _r1;
5149 0 : _o1[0] = unshare_expr (captures[0]);
5150 0 : _o1[1] = captures[3];
5151 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5152 0 : if (EXPR_P (_r1))
5153 0 : goto next_after_fail1582;
5154 0 : res_op1 = _r1;
5155 : }
5156 0 : tree res_op2;
5157 0 : {
5158 0 : tree _o1[2], _r1;
5159 0 : _o1[0] = captures[0];
5160 0 : _o1[1] = captures[4];
5161 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5162 0 : if (EXPR_P (_r1))
5163 0 : goto next_after_fail1582;
5164 0 : res_op2 = _r1;
5165 : }
5166 0 : tree _r;
5167 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5168 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
5169 0 : return _r;
5170 : }
5171 0 : next_after_fail1582:;
5172 : }
5173 : }
5174 0 : break;
5175 : }
5176 : default:;
5177 : }
5178 : return NULL_TREE;
5179 : }
5180 :
5181 : tree
5182 6192347 : generic_simplify_RDIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5183 : {
5184 6192347 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5185 6192347 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5186 : {
5187 762 : {
5188 762 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5189 3 : if (FLOAT_TYPE_P (type)
5190 762 : && ! HONOR_NANS (type)
5191 764 : && ! HONOR_INFINITIES (type)
5192 : )
5193 : {
5194 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1589;
5195 2 : {
5196 2 : tree _r;
5197 2 : _r = build_one_cst (type);
5198 2 : if (TREE_SIDE_EFFECTS (captures[0]))
5199 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5200 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
5201 2 : return _r;
5202 : }
5203 0 : next_after_fail1589:;
5204 : }
5205 : }
5206 : }
5207 6192345 : switch (TREE_CODE (_p1))
5208 : {
5209 18758 : case NEGATE_EXPR:
5210 18758 : {
5211 18758 : tree _q30 = TREE_OPERAND (_p1, 0);
5212 18758 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5213 : {
5214 0 : {
5215 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5216 0 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures);
5217 0 : if (res) return res;
5218 : }
5219 : }
5220 : break;
5221 : }
5222 6192345 : default:;
5223 : }
5224 6192345 : switch (TREE_CODE (_p0))
5225 : {
5226 93872 : case NEGATE_EXPR:
5227 93872 : {
5228 93872 : tree _q20 = TREE_OPERAND (_p0, 0);
5229 93872 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5230 : {
5231 2 : {
5232 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5233 2 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures);
5234 2 : if (res) return res;
5235 : }
5236 : }
5237 : break;
5238 : }
5239 538155 : CASE_CONVERT:
5240 538155 : {
5241 538155 : tree _q20 = TREE_OPERAND (_p0, 0);
5242 538155 : switch (TREE_CODE (_p1))
5243 : {
5244 24744 : CASE_CONVERT:
5245 24744 : {
5246 24744 : tree _q40 = TREE_OPERAND (_p1, 0);
5247 24744 : switch (TREE_CODE (_q40))
5248 : {
5249 0 : case ABS_EXPR:
5250 0 : {
5251 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5252 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5253 : {
5254 0 : {
5255 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5256 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures);
5257 0 : if (res) return res;
5258 : }
5259 : }
5260 : break;
5261 : }
5262 : default:;
5263 : }
5264 : break;
5265 : }
5266 538155 : default:;
5267 : }
5268 538155 : switch (TREE_CODE (_q20))
5269 : {
5270 0 : case ABS_EXPR:
5271 0 : {
5272 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5273 0 : switch (TREE_CODE (_p1))
5274 : {
5275 0 : CASE_CONVERT:
5276 0 : {
5277 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5278 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
5279 : {
5280 0 : {
5281 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
5282 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures);
5283 0 : if (res) return res;
5284 : }
5285 : }
5286 : break;
5287 : }
5288 : default:;
5289 : }
5290 : break;
5291 : }
5292 : default:;
5293 : }
5294 : break;
5295 : }
5296 6192345 : default:;
5297 : }
5298 6192345 : switch (TREE_CODE (_p1))
5299 : {
5300 48 : case ABS_EXPR:
5301 48 : {
5302 48 : tree _q30 = TREE_OPERAND (_p1, 0);
5303 48 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5304 : {
5305 0 : {
5306 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5307 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures);
5308 0 : if (res) return res;
5309 : }
5310 : }
5311 : break;
5312 : }
5313 6192345 : default:;
5314 : }
5315 6192345 : switch (TREE_CODE (_p0))
5316 : {
5317 146 : case ABS_EXPR:
5318 146 : {
5319 146 : tree _q20 = TREE_OPERAND (_p0, 0);
5320 146 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5321 : {
5322 0 : {
5323 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5324 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures);
5325 0 : if (res) return res;
5326 : }
5327 : }
5328 : break;
5329 : }
5330 6192345 : default:;
5331 : }
5332 6192345 : if (real_onep (_p1))
5333 : {
5334 86 : {
5335 86 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5336 86 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
5337 : )
5338 : {
5339 86 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1590;
5340 86 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1590;
5341 86 : {
5342 86 : tree res_op0;
5343 86 : res_op0 = captures[0];
5344 86 : tree _r;
5345 86 : _r = non_lvalue_loc (loc, res_op0);
5346 86 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
5347 86 : return _r;
5348 : }
5349 : next_after_fail1590:;
5350 : }
5351 : }
5352 : }
5353 6192259 : if (real_minus_onep (_p1))
5354 : {
5355 36 : {
5356 36 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5357 36 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
5358 : )
5359 : {
5360 36 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1591;
5361 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1591;
5362 36 : {
5363 36 : tree res_op0;
5364 36 : res_op0 = captures[0];
5365 36 : tree _r;
5366 36 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
5367 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
5368 36 : return _r;
5369 : }
5370 : next_after_fail1591:;
5371 : }
5372 : }
5373 : }
5374 6192223 : switch (TREE_CODE (_p0))
5375 : {
5376 37106 : case RDIV_EXPR:
5377 37106 : {
5378 37106 : tree _q20 = TREE_OPERAND (_p0, 0);
5379 37106 : tree _q21 = TREE_OPERAND (_p0, 1);
5380 37106 : {
5381 37106 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5382 37106 : if (flag_reciprocal_math
5383 : )
5384 : {
5385 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1592;
5386 12 : {
5387 12 : tree res_op0;
5388 12 : res_op0 = captures[1];
5389 12 : tree res_op1;
5390 12 : {
5391 12 : tree _o1[2], _r1;
5392 12 : _o1[0] = captures[2];
5393 12 : _o1[1] = captures[3];
5394 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5395 12 : res_op1 = _r1;
5396 : }
5397 12 : tree _r;
5398 12 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
5399 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
5400 12 : return _r;
5401 : }
5402 0 : next_after_fail1592:;
5403 : }
5404 : }
5405 37094 : break;
5406 : }
5407 6192211 : default:;
5408 : }
5409 6192211 : switch (TREE_CODE (_p1))
5410 : {
5411 950569 : case MULT_EXPR:
5412 950569 : {
5413 950569 : tree _q30 = TREE_OPERAND (_p1, 0);
5414 950569 : tree _q31 = TREE_OPERAND (_p1, 1);
5415 950569 : switch (TREE_CODE (_q31))
5416 : {
5417 373078 : case REAL_CST:
5418 373078 : {
5419 373078 : {
5420 373078 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
5421 373078 : if (flag_reciprocal_math
5422 : )
5423 : {
5424 224 : {
5425 224 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[3]);
5426 224 : if (tem
5427 : )
5428 : {
5429 224 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1593;
5430 224 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1593;
5431 224 : {
5432 224 : tree res_op0;
5433 224 : {
5434 224 : tree _o1[2], _r1;
5435 224 : _o1[0] = captures[0];
5436 224 : _o1[1] = tem;
5437 224 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5438 224 : res_op0 = _r1;
5439 : }
5440 224 : tree res_op1;
5441 224 : res_op1 = captures[2];
5442 224 : tree _r;
5443 224 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
5444 224 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
5445 224 : return _r;
5446 : }
5447 372854 : next_after_fail1593:;
5448 : }
5449 : }
5450 : }
5451 : }
5452 372854 : break;
5453 : }
5454 : default:;
5455 : }
5456 : break;
5457 : }
5458 1 : case RDIV_EXPR:
5459 1 : {
5460 1 : tree _q30 = TREE_OPERAND (_p1, 0);
5461 1 : tree _q31 = TREE_OPERAND (_p1, 1);
5462 1 : {
5463 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
5464 1 : if (flag_reciprocal_math
5465 : )
5466 : {
5467 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1594;
5468 1 : {
5469 1 : tree res_op0;
5470 1 : {
5471 1 : tree _o1[2], _r1;
5472 1 : _o1[0] = captures[0];
5473 1 : _o1[1] = captures[2];
5474 1 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5475 1 : res_op0 = _r1;
5476 : }
5477 1 : tree res_op1;
5478 1 : res_op1 = captures[3];
5479 1 : tree _r;
5480 1 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5481 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
5482 1 : return _r;
5483 : }
5484 0 : next_after_fail1594:;
5485 : }
5486 : }
5487 0 : break;
5488 : }
5489 18758 : case NEGATE_EXPR:
5490 18758 : {
5491 18758 : tree _q30 = TREE_OPERAND (_p1, 0);
5492 18758 : {
5493 18758 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5494 18758 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1595;
5495 18758 : {
5496 18758 : tree res_op0;
5497 18758 : {
5498 18758 : tree _o1[1], _r1;
5499 18758 : _o1[0] = captures[0];
5500 18758 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5501 18758 : res_op0 = _r1;
5502 : }
5503 18758 : tree res_op1;
5504 18758 : res_op1 = captures[1];
5505 18758 : tree _r;
5506 18758 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
5507 18758 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
5508 18758 : return _r;
5509 : }
5510 0 : next_after_fail1595:;
5511 : }
5512 0 : break;
5513 : }
5514 1053501 : case REAL_CST:
5515 1053501 : {
5516 1053501 : {
5517 1053501 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5518 1053501 : if (optimize
5519 : )
5520 : {
5521 1047176 : if (flag_reciprocal_math
5522 1047176 : && !real_zerop (captures[1])
5523 : )
5524 : {
5525 571 : {
5526 571 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
5527 571 : if (tem
5528 : )
5529 : {
5530 570 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1596;
5531 570 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1596;
5532 570 : {
5533 570 : tree res_op0;
5534 570 : res_op0 = captures[0];
5535 570 : tree res_op1;
5536 570 : res_op1 = tem;
5537 570 : tree _r;
5538 570 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5539 570 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
5540 570 : return _r;
5541 : }
5542 735948 : next_after_fail1596:;
5543 : }
5544 : }
5545 : }
5546 : else
5547 : {
5548 1046605 : if (REAL_CST != COMPLEX_CST
5549 : )
5550 : {
5551 1046605 : {
5552 1046605 : tree inverse = exact_inverse (type, captures[1]);
5553 1046605 : if (inverse
5554 : )
5555 : {
5556 316983 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1597;
5557 316983 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1597;
5558 316983 : {
5559 316983 : tree res_op0;
5560 316983 : res_op0 = captures[0];
5561 316983 : tree res_op1;
5562 316983 : res_op1 = inverse;
5563 316983 : tree _r;
5564 316983 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5565 316983 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 996, __FILE__, __LINE__, true);
5566 316983 : return _r;
5567 : }
5568 735948 : next_after_fail1597:;
5569 : }
5570 : }
5571 : }
5572 : }
5573 : }
5574 : }
5575 735948 : break;
5576 : }
5577 114 : case COMPLEX_CST:
5578 114 : {
5579 114 : {
5580 114 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5581 114 : if (optimize
5582 : )
5583 : {
5584 106 : if (flag_reciprocal_math
5585 106 : && !real_zerop (captures[1])
5586 : )
5587 : {
5588 7 : {
5589 7 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
5590 7 : if (tem
5591 : )
5592 : {
5593 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1598;
5594 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1598;
5595 7 : {
5596 7 : tree res_op0;
5597 7 : res_op0 = captures[0];
5598 7 : tree res_op1;
5599 7 : res_op1 = tem;
5600 7 : tree _r;
5601 7 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5602 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
5603 7 : return _r;
5604 : }
5605 107 : next_after_fail1598:;
5606 : }
5607 : }
5608 : }
5609 : else
5610 : {
5611 : if (COMPLEX_CST != COMPLEX_CST
5612 : )
5613 : {
5614 : {
5615 : tree inverse = exact_inverse (type, captures[1]);
5616 : if (inverse
5617 : )
5618 : {
5619 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1599;
5620 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1599;
5621 : {
5622 : tree res_op0;
5623 : res_op0 = captures[0];
5624 : tree res_op1;
5625 : res_op1 = inverse;
5626 : tree _r;
5627 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5628 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 996, __FILE__, __LINE__, true);
5629 : return _r;
5630 : }
5631 : next_after_fail1599:;
5632 : }
5633 : }
5634 : }
5635 : }
5636 : }
5637 : }
5638 107 : break;
5639 : }
5640 45 : case VECTOR_CST:
5641 45 : {
5642 45 : {
5643 45 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5644 45 : if (optimize
5645 : )
5646 : {
5647 41 : if (flag_reciprocal_math
5648 41 : && !real_zerop (captures[1])
5649 : )
5650 : {
5651 4 : {
5652 4 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
5653 4 : if (tem
5654 : )
5655 : {
5656 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1600;
5657 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1600;
5658 0 : {
5659 0 : tree res_op0;
5660 0 : res_op0 = captures[0];
5661 0 : tree res_op1;
5662 0 : res_op1 = tem;
5663 0 : tree _r;
5664 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5665 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
5666 0 : return _r;
5667 : }
5668 15 : next_after_fail1600:;
5669 : }
5670 : }
5671 : }
5672 : else
5673 : {
5674 37 : if (VECTOR_CST != COMPLEX_CST
5675 : )
5676 : {
5677 37 : {
5678 37 : tree inverse = exact_inverse (type, captures[1]);
5679 37 : if (inverse
5680 : )
5681 : {
5682 30 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1601;
5683 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1601;
5684 30 : {
5685 30 : tree res_op0;
5686 30 : res_op0 = captures[0];
5687 30 : tree res_op1;
5688 30 : res_op1 = inverse;
5689 30 : tree _r;
5690 30 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5691 30 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 996, __FILE__, __LINE__, true);
5692 30 : return _r;
5693 : }
5694 15 : next_after_fail1601:;
5695 : }
5696 : }
5697 : }
5698 : }
5699 : }
5700 : }
5701 15 : break;
5702 : }
5703 5855638 : default:;
5704 : }
5705 5855638 : switch (TREE_CODE (_p0))
5706 : {
5707 0 : case VEC_COND_EXPR:
5708 0 : {
5709 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5710 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5711 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5712 0 : switch (TREE_CODE (_p1))
5713 : {
5714 0 : case VEC_COND_EXPR:
5715 0 : {
5716 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5717 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5718 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5719 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5720 : {
5721 0 : {
5722 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5723 0 : if (VECTOR_TYPE_P (type)
5724 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
5725 : || types_match (type, TREE_TYPE (captures[2]))
5726 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5727 : || (optimize_vectors_before_lowering_p ()
5728 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5729 : )
5730 : {
5731 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1602;
5732 0 : {
5733 0 : tree res_op0;
5734 0 : res_op0 = captures[1];
5735 0 : tree res_op1;
5736 0 : {
5737 0 : tree _o1[2], _r1;
5738 0 : _o1[0] = captures[2];
5739 0 : _o1[1] = captures[5];
5740 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5741 0 : if (EXPR_P (_r1))
5742 0 : goto next_after_fail1602;
5743 0 : res_op1 = _r1;
5744 : }
5745 0 : tree res_op2;
5746 0 : {
5747 0 : tree _o1[2], _r1;
5748 0 : _o1[0] = captures[3];
5749 0 : _o1[1] = captures[6];
5750 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5751 0 : if (EXPR_P (_r1))
5752 0 : goto next_after_fail1602;
5753 0 : res_op2 = _r1;
5754 : }
5755 0 : tree _r;
5756 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5757 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
5758 0 : return _r;
5759 : }
5760 0 : next_after_fail1602:;
5761 : }
5762 : }
5763 : }
5764 : break;
5765 : }
5766 0 : default:;
5767 : }
5768 0 : {
5769 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5770 0 : if (VECTOR_TYPE_P (type)
5771 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
5772 : || types_match (type, TREE_TYPE (captures[2]))
5773 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5774 : || (optimize_vectors_before_lowering_p ()
5775 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5776 : )
5777 : {
5778 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1603;
5779 0 : {
5780 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1603;
5781 0 : tree res_op0;
5782 0 : res_op0 = captures[1];
5783 0 : tree res_op1;
5784 0 : {
5785 0 : tree _o1[2], _r1;
5786 0 : _o1[0] = captures[2];
5787 0 : _o1[1] = unshare_expr (captures[4]);
5788 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5789 0 : if (EXPR_P (_r1))
5790 0 : goto next_after_fail1603;
5791 0 : res_op1 = _r1;
5792 : }
5793 0 : tree res_op2;
5794 0 : {
5795 0 : tree _o1[2], _r1;
5796 0 : _o1[0] = captures[3];
5797 0 : _o1[1] = captures[4];
5798 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5799 0 : if (EXPR_P (_r1))
5800 0 : goto next_after_fail1603;
5801 0 : res_op2 = _r1;
5802 : }
5803 0 : tree _r;
5804 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5805 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
5806 0 : return _r;
5807 : }
5808 0 : next_after_fail1603:;
5809 : }
5810 : }
5811 0 : break;
5812 : }
5813 5855638 : default:;
5814 : }
5815 5855638 : switch (TREE_CODE (_p1))
5816 : {
5817 0 : case VEC_COND_EXPR:
5818 0 : {
5819 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5820 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5821 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5822 0 : {
5823 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5824 0 : if (VECTOR_TYPE_P (type)
5825 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
5826 : || types_match (type, TREE_TYPE (captures[3]))
5827 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5828 : || (optimize_vectors_before_lowering_p ()
5829 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5830 : )
5831 : {
5832 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1604;
5833 0 : {
5834 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1604;
5835 0 : tree res_op0;
5836 0 : res_op0 = captures[2];
5837 0 : tree res_op1;
5838 0 : {
5839 0 : tree _o1[2], _r1;
5840 0 : _o1[0] = unshare_expr (captures[0]);
5841 0 : _o1[1] = captures[3];
5842 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5843 0 : if (EXPR_P (_r1))
5844 0 : goto next_after_fail1604;
5845 0 : res_op1 = _r1;
5846 : }
5847 0 : tree res_op2;
5848 0 : {
5849 0 : tree _o1[2], _r1;
5850 0 : _o1[0] = captures[0];
5851 0 : _o1[1] = captures[4];
5852 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5853 0 : if (EXPR_P (_r1))
5854 0 : goto next_after_fail1604;
5855 0 : res_op2 = _r1;
5856 : }
5857 0 : tree _r;
5858 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
5860 0 : return _r;
5861 : }
5862 0 : next_after_fail1604:;
5863 : }
5864 : }
5865 0 : break;
5866 : }
5867 785280 : case CALL_EXPR:
5868 785280 : switch (get_call_combined_fn (_p1))
5869 : {
5870 20 : case CFN_BUILT_IN_SQRTF:
5871 20 : if (call_expr_nargs (_p1) == 1)
5872 : {
5873 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5874 20 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5875 : {
5876 0 : {
5877 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5878 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
5879 0 : if (res) return res;
5880 : }
5881 : }
5882 20 : switch (TREE_CODE (_q30))
5883 : {
5884 0 : case RDIV_EXPR:
5885 0 : {
5886 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5887 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5888 0 : {
5889 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
5890 0 : if (flag_unsafe_math_optimizations
5891 : )
5892 : {
5893 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1605;
5894 0 : {
5895 0 : tree res_op0;
5896 0 : res_op0 = captures[0];
5897 0 : tree res_op1;
5898 0 : {
5899 0 : tree _o1[1], _r1;
5900 0 : {
5901 0 : tree _o2[2], _r2;
5902 0 : _o2[0] = captures[4];
5903 0 : _o2[1] = captures[3];
5904 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5905 0 : _o1[0] = _r2;
5906 : }
5907 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, TREE_TYPE (_o1[0]), 1, _o1[0]);
5908 0 : if (!_r1)
5909 0 : goto next_after_fail1605;
5910 0 : res_op1 = _r1;
5911 : }
5912 0 : tree _r;
5913 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5914 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
5915 0 : return _r;
5916 : }
5917 0 : next_after_fail1605:;
5918 : }
5919 : }
5920 0 : break;
5921 : }
5922 : default:;
5923 : }
5924 : }
5925 : break;
5926 0 : case CFN_BUILT_IN_SQRTL:
5927 0 : if (call_expr_nargs (_p1) == 1)
5928 : {
5929 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5930 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5931 : {
5932 0 : {
5933 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5934 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
5935 0 : if (res) return res;
5936 : }
5937 : }
5938 0 : switch (TREE_CODE (_q30))
5939 : {
5940 0 : case RDIV_EXPR:
5941 0 : {
5942 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5943 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5944 0 : {
5945 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
5946 0 : if (flag_unsafe_math_optimizations
5947 : )
5948 : {
5949 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1606;
5950 0 : {
5951 0 : tree res_op0;
5952 0 : res_op0 = captures[0];
5953 0 : tree res_op1;
5954 0 : {
5955 0 : tree _o1[1], _r1;
5956 0 : {
5957 0 : tree _o2[2], _r2;
5958 0 : _o2[0] = captures[4];
5959 0 : _o2[1] = captures[3];
5960 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5961 0 : _o1[0] = _r2;
5962 : }
5963 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, TREE_TYPE (_o1[0]), 1, _o1[0]);
5964 0 : if (!_r1)
5965 0 : goto next_after_fail1606;
5966 0 : res_op1 = _r1;
5967 : }
5968 0 : tree _r;
5969 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5970 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
5971 0 : return _r;
5972 : }
5973 0 : next_after_fail1606:;
5974 : }
5975 : }
5976 0 : break;
5977 : }
5978 : default:;
5979 : }
5980 : }
5981 : break;
5982 27 : case CFN_BUILT_IN_EXP:
5983 27 : if (call_expr_nargs (_p1) == 1)
5984 : {
5985 27 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5986 27 : {
5987 27 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
5988 27 : if (flag_unsafe_math_optimizations
5989 : )
5990 : {
5991 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1607;
5992 27 : {
5993 27 : tree res_op0;
5994 27 : res_op0 = captures[0];
5995 27 : tree res_op1;
5996 27 : {
5997 27 : tree _o1[1], _r1;
5998 27 : {
5999 27 : tree _o2[1], _r2;
6000 27 : _o2[0] = captures[2];
6001 27 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6002 27 : _o1[0] = _r2;
6003 : }
6004 27 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, TREE_TYPE (_o1[0]), 1, _o1[0]);
6005 27 : if (!_r1)
6006 0 : goto next_after_fail1607;
6007 27 : res_op1 = _r1;
6008 : }
6009 27 : tree _r;
6010 27 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6011 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6012 27 : return _r;
6013 : }
6014 0 : next_after_fail1607:;
6015 : }
6016 : }
6017 : }
6018 : break;
6019 24 : case CFN_BUILT_IN_EXP10F:
6020 24 : if (call_expr_nargs (_p1) == 1)
6021 : {
6022 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6023 24 : {
6024 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6025 24 : if (flag_unsafe_math_optimizations
6026 : )
6027 : {
6028 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1608;
6029 24 : {
6030 24 : tree res_op0;
6031 24 : res_op0 = captures[0];
6032 24 : tree res_op1;
6033 24 : {
6034 24 : tree _o1[1], _r1;
6035 24 : {
6036 24 : tree _o2[1], _r2;
6037 24 : _o2[0] = captures[2];
6038 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6039 24 : _o1[0] = _r2;
6040 : }
6041 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, TREE_TYPE (_o1[0]), 1, _o1[0]);
6042 24 : if (!_r1)
6043 0 : goto next_after_fail1608;
6044 24 : res_op1 = _r1;
6045 : }
6046 24 : tree _r;
6047 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6048 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6049 24 : return _r;
6050 : }
6051 0 : next_after_fail1608:;
6052 : }
6053 : }
6054 : }
6055 : break;
6056 24 : case CFN_BUILT_IN_EXP10L:
6057 24 : if (call_expr_nargs (_p1) == 1)
6058 : {
6059 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6060 24 : {
6061 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6062 24 : if (flag_unsafe_math_optimizations
6063 : )
6064 : {
6065 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1609;
6066 24 : {
6067 24 : tree res_op0;
6068 24 : res_op0 = captures[0];
6069 24 : tree res_op1;
6070 24 : {
6071 24 : tree _o1[1], _r1;
6072 24 : {
6073 24 : tree _o2[1], _r2;
6074 24 : _o2[0] = captures[2];
6075 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6076 24 : _o1[0] = _r2;
6077 : }
6078 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, TREE_TYPE (_o1[0]), 1, _o1[0]);
6079 24 : if (!_r1)
6080 0 : goto next_after_fail1609;
6081 24 : res_op1 = _r1;
6082 : }
6083 24 : tree _r;
6084 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6085 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6086 24 : return _r;
6087 : }
6088 0 : next_after_fail1609:;
6089 : }
6090 : }
6091 : }
6092 : break;
6093 3 : case CFN_BUILT_IN_CBRT:
6094 3 : if (call_expr_nargs (_p1) == 1)
6095 : {
6096 3 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6097 3 : switch (TREE_CODE (_q30))
6098 : {
6099 2 : case RDIV_EXPR:
6100 2 : {
6101 2 : tree _q40 = TREE_OPERAND (_q30, 0);
6102 2 : tree _q41 = TREE_OPERAND (_q30, 1);
6103 2 : {
6104 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6105 2 : if (flag_unsafe_math_optimizations
6106 : )
6107 : {
6108 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1610;
6109 2 : {
6110 2 : tree res_op0;
6111 2 : res_op0 = captures[0];
6112 2 : tree res_op1;
6113 2 : {
6114 2 : tree _o1[1], _r1;
6115 2 : {
6116 2 : tree _o2[2], _r2;
6117 2 : _o2[0] = captures[4];
6118 2 : _o2[1] = captures[3];
6119 2 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6120 2 : _o1[0] = _r2;
6121 : }
6122 2 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, TREE_TYPE (_o1[0]), 1, _o1[0]);
6123 2 : if (!_r1)
6124 0 : goto next_after_fail1610;
6125 2 : res_op1 = _r1;
6126 : }
6127 2 : tree _r;
6128 2 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6129 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
6130 2 : return _r;
6131 : }
6132 0 : next_after_fail1610:;
6133 : }
6134 : }
6135 0 : break;
6136 : }
6137 : default:;
6138 : }
6139 : }
6140 : break;
6141 24 : case CFN_BUILT_IN_EXP2:
6142 24 : if (call_expr_nargs (_p1) == 1)
6143 : {
6144 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6145 24 : {
6146 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6147 24 : if (flag_unsafe_math_optimizations
6148 : )
6149 : {
6150 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1611;
6151 24 : {
6152 24 : tree res_op0;
6153 24 : res_op0 = captures[0];
6154 24 : tree res_op1;
6155 24 : {
6156 24 : tree _o1[1], _r1;
6157 24 : {
6158 24 : tree _o2[1], _r2;
6159 24 : _o2[0] = captures[2];
6160 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6161 24 : _o1[0] = _r2;
6162 : }
6163 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, TREE_TYPE (_o1[0]), 1, _o1[0]);
6164 24 : if (!_r1)
6165 0 : goto next_after_fail1611;
6166 24 : res_op1 = _r1;
6167 : }
6168 24 : tree _r;
6169 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6170 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6171 24 : return _r;
6172 : }
6173 0 : next_after_fail1611:;
6174 : }
6175 : }
6176 : }
6177 : break;
6178 25 : case CFN_BUILT_IN_EXPF:
6179 25 : if (call_expr_nargs (_p1) == 1)
6180 : {
6181 25 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6182 25 : {
6183 25 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6184 25 : if (flag_unsafe_math_optimizations
6185 : )
6186 : {
6187 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1612;
6188 25 : {
6189 25 : tree res_op0;
6190 25 : res_op0 = captures[0];
6191 25 : tree res_op1;
6192 25 : {
6193 25 : tree _o1[1], _r1;
6194 25 : {
6195 25 : tree _o2[1], _r2;
6196 25 : _o2[0] = captures[2];
6197 25 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6198 25 : _o1[0] = _r2;
6199 : }
6200 25 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, TREE_TYPE (_o1[0]), 1, _o1[0]);
6201 25 : if (!_r1)
6202 0 : goto next_after_fail1612;
6203 25 : res_op1 = _r1;
6204 : }
6205 25 : tree _r;
6206 25 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6207 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6208 25 : return _r;
6209 : }
6210 0 : next_after_fail1612:;
6211 : }
6212 : }
6213 : }
6214 : break;
6215 25 : case CFN_BUILT_IN_EXPL:
6216 25 : if (call_expr_nargs (_p1) == 1)
6217 : {
6218 25 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6219 25 : {
6220 25 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6221 25 : if (flag_unsafe_math_optimizations
6222 : )
6223 : {
6224 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1613;
6225 25 : {
6226 25 : tree res_op0;
6227 25 : res_op0 = captures[0];
6228 25 : tree res_op1;
6229 25 : {
6230 25 : tree _o1[1], _r1;
6231 25 : {
6232 25 : tree _o2[1], _r2;
6233 25 : _o2[0] = captures[2];
6234 25 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6235 25 : _o1[0] = _r2;
6236 : }
6237 25 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, TREE_TYPE (_o1[0]), 1, _o1[0]);
6238 25 : if (!_r1)
6239 0 : goto next_after_fail1613;
6240 25 : res_op1 = _r1;
6241 : }
6242 25 : tree _r;
6243 25 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6244 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6245 25 : return _r;
6246 : }
6247 0 : next_after_fail1613:;
6248 : }
6249 : }
6250 : }
6251 : break;
6252 298 : case CFN_BUILT_IN_SQRT:
6253 298 : if (call_expr_nargs (_p1) == 1)
6254 : {
6255 298 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6256 298 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6257 : {
6258 0 : {
6259 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6260 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
6261 0 : if (res) return res;
6262 : }
6263 : }
6264 298 : switch (TREE_CODE (_q30))
6265 : {
6266 2 : case RDIV_EXPR:
6267 2 : {
6268 2 : tree _q40 = TREE_OPERAND (_q30, 0);
6269 2 : tree _q41 = TREE_OPERAND (_q30, 1);
6270 2 : {
6271 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6272 2 : if (flag_unsafe_math_optimizations
6273 : )
6274 : {
6275 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1614;
6276 2 : {
6277 2 : tree res_op0;
6278 2 : res_op0 = captures[0];
6279 2 : tree res_op1;
6280 2 : {
6281 2 : tree _o1[1], _r1;
6282 2 : {
6283 2 : tree _o2[2], _r2;
6284 2 : _o2[0] = captures[4];
6285 2 : _o2[1] = captures[3];
6286 2 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6287 2 : _o1[0] = _r2;
6288 : }
6289 2 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, TREE_TYPE (_o1[0]), 1, _o1[0]);
6290 2 : if (!_r1)
6291 0 : goto next_after_fail1614;
6292 2 : res_op1 = _r1;
6293 : }
6294 2 : tree _r;
6295 2 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6296 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
6297 2 : return _r;
6298 : }
6299 0 : next_after_fail1614:;
6300 : }
6301 : }
6302 0 : break;
6303 : }
6304 : default:;
6305 : }
6306 : }
6307 : break;
6308 0 : case CFN_EXP:
6309 0 : if (call_expr_nargs (_p1) == 1)
6310 : {
6311 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6312 0 : {
6313 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6314 0 : if (flag_unsafe_math_optimizations
6315 : )
6316 : {
6317 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1615;
6318 0 : {
6319 0 : tree res_op0;
6320 0 : res_op0 = captures[0];
6321 0 : tree res_op1;
6322 0 : {
6323 0 : tree _o1[1], _r1;
6324 0 : {
6325 0 : tree _o2[1], _r2;
6326 0 : _o2[0] = captures[2];
6327 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6328 0 : _o1[0] = _r2;
6329 : }
6330 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_EXP, TREE_TYPE (_o1[0]), 1, _o1[0]);
6331 0 : if (!_r1)
6332 0 : goto next_after_fail1615;
6333 0 : res_op1 = _r1;
6334 : }
6335 0 : tree _r;
6336 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6337 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6338 0 : return _r;
6339 : }
6340 0 : next_after_fail1615:;
6341 : }
6342 : }
6343 : }
6344 : break;
6345 24 : case CFN_BUILT_IN_POW10F:
6346 24 : if (call_expr_nargs (_p1) == 1)
6347 : {
6348 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6349 24 : {
6350 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6351 24 : if (flag_unsafe_math_optimizations
6352 : )
6353 : {
6354 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1616;
6355 24 : {
6356 24 : tree res_op0;
6357 24 : res_op0 = captures[0];
6358 24 : tree res_op1;
6359 24 : {
6360 24 : tree _o1[1], _r1;
6361 24 : {
6362 24 : tree _o2[1], _r2;
6363 24 : _o2[0] = captures[2];
6364 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6365 24 : _o1[0] = _r2;
6366 : }
6367 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, TREE_TYPE (_o1[0]), 1, _o1[0]);
6368 24 : if (!_r1)
6369 24 : goto next_after_fail1616;
6370 0 : res_op1 = _r1;
6371 : }
6372 0 : tree _r;
6373 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6374 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6375 0 : return _r;
6376 : }
6377 24 : next_after_fail1616:;
6378 : }
6379 : }
6380 : }
6381 : break;
6382 24 : case CFN_BUILT_IN_POW10L:
6383 24 : if (call_expr_nargs (_p1) == 1)
6384 : {
6385 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6386 24 : {
6387 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6388 24 : if (flag_unsafe_math_optimizations
6389 : )
6390 : {
6391 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1617;
6392 24 : {
6393 24 : tree res_op0;
6394 24 : res_op0 = captures[0];
6395 24 : tree res_op1;
6396 24 : {
6397 24 : tree _o1[1], _r1;
6398 24 : {
6399 24 : tree _o2[1], _r2;
6400 24 : _o2[0] = captures[2];
6401 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6402 24 : _o1[0] = _r2;
6403 : }
6404 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, TREE_TYPE (_o1[0]), 1, _o1[0]);
6405 24 : if (!_r1)
6406 24 : goto next_after_fail1617;
6407 0 : res_op1 = _r1;
6408 : }
6409 0 : tree _r;
6410 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6411 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6412 0 : return _r;
6413 : }
6414 24 : next_after_fail1617:;
6415 : }
6416 : }
6417 : }
6418 : break;
6419 0 : case CFN_EXP2:
6420 0 : if (call_expr_nargs (_p1) == 1)
6421 : {
6422 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6423 0 : {
6424 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6425 0 : if (flag_unsafe_math_optimizations
6426 : )
6427 : {
6428 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1618;
6429 0 : {
6430 0 : tree res_op0;
6431 0 : res_op0 = captures[0];
6432 0 : tree res_op1;
6433 0 : {
6434 0 : tree _o1[1], _r1;
6435 0 : {
6436 0 : tree _o2[1], _r2;
6437 0 : _o2[0] = captures[2];
6438 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6439 0 : _o1[0] = _r2;
6440 : }
6441 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_EXP2, TREE_TYPE (_o1[0]), 1, _o1[0]);
6442 0 : if (!_r1)
6443 0 : goto next_after_fail1618;
6444 0 : res_op1 = _r1;
6445 : }
6446 0 : tree _r;
6447 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6448 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6449 0 : return _r;
6450 : }
6451 0 : next_after_fail1618:;
6452 : }
6453 : }
6454 : }
6455 : break;
6456 0 : case CFN_SQRT:
6457 0 : if (call_expr_nargs (_p1) == 1)
6458 : {
6459 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6460 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6461 : {
6462 0 : {
6463 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6464 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, CFN_SQRT);
6465 0 : if (res) return res;
6466 : }
6467 : }
6468 0 : switch (TREE_CODE (_q30))
6469 : {
6470 0 : case RDIV_EXPR:
6471 0 : {
6472 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6473 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6474 0 : {
6475 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6476 0 : if (flag_unsafe_math_optimizations
6477 : )
6478 : {
6479 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1619;
6480 0 : {
6481 0 : tree res_op0;
6482 0 : res_op0 = captures[0];
6483 0 : tree res_op1;
6484 0 : {
6485 0 : tree _o1[1], _r1;
6486 0 : {
6487 0 : tree _o2[2], _r2;
6488 0 : _o2[0] = captures[4];
6489 0 : _o2[1] = captures[3];
6490 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6491 0 : _o1[0] = _r2;
6492 : }
6493 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_SQRT, TREE_TYPE (_o1[0]), 1, _o1[0]);
6494 0 : if (!_r1)
6495 0 : goto next_after_fail1619;
6496 0 : res_op1 = _r1;
6497 : }
6498 0 : tree _r;
6499 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6500 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
6501 0 : return _r;
6502 : }
6503 0 : next_after_fail1619:;
6504 : }
6505 : }
6506 0 : break;
6507 : }
6508 : default:;
6509 : }
6510 : }
6511 : break;
6512 0 : case CFN_EXP10:
6513 0 : if (call_expr_nargs (_p1) == 1)
6514 : {
6515 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6516 0 : {
6517 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6518 0 : if (flag_unsafe_math_optimizations
6519 : )
6520 : {
6521 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1620;
6522 0 : {
6523 0 : tree res_op0;
6524 0 : res_op0 = captures[0];
6525 0 : tree res_op1;
6526 0 : {
6527 0 : tree _o1[1], _r1;
6528 0 : {
6529 0 : tree _o2[1], _r2;
6530 0 : _o2[0] = captures[2];
6531 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6532 0 : _o1[0] = _r2;
6533 : }
6534 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_EXP10, TREE_TYPE (_o1[0]), 1, _o1[0]);
6535 0 : if (!_r1)
6536 0 : goto next_after_fail1620;
6537 0 : res_op1 = _r1;
6538 : }
6539 0 : tree _r;
6540 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6541 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6542 0 : return _r;
6543 : }
6544 0 : next_after_fail1620:;
6545 : }
6546 : }
6547 : }
6548 : break;
6549 0 : case CFN_BUILT_IN_CBRTF:
6550 0 : if (call_expr_nargs (_p1) == 1)
6551 : {
6552 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6553 0 : switch (TREE_CODE (_q30))
6554 : {
6555 0 : case RDIV_EXPR:
6556 0 : {
6557 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6558 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6559 0 : {
6560 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6561 0 : if (flag_unsafe_math_optimizations
6562 : )
6563 : {
6564 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1621;
6565 0 : {
6566 0 : tree res_op0;
6567 0 : res_op0 = captures[0];
6568 0 : tree res_op1;
6569 0 : {
6570 0 : tree _o1[1], _r1;
6571 0 : {
6572 0 : tree _o2[2], _r2;
6573 0 : _o2[0] = captures[4];
6574 0 : _o2[1] = captures[3];
6575 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6576 0 : _o1[0] = _r2;
6577 : }
6578 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, TREE_TYPE (_o1[0]), 1, _o1[0]);
6579 0 : if (!_r1)
6580 0 : goto next_after_fail1621;
6581 0 : res_op1 = _r1;
6582 : }
6583 0 : tree _r;
6584 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6585 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
6586 0 : return _r;
6587 : }
6588 0 : next_after_fail1621:;
6589 : }
6590 : }
6591 0 : break;
6592 : }
6593 : default:;
6594 : }
6595 : }
6596 : break;
6597 0 : case CFN_BUILT_IN_CBRTL:
6598 0 : if (call_expr_nargs (_p1) == 1)
6599 : {
6600 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6601 0 : switch (TREE_CODE (_q30))
6602 : {
6603 0 : case RDIV_EXPR:
6604 0 : {
6605 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6606 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6607 0 : {
6608 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6609 0 : if (flag_unsafe_math_optimizations
6610 : )
6611 : {
6612 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1622;
6613 0 : {
6614 0 : tree res_op0;
6615 0 : res_op0 = captures[0];
6616 0 : tree res_op1;
6617 0 : {
6618 0 : tree _o1[1], _r1;
6619 0 : {
6620 0 : tree _o2[2], _r2;
6621 0 : _o2[0] = captures[4];
6622 0 : _o2[1] = captures[3];
6623 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6624 0 : _o1[0] = _r2;
6625 : }
6626 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, TREE_TYPE (_o1[0]), 1, _o1[0]);
6627 0 : if (!_r1)
6628 0 : goto next_after_fail1622;
6629 0 : res_op1 = _r1;
6630 : }
6631 0 : tree _r;
6632 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6633 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
6634 0 : return _r;
6635 : }
6636 0 : next_after_fail1622:;
6637 : }
6638 : }
6639 0 : break;
6640 : }
6641 : default:;
6642 : }
6643 : }
6644 : break;
6645 24 : case CFN_BUILT_IN_EXP10:
6646 24 : if (call_expr_nargs (_p1) == 1)
6647 : {
6648 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6649 24 : {
6650 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6651 24 : if (flag_unsafe_math_optimizations
6652 : )
6653 : {
6654 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1623;
6655 24 : {
6656 24 : tree res_op0;
6657 24 : res_op0 = captures[0];
6658 24 : tree res_op1;
6659 24 : {
6660 24 : tree _o1[1], _r1;
6661 24 : {
6662 24 : tree _o2[1], _r2;
6663 24 : _o2[0] = captures[2];
6664 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6665 24 : _o1[0] = _r2;
6666 : }
6667 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, TREE_TYPE (_o1[0]), 1, _o1[0]);
6668 24 : if (!_r1)
6669 0 : goto next_after_fail1623;
6670 24 : res_op1 = _r1;
6671 : }
6672 24 : tree _r;
6673 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6674 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6675 24 : return _r;
6676 : }
6677 0 : next_after_fail1623:;
6678 : }
6679 : }
6680 : }
6681 : break;
6682 24 : case CFN_BUILT_IN_EXP2F:
6683 24 : if (call_expr_nargs (_p1) == 1)
6684 : {
6685 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6686 24 : {
6687 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6688 24 : if (flag_unsafe_math_optimizations
6689 : )
6690 : {
6691 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1624;
6692 24 : {
6693 24 : tree res_op0;
6694 24 : res_op0 = captures[0];
6695 24 : tree res_op1;
6696 24 : {
6697 24 : tree _o1[1], _r1;
6698 24 : {
6699 24 : tree _o2[1], _r2;
6700 24 : _o2[0] = captures[2];
6701 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6702 24 : _o1[0] = _r2;
6703 : }
6704 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, TREE_TYPE (_o1[0]), 1, _o1[0]);
6705 24 : if (!_r1)
6706 0 : goto next_after_fail1624;
6707 24 : res_op1 = _r1;
6708 : }
6709 24 : tree _r;
6710 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6711 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6712 24 : return _r;
6713 : }
6714 0 : next_after_fail1624:;
6715 : }
6716 : }
6717 : }
6718 : break;
6719 24 : case CFN_BUILT_IN_EXP2L:
6720 24 : if (call_expr_nargs (_p1) == 1)
6721 : {
6722 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6723 24 : {
6724 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6725 24 : if (flag_unsafe_math_optimizations
6726 : )
6727 : {
6728 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1625;
6729 24 : {
6730 24 : tree res_op0;
6731 24 : res_op0 = captures[0];
6732 24 : tree res_op1;
6733 24 : {
6734 24 : tree _o1[1], _r1;
6735 24 : {
6736 24 : tree _o2[1], _r2;
6737 24 : _o2[0] = captures[2];
6738 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6739 24 : _o1[0] = _r2;
6740 : }
6741 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, TREE_TYPE (_o1[0]), 1, _o1[0]);
6742 24 : if (!_r1)
6743 0 : goto next_after_fail1625;
6744 24 : res_op1 = _r1;
6745 : }
6746 24 : tree _r;
6747 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6748 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6749 24 : return _r;
6750 : }
6751 0 : next_after_fail1625:;
6752 : }
6753 : }
6754 : }
6755 : break;
6756 24 : case CFN_BUILT_IN_POW10:
6757 24 : if (call_expr_nargs (_p1) == 1)
6758 : {
6759 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6760 24 : {
6761 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6762 24 : if (flag_unsafe_math_optimizations
6763 : )
6764 : {
6765 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1626;
6766 24 : {
6767 24 : tree res_op0;
6768 24 : res_op0 = captures[0];
6769 24 : tree res_op1;
6770 24 : {
6771 24 : tree _o1[1], _r1;
6772 24 : {
6773 24 : tree _o2[1], _r2;
6774 24 : _o2[0] = captures[2];
6775 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6776 24 : _o1[0] = _r2;
6777 : }
6778 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, TREE_TYPE (_o1[0]), 1, _o1[0]);
6779 24 : if (!_r1)
6780 24 : goto next_after_fail1626;
6781 0 : res_op1 = _r1;
6782 : }
6783 0 : tree _r;
6784 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6785 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
6786 0 : return _r;
6787 : }
6788 24 : next_after_fail1626:;
6789 : }
6790 : }
6791 : }
6792 : break;
6793 : default:;
6794 : }
6795 : break;
6796 5855413 : default:;
6797 : }
6798 5855413 : switch (TREE_CODE (_p0))
6799 : {
6800 188747 : case CALL_EXPR:
6801 188747 : switch (get_call_combined_fn (_p0))
6802 : {
6803 1 : case CFN_BUILT_IN_SINHF:
6804 1 : if (call_expr_nargs (_p0) == 1)
6805 : {
6806 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6807 1 : switch (TREE_CODE (_p1))
6808 : {
6809 1 : case CALL_EXPR:
6810 1 : switch (get_call_combined_fn (_p1))
6811 : {
6812 1 : case CFN_BUILT_IN_COSHF:
6813 1 : if (call_expr_nargs (_p1) == 1)
6814 : {
6815 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6816 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6817 : {
6818 1 : {
6819 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6820 1 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINHF, CFN_BUILT_IN_COSHF, CFN_BUILT_IN_TANHF);
6821 1 : if (res) return res;
6822 : }
6823 : }
6824 : }
6825 : break;
6826 : default:;
6827 : }
6828 : break;
6829 : default:;
6830 : }
6831 : }
6832 : break;
6833 1 : case CFN_BUILT_IN_SINHL:
6834 1 : if (call_expr_nargs (_p0) == 1)
6835 : {
6836 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6837 1 : switch (TREE_CODE (_p1))
6838 : {
6839 1 : case CALL_EXPR:
6840 1 : switch (get_call_combined_fn (_p1))
6841 : {
6842 1 : case CFN_BUILT_IN_COSHL:
6843 1 : if (call_expr_nargs (_p1) == 1)
6844 : {
6845 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6846 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6847 : {
6848 1 : {
6849 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6850 1 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_COSHL, CFN_BUILT_IN_TANHL);
6851 1 : if (res) return res;
6852 : }
6853 : }
6854 : }
6855 : break;
6856 : default:;
6857 : }
6858 : break;
6859 : default:;
6860 : }
6861 : }
6862 : break;
6863 1 : case CFN_BUILT_IN_TANHF:
6864 1 : if (call_expr_nargs (_p0) == 1)
6865 : {
6866 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6867 1 : switch (TREE_CODE (_p1))
6868 : {
6869 1 : case CALL_EXPR:
6870 1 : switch (get_call_combined_fn (_p1))
6871 : {
6872 1 : case CFN_BUILT_IN_SINHF:
6873 1 : if (call_expr_nargs (_p1) == 1)
6874 : {
6875 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6876 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6877 : {
6878 1 : {
6879 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6880 1 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANHF, CFN_BUILT_IN_SINHF, CFN_BUILT_IN_COSHF);
6881 1 : if (res) return res;
6882 : }
6883 : }
6884 : }
6885 : break;
6886 : default:;
6887 : }
6888 : break;
6889 : default:;
6890 : }
6891 : }
6892 : break;
6893 1 : case CFN_BUILT_IN_TANHL:
6894 1 : if (call_expr_nargs (_p0) == 1)
6895 : {
6896 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6897 1 : switch (TREE_CODE (_p1))
6898 : {
6899 1 : case CALL_EXPR:
6900 1 : switch (get_call_combined_fn (_p1))
6901 : {
6902 1 : case CFN_BUILT_IN_SINHL:
6903 1 : if (call_expr_nargs (_p1) == 1)
6904 : {
6905 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6906 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6907 : {
6908 1 : {
6909 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6910 1 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANHL, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_COSHL);
6911 1 : if (res) return res;
6912 : }
6913 : }
6914 : }
6915 : break;
6916 : default:;
6917 : }
6918 : break;
6919 : default:;
6920 : }
6921 : }
6922 : break;
6923 2 : case CFN_BUILT_IN_COS:
6924 2 : if (call_expr_nargs (_p0) == 1)
6925 : {
6926 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6927 2 : switch (TREE_CODE (_p1))
6928 : {
6929 2 : case CALL_EXPR:
6930 2 : switch (get_call_combined_fn (_p1))
6931 : {
6932 2 : case CFN_BUILT_IN_SIN:
6933 2 : if (call_expr_nargs (_p1) == 1)
6934 : {
6935 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6936 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6937 : {
6938 2 : {
6939 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6940 2 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN);
6941 2 : if (res) return res;
6942 : }
6943 : }
6944 : }
6945 : break;
6946 : default:;
6947 : }
6948 : break;
6949 : default:;
6950 : }
6951 : }
6952 : break;
6953 4 : case CFN_BUILT_IN_POW:
6954 4 : if (call_expr_nargs (_p0) == 2)
6955 : {
6956 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6957 4 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6958 4 : switch (TREE_CODE (_q21))
6959 : {
6960 4 : case REAL_CST:
6961 4 : {
6962 4 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6963 : {
6964 4 : {
6965 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6966 4 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
6967 4 : if (res) return res;
6968 : }
6969 : }
6970 : break;
6971 : }
6972 : default:;
6973 : }
6974 : }
6975 : break;
6976 86 : case CFN_BUILT_IN_SIN:
6977 86 : if (call_expr_nargs (_p0) == 1)
6978 : {
6979 86 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6980 86 : switch (TREE_CODE (_p1))
6981 : {
6982 4 : case CALL_EXPR:
6983 4 : switch (get_call_combined_fn (_p1))
6984 : {
6985 2 : case CFN_BUILT_IN_COS:
6986 2 : if (call_expr_nargs (_p1) == 1)
6987 : {
6988 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6989 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6990 : {
6991 2 : {
6992 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6993 2 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS, CFN_BUILT_IN_TAN);
6994 2 : if (res) return res;
6995 : }
6996 : }
6997 : }
6998 : break;
6999 2 : case CFN_BUILT_IN_TAN:
7000 2 : if (call_expr_nargs (_p1) == 1)
7001 : {
7002 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7003 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7004 : {
7005 2 : {
7006 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7007 2 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS);
7008 2 : if (res) return res;
7009 : }
7010 : }
7011 : }
7012 : break;
7013 : default:;
7014 : }
7015 : break;
7016 : default:;
7017 : }
7018 : }
7019 : break;
7020 2 : case CFN_BUILT_IN_TAN:
7021 2 : if (call_expr_nargs (_p0) == 1)
7022 : {
7023 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7024 2 : switch (TREE_CODE (_p1))
7025 : {
7026 2 : case CALL_EXPR:
7027 2 : switch (get_call_combined_fn (_p1))
7028 : {
7029 2 : case CFN_BUILT_IN_SIN:
7030 2 : if (call_expr_nargs (_p1) == 1)
7031 : {
7032 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7033 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7034 : {
7035 2 : {
7036 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7037 2 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS);
7038 2 : if (res) return res;
7039 : }
7040 : }
7041 : }
7042 : break;
7043 : default:;
7044 : }
7045 : break;
7046 : default:;
7047 : }
7048 : }
7049 : break;
7050 2 : case CFN_BUILT_IN_COSF:
7051 2 : if (call_expr_nargs (_p0) == 1)
7052 : {
7053 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7054 2 : switch (TREE_CODE (_p1))
7055 : {
7056 2 : case CALL_EXPR:
7057 2 : switch (get_call_combined_fn (_p1))
7058 : {
7059 2 : case CFN_BUILT_IN_SINF:
7060 2 : if (call_expr_nargs (_p1) == 1)
7061 : {
7062 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7063 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7064 : {
7065 2 : {
7066 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7067 2 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF);
7068 2 : if (res) return res;
7069 : }
7070 : }
7071 : }
7072 : break;
7073 : default:;
7074 : }
7075 : break;
7076 : default:;
7077 : }
7078 : }
7079 : break;
7080 2 : case CFN_BUILT_IN_COSL:
7081 2 : if (call_expr_nargs (_p0) == 1)
7082 : {
7083 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7084 2 : switch (TREE_CODE (_p1))
7085 : {
7086 2 : case CALL_EXPR:
7087 2 : switch (get_call_combined_fn (_p1))
7088 : {
7089 2 : case CFN_BUILT_IN_SINL:
7090 2 : if (call_expr_nargs (_p1) == 1)
7091 : {
7092 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7093 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7094 : {
7095 2 : {
7096 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7097 2 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL);
7098 2 : if (res) return res;
7099 : }
7100 : }
7101 : }
7102 : break;
7103 : default:;
7104 : }
7105 : break;
7106 : default:;
7107 : }
7108 : }
7109 : break;
7110 1 : case CFN_BUILT_IN_POWF:
7111 1 : if (call_expr_nargs (_p0) == 2)
7112 : {
7113 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7114 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7115 1 : switch (TREE_CODE (_q21))
7116 : {
7117 1 : case REAL_CST:
7118 1 : {
7119 1 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7120 : {
7121 0 : {
7122 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7123 0 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
7124 0 : if (res) return res;
7125 : }
7126 : }
7127 : break;
7128 : }
7129 : default:;
7130 : }
7131 : }
7132 : break;
7133 0 : case CFN_BUILT_IN_POWL:
7134 0 : if (call_expr_nargs (_p0) == 2)
7135 : {
7136 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7137 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7138 0 : switch (TREE_CODE (_q21))
7139 : {
7140 0 : case REAL_CST:
7141 0 : {
7142 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7143 : {
7144 0 : {
7145 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7146 0 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
7147 0 : if (res) return res;
7148 : }
7149 : }
7150 : break;
7151 : }
7152 : default:;
7153 : }
7154 : }
7155 : break;
7156 4 : case CFN_BUILT_IN_SINF:
7157 4 : if (call_expr_nargs (_p0) == 1)
7158 : {
7159 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7160 4 : switch (TREE_CODE (_p1))
7161 : {
7162 4 : case CALL_EXPR:
7163 4 : switch (get_call_combined_fn (_p1))
7164 : {
7165 2 : case CFN_BUILT_IN_COSF:
7166 2 : if (call_expr_nargs (_p1) == 1)
7167 : {
7168 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7169 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7170 : {
7171 2 : {
7172 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7173 2 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_TANF);
7174 2 : if (res) return res;
7175 : }
7176 : }
7177 : }
7178 : break;
7179 2 : case CFN_BUILT_IN_TANF:
7180 2 : if (call_expr_nargs (_p1) == 1)
7181 : {
7182 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7183 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7184 : {
7185 2 : {
7186 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7187 2 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF);
7188 2 : if (res) return res;
7189 : }
7190 : }
7191 : }
7192 : break;
7193 : default:;
7194 : }
7195 : break;
7196 : default:;
7197 : }
7198 : }
7199 : break;
7200 135 : case CFN_BUILT_IN_SINH:
7201 135 : if (call_expr_nargs (_p0) == 1)
7202 : {
7203 135 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7204 135 : switch (TREE_CODE (_p1))
7205 : {
7206 3 : case CALL_EXPR:
7207 3 : switch (get_call_combined_fn (_p1))
7208 : {
7209 3 : case CFN_BUILT_IN_COSH:
7210 3 : if (call_expr_nargs (_p1) == 1)
7211 : {
7212 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7213 3 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7214 : {
7215 3 : {
7216 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7217 3 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINH, CFN_BUILT_IN_COSH, CFN_BUILT_IN_TANH);
7218 3 : if (res) return res;
7219 : }
7220 : }
7221 : }
7222 : break;
7223 : default:;
7224 : }
7225 : break;
7226 : default:;
7227 : }
7228 : }
7229 : break;
7230 4 : case CFN_BUILT_IN_SINL:
7231 4 : if (call_expr_nargs (_p0) == 1)
7232 : {
7233 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7234 4 : switch (TREE_CODE (_p1))
7235 : {
7236 4 : case CALL_EXPR:
7237 4 : switch (get_call_combined_fn (_p1))
7238 : {
7239 2 : case CFN_BUILT_IN_COSL:
7240 2 : if (call_expr_nargs (_p1) == 1)
7241 : {
7242 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7243 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7244 : {
7245 2 : {
7246 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7247 2 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_TANL);
7248 2 : if (res) return res;
7249 : }
7250 : }
7251 : }
7252 : break;
7253 2 : case CFN_BUILT_IN_TANL:
7254 2 : if (call_expr_nargs (_p1) == 1)
7255 : {
7256 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7257 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7258 : {
7259 2 : {
7260 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7261 2 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL);
7262 2 : if (res) return res;
7263 : }
7264 : }
7265 : }
7266 : break;
7267 : default:;
7268 : }
7269 : break;
7270 : default:;
7271 : }
7272 : }
7273 : break;
7274 2 : case CFN_BUILT_IN_TANF:
7275 2 : if (call_expr_nargs (_p0) == 1)
7276 : {
7277 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7278 2 : switch (TREE_CODE (_p1))
7279 : {
7280 2 : case CALL_EXPR:
7281 2 : switch (get_call_combined_fn (_p1))
7282 : {
7283 2 : case CFN_BUILT_IN_SINF:
7284 2 : if (call_expr_nargs (_p1) == 1)
7285 : {
7286 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7287 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7288 : {
7289 2 : {
7290 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7291 2 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF);
7292 2 : if (res) return res;
7293 : }
7294 : }
7295 : }
7296 : break;
7297 : default:;
7298 : }
7299 : break;
7300 : default:;
7301 : }
7302 : }
7303 : break;
7304 1 : case CFN_BUILT_IN_TANH:
7305 1 : if (call_expr_nargs (_p0) == 1)
7306 : {
7307 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7308 1 : switch (TREE_CODE (_p1))
7309 : {
7310 1 : case CALL_EXPR:
7311 1 : switch (get_call_combined_fn (_p1))
7312 : {
7313 1 : case CFN_BUILT_IN_SINH:
7314 1 : if (call_expr_nargs (_p1) == 1)
7315 : {
7316 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7317 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7318 : {
7319 1 : {
7320 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7321 1 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANH, CFN_BUILT_IN_SINH, CFN_BUILT_IN_COSH);
7322 1 : if (res) return res;
7323 : }
7324 : }
7325 : }
7326 : break;
7327 : default:;
7328 : }
7329 : break;
7330 : default:;
7331 : }
7332 : }
7333 : break;
7334 2 : case CFN_BUILT_IN_TANL:
7335 2 : if (call_expr_nargs (_p0) == 1)
7336 : {
7337 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7338 2 : switch (TREE_CODE (_p1))
7339 : {
7340 2 : case CALL_EXPR:
7341 2 : switch (get_call_combined_fn (_p1))
7342 : {
7343 2 : case CFN_BUILT_IN_SINL:
7344 2 : if (call_expr_nargs (_p1) == 1)
7345 : {
7346 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7347 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7348 : {
7349 2 : {
7350 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7351 2 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL);
7352 2 : if (res) return res;
7353 : }
7354 : }
7355 : }
7356 : break;
7357 : default:;
7358 : }
7359 : break;
7360 : default:;
7361 : }
7362 : }
7363 : break;
7364 0 : case CFN_COS:
7365 0 : if (call_expr_nargs (_p0) == 1)
7366 : {
7367 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7368 0 : switch (TREE_CODE (_p1))
7369 : {
7370 0 : case CALL_EXPR:
7371 0 : switch (get_call_combined_fn (_p1))
7372 : {
7373 0 : case CFN_SIN:
7374 0 : if (call_expr_nargs (_p1) == 1)
7375 : {
7376 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7377 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7378 : {
7379 0 : {
7380 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7381 0 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_COS, CFN_SIN, CFN_TAN);
7382 0 : if (res) return res;
7383 : }
7384 : }
7385 : }
7386 : break;
7387 : default:;
7388 : }
7389 : break;
7390 : default:;
7391 : }
7392 : }
7393 : break;
7394 0 : case CFN_POW:
7395 0 : if (call_expr_nargs (_p0) == 2)
7396 : {
7397 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7398 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7399 0 : switch (TREE_CODE (_q21))
7400 : {
7401 0 : case REAL_CST:
7402 0 : {
7403 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7404 : {
7405 0 : {
7406 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7407 0 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_POW);
7408 0 : if (res) return res;
7409 : }
7410 : }
7411 : break;
7412 : }
7413 : default:;
7414 : }
7415 : }
7416 : break;
7417 0 : case CFN_SIN:
7418 0 : if (call_expr_nargs (_p0) == 1)
7419 : {
7420 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7421 0 : switch (TREE_CODE (_p1))
7422 : {
7423 0 : case CALL_EXPR:
7424 0 : switch (get_call_combined_fn (_p1))
7425 : {
7426 0 : case CFN_COS:
7427 0 : if (call_expr_nargs (_p1) == 1)
7428 : {
7429 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7430 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7431 : {
7432 0 : {
7433 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7434 0 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, CFN_SIN, CFN_COS, CFN_TAN);
7435 0 : if (res) return res;
7436 : }
7437 : }
7438 : }
7439 : break;
7440 0 : case CFN_TAN:
7441 0 : if (call_expr_nargs (_p1) == 1)
7442 : {
7443 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7444 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7445 : {
7446 0 : {
7447 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7448 0 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, CFN_SIN, CFN_TAN, CFN_COS);
7449 0 : if (res) return res;
7450 : }
7451 : }
7452 : }
7453 : break;
7454 : default:;
7455 : }
7456 : break;
7457 : default:;
7458 : }
7459 : }
7460 : break;
7461 0 : case CFN_TAN:
7462 0 : if (call_expr_nargs (_p0) == 1)
7463 : {
7464 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7465 0 : switch (TREE_CODE (_p1))
7466 : {
7467 0 : case CALL_EXPR:
7468 0 : switch (get_call_combined_fn (_p1))
7469 : {
7470 0 : case CFN_SIN:
7471 0 : if (call_expr_nargs (_p1) == 1)
7472 : {
7473 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7474 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7475 : {
7476 0 : {
7477 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7478 0 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_SIN, CFN_COS);
7479 0 : if (res) return res;
7480 : }
7481 : }
7482 : }
7483 : break;
7484 : default:;
7485 : }
7486 : break;
7487 : default:;
7488 : }
7489 : }
7490 : break;
7491 0 : case CFN_SINH:
7492 0 : if (call_expr_nargs (_p0) == 1)
7493 : {
7494 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7495 0 : switch (TREE_CODE (_p1))
7496 : {
7497 0 : case CALL_EXPR:
7498 0 : switch (get_call_combined_fn (_p1))
7499 : {
7500 0 : case CFN_COSH:
7501 0 : if (call_expr_nargs (_p1) == 1)
7502 : {
7503 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7504 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7505 : {
7506 0 : {
7507 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7508 0 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures, CFN_SINH, CFN_COSH, CFN_TANH);
7509 0 : if (res) return res;
7510 : }
7511 : }
7512 : }
7513 : break;
7514 : default:;
7515 : }
7516 : break;
7517 : default:;
7518 : }
7519 : }
7520 : break;
7521 0 : case CFN_TANH:
7522 0 : if (call_expr_nargs (_p0) == 1)
7523 : {
7524 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7525 0 : switch (TREE_CODE (_p1))
7526 : {
7527 0 : case CALL_EXPR:
7528 0 : switch (get_call_combined_fn (_p1))
7529 : {
7530 0 : case CFN_SINH:
7531 0 : if (call_expr_nargs (_p1) == 1)
7532 : {
7533 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7534 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7535 : {
7536 0 : {
7537 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7538 0 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_TANH, CFN_SINH, CFN_COSH);
7539 0 : if (res) return res;
7540 : }
7541 : }
7542 : }
7543 : break;
7544 : default:;
7545 : }
7546 : break;
7547 : default:;
7548 : }
7549 : }
7550 : break;
7551 : default:;
7552 : }
7553 : break;
7554 5855379 : default:;
7555 : }
7556 5855379 : switch (TREE_CODE (_p1))
7557 : {
7558 785025 : case CALL_EXPR:
7559 785025 : switch (get_call_combined_fn (_p1))
7560 : {
7561 22 : case CFN_BUILT_IN_POW:
7562 22 : if (call_expr_nargs (_p1) == 2)
7563 : {
7564 22 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7565 22 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7566 22 : {
7567 22 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7568 22 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
7569 22 : if (res) return res;
7570 : }
7571 : }
7572 : break;
7573 2 : case CFN_BUILT_IN_POWF:
7574 2 : if (call_expr_nargs (_p1) == 2)
7575 : {
7576 2 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7577 2 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7578 2 : {
7579 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7580 2 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
7581 2 : if (res) return res;
7582 : }
7583 : }
7584 : break;
7585 0 : case CFN_BUILT_IN_POWL:
7586 0 : if (call_expr_nargs (_p1) == 2)
7587 : {
7588 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7589 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7590 0 : {
7591 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7592 0 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
7593 0 : if (res) return res;
7594 : }
7595 : }
7596 : break;
7597 0 : case CFN_POW:
7598 0 : if (call_expr_nargs (_p1) == 2)
7599 : {
7600 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7601 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7602 0 : {
7603 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7604 0 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_POW);
7605 0 : if (res) return res;
7606 : }
7607 : }
7608 : break;
7609 : default:;
7610 : }
7611 : break;
7612 : default:;
7613 : }
7614 : return NULL_TREE;
7615 : }
7616 :
7617 : tree
7618 6569041 : generic_simplify_GE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
7619 : {
7620 6569041 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7621 6569041 : switch (TREE_CODE (_p0))
7622 : {
7623 2001 : case RDIV_EXPR:
7624 2001 : {
7625 2001 : tree _q20 = TREE_OPERAND (_p0, 0);
7626 2001 : tree _q21 = TREE_OPERAND (_p0, 1);
7627 2001 : switch (TREE_CODE (_q20))
7628 : {
7629 46 : case REAL_CST:
7630 46 : {
7631 46 : if (real_zerop (_p1))
7632 : {
7633 2 : {
7634 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7635 2 : tree res = generic_simplify_374 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7636 2 : if (res) return res;
7637 : }
7638 : }
7639 : break;
7640 : }
7641 : default:;
7642 : }
7643 : break;
7644 : }
7645 1208 : case TRUNC_MOD_EXPR:
7646 1208 : {
7647 1208 : tree _q20 = TREE_OPERAND (_p0, 0);
7648 1208 : tree _q21 = TREE_OPERAND (_p0, 1);
7649 1208 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7650 : {
7651 26 : {
7652 26 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7653 26 : tree res = generic_simplify_375 (loc, type, _p0, _p1, captures, GE_EXPR);
7654 26 : if (res) return res;
7655 : }
7656 : }
7657 : break;
7658 : }
7659 31369 : case MULT_EXPR:
7660 31369 : {
7661 31369 : tree _q20 = TREE_OPERAND (_p0, 0);
7662 31369 : tree _q21 = TREE_OPERAND (_p0, 1);
7663 31369 : switch (TREE_CODE (_p1))
7664 : {
7665 6873 : case MULT_EXPR:
7666 6873 : {
7667 6873 : tree _q50 = TREE_OPERAND (_p1, 0);
7668 6873 : tree _q51 = TREE_OPERAND (_p1, 1);
7669 6873 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7670 : {
7671 4709 : {
7672 4709 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7673 4709 : tree res = generic_simplify_376 (loc, type, _p0, _p1, captures, GE_EXPR);
7674 4709 : if (res) return res;
7675 : }
7676 : }
7677 2702 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7678 : {
7679 0 : {
7680 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
7681 0 : tree res = generic_simplify_376 (loc, type, _p0, _p1, captures, GE_EXPR);
7682 0 : if (res) return res;
7683 : }
7684 : }
7685 2702 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7686 : {
7687 0 : {
7688 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
7689 0 : tree res = generic_simplify_376 (loc, type, _p0, _p1, captures, GE_EXPR);
7690 0 : if (res) return res;
7691 : }
7692 : }
7693 2702 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7694 : {
7695 1 : {
7696 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
7697 1 : tree res = generic_simplify_376 (loc, type, _p0, _p1, captures, GE_EXPR);
7698 1 : if (res) return res;
7699 : }
7700 : }
7701 : break;
7702 : }
7703 : default:;
7704 : }
7705 : break;
7706 : }
7707 994281 : CASE_CONVERT:
7708 994281 : {
7709 994281 : tree _q20 = TREE_OPERAND (_p0, 0);
7710 994281 : switch (TREE_CODE (_q20))
7711 : {
7712 157 : case EXACT_DIV_EXPR:
7713 157 : {
7714 157 : tree _q30 = TREE_OPERAND (_q20, 0);
7715 157 : tree _q31 = TREE_OPERAND (_q20, 1);
7716 157 : switch (TREE_CODE (_q31))
7717 : {
7718 157 : case INTEGER_CST:
7719 157 : {
7720 157 : switch (TREE_CODE (_p1))
7721 : {
7722 43 : CASE_CONVERT:
7723 43 : {
7724 43 : tree _q60 = TREE_OPERAND (_p1, 0);
7725 43 : switch (TREE_CODE (_q60))
7726 : {
7727 0 : case EXACT_DIV_EXPR:
7728 0 : {
7729 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7730 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7731 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
7732 : {
7733 0 : {
7734 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
7735 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, GE_EXPR);
7736 0 : if (res) return res;
7737 : }
7738 : }
7739 : break;
7740 : }
7741 : default:;
7742 : }
7743 : break;
7744 : }
7745 : default:;
7746 : }
7747 : break;
7748 : }
7749 : default:;
7750 : }
7751 : break;
7752 : }
7753 : default:;
7754 : }
7755 : break;
7756 : }
7757 8045 : case EXACT_DIV_EXPR:
7758 8045 : {
7759 8045 : tree _q20 = TREE_OPERAND (_p0, 0);
7760 8045 : tree _q21 = TREE_OPERAND (_p0, 1);
7761 8045 : switch (TREE_CODE (_q21))
7762 : {
7763 8045 : case INTEGER_CST:
7764 8045 : {
7765 8045 : switch (TREE_CODE (_p1))
7766 : {
7767 0 : case EXACT_DIV_EXPR:
7768 0 : {
7769 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7770 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7771 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7772 : {
7773 0 : {
7774 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
7775 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, GE_EXPR);
7776 0 : if (res) return res;
7777 : }
7778 : }
7779 : break;
7780 : }
7781 : default:;
7782 : }
7783 : break;
7784 : }
7785 : default:;
7786 : }
7787 : break;
7788 : }
7789 41414 : case TRUNC_DIV_EXPR:
7790 41414 : {
7791 41414 : tree _q20 = TREE_OPERAND (_p0, 0);
7792 41414 : tree _q21 = TREE_OPERAND (_p0, 1);
7793 41414 : switch (TREE_CODE (_q21))
7794 : {
7795 40888 : case INTEGER_CST:
7796 40888 : {
7797 40888 : switch (TREE_CODE (_p1))
7798 : {
7799 39977 : case INTEGER_CST:
7800 39977 : {
7801 39977 : {
7802 39977 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7803 39977 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, GE_EXPR);
7804 39977 : if (res) return res;
7805 : }
7806 0 : break;
7807 : }
7808 : default:;
7809 : }
7810 : break;
7811 : }
7812 : default:;
7813 : }
7814 : break;
7815 : }
7816 792806 : case PLUS_EXPR:
7817 792806 : {
7818 792806 : tree _q20 = TREE_OPERAND (_p0, 0);
7819 792806 : tree _q21 = TREE_OPERAND (_p0, 1);
7820 792806 : switch (TREE_CODE (_p1))
7821 : {
7822 52247 : case PLUS_EXPR:
7823 52247 : {
7824 52247 : tree _q50 = TREE_OPERAND (_p1, 0);
7825 52247 : tree _q51 = TREE_OPERAND (_p1, 1);
7826 52247 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7827 : {
7828 1430 : {
7829 1430 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7830 1430 : tree res = generic_simplify_377 (loc, type, _p0, _p1, captures, GE_EXPR);
7831 1430 : if (res) return res;
7832 : }
7833 : }
7834 52247 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7835 : {
7836 17 : {
7837 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
7838 17 : tree res = generic_simplify_377 (loc, type, _p0, _p1, captures, GE_EXPR);
7839 17 : if (res) return res;
7840 : }
7841 : }
7842 52247 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7843 : {
7844 16 : {
7845 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
7846 16 : tree res = generic_simplify_377 (loc, type, _p0, _p1, captures, GE_EXPR);
7847 16 : if (res) return res;
7848 : }
7849 : }
7850 52247 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7851 : {
7852 961 : {
7853 961 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
7854 961 : tree res = generic_simplify_377 (loc, type, _p0, _p1, captures, GE_EXPR);
7855 961 : if (res) return res;
7856 : }
7857 : }
7858 : break;
7859 : }
7860 792758 : default:;
7861 : }
7862 792758 : switch (TREE_CODE (_q21))
7863 : {
7864 680958 : case INTEGER_CST:
7865 680958 : {
7866 680958 : switch (TREE_CODE (_p1))
7867 : {
7868 15124 : case PLUS_EXPR:
7869 15124 : {
7870 15124 : tree _q50 = TREE_OPERAND (_p1, 0);
7871 15124 : tree _q51 = TREE_OPERAND (_p1, 1);
7872 15124 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7873 : {
7874 1426 : {
7875 1426 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7876 1426 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, GE_EXPR);
7877 1426 : if (res) return res;
7878 : }
7879 : }
7880 : break;
7881 : }
7882 : default:;
7883 : }
7884 : break;
7885 : }
7886 792758 : default:;
7887 : }
7888 792758 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7889 : {
7890 52977 : {
7891 52977 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7892 52977 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, GE_EXPR);
7893 52977 : if (res) return res;
7894 : }
7895 : }
7896 759419 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7897 : {
7898 24574 : {
7899 24574 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
7900 24574 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, GE_EXPR);
7901 24574 : if (res) return res;
7902 : }
7903 : }
7904 : break;
7905 : }
7906 118068 : case MINUS_EXPR:
7907 118068 : {
7908 118068 : tree _q20 = TREE_OPERAND (_p0, 0);
7909 118068 : tree _q21 = TREE_OPERAND (_p0, 1);
7910 118068 : switch (TREE_CODE (_p1))
7911 : {
7912 1396 : case MINUS_EXPR:
7913 1396 : {
7914 1396 : tree _q50 = TREE_OPERAND (_p1, 0);
7915 1396 : tree _q51 = TREE_OPERAND (_p1, 1);
7916 1396 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7917 : {
7918 14 : {
7919 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7920 14 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, GE_EXPR);
7921 14 : if (res) return res;
7922 : }
7923 : }
7924 1396 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7925 : {
7926 22 : {
7927 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
7928 22 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, GE_EXPR);
7929 22 : if (res) return res;
7930 : }
7931 : }
7932 : break;
7933 : }
7934 : default:;
7935 : }
7936 : break;
7937 : }
7938 2338 : case POINTER_DIFF_EXPR:
7939 2338 : {
7940 2338 : tree _q20 = TREE_OPERAND (_p0, 0);
7941 2338 : tree _q21 = TREE_OPERAND (_p0, 1);
7942 2338 : switch (TREE_CODE (_p1))
7943 : {
7944 32 : case POINTER_DIFF_EXPR:
7945 32 : {
7946 32 : tree _q50 = TREE_OPERAND (_p1, 0);
7947 32 : tree _q51 = TREE_OPERAND (_p1, 1);
7948 32 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7949 : {
7950 0 : {
7951 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
7952 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, GE_EXPR);
7953 0 : if (res) return res;
7954 : }
7955 : }
7956 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7957 : {
7958 0 : {
7959 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
7960 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, GE_EXPR);
7961 0 : if (res) return res;
7962 : }
7963 : }
7964 : break;
7965 : }
7966 : default:;
7967 : }
7968 : break;
7969 : }
7970 6487934 : default:;
7971 : }
7972 6487934 : switch (TREE_CODE (_p1))
7973 : {
7974 59019 : case PLUS_EXPR:
7975 59019 : {
7976 59019 : tree _q30 = TREE_OPERAND (_p1, 0);
7977 59019 : tree _q31 = TREE_OPERAND (_p1, 1);
7978 59019 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7979 : {
7980 0 : {
7981 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7982 0 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, LE_EXPR);
7983 0 : if (res) return res;
7984 : }
7985 : }
7986 59019 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7987 : {
7988 0 : {
7989 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
7990 0 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, LE_EXPR);
7991 0 : if (res) return res;
7992 : }
7993 : }
7994 : break;
7995 : }
7996 2422 : case MINUS_EXPR:
7997 2422 : {
7998 2422 : tree _q30 = TREE_OPERAND (_p1, 0);
7999 2422 : tree _q31 = TREE_OPERAND (_p1, 1);
8000 2422 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8001 : {
8002 0 : {
8003 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
8004 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, GE_EXPR);
8005 0 : if (res) return res;
8006 : }
8007 : }
8008 : break;
8009 : }
8010 6487934 : default:;
8011 : }
8012 6487934 : switch (TREE_CODE (_p0))
8013 : {
8014 118068 : case MINUS_EXPR:
8015 118068 : {
8016 118068 : tree _q20 = TREE_OPERAND (_p0, 0);
8017 118068 : tree _q21 = TREE_OPERAND (_p0, 1);
8018 118068 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8019 : {
8020 2744 : {
8021 2744 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
8022 2744 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, LE_EXPR);
8023 2744 : if (res) return res;
8024 : }
8025 : }
8026 : break;
8027 : }
8028 1065 : case BIT_IOR_EXPR:
8029 1065 : {
8030 1065 : tree _q20 = TREE_OPERAND (_p0, 0);
8031 1065 : tree _q21 = TREE_OPERAND (_p0, 1);
8032 1065 : if (tree_expr_nonnegative_p (_q20))
8033 : {
8034 222 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8035 : {
8036 0 : {
8037 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8038 0 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
8039 0 : if (res) return res;
8040 : }
8041 : }
8042 : }
8043 1065 : if (tree_expr_nonnegative_p (_q21))
8044 : {
8045 296 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8046 : {
8047 0 : {
8048 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8049 0 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
8050 0 : if (res) return res;
8051 : }
8052 : }
8053 : }
8054 : break;
8055 : }
8056 6487933 : default:;
8057 : }
8058 6487933 : switch (TREE_CODE (_p1))
8059 : {
8060 195 : case BIT_AND_EXPR:
8061 195 : {
8062 195 : tree _q30 = TREE_OPERAND (_p1, 0);
8063 195 : tree _q31 = TREE_OPERAND (_p1, 1);
8064 195 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8065 : {
8066 0 : if (tree_expr_nonnegative_p (_q30))
8067 : {
8068 0 : {
8069 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8070 0 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
8071 0 : if (res) return res;
8072 : }
8073 : }
8074 : }
8075 195 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8076 : {
8077 0 : if (tree_expr_nonnegative_p (_q31))
8078 : {
8079 0 : {
8080 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8081 0 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
8082 0 : if (res) return res;
8083 : }
8084 : }
8085 : }
8086 : break;
8087 : }
8088 6487933 : default:;
8089 : }
8090 6487933 : switch (TREE_CODE (_p0))
8091 : {
8092 814 : case MAX_EXPR:
8093 814 : {
8094 814 : tree _q20 = TREE_OPERAND (_p0, 0);
8095 814 : tree _q21 = TREE_OPERAND (_p0, 1);
8096 814 : switch (TREE_CODE (_p1))
8097 : {
8098 0 : case MIN_EXPR:
8099 0 : {
8100 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8101 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8102 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8103 : {
8104 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8105 : {
8106 0 : {
8107 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8108 0 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
8109 0 : if (res) return res;
8110 : }
8111 : }
8112 : }
8113 : break;
8114 : }
8115 : default:;
8116 : }
8117 : break;
8118 : }
8119 2973 : case MIN_EXPR:
8120 2973 : {
8121 2973 : tree _q20 = TREE_OPERAND (_p0, 0);
8122 2973 : tree _q21 = TREE_OPERAND (_p0, 1);
8123 2973 : switch (TREE_CODE (_p1))
8124 : {
8125 27 : case MAX_EXPR:
8126 27 : {
8127 27 : tree _q50 = TREE_OPERAND (_p1, 0);
8128 27 : tree _q51 = TREE_OPERAND (_p1, 1);
8129 27 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8130 : {
8131 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8132 : {
8133 0 : {
8134 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8135 0 : tree res = generic_simplify_384 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
8136 0 : if (res) return res;
8137 : }
8138 : }
8139 : }
8140 : break;
8141 : }
8142 2973 : default:;
8143 : }
8144 2973 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8145 : {
8146 0 : {
8147 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8148 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
8149 0 : if (res) return res;
8150 : }
8151 : }
8152 2973 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8153 : {
8154 1 : {
8155 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8156 1 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
8157 1 : if (res) return res;
8158 : }
8159 : }
8160 : break;
8161 : }
8162 6487932 : default:;
8163 : }
8164 6487932 : switch (TREE_CODE (_p1))
8165 : {
8166 200 : case MAX_EXPR:
8167 200 : {
8168 200 : tree _q30 = TREE_OPERAND (_p1, 0);
8169 200 : tree _q31 = TREE_OPERAND (_p1, 1);
8170 200 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8171 : {
8172 0 : {
8173 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8174 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
8175 0 : if (res) return res;
8176 : }
8177 : }
8178 200 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8179 : {
8180 0 : {
8181 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8182 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
8183 0 : if (res) return res;
8184 : }
8185 : }
8186 : break;
8187 : }
8188 1706 : case MIN_EXPR:
8189 1706 : {
8190 1706 : tree _q30 = TREE_OPERAND (_p1, 0);
8191 1706 : tree _q31 = TREE_OPERAND (_p1, 1);
8192 1706 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8193 : {
8194 0 : {
8195 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8196 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
8197 0 : if (res) return res;
8198 : }
8199 : }
8200 1706 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8201 : {
8202 0 : {
8203 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8204 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
8205 0 : if (res) return res;
8206 : }
8207 : }
8208 : break;
8209 : }
8210 6487932 : default:;
8211 : }
8212 6487932 : switch (TREE_CODE (_p0))
8213 : {
8214 814 : case MAX_EXPR:
8215 814 : {
8216 814 : tree _q20 = TREE_OPERAND (_p0, 0);
8217 814 : tree _q21 = TREE_OPERAND (_p0, 1);
8218 814 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8219 : {
8220 0 : {
8221 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8222 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
8223 0 : if (res) return res;
8224 : }
8225 : }
8226 814 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8227 : {
8228 2 : {
8229 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8230 2 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
8231 2 : if (res) return res;
8232 : }
8233 : }
8234 812 : switch (TREE_CODE (_q21))
8235 : {
8236 735 : case INTEGER_CST:
8237 735 : {
8238 735 : switch (TREE_CODE (_p1))
8239 : {
8240 0 : case INTEGER_CST:
8241 0 : {
8242 0 : {
8243 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8244 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, MAX_EXPR, GE_EXPR, BIT_IOR_EXPR);
8245 0 : if (res) return res;
8246 : }
8247 0 : break;
8248 : }
8249 : default:;
8250 : }
8251 : break;
8252 : }
8253 : default:;
8254 : }
8255 : break;
8256 : }
8257 2972 : case MIN_EXPR:
8258 2972 : {
8259 2972 : tree _q20 = TREE_OPERAND (_p0, 0);
8260 2972 : tree _q21 = TREE_OPERAND (_p0, 1);
8261 2972 : switch (TREE_CODE (_q21))
8262 : {
8263 1002 : case INTEGER_CST:
8264 1002 : {
8265 1002 : switch (TREE_CODE (_p1))
8266 : {
8267 0 : case INTEGER_CST:
8268 0 : {
8269 0 : {
8270 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8271 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, BIT_AND_EXPR);
8272 0 : if (res) return res;
8273 : }
8274 0 : break;
8275 : }
8276 : default:;
8277 : }
8278 : break;
8279 : }
8280 : default:;
8281 : }
8282 : break;
8283 : }
8284 994281 : CASE_CONVERT:
8285 994281 : {
8286 994281 : tree _q20 = TREE_OPERAND (_p0, 0);
8287 994281 : switch (TREE_CODE (_q20))
8288 : {
8289 0 : case GE_EXPR:
8290 0 : {
8291 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8292 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8293 0 : if (tree_zero_one_valued_p (_q30))
8294 : {
8295 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
8296 : {
8297 0 : {
8298 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
8299 0 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, GE_EXPR);
8300 0 : if (res) return res;
8301 : }
8302 : }
8303 : }
8304 : break;
8305 : }
8306 : default:;
8307 : }
8308 : break;
8309 : }
8310 41 : case GE_EXPR:
8311 41 : {
8312 41 : tree _q20 = TREE_OPERAND (_p0, 0);
8313 41 : tree _q21 = TREE_OPERAND (_p0, 1);
8314 41 : if (tree_zero_one_valued_p (_q20))
8315 : {
8316 15 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8317 : {
8318 3 : {
8319 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8320 3 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, GE_EXPR);
8321 3 : if (res) return res;
8322 : }
8323 : }
8324 : }
8325 : break;
8326 : }
8327 6 : case VEC_COND_EXPR:
8328 6 : {
8329 6 : tree _q20 = TREE_OPERAND (_p0, 0);
8330 6 : tree _q21 = TREE_OPERAND (_p0, 1);
8331 6 : tree _q22 = TREE_OPERAND (_p0, 2);
8332 6 : switch (TREE_CODE (_p1))
8333 : {
8334 0 : case VEC_COND_EXPR:
8335 0 : {
8336 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8337 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8338 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8339 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8340 : {
8341 0 : {
8342 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8343 0 : if (VECTOR_TYPE_P (type)
8344 0 : && (TREE_CODE_CLASS (GE_EXPR) != tcc_comparison
8345 0 : || types_match (type, TREE_TYPE (captures[2]))
8346 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8347 : || (optimize_vectors_before_lowering_p ()
8348 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8349 : )
8350 : {
8351 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1638;
8352 0 : {
8353 0 : tree res_op0;
8354 0 : res_op0 = captures[1];
8355 0 : tree res_op1;
8356 0 : {
8357 0 : tree _o1[2], _r1;
8358 0 : _o1[0] = captures[2];
8359 0 : _o1[1] = captures[5];
8360 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8361 0 : if (EXPR_P (_r1))
8362 0 : goto next_after_fail1638;
8363 0 : res_op1 = _r1;
8364 : }
8365 0 : tree res_op2;
8366 0 : {
8367 0 : tree _o1[2], _r1;
8368 0 : _o1[0] = captures[3];
8369 0 : _o1[1] = captures[6];
8370 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8371 0 : if (EXPR_P (_r1))
8372 0 : goto next_after_fail1638;
8373 0 : res_op2 = _r1;
8374 : }
8375 0 : tree _r;
8376 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8377 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
8378 0 : return _r;
8379 : }
8380 0 : next_after_fail1638:;
8381 : }
8382 : }
8383 : }
8384 : break;
8385 : }
8386 6 : default:;
8387 : }
8388 6 : {
8389 6 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8390 6 : if (VECTOR_TYPE_P (type)
8391 6 : && (TREE_CODE_CLASS (GE_EXPR) != tcc_comparison
8392 6 : || types_match (type, TREE_TYPE (captures[2]))
8393 6 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8394 : || (optimize_vectors_before_lowering_p ()
8395 2 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8396 : )
8397 : {
8398 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1639;
8399 6 : {
8400 6 : if (! tree_invariant_p (captures[4])) goto next_after_fail1639;
8401 5 : tree res_op0;
8402 5 : res_op0 = captures[1];
8403 5 : tree res_op1;
8404 5 : {
8405 5 : tree _o1[2], _r1;
8406 5 : _o1[0] = captures[2];
8407 5 : _o1[1] = unshare_expr (captures[4]);
8408 5 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8409 5 : if (EXPR_P (_r1))
8410 1 : goto next_after_fail1639;
8411 4 : res_op1 = _r1;
8412 : }
8413 4 : tree res_op2;
8414 4 : {
8415 4 : tree _o1[2], _r1;
8416 4 : _o1[0] = captures[3];
8417 4 : _o1[1] = captures[4];
8418 4 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8419 4 : if (EXPR_P (_r1))
8420 0 : goto next_after_fail1639;
8421 4 : res_op2 = _r1;
8422 : }
8423 4 : tree _r;
8424 4 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8425 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
8426 4 : return _r;
8427 : }
8428 2 : next_after_fail1639:;
8429 : }
8430 : }
8431 2 : break;
8432 : }
8433 6487923 : default:;
8434 : }
8435 6487923 : switch (TREE_CODE (_p1))
8436 : {
8437 0 : case VEC_COND_EXPR:
8438 0 : {
8439 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8440 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8441 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8442 0 : {
8443 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8444 0 : if (VECTOR_TYPE_P (type)
8445 0 : && (TREE_CODE_CLASS (GE_EXPR) != tcc_comparison
8446 0 : || types_match (type, TREE_TYPE (captures[3]))
8447 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8448 : || (optimize_vectors_before_lowering_p ()
8449 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8450 : )
8451 : {
8452 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1640;
8453 0 : {
8454 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1640;
8455 0 : tree res_op0;
8456 0 : res_op0 = captures[2];
8457 0 : tree res_op1;
8458 0 : {
8459 0 : tree _o1[2], _r1;
8460 0 : _o1[0] = unshare_expr (captures[0]);
8461 0 : _o1[1] = captures[3];
8462 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8463 0 : if (EXPR_P (_r1))
8464 0 : goto next_after_fail1640;
8465 0 : res_op1 = _r1;
8466 : }
8467 0 : tree res_op2;
8468 0 : {
8469 0 : tree _o1[2], _r1;
8470 0 : _o1[0] = captures[0];
8471 0 : _o1[1] = captures[4];
8472 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8473 0 : if (EXPR_P (_r1))
8474 0 : goto next_after_fail1640;
8475 0 : res_op2 = _r1;
8476 : }
8477 0 : tree _r;
8478 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8479 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
8480 0 : return _r;
8481 : }
8482 0 : next_after_fail1640:;
8483 : }
8484 : }
8485 0 : break;
8486 : }
8487 6487923 : default:;
8488 : }
8489 6487923 : if (uniform_integer_cst_p (_p1))
8490 : {
8491 3263367 : {
8492 3263367 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8493 3263367 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, GE_EXPR, GT_EXPR);
8494 3263367 : if (res) return res;
8495 : }
8496 : }
8497 5026004 : switch (TREE_CODE (_p0))
8498 : {
8499 23649 : case MULT_EXPR:
8500 23649 : {
8501 23649 : tree _q20 = TREE_OPERAND (_p0, 0);
8502 23649 : tree _q21 = TREE_OPERAND (_p0, 1);
8503 23649 : switch (TREE_CODE (_q21))
8504 : {
8505 19728 : case INTEGER_CST:
8506 19728 : {
8507 19728 : if (integer_zerop (_p1))
8508 : {
8509 2746 : {
8510 2746 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8511 2746 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8512 2746 : if (res) return res;
8513 : }
8514 : }
8515 : break;
8516 : }
8517 : default:;
8518 : }
8519 : break;
8520 : }
8521 5025712 : default:;
8522 : }
8523 5025712 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8524 : {
8525 37677 : {
8526 37677 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8527 37677 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, GE_EXPR);
8528 37677 : if (res) return res;
8529 : }
8530 : }
8531 4988072 : switch (TREE_CODE (_p0))
8532 : {
8533 418 : case BIT_NOT_EXPR:
8534 418 : {
8535 418 : tree _q20 = TREE_OPERAND (_p0, 0);
8536 418 : switch (TREE_CODE (_p1))
8537 : {
8538 1 : case BIT_NOT_EXPR:
8539 1 : {
8540 1 : tree _q40 = TREE_OPERAND (_p1, 0);
8541 1 : {
8542 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
8543 1 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, GE_EXPR);
8544 1 : if (res) return res;
8545 : }
8546 0 : break;
8547 : }
8548 417 : default:;
8549 : }
8550 417 : {
8551 417 : tree _p1_pops[1];
8552 417 : if (tree_nop_convert (_p1, _p1_pops))
8553 : {
8554 50 : tree _q40 = _p1_pops[0];
8555 50 : switch (TREE_CODE (_q40))
8556 : {
8557 0 : case BIT_NOT_EXPR:
8558 0 : {
8559 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8560 0 : {
8561 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
8562 0 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, GE_EXPR);
8563 0 : if (res) return res;
8564 : }
8565 0 : break;
8566 : }
8567 : default:;
8568 : }
8569 : }
8570 : }
8571 417 : if (CONSTANT_CLASS_P (_p1))
8572 : {
8573 94 : {
8574 94 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8575 94 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8576 94 : if (res) return res;
8577 : }
8578 : }
8579 : break;
8580 : }
8581 4987977 : default:;
8582 : }
8583 4987977 : {
8584 4987977 : tree _p0_pops[1];
8585 4987977 : if (tree_nop_convert (_p0, _p0_pops))
8586 : {
8587 225786 : tree _q20 = _p0_pops[0];
8588 225786 : switch (TREE_CODE (_q20))
8589 : {
8590 4 : case BIT_NOT_EXPR:
8591 4 : {
8592 4 : tree _q30 = TREE_OPERAND (_q20, 0);
8593 4 : switch (TREE_CODE (_p1))
8594 : {
8595 0 : case BIT_NOT_EXPR:
8596 0 : {
8597 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8598 0 : {
8599 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
8600 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, GE_EXPR);
8601 0 : if (res) return res;
8602 : }
8603 0 : break;
8604 : }
8605 4 : default:;
8606 : }
8607 4 : {
8608 4 : tree _p1_pops[1];
8609 4 : if (tree_nop_convert (_p1, _p1_pops))
8610 : {
8611 0 : tree _q50 = _p1_pops[0];
8612 0 : switch (TREE_CODE (_q50))
8613 : {
8614 0 : case BIT_NOT_EXPR:
8615 0 : {
8616 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8617 0 : {
8618 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
8619 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, GE_EXPR);
8620 0 : if (res) return res;
8621 : }
8622 0 : break;
8623 : }
8624 : default:;
8625 : }
8626 : }
8627 : }
8628 4 : if (CONSTANT_CLASS_P (_p1))
8629 : {
8630 0 : {
8631 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
8632 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8633 0 : if (res) return res;
8634 : }
8635 : }
8636 : break;
8637 : }
8638 : default:;
8639 : }
8640 : }
8641 : }
8642 4987977 : switch (TREE_CODE (_p1))
8643 : {
8644 624471 : case REAL_CST:
8645 624471 : {
8646 624471 : {
8647 624471 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8648 624471 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, GE_EXPR);
8649 624471 : if (res) return res;
8650 : }
8651 624402 : break;
8652 : }
8653 4987908 : default:;
8654 : }
8655 4987908 : switch (TREE_CODE (_p0))
8656 : {
8657 678036 : case PLUS_EXPR:
8658 678036 : {
8659 678036 : tree _q20 = TREE_OPERAND (_p0, 0);
8660 678036 : tree _q21 = TREE_OPERAND (_p0, 1);
8661 678036 : switch (TREE_CODE (_q21))
8662 : {
8663 168 : case REAL_CST:
8664 168 : {
8665 168 : switch (TREE_CODE (_p1))
8666 : {
8667 20 : case REAL_CST:
8668 20 : {
8669 20 : {
8670 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8671 20 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR);
8672 20 : if (res) return res;
8673 : }
8674 20 : break;
8675 : }
8676 : default:;
8677 : }
8678 : break;
8679 : }
8680 566341 : case INTEGER_CST:
8681 566341 : {
8682 566341 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8683 : {
8684 16009 : {
8685 16009 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21 };
8686 16009 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8687 16009 : if (res) return res;
8688 : }
8689 : }
8690 : break;
8691 : }
8692 : default:;
8693 : }
8694 : break;
8695 : }
8696 58409 : case MINUS_EXPR:
8697 58409 : {
8698 58409 : tree _q20 = TREE_OPERAND (_p0, 0);
8699 58409 : tree _q21 = TREE_OPERAND (_p0, 1);
8700 58409 : switch (TREE_CODE (_q21))
8701 : {
8702 31 : case REAL_CST:
8703 31 : {
8704 31 : switch (TREE_CODE (_p1))
8705 : {
8706 31 : case REAL_CST:
8707 31 : {
8708 31 : {
8709 31 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8710 31 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, MINUS_EXPR, GE_EXPR);
8711 31 : if (res) return res;
8712 : }
8713 31 : break;
8714 : }
8715 : default:;
8716 : }
8717 : break;
8718 : }
8719 58409 : default:;
8720 : }
8721 58409 : switch (TREE_CODE (_q20))
8722 : {
8723 24 : case REAL_CST:
8724 24 : {
8725 24 : switch (TREE_CODE (_p1))
8726 : {
8727 0 : case REAL_CST:
8728 0 : {
8729 0 : {
8730 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8731 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, GE_EXPR);
8732 0 : if (res) return res;
8733 : }
8734 0 : break;
8735 : }
8736 : default:;
8737 : }
8738 : break;
8739 : }
8740 : default:;
8741 : }
8742 : break;
8743 : }
8744 39146 : case FLOAT_EXPR:
8745 39146 : {
8746 39146 : tree _q20 = TREE_OPERAND (_p0, 0);
8747 39146 : switch (TREE_CODE (_p1))
8748 : {
8749 7 : case FLOAT_EXPR:
8750 7 : {
8751 7 : tree _q40 = TREE_OPERAND (_p1, 0);
8752 7 : {
8753 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8754 7 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, GE_EXPR, GE_EXPR);
8755 7 : if (res) return res;
8756 : }
8757 0 : break;
8758 : }
8759 37667 : case REAL_CST:
8760 37667 : {
8761 37667 : {
8762 37667 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8763 37667 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, GE_EXPR, GE_EXPR);
8764 37667 : if (res) return res;
8765 : }
8766 18870 : break;
8767 : }
8768 : default:;
8769 : }
8770 : break;
8771 : }
8772 8006 : case EXACT_DIV_EXPR:
8773 8006 : {
8774 8006 : tree _q20 = TREE_OPERAND (_p0, 0);
8775 8006 : tree _q21 = TREE_OPERAND (_p0, 1);
8776 8006 : switch (TREE_CODE (_q21))
8777 : {
8778 8006 : case INTEGER_CST:
8779 8006 : {
8780 8006 : switch (TREE_CODE (_p1))
8781 : {
8782 0 : case INTEGER_CST:
8783 0 : {
8784 0 : {
8785 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8786 0 : tree res = generic_simplify_390 (loc, type, _p0, _p1, captures, GE_EXPR);
8787 0 : if (res) return res;
8788 : }
8789 0 : break;
8790 : }
8791 : default:;
8792 : }
8793 : break;
8794 : }
8795 : default:;
8796 : }
8797 : break;
8798 : }
8799 594320 : CASE_CONVERT:
8800 594320 : {
8801 594320 : tree _q20 = TREE_OPERAND (_p0, 0);
8802 594320 : switch (TREE_CODE (_q20))
8803 : {
8804 157 : case EXACT_DIV_EXPR:
8805 157 : {
8806 157 : tree _q30 = TREE_OPERAND (_q20, 0);
8807 157 : tree _q31 = TREE_OPERAND (_q20, 1);
8808 157 : switch (TREE_CODE (_q31))
8809 : {
8810 157 : case INTEGER_CST:
8811 157 : {
8812 157 : switch (TREE_CODE (_p1))
8813 : {
8814 0 : case INTEGER_CST:
8815 0 : {
8816 0 : {
8817 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8818 0 : tree res = generic_simplify_391 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR);
8819 0 : if (res) return res;
8820 : }
8821 0 : break;
8822 : }
8823 : default:;
8824 : }
8825 : break;
8826 : }
8827 : default:;
8828 : }
8829 : break;
8830 : }
8831 594320 : default:;
8832 : }
8833 594320 : switch (TREE_CODE (_p1))
8834 : {
8835 94715 : CASE_CONVERT:
8836 94715 : {
8837 94715 : tree _q40 = TREE_OPERAND (_p1, 0);
8838 94715 : {
8839 94715 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8840 94715 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, GE_EXPR);
8841 94715 : if (res) return res;
8842 : }
8843 58250 : break;
8844 : }
8845 557855 : default:;
8846 : }
8847 557855 : {
8848 557855 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
8849 557855 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, GE_EXPR);
8850 557855 : if (res) return res;
8851 : }
8852 308760 : switch (TREE_CODE (_q20))
8853 : {
8854 1442 : case ADDR_EXPR:
8855 1442 : {
8856 1442 : switch (TREE_CODE (_p1))
8857 : {
8858 1378 : CASE_CONVERT:
8859 1378 : {
8860 1378 : tree _q40 = TREE_OPERAND (_p1, 0);
8861 1378 : switch (TREE_CODE (_q40))
8862 : {
8863 1378 : case ADDR_EXPR:
8864 1378 : {
8865 1378 : {
8866 1378 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8867 1378 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, GE_EXPR);
8868 1378 : if (res) return res;
8869 : }
8870 178 : break;
8871 : }
8872 : default:;
8873 : }
8874 : break;
8875 : }
8876 0 : case ADDR_EXPR:
8877 0 : {
8878 0 : {
8879 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8880 0 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, GE_EXPR);
8881 0 : if (res) return res;
8882 : }
8883 0 : break;
8884 : }
8885 : default:;
8886 : }
8887 : break;
8888 : }
8889 307560 : default:;
8890 : }
8891 307560 : if (uniform_integer_cst_p (_p1))
8892 : {
8893 97375 : {
8894 97375 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8895 97375 : tree res = generic_simplify_392 (loc, type, _p0, _p1, captures, GE_EXPR);
8896 97375 : if (res) return res;
8897 : }
8898 : }
8899 : break;
8900 : }
8901 787 : case NEGATE_EXPR:
8902 787 : {
8903 787 : tree _q20 = TREE_OPERAND (_p0, 0);
8904 787 : switch (TREE_CODE (_p1))
8905 : {
8906 0 : case NEGATE_EXPR:
8907 0 : {
8908 0 : tree _q40 = TREE_OPERAND (_p1, 0);
8909 0 : {
8910 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
8911 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8912 0 : if (res) return res;
8913 : }
8914 0 : break;
8915 : }
8916 787 : default:;
8917 : }
8918 787 : if (CONSTANT_CLASS_P (_p1))
8919 : {
8920 270 : {
8921 270 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8922 270 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8923 270 : if (res) return res;
8924 : }
8925 : }
8926 : break;
8927 : }
8928 7616 : case ADDR_EXPR:
8929 7616 : {
8930 7616 : switch (TREE_CODE (_p1))
8931 : {
8932 0 : CASE_CONVERT:
8933 0 : {
8934 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8935 0 : switch (TREE_CODE (_q30))
8936 : {
8937 0 : case ADDR_EXPR:
8938 0 : {
8939 0 : {
8940 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
8941 0 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, GE_EXPR);
8942 0 : if (res) return res;
8943 : }
8944 0 : break;
8945 : }
8946 : default:;
8947 : }
8948 : break;
8949 : }
8950 7248 : case ADDR_EXPR:
8951 7248 : {
8952 7248 : {
8953 7248 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
8954 7248 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, GE_EXPR);
8955 7248 : if (res) return res;
8956 : }
8957 92 : break;
8958 : }
8959 : default:;
8960 : }
8961 : break;
8962 : }
8963 225212 : case CALL_EXPR:
8964 225212 : switch (get_call_combined_fn (_p0))
8965 : {
8966 2 : case CFN_BUILT_IN_SQRTF:
8967 2 : if (call_expr_nargs (_p0) == 1)
8968 : {
8969 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8970 2 : switch (TREE_CODE (_p1))
8971 : {
8972 2 : case REAL_CST:
8973 2 : {
8974 2 : {
8975 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8976 2 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, GE_EXPR);
8977 2 : if (res) return res;
8978 : }
8979 0 : break;
8980 : }
8981 0 : case CALL_EXPR:
8982 0 : switch (get_call_combined_fn (_p1))
8983 : {
8984 0 : case CFN_BUILT_IN_SQRTF:
8985 0 : if (call_expr_nargs (_p1) == 1)
8986 : {
8987 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8988 0 : {
8989 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
8990 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, GE_EXPR);
8991 0 : if (res) return res;
8992 : }
8993 : }
8994 : break;
8995 : default:;
8996 : }
8997 : break;
8998 : default:;
8999 : }
9000 : }
9001 : break;
9002 0 : case CFN_BUILT_IN_SQRTL:
9003 0 : if (call_expr_nargs (_p0) == 1)
9004 : {
9005 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9006 0 : switch (TREE_CODE (_p1))
9007 : {
9008 0 : case REAL_CST:
9009 0 : {
9010 0 : {
9011 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9012 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, GE_EXPR);
9013 0 : if (res) return res;
9014 : }
9015 0 : break;
9016 : }
9017 0 : case CALL_EXPR:
9018 0 : switch (get_call_combined_fn (_p1))
9019 : {
9020 0 : case CFN_BUILT_IN_SQRTL:
9021 0 : if (call_expr_nargs (_p1) == 1)
9022 : {
9023 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9024 0 : {
9025 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9026 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, GE_EXPR);
9027 0 : if (res) return res;
9028 : }
9029 : }
9030 : break;
9031 : default:;
9032 : }
9033 : break;
9034 : default:;
9035 : }
9036 : }
9037 : break;
9038 1 : case CFN_BUILT_IN_SQRT:
9039 1 : if (call_expr_nargs (_p0) == 1)
9040 : {
9041 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9042 1 : switch (TREE_CODE (_p1))
9043 : {
9044 1 : case REAL_CST:
9045 1 : {
9046 1 : {
9047 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9048 1 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, GE_EXPR);
9049 1 : if (res) return res;
9050 : }
9051 1 : break;
9052 : }
9053 0 : case CALL_EXPR:
9054 0 : switch (get_call_combined_fn (_p1))
9055 : {
9056 0 : case CFN_BUILT_IN_SQRT:
9057 0 : if (call_expr_nargs (_p1) == 1)
9058 : {
9059 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9060 0 : {
9061 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9062 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, GE_EXPR);
9063 0 : if (res) return res;
9064 : }
9065 : }
9066 : break;
9067 : default:;
9068 : }
9069 : break;
9070 : default:;
9071 : }
9072 : }
9073 : break;
9074 0 : case CFN_SQRT:
9075 0 : if (call_expr_nargs (_p0) == 1)
9076 : {
9077 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9078 0 : switch (TREE_CODE (_p1))
9079 : {
9080 0 : case REAL_CST:
9081 0 : {
9082 0 : {
9083 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9084 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_SQRT, GE_EXPR);
9085 0 : if (res) return res;
9086 : }
9087 0 : break;
9088 : }
9089 0 : case CALL_EXPR:
9090 0 : switch (get_call_combined_fn (_p1))
9091 : {
9092 0 : case CFN_SQRT:
9093 0 : if (call_expr_nargs (_p1) == 1)
9094 : {
9095 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9096 0 : {
9097 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9098 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, CFN_SQRT, GE_EXPR);
9099 0 : if (res) return res;
9100 : }
9101 : }
9102 : break;
9103 : default:;
9104 : }
9105 : break;
9106 : default:;
9107 : }
9108 : }
9109 : break;
9110 : default:;
9111 : }
9112 : break;
9113 4648777 : default:;
9114 : }
9115 4648777 : if (uniform_integer_cst_p (_p1))
9116 : {
9117 1541765 : {
9118 1541765 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
9119 1541765 : tree res = generic_simplify_393 (loc, type, _p0, _p1, captures, GE_EXPR);
9120 1541765 : if (res) return res;
9121 : }
9122 : }
9123 4349684 : switch (TREE_CODE (_p0))
9124 : {
9125 296594 : CASE_CONVERT:
9126 296594 : {
9127 296594 : tree _q20 = TREE_OPERAND (_p0, 0);
9128 296594 : switch (TREE_CODE (_q20))
9129 : {
9130 31998 : case PLUS_EXPR:
9131 31998 : {
9132 31998 : tree _q30 = TREE_OPERAND (_q20, 0);
9133 31998 : tree _q31 = TREE_OPERAND (_q20, 1);
9134 31998 : switch (TREE_CODE (_q30))
9135 : {
9136 23133 : CASE_CONVERT:
9137 23133 : {
9138 23133 : tree _q40 = TREE_OPERAND (_q30, 0);
9139 23133 : switch (TREE_CODE (_q31))
9140 : {
9141 23132 : case INTEGER_CST:
9142 23132 : {
9143 23132 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
9144 : {
9145 129 : {
9146 129 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
9147 129 : tree res = generic_simplify_394 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
9148 129 : if (res) return res;
9149 : }
9150 : }
9151 : break;
9152 : }
9153 : default:;
9154 : }
9155 : break;
9156 : }
9157 : default:;
9158 : }
9159 : break;
9160 : }
9161 : default:;
9162 : }
9163 : break;
9164 : }
9165 4349627 : default:;
9166 : }
9167 4349627 : switch (TREE_CODE (_p1))
9168 : {
9169 220055 : CASE_CONVERT:
9170 220055 : {
9171 220055 : tree _q30 = TREE_OPERAND (_p1, 0);
9172 220055 : switch (TREE_CODE (_q30))
9173 : {
9174 266 : case PLUS_EXPR:
9175 266 : {
9176 266 : tree _q40 = TREE_OPERAND (_q30, 0);
9177 266 : tree _q41 = TREE_OPERAND (_q30, 1);
9178 266 : switch (TREE_CODE (_q40))
9179 : {
9180 204 : CASE_CONVERT:
9181 204 : {
9182 204 : tree _q50 = TREE_OPERAND (_q40, 0);
9183 204 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
9184 : {
9185 0 : switch (TREE_CODE (_q41))
9186 : {
9187 0 : case INTEGER_CST:
9188 0 : {
9189 0 : {
9190 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0, _q41 };
9191 0 : tree res = generic_simplify_394 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
9192 0 : if (res) return res;
9193 : }
9194 0 : break;
9195 : }
9196 : default:;
9197 : }
9198 : }
9199 : break;
9200 : }
9201 : default:;
9202 : }
9203 : break;
9204 : }
9205 : default:;
9206 : }
9207 : break;
9208 : }
9209 59019 : case PLUS_EXPR:
9210 59019 : {
9211 59019 : tree _q30 = TREE_OPERAND (_p1, 0);
9212 59019 : tree _q31 = TREE_OPERAND (_p1, 1);
9213 59019 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9214 : {
9215 0 : switch (TREE_CODE (_q31))
9216 : {
9217 0 : case INTEGER_CST:
9218 0 : {
9219 0 : {
9220 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0, _q31 };
9221 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
9222 0 : if (res) return res;
9223 : }
9224 0 : break;
9225 : }
9226 : default:;
9227 : }
9228 : }
9229 : break;
9230 : }
9231 2422 : case MINUS_EXPR:
9232 2422 : {
9233 2422 : tree _q30 = TREE_OPERAND (_p1, 0);
9234 2422 : tree _q31 = TREE_OPERAND (_p1, 1);
9235 2422 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9236 : {
9237 0 : {
9238 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
9239 0 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR);
9240 0 : if (res) return res;
9241 : }
9242 : }
9243 : break;
9244 : }
9245 4349627 : default:;
9246 : }
9247 4349627 : switch (TREE_CODE (_p0))
9248 : {
9249 587335 : case PLUS_EXPR:
9250 587335 : {
9251 587335 : tree _q20 = TREE_OPERAND (_p0, 0);
9252 587335 : tree _q21 = TREE_OPERAND (_p0, 1);
9253 587335 : switch (TREE_CODE (_q20))
9254 : {
9255 141 : case MINUS_EXPR:
9256 141 : {
9257 141 : tree _q30 = TREE_OPERAND (_q20, 0);
9258 141 : tree _q31 = TREE_OPERAND (_q20, 1);
9259 141 : if (integer_minus_onep (_q21))
9260 : {
9261 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
9262 : {
9263 1 : {
9264 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
9265 1 : tree res = generic_simplify_396 (loc, type, _p0, _p1, captures, GE_EXPR);
9266 1 : if (res) return res;
9267 : }
9268 : }
9269 : }
9270 : break;
9271 : }
9272 : default:;
9273 : }
9274 : break;
9275 : }
9276 4349626 : default:;
9277 : }
9278 4349626 : switch (TREE_CODE (_p1))
9279 : {
9280 0 : case REALPART_EXPR:
9281 0 : {
9282 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9283 0 : switch (TREE_CODE (_q30))
9284 : {
9285 0 : case CALL_EXPR:
9286 0 : switch (get_call_combined_fn (_q30))
9287 : {
9288 0 : case CFN_SUB_OVERFLOW:
9289 0 : if (call_expr_nargs (_q30) == 2)
9290 : {
9291 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
9292 0 : tree _q41 = CALL_EXPR_ARG (_q30, 1);
9293 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
9294 : {
9295 0 : {
9296 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
9297 0 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
9298 0 : if (res) return res;
9299 : }
9300 : }
9301 : }
9302 : break;
9303 : default:;
9304 : }
9305 : break;
9306 : default:;
9307 : }
9308 : break;
9309 : }
9310 4349626 : default:;
9311 : }
9312 4349626 : switch (TREE_CODE (_p0))
9313 : {
9314 0 : case REALPART_EXPR:
9315 0 : {
9316 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9317 0 : switch (TREE_CODE (_q20))
9318 : {
9319 0 : case CALL_EXPR:
9320 0 : switch (get_call_combined_fn (_q20))
9321 : {
9322 0 : case CFN_ADD_OVERFLOW:
9323 0 : if (call_expr_nargs (_q20) == 2)
9324 : {
9325 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9326 0 : tree _q31 = CALL_EXPR_ARG (_q20, 1);
9327 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
9328 : {
9329 0 : {
9330 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
9331 0 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
9332 0 : if (res) return res;
9333 : }
9334 : }
9335 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
9336 : {
9337 0 : {
9338 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q31, _q30 };
9339 0 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
9340 0 : if (res) return res;
9341 : }
9342 : }
9343 : }
9344 : break;
9345 : default:;
9346 : }
9347 : break;
9348 : default:;
9349 : }
9350 : break;
9351 : }
9352 1430 : case TRUNC_DIV_EXPR:
9353 1430 : {
9354 1430 : tree _q20 = TREE_OPERAND (_p0, 0);
9355 1430 : tree _q21 = TREE_OPERAND (_p0, 1);
9356 1430 : if (integer_all_onesp (_q20))
9357 : {
9358 33 : {
9359 33 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _p1 };
9360 33 : tree res = generic_simplify_399 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
9361 33 : if (res) return res;
9362 : }
9363 : }
9364 : break;
9365 : }
9366 21901 : case MULT_EXPR:
9367 21901 : {
9368 21901 : tree _q20 = TREE_OPERAND (_p0, 0);
9369 21901 : tree _q21 = TREE_OPERAND (_p0, 1);
9370 21901 : switch (TREE_CODE (_q21))
9371 : {
9372 305 : case REAL_CST:
9373 305 : {
9374 305 : switch (TREE_CODE (_p1))
9375 : {
9376 43 : case REAL_CST:
9377 43 : {
9378 43 : {
9379 43 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9380 43 : tree res = generic_simplify_400 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
9381 43 : if (res) return res;
9382 : }
9383 43 : break;
9384 : }
9385 : default:;
9386 : }
9387 : break;
9388 : }
9389 : default:;
9390 : }
9391 : break;
9392 : }
9393 151 : case REAL_CST:
9394 151 : {
9395 151 : switch (TREE_CODE (_p1))
9396 : {
9397 0 : case CALL_EXPR:
9398 0 : switch (get_call_combined_fn (_p1))
9399 : {
9400 0 : case CFN_BUILT_IN_EXP:
9401 0 : if (call_expr_nargs (_p1) == 1)
9402 : {
9403 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9404 0 : {
9405 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9406 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
9407 0 : if (res) return res;
9408 : }
9409 : }
9410 : break;
9411 0 : case CFN_BUILT_IN_LOG:
9412 0 : if (call_expr_nargs (_p1) == 1)
9413 : {
9414 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9415 0 : {
9416 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9417 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
9418 0 : if (res) return res;
9419 : }
9420 : }
9421 : break;
9422 0 : case CFN_BUILT_IN_EXP10F:
9423 0 : if (call_expr_nargs (_p1) == 1)
9424 : {
9425 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9426 0 : {
9427 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9428 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
9429 0 : if (res) return res;
9430 : }
9431 : }
9432 : break;
9433 0 : case CFN_BUILT_IN_EXP10L:
9434 0 : if (call_expr_nargs (_p1) == 1)
9435 : {
9436 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9437 0 : {
9438 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9439 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
9440 0 : if (res) return res;
9441 : }
9442 : }
9443 : break;
9444 0 : case CFN_BUILT_IN_EXP2:
9445 0 : if (call_expr_nargs (_p1) == 1)
9446 : {
9447 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9448 0 : {
9449 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9450 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
9451 0 : if (res) return res;
9452 : }
9453 : }
9454 : break;
9455 0 : case CFN_BUILT_IN_EXPF:
9456 0 : if (call_expr_nargs (_p1) == 1)
9457 : {
9458 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9459 0 : {
9460 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9461 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
9462 0 : if (res) return res;
9463 : }
9464 : }
9465 : break;
9466 0 : case CFN_BUILT_IN_EXPL:
9467 0 : if (call_expr_nargs (_p1) == 1)
9468 : {
9469 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9470 0 : {
9471 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9472 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
9473 0 : if (res) return res;
9474 : }
9475 : }
9476 : break;
9477 0 : case CFN_BUILT_IN_LOG2:
9478 0 : if (call_expr_nargs (_p1) == 1)
9479 : {
9480 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9481 0 : {
9482 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9483 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
9484 0 : if (res) return res;
9485 : }
9486 : }
9487 : break;
9488 0 : case CFN_BUILT_IN_LOGF:
9489 0 : if (call_expr_nargs (_p1) == 1)
9490 : {
9491 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9492 0 : {
9493 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9494 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
9495 0 : if (res) return res;
9496 : }
9497 : }
9498 : break;
9499 0 : case CFN_BUILT_IN_LOGL:
9500 0 : if (call_expr_nargs (_p1) == 1)
9501 : {
9502 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9503 0 : {
9504 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9505 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
9506 0 : if (res) return res;
9507 : }
9508 : }
9509 : break;
9510 0 : case CFN_BUILT_IN_LOG10F:
9511 0 : if (call_expr_nargs (_p1) == 1)
9512 : {
9513 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9514 0 : {
9515 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9516 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
9517 0 : if (res) return res;
9518 : }
9519 : }
9520 : break;
9521 0 : case CFN_BUILT_IN_LOG10L:
9522 0 : if (call_expr_nargs (_p1) == 1)
9523 : {
9524 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9525 0 : {
9526 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9527 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
9528 0 : if (res) return res;
9529 : }
9530 : }
9531 : break;
9532 0 : case CFN_EXP:
9533 0 : if (call_expr_nargs (_p1) == 1)
9534 : {
9535 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9536 0 : {
9537 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9538 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
9539 0 : if (res) return res;
9540 : }
9541 : }
9542 : break;
9543 0 : case CFN_LOG:
9544 0 : if (call_expr_nargs (_p1) == 1)
9545 : {
9546 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9547 0 : {
9548 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9549 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
9550 0 : if (res) return res;
9551 : }
9552 : }
9553 : break;
9554 0 : case CFN_EXP2:
9555 0 : if (call_expr_nargs (_p1) == 1)
9556 : {
9557 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9558 0 : {
9559 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9560 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
9561 0 : if (res) return res;
9562 : }
9563 : }
9564 : break;
9565 0 : case CFN_LOG2:
9566 0 : if (call_expr_nargs (_p1) == 1)
9567 : {
9568 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9569 0 : {
9570 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9571 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
9572 0 : if (res) return res;
9573 : }
9574 : }
9575 : break;
9576 0 : case CFN_EXP10:
9577 0 : if (call_expr_nargs (_p1) == 1)
9578 : {
9579 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9580 0 : {
9581 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9582 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
9583 0 : if (res) return res;
9584 : }
9585 : }
9586 : break;
9587 0 : case CFN_LOG10:
9588 0 : if (call_expr_nargs (_p1) == 1)
9589 : {
9590 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9591 0 : {
9592 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9593 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
9594 0 : if (res) return res;
9595 : }
9596 : }
9597 : break;
9598 0 : case CFN_BUILT_IN_EXP10:
9599 0 : if (call_expr_nargs (_p1) == 1)
9600 : {
9601 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9602 0 : {
9603 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9604 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
9605 0 : if (res) return res;
9606 : }
9607 : }
9608 : break;
9609 0 : case CFN_BUILT_IN_EXP2F:
9610 0 : if (call_expr_nargs (_p1) == 1)
9611 : {
9612 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9613 0 : {
9614 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9615 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
9616 0 : if (res) return res;
9617 : }
9618 : }
9619 : break;
9620 0 : case CFN_BUILT_IN_EXP2L:
9621 0 : if (call_expr_nargs (_p1) == 1)
9622 : {
9623 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9624 0 : {
9625 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9626 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
9627 0 : if (res) return res;
9628 : }
9629 : }
9630 : break;
9631 0 : case CFN_BUILT_IN_LOG10:
9632 0 : if (call_expr_nargs (_p1) == 1)
9633 : {
9634 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9635 0 : {
9636 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9637 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
9638 0 : if (res) return res;
9639 : }
9640 : }
9641 : break;
9642 0 : case CFN_BUILT_IN_LOG2F:
9643 0 : if (call_expr_nargs (_p1) == 1)
9644 : {
9645 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9646 0 : {
9647 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9648 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
9649 0 : if (res) return res;
9650 : }
9651 : }
9652 : break;
9653 0 : case CFN_BUILT_IN_LOG2L:
9654 0 : if (call_expr_nargs (_p1) == 1)
9655 : {
9656 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9657 0 : {
9658 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9659 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
9660 0 : if (res) return res;
9661 : }
9662 : }
9663 : break;
9664 : default:;
9665 : }
9666 : break;
9667 : default:;
9668 : }
9669 : break;
9670 : }
9671 587334 : case PLUS_EXPR:
9672 587334 : {
9673 587334 : tree _q20 = TREE_OPERAND (_p0, 0);
9674 587334 : tree _q21 = TREE_OPERAND (_p0, 1);
9675 587334 : switch (TREE_CODE (_q21))
9676 : {
9677 475639 : case INTEGER_CST:
9678 475639 : {
9679 475639 : switch (TREE_CODE (_p1))
9680 : {
9681 116543 : case INTEGER_CST:
9682 116543 : {
9683 116543 : {
9684 116543 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9685 116543 : tree res = generic_simplify_401 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, GE_EXPR, LE_EXPR);
9686 116543 : if (res) return res;
9687 : }
9688 56338 : break;
9689 : }
9690 : default:;
9691 : }
9692 : break;
9693 : }
9694 : default:;
9695 : }
9696 : break;
9697 : }
9698 57954 : case MINUS_EXPR:
9699 57954 : {
9700 57954 : tree _q20 = TREE_OPERAND (_p0, 0);
9701 57954 : tree _q21 = TREE_OPERAND (_p0, 1);
9702 57954 : switch (TREE_CODE (_q21))
9703 : {
9704 7 : case INTEGER_CST:
9705 7 : {
9706 7 : switch (TREE_CODE (_p1))
9707 : {
9708 7 : case INTEGER_CST:
9709 7 : {
9710 7 : {
9711 7 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9712 7 : tree res = generic_simplify_401 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, GE_EXPR, LE_EXPR);
9713 7 : if (res) return res;
9714 : }
9715 0 : break;
9716 : }
9717 : default:;
9718 : }
9719 : break;
9720 : }
9721 57947 : default:;
9722 : }
9723 57947 : switch (TREE_CODE (_q20))
9724 : {
9725 1580 : case INTEGER_CST:
9726 1580 : {
9727 1580 : switch (TREE_CODE (_p1))
9728 : {
9729 547 : case INTEGER_CST:
9730 547 : {
9731 547 : {
9732 547 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9733 547 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
9734 547 : if (res) return res;
9735 : }
9736 0 : break;
9737 : }
9738 : default:;
9739 : }
9740 : break;
9741 : }
9742 : default:;
9743 : }
9744 : break;
9745 : }
9746 225152 : case CALL_EXPR:
9747 225152 : switch (get_call_combined_fn (_p0))
9748 : {
9749 1 : case CFN_BUILT_IN_CTZ:
9750 1 : if (call_expr_nargs (_p0) == 1)
9751 : {
9752 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9753 1 : switch (TREE_CODE (_p1))
9754 : {
9755 1 : case INTEGER_CST:
9756 1 : {
9757 1 : {
9758 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9759 1 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZ);
9760 1 : if (res) return res;
9761 : }
9762 0 : break;
9763 : }
9764 : default:;
9765 : }
9766 : }
9767 : break;
9768 1 : case CFN_BUILT_IN_EXP:
9769 1 : if (call_expr_nargs (_p0) == 1)
9770 : {
9771 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9772 1 : switch (TREE_CODE (_p1))
9773 : {
9774 1 : case REAL_CST:
9775 1 : {
9776 1 : {
9777 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9778 1 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
9779 1 : if (res) return res;
9780 : }
9781 1 : break;
9782 : }
9783 : default:;
9784 : }
9785 : }
9786 : break;
9787 1 : case CFN_BUILT_IN_LOG:
9788 1 : if (call_expr_nargs (_p0) == 1)
9789 : {
9790 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9791 1 : switch (TREE_CODE (_p1))
9792 : {
9793 0 : case REAL_CST:
9794 0 : {
9795 0 : {
9796 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9797 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
9798 0 : if (res) return res;
9799 : }
9800 0 : break;
9801 : }
9802 : default:;
9803 : }
9804 : }
9805 : break;
9806 0 : case CFN_BUILT_IN_EXP10F:
9807 0 : if (call_expr_nargs (_p0) == 1)
9808 : {
9809 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9810 0 : switch (TREE_CODE (_p1))
9811 : {
9812 0 : case REAL_CST:
9813 0 : {
9814 0 : {
9815 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9816 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
9817 0 : if (res) return res;
9818 : }
9819 0 : break;
9820 : }
9821 : default:;
9822 : }
9823 : }
9824 : break;
9825 0 : case CFN_BUILT_IN_EXP10L:
9826 0 : if (call_expr_nargs (_p0) == 1)
9827 : {
9828 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9829 0 : switch (TREE_CODE (_p1))
9830 : {
9831 0 : case REAL_CST:
9832 0 : {
9833 0 : {
9834 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9835 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
9836 0 : if (res) return res;
9837 : }
9838 0 : break;
9839 : }
9840 : default:;
9841 : }
9842 : }
9843 : break;
9844 0 : case CFN_BUILT_IN_CTZL:
9845 0 : if (call_expr_nargs (_p0) == 1)
9846 : {
9847 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9848 0 : switch (TREE_CODE (_p1))
9849 : {
9850 0 : case INTEGER_CST:
9851 0 : {
9852 0 : {
9853 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9854 0 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZL);
9855 0 : if (res) return res;
9856 : }
9857 0 : break;
9858 : }
9859 : default:;
9860 : }
9861 : }
9862 : break;
9863 0 : case CFN_BUILT_IN_EXP2:
9864 0 : if (call_expr_nargs (_p0) == 1)
9865 : {
9866 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9867 0 : switch (TREE_CODE (_p1))
9868 : {
9869 0 : case REAL_CST:
9870 0 : {
9871 0 : {
9872 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9873 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
9874 0 : if (res) return res;
9875 : }
9876 0 : break;
9877 : }
9878 : default:;
9879 : }
9880 : }
9881 : break;
9882 0 : case CFN_BUILT_IN_EXPF:
9883 0 : if (call_expr_nargs (_p0) == 1)
9884 : {
9885 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9886 0 : switch (TREE_CODE (_p1))
9887 : {
9888 0 : case REAL_CST:
9889 0 : {
9890 0 : {
9891 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9892 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
9893 0 : if (res) return res;
9894 : }
9895 0 : break;
9896 : }
9897 : default:;
9898 : }
9899 : }
9900 : break;
9901 0 : case CFN_BUILT_IN_EXPL:
9902 0 : if (call_expr_nargs (_p0) == 1)
9903 : {
9904 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9905 0 : switch (TREE_CODE (_p1))
9906 : {
9907 0 : case REAL_CST:
9908 0 : {
9909 0 : {
9910 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9911 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
9912 0 : if (res) return res;
9913 : }
9914 0 : break;
9915 : }
9916 : default:;
9917 : }
9918 : }
9919 : break;
9920 0 : case CFN_BUILT_IN_LOG2:
9921 0 : if (call_expr_nargs (_p0) == 1)
9922 : {
9923 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9924 0 : switch (TREE_CODE (_p1))
9925 : {
9926 0 : case REAL_CST:
9927 0 : {
9928 0 : {
9929 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9930 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
9931 0 : if (res) return res;
9932 : }
9933 0 : break;
9934 : }
9935 : default:;
9936 : }
9937 : }
9938 : break;
9939 0 : case CFN_BUILT_IN_LOGF:
9940 0 : if (call_expr_nargs (_p0) == 1)
9941 : {
9942 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9943 0 : switch (TREE_CODE (_p1))
9944 : {
9945 0 : case REAL_CST:
9946 0 : {
9947 0 : {
9948 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9949 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
9950 0 : if (res) return res;
9951 : }
9952 0 : break;
9953 : }
9954 : default:;
9955 : }
9956 : }
9957 : break;
9958 0 : case CFN_BUILT_IN_LOGL:
9959 0 : if (call_expr_nargs (_p0) == 1)
9960 : {
9961 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9962 0 : switch (TREE_CODE (_p1))
9963 : {
9964 0 : case REAL_CST:
9965 0 : {
9966 0 : {
9967 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9968 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
9969 0 : if (res) return res;
9970 : }
9971 0 : break;
9972 : }
9973 : default:;
9974 : }
9975 : }
9976 : break;
9977 0 : case CFN_BUILT_IN_LOG10F:
9978 0 : if (call_expr_nargs (_p0) == 1)
9979 : {
9980 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9981 0 : switch (TREE_CODE (_p1))
9982 : {
9983 0 : case REAL_CST:
9984 0 : {
9985 0 : {
9986 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9987 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
9988 0 : if (res) return res;
9989 : }
9990 0 : break;
9991 : }
9992 : default:;
9993 : }
9994 : }
9995 : break;
9996 0 : case CFN_BUILT_IN_LOG10L:
9997 0 : if (call_expr_nargs (_p0) == 1)
9998 : {
9999 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10000 0 : switch (TREE_CODE (_p1))
10001 : {
10002 0 : case REAL_CST:
10003 0 : {
10004 0 : {
10005 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10006 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
10007 0 : if (res) return res;
10008 : }
10009 0 : break;
10010 : }
10011 : default:;
10012 : }
10013 : }
10014 : break;
10015 0 : case CFN_BUILT_IN_CTZIMAX:
10016 0 : if (call_expr_nargs (_p0) == 1)
10017 : {
10018 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10019 0 : switch (TREE_CODE (_p1))
10020 : {
10021 0 : case INTEGER_CST:
10022 0 : {
10023 0 : {
10024 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10025 0 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZIMAX);
10026 0 : if (res) return res;
10027 : }
10028 0 : break;
10029 : }
10030 : default:;
10031 : }
10032 : }
10033 : break;
10034 0 : case CFN_CTZ:
10035 0 : if (call_expr_nargs (_p0) == 2)
10036 : {
10037 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10038 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10039 0 : switch (TREE_CODE (_p1))
10040 : {
10041 0 : case INTEGER_CST:
10042 0 : {
10043 0 : {
10044 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10045 0 : tree res = generic_simplify_403 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
10046 0 : if (res) return res;
10047 : }
10048 0 : break;
10049 : }
10050 : default:;
10051 : }
10052 : }
10053 0 : if (call_expr_nargs (_p0) == 1)
10054 : {
10055 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10056 0 : switch (TREE_CODE (_p1))
10057 : {
10058 0 : case INTEGER_CST:
10059 0 : {
10060 0 : {
10061 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10062 0 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_CTZ);
10063 0 : if (res) return res;
10064 : }
10065 0 : break;
10066 : }
10067 : default:;
10068 : }
10069 : }
10070 : break;
10071 0 : case CFN_EXP:
10072 0 : if (call_expr_nargs (_p0) == 1)
10073 : {
10074 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10075 0 : switch (TREE_CODE (_p1))
10076 : {
10077 0 : case REAL_CST:
10078 0 : {
10079 0 : {
10080 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10081 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
10082 0 : if (res) return res;
10083 : }
10084 0 : break;
10085 : }
10086 : default:;
10087 : }
10088 : }
10089 : break;
10090 0 : case CFN_LOG:
10091 0 : if (call_expr_nargs (_p0) == 1)
10092 : {
10093 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10094 0 : switch (TREE_CODE (_p1))
10095 : {
10096 0 : case REAL_CST:
10097 0 : {
10098 0 : {
10099 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10100 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
10101 0 : if (res) return res;
10102 : }
10103 0 : break;
10104 : }
10105 : default:;
10106 : }
10107 : }
10108 : break;
10109 0 : case CFN_EXP2:
10110 0 : if (call_expr_nargs (_p0) == 1)
10111 : {
10112 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10113 0 : switch (TREE_CODE (_p1))
10114 : {
10115 0 : case REAL_CST:
10116 0 : {
10117 0 : {
10118 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10119 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
10120 0 : if (res) return res;
10121 : }
10122 0 : break;
10123 : }
10124 : default:;
10125 : }
10126 : }
10127 : break;
10128 0 : case CFN_LOG2:
10129 0 : if (call_expr_nargs (_p0) == 1)
10130 : {
10131 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10132 0 : switch (TREE_CODE (_p1))
10133 : {
10134 0 : case REAL_CST:
10135 0 : {
10136 0 : {
10137 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10138 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
10139 0 : if (res) return res;
10140 : }
10141 0 : break;
10142 : }
10143 : default:;
10144 : }
10145 : }
10146 : break;
10147 0 : case CFN_EXP10:
10148 0 : if (call_expr_nargs (_p0) == 1)
10149 : {
10150 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10151 0 : switch (TREE_CODE (_p1))
10152 : {
10153 0 : case REAL_CST:
10154 0 : {
10155 0 : {
10156 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10157 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
10158 0 : if (res) return res;
10159 : }
10160 0 : break;
10161 : }
10162 : default:;
10163 : }
10164 : }
10165 : break;
10166 0 : case CFN_BUILT_IN_CTZLL:
10167 0 : if (call_expr_nargs (_p0) == 1)
10168 : {
10169 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10170 0 : switch (TREE_CODE (_p1))
10171 : {
10172 0 : case INTEGER_CST:
10173 0 : {
10174 0 : {
10175 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10176 0 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZLL);
10177 0 : if (res) return res;
10178 : }
10179 0 : break;
10180 : }
10181 : default:;
10182 : }
10183 : }
10184 : break;
10185 0 : case CFN_LOG10:
10186 0 : if (call_expr_nargs (_p0) == 1)
10187 : {
10188 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10189 0 : switch (TREE_CODE (_p1))
10190 : {
10191 0 : case REAL_CST:
10192 0 : {
10193 0 : {
10194 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10195 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
10196 0 : if (res) return res;
10197 : }
10198 0 : break;
10199 : }
10200 : default:;
10201 : }
10202 : }
10203 : break;
10204 0 : case CFN_BUILT_IN_EXP10:
10205 0 : if (call_expr_nargs (_p0) == 1)
10206 : {
10207 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10208 0 : switch (TREE_CODE (_p1))
10209 : {
10210 0 : case REAL_CST:
10211 0 : {
10212 0 : {
10213 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10214 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
10215 0 : if (res) return res;
10216 : }
10217 0 : break;
10218 : }
10219 : default:;
10220 : }
10221 : }
10222 : break;
10223 0 : case CFN_BUILT_IN_EXP2F:
10224 0 : if (call_expr_nargs (_p0) == 1)
10225 : {
10226 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10227 0 : switch (TREE_CODE (_p1))
10228 : {
10229 0 : case REAL_CST:
10230 0 : {
10231 0 : {
10232 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10233 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
10234 0 : if (res) return res;
10235 : }
10236 0 : break;
10237 : }
10238 : default:;
10239 : }
10240 : }
10241 : break;
10242 0 : case CFN_BUILT_IN_EXP2L:
10243 0 : if (call_expr_nargs (_p0) == 1)
10244 : {
10245 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10246 0 : switch (TREE_CODE (_p1))
10247 : {
10248 0 : case REAL_CST:
10249 0 : {
10250 0 : {
10251 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10252 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
10253 0 : if (res) return res;
10254 : }
10255 0 : break;
10256 : }
10257 : default:;
10258 : }
10259 : }
10260 : break;
10261 0 : case CFN_BUILT_IN_LOG10:
10262 0 : if (call_expr_nargs (_p0) == 1)
10263 : {
10264 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10265 0 : switch (TREE_CODE (_p1))
10266 : {
10267 0 : case REAL_CST:
10268 0 : {
10269 0 : {
10270 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10271 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
10272 0 : if (res) return res;
10273 : }
10274 0 : break;
10275 : }
10276 : default:;
10277 : }
10278 : }
10279 : break;
10280 0 : case CFN_BUILT_IN_LOG2F:
10281 0 : if (call_expr_nargs (_p0) == 1)
10282 : {
10283 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10284 0 : switch (TREE_CODE (_p1))
10285 : {
10286 0 : case REAL_CST:
10287 0 : {
10288 0 : {
10289 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10290 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
10291 0 : if (res) return res;
10292 : }
10293 0 : break;
10294 : }
10295 : default:;
10296 : }
10297 : }
10298 : break;
10299 0 : case CFN_BUILT_IN_LOG2L:
10300 0 : if (call_expr_nargs (_p0) == 1)
10301 : {
10302 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10303 0 : switch (TREE_CODE (_p1))
10304 : {
10305 0 : case REAL_CST:
10306 0 : {
10307 0 : {
10308 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10309 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
10310 0 : if (res) return res;
10311 : }
10312 0 : break;
10313 : }
10314 : default:;
10315 : }
10316 : }
10317 : break;
10318 : default:;
10319 : }
10320 : break;
10321 : default:;
10322 : }
10323 : return NULL_TREE;
10324 : }
10325 :
10326 : tree
10327 1908 : generic_simplify_LROTATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10328 : {
10329 1908 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10330 1908 : if (integer_all_onesp (_p0))
10331 : {
10332 0 : {
10333 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10334 0 : tree res = generic_simplify_553 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10335 0 : if (res) return res;
10336 : }
10337 : }
10338 1908 : if (integer_zerop (_p1))
10339 : {
10340 0 : {
10341 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10342 0 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10343 0 : if (res) return res;
10344 : }
10345 : }
10346 1908 : if (integer_zerop (_p0))
10347 : {
10348 0 : {
10349 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10350 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10351 0 : if (res) return res;
10352 : }
10353 : }
10354 1908 : switch (TREE_CODE (_p1))
10355 : {
10356 0 : case VECTOR_CST:
10357 0 : {
10358 0 : {
10359 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10360 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10361 0 : if (res) return res;
10362 : }
10363 0 : break;
10364 : }
10365 0 : case CONSTRUCTOR:
10366 0 : {
10367 0 : {
10368 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10369 0 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10370 0 : if (res) return res;
10371 : }
10372 0 : break;
10373 : }
10374 1238 : case INTEGER_CST:
10375 1238 : {
10376 1238 : {
10377 1238 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10378 1238 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1750;
10379 1238 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1750;
10380 1238 : {
10381 1238 : tree res_op0;
10382 1238 : res_op0 = captures[0];
10383 1238 : tree res_op1;
10384 1238 : res_op1 = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]),
10385 1238 : build_int_cst (TREE_TYPE (captures[1]),
10386 1238 : element_precision (type)), captures[1]);
10387 1238 : tree _r;
10388 1238 : _r = fold_build2_loc (loc, RROTATE_EXPR, type, res_op0, res_op1);
10389 1238 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1028, __FILE__, __LINE__, true);
10390 1238 : return _r;
10391 : }
10392 0 : next_after_fail1750:;
10393 : }
10394 0 : break;
10395 : }
10396 0 : case MINUS_EXPR:
10397 0 : {
10398 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10399 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10400 0 : switch (TREE_CODE (_q30))
10401 : {
10402 0 : case INTEGER_CST:
10403 0 : {
10404 0 : {
10405 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
10406 0 : tree res = generic_simplify_554 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR);
10407 0 : if (res) return res;
10408 : }
10409 0 : break;
10410 : }
10411 : default:;
10412 : }
10413 : break;
10414 : }
10415 670 : default:;
10416 : }
10417 670 : switch (TREE_CODE (_p0))
10418 : {
10419 0 : case LROTATE_EXPR:
10420 0 : {
10421 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10422 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10423 0 : switch (TREE_CODE (_q21))
10424 : {
10425 0 : case INTEGER_CST:
10426 0 : {
10427 0 : switch (TREE_CODE (_p1))
10428 : {
10429 0 : case INTEGER_CST:
10430 0 : {
10431 0 : {
10432 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10433 0 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10434 0 : if (res) return res;
10435 : }
10436 0 : break;
10437 : }
10438 : default:;
10439 : }
10440 : break;
10441 : }
10442 : default:;
10443 : }
10444 : break;
10445 : }
10446 : default:;
10447 : }
10448 : return NULL_TREE;
10449 : }
10450 :
10451 : tree
10452 2784 : generic_simplify_RROTATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10453 : {
10454 2784 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10455 2784 : if (integer_all_onesp (_p0))
10456 : {
10457 0 : {
10458 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10459 0 : tree res = generic_simplify_553 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10460 0 : if (res) return res;
10461 : }
10462 : }
10463 2784 : if (integer_zerop (_p1))
10464 : {
10465 1 : {
10466 1 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10467 1 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10468 1 : if (res) return res;
10469 : }
10470 : }
10471 2783 : if (integer_zerop (_p0))
10472 : {
10473 0 : {
10474 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10475 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10476 0 : if (res) return res;
10477 : }
10478 : }
10479 2783 : switch (TREE_CODE (_p1))
10480 : {
10481 0 : case VECTOR_CST:
10482 0 : {
10483 0 : {
10484 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10485 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10486 0 : if (res) return res;
10487 : }
10488 0 : break;
10489 : }
10490 0 : case CONSTRUCTOR:
10491 0 : {
10492 0 : {
10493 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10494 0 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10495 0 : if (res) return res;
10496 : }
10497 0 : break;
10498 : }
10499 0 : case MINUS_EXPR:
10500 0 : {
10501 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10502 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10503 0 : switch (TREE_CODE (_q30))
10504 : {
10505 0 : case INTEGER_CST:
10506 0 : {
10507 0 : {
10508 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
10509 0 : tree res = generic_simplify_554 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR);
10510 0 : if (res) return res;
10511 : }
10512 0 : break;
10513 : }
10514 : default:;
10515 : }
10516 : break;
10517 : }
10518 2783 : default:;
10519 : }
10520 2783 : switch (TREE_CODE (_p0))
10521 : {
10522 0 : case RROTATE_EXPR:
10523 0 : {
10524 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10525 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10526 0 : switch (TREE_CODE (_q21))
10527 : {
10528 0 : case INTEGER_CST:
10529 0 : {
10530 0 : switch (TREE_CODE (_p1))
10531 : {
10532 0 : case INTEGER_CST:
10533 0 : {
10534 0 : {
10535 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10536 0 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10537 0 : if (res) return res;
10538 : }
10539 0 : break;
10540 : }
10541 : default:;
10542 : }
10543 : break;
10544 : }
10545 : default:;
10546 : }
10547 : break;
10548 : }
10549 : default:;
10550 : }
10551 : return NULL_TREE;
10552 : }
10553 :
10554 : tree
10555 569150 : generic_simplify_COMPLEX_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10556 : {
10557 569150 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10558 569150 : switch (TREE_CODE (_p0))
10559 : {
10560 40 : case REALPART_EXPR:
10561 40 : {
10562 40 : tree _q20 = TREE_OPERAND (_p0, 0);
10563 40 : switch (TREE_CODE (_p1))
10564 : {
10565 30 : case IMAGPART_EXPR:
10566 30 : {
10567 30 : tree _q40 = TREE_OPERAND (_p1, 0);
10568 30 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10569 : {
10570 30 : {
10571 30 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10572 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1751;
10573 30 : {
10574 30 : tree _r;
10575 30 : _r = captures[0];
10576 30 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1029, __FILE__, __LINE__, true);
10577 30 : return _r;
10578 : }
10579 0 : next_after_fail1751:;
10580 : }
10581 : }
10582 : break;
10583 : }
10584 : default:;
10585 : }
10586 : break;
10587 : }
10588 : default:;
10589 : }
10590 : return NULL_TREE;
10591 : }
10592 :
10593 : tree
10594 737730 : generic_simplify_UNORDERED_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10595 : {
10596 737730 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10597 737730 : switch (TREE_CODE (_p0))
10598 : {
10599 0 : case VEC_COND_EXPR:
10600 0 : {
10601 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10602 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10603 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10604 0 : switch (TREE_CODE (_p1))
10605 : {
10606 0 : case VEC_COND_EXPR:
10607 0 : {
10608 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10609 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10610 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10611 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10612 : {
10613 0 : {
10614 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10615 0 : if (VECTOR_TYPE_P (type)
10616 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
10617 0 : || types_match (type, TREE_TYPE (captures[2]))
10618 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10619 : || (optimize_vectors_before_lowering_p ()
10620 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10621 : )
10622 : {
10623 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1752;
10624 0 : {
10625 0 : tree res_op0;
10626 0 : res_op0 = captures[1];
10627 0 : tree res_op1;
10628 0 : {
10629 0 : tree _o1[2], _r1;
10630 0 : _o1[0] = captures[2];
10631 0 : _o1[1] = captures[5];
10632 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10633 0 : if (EXPR_P (_r1))
10634 0 : goto next_after_fail1752;
10635 0 : res_op1 = _r1;
10636 : }
10637 0 : tree res_op2;
10638 0 : {
10639 0 : tree _o1[2], _r1;
10640 0 : _o1[0] = captures[3];
10641 0 : _o1[1] = captures[6];
10642 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10643 0 : if (EXPR_P (_r1))
10644 0 : goto next_after_fail1752;
10645 0 : res_op2 = _r1;
10646 : }
10647 0 : tree _r;
10648 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10649 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
10650 0 : return _r;
10651 : }
10652 0 : next_after_fail1752:;
10653 : }
10654 : }
10655 : }
10656 : break;
10657 : }
10658 0 : default:;
10659 : }
10660 0 : {
10661 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10662 0 : if (VECTOR_TYPE_P (type)
10663 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
10664 0 : || types_match (type, TREE_TYPE (captures[2]))
10665 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10666 : || (optimize_vectors_before_lowering_p ()
10667 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10668 : )
10669 : {
10670 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1753;
10671 0 : {
10672 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1753;
10673 0 : tree res_op0;
10674 0 : res_op0 = captures[1];
10675 0 : tree res_op1;
10676 0 : {
10677 0 : tree _o1[2], _r1;
10678 0 : _o1[0] = captures[2];
10679 0 : _o1[1] = unshare_expr (captures[4]);
10680 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10681 0 : if (EXPR_P (_r1))
10682 0 : goto next_after_fail1753;
10683 0 : res_op1 = _r1;
10684 : }
10685 0 : tree res_op2;
10686 0 : {
10687 0 : tree _o1[2], _r1;
10688 0 : _o1[0] = captures[3];
10689 0 : _o1[1] = captures[4];
10690 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10691 0 : if (EXPR_P (_r1))
10692 0 : goto next_after_fail1753;
10693 0 : res_op2 = _r1;
10694 : }
10695 0 : tree _r;
10696 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10697 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
10698 0 : return _r;
10699 : }
10700 0 : next_after_fail1753:;
10701 : }
10702 : }
10703 0 : break;
10704 : }
10705 737730 : default:;
10706 : }
10707 737730 : switch (TREE_CODE (_p1))
10708 : {
10709 0 : case VEC_COND_EXPR:
10710 0 : {
10711 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10712 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10713 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10714 0 : {
10715 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10716 0 : if (VECTOR_TYPE_P (type)
10717 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
10718 0 : || types_match (type, TREE_TYPE (captures[3]))
10719 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10720 : || (optimize_vectors_before_lowering_p ()
10721 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10722 : )
10723 : {
10724 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1754;
10725 0 : {
10726 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1754;
10727 0 : tree res_op0;
10728 0 : res_op0 = captures[2];
10729 0 : tree res_op1;
10730 0 : {
10731 0 : tree _o1[2], _r1;
10732 0 : _o1[0] = unshare_expr (captures[0]);
10733 0 : _o1[1] = captures[3];
10734 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10735 0 : if (EXPR_P (_r1))
10736 0 : goto next_after_fail1754;
10737 0 : res_op1 = _r1;
10738 : }
10739 0 : tree res_op2;
10740 0 : {
10741 0 : tree _o1[2], _r1;
10742 0 : _o1[0] = captures[0];
10743 0 : _o1[1] = captures[4];
10744 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10745 0 : if (EXPR_P (_r1))
10746 0 : goto next_after_fail1754;
10747 0 : res_op2 = _r1;
10748 : }
10749 0 : tree _r;
10750 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10751 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
10752 0 : return _r;
10753 : }
10754 0 : next_after_fail1754:;
10755 : }
10756 : }
10757 0 : break;
10758 : }
10759 737730 : default:;
10760 : }
10761 737730 : switch (TREE_CODE (_p0))
10762 : {
10763 0 : case FLOAT_EXPR:
10764 0 : {
10765 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10766 0 : switch (TREE_CODE (_p1))
10767 : {
10768 0 : case FLOAT_EXPR:
10769 0 : {
10770 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10771 0 : {
10772 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10773 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
10774 0 : if (res) return res;
10775 : }
10776 0 : break;
10777 : }
10778 : default:;
10779 : }
10780 : break;
10781 : }
10782 18 : case NEGATE_EXPR:
10783 18 : {
10784 18 : tree _q20 = TREE_OPERAND (_p0, 0);
10785 18 : switch (TREE_CODE (_p1))
10786 : {
10787 18 : case NEGATE_EXPR:
10788 18 : {
10789 18 : tree _q40 = TREE_OPERAND (_p1, 0);
10790 18 : {
10791 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10792 18 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
10793 18 : if (res) return res;
10794 : }
10795 0 : break;
10796 : }
10797 0 : default:;
10798 : }
10799 0 : if (CONSTANT_CLASS_P (_p1))
10800 : {
10801 0 : {
10802 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10803 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
10804 0 : if (res) return res;
10805 : }
10806 : }
10807 : break;
10808 : }
10809 737712 : default:;
10810 : }
10811 737712 : switch (TREE_CODE (_p1))
10812 : {
10813 519 : case REAL_CST:
10814 519 : {
10815 519 : {
10816 519 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10817 519 : tree res = generic_simplify_560 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
10818 519 : if (res) return res;
10819 : }
10820 519 : break;
10821 : }
10822 737712 : default:;
10823 : }
10824 737712 : {
10825 737712 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10826 737712 : if (tree_expr_nan_p (captures[0]) || tree_expr_nan_p (captures[1])
10827 : )
10828 : {
10829 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1755;
10830 0 : {
10831 0 : tree _r;
10832 0 : _r = constant_boolean_node (true, type);
10833 0 : if (TREE_SIDE_EFFECTS (captures[0]))
10834 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10835 0 : if (TREE_SIDE_EFFECTS (captures[1]))
10836 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10837 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
10838 0 : return _r;
10839 : }
10840 0 : next_after_fail1755:;
10841 : }
10842 : else
10843 : {
10844 737712 : if (!tree_expr_maybe_nan_p (captures[0]) && !tree_expr_maybe_nan_p (captures[1])
10845 : )
10846 : {
10847 35 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1756;
10848 35 : {
10849 35 : tree _r;
10850 35 : _r = constant_boolean_node (false, type);
10851 35 : if (TREE_SIDE_EFFECTS (captures[0]))
10852 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10853 35 : if (TREE_SIDE_EFFECTS (captures[1]))
10854 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10855 35 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1031, __FILE__, __LINE__, true);
10856 35 : return _r;
10857 : }
10858 0 : next_after_fail1756:;
10859 : }
10860 : }
10861 : }
10862 737677 : return NULL_TREE;
10863 : }
10864 :
10865 : tree
10866 702480 : generic_simplify_UNLT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10867 : {
10868 702480 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10869 702480 : switch (TREE_CODE (_p0))
10870 : {
10871 0 : case VEC_COND_EXPR:
10872 0 : {
10873 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10874 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10875 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10876 0 : switch (TREE_CODE (_p1))
10877 : {
10878 0 : case VEC_COND_EXPR:
10879 0 : {
10880 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10881 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10882 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10883 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10884 : {
10885 0 : {
10886 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10887 0 : if (VECTOR_TYPE_P (type)
10888 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
10889 0 : || types_match (type, TREE_TYPE (captures[2]))
10890 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10891 : || (optimize_vectors_before_lowering_p ()
10892 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10893 : )
10894 : {
10895 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1762;
10896 0 : {
10897 0 : tree res_op0;
10898 0 : res_op0 = captures[1];
10899 0 : tree res_op1;
10900 0 : {
10901 0 : tree _o1[2], _r1;
10902 0 : _o1[0] = captures[2];
10903 0 : _o1[1] = captures[5];
10904 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
10905 0 : if (EXPR_P (_r1))
10906 0 : goto next_after_fail1762;
10907 0 : res_op1 = _r1;
10908 : }
10909 0 : tree res_op2;
10910 0 : {
10911 0 : tree _o1[2], _r1;
10912 0 : _o1[0] = captures[3];
10913 0 : _o1[1] = captures[6];
10914 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
10915 0 : if (EXPR_P (_r1))
10916 0 : goto next_after_fail1762;
10917 0 : res_op2 = _r1;
10918 : }
10919 0 : tree _r;
10920 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10921 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
10922 0 : return _r;
10923 : }
10924 0 : next_after_fail1762:;
10925 : }
10926 : }
10927 : }
10928 : break;
10929 : }
10930 0 : default:;
10931 : }
10932 0 : {
10933 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10934 0 : if (VECTOR_TYPE_P (type)
10935 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
10936 0 : || types_match (type, TREE_TYPE (captures[2]))
10937 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10938 : || (optimize_vectors_before_lowering_p ()
10939 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10940 : )
10941 : {
10942 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1763;
10943 0 : {
10944 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1763;
10945 0 : tree res_op0;
10946 0 : res_op0 = captures[1];
10947 0 : tree res_op1;
10948 0 : {
10949 0 : tree _o1[2], _r1;
10950 0 : _o1[0] = captures[2];
10951 0 : _o1[1] = unshare_expr (captures[4]);
10952 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
10953 0 : if (EXPR_P (_r1))
10954 0 : goto next_after_fail1763;
10955 0 : res_op1 = _r1;
10956 : }
10957 0 : tree res_op2;
10958 0 : {
10959 0 : tree _o1[2], _r1;
10960 0 : _o1[0] = captures[3];
10961 0 : _o1[1] = captures[4];
10962 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
10963 0 : if (EXPR_P (_r1))
10964 0 : goto next_after_fail1763;
10965 0 : res_op2 = _r1;
10966 : }
10967 0 : tree _r;
10968 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10969 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
10970 0 : return _r;
10971 : }
10972 0 : next_after_fail1763:;
10973 : }
10974 : }
10975 0 : break;
10976 : }
10977 702480 : default:;
10978 : }
10979 702480 : switch (TREE_CODE (_p1))
10980 : {
10981 0 : case VEC_COND_EXPR:
10982 0 : {
10983 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10984 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10985 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10986 0 : {
10987 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10988 0 : if (VECTOR_TYPE_P (type)
10989 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
10990 0 : || types_match (type, TREE_TYPE (captures[3]))
10991 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10992 : || (optimize_vectors_before_lowering_p ()
10993 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10994 : )
10995 : {
10996 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1764;
10997 0 : {
10998 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1764;
10999 0 : tree res_op0;
11000 0 : res_op0 = captures[2];
11001 0 : tree res_op1;
11002 0 : {
11003 0 : tree _o1[2], _r1;
11004 0 : _o1[0] = unshare_expr (captures[0]);
11005 0 : _o1[1] = captures[3];
11006 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11007 0 : if (EXPR_P (_r1))
11008 0 : goto next_after_fail1764;
11009 0 : res_op1 = _r1;
11010 : }
11011 0 : tree res_op2;
11012 0 : {
11013 0 : tree _o1[2], _r1;
11014 0 : _o1[0] = captures[0];
11015 0 : _o1[1] = captures[4];
11016 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11017 0 : if (EXPR_P (_r1))
11018 0 : goto next_after_fail1764;
11019 0 : res_op2 = _r1;
11020 : }
11021 0 : tree _r;
11022 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11023 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
11024 0 : return _r;
11025 : }
11026 0 : next_after_fail1764:;
11027 : }
11028 : }
11029 0 : break;
11030 : }
11031 702480 : default:;
11032 : }
11033 702480 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11034 : {
11035 0 : {
11036 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11037 0 : tree res = generic_simplify_561 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11038 0 : if (res) return res;
11039 : }
11040 : }
11041 702480 : switch (TREE_CODE (_p0))
11042 : {
11043 283 : case FLOAT_EXPR:
11044 283 : {
11045 283 : tree _q20 = TREE_OPERAND (_p0, 0);
11046 283 : switch (TREE_CODE (_p1))
11047 : {
11048 0 : case FLOAT_EXPR:
11049 0 : {
11050 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11051 0 : {
11052 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
11053 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, UNLT_EXPR, LT_EXPR);
11054 0 : if (res) return res;
11055 : }
11056 0 : break;
11057 : }
11058 : default:;
11059 : }
11060 : break;
11061 : }
11062 0 : case NEGATE_EXPR:
11063 0 : {
11064 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11065 0 : switch (TREE_CODE (_p1))
11066 : {
11067 0 : case NEGATE_EXPR:
11068 0 : {
11069 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11070 0 : {
11071 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11072 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11073 0 : if (res) return res;
11074 : }
11075 0 : break;
11076 : }
11077 0 : default:;
11078 : }
11079 0 : if (CONSTANT_CLASS_P (_p1))
11080 : {
11081 0 : {
11082 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11083 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11084 0 : if (res) return res;
11085 : }
11086 : }
11087 : break;
11088 : }
11089 702480 : default:;
11090 : }
11091 702480 : switch (TREE_CODE (_p1))
11092 : {
11093 352666 : case REAL_CST:
11094 352666 : {
11095 352666 : {
11096 352666 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11097 352666 : tree res = generic_simplify_560 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11098 352666 : if (res) return res;
11099 : }
11100 352664 : break;
11101 : }
11102 : default:;
11103 : }
11104 : return NULL_TREE;
11105 : }
11106 :
11107 : tree
11108 79 : generic_simplify_LTGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11109 : {
11110 79 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11111 79 : switch (TREE_CODE (_p0))
11112 : {
11113 0 : case VEC_COND_EXPR:
11114 0 : {
11115 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11116 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11117 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11118 0 : switch (TREE_CODE (_p1))
11119 : {
11120 0 : case VEC_COND_EXPR:
11121 0 : {
11122 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11123 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11124 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11125 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11126 : {
11127 0 : {
11128 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11129 0 : if (VECTOR_TYPE_P (type)
11130 0 : && (TREE_CODE_CLASS (LTGT_EXPR) != tcc_comparison
11131 0 : || types_match (type, TREE_TYPE (captures[2]))
11132 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11133 : || (optimize_vectors_before_lowering_p ()
11134 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11135 : )
11136 : {
11137 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1777;
11138 0 : {
11139 0 : tree res_op0;
11140 0 : res_op0 = captures[1];
11141 0 : tree res_op1;
11142 0 : {
11143 0 : tree _o1[2], _r1;
11144 0 : _o1[0] = captures[2];
11145 0 : _o1[1] = captures[5];
11146 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11147 0 : if (EXPR_P (_r1))
11148 0 : goto next_after_fail1777;
11149 0 : res_op1 = _r1;
11150 : }
11151 0 : tree res_op2;
11152 0 : {
11153 0 : tree _o1[2], _r1;
11154 0 : _o1[0] = captures[3];
11155 0 : _o1[1] = captures[6];
11156 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11157 0 : if (EXPR_P (_r1))
11158 0 : goto next_after_fail1777;
11159 0 : res_op2 = _r1;
11160 : }
11161 0 : tree _r;
11162 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11163 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
11164 0 : return _r;
11165 : }
11166 0 : next_after_fail1777:;
11167 : }
11168 : }
11169 : }
11170 : break;
11171 : }
11172 0 : default:;
11173 : }
11174 0 : {
11175 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11176 0 : if (VECTOR_TYPE_P (type)
11177 0 : && (TREE_CODE_CLASS (LTGT_EXPR) != tcc_comparison
11178 0 : || types_match (type, TREE_TYPE (captures[2]))
11179 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11180 : || (optimize_vectors_before_lowering_p ()
11181 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11182 : )
11183 : {
11184 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1778;
11185 0 : {
11186 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1778;
11187 0 : tree res_op0;
11188 0 : res_op0 = captures[1];
11189 0 : tree res_op1;
11190 0 : {
11191 0 : tree _o1[2], _r1;
11192 0 : _o1[0] = captures[2];
11193 0 : _o1[1] = unshare_expr (captures[4]);
11194 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11195 0 : if (EXPR_P (_r1))
11196 0 : goto next_after_fail1778;
11197 0 : res_op1 = _r1;
11198 : }
11199 0 : tree res_op2;
11200 0 : {
11201 0 : tree _o1[2], _r1;
11202 0 : _o1[0] = captures[3];
11203 0 : _o1[1] = captures[4];
11204 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11205 0 : if (EXPR_P (_r1))
11206 0 : goto next_after_fail1778;
11207 0 : res_op2 = _r1;
11208 : }
11209 0 : tree _r;
11210 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11211 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
11212 0 : return _r;
11213 : }
11214 0 : next_after_fail1778:;
11215 : }
11216 : }
11217 0 : break;
11218 : }
11219 79 : default:;
11220 : }
11221 79 : switch (TREE_CODE (_p1))
11222 : {
11223 0 : case VEC_COND_EXPR:
11224 0 : {
11225 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11226 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11227 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11228 0 : {
11229 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11230 0 : if (VECTOR_TYPE_P (type)
11231 0 : && (TREE_CODE_CLASS (LTGT_EXPR) != tcc_comparison
11232 0 : || types_match (type, TREE_TYPE (captures[3]))
11233 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11234 : || (optimize_vectors_before_lowering_p ()
11235 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11236 : )
11237 : {
11238 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1779;
11239 0 : {
11240 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1779;
11241 0 : tree res_op0;
11242 0 : res_op0 = captures[2];
11243 0 : tree res_op1;
11244 0 : {
11245 0 : tree _o1[2], _r1;
11246 0 : _o1[0] = unshare_expr (captures[0]);
11247 0 : _o1[1] = captures[3];
11248 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11249 0 : if (EXPR_P (_r1))
11250 0 : goto next_after_fail1779;
11251 0 : res_op1 = _r1;
11252 : }
11253 0 : tree res_op2;
11254 0 : {
11255 0 : tree _o1[2], _r1;
11256 0 : _o1[0] = captures[0];
11257 0 : _o1[1] = captures[4];
11258 0 : _r1 = fold_build2_loc (loc, LTGT_EXPR, type, _o1[0], _o1[1]);
11259 0 : if (EXPR_P (_r1))
11260 0 : goto next_after_fail1779;
11261 0 : res_op2 = _r1;
11262 : }
11263 0 : tree _r;
11264 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11265 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
11266 0 : return _r;
11267 : }
11268 0 : next_after_fail1779:;
11269 : }
11270 : }
11271 0 : break;
11272 : }
11273 79 : default:;
11274 : }
11275 79 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11276 : {
11277 2 : {
11278 2 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11279 2 : if (!flag_trapping_math || !tree_expr_maybe_nan_p (captures[0])
11280 : )
11281 : {
11282 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1780;
11283 0 : {
11284 0 : tree _r;
11285 0 : _r = constant_boolean_node (false, type);
11286 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11287 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11288 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
11289 0 : return _r;
11290 : }
11291 0 : next_after_fail1780:;
11292 : }
11293 : }
11294 : }
11295 79 : switch (TREE_CODE (_p0))
11296 : {
11297 0 : case FLOAT_EXPR:
11298 0 : {
11299 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11300 0 : switch (TREE_CODE (_p1))
11301 : {
11302 0 : case FLOAT_EXPR:
11303 0 : {
11304 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11305 0 : {
11306 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
11307 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, LTGT_EXPR, NE_EXPR);
11308 0 : if (res) return res;
11309 : }
11310 0 : break;
11311 : }
11312 : default:;
11313 : }
11314 : break;
11315 : }
11316 0 : case NEGATE_EXPR:
11317 0 : {
11318 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11319 0 : switch (TREE_CODE (_p1))
11320 : {
11321 0 : case NEGATE_EXPR:
11322 0 : {
11323 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11324 0 : {
11325 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11326 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, LTGT_EXPR, LTGT_EXPR);
11327 0 : if (res) return res;
11328 : }
11329 0 : break;
11330 : }
11331 0 : default:;
11332 : }
11333 0 : if (CONSTANT_CLASS_P (_p1))
11334 : {
11335 0 : {
11336 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11337 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, LTGT_EXPR, LTGT_EXPR);
11338 0 : if (res) return res;
11339 : }
11340 : }
11341 : break;
11342 : }
11343 79 : default:;
11344 : }
11345 79 : switch (TREE_CODE (_p1))
11346 : {
11347 2 : case REAL_CST:
11348 2 : {
11349 2 : {
11350 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11351 2 : tree res = generic_simplify_560 (loc, type, _p0, _p1, captures, LTGT_EXPR);
11352 2 : if (res) return res;
11353 : }
11354 2 : break;
11355 : }
11356 : default:;
11357 : }
11358 : return NULL_TREE;
11359 : }
11360 :
11361 : tree
11362 763724 : generic_simplify_BIT_FIELD_REF (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
11363 : {
11364 763724 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11365 763724 : switch (TREE_CODE (_p0))
11366 : {
11367 8 : case BIT_FIELD_REF:
11368 8 : {
11369 8 : tree _q20 = TREE_OPERAND (_p0, 0);
11370 8 : tree _q21 = TREE_OPERAND (_p0, 1);
11371 8 : tree _q22 = TREE_OPERAND (_p0, 2);
11372 8 : {
11373 8 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1, _p2 };
11374 8 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1947;
11375 8 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1947;
11376 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1947;
11377 8 : {
11378 8 : tree res_op0;
11379 8 : res_op0 = captures[0];
11380 8 : tree res_op1;
11381 8 : res_op1 = captures[3];
11382 8 : tree res_op2;
11383 8 : res_op2 = const_binop (PLUS_EXPR, bitsizetype, captures[2], captures[4]);
11384 8 : tree _r;
11385 8 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11386 8 : if (TREE_SIDE_EFFECTS (captures[1]))
11387 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11388 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
11389 8 : return _r;
11390 : }
11391 0 : next_after_fail1947:;
11392 : }
11393 0 : break;
11394 : }
11395 3 : case VIEW_CONVERT_EXPR:
11396 3 : {
11397 3 : tree _q20 = TREE_OPERAND (_p0, 0);
11398 3 : {
11399 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
11400 6 : if (! INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11401 6 : || type_has_mode_precision_p (TREE_TYPE (captures[0]))
11402 : )
11403 : {
11404 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1948;
11405 0 : {
11406 0 : tree res_op0;
11407 0 : res_op0 = captures[0];
11408 0 : tree res_op1;
11409 0 : res_op1 = captures[1];
11410 0 : tree res_op2;
11411 0 : res_op2 = captures[2];
11412 0 : tree _r;
11413 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11414 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
11415 0 : return _r;
11416 : }
11417 0 : next_after_fail1948:;
11418 : }
11419 : }
11420 3 : break;
11421 : }
11422 763716 : default:;
11423 : }
11424 763716 : if (integer_zerop (_p2))
11425 : {
11426 243473 : {
11427 243473 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11428 243473 : if (tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (captures[0])))
11429 : )
11430 : {
11431 2589 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1949;
11432 2589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1949;
11433 2589 : {
11434 2589 : tree res_op0;
11435 2589 : res_op0 = captures[0];
11436 2589 : tree _r;
11437 2589 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11438 2589 : if (TREE_SIDE_EFFECTS (captures[1]))
11439 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11440 2589 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
11441 2589 : return _r;
11442 : }
11443 240884 : next_after_fail1949:;
11444 : }
11445 : }
11446 : }
11447 761127 : {
11448 761127 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11449 761127 : if (TREE_CODE (TREE_TYPE (captures[0])) == COMPLEX_TYPE
11450 761127 : && tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))
11451 : )
11452 : {
11453 2 : if (integer_zerop (captures[2])
11454 : )
11455 : {
11456 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1950;
11457 0 : {
11458 0 : tree res_op0;
11459 0 : {
11460 0 : tree _o1[1], _r1;
11461 0 : _o1[0] = captures[0];
11462 0 : _r1 = fold_build1_loc (loc, REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
11463 0 : res_op0 = _r1;
11464 : }
11465 0 : tree _r;
11466 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11467 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11468 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11469 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11470 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11471 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
11472 0 : return _r;
11473 : }
11474 0 : next_after_fail1950:;
11475 : }
11476 : else
11477 : {
11478 2 : if (tree_int_cst_equal (captures[2], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))
11479 : )
11480 : {
11481 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1951;
11482 0 : {
11483 0 : tree res_op0;
11484 0 : {
11485 0 : tree _o1[1], _r1;
11486 0 : _o1[0] = captures[0];
11487 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
11488 0 : res_op0 = _r1;
11489 : }
11490 0 : tree _r;
11491 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11492 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11493 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11494 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11495 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11496 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1081, __FILE__, __LINE__, true);
11497 0 : return _r;
11498 : }
11499 0 : next_after_fail1951:;
11500 : }
11501 : }
11502 : }
11503 : else
11504 : {
11505 1522188 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11506 20555 : && INTEGRAL_TYPE_P (type)
11507 : && (!
11508 :
11509 : || is_gimple_reg (captures[0]))
11510 780702 : && ((compare_tree_int (captures[1], TYPE_PRECISION (TREE_TYPE (captures[0]))) == 0
11511 0 : && integer_zerop (captures[2]))
11512 : || (BYTES_BIG_ENDIAN == WORDS_BIG_ENDIAN
11513 : && canonicalize_math_after_vectorization_p ()
11514 : && TYPE_PRECISION (TREE_TYPE (captures[0])) % BITS_PER_UNIT == 0
11515 : && TYPE_PRECISION (type) % BITS_PER_UNIT == 0
11516 : && compare_tree_int (captures[2], (BYTES_BIG_ENDIAN
11517 : ? (TYPE_PRECISION (TREE_TYPE (captures[0]))
11518 : - TYPE_PRECISION (type))
11519 : : 0)) == 0))
11520 : )
11521 : {
11522 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1952;
11523 0 : {
11524 0 : tree res_op0;
11525 0 : res_op0 = captures[0];
11526 0 : tree _r;
11527 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
11528 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11529 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11530 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11531 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11532 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1082, __FILE__, __LINE__, true);
11533 0 : return _r;
11534 : }
11535 0 : next_after_fail1952:;
11536 : }
11537 : }
11538 : }
11539 761127 : switch (TREE_CODE (_p0))
11540 : {
11541 1511 : case CONSTRUCTOR:
11542 1511 : {
11543 1511 : {
11544 1511 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11545 1511 : if (VECTOR_TYPE_P (TREE_TYPE (captures[0]))
11546 1511 : && tree_fits_uhwi_p (TYPE_SIZE (type))
11547 3022 : && ((tree_to_uhwi (TYPE_SIZE (type))
11548 1511 : == tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))))
11549 0 : || (VECTOR_TYPE_P (type)
11550 0 : && (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (type)))
11551 0 : == tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))))))
11552 : )
11553 : {
11554 1511 : {
11555 1511 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
11556 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
11557 1511 : tree eltype = TREE_TYPE (TREE_TYPE (ctor));
11558 1511 : unsigned HOST_WIDE_INT width = tree_to_uhwi (TYPE_SIZE (eltype));
11559 1511 : unsigned HOST_WIDE_INT n = tree_to_uhwi (captures[1]);
11560 1511 : unsigned HOST_WIDE_INT idx = tree_to_uhwi (captures[2]);
11561 1511 : if (n != 0
11562 1511 : && (idx % width) == 0
11563 1511 : && (n % width) == 0
11564 3022 : && known_le ((idx + n) / width,
11565 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (ctor)))
11566 : )
11567 : {
11568 1511 : {
11569 1511 : idx = idx / width;
11570 1511 : n = n / width;
11571 1511 : poly_uint64 k = 1;
11572 1511 : if (CONSTRUCTOR_NELTS (ctor) != 0)
11573 : {
11574 1511 : tree cons_elem = TREE_TYPE (CONSTRUCTOR_ELT (ctor, 0)->value);
11575 1511 : if (TREE_CODE (cons_elem) == VECTOR_TYPE)
11576 1511 : k = TYPE_VECTOR_SUBPARTS (cons_elem);
11577 : }
11578 1511 : unsigned HOST_WIDE_INT elt, count, const_k;
11579 1511 : if (multiple_p (idx, k, &elt) && multiple_p (n, k, &count)
11580 : )
11581 : {
11582 6 : if (CONSTRUCTOR_NELTS (ctor) == 0
11583 : )
11584 : {
11585 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1953;
11586 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1953;
11587 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1953;
11588 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1953;
11589 0 : {
11590 0 : tree _r;
11591 0 : _r = build_zero_cst (type);
11592 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1083, __FILE__, __LINE__, true);
11593 1511 : return _r;
11594 : }
11595 : next_after_fail1953:;
11596 : }
11597 : else
11598 : {
11599 6 : if (count == 1
11600 : )
11601 : {
11602 6 : if (elt < CONSTRUCTOR_NELTS (ctor)
11603 : )
11604 : {
11605 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1954;
11606 6 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1954;
11607 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1954;
11608 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1954;
11609 6 : {
11610 6 : tree res_op0;
11611 6 : res_op0 = CONSTRUCTOR_ELT (ctor, elt)->value;
11612 6 : tree _r;
11613 6 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11614 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1084, __FILE__, __LINE__, true);
11615 6 : return _r;
11616 : }
11617 : next_after_fail1954:;
11618 : }
11619 : else
11620 : {
11621 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1955;
11622 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1955;
11623 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1955;
11624 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1955;
11625 0 : {
11626 0 : tree _r;
11627 0 : _r = build_zero_cst (type);
11628 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1085, __FILE__, __LINE__, true);
11629 0 : return _r;
11630 : }
11631 : next_after_fail1955:;
11632 : }
11633 : }
11634 : else
11635 : {
11636 0 : if (single_use (captures[0])
11637 : )
11638 : {
11639 0 : {
11640 0 : vec<constructor_elt, va_gc> *vals;
11641 0 : vec_alloc (vals, count);
11642 0 : bool constant_p = true;
11643 0 : tree res;
11644 0 : for (unsigned i = 0;
11645 0 : i < count && elt + i < CONSTRUCTOR_NELTS (ctor); ++i)
11646 : {
11647 0 : tree e = CONSTRUCTOR_ELT (ctor, elt + i)->value;
11648 0 : CONSTRUCTOR_APPEND_ELT (vals, NULL_TREE, e);
11649 0 : if (!CONSTANT_CLASS_P (e))
11650 0 : constant_p = false;
11651 : }
11652 0 : tree evtype = (types_match (TREE_TYPE (type),
11653 0 : TREE_TYPE (TREE_TYPE (ctor)))
11654 0 : ? type
11655 0 : : build_vector_type (TREE_TYPE (TREE_TYPE (ctor)),
11656 0 : count * k));
11657 0 : res = (constant_p ? build_vector_from_ctor (evtype, vals)
11658 : : (
11659 :
11660 0 : ? NULL_TREE : build_constructor (evtype, vals)));
11661 0 : if (res
11662 : )
11663 : {
11664 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1956;
11665 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1956;
11666 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1956;
11667 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1956;
11668 0 : {
11669 0 : tree res_op0;
11670 0 : res_op0 = res;
11671 0 : tree _r;
11672 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11673 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1086, __FILE__, __LINE__, true);
11674 0 : return _r;
11675 : }
11676 0 : next_after_fail1956:;
11677 : }
11678 : }
11679 : }
11680 : }
11681 : }
11682 : }
11683 : else
11684 : {
11685 1505 : if (k.is_constant (&const_k)
11686 1505 : && idx + n <= (idx / const_k + 1) * const_k
11687 : )
11688 : {
11689 1505 : if (CONSTRUCTOR_NELTS (ctor) <= idx / const_k
11690 : )
11691 : {
11692 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1957;
11693 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1957;
11694 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1957;
11695 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1957;
11696 0 : {
11697 0 : tree _r;
11698 0 : _r = build_zero_cst (type);
11699 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1087, __FILE__, __LINE__, true);
11700 0 : return _r;
11701 : }
11702 : next_after_fail1957:;
11703 : }
11704 : else
11705 : {
11706 1505 : if (n == const_k
11707 : )
11708 : {
11709 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1958;
11710 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1958;
11711 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1958;
11712 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1958;
11713 0 : {
11714 0 : tree res_op0;
11715 0 : res_op0 = CONSTRUCTOR_ELT (ctor, idx / const_k)->value;
11716 0 : tree _r;
11717 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11718 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1088, __FILE__, __LINE__, true);
11719 0 : return _r;
11720 : }
11721 : next_after_fail1958:;
11722 : }
11723 : else
11724 : {
11725 1505 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1959;
11726 1505 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1959;
11727 1505 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1959;
11728 1505 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1959;
11729 1505 : {
11730 1505 : tree res_op0;
11731 1505 : res_op0 = CONSTRUCTOR_ELT (ctor, idx / const_k)->value;
11732 1505 : tree res_op1;
11733 1505 : res_op1 = captures[1];
11734 1505 : tree res_op2;
11735 1505 : res_op2 = bitsize_int ((idx % const_k) * width);
11736 1505 : tree _r;
11737 1505 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11738 1505 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1089, __FILE__, __LINE__, true);
11739 1505 : return _r;
11740 : }
11741 : next_after_fail1959:;
11742 : }
11743 : }
11744 : }
11745 : }
11746 : }
11747 : }
11748 : }
11749 : }
11750 : }
11751 0 : break;
11752 : }
11753 0 : case VEC_PERM_EXPR:
11754 0 : {
11755 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11756 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11757 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11758 0 : switch (TREE_CODE (_q22))
11759 : {
11760 0 : case VECTOR_CST:
11761 0 : {
11762 0 : {
11763 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _p2 };
11764 0 : {
11765 0 : tree elem_type = TREE_TYPE (TREE_TYPE (captures[0]));
11766 0 : poly_uint64 elem_size = tree_to_poly_uint64 (TYPE_SIZE (elem_type));
11767 0 : poly_uint64 size = tree_to_poly_uint64 (TYPE_SIZE (type));
11768 0 : unsigned HOST_WIDE_INT nelts, idx;
11769 0 : unsigned HOST_WIDE_INT nelts_op = 0;
11770 0 : if (constant_multiple_p (tree_to_poly_uint64 (captures[5]), elem_size, &idx)
11771 0 : && VECTOR_CST_NELTS (captures[3]).is_constant (&nelts)
11772 0 : && (known_eq (size, elem_size)
11773 0 : || (constant_multiple_p (size, elem_size, &nelts_op)
11774 0 : && pow2p_hwi (nelts_op)))
11775 : )
11776 : {
11777 0 : {
11778 0 : bool ok = true;
11779 0 : if (known_eq (size, elem_size))
11780 0 : idx = TREE_INT_CST_LOW (VECTOR_CST_ELT (captures[3], idx)) % (2 * nelts);
11781 : else
11782 : {
11783 0 : unsigned start
11784 0 : = TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx)) % (2 * nelts);
11785 0 : unsigned end
11786 0 : = (TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + nelts_op - 1))
11787 0 : % (2 * nelts));
11788 0 : if ((start < nelts) != (end < nelts))
11789 : ok = false;
11790 : else
11791 0 : for (unsigned HOST_WIDE_INT i = 1; i != nelts_op; i++)
11792 : {
11793 0 : if ((TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + i))
11794 0 : % (2 * nelts) - 1)
11795 0 : != (TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + i - 1))
11796 0 : % (2 * nelts)))
11797 : {
11798 : ok = false;
11799 : break;
11800 : }
11801 : }
11802 0 : if (start % nelts_op)
11803 : ok = false;
11804 0 : idx = start;
11805 : }
11806 0 : if (ok
11807 : )
11808 : {
11809 0 : if (idx < nelts
11810 : )
11811 : {
11812 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1960;
11813 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1960;
11814 0 : {
11815 0 : tree res_op0;
11816 0 : res_op0 = captures[1];
11817 0 : tree res_op1;
11818 0 : res_op1 = captures[4];
11819 0 : tree res_op2;
11820 0 : res_op2 = bitsize_int (idx * elem_size);
11821 0 : tree _r;
11822 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11823 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11824 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11825 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11826 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11827 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1090, __FILE__, __LINE__, true);
11828 0 : return _r;
11829 : }
11830 0 : next_after_fail1960:;
11831 : }
11832 : else
11833 : {
11834 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1961;
11835 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1961;
11836 0 : {
11837 0 : tree res_op0;
11838 0 : res_op0 = captures[2];
11839 0 : tree res_op1;
11840 0 : res_op1 = captures[4];
11841 0 : tree res_op2;
11842 0 : res_op2 = bitsize_int ((idx - nelts) * elem_size);
11843 0 : tree _r;
11844 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11845 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11846 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11847 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11848 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11849 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1091, __FILE__, __LINE__, true);
11850 0 : return _r;
11851 : }
11852 0 : next_after_fail1961:;
11853 : }
11854 : }
11855 : }
11856 : }
11857 : }
11858 : }
11859 0 : break;
11860 : }
11861 : default:;
11862 : }
11863 : break;
11864 : }
11865 0 : case BIT_INSERT_EXPR:
11866 0 : {
11867 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11868 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11869 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11870 0 : {
11871 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1, _p2 };
11872 0 : {
11873 0 : unsigned HOST_WIDE_INT isize;
11874 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])))
11875 0 : isize = TYPE_PRECISION (TREE_TYPE (captures[1]));
11876 : else
11877 0 : isize = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (captures[1])));
11878 0 : if ((!INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
11879 0 : || type_has_mode_precision_p (TREE_TYPE (captures[1])))
11880 0 : && wi::leu_p (wi::to_wide (captures[2]), wi::to_wide (captures[4]))
11881 0 : && wi::leu_p (wi::to_wide (captures[4]) + wi::to_wide (captures[3]),
11882 0 : wi::to_wide (captures[2]) + isize)
11883 : )
11884 : {
11885 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1962;
11886 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1962;
11887 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1962;
11888 0 : {
11889 0 : tree res_op0;
11890 0 : res_op0 = captures[1];
11891 0 : tree res_op1;
11892 0 : res_op1 = captures[3];
11893 0 : tree res_op2;
11894 0 : res_op2 = wide_int_to_tree (bitsizetype,
11895 0 : wi::to_wide (captures[4])
11896 0 : - wi::to_wide (captures[2]));
11897 0 : tree _r;
11898 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11899 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11900 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11901 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1092, __FILE__, __LINE__, true);
11902 0 : return _r;
11903 : }
11904 0 : next_after_fail1962:;
11905 : }
11906 : else
11907 : {
11908 0 : if (wi::eq_p (wi::to_wide (captures[2]), wi::to_wide (captures[4]))
11909 0 : && compare_tree_int (captures[3], isize) == 0
11910 : )
11911 : {
11912 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1963;
11913 0 : {
11914 0 : tree res_op0;
11915 0 : res_op0 = captures[1];
11916 0 : tree _r;
11917 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
11918 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11919 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11920 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11921 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11922 0 : if (TREE_SIDE_EFFECTS (captures[3]))
11923 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
11924 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11925 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11926 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1093, __FILE__, __LINE__, true);
11927 0 : return _r;
11928 : }
11929 0 : next_after_fail1963:;
11930 : }
11931 : else
11932 : {
11933 0 : if (wi::geu_p (wi::to_wide (captures[2]),
11934 0 : wi::to_wide (captures[4]) + wi::to_wide (captures[3]))
11935 0 : || wi::geu_p (wi::to_wide (captures[4]),
11936 0 : wi::to_wide (captures[2]) + isize)
11937 : )
11938 : {
11939 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1964;
11940 0 : {
11941 0 : tree res_op0;
11942 0 : res_op0 = captures[0];
11943 0 : tree res_op1;
11944 0 : res_op1 = captures[3];
11945 0 : tree res_op2;
11946 0 : res_op2 = captures[4];
11947 0 : tree _r;
11948 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11949 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11950 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11951 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11952 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11953 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1094, __FILE__, __LINE__, true);
11954 0 : return _r;
11955 : }
11956 0 : next_after_fail1964:;
11957 : }
11958 : }
11959 : }
11960 : }
11961 : }
11962 0 : break;
11963 : }
11964 : default:;
11965 : }
11966 : return NULL_TREE;
11967 : }
11968 : #pragma GCC diagnostic pop
|